import { ResourceBase, ResourceTag as Inner_ResourceTag } from "../../resource";
import { Value, List } from "../../data-types";
export declare class LicenseSpecification {
    LicenseConfigurationArn: Value<string>;
    constructor(properties: LicenseSpecification);
}
export declare class ElasticInferenceAccelerator {
    Count?: Value<number>;
    Type: Value<string>;
    constructor(properties: ElasticInferenceAccelerator);
}
export declare class CreditSpecification {
    CPUCredits?: Value<string>;
    constructor(properties: CreditSpecification);
}
export declare class AssociationParameter {
    Key: Value<string>;
    Value: List<Value<string>>;
    constructor(properties: AssociationParameter);
}
export declare class ElasticGpuSpecification {
    Type: Value<string>;
    constructor(properties: ElasticGpuSpecification);
}
export declare class HibernationOptions {
    Configured?: Value<boolean>;
    constructor(properties: HibernationOptions);
}
export declare class BlockDeviceMapping {
    DeviceName: Value<string>;
    Ebs?: Ebs;
    NoDevice?: NoDevice;
    VirtualName?: Value<string>;
    constructor(properties: BlockDeviceMapping);
}
export declare class NetworkInterface {
    Ipv6AddressCount?: Value<number>;
    GroupSet?: List<Value<string>>;
    NetworkInterfaceId?: Value<string>;
    AssociatePublicIpAddress?: Value<boolean>;
    PrivateIpAddress?: Value<string>;
    SecondaryPrivateIpAddressCount?: Value<number>;
    PrivateIpAddresses?: List<PrivateIpAddressSpecification>;
    SubnetId?: Value<string>;
    DeleteOnTermination?: Value<boolean>;
    Ipv6Addresses?: List<InstanceIpv6Address>;
    Description?: Value<string>;
    DeviceIndex: Value<string>;
    constructor(properties: NetworkInterface);
}
export declare class LaunchTemplateSpecification {
    LaunchTemplateId?: Value<string>;
    LaunchTemplateName?: Value<string>;
    Version: Value<string>;
    constructor(properties: LaunchTemplateSpecification);
}
export declare class Ebs {
    DeleteOnTermination?: Value<boolean>;
    Encrypted?: Value<boolean>;
    Iops?: Value<number>;
    KmsKeyId?: Value<string>;
    SnapshotId?: Value<string>;
    VolumeSize?: Value<number>;
    VolumeType?: Value<string>;
    constructor(properties: Ebs);
}
export declare class InstanceIpv6Address {
    Ipv6Address: Value<string>;
    constructor(properties: InstanceIpv6Address);
}
export declare class SsmAssociation {
    AssociationParameters?: List<AssociationParameter>;
    DocumentName: Value<string>;
    constructor(properties: SsmAssociation);
}
export declare class PrivateIpAddressSpecification {
    Primary: Value<boolean>;
    PrivateIpAddress: Value<string>;
    constructor(properties: PrivateIpAddressSpecification);
}
export declare class CpuOptions {
    CoreCount?: Value<number>;
    ThreadsPerCore?: Value<number>;
    constructor(properties: CpuOptions);
}
export declare class NoDevice {
    constructor(properties: NoDevice);
}
export declare class Volume {
    Device: Value<string>;
    VolumeId: Value<string>;
    constructor(properties: Volume);
}
export interface InstanceProperties {
    Tenancy?: Value<string>;
    Ipv6AddressCount?: Value<number>;
    HostId?: Value<string>;
    PlacementGroupName?: Value<string>;
    ElasticGpuSpecifications?: List<ElasticGpuSpecification>;
    AvailabilityZone?: Value<string>;
    Monitoring?: Value<boolean>;
    Affinity?: Value<string>;
    NetworkInterfaces?: List<NetworkInterface>;
    BlockDeviceMappings?: List<BlockDeviceMapping>;
    HibernationOptions?: HibernationOptions;
    KeyName?: Value<string>;
    CreditSpecification?: CreditSpecification;
    PrivateIpAddress?: Value<string>;
    SourceDestCheck?: Value<boolean>;
    ElasticInferenceAccelerators?: List<ElasticInferenceAccelerator>;
    LaunchTemplate?: LaunchTemplateSpecification;
    InstanceType?: Value<string>;
    LicenseSpecifications?: List<LicenseSpecification>;
    EbsOptimized?: Value<boolean>;
    DisableApiTermination?: Value<boolean>;
    SecurityGroups?: List<Value<string>>;
    HostResourceGroupArn?: Value<string>;
    AdditionalInfo?: Value<string>;
    UserData?: Value<string>;
    RamdiskId?: Value<string>;
    ImageId?: Value<string>;
    CpuOptions?: CpuOptions;
    SubnetId?: Value<string>;
    KernelId?: Value<string>;
    Tags?: List<Inner_ResourceTag>;
    Volumes?: List<Volume>;
    SecurityGroupIds?: List<Value<string>>;
    Ipv6Addresses?: List<InstanceIpv6Address>;
    InstanceInitiatedShutdownBehavior?: Value<string>;
    IamInstanceProfile?: Value<string>;
    SsmAssociations?: List<SsmAssociation>;
}
export default class Inner_Instance extends ResourceBase<InstanceProperties> {
    static LicenseSpecification: typeof LicenseSpecification;
    static ElasticInferenceAccelerator: typeof ElasticInferenceAccelerator;
    static CreditSpecification: typeof CreditSpecification;
    static AssociationParameter: typeof AssociationParameter;
    static ElasticGpuSpecification: typeof ElasticGpuSpecification;
    static HibernationOptions: typeof HibernationOptions;
    static BlockDeviceMapping: typeof BlockDeviceMapping;
    static NetworkInterface: typeof NetworkInterface;
    static LaunchTemplateSpecification: typeof LaunchTemplateSpecification;
    static Ebs: typeof Ebs;
    static InstanceIpv6Address: typeof InstanceIpv6Address;
    static SsmAssociation: typeof SsmAssociation;
    static PrivateIpAddressSpecification: typeof PrivateIpAddressSpecification;
    static CpuOptions: typeof CpuOptions;
    static NoDevice: typeof NoDevice;
    static Volume: typeof Volume;
    constructor(properties: InstanceProperties);
}
