import * as core from "@terrascript/core";
export interface LaunchTemplateSpecificationArgs extends core.SchemaArgs {
    id?: string | core.StringOut;
    name?: string | core.StringOut;
    version?: string | core.StringOut;
}
export declare class LaunchTemplateSpecification extends core.Schema<LaunchTemplateSpecificationArgs> {
    id?: string | core.StringOut;
    name?: string | core.StringOut;
    version?: string | core.StringOut;
}
export interface MemoryGibPerVcpuArgs extends core.SchemaArgs {
    max?: number | core.NumberOut;
    min?: number | core.NumberOut;
}
export declare class MemoryGibPerVcpu extends core.Schema<MemoryGibPerVcpuArgs> {
    max?: number | core.NumberOut;
    min?: number | core.NumberOut;
}
export interface TotalLocalStorageGbArgs extends core.SchemaArgs {
    max?: number | core.NumberOut;
    min?: number | core.NumberOut;
}
export declare class TotalLocalStorageGb extends core.Schema<TotalLocalStorageGbArgs> {
    max?: number | core.NumberOut;
    min?: number | core.NumberOut;
}
export interface AcceleratorTotalMemoryMibArgs extends core.SchemaArgs {
    max?: number | core.NumberOut;
    min?: number | core.NumberOut;
}
export declare class AcceleratorTotalMemoryMib extends core.Schema<AcceleratorTotalMemoryMibArgs> {
    max?: number | core.NumberOut;
    min?: number | core.NumberOut;
}
export interface BaselineEbsBandwidthMbpsArgs extends core.SchemaArgs {
    max?: number | core.NumberOut;
    min?: number | core.NumberOut;
}
export declare class BaselineEbsBandwidthMbps extends core.Schema<BaselineEbsBandwidthMbpsArgs> {
    max?: number | core.NumberOut;
    min?: number | core.NumberOut;
}
export interface AcceleratorCountArgs extends core.SchemaArgs {
    max?: number | core.NumberOut;
    min?: number | core.NumberOut;
}
export declare class AcceleratorCount extends core.Schema<AcceleratorCountArgs> {
    max?: number | core.NumberOut;
    min?: number | core.NumberOut;
}
export interface MemoryMibArgs extends core.SchemaArgs {
    max?: number | core.NumberOut;
    min?: number | core.NumberOut;
}
export declare class MemoryMib extends core.Schema<MemoryMibArgs> {
    max?: number | core.NumberOut;
    min?: number | core.NumberOut;
}
export interface NetworkInterfaceCountArgs extends core.SchemaArgs {
    max?: number | core.NumberOut;
    min?: number | core.NumberOut;
}
export declare class NetworkInterfaceCount extends core.Schema<NetworkInterfaceCountArgs> {
    max?: number | core.NumberOut;
    min?: number | core.NumberOut;
}
export interface VcpuCountArgs extends core.SchemaArgs {
    max?: number | core.NumberOut;
    min?: number | core.NumberOut;
}
export declare class VcpuCount extends core.Schema<VcpuCountArgs> {
    max?: number | core.NumberOut;
    min?: number | core.NumberOut;
}
export interface InstanceRequirementsArgs extends core.SchemaArgs {
    acceleratorCount?: AcceleratorCount;
    acceleratorManufacturers?: core.Array<string> | core.ArrayOut<core.StringOut>;
    acceleratorNames?: core.Array<string> | core.ArrayOut<core.StringOut>;
    acceleratorTotalMemoryMib?: AcceleratorTotalMemoryMib;
    acceleratorTypes?: core.Array<string> | core.ArrayOut<core.StringOut>;
    bareMetal?: string | core.StringOut;
    baselineEbsBandwidthMbps?: BaselineEbsBandwidthMbps;
    burstablePerformance?: string | core.StringOut;
    cpuManufacturers?: core.Array<string> | core.ArrayOut<core.StringOut>;
    excludedInstanceTypes?: core.Array<string> | core.ArrayOut<core.StringOut>;
    instanceGenerations?: core.Array<string> | core.ArrayOut<core.StringOut>;
    localStorage?: string | core.StringOut;
    localStorageTypes?: core.Array<string> | core.ArrayOut<core.StringOut>;
    memoryGibPerVcpu?: MemoryGibPerVcpu;
    memoryMib?: MemoryMib;
    networkInterfaceCount?: NetworkInterfaceCount;
    onDemandMaxPricePercentageOverLowestPrice?: number | core.NumberOut;
    requireHibernateSupport?: boolean | core.BooleanOut;
    spotMaxPricePercentageOverLowestPrice?: number | core.NumberOut;
    totalLocalStorageGb?: TotalLocalStorageGb;
    vcpuCount?: VcpuCount;
}
export declare class InstanceRequirements extends core.Schema<InstanceRequirementsArgs> {
    acceleratorCount?: AcceleratorCount;
    acceleratorManufacturers?: core.Array<string> | core.ArrayOut<core.StringOut>;
    acceleratorNames?: core.Array<string> | core.ArrayOut<core.StringOut>;
    acceleratorTotalMemoryMib?: AcceleratorTotalMemoryMib;
    acceleratorTypes?: core.Array<string> | core.ArrayOut<core.StringOut>;
    bareMetal?: string | core.StringOut;
    baselineEbsBandwidthMbps?: BaselineEbsBandwidthMbps;
    burstablePerformance?: string | core.StringOut;
    cpuManufacturers?: core.Array<string> | core.ArrayOut<core.StringOut>;
    excludedInstanceTypes?: core.Array<string> | core.ArrayOut<core.StringOut>;
    instanceGenerations?: core.Array<string> | core.ArrayOut<core.StringOut>;
    localStorage?: string | core.StringOut;
    localStorageTypes?: core.Array<string> | core.ArrayOut<core.StringOut>;
    memoryGibPerVcpu?: MemoryGibPerVcpu;
    memoryMib?: MemoryMib;
    networkInterfaceCount?: NetworkInterfaceCount;
    onDemandMaxPricePercentageOverLowestPrice?: number | core.NumberOut;
    requireHibernateSupport?: boolean | core.BooleanOut;
    spotMaxPricePercentageOverLowestPrice?: number | core.NumberOut;
    totalLocalStorageGb?: TotalLocalStorageGb;
    vcpuCount?: VcpuCount;
}
export interface OverridesArgs extends core.SchemaArgs {
    availabilityZone?: string | core.StringOut;
    instanceRequirements?: InstanceRequirements;
    instanceType?: string | core.StringOut;
    priority?: number | core.NumberOut;
    spotPrice?: string | core.StringOut;
    subnetId?: string | core.StringOut;
    weightedCapacity?: number | core.NumberOut;
}
export declare class Overrides extends core.Schema<OverridesArgs> {
    availabilityZone?: string | core.StringOut;
    instanceRequirements?: InstanceRequirements;
    instanceType?: string | core.StringOut;
    priority?: number | core.NumberOut;
    spotPrice?: string | core.StringOut;
    subnetId?: string | core.StringOut;
    weightedCapacity?: number | core.NumberOut;
}
export interface LaunchTemplateConfigArgs extends core.SchemaArgs {
    launchTemplateSpecification: LaunchTemplateSpecification;
    overrides?: core.Array<Overrides> | core.ArrayOut<Overrides>;
}
export declare class LaunchTemplateConfig extends core.Schema<LaunchTemplateConfigArgs> {
    launchTemplateSpecification: LaunchTemplateSpecification;
    overrides?: core.Array<Overrides> | core.ArrayOut<Overrides>;
}
export interface CapacityRebalanceArgs extends core.SchemaArgs {
    replacementStrategy?: string | core.StringOut;
}
export declare class CapacityRebalance extends core.Schema<CapacityRebalanceArgs> {
    replacementStrategy?: string | core.StringOut;
}
export interface SpotMaintenanceStrategiesArgs extends core.SchemaArgs {
    capacityRebalance?: CapacityRebalance;
}
export declare class SpotMaintenanceStrategies extends core.Schema<SpotMaintenanceStrategiesArgs> {
    capacityRebalance?: CapacityRebalance;
}
export interface EbsBlockDeviceArgs extends core.SchemaArgs {
    deleteOnTermination?: boolean | core.BooleanOut;
    deviceName: string | core.StringOut;
    encrypted?: boolean | core.BooleanOut;
    iops?: number | core.NumberOut;
    kmsKeyId?: string | core.StringOut;
    snapshotId?: string | core.StringOut;
    throughput?: number | core.NumberOut;
    volumeSize?: number | core.NumberOut;
    volumeType?: string | core.StringOut;
}
export declare class EbsBlockDevice extends core.Schema<EbsBlockDeviceArgs> {
    deleteOnTermination?: boolean | core.BooleanOut;
    deviceName: string | core.StringOut;
    encrypted?: boolean | core.BooleanOut;
    iops?: number | core.NumberOut;
    kmsKeyId?: string | core.StringOut;
    snapshotId?: string | core.StringOut;
    throughput?: number | core.NumberOut;
    volumeSize?: number | core.NumberOut;
    volumeType?: string | core.StringOut;
}
export interface RootBlockDeviceArgs extends core.SchemaArgs {
    deleteOnTermination?: boolean | core.BooleanOut;
    encrypted?: boolean | core.BooleanOut;
    iops?: number | core.NumberOut;
    kmsKeyId?: string | core.StringOut;
    throughput?: number | core.NumberOut;
    volumeSize?: number | core.NumberOut;
    volumeType?: string | core.StringOut;
}
export declare class RootBlockDevice extends core.Schema<RootBlockDeviceArgs> {
    deleteOnTermination?: boolean | core.BooleanOut;
    encrypted?: boolean | core.BooleanOut;
    iops?: number | core.NumberOut;
    kmsKeyId?: string | core.StringOut;
    throughput?: number | core.NumberOut;
    volumeSize?: number | core.NumberOut;
    volumeType?: string | core.StringOut;
}
export interface EphemeralBlockDeviceArgs extends core.SchemaArgs {
    deviceName: string | core.StringOut;
    virtualName: string | core.StringOut;
}
export declare class EphemeralBlockDevice extends core.Schema<EphemeralBlockDeviceArgs> {
    deviceName: string | core.StringOut;
    virtualName: string | core.StringOut;
}
export interface LaunchSpecificationArgs extends core.SchemaArgs {
    ami: string | core.StringOut;
    associatePublicIpAddress?: boolean | core.BooleanOut;
    availabilityZone?: string | core.StringOut;
    ebsBlockDevice?: core.Array<EbsBlockDevice> | core.ArrayOut<EbsBlockDevice>;
    ebsOptimized?: boolean | core.BooleanOut;
    ephemeralBlockDevice?: core.Array<EphemeralBlockDevice> | core.ArrayOut<EphemeralBlockDevice>;
    iamInstanceProfile?: string | core.StringOut;
    iamInstanceProfileArn?: string | core.StringOut;
    instanceType: string | core.StringOut;
    keyName?: string | core.StringOut;
    monitoring?: boolean | core.BooleanOut;
    placementGroup?: string | core.StringOut;
    placementTenancy?: string | core.StringOut;
    rootBlockDevice?: core.Array<RootBlockDevice> | core.ArrayOut<RootBlockDevice>;
    spotPrice?: string | core.StringOut;
    subnetId?: string | core.StringOut;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    userData?: string | core.StringOut;
    vpcSecurityGroupIds?: core.Array<string> | core.ArrayOut<core.StringOut>;
    weightedCapacity?: string | core.StringOut;
}
export declare class LaunchSpecification extends core.Schema<LaunchSpecificationArgs> {
    ami: string | core.StringOut;
    associatePublicIpAddress?: boolean | core.BooleanOut;
    availabilityZone?: string | core.StringOut;
    ebsBlockDevice?: core.Array<EbsBlockDevice> | core.ArrayOut<EbsBlockDevice>;
    ebsOptimized?: boolean | core.BooleanOut;
    ephemeralBlockDevice?: core.Array<EphemeralBlockDevice> | core.ArrayOut<EphemeralBlockDevice>;
    iamInstanceProfile?: string | core.StringOut;
    iamInstanceProfileArn?: string | core.StringOut;
    instanceType: string | core.StringOut;
    keyName?: string | core.StringOut;
    monitoring?: boolean | core.BooleanOut;
    placementGroup?: string | core.StringOut;
    placementTenancy?: string | core.StringOut;
    rootBlockDevice?: core.Array<RootBlockDevice> | core.ArrayOut<RootBlockDevice>;
    spotPrice?: string | core.StringOut;
    subnetId?: string | core.StringOut;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    userData?: string | core.StringOut;
    vpcSecurityGroupIds?: core.Array<string> | core.ArrayOut<core.StringOut>;
    weightedCapacity?: string | core.StringOut;
}
export interface SpotFleetRequestArgs extends core.ResourceArgs {
    allocationStrategy?: string | core.StringOut;
    excessCapacityTerminationPolicy?: string | core.StringOut;
    fleetType?: string | core.StringOut;
    iamFleetRole: string | core.StringOut;
    instanceInterruptionBehaviour?: string | core.StringOut;
    instancePoolsToUseCount?: number | core.NumberOut;
    launchSpecification?: core.Array<LaunchSpecification> | core.ArrayOut<LaunchSpecification>;
    launchTemplateConfig?: core.Array<LaunchTemplateConfig> | core.ArrayOut<LaunchTemplateConfig>;
    loadBalancers?: core.Array<string> | core.ArrayOut<core.StringOut>;
    onDemandAllocationStrategy?: string | core.StringOut;
    onDemandMaxTotalPrice?: string | core.StringOut;
    onDemandTargetCapacity?: number | core.NumberOut;
    replaceUnhealthyInstances?: boolean | core.BooleanOut;
    spotMaintenanceStrategies?: SpotMaintenanceStrategies;
    spotPrice?: string | core.StringOut;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;
    targetCapacity: number | core.NumberOut;
    targetGroupArns?: core.Array<string> | core.ArrayOut<core.StringOut>;
    terminateInstancesOnDelete?: string | core.StringOut;
    terminateInstancesWithExpiration?: boolean | core.BooleanOut;
    validFrom?: string | core.StringOut;
    validUntil?: string | core.StringOut;
    waitForFulfillment?: boolean | core.BooleanOut;
}
export declare class SpotFleetRequest extends core.Resource<SpotFleetRequestArgs> {
    allocationStrategy?: string | core.StringOut;
    clientToken: string | core.StringOut;
    excessCapacityTerminationPolicy?: string | core.StringOut;
    fleetType?: string | core.StringOut;
    iamFleetRole: string | core.StringOut;
    id: string | core.StringOut;
    instanceInterruptionBehaviour?: string | core.StringOut;
    instancePoolsToUseCount?: number | core.NumberOut;
    launchSpecification?: core.Array<LaunchSpecification> | core.ArrayOut<LaunchSpecification>;
    launchTemplateConfig?: core.Array<LaunchTemplateConfig> | core.ArrayOut<LaunchTemplateConfig>;
    loadBalancers?: core.Array<string> | core.ArrayOut<core.StringOut>;
    onDemandAllocationStrategy?: string | core.StringOut;
    onDemandMaxTotalPrice?: string | core.StringOut;
    onDemandTargetCapacity?: number | core.NumberOut;
    replaceUnhealthyInstances?: boolean | core.BooleanOut;
    spotMaintenanceStrategies?: SpotMaintenanceStrategies;
    spotPrice?: string | core.StringOut;
    spotRequestState: string | core.StringOut;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;
    targetCapacity: number | core.NumberOut;
    targetGroupArns?: core.Array<string> | core.ArrayOut<core.StringOut>;
    terminateInstancesOnDelete?: string | core.StringOut;
    terminateInstancesWithExpiration?: boolean | core.BooleanOut;
    validFrom?: string | core.StringOut;
    validUntil?: string | core.StringOut;
    waitForFulfillment?: boolean | core.BooleanOut;
    constructor(name: string, args?: SpotFleetRequestArgs);
    getNamespace(): string;
}
//# sourceMappingURL=spot_fleet_request.d.ts.map