{
  "name": "alb",
  "version": "1.0.0",
  "kind": "l1",
  "type": "aws:elbv2:loadbalancer",
  "description": "Application Load Balancer primitive (engine-agnostic stack types aws:elbv2:loadbalancer + aws:elbv2:listener + aws:elbv2:targetgroup; the Terraform adapter translates to aws_lb/aws_lb_listener/aws_lb_target_group).",
  "inputs": {
    "name": {
      "type": "string",
      "description": "Name tag for the load balancer and child resources.",
      "required": true
    },
    "subnets": {
      "type": "string",
      "description": "Comma-separated subnet ids (ref to vpc).",
      "required": true
    },
    "security_group": {
      "type": "string",
      "description": "Security group id for the load balancer.",
      "required": true
    },
    "port": {
      "type": "number",
      "description": "Listener port (default 80).",
      "required": false,
      "default": 80
    },
    "protocol": {
      "type": "string",
      "description": "Listener protocol (default HTTP).",
      "required": false,
      "default": "HTTP"
    },
    "region": {
      "type": "string",
      "description": "AWS region the load balancer is created in.",
      "required": true
    },
    "load_balancer_type": {
      "type": "string",
      "description": "Load balancer type (application or network).",
      "required": false,
      "default": "application"
    },
    "target_type": {
      "type": "string",
      "description": "Target group target type (ip or instance).",
      "required": false,
      "default": "ip"
    }
  },
  "outputs": {
    "lb_arn": {
      "type": "arn",
      "description": "The load balancer ARN."
    },
    "listener_arn": {
      "type": "arn",
      "description": "The listener ARN."
    },
    "target_group_arn": {
      "type": "arn",
      "description": "The target group ARN."
    }
  },
  "nfrs": {
    "encryption_enabled": {
      "type": "boolean",
      "description": "Enable TLS/HTTPS encryption in transit.",
      "default": true
    },
    "tls_enabled": {
      "type": "boolean",
      "description": "Enable TLS listener.",
      "default": true
    },
    "deletion_protection": {
      "type": "boolean",
      "description": "Prevent resource destruction via Terraform lifecycle prevent_destroy",
      "default": true
    }
  },
  "resources": [
    {
      "type": "aws:elbv2:loadbalancer",
      "description": "Application load balancer in the VPC subnets.",
      "inputs": ["name", "subnets", "security_group", "load_balancer_type"],
      "outputs": ["lb_arn"]
    },
    {
      "type": "aws:elbv2:targetgroup",
      "description": "Target group for the ECS service tasks.",
      "inputs": ["name", "port", "protocol", "vpc_id", "target_type"],
      "outputs": ["target_group_arn"]
    },
    {
      "type": "aws:elbv2:listener",
      "description": "Listener forwarding the LB port to the target group.",
      "inputs": ["lb_arn", "port", "protocol", "target_group_arn"],
      "outputs": ["listener_arn"]
    }
  ]
}