import * as core from "@terrascript/core";
export interface AccessLogsArgs extends core.SchemaArgs {
    bucket: string | core.StringOut;
    bucketPrefix?: string | core.StringOut;
    enabled?: boolean | core.BooleanOut;
    interval?: number | core.NumberOut;
}
export declare class AccessLogs extends core.Schema<AccessLogsArgs> {
    bucket: string | core.StringOut;
    bucketPrefix?: string | core.StringOut;
    enabled?: boolean | core.BooleanOut;
    interval?: number | core.NumberOut;
}
export interface HealthCheckArgs extends core.SchemaArgs {
    healthyThreshold: number | core.NumberOut;
    interval: number | core.NumberOut;
    target: string | core.StringOut;
    timeout: number | core.NumberOut;
    unhealthyThreshold: number | core.NumberOut;
}
export declare class HealthCheck extends core.Schema<HealthCheckArgs> {
    healthyThreshold: number | core.NumberOut;
    interval: number | core.NumberOut;
    target: string | core.StringOut;
    timeout: number | core.NumberOut;
    unhealthyThreshold: number | core.NumberOut;
}
export interface ListenerArgs extends core.SchemaArgs {
    instancePort: number | core.NumberOut;
    instanceProtocol: string | core.StringOut;
    lbPort: number | core.NumberOut;
    lbProtocol: string | core.StringOut;
    sslCertificateId?: string | core.StringOut;
}
export declare class Listener extends core.Schema<ListenerArgs> {
    instancePort: number | core.NumberOut;
    instanceProtocol: string | core.StringOut;
    lbPort: number | core.NumberOut;
    lbProtocol: string | core.StringOut;
    sslCertificateId?: string | core.StringOut;
}
export interface MainArgs extends core.ResourceArgs {
    accessLogs?: AccessLogs;
    availabilityZones?: core.Array<string> | core.ArrayOut<core.StringOut>;
    connectionDraining?: boolean | core.BooleanOut;
    connectionDrainingTimeout?: number | core.NumberOut;
    crossZoneLoadBalancing?: boolean | core.BooleanOut;
    desyncMitigationMode?: string | core.StringOut;
    healthCheck?: HealthCheck;
    idleTimeout?: number | core.NumberOut;
    instances?: core.Array<string> | core.ArrayOut<core.StringOut>;
    internal?: boolean | core.BooleanOut;
    listener: core.Array<Listener> | core.ArrayOut<Listener>;
    name?: string | core.StringOut;
    namePrefix?: string | core.StringOut;
    securityGroups?: core.Array<string> | core.ArrayOut<core.StringOut>;
    sourceSecurityGroup?: string | core.StringOut;
    subnets?: core.Array<string> | core.ArrayOut<core.StringOut>;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;
}
export declare class Main extends core.Resource<MainArgs> {
    accessLogs?: AccessLogs;
    arn: string | core.StringOut;
    availabilityZones?: core.Array<string> | core.ArrayOut<core.StringOut>;
    connectionDraining?: boolean | core.BooleanOut;
    connectionDrainingTimeout?: number | core.NumberOut;
    crossZoneLoadBalancing?: boolean | core.BooleanOut;
    desyncMitigationMode?: string | core.StringOut;
    dnsName: string | core.StringOut;
    healthCheck?: HealthCheck;
    id: string | core.StringOut;
    idleTimeout?: number | core.NumberOut;
    instances?: core.Array<string> | core.ArrayOut<core.StringOut>;
    internal?: boolean | core.BooleanOut;
    listener: core.Array<Listener> | core.ArrayOut<Listener>;
    name?: string | core.StringOut;
    namePrefix?: string | core.StringOut;
    securityGroups?: core.Array<string> | core.ArrayOut<core.StringOut>;
    sourceSecurityGroup?: string | core.StringOut;
    sourceSecurityGroupId: string | core.StringOut;
    subnets?: core.Array<string> | core.ArrayOut<core.StringOut>;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;
    zoneId: string | core.StringOut;
    constructor(name: string, args?: MainArgs);
    getNamespace(): string;
}
//# sourceMappingURL=main.d.ts.map