package constants

type StatisticClass string

const MetricsCollection StatisticClass = "metrics_collection"
const LogsCollectionLoki StatisticClass = "logs_collection_loki"
const LogsStorageS3 StatisticClass = "logs_storage_s3"
const MetricsUsage StatisticClass = "metrics_usage"
const LogsUsageLoki StatisticClass = "logs_usage_loki"
const LogsUsageS3 StatisticClass = "logs_usage_s3"
const AlertManagement StatisticClass = "alert_management"
const MetricsIntegration StatisticClass = "metrics_integration"
const DryRunStatisticClass StatisticClass = "dry_run"

type StatisticName string

const MetricsTimeseriesCount StatisticName = "metrics_timeseries_count"

const LogsLokiEventsCount StatisticName = "logs_loki_events_count"
const LogsLokiDataTransmittedBytes StatisticName = "logs_loki_data_transmitted_bytes"

const LogsS3EventsCount StatisticName = "logs_s3_events_count"
const LogsS3DataTransmittedBytes StatisticName = "logs_s3_data_transmitted_bytes"
const LogsS3FilesCount StatisticName = "logs_s3_files_count"
const DryRunStatisticName StatisticName = "dry_run"

type MeteringGroup string

const CloudPlatform MeteringGroup = "cloud_platform"
const DedicatedRegionalControl MeteringGroup = "dedicated_regional"
const DedicatedDataplane MeteringGroup = "dedicated_dataplane"
const Serverless MeteringGroup = "serverless"
const O11Y MeteringGroup = "o11y"

const DedicatedAll MeteringGroup = "dedicated"
const DryRunMeteringGroup MeteringGroup = "dry_run"

func ListMeteringGroup() []MeteringGroup {
	return []MeteringGroup{
		CloudPlatform,
		DedicatedRegionalControl,
		DedicatedDataplane,
		Serverless,
		O11Y,
	}
}

type BizEnv string

const Dev BizEnv = "dev"
const Staging BizEnv = "staging"
const Prod BizEnv = "prod"

func ListEnvs() []BizEnv {
	return []BizEnv{
		Prod,
		Dev,
		Staging,
	}
}

type Category string

const Metrics Category = "metrics"
const Logs Category = "logs"
const DryRunCategory Category = "dry_run"

type StatisticState string

const StatePending StatisticState = "Pending"
const StateProcessing StatisticState = "Processing"
const StateCalculated StatisticState = "Calculated"
const StateVerified StatisticState = "Verified"
const StateArchived StatisticState = "Archived"
const StateFailed StatisticState = "Failed"

type CloudService string

const CloudWatch CloudService = "CloudWatch"
const ContainerRegistry CloudService = "Container Registry"
const DataTransfer CloudService = "Data Transfer"
const EBS CloudService = "EBS"
const ElasticCompute CloudService = "Elastic Compute"
const ElasticLoadBalancing CloudService = "Elastic Load Balancing"
const KubernetesService CloudService = "Kubernetes Service"
const NatGateway CloudService = "NatGateway"
const SimpleStorageService CloudService = "Simple Storage Service"
const WAF CloudService = "WAF"

const StatisticStepSeconds int64 = 300

const StatisticTaskName = "statistic"
const StatisticMergeTaskName = "merge_statistic"
const ReportTaskName = "report"
const Split = "split"

const StatisticTaskDataPrefix = "metering"
