import { ResourceBase, ResourceTag as Inner_ResourceTag } from "../../resource";
import { Value, List } from "../../data-types";
export declare class PrivateIpAddressSpecification {
    Primary?: Value<boolean>;
    PrivateIpAddress: Value<string>;
    constructor(properties: PrivateIpAddressSpecification);
}
export declare class LoadBalancersConfig {
    ClassicLoadBalancersConfig?: ClassicLoadBalancersConfig;
    TargetGroupsConfig?: TargetGroupsConfig;
    constructor(properties: LoadBalancersConfig);
}
export declare class TargetGroupsConfig {
    TargetGroups: List<TargetGroup>;
    constructor(properties: TargetGroupsConfig);
}
export declare class ClassicLoadBalancersConfig {
    ClassicLoadBalancers: List<ClassicLoadBalancer>;
    constructor(properties: ClassicLoadBalancersConfig);
}
export declare class LaunchTemplateOverrides {
    AvailabilityZone?: Value<string>;
    InstanceType?: Value<string>;
    SpotPrice?: Value<string>;
    SubnetId?: Value<string>;
    WeightedCapacity?: Value<number>;
    constructor(properties: LaunchTemplateOverrides);
}
export declare class FleetLaunchTemplateSpecification {
    LaunchTemplateId?: Value<string>;
    LaunchTemplateName?: Value<string>;
    Version: Value<string>;
    constructor(properties: FleetLaunchTemplateSpecification);
}
export declare class BlockDeviceMapping {
    DeviceName: Value<string>;
    Ebs?: EbsBlockDevice;
    NoDevice?: Value<string>;
    VirtualName?: Value<string>;
    constructor(properties: BlockDeviceMapping);
}
export declare class EbsBlockDevice {
    DeleteOnTermination?: Value<boolean>;
    Encrypted?: Value<boolean>;
    Iops?: Value<number>;
    SnapshotId?: Value<string>;
    VolumeSize?: Value<number>;
    VolumeType?: Value<string>;
    constructor(properties: EbsBlockDevice);
}
export declare class LaunchTemplateConfig {
    LaunchTemplateSpecification?: FleetLaunchTemplateSpecification;
    Overrides?: List<LaunchTemplateOverrides>;
    constructor(properties: LaunchTemplateConfig);
}
export declare class SpotFleetRequestConfigData {
    ValidUntil?: Value<string>;
    LaunchSpecifications?: List<SpotFleetLaunchSpecification>;
    LaunchTemplateConfigs?: List<LaunchTemplateConfig>;
    ValidFrom?: Value<string>;
    SpotPrice?: Value<string>;
    ExcessCapacityTerminationPolicy?: Value<string>;
    TargetCapacity: Value<number>;
    InstanceInterruptionBehavior?: Value<string>;
    ReplaceUnhealthyInstances?: Value<boolean>;
    IamFleetRole: Value<string>;
    TerminateInstancesWithExpiration?: Value<boolean>;
    AllocationStrategy?: Value<string>;
    LoadBalancersConfig?: LoadBalancersConfig;
    Type?: Value<string>;
    constructor(properties: SpotFleetRequestConfigData);
}
export declare class SpotPlacement {
    AvailabilityZone?: Value<string>;
    GroupName?: Value<string>;
    Tenancy?: Value<string>;
    constructor(properties: SpotPlacement);
}
export declare class InstanceNetworkInterfaceSpecification {
    Ipv6AddressCount?: Value<number>;
    NetworkInterfaceId?: Value<string>;
    AssociatePublicIpAddress?: Value<boolean>;
    SecondaryPrivateIpAddressCount?: Value<number>;
    Groups?: List<Value<string>>;
    PrivateIpAddresses?: List<PrivateIpAddressSpecification>;
    SubnetId?: Value<string>;
    DeleteOnTermination?: Value<boolean>;
    Ipv6Addresses?: List<InstanceIpv6Address>;
    Description?: Value<string>;
    DeviceIndex?: Value<number>;
    constructor(properties: InstanceNetworkInterfaceSpecification);
}
export declare class IamInstanceProfileSpecification {
    Arn?: Value<string>;
    constructor(properties: IamInstanceProfileSpecification);
}
export declare class GroupIdentifier {
    GroupId: Value<string>;
    constructor(properties: GroupIdentifier);
}
export declare class ClassicLoadBalancer {
    Name: Value<string>;
    constructor(properties: ClassicLoadBalancer);
}
export declare class TargetGroup {
    Arn: Value<string>;
    constructor(properties: TargetGroup);
}
export declare class SpotFleetMonitoring {
    Enabled?: Value<boolean>;
    constructor(properties: SpotFleetMonitoring);
}
export declare class SpotFleetTagSpecification {
    ResourceType?: Value<string>;
    Tags?: List<Inner_ResourceTag>;
    constructor(properties: SpotFleetTagSpecification);
}
export declare class SpotFleetLaunchSpecification {
    Placement?: SpotPlacement;
    SpotPrice?: Value<string>;
    Monitoring?: SpotFleetMonitoring;
    NetworkInterfaces?: List<InstanceNetworkInterfaceSpecification>;
    BlockDeviceMappings?: List<BlockDeviceMapping>;
    KeyName?: Value<string>;
    TagSpecifications?: List<SpotFleetTagSpecification>;
    InstanceType: Value<string>;
    EbsOptimized?: Value<boolean>;
    WeightedCapacity?: Value<number>;
    SecurityGroups?: List<GroupIdentifier>;
    UserData?: Value<string>;
    RamdiskId?: Value<string>;
    ImageId: Value<string>;
    SubnetId?: Value<string>;
    KernelId?: Value<string>;
    IamInstanceProfile?: IamInstanceProfileSpecification;
    constructor(properties: SpotFleetLaunchSpecification);
}
export declare class InstanceIpv6Address {
    Ipv6Address: Value<string>;
    constructor(properties: InstanceIpv6Address);
}
export interface SpotFleetProperties {
    SpotFleetRequestConfigData: SpotFleetRequestConfigData;
}
export default class Inner_SpotFleet extends ResourceBase<SpotFleetProperties> {
    static PrivateIpAddressSpecification: typeof PrivateIpAddressSpecification;
    static LoadBalancersConfig: typeof LoadBalancersConfig;
    static TargetGroupsConfig: typeof TargetGroupsConfig;
    static ClassicLoadBalancersConfig: typeof ClassicLoadBalancersConfig;
    static LaunchTemplateOverrides: typeof LaunchTemplateOverrides;
    static FleetLaunchTemplateSpecification: typeof FleetLaunchTemplateSpecification;
    static BlockDeviceMapping: typeof BlockDeviceMapping;
    static EbsBlockDevice: typeof EbsBlockDevice;
    static LaunchTemplateConfig: typeof LaunchTemplateConfig;
    static SpotFleetRequestConfigData: typeof SpotFleetRequestConfigData;
    static SpotPlacement: typeof SpotPlacement;
    static InstanceNetworkInterfaceSpecification: typeof InstanceNetworkInterfaceSpecification;
    static IamInstanceProfileSpecification: typeof IamInstanceProfileSpecification;
    static GroupIdentifier: typeof GroupIdentifier;
    static ClassicLoadBalancer: typeof ClassicLoadBalancer;
    static TargetGroup: typeof TargetGroup;
    static SpotFleetMonitoring: typeof SpotFleetMonitoring;
    static SpotFleetTagSpecification: typeof SpotFleetTagSpecification;
    static SpotFleetLaunchSpecification: typeof SpotFleetLaunchSpecification;
    static InstanceIpv6Address: typeof InstanceIpv6Address;
    constructor(properties: SpotFleetProperties);
}
