export type KbxConfigurationValueType =
  | 'string'
  | 'boolean'
  | 'integer'
  | 'enum'
  | 'uri'
  | 'connection-string'

export interface KbxConfigurationSettingDefinition {
  key: string
  env: string
  category: string
  type: KbxConfigurationValueType
  allowedValues?: readonly string[]
  default?: string | number | boolean
  minimum?: number
  maximum?: number
  secret: boolean
  restartRequired: boolean
  requiredIn?: readonly string[]
  requiredWhen?: { key: string; equals: string | number | boolean }
  allowedSources?: readonly string[]
}

export interface KbxEnvironmentProfileDefinition {
  id: 'Development' | 'Test' | 'Staging' | 'Production'
  artifactPromotion: boolean
  secretSources: readonly string[]
  migrationStrategy: string
  providerNetwork: 'forbidden' | 'opt-in'
  requireHttps: boolean
  providerEndpointOverrideAllowed: boolean
  requiredGates: readonly string[]
}
