import type { NonEmptyString } from "../../../common/CustomTypes/NonEmptyString";
import type { NaturalNumber } from "../../../common/CustomTypes/Numerics";
import type { SecurityGroupId } from "../../../common/CustomTypes/SecurityGroupId";
import type { SubnetId } from "../../../common/CustomTypes/SubnetId";
import type { Arn } from "../../Arn";
import type { AwsResourceCommon, CloudFormationTags } from "../common";
import type { CloudFormationValue, Ref } from "../IntrinsicFunctions";
export declare type ServiceType = 'AWS::ECS::Service';
export interface Service extends AwsResourceCommon {
    Type: ServiceType;
    Properties: ServiceProperties;
}
export interface LoadBalancer {
    TargetGroupArn: CloudFormationValue<Arn>;
    ContainerPort: NaturalNumber;
    ContainerName: NonEmptyString;
}
interface ServiceRegistry {
    RegistryArn: CloudFormationValue<Arn>;
    ContainerName?: NonEmptyString;
    ContainerPort?: NaturalNumber;
    Port?: NaturalNumber;
}
interface NetworkConfiguration {
    AwsvpcConfiguration: {
        AssignPublicIp?: 'DISABLED' | 'ENABLED';
        SecurityGroups?: CloudFormationValue<SecurityGroupId>[];
        Subnets: SubnetId[];
    };
}
export interface ServiceProperties {
    Cluster?: Ref;
    LaunchType: 'FARGATE';
    ServiceName: NonEmptyString;
    TaskDefinition: CloudFormationValue<Arn>;
    DesiredCount: NaturalNumber;
    NetworkConfiguration: NetworkConfiguration;
    LoadBalancers?: LoadBalancer[];
    ServiceRegistries: ServiceRegistry[];
    Tags?: CloudFormationTags;
}
export {};
