export interface Tag {
    /** The key of the tag. */
    Key: string;
    /** The value of the tag. */
    Value?: string;
}
export interface HealthCheck {
    /** The instance being checked. The protocol is either TCP, HTTP, HTTPS, or SSL. The range of valid ports is one (1) through 65535. TCP is the default, specified as a TCP: port pair, for example "TCP:5000 */
    Target: string;
    /** The approximate interval, in seconds, between health checks of an individual instance. */
    Interval: number;
    /** The amount of time, in seconds, during which no response means a failed health check. This value must be less than the Interval value. */
    Timeout: number;
    /** The number of consecutive health check failures required before moving the instance to the Unhealthy state. */
    UnhealthyThreshold: number;
    /** The number of consecutive health checks successes required before moving the instance to the Healthy state. */
    HealthyThreshold: number;
}
export interface Listener {
    /** The load balancer transport protocol to use for routing: HTTP, HTTPS, TCP, or SSL. */
    Protocol: string;
    /** The port on which the load balancer is listening. On EC2-VPC, you can specify any port from the range 1-65535. On EC2-Classic, you can specify any port from the following list: 25, 80, 443, 465, 587,  */
    LoadBalancerPort: number;
    /** The protocol to use for routing traffic to instances: HTTP, HTTPS, TCP, or SSL. If the front-end protocol is TCP or SSL, the back-end protocol must be TCP or SSL. If the front-end protocol is HTTP or  */
    InstanceProtocol?: string;
    /** The port on which the instance is listening. */
    InstancePort: number;
    /** The Amazon Resource Name (ARN) of the server certificate. */
    SSLCertificateId?: string;
}
export interface PolicyAttribute {
    /** The name of the attribute. */
    AttributeName?: string;
    /** The value of the attribute. */
    AttributeValue?: string;
}
export interface Instance {
    /** The instance ID. */
    InstanceId?: string;
}
export interface CrossZoneLoadBalancing {
    /** Specifies whether cross-zone load balancing is enabled for the load balancer. */
    Enabled: boolean;
}
export interface AccessLog {
    /** Specifies whether access logs are enabled for the load balancer. */
    Enabled: boolean;
    /** The name of the Amazon S3 bucket where the access logs are stored. */
    S3BucketName?: string;
    /** The interval for publishing the access logs. You can specify an interval of either 5 minutes or 60 minutes. Default: 60 minutes */
    EmitInterval?: number;
    /** The logical hierarchy you created for your Amazon S3 bucket, for example my-bucket-prefix/prod. If the prefix is not provided, the log is placed at the root level of the bucket. */
    S3BucketPrefix?: string;
}
export interface ConnectionDraining {
    /** Specifies whether connection draining is enabled for the load balancer. */
    Enabled: boolean;
    /** The maximum time, in seconds, to keep the existing connections open before deregistering the instances. */
    Timeout?: number;
}
export interface ConnectionSettings {
    /** The time, in seconds, that the connection is allowed to be idle (no data has been sent over the connection) before it is closed by the load balancer. */
    IdleTimeout: number;
}
export interface LoadBalancerAttributes {
    /** If enabled, the load balancer routes the request traffic evenly across all instances regardless of the Availability Zones. For more information, see Configure Cross-Zone Load Balancing in the Classic  */
    CrossZoneLoadBalancing?: CrossZoneLoadBalancing;
    /** If enabled, the load balancer captures detailed information of all requests and delivers the information to the Amazon S3 bucket that you specify. For more information, see Enable Access Logs in the C */
    AccessLog?: AccessLog;
    /** If enabled, the load balancer allows existing requests to complete before the load balancer shifts traffic away from a deregistered or unhealthy instance. For more information, see Configure Connectio */
    ConnectionDraining?: ConnectionDraining;
    /** If enabled, the load balancer allows the connections to remain idle (no data is sent over the connection) for the specified duration. By default, Elastic Load Balancing maintains a 60-second idle conn */
    ConnectionSettings?: ConnectionSettings;
    /** Any additional attributes. */
    AdditionalAttributes?: any[];
}
export interface TagKeyOnly {
    /** The name of the key. */
    Key?: string;
}
/** Contains the parameters for AddTags. */
export interface AddTagsInput {
    /** The name of the load balancer. You can specify one load balancer only. */
    LoadBalancerNames: string[];
    /** The tags. */
    Tags: Tag[];
}
/** Contains the parameters for ApplySecurityGroupsToLoadBalancer. */
export interface ApplySecurityGroupsToLoadBalancerInput {
    /** The name of the load balancer. */
    LoadBalancerName: string;
    /** The IDs of the security groups to associate with the load balancer. Note that you cannot specify the name of the security group. */
    SecurityGroups: string[];
}
/** Contains the parameters for AttachLoaBalancerToSubnets. */
export interface AttachLoadBalancerToSubnetsInput {
    /** The name of the load balancer. */
    LoadBalancerName: string;
    /** The IDs of the subnets to add. You can add only one subnet per Availability Zone. */
    Subnets: string[];
}
/** Contains the parameters for ConfigureHealthCheck. */
export interface ConfigureHealthCheckInput {
    /** The configuration information. */
    HealthCheck: HealthCheck;
    /** The name of the load balancer. */
    LoadBalancerName: string;
}
/** Contains the parameters for CreateAppCookieStickinessPolicy. */
export interface CreateAppCookieStickinessPolicyInput {
    /** The name of the application cookie used for stickiness. */
    CookieName: string;
    /** The name of the load balancer. */
    LoadBalancerName: string;
    /** The name of the policy being created. Policy names must consist of alphanumeric characters and dashes (-). This name must be unique within the set of policies for this load balancer. */
    PolicyName: string;
}
/** Contains the parameters for CreateLBCookieStickinessPolicy. */
export interface CreateLBCookieStickinessPolicyInput {
    /** The name of the load balancer. */
    LoadBalancerName: string;
    /** The name of the policy being created. Policy names must consist of alphanumeric characters and dashes (-). This name must be unique within the set of policies for this load balancer. */
    PolicyName: string;
    /** The time period, in seconds, after which the cookie should be considered stale. If you do not specify this parameter, the default value is 0, which indicates that the sticky session should last for th */
    CookieExpirationPeriod?: number;
}
/** Contains the parameters for CreateLoadBalancer. */
export interface CreateLoadBalancerInput {
    /** The listeners. For more information, see Listeners for Your Classic Load Balancer in the Classic Load Balancers Guide. */
    Listeners: Listener[];
    /** The name of the load balancer. This name must be unique within your set of load balancers for the region, must have a maximum of 32 characters, must contain only alphanumeric characters or hyphens, an */
    LoadBalancerName: string;
    /** One or more Availability Zones from the same region as the load balancer. You must specify at least one Availability Zone. You can add more Availability Zones after you create the load balancer using  */
    AvailabilityZones?: string[];
    /** The type of a load balancer. Valid only for load balancers in a VPC. By default, Elastic Load Balancing creates an Internet-facing load balancer with a DNS name that resolves to public IP addresses. F */
    Scheme?: string;
    /** The IDs of the security groups to assign to the load balancer. */
    SecurityGroups?: string[];
    /** The IDs of the subnets in your VPC to attach to the load balancer. Specify one subnet per Availability Zone specified in AvailabilityZones. */
    Subnets?: string[];
    /** A list of tags to assign to the load balancer. For more information about tagging your load balancer, see Tag Your Classic Load Balancer in the Classic Load Balancers Guide. */
    Tags?: Tag[];
}
/** Contains the parameters for CreateLoadBalancerListeners. */
export interface CreateLoadBalancerListenersInput {
    /** The listeners. */
    Listeners: Listener[];
    /** The name of the load balancer. */
    LoadBalancerName: string;
}
/** Contains the parameters for CreateLoadBalancerPolicy. */
export interface CreateLoadBalancerPolicyInput {
    /** The name of the load balancer. */
    LoadBalancerName: string;
    /** The name of the load balancer policy to be created. This name must be unique within the set of policies for this load balancer. */
    PolicyName: string;
    /** The name of the base policy type. To get the list of policy types, use DescribeLoadBalancerPolicyTypes. */
    PolicyTypeName: string;
    /** The policy attributes. */
    PolicyAttributes?: PolicyAttribute[];
}
/** Contains the parameters for DeleteLoadBalancer. */
export interface DeleteLoadBalancerInput {
    /** The name of the load balancer. */
    LoadBalancerName: string;
}
/** Contains the parameters for DeleteLoadBalancerListeners. */
export interface DeleteLoadBalancerListenersInput {
    /** The name of the load balancer. */
    LoadBalancerName: string;
    /** The client port numbers of the listeners. */
    LoadBalancerPorts: number[];
}
/** Contains the parameters for DeleteLoadBalancerPolicy. */
export interface DeleteLoadBalancerPolicyInput {
    /** The name of the load balancer. */
    LoadBalancerName: string;
    /** The name of the policy. */
    PolicyName: string;
}
/** Contains the parameters for DeregisterInstancesFromLoadBalancer. */
export interface DeregisterInstancesFromLoadBalancerInput {
    /** The IDs of the instances. */
    Instances: Instance[];
    /** The name of the load balancer. */
    LoadBalancerName: string;
}
export interface DescribeAccountLimitsInput {
    /** The marker for the next set of results. (You received this marker from a previous call.) */
    Marker?: string;
    /** The maximum number of results to return with this call. */
    PageSize?: number;
}
/** Contains the parameters for DescribeInstanceHealth. */
export interface DescribeInstanceHealthInput {
    /** The name of the load balancer. */
    LoadBalancerName: string;
    /** The IDs of the instances. */
    Instances?: Instance[];
}
/** Contains the parameters for DescribeLoadBalancerAttributes. */
export interface DescribeLoadBalancerAttributesInput {
    /** The name of the load balancer. */
    LoadBalancerName: string;
}
/** Contains the parameters for DescribeLoadBalancerPolicies. */
export interface DescribeLoadBalancerPoliciesInput {
    /** The name of the load balancer. */
    LoadBalancerName?: string;
    /** The names of the policies. */
    PolicyNames?: string[];
}
/** Contains the parameters for DescribeLoadBalancerPolicyTypes. */
export interface DescribeLoadBalancerPolicyTypesInput {
    /** The names of the policy types. If no names are specified, describes all policy types defined by Elastic Load Balancing. */
    PolicyTypeNames?: string[];
}
/** Contains the parameters for DescribeLoadBalancers. */
export interface DescribeLoadBalancersInput {
    /** The names of the load balancers. */
    LoadBalancerNames?: string[];
    /** The marker for the next set of results. (You received this marker from a previous call.) */
    Marker?: string;
    /** The maximum number of results to return with this call (a number from 1 to 400). The default is 400. */
    PageSize?: number;
}
/** Contains the parameters for DescribeTags. */
export interface DescribeTagsInput {
    /** The names of the load balancers. */
    LoadBalancerNames: string[];
}
/** Contains the parameters for DetachLoadBalancerFromSubnets. */
export interface DetachLoadBalancerFromSubnetsInput {
    /** The name of the load balancer. */
    LoadBalancerName: string;
    /** The IDs of the subnets. */
    Subnets: string[];
}
/** Contains the parameters for DisableAvailabilityZonesForLoadBalancer. */
export interface DisableAvailabilityZonesForLoadBalancerInput {
    /** The Availability Zones. */
    AvailabilityZones: string[];
    /** The name of the load balancer. */
    LoadBalancerName: string;
}
/** Contains the parameters for EnableAvailabilityZonesForLoadBalancer. */
export interface EnableAvailabilityZonesForLoadBalancerInput {
    /** The Availability Zones. These must be in the same region as the load balancer. */
    AvailabilityZones: string[];
    /** The name of the load balancer. */
    LoadBalancerName: string;
}
/** Contains the parameters for ModifyLoadBalancerAttributes. */
export interface ModifyLoadBalancerAttributesInput {
    /** The attributes for the load balancer. */
    LoadBalancerAttributes: LoadBalancerAttributes;
    /** The name of the load balancer. */
    LoadBalancerName: string;
}
/** Contains the parameters for RegisterInstancesWithLoadBalancer. */
export interface RegisterInstancesWithLoadBalancerInput {
    /** The IDs of the instances. */
    Instances: Instance[];
    /** The name of the load balancer. */
    LoadBalancerName: string;
}
/** Contains the parameters for RemoveTags. */
export interface RemoveTagsInput {
    /** The name of the load balancer. You can specify a maximum of one load balancer name. */
    LoadBalancerNames: string[];
    /** The list of tag keys to remove. */
    Tags: TagKeyOnly[];
}
/** Contains the parameters for SetLoadBalancerListenerSSLCertificate. */
export interface SetLoadBalancerListenerSSLCertificateInput {
    /** The name of the load balancer. */
    LoadBalancerName: string;
    /** The port that uses the specified SSL certificate. */
    LoadBalancerPort: number;
    /** The Amazon Resource Name (ARN) of the SSL certificate. */
    SSLCertificateId: string;
}
/** Contains the parameters for SetLoadBalancerPoliciesForBackendServer. */
export interface SetLoadBalancerPoliciesForBackendServerInput {
    /** The port number associated with the EC2 instance. */
    InstancePort: number;
    /** The name of the load balancer. */
    LoadBalancerName: string;
    /** The names of the policies. If the list is empty, then all current polices are removed from the EC2 instance. */
    PolicyNames: string[];
}
/** Contains the parameters for SetLoadBalancePoliciesOfListener. */
export interface SetLoadBalancerPoliciesOfListenerInput {
    /** The name of the load balancer. */
    LoadBalancerName: string;
    /** The external port of the load balancer. */
    LoadBalancerPort: number;
    /** The names of the policies. This list must include all policies to be enabled. If you omit a policy that is currently enabled, it is disabled. If the list is empty, all current policies are disabled. */
    PolicyNames: string[];
}
/** Elastic Load Balancing service binding for Step Functions SDK integrations. */
export declare class ElasticLoadBalancing {
    constructor();
    addTags<T>(params: AddTagsInput): Promise<T>;
    applySecurityGroupsToLoadBalancer<T>(params: ApplySecurityGroupsToLoadBalancerInput): Promise<T>;
    attachLoadBalancerToSubnets<T>(params: AttachLoadBalancerToSubnetsInput): Promise<T>;
    configureHealthCheck<T>(params: ConfigureHealthCheckInput): Promise<T>;
    createAppCookieStickinessPolicy<T>(params: CreateAppCookieStickinessPolicyInput): Promise<T>;
    createLBCookieStickinessPolicy<T>(params: CreateLBCookieStickinessPolicyInput): Promise<T>;
    createLoadBalancer<T>(params: CreateLoadBalancerInput): Promise<T>;
    createLoadBalancerListeners<T>(params: CreateLoadBalancerListenersInput): Promise<T>;
    createLoadBalancerPolicy<T>(params: CreateLoadBalancerPolicyInput): Promise<T>;
    deleteLoadBalancer<T>(params: DeleteLoadBalancerInput): Promise<T>;
    deleteLoadBalancerListeners<T>(params: DeleteLoadBalancerListenersInput): Promise<T>;
    deleteLoadBalancerPolicy<T>(params: DeleteLoadBalancerPolicyInput): Promise<T>;
    deregisterInstancesFromLoadBalancer<T>(params: DeregisterInstancesFromLoadBalancerInput): Promise<T>;
    describeAccountLimits<T>(params: DescribeAccountLimitsInput): Promise<T>;
    describeInstanceHealth<T>(params: DescribeInstanceHealthInput): Promise<T>;
    describeLoadBalancerAttributes<T>(params: DescribeLoadBalancerAttributesInput): Promise<T>;
    describeLoadBalancerPolicies<T>(params: DescribeLoadBalancerPoliciesInput): Promise<T>;
    describeLoadBalancerPolicyTypes<T>(params: DescribeLoadBalancerPolicyTypesInput): Promise<T>;
    describeLoadBalancers<T>(params: DescribeLoadBalancersInput): Promise<T>;
    describeTags<T>(params: DescribeTagsInput): Promise<T>;
    detachLoadBalancerFromSubnets<T>(params: DetachLoadBalancerFromSubnetsInput): Promise<T>;
    disableAvailabilityZonesForLoadBalancer<T>(params: DisableAvailabilityZonesForLoadBalancerInput): Promise<T>;
    enableAvailabilityZonesForLoadBalancer<T>(params: EnableAvailabilityZonesForLoadBalancerInput): Promise<T>;
    modifyLoadBalancerAttributes<T>(params: ModifyLoadBalancerAttributesInput): Promise<T>;
    registerInstancesWithLoadBalancer<T>(params: RegisterInstancesWithLoadBalancerInput): Promise<T>;
    removeTags<T>(params: RemoveTagsInput): Promise<T>;
    setLoadBalancerListenerSSLCertificate<T>(params: SetLoadBalancerListenerSSLCertificateInput): Promise<T>;
    setLoadBalancerPoliciesForBackendServer<T>(params: SetLoadBalancerPoliciesForBackendServerInput): Promise<T>;
    setLoadBalancerPoliciesOfListener<T>(params: SetLoadBalancerPoliciesOfListenerInput): Promise<T>;
}
//# sourceMappingURL=ElasticLoadBalancing.d.ts.map