import * as core from "@terrascript/core";
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;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    throughput?: number | core.NumberOut;
    volumeId: string | core.StringOut;
    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;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    throughput?: number | core.NumberOut;
    volumeId: string | core.StringOut;
    volumeSize?: number | core.NumberOut;
    volumeType?: string | core.StringOut;
}
export interface CreditSpecificationArgs extends core.SchemaArgs {
    cpuCredits?: string | core.StringOut;
}
export declare class CreditSpecification extends core.Schema<CreditSpecificationArgs> {
    cpuCredits?: string | core.StringOut;
}
export interface MetadataOptionsArgs extends core.SchemaArgs {
    httpEndpoint?: string | core.StringOut;
    httpPutResponseHopLimit?: number | core.NumberOut;
    httpTokens?: string | core.StringOut;
    instanceMetadataTags?: string | core.StringOut;
}
export declare class MetadataOptions extends core.Schema<MetadataOptionsArgs> {
    httpEndpoint?: string | core.StringOut;
    httpPutResponseHopLimit?: number | core.NumberOut;
    httpTokens?: string | core.StringOut;
    instanceMetadataTags?: string | core.StringOut;
}
export interface RootBlockDeviceArgs extends core.SchemaArgs {
    deleteOnTermination?: boolean | core.BooleanOut;
    deviceName: string | core.StringOut;
    encrypted?: boolean | core.BooleanOut;
    iops?: number | core.NumberOut;
    kmsKeyId?: string | core.StringOut;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    throughput?: number | core.NumberOut;
    volumeId: string | core.StringOut;
    volumeSize?: number | core.NumberOut;
    volumeType?: string | core.StringOut;
}
export declare class RootBlockDevice extends core.Schema<RootBlockDeviceArgs> {
    deleteOnTermination?: boolean | core.BooleanOut;
    deviceName: string | core.StringOut;
    encrypted?: boolean | core.BooleanOut;
    iops?: number | core.NumberOut;
    kmsKeyId?: string | core.StringOut;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    throughput?: number | core.NumberOut;
    volumeId: string | core.StringOut;
    volumeSize?: number | core.NumberOut;
    volumeType?: string | core.StringOut;
}
export interface NetworkInterfaceArgs extends core.SchemaArgs {
    deleteOnTermination?: boolean | core.BooleanOut;
    deviceIndex: number | core.NumberOut;
    networkCardIndex?: number | core.NumberOut;
    networkInterfaceId: string | core.StringOut;
}
export declare class NetworkInterface extends core.Schema<NetworkInterfaceArgs> {
    deleteOnTermination?: boolean | core.BooleanOut;
    deviceIndex: number | core.NumberOut;
    networkCardIndex?: number | core.NumberOut;
    networkInterfaceId: string | core.StringOut;
}
export interface EnclaveOptionsArgs extends core.SchemaArgs {
    enabled?: boolean | core.BooleanOut;
}
export declare class EnclaveOptions extends core.Schema<EnclaveOptionsArgs> {
    enabled?: boolean | core.BooleanOut;
}
export interface CapacityReservationTargetArgs extends core.SchemaArgs {
    capacityReservationId?: string | core.StringOut;
    capacityReservationResourceGroupArn?: string | core.StringOut;
}
export declare class CapacityReservationTarget extends core.Schema<CapacityReservationTargetArgs> {
    capacityReservationId?: string | core.StringOut;
    capacityReservationResourceGroupArn?: string | core.StringOut;
}
export interface CapacityReservationSpecificationArgs extends core.SchemaArgs {
    capacityReservationPreference?: string | core.StringOut;
    capacityReservationTarget?: CapacityReservationTarget;
}
export declare class CapacityReservationSpecification extends core.Schema<CapacityReservationSpecificationArgs> {
    capacityReservationPreference?: string | core.StringOut;
    capacityReservationTarget?: CapacityReservationTarget;
}
export interface MaintenanceOptionsArgs extends core.SchemaArgs {
    autoRecovery?: string | core.StringOut;
}
export declare class MaintenanceOptions extends core.Schema<MaintenanceOptionsArgs> {
    autoRecovery?: string | core.StringOut;
}
export interface LaunchTemplateArgs extends core.SchemaArgs {
    id?: string | core.StringOut;
    name?: string | core.StringOut;
    version?: string | core.StringOut;
}
export declare class LaunchTemplate extends core.Schema<LaunchTemplateArgs> {
    id?: string | core.StringOut;
    name?: string | core.StringOut;
    version?: string | core.StringOut;
}
export interface EphemeralBlockDeviceArgs extends core.SchemaArgs {
    deviceName: string | core.StringOut;
    noDevice?: boolean | core.BooleanOut;
    virtualName?: string | core.StringOut;
}
export declare class EphemeralBlockDevice extends core.Schema<EphemeralBlockDeviceArgs> {
    deviceName: string | core.StringOut;
    noDevice?: boolean | core.BooleanOut;
    virtualName?: string | core.StringOut;
}
export interface PrivateDnsNameOptionsArgs extends core.SchemaArgs {
    enableResourceNameDnsARecord?: boolean | core.BooleanOut;
    enableResourceNameDnsAaaaRecord?: boolean | core.BooleanOut;
    hostnameType?: string | core.StringOut;
}
export declare class PrivateDnsNameOptions extends core.Schema<PrivateDnsNameOptionsArgs> {
    enableResourceNameDnsARecord?: boolean | core.BooleanOut;
    enableResourceNameDnsAaaaRecord?: boolean | core.BooleanOut;
    hostnameType?: string | core.StringOut;
}
export interface InstanceArgs extends core.ResourceArgs {
    ami?: string | core.StringOut;
    associatePublicIpAddress?: boolean | core.BooleanOut;
    availabilityZone?: string | core.StringOut;
    capacityReservationSpecification?: CapacityReservationSpecification;
    cpuCoreCount?: number | core.NumberOut;
    cpuThreadsPerCore?: number | core.NumberOut;
    creditSpecification?: CreditSpecification;
    disableApiStop?: boolean | core.BooleanOut;
    disableApiTermination?: boolean | core.BooleanOut;
    ebsBlockDevice?: core.Array<EbsBlockDevice> | core.ArrayOut<EbsBlockDevice>;
    ebsOptimized?: boolean | core.BooleanOut;
    enclaveOptions?: EnclaveOptions;
    ephemeralBlockDevice?: core.Array<EphemeralBlockDevice> | core.ArrayOut<EphemeralBlockDevice>;
    getPasswordData?: boolean | core.BooleanOut;
    hibernation?: boolean | core.BooleanOut;
    hostId?: string | core.StringOut;
    iamInstanceProfile?: string | core.StringOut;
    instanceInitiatedShutdownBehavior?: string | core.StringOut;
    instanceType?: string | core.StringOut;
    ipv6AddressCount?: number | core.NumberOut;
    ipv6Addresses?: core.Array<string> | core.ArrayOut<core.StringOut>;
    keyName?: string | core.StringOut;
    launchTemplate?: LaunchTemplate;
    maintenanceOptions?: MaintenanceOptions;
    metadataOptions?: MetadataOptions;
    monitoring?: boolean | core.BooleanOut;
    networkInterface?: core.Array<NetworkInterface> | core.ArrayOut<NetworkInterface>;
    placementGroup?: string | core.StringOut;
    placementPartitionNumber?: number | core.NumberOut;
    privateDnsNameOptions?: PrivateDnsNameOptions;
    privateIp?: string | core.StringOut;
    rootBlockDevice?: RootBlockDevice;
    secondaryPrivateIps?: core.Array<string> | core.ArrayOut<core.StringOut>;
    securityGroups?: core.Array<string> | core.ArrayOut<core.StringOut>;
    sourceDestCheck?: boolean | core.BooleanOut;
    subnetId?: string | core.StringOut;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;
    tenancy?: string | core.StringOut;
    userData?: string | core.StringOut;
    userDataBase64?: string | core.StringOut;
    userDataReplaceOnChange?: boolean | core.BooleanOut;
    volumeTags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    vpcSecurityGroupIds?: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export declare class Instance extends core.Resource<InstanceArgs> {
    ami?: string | core.StringOut;
    arn: string | core.StringOut;
    associatePublicIpAddress?: boolean | core.BooleanOut;
    availabilityZone?: string | core.StringOut;
    capacityReservationSpecification?: CapacityReservationSpecification;
    cpuCoreCount?: number | core.NumberOut;
    cpuThreadsPerCore?: number | core.NumberOut;
    creditSpecification?: CreditSpecification;
    disableApiStop?: boolean | core.BooleanOut;
    disableApiTermination?: boolean | core.BooleanOut;
    ebsBlockDevice?: core.Array<EbsBlockDevice> | core.ArrayOut<EbsBlockDevice>;
    ebsOptimized?: boolean | core.BooleanOut;
    enclaveOptions?: EnclaveOptions;
    ephemeralBlockDevice?: core.Array<EphemeralBlockDevice> | core.ArrayOut<EphemeralBlockDevice>;
    getPasswordData?: boolean | core.BooleanOut;
    hibernation?: boolean | core.BooleanOut;
    hostId?: string | core.StringOut;
    iamInstanceProfile?: string | core.StringOut;
    id: string | core.StringOut;
    instanceInitiatedShutdownBehavior?: string | core.StringOut;
    instanceState: string | core.StringOut;
    instanceType?: string | core.StringOut;
    ipv6AddressCount?: number | core.NumberOut;
    ipv6Addresses?: core.Array<string> | core.ArrayOut<core.StringOut>;
    keyName?: string | core.StringOut;
    launchTemplate?: LaunchTemplate;
    maintenanceOptions?: MaintenanceOptions;
    metadataOptions?: MetadataOptions;
    monitoring?: boolean | core.BooleanOut;
    networkInterface?: core.Array<NetworkInterface> | core.ArrayOut<NetworkInterface>;
    outpostArn: string | core.StringOut;
    passwordData: string | core.StringOut;
    placementGroup?: string | core.StringOut;
    placementPartitionNumber?: number | core.NumberOut;
    primaryNetworkInterfaceId: string | core.StringOut;
    privateDns: string | core.StringOut;
    privateDnsNameOptions?: PrivateDnsNameOptions;
    privateIp?: string | core.StringOut;
    publicDns: string | core.StringOut;
    publicIp: string | core.StringOut;
    rootBlockDevice?: RootBlockDevice;
    secondaryPrivateIps?: core.Array<string> | core.ArrayOut<core.StringOut>;
    securityGroups?: core.Array<string> | core.ArrayOut<core.StringOut>;
    sourceDestCheck?: boolean | core.BooleanOut;
    subnetId?: string | core.StringOut;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;
    tenancy?: string | core.StringOut;
    userData?: string | core.StringOut;
    userDataBase64?: string | core.StringOut;
    userDataReplaceOnChange?: boolean | core.BooleanOut;
    volumeTags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    vpcSecurityGroupIds?: core.Array<string> | core.ArrayOut<core.StringOut>;
    constructor(name: string, args?: InstanceArgs);
    getNamespace(): string;
}
//# sourceMappingURL=instance.d.ts.map