variable "aws_region" {
  description = "AWS region"
  type        = string
  default     = "us-east-1"
}

variable "environment" {
  description = "Deployment environment"
  type        = string
  validation {
    condition     = contains(["dev", "staging", "production"], var.environment)
    error_message = "Environment must be one of: dev, staging, production."
  }
}

variable "project_name" {
  description = "Project name for resource naming"
  type        = string
  default     = "shieldai"
}

variable "vpc_cidr" {
  description = "CIDR block for VPC"
  type        = string
  default     = "10.0.0.0/16"
}

variable "az_count" {
  description = "Number of availability zones"
  type        = number
  default     = 2
}

variable "db_name" {
  description = "RDS database name"
  type        = string
  default     = "shieldai"
}

variable "db_instance_class" {
  description = "RDS instance class"
  type        = string
  default     = "db.t3.medium"
}

variable "db_multi_az" {
  description = "Enable Multi-AZ deployment"
  type        = bool
  default     = true
}

variable "db_backup_retention" {
  description = "RDS backup retention period in days"
  type        = number
  default     = 7
}

variable "elasticache_node_type" {
  description = "ElastiCache node type"
  type        = string
  default     = "cache.t3.medium"
}

variable "elasticache_num_nodes" {
  description = "Number of ElastiCache nodes"
  type        = number
  default     = 2
}

variable "services" {
  description = "ECS services to deploy"
  type = map(object({
    cpu    = number
    memory = number
    port   = number
  }))
  default = {
    api = {
      cpu    = 512
      memory = 1024
      port   = 3000
    }
    darkwatch = {
      cpu    = 256
      memory = 512
      port   = 3001
    }
    spamshield = {
      cpu    = 256
      memory = 512
      port   = 3002
    }
    voiceprint = {
      cpu    = 512
      memory = 1024
      port   = 3003
    }
  }
}

variable "container_images" {
  description = "Container image tags per service"
  type        = map(string)
  default = {
    api        = "latest"
    darkwatch  = "latest"
    spamshield = "latest"
    voiceprint = "latest"
  }
}

variable "secrets" {
  description = "Secrets to store in AWS Secrets Manager"
  type        = map(string)
  default     = {}
}

variable "domain_name" {
  description = "Route53 hosted zone domain for ACM cert validation"
  type        = string
  default     = "shieldai.app"
}
