import * as core from "@terrascript/core"; export interface CapacityReservationTargetArgs extends core.SchemaArgs { capacityReservationId: string | core.StringOut; capacityReservationResourceGroupArn: string | core.StringOut; } export class CapacityReservationTarget extends core.Schema { @core.attr(String, { computed: true }) public capacityReservationId!: string | core.StringOut; @core.attr(String, { computed: true }) public capacityReservationResourceGroupArn!: string | core.StringOut; } export interface CapacityReservationSpecificationArgs extends core.SchemaArgs { capacityReservationPreference: string | core.StringOut; capacityReservationTarget: | core.Array | core.ArrayOut; } export class CapacityReservationSpecification extends core.Schema { @core.attr(String, { computed: true }) public capacityReservationPreference!: string | core.StringOut; @core.attr(CapacityReservationTarget, { computed: true, kind: "array" }) public capacityReservationTarget!: | core.Array | core.ArrayOut; } export interface PrivateDnsNameOptionsArgs extends core.SchemaArgs { enableResourceNameDnsARecord: boolean | core.BooleanOut; enableResourceNameDnsAaaaRecord: boolean | core.BooleanOut; hostnameType: string | core.StringOut; } export class PrivateDnsNameOptions extends core.Schema { @core.attr(Boolean, { computed: true }) public enableResourceNameDnsARecord!: boolean | core.BooleanOut; @core.attr(Boolean, { computed: true }) public enableResourceNameDnsAaaaRecord!: boolean | core.BooleanOut; @core.attr(String, { computed: true }) public hostnameType!: string | core.StringOut; } export interface EbsArgs extends core.SchemaArgs { deleteOnTermination: string | core.StringOut; encrypted: string | core.StringOut; 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 class Ebs extends core.Schema { @core.attr(String, { computed: true }) public deleteOnTermination!: string | core.StringOut; @core.attr(String, { computed: true }) public encrypted!: string | core.StringOut; @core.attr(Number, { computed: true }) public iops!: number | core.NumberOut; @core.attr(String, { computed: true }) public kmsKeyId!: string | core.StringOut; @core.attr(String, { computed: true }) public snapshotId!: string | core.StringOut; @core.attr(Number, { computed: true }) public throughput!: number | core.NumberOut; @core.attr(Number, { computed: true }) public volumeSize!: number | core.NumberOut; @core.attr(String, { computed: true }) public volumeType!: string | core.StringOut; } export interface BlockDeviceMappingsArgs extends core.SchemaArgs { deviceName: string | core.StringOut; ebs: core.Array | core.ArrayOut; noDevice: string | core.StringOut; virtualName: string | core.StringOut; } export class BlockDeviceMappings extends core.Schema { @core.attr(String, { computed: true }) public deviceName!: string | core.StringOut; @core.attr(Ebs, { computed: true, kind: "array" }) public ebs!: core.Array | core.ArrayOut; @core.attr(String, { computed: true }) public noDevice!: string | core.StringOut; @core.attr(String, { computed: true }) public virtualName!: string | core.StringOut; } export interface CpuOptionsArgs extends core.SchemaArgs { coreCount: number | core.NumberOut; threadsPerCore: number | core.NumberOut; } export class CpuOptions extends core.Schema { @core.attr(Number, { computed: true }) public coreCount!: number | core.NumberOut; @core.attr(Number, { computed: true }) public threadsPerCore!: number | core.NumberOut; } export interface ElasticGpuSpecificationsArgs extends core.SchemaArgs { type: string | core.StringOut; } export class ElasticGpuSpecifications extends core.Schema { @core.attr(String) public type!: string | core.StringOut; } export interface EnclaveOptionsArgs extends core.SchemaArgs { enabled: boolean | core.BooleanOut; } export class EnclaveOptions extends core.Schema { @core.attr(Boolean, { computed: true }) public enabled!: boolean | core.BooleanOut; } export interface MonitoringArgs extends core.SchemaArgs { enabled: boolean | core.BooleanOut; } export class Monitoring extends core.Schema { @core.attr(Boolean, { computed: true }) public enabled!: boolean | core.BooleanOut; } export interface IamInstanceProfileArgs extends core.SchemaArgs { arn: string | core.StringOut; name: string | core.StringOut; } export class IamInstanceProfile extends core.Schema { @core.attr(String, { computed: true }) public arn!: string | core.StringOut; @core.attr(String, { computed: true }) public name!: string | core.StringOut; } export interface PlacementArgs extends core.SchemaArgs { affinity: string | core.StringOut; availabilityZone: string | core.StringOut; groupName: string | core.StringOut; hostId: string | core.StringOut; hostResourceGroupArn: string | core.StringOut; partitionNumber: number | core.NumberOut; spreadDomain: string | core.StringOut; tenancy: string | core.StringOut; } export class Placement extends core.Schema { @core.attr(String, { computed: true }) public affinity!: string | core.StringOut; @core.attr(String, { computed: true }) public availabilityZone!: string | core.StringOut; @core.attr(String, { computed: true }) public groupName!: string | core.StringOut; @core.attr(String, { computed: true }) public hostId!: string | core.StringOut; @core.attr(String, { computed: true }) public hostResourceGroupArn!: string | core.StringOut; @core.attr(Number, { computed: true }) public partitionNumber!: number | core.NumberOut; @core.attr(String, { computed: true }) public spreadDomain!: string | core.StringOut; @core.attr(String, { computed: true }) public tenancy!: string | core.StringOut; } export interface CreditSpecificationArgs extends core.SchemaArgs { cpuCredits: string | core.StringOut; } export class CreditSpecification extends core.Schema { @core.attr(String, { computed: true }) public cpuCredits!: string | core.StringOut; } export interface MetadataOptionsArgs extends core.SchemaArgs { httpEndpoint: string | core.StringOut; httpProtocolIpv6: string | core.StringOut; httpPutResponseHopLimit: number | core.NumberOut; httpTokens: string | core.StringOut; instanceMetadataTags: string | core.StringOut; } export class MetadataOptions extends core.Schema { @core.attr(String, { computed: true }) public httpEndpoint!: string | core.StringOut; @core.attr(String, { computed: true }) public httpProtocolIpv6!: string | core.StringOut; @core.attr(Number, { computed: true }) public httpPutResponseHopLimit!: number | core.NumberOut; @core.attr(String, { computed: true }) public httpTokens!: string | core.StringOut; @core.attr(String, { computed: true }) public instanceMetadataTags!: string | core.StringOut; } export interface TagSpecificationsArgs extends core.SchemaArgs { resourceType: string | core.StringOut; tags?: core.Map | core.MapOut; } export class TagSpecifications extends core.Schema { @core.attr(String, { computed: true }) public resourceType!: string | core.StringOut; @core.attr(String, { computed: true, kind: "map" }) public tags?: core.Map | core.MapOut; } export interface LicenseSpecificationArgs extends core.SchemaArgs { licenseConfigurationArn: string | core.StringOut; } export class LicenseSpecification extends core.Schema { @core.attr(String, { computed: true }) public licenseConfigurationArn!: string | core.StringOut; } export interface ElasticInferenceAcceleratorArgs extends core.SchemaArgs { type: string | core.StringOut; } export class ElasticInferenceAccelerator extends core.Schema { @core.attr(String, { computed: true }) public type!: string | core.StringOut; } export interface HibernationOptionsArgs extends core.SchemaArgs { configured: boolean | core.BooleanOut; } export class HibernationOptions extends core.Schema { @core.attr(Boolean, { computed: true }) public configured!: boolean | core.BooleanOut; } export interface FilterArgs extends core.SchemaArgs { name: string | core.StringOut; values: core.Array | core.ArrayOut; } export class Filter extends core.Schema { @core.attr(String) public name!: string | core.StringOut; @core.attr(String, { kind: "array" }) public values!: core.Array | core.ArrayOut; } export interface SpotOptionsArgs extends core.SchemaArgs { blockDurationMinutes: number | core.NumberOut; instanceInterruptionBehavior: string | core.StringOut; maxPrice: string | core.StringOut; spotInstanceType: string | core.StringOut; validUntil: string | core.StringOut; } export class SpotOptions extends core.Schema { @core.attr(Number, { computed: true }) public blockDurationMinutes!: number | core.NumberOut; @core.attr(String, { computed: true }) public instanceInterruptionBehavior!: string | core.StringOut; @core.attr(String, { computed: true }) public maxPrice!: string | core.StringOut; @core.attr(String, { computed: true }) public spotInstanceType!: string | core.StringOut; @core.attr(String, { computed: true }) public validUntil!: string | core.StringOut; } export interface InstanceMarketOptionsArgs extends core.SchemaArgs { marketType: string | core.StringOut; spotOptions: core.Array | core.ArrayOut; } export class InstanceMarketOptions extends core.Schema { @core.attr(String, { computed: true }) public marketType!: string | core.StringOut; @core.attr(SpotOptions, { computed: true, kind: "array" }) public spotOptions!: core.Array | core.ArrayOut; } export interface MaintenanceOptionsArgs extends core.SchemaArgs { autoRecovery: string | core.StringOut; } export class MaintenanceOptions extends core.Schema { @core.attr(String, { computed: true }) public autoRecovery!: string | core.StringOut; } export interface TotalLocalStorageGbArgs extends core.SchemaArgs { max: number | core.NumberOut; min: number | core.NumberOut; } export class TotalLocalStorageGb extends core.Schema { @core.attr(Number, { computed: true }) public max!: number | core.NumberOut; @core.attr(Number, { computed: true }) public min!: number | core.NumberOut; } export interface MemoryMibArgs extends core.SchemaArgs { max: number | core.NumberOut; min: number | core.NumberOut; } export class MemoryMib extends core.Schema { @core.attr(Number, { computed: true }) public max!: number | core.NumberOut; @core.attr(Number, { computed: true }) public min!: number | core.NumberOut; } export interface NetworkInterfaceCountArgs extends core.SchemaArgs { max: number | core.NumberOut; min: number | core.NumberOut; } export class NetworkInterfaceCount extends core.Schema { @core.attr(Number, { computed: true }) public max!: number | core.NumberOut; @core.attr(Number, { computed: true }) public min!: number | core.NumberOut; } export interface BaselineEbsBandwidthMbpsArgs extends core.SchemaArgs { max: number | core.NumberOut; min: number | core.NumberOut; } export class BaselineEbsBandwidthMbps extends core.Schema { @core.attr(Number, { computed: true }) public max!: number | core.NumberOut; @core.attr(Number, { computed: true }) public min!: number | core.NumberOut; } export interface MemoryGibPerVcpuArgs extends core.SchemaArgs { max: number | core.NumberOut; min: number | core.NumberOut; } export class MemoryGibPerVcpu extends core.Schema { @core.attr(Number, { computed: true }) public max!: number | core.NumberOut; @core.attr(Number, { computed: true }) public min!: number | core.NumberOut; } export interface VcpuCountArgs extends core.SchemaArgs { max: number | core.NumberOut; min: number | core.NumberOut; } export class VcpuCount extends core.Schema { @core.attr(Number, { computed: true }) public max!: number | core.NumberOut; @core.attr(Number, { computed: true }) public min!: number | core.NumberOut; } export interface AcceleratorTotalMemoryMibArgs extends core.SchemaArgs { max: number | core.NumberOut; min: number | core.NumberOut; } export class AcceleratorTotalMemoryMib extends core.Schema { @core.attr(Number, { computed: true }) public max!: number | core.NumberOut; @core.attr(Number, { computed: true }) public min!: number | core.NumberOut; } export interface AcceleratorCountArgs extends core.SchemaArgs { max: number | core.NumberOut; min: number | core.NumberOut; } export class AcceleratorCount extends core.Schema { @core.attr(Number, { computed: true }) public max!: number | core.NumberOut; @core.attr(Number, { computed: true }) public min!: number | core.NumberOut; } export interface InstanceRequirementsArgs extends core.SchemaArgs { acceleratorCount: | core.Array | core.ArrayOut; acceleratorManufacturers: core.Array | core.ArrayOut; acceleratorNames: core.Array | core.ArrayOut; acceleratorTotalMemoryMib: | core.Array | core.ArrayOut; acceleratorTypes: core.Array | core.ArrayOut; bareMetal: string | core.StringOut; baselineEbsBandwidthMbps: | core.Array | core.ArrayOut; burstablePerformance: string | core.StringOut; cpuManufacturers: core.Array | core.ArrayOut; excludedInstanceTypes: core.Array | core.ArrayOut; instanceGenerations: core.Array | core.ArrayOut; localStorage: string | core.StringOut; localStorageTypes: core.Array | core.ArrayOut; memoryGibPerVcpu: | core.Array | core.ArrayOut; memoryMib: core.Array | core.ArrayOut; networkInterfaceCount: | core.Array | core.ArrayOut; onDemandMaxPricePercentageOverLowestPrice: number | core.NumberOut; requireHibernateSupport: boolean | core.BooleanOut; spotMaxPricePercentageOverLowestPrice: number | core.NumberOut; totalLocalStorageGb: | core.Array | core.ArrayOut; vcpuCount: core.Array | core.ArrayOut; } export class InstanceRequirements extends core.Schema { @core.attr(AcceleratorCount, { computed: true, kind: "array" }) public acceleratorCount!: | core.Array | core.ArrayOut; @core.attr(String, { computed: true, kind: "array" }) public acceleratorManufacturers!: | core.Array | core.ArrayOut; @core.attr(String, { computed: true, kind: "array" }) public acceleratorNames!: core.Array | core.ArrayOut; @core.attr(AcceleratorTotalMemoryMib, { computed: true, kind: "array" }) public acceleratorTotalMemoryMib!: | core.Array | core.ArrayOut; @core.attr(String, { computed: true, kind: "array" }) public acceleratorTypes!: core.Array | core.ArrayOut; @core.attr(String, { computed: true }) public bareMetal!: string | core.StringOut; @core.attr(BaselineEbsBandwidthMbps, { computed: true, kind: "array" }) public baselineEbsBandwidthMbps!: | core.Array | core.ArrayOut; @core.attr(String, { computed: true }) public burstablePerformance!: string | core.StringOut; @core.attr(String, { computed: true, kind: "array" }) public cpuManufacturers!: core.Array | core.ArrayOut; @core.attr(String, { computed: true, kind: "array" }) public excludedInstanceTypes!: | core.Array | core.ArrayOut; @core.attr(String, { computed: true, kind: "array" }) public instanceGenerations!: | core.Array | core.ArrayOut; @core.attr(String, { computed: true }) public localStorage!: string | core.StringOut; @core.attr(String, { computed: true, kind: "array" }) public localStorageTypes!: core.Array | core.ArrayOut; @core.attr(MemoryGibPerVcpu, { computed: true, kind: "array" }) public memoryGibPerVcpu!: | core.Array | core.ArrayOut; @core.attr(MemoryMib, { computed: true, kind: "array" }) public memoryMib!: core.Array | core.ArrayOut; @core.attr(NetworkInterfaceCount, { computed: true, kind: "array" }) public networkInterfaceCount!: | core.Array | core.ArrayOut; @core.attr(Number, { computed: true }) public onDemandMaxPricePercentageOverLowestPrice!: number | core.NumberOut; @core.attr(Boolean, { computed: true }) public requireHibernateSupport!: boolean | core.BooleanOut; @core.attr(Number, { computed: true }) public spotMaxPricePercentageOverLowestPrice!: number | core.NumberOut; @core.attr(TotalLocalStorageGb, { computed: true, kind: "array" }) public totalLocalStorageGb!: | core.Array | core.ArrayOut; @core.attr(VcpuCount, { computed: true, kind: "array" }) public vcpuCount!: core.Array | core.ArrayOut; } export interface NetworkInterfacesArgs extends core.SchemaArgs { associateCarrierIpAddress: string | core.StringOut; associatePublicIpAddress: string | core.StringOut; deleteOnTermination: string | core.StringOut; description: string | core.StringOut; deviceIndex: number | core.NumberOut; interfaceType: string | core.StringOut; ipv4AddressCount: number | core.NumberOut; ipv4Addresses: core.Array | core.ArrayOut; ipv4PrefixCount: number | core.NumberOut; ipv4Prefixes: core.Array | core.ArrayOut; ipv6AddressCount: number | core.NumberOut; ipv6Addresses: core.Array | core.ArrayOut; ipv6PrefixCount: number | core.NumberOut; ipv6Prefixes: core.Array | core.ArrayOut; networkCardIndex: number | core.NumberOut; networkInterfaceId: string | core.StringOut; privateIpAddress: string | core.StringOut; securityGroups: core.Array | core.ArrayOut; subnetId: string | core.StringOut; } export class NetworkInterfaces extends core.Schema { @core.attr(String, { computed: true }) public associateCarrierIpAddress!: string | core.StringOut; @core.attr(String, { computed: true }) public associatePublicIpAddress!: string | core.StringOut; @core.attr(String, { computed: true }) public deleteOnTermination!: string | core.StringOut; @core.attr(String, { computed: true }) public description!: string | core.StringOut; @core.attr(Number, { computed: true }) public deviceIndex!: number | core.NumberOut; @core.attr(String, { computed: true }) public interfaceType!: string | core.StringOut; @core.attr(Number, { computed: true }) public ipv4AddressCount!: number | core.NumberOut; @core.attr(String, { computed: true, kind: "array" }) public ipv4Addresses!: core.Array | core.ArrayOut; @core.attr(Number, { computed: true }) public ipv4PrefixCount!: number | core.NumberOut; @core.attr(String, { computed: true, kind: "array" }) public ipv4Prefixes!: core.Array | core.ArrayOut; @core.attr(Number, { computed: true }) public ipv6AddressCount!: number | core.NumberOut; @core.attr(String, { computed: true, kind: "array" }) public ipv6Addresses!: core.Array | core.ArrayOut; @core.attr(Number, { computed: true }) public ipv6PrefixCount!: number | core.NumberOut; @core.attr(String, { computed: true, kind: "array" }) public ipv6Prefixes!: core.Array | core.ArrayOut; @core.attr(Number, { computed: true }) public networkCardIndex!: number | core.NumberOut; @core.attr(String, { computed: true }) public networkInterfaceId!: string | core.StringOut; @core.attr(String, { computed: true }) public privateIpAddress!: string | core.StringOut; @core.attr(String, { computed: true, kind: "array" }) public securityGroups!: core.Array | core.ArrayOut; @core.attr(String, { computed: true }) public subnetId!: string | core.StringOut; } export interface DsLaunchTemplateArgs { /** * (Optional) Configuration block(s) for filtering. Detailed below. */ filter?: core.Array | core.ArrayOut; /** * (Optional) The ID of the specific launch template to retrieve. */ id?: string | core.StringOut; /** * (Optional) The name of the launch template. */ name?: string | core.StringOut; /** * (Optional) A map of tags, each pair of which must exactly match a pair on the desired Launch Templat * e. */ tags?: core.Map | core.MapOut; } export class DsLaunchTemplate extends core.Data { @core.attr(String, { computed: true }) public arn!: string | core.StringOut; @core.attr(BlockDeviceMappings, { computed: true, kind: "array" }) public blockDeviceMappings!: | core.Array | core.ArrayOut; @core.attr(CapacityReservationSpecification, { computed: true, kind: "array", }) public capacityReservationSpecification!: | core.Array | core.ArrayOut; @core.attr(CpuOptions, { computed: true, kind: "array" }) public cpuOptions!: core.Array | core.ArrayOut; @core.attr(CreditSpecification, { computed: true, kind: "array" }) public creditSpecification!: | core.Array | core.ArrayOut; @core.attr(Number, { computed: true }) public defaultVersion!: number | core.NumberOut; @core.attr(String, { computed: true }) public description!: string | core.StringOut; @core.attr(Boolean, { computed: true }) public disableApiStop!: boolean | core.BooleanOut; @core.attr(Boolean, { computed: true }) public disableApiTermination!: boolean | core.BooleanOut; @core.attr(String, { computed: true }) public ebsOptimized!: string | core.StringOut; @core.attr(ElasticGpuSpecifications, { computed: true, kind: "array" }) public elasticGpuSpecifications!: | core.Array | core.ArrayOut; @core.attr(ElasticInferenceAccelerator, { computed: true, kind: "array" }) public elasticInferenceAccelerator!: | core.Array | core.ArrayOut; @core.attr(EnclaveOptions, { computed: true, kind: "array" }) public enclaveOptions!: | core.Array | core.ArrayOut; /** * (Optional) Configuration block(s) for filtering. Detailed below. */ @core.attr(Filter, { kind: "array" }) public filter?: core.Array | core.ArrayOut; @core.attr(HibernationOptions, { computed: true, kind: "array" }) public hibernationOptions!: | core.Array | core.ArrayOut; @core.attr(IamInstanceProfile, { computed: true, kind: "array" }) public iamInstanceProfile!: | core.Array | core.ArrayOut; /** * (Optional) The ID of the specific launch template to retrieve. */ @core.attr(String, { computed: true }) public id?: string | core.StringOut; @core.attr(String, { computed: true }) public imageId!: string | core.StringOut; @core.attr(String, { computed: true }) public instanceInitiatedShutdownBehavior!: string | core.StringOut; @core.attr(InstanceMarketOptions, { computed: true, kind: "array" }) public instanceMarketOptions!: | core.Array | core.ArrayOut; @core.attr(InstanceRequirements, { computed: true, kind: "array" }) public instanceRequirements!: | core.Array | core.ArrayOut; @core.attr(String, { computed: true }) public instanceType!: string | core.StringOut; @core.attr(String, { computed: true }) public kernelId!: string | core.StringOut; @core.attr(String, { computed: true }) public keyName!: string | core.StringOut; @core.attr(Number, { computed: true }) public latestVersion!: number | core.NumberOut; @core.attr(LicenseSpecification, { computed: true, kind: "array" }) public licenseSpecification!: | core.Array | core.ArrayOut; @core.attr(MaintenanceOptions, { computed: true, kind: "array" }) public maintenanceOptions!: | core.Array | core.ArrayOut; @core.attr(MetadataOptions, { computed: true, kind: "array" }) public metadataOptions!: | core.Array | core.ArrayOut; @core.attr(Monitoring, { computed: true, kind: "array" }) public monitoring!: core.Array | core.ArrayOut; /** * (Optional) The name of the launch template. */ @core.attr(String, { computed: true }) public name?: string | core.StringOut; @core.attr(NetworkInterfaces, { computed: true, kind: "array" }) public networkInterfaces!: | core.Array | core.ArrayOut; @core.attr(Placement, { computed: true, kind: "array" }) public placement!: core.Array | core.ArrayOut; @core.attr(PrivateDnsNameOptions, { computed: true, kind: "array" }) public privateDnsNameOptions!: | core.Array | core.ArrayOut; @core.attr(String, { computed: true }) public ramDiskId!: string | core.StringOut; @core.attr(String, { computed: true, kind: "array" }) public securityGroupNames!: | core.Array | core.ArrayOut; @core.attr(TagSpecifications, { computed: true, kind: "array" }) public tagSpecifications!: | core.Array | core.ArrayOut; /** * (Optional) A map of tags, each pair of which must exactly match a pair on the desired Launch Templat * e. */ @core.attr(String, { computed: true, kind: "map" }) public tags?: core.Map | core.MapOut; @core.attr(String, { computed: true }) public userData!: string | core.StringOut; @core.attr(String, { computed: true, kind: "array" }) public vpcSecurityGroupIds!: | core.Array | core.ArrayOut; constructor(name: string, args?: DsLaunchTemplateArgs) { super(name, "aws_launch_template", args); } public override getNamespace(): string { return "aws_ec2"; } }