import { ResourceBase, ResourceTag as Inner_ResourceTag } from "../../resource";
import { Value, List } from "../../data-types";
export declare class CapacityReservationOptionsRequest {
    UsageStrategy?: Value<string>;
    constructor(properties: CapacityReservationOptionsRequest);
}
export declare class FleetLaunchTemplateOverridesRequest {
    WeightedCapacity?: Value<number>;
    Placement?: Placement;
    Priority?: Value<number>;
    AvailabilityZone?: Value<string>;
    SubnetId?: Value<string>;
    InstanceType?: Value<string>;
    MaxPrice?: Value<string>;
    constructor(properties: FleetLaunchTemplateOverridesRequest);
}
export declare class TagSpecification {
    ResourceType?: Value<string>;
    Tags?: List<Inner_ResourceTag>;
    constructor(properties: TagSpecification);
}
export declare class Placement {
    GroupName?: Value<string>;
    Tenancy?: Value<string>;
    SpreadDomain?: Value<string>;
    PartitionNumber?: Value<number>;
    AvailabilityZone?: Value<string>;
    Affinity?: Value<string>;
    HostId?: Value<string>;
    HostResourceGroupArn?: Value<string>;
    constructor(properties: Placement);
}
export declare class FleetLaunchTemplateSpecificationRequest {
    LaunchTemplateName?: Value<string>;
    Version?: Value<string>;
    LaunchTemplateId?: Value<string>;
    constructor(properties: FleetLaunchTemplateSpecificationRequest);
}
export declare class FleetLaunchTemplateConfigRequest {
    LaunchTemplateSpecification?: FleetLaunchTemplateSpecificationRequest;
    Overrides?: List<FleetLaunchTemplateOverridesRequest>;
    constructor(properties: FleetLaunchTemplateConfigRequest);
}
export declare class SpotOptionsRequest {
    SingleAvailabilityZone?: Value<boolean>;
    AllocationStrategy?: Value<string>;
    SingleInstanceType?: Value<boolean>;
    MinTargetCapacity?: Value<number>;
    MaxTotalPrice?: Value<string>;
    InstanceInterruptionBehavior?: Value<string>;
    InstancePoolsToUseCount?: Value<number>;
    constructor(properties: SpotOptionsRequest);
}
export declare class TargetCapacitySpecificationRequest {
    DefaultTargetCapacityType?: Value<string>;
    TotalTargetCapacity: Value<number>;
    OnDemandTargetCapacity?: Value<number>;
    SpotTargetCapacity?: Value<number>;
    constructor(properties: TargetCapacitySpecificationRequest);
}
export declare class OnDemandOptionsRequest {
    SingleAvailabilityZone?: Value<boolean>;
    AllocationStrategy?: Value<string>;
    SingleInstanceType?: Value<boolean>;
    MinTargetCapacity?: Value<number>;
    MaxTotalPrice?: Value<string>;
    CapacityReservationOptions?: CapacityReservationOptionsRequest;
    constructor(properties: OnDemandOptionsRequest);
}
export interface EC2FleetProperties {
    ValidUntil?: Value<string>;
    LaunchTemplateConfigs: List<FleetLaunchTemplateConfigRequest>;
    ValidFrom?: Value<string>;
    ExcessCapacityTerminationPolicy?: Value<string>;
    TagSpecifications?: List<TagSpecification>;
    ReplaceUnhealthyInstances?: Value<boolean>;
    TerminateInstancesWithExpiration?: Value<boolean>;
    OnDemandOptions?: OnDemandOptionsRequest;
    TargetCapacitySpecification: TargetCapacitySpecificationRequest;
    Type?: Value<string>;
    SpotOptions?: SpotOptionsRequest;
}
export default class Inner_EC2Fleet extends ResourceBase<EC2FleetProperties> {
    static CapacityReservationOptionsRequest: typeof CapacityReservationOptionsRequest;
    static FleetLaunchTemplateOverridesRequest: typeof FleetLaunchTemplateOverridesRequest;
    static TagSpecification: typeof TagSpecification;
    static Placement: typeof Placement;
    static FleetLaunchTemplateSpecificationRequest: typeof FleetLaunchTemplateSpecificationRequest;
    static FleetLaunchTemplateConfigRequest: typeof FleetLaunchTemplateConfigRequest;
    static SpotOptionsRequest: typeof SpotOptionsRequest;
    static TargetCapacitySpecificationRequest: typeof TargetCapacitySpecificationRequest;
    static OnDemandOptionsRequest: typeof OnDemandOptionsRequest;
    constructor(properties: EC2FleetProperties);
}
