import { ResourceBase, ResourceTag as Inner_ResourceTag } from "../../resource";
import { Value, List } from "../../data-types";
export declare class CpuOptions {
    ThreadsPerCore?: Value<number>;
    CoreCount?: Value<number>;
    constructor(properties: CpuOptions);
}
export declare class CreditSpecification {
    CpuCredits?: Value<string>;
    constructor(properties: CreditSpecification);
}
export declare class PrivateIpAdd {
    PrivateIpAddress?: Value<string>;
    Primary?: Value<boolean>;
    constructor(properties: PrivateIpAdd);
}
export declare class LaunchTemplateData {
    Placement?: Placement;
    ElasticGpuSpecifications?: List<ElasticGpuSpecification>;
    Monitoring?: Monitoring;
    NetworkInterfaces?: List<NetworkInterface>;
    BlockDeviceMappings?: List<BlockDeviceMapping>;
    HibernationOptions?: HibernationOptions;
    KeyName?: Value<string>;
    TagSpecifications?: List<TagSpecification>;
    CreditSpecification?: CreditSpecification;
    ElasticInferenceAccelerators?: List<LaunchTemplateElasticInferenceAccelerator>;
    InstanceMarketOptions?: InstanceMarketOptions;
    MetadataOptions?: MetadataOptions;
    InstanceType?: Value<string>;
    LicenseSpecifications?: List<LicenseSpecification>;
    EbsOptimized?: Value<boolean>;
    CapacityReservationSpecification?: CapacityReservationSpecification;
    DisableApiTermination?: Value<boolean>;
    SecurityGroups?: List<Value<string>>;
    UserData?: Value<string>;
    RamDiskId?: Value<string>;
    ImageId?: Value<string>;
    CpuOptions?: CpuOptions;
    KernelId?: Value<string>;
    SecurityGroupIds?: List<Value<string>>;
    InstanceInitiatedShutdownBehavior?: Value<string>;
    IamInstanceProfile?: IamInstanceProfile;
    constructor(properties: LaunchTemplateData);
}
export declare class ElasticGpuSpecification {
    Type?: Value<string>;
    constructor(properties: ElasticGpuSpecification);
}
export declare class CapacityReservationPreference {
    constructor(properties: CapacityReservationPreference);
}
export declare class InstanceMarketOptions {
    SpotOptions?: SpotOptions;
    MarketType?: Value<string>;
    constructor(properties: InstanceMarketOptions);
}
export declare class MetadataOptions {
    HttpPutResponseHopLimit?: Value<number>;
    HttpTokens?: Value<string>;
    HttpEndpoint?: Value<string>;
    constructor(properties: MetadataOptions);
}
export declare class IamInstanceProfile {
    Arn?: Value<string>;
    Name?: Value<string>;
    constructor(properties: IamInstanceProfile);
}
export declare class LicenseSpecification {
    LicenseConfigurationArn?: Value<string>;
    constructor(properties: LicenseSpecification);
}
export declare class Ebs {
    SnapshotId?: Value<string>;
    VolumeType?: Value<string>;
    KmsKeyId?: Value<string>;
    Encrypted?: Value<boolean>;
    Iops?: Value<number>;
    VolumeSize?: Value<number>;
    DeleteOnTermination?: Value<boolean>;
    constructor(properties: Ebs);
}
export declare class LaunchTemplateElasticInferenceAccelerator {
    Type?: Value<string>;
    Count?: Value<number>;
    constructor(properties: LaunchTemplateElasticInferenceAccelerator);
}
export declare class Ipv6Add {
    Ipv6Address?: Value<string>;
    constructor(properties: Ipv6Add);
}
export declare class SpotOptions {
    SpotInstanceType?: Value<string>;
    InstanceInterruptionBehavior?: Value<string>;
    MaxPrice?: Value<string>;
    BlockDurationMinutes?: Value<number>;
    ValidUntil?: Value<string>;
    constructor(properties: SpotOptions);
}
export declare class Monitoring {
    Enabled?: Value<boolean>;
    constructor(properties: Monitoring);
}
export declare class HibernationOptions {
    Configured?: Value<boolean>;
    constructor(properties: HibernationOptions);
}
export declare class TagSpecification {
    ResourceType?: Value<string>;
    Tags?: List<Inner_ResourceTag>;
    constructor(properties: TagSpecification);
}
export declare class NetworkInterface {
    Ipv6AddressCount?: Value<number>;
    NetworkInterfaceId?: Value<string>;
    AssociatePublicIpAddress?: Value<boolean>;
    PrivateIpAddress?: Value<string>;
    SecondaryPrivateIpAddressCount?: Value<number>;
    InterfaceType?: Value<string>;
    Groups?: List<Value<string>>;
    PrivateIpAddresses?: List<PrivateIpAdd>;
    SubnetId?: Value<string>;
    DeleteOnTermination?: Value<boolean>;
    Ipv6Addresses?: List<Ipv6Add>;
    Description?: Value<string>;
    DeviceIndex?: Value<number>;
    constructor(properties: NetworkInterface);
}
export declare class BlockDeviceMapping {
    Ebs?: Ebs;
    NoDevice?: Value<string>;
    VirtualName?: Value<string>;
    DeviceName?: Value<string>;
    constructor(properties: BlockDeviceMapping);
}
export declare class CapacityReservationTarget {
    CapacityReservationId?: Value<string>;
    constructor(properties: CapacityReservationTarget);
}
export declare class CapacityReservationSpecification {
    CapacityReservationPreference?: CapacityReservationPreference;
    CapacityReservationTarget?: CapacityReservationTarget;
    constructor(properties: CapacityReservationSpecification);
}
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 interface LaunchTemplateProperties {
    LaunchTemplateName?: Value<string>;
    LaunchTemplateData?: LaunchTemplateData;
}
export default class Inner_LaunchTemplate extends ResourceBase<LaunchTemplateProperties> {
    static CpuOptions: typeof CpuOptions;
    static CreditSpecification: typeof CreditSpecification;
    static PrivateIpAdd: typeof PrivateIpAdd;
    static LaunchTemplateData: typeof LaunchTemplateData;
    static ElasticGpuSpecification: typeof ElasticGpuSpecification;
    static CapacityReservationPreference: typeof CapacityReservationPreference;
    static InstanceMarketOptions: typeof InstanceMarketOptions;
    static MetadataOptions: typeof MetadataOptions;
    static IamInstanceProfile: typeof IamInstanceProfile;
    static LicenseSpecification: typeof LicenseSpecification;
    static Ebs: typeof Ebs;
    static LaunchTemplateElasticInferenceAccelerator: typeof LaunchTemplateElasticInferenceAccelerator;
    static Ipv6Add: typeof Ipv6Add;
    static SpotOptions: typeof SpotOptions;
    static Monitoring: typeof Monitoring;
    static HibernationOptions: typeof HibernationOptions;
    static TagSpecification: typeof TagSpecification;
    static NetworkInterface: typeof NetworkInterface;
    static BlockDeviceMapping: typeof BlockDeviceMapping;
    static CapacityReservationTarget: typeof CapacityReservationTarget;
    static CapacityReservationSpecification: typeof CapacityReservationSpecification;
    static Placement: typeof Placement;
    constructor(properties: LaunchTemplateProperties);
}
