package constants

import "time"

// service default port
const (
	DefaultServerPort        int = 8081
	DefaultServerMetricsPort int = 8083
)

const (
	VendorAWS      string = "aws"
	VendorGCP      string = "gcp"
	VendorAzure    string = "azure"
	VendorAlicloud string = "alicloud"
)

const (
	EnvDev     = "dev"
	EnvStaging = "staging"
	EnvProd    = "prod"
)

const (
	LogLevelDebug   = "debug"
	LogLevelInfo    = "info"
	LogLevelWarning = "warn"
)

const (
	//Setup gin ReadHeaderTimeout
	GinReadHeaderTimeout = 5 * time.Second
	GinIdleTimeout       = 5 * time.Minute
	GracefulShutDownWait = 5 * time.Second
)

const (
	TrafficSKU         = "network-traffic"
	TrafficCrossAZ     = "cross_az"
	TrafficInternet    = "internet"
	TrafficLB          = "lb"
	TrafficIpv4        = "ipv4"
	TrafficCrossRegion = "cross_region"
	TrafficNAT         = "nat"
)

const (
	TagTenant           = "tenant"
	TagProject          = "project"
	TagCluster          = "cluster"
	TagUsedBy           = "usedby"
	TagEnvironment      = "environment"
	TagK8sService       = "k8s-azure-service"
	TagBillingProjectID = "projectID"
	TagBillingTenantID  = "tenantID"
	TagBillingClusterID = "clusterID"
)

var ApiGatewayTimeout = 10 * time.Second

const AwsPublicIPv4AddressPricing = 0.005

const UsedByCustomer = "customer-tidb"

const ServicePlanPremiumReserved = "premium_reserved"

const CustomerLBName = "kubernetes-internal"

const CustomerIPName = "db-tidb-public"

const (
	AWSBillingSourceTypeCSV     = "csv"
	AWSBillingSourceTypeParquet = "parquet"
)

type MeteringSKUType string

const (
	MeteringSKUTypeNode           MeteringSKUType = "node"
	MeteringSKUTypeDiskStorage    MeteringSKUType = "disk-storage"
	MeteringSKUTypeDiskIOPS       MeteringSKUType = "disk-iops"
	MeteringSKUTypeDiskThroughput MeteringSKUType = "disk-throughput"
)

const ReconciliationRangeSeconds = 3600

const (
	FeatureGateNewSKU                     = "gate-new-sku"
	FeatureGateNewSKUDisabled             = "gate-new-sku-disabled"
	FeatureGateNewSKUDouble               = "gate-new-sku-double"
	FeatureGateNewSKUDoubleDisabled       = "gate-new-sku-double-disabled"
	FeatureGateTiproxyMetering            = "gate-tiproxy-metering"
	FeatureGateNextGenSkipDeletedMetadata = "gate-nextgen-skip-deleted-metadata"
	FeatureGateNextGenRCUInstance         = "gate-nextgen-rcu-instance"
	FeatureGateNextGenRCUMaxV2            = "gate-nextgen-rcu-max-v2"
	FeatureGateNextGenCMEKStorageSKU      = "gate-nextgen-cmek-storage-sku"
)

const (
	RepoterSchemeVersion = "V1"
)

const (
	EmptyNodeInstanceType = "PENDING"
)

const (
	AzureSchemaVersionV2024 = "2024-08-01"
	AzureSchemaVersionV2021 = "2021-10-01"
)

const (
	AlicloudAccessKeyIDEnv     = "ALICLOUD_ACCESS_KEY_ID"
	AlicloudAccessKeySecretEnv = "ALICLOUD_ACCESS_KEY_SECRET"
)

const (
	AzureStorageAccountNameEnv = "AZURE_STORAGE_ACCOUNT_NAME"
	AzureStorageAccountKeyEnv  = "AZURE_STORAGE_ACCOUNT_KEY"
	AzureStorageSASTokenEnv    = "AZURE_STORAGE_SAS_TOKEN"
	AzureContainerNameKey      = "AZURE_CONTAINER_NAME"
)

const (
	StorageOptionPatchDeltaSo = "DUCKDB_PATCH_DELTA_SO"
)
