import { ResourceBase } from "../../resource";
import { Value, List } from "../../data-types";
export declare class MixedInstancesPolicy {
    InstancesDistribution?: InstancesDistribution;
    LaunchTemplate: LaunchTemplate;
    constructor(properties: MixedInstancesPolicy);
}
export declare class LifecycleHookSpecification {
    DefaultResult?: Value<string>;
    HeartbeatTimeout?: Value<number>;
    LifecycleHookName: Value<string>;
    LifecycleTransition: Value<string>;
    NotificationMetadata?: Value<string>;
    NotificationTargetARN?: Value<string>;
    RoleARN?: Value<string>;
    constructor(properties: LifecycleHookSpecification);
}
export declare class TagProperty {
    Key: Value<string>;
    PropagateAtLaunch: Value<boolean>;
    Value: Value<string>;
    constructor(properties: TagProperty);
}
export declare class LaunchTemplateSpecification {
    LaunchTemplateId?: Value<string>;
    LaunchTemplateName?: Value<string>;
    Version: Value<string>;
    constructor(properties: LaunchTemplateSpecification);
}
export declare class LaunchTemplateOverrides {
    InstanceType?: Value<string>;
    WeightedCapacity?: Value<string>;
    constructor(properties: LaunchTemplateOverrides);
}
export declare class MetricsCollection {
    Granularity: Value<string>;
    Metrics?: List<Value<string>>;
    constructor(properties: MetricsCollection);
}
export declare class InstancesDistribution {
    OnDemandAllocationStrategy?: Value<string>;
    OnDemandBaseCapacity?: Value<number>;
    OnDemandPercentageAboveBaseCapacity?: Value<number>;
    SpotAllocationStrategy?: Value<string>;
    SpotInstancePools?: Value<number>;
    SpotMaxPrice?: Value<string>;
    constructor(properties: InstancesDistribution);
}
export declare class LaunchTemplate {
    LaunchTemplateSpecification: LaunchTemplateSpecification;
    Overrides?: List<LaunchTemplateOverrides>;
    constructor(properties: LaunchTemplate);
}
export declare class NotificationConfiguration {
    NotificationTypes?: List<Value<string>>;
    TopicARN: Value<string>;
    constructor(properties: NotificationConfiguration);
}
export interface AutoScalingGroupProperties {
    MetricsCollection?: List<MetricsCollection>;
    MaxInstanceLifetime?: Value<number>;
    TargetGroupARNs?: List<Value<string>>;
    MaxSize: Value<string>;
    HealthCheckType?: Value<string>;
    NotificationConfigurations?: List<NotificationConfiguration>;
    Cooldown?: Value<string>;
    LoadBalancerNames?: List<Value<string>>;
    AvailabilityZones?: List<Value<string>>;
    HealthCheckGracePeriod?: Value<number>;
    LaunchTemplate?: LaunchTemplateSpecification;
    LaunchConfigurationName?: Value<string>;
    InstanceId?: Value<string>;
    AutoScalingGroupName?: Value<string>;
    MinSize: Value<string>;
    LifecycleHookSpecificationList?: List<LifecycleHookSpecification>;
    TerminationPolicies?: List<Value<string>>;
    DesiredCapacity?: Value<string>;
    MixedInstancesPolicy?: MixedInstancesPolicy;
    Tags?: List<TagProperty>;
    ServiceLinkedRoleARN?: Value<string>;
    PlacementGroup?: Value<string>;
    VPCZoneIdentifier?: List<Value<string>>;
}
export default class Inner_AutoScalingGroup extends ResourceBase<AutoScalingGroupProperties> {
    static MixedInstancesPolicy: typeof MixedInstancesPolicy;
    static LifecycleHookSpecification: typeof LifecycleHookSpecification;
    static TagProperty: typeof TagProperty;
    static LaunchTemplateSpecification: typeof LaunchTemplateSpecification;
    static LaunchTemplateOverrides: typeof LaunchTemplateOverrides;
    static MetricsCollection: typeof MetricsCollection;
    static InstancesDistribution: typeof InstancesDistribution;
    static LaunchTemplate: typeof LaunchTemplate;
    static NotificationConfiguration: typeof NotificationConfiguration;
    constructor(properties: AutoScalingGroupProperties);
}
