package exporter

import (
	"github.com/go-logr/logr"
	"github.com/prometheus/client_golang/prometheus"
	"google.golang.org/api/compute/v1"

	cloudaws "github.com/tidbcloud/infra-provider/pkg/cloud/aws"
	"github.com/tidbcloud/infra-provider/quota-exporter/config"
)

type Exporter interface {
	prometheus.Collector
	Name() string
	MetricPath() string
}

// Dependency contains all dependencies for exporters.
type Dependency struct {
	Logger logr.Logger

	// aws specific
	Clientset cloudaws.Client

	// gcp specific
	ComputeService *compute.Service
}

type Factory func(cfg config.ExporterConfig, deps *Dependency) (Exporter, error)
