import * as appscaling from "../../../aws-applicationautoscaling";
import * as ec2 from "../../../aws-ec2";
import * as elbv2 from "../../../aws-elasticloadbalancingv2";
import * as cloudmap from "../../../aws-servicediscovery";
import { Construct } from 'constructs';
import { AssociateCloudMapServiceOptions, BaseService, BaseServiceOptions, CloudMapOptions, EcsTarget, IBaseService, IEcsLoadBalancerTarget, IService } from '../base/base-service';
import { ScalableTaskCount } from '../base/scalable-task-count';
import { LoadBalancerTargetOptions, TaskDefinition } from '../base/task-definition';
import { ICluster } from '../cluster';
/**
 * (experimental) The properties for defining a service using the External launch type.
 *
 * @experimental
 */
export interface ExternalServiceProps extends BaseServiceOptions {
    /**
     * (experimental) The task definition to use for tasks in the service.
     *
     * [disable-awslint:ref-via-interface]
     *
     * @experimental
     */
    readonly taskDefinition: TaskDefinition;
    /**
     * (experimental) The security groups to associate with the service.
     *
     * If you do not specify a security group, the default security group for the VPC is used.
     *
     * @default - A new security group is created.
     * @experimental
     */
    readonly securityGroups?: ec2.ISecurityGroup[];
}
/**
 * (experimental) The interface for a service using the External launch type on an ECS cluster.
 *
 * @experimental
 */
export interface IExternalService extends IService {
}
/**
 * (experimental) The properties to import from the service using the External launch type.
 *
 * @experimental
 */
export interface ExternalServiceAttributes {
    /**
     * (experimental) The cluster that hosts the service.
     *
     * @experimental
     */
    readonly cluster: ICluster;
    /**
     * (experimental) The service ARN.
     *
     * @default - either this, or {@link serviceName}, is required
     * @experimental
     */
    readonly serviceArn?: string;
    /**
     * (experimental) The name of the service.
     *
     * @default - either this, or {@link serviceArn}, is required
     * @experimental
     */
    readonly serviceName?: string;
}
/**
 * (experimental) This creates a service using the External launch type on an ECS cluster.
 *
 * @experimental
 * @resource AWS::ECS::Service
 */
export declare class ExternalService extends BaseService implements IExternalService {
    /**
     * (experimental) Imports from the specified service ARN.
     *
     * @experimental
     */
    static fromExternalServiceArn(scope: Construct, id: string, externalServiceArn: string): IExternalService;
    /**
     * (experimental) Imports from the specified service attrributes.
     *
     * @experimental
     */
    static fromExternalServiceAttributes(scope: Construct, id: string, attrs: ExternalServiceAttributes): IBaseService;
    /**
     * (experimental) Constructs a new instance of the ExternalService class.
     *
     * @experimental
     */
    constructor(scope: Construct, id: string, props: ExternalServiceProps);
    /**
     * (experimental) Overriden method to throw error as `attachToApplicationTargetGroup` is not supported for external service.
     *
     * @experimental
     */
    attachToApplicationTargetGroup(_targetGroup: elbv2.IApplicationTargetGroup): elbv2.LoadBalancerTargetProps;
    /**
     * (experimental) Overriden method to throw error as `loadBalancerTarget` is not supported for external service.
     *
     * @experimental
     */
    loadBalancerTarget(_options: LoadBalancerTargetOptions): IEcsLoadBalancerTarget;
    /**
     * (experimental) Overriden method to throw error as `registerLoadBalancerTargets` is not supported for external service.
     *
     * @experimental
     */
    registerLoadBalancerTargets(..._targets: EcsTarget[]): void;
    /**
     * (experimental) Overriden method to throw error as `configureAwsVpcNetworkingWithSecurityGroups` is not supported for external service.
     *
     * @experimental
     */
    protected configureAwsVpcNetworkingWithSecurityGroups(_vpc: ec2.IVpc, _assignPublicIp?: boolean, _vpcSubnets?: ec2.SubnetSelection, _securityGroups?: ec2.ISecurityGroup[]): void;
    /**
     * (experimental) Overriden method to throw error as `autoScaleTaskCount` is not supported for external service.
     *
     * @experimental
     */
    autoScaleTaskCount(_props: appscaling.EnableScalingProps): ScalableTaskCount;
    /**
     * (experimental) Overriden method to throw error as `enableCloudMap` is not supported for external service.
     *
     * @experimental
     */
    enableCloudMap(_options: CloudMapOptions): cloudmap.Service;
    /**
     * (experimental) Overriden method to throw error as `associateCloudMapService` is not supported for external service.
     *
     * @experimental
     */
    associateCloudMapService(_options: AssociateCloudMapServiceOptions): void;
}
