import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface VirtualMachineConfig extends cdktf.TerraformMetaArguments {
    /**
    * The agent configuration.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#agent VirtualMachine#agent}
    */
    readonly agent?: VirtualMachineAgent | cdktf.IResolvable;
    /**
    * The BIOS type.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#bios VirtualMachine#bios}
    */
    readonly bios?: string;
    /**
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#clone VirtualMachine#clone}
    */
    readonly clone?: VirtualMachineClone | cdktf.IResolvable;
    /**
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#cloud_init VirtualMachine#cloud_init}
    */
    readonly cloudInit?: VirtualMachineCloudInit | cdktf.IResolvable;
    /**
    * The CPU configuration.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#cpu VirtualMachine#cpu}
    */
    readonly cpu?: VirtualMachineCpu | cdktf.IResolvable;
    /**
    * The virtual machine description.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#description VirtualMachine#description}
    */
    readonly description?: string;
    /**
    * The terrafrom generated disks attached to the VM.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#disks VirtualMachine#disks}
    */
    readonly disks?: VirtualMachineDisks[] | cdktf.IResolvable;
    /**
    * The identifier of the virtual machine.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#id VirtualMachine#id}
    *
    * Please be aware that the id field is automatically added to all resources in Terraform providers using a Terraform provider SDK version below 2.
    * If you experience problems setting this value it might not be settable. Please take a look at the provider documentation to ensure it should be settable.
    */
    readonly id?: number;
    /**
    * The operating system configuration.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#iso VirtualMachine#iso}
    */
    readonly iso?: VirtualMachineIso | cdktf.IResolvable;
    /**
    * The keyboard layout.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#keyboard_layout VirtualMachine#keyboard_layout}
    */
    readonly keyboardLayout?: string;
    /**
    * The arguments to pass to KVM.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#kvm_arguments VirtualMachine#kvm_arguments}
    */
    readonly kvmArguments?: string;
    /**
    * The machine type.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#machine_type VirtualMachine#machine_type}
    */
    readonly machineType?: string;
    /**
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#memory VirtualMachine#memory}
    */
    readonly memory?: VirtualMachineMemory | cdktf.IResolvable;
    /**
    * The name of the virtual machine.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#name VirtualMachine#name}
    */
    readonly name?: string;
    /**
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#network_interfaces VirtualMachine#network_interfaces}
    */
    readonly networkInterfaces?: VirtualMachineNetworkInterfaces[] | cdktf.IResolvable;
    /**
    * The node to create the virtual machine on.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#node VirtualMachine#node}
    */
    readonly nodeAttribute: string;
    /**
    * PCI devices passed through to the VM.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#pci_devices VirtualMachine#pci_devices}
    */
    readonly pciDevices?: VirtualMachinePciDevices[] | cdktf.IResolvable;
    /**
    * The resource pool the virtual machine is in.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#resource_pool VirtualMachine#resource_pool}
    */
    readonly resourcePool?: string;
    /**
    * Whether to start the virtual machine on creation.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#start_on_create VirtualMachine#start_on_create}
    */
    readonly startOnCreate?: boolean | cdktf.IResolvable;
    /**
    * Whether to start the virtual machine on node boot.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#start_on_node_boot VirtualMachine#start_on_node_boot}
    */
    readonly startOnNodeBoot?: boolean | cdktf.IResolvable;
    /**
    * The tags of the virtual machine.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#tags VirtualMachine#tags}
    */
    readonly tags?: string[];
    /**
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#timeouts VirtualMachine#timeouts}
    */
    readonly timeouts?: VirtualMachineTimeouts | cdktf.IResolvable;
    /**
    * The operating system type.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#type VirtualMachine#type}
    */
    readonly type?: string;
}
export interface VirtualMachineAgent {
    /**
    * Whether the agent is enabled.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#enabled VirtualMachine#enabled}
    */
    readonly enabled?: boolean | cdktf.IResolvable;
    /**
    * The guest agent type.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#type VirtualMachine#type}
    */
    readonly type?: string;
    /**
    * Whether to use fstrim.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#use_fstrim VirtualMachine#use_fstrim}
    */
    readonly useFstrim?: boolean | cdktf.IResolvable;
}
export declare function virtualMachineAgentToTerraform(struct?: VirtualMachineAgent | cdktf.IResolvable): any;
export declare class VirtualMachineAgentOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): VirtualMachineAgent | cdktf.IResolvable | undefined;
    set internalValue(value: VirtualMachineAgent | cdktf.IResolvable | undefined);
    private _enabled?;
    get enabled(): boolean | cdktf.IResolvable;
    set enabled(value: boolean | cdktf.IResolvable);
    resetEnabled(): void;
    get enabledInput(): boolean | cdktf.IResolvable | undefined;
    private _type?;
    get type(): string;
    set type(value: string);
    resetType(): void;
    get typeInput(): string | undefined;
    private _useFstrim?;
    get useFstrim(): boolean | cdktf.IResolvable;
    set useFstrim(value: boolean | cdktf.IResolvable);
    resetUseFstrim(): void;
    get useFstrimInput(): boolean | cdktf.IResolvable | undefined;
}
export interface VirtualMachineClone {
    /**
    * Whether to clone as a full or linked clone.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#full_clone VirtualMachine#full_clone}
    */
    readonly fullClone?: boolean | cdktf.IResolvable;
    /**
    * The identifier of the virtual machine or template to clone.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#source VirtualMachine#source}
    */
    readonly source: number;
    /**
    * The storage to place the clone on.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#storage VirtualMachine#storage}
    */
    readonly storage?: string;
}
export declare function virtualMachineCloneToTerraform(struct?: VirtualMachineClone | cdktf.IResolvable): any;
export declare class VirtualMachineCloneOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): VirtualMachineClone | cdktf.IResolvable | undefined;
    set internalValue(value: VirtualMachineClone | cdktf.IResolvable | undefined);
    private _fullClone?;
    get fullClone(): boolean | cdktf.IResolvable;
    set fullClone(value: boolean | cdktf.IResolvable);
    resetFullClone(): void;
    get fullCloneInput(): boolean | cdktf.IResolvable | undefined;
    private _source?;
    get source(): number;
    set source(value: number);
    get sourceInput(): number | undefined;
    private _storage?;
    get storage(): string;
    set storage(value: string);
    resetStorage(): void;
    get storageInput(): string | undefined;
}
export interface VirtualMachineCloudInitDns {
    /**
    * The domain to use for the machine.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#domain VirtualMachine#domain}
    */
    readonly domain?: string;
    /**
    * The nameserver to use for the machine.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#nameserver VirtualMachine#nameserver}
    */
    readonly nameserver?: string;
}
export declare function virtualMachineCloudInitDnsToTerraform(struct?: VirtualMachineCloudInitDns | cdktf.IResolvable): any;
export declare class VirtualMachineCloudInitDnsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): VirtualMachineCloudInitDns | cdktf.IResolvable | undefined;
    set internalValue(value: VirtualMachineCloudInitDns | cdktf.IResolvable | undefined);
    private _domain?;
    get domain(): string;
    set domain(value: string);
    resetDomain(): void;
    get domainInput(): string | undefined;
    private _nameserver?;
    get nameserver(): string;
    set nameserver(value: string);
    resetNameserver(): void;
    get nameserverInput(): string | undefined;
}
export interface VirtualMachineCloudInitIpV4 {
    /**
    * The IP address to use for the machine.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#address VirtualMachine#address}
    */
    readonly address?: string;
    /**
    * Whether to use DHCP to get the IP address.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#dhcp VirtualMachine#dhcp}
    */
    readonly dhcp?: boolean | cdktf.IResolvable;
    /**
    * The gateway to use for the machine.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#gateway VirtualMachine#gateway}
    */
    readonly gateway?: string;
    /**
    * The IP address netmask to use for the machine.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#netmask VirtualMachine#netmask}
    */
    readonly netmask?: string;
}
export declare function virtualMachineCloudInitIpV4ToTerraform(struct?: VirtualMachineCloudInitIpV4 | cdktf.IResolvable): any;
export declare class VirtualMachineCloudInitIpV4OutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): VirtualMachineCloudInitIpV4 | cdktf.IResolvable | undefined;
    set internalValue(value: VirtualMachineCloudInitIpV4 | cdktf.IResolvable | undefined);
    private _address?;
    get address(): string;
    set address(value: string);
    resetAddress(): void;
    get addressInput(): string | undefined;
    private _dhcp?;
    get dhcp(): boolean | cdktf.IResolvable;
    set dhcp(value: boolean | cdktf.IResolvable);
    resetDhcp(): void;
    get dhcpInput(): boolean | cdktf.IResolvable | undefined;
    private _gateway?;
    get gateway(): string;
    set gateway(value: string);
    resetGateway(): void;
    get gatewayInput(): string | undefined;
    private _netmask?;
    get netmask(): string;
    set netmask(value: string);
    resetNetmask(): void;
    get netmaskInput(): string | undefined;
}
export interface VirtualMachineCloudInitIpV6 {
    /**
    * The IP address to use for the machine.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#address VirtualMachine#address}
    */
    readonly address?: string;
    /**
    * Whether to use DHCP to get the IP address.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#dhcp VirtualMachine#dhcp}
    */
    readonly dhcp?: boolean | cdktf.IResolvable;
    /**
    * The gateway to use for the machine.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#gateway VirtualMachine#gateway}
    */
    readonly gateway?: string;
    /**
    * The IP address netmask to use for the machine.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#netmask VirtualMachine#netmask}
    */
    readonly netmask?: string;
}
export declare function virtualMachineCloudInitIpV6ToTerraform(struct?: VirtualMachineCloudInitIpV6 | cdktf.IResolvable): any;
export declare class VirtualMachineCloudInitIpV6OutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): VirtualMachineCloudInitIpV6 | cdktf.IResolvable | undefined;
    set internalValue(value: VirtualMachineCloudInitIpV6 | cdktf.IResolvable | undefined);
    private _address?;
    get address(): string;
    set address(value: string);
    resetAddress(): void;
    get addressInput(): string | undefined;
    private _dhcp?;
    get dhcp(): boolean | cdktf.IResolvable;
    set dhcp(value: boolean | cdktf.IResolvable);
    resetDhcp(): void;
    get dhcpInput(): boolean | cdktf.IResolvable | undefined;
    private _gateway?;
    get gateway(): string;
    set gateway(value: string);
    resetGateway(): void;
    get gatewayInput(): string | undefined;
    private _netmask?;
    get netmask(): string;
    set netmask(value: string);
    resetNetmask(): void;
    get netmaskInput(): string | undefined;
}
export interface VirtualMachineCloudInitIp {
    /**
    * The position of the network interface in the VM as an int. Used to determine the interface name (net0, net1, etc).
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#position VirtualMachine#position}
    */
    readonly position: number;
    /**
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#v4 VirtualMachine#v4}
    */
    readonly v4?: VirtualMachineCloudInitIpV4 | cdktf.IResolvable;
    /**
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#v6 VirtualMachine#v6}
    */
    readonly v6?: VirtualMachineCloudInitIpV6 | cdktf.IResolvable;
}
export declare function virtualMachineCloudInitIpToTerraform(struct?: VirtualMachineCloudInitIp | cdktf.IResolvable): any;
export declare class VirtualMachineCloudInitIpOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): VirtualMachineCloudInitIp | cdktf.IResolvable | undefined;
    set internalValue(value: VirtualMachineCloudInitIp | cdktf.IResolvable | undefined);
    private _position?;
    get position(): number;
    set position(value: number);
    get positionInput(): number | undefined;
    private _v4;
    get v4(): VirtualMachineCloudInitIpV4OutputReference;
    putV4(value: VirtualMachineCloudInitIpV4 | cdktf.IResolvable): void;
    resetV4(): void;
    get v4Input(): cdktf.IResolvable | VirtualMachineCloudInitIpV4 | undefined;
    private _v6;
    get v6(): VirtualMachineCloudInitIpV6OutputReference;
    putV6(value: VirtualMachineCloudInitIpV6 | cdktf.IResolvable): void;
    resetV6(): void;
    get v6Input(): cdktf.IResolvable | VirtualMachineCloudInitIpV6 | undefined;
}
export declare class VirtualMachineCloudInitIpList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: VirtualMachineCloudInitIp[] | cdktf.IResolvable;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): VirtualMachineCloudInitIpOutputReference;
}
export interface VirtualMachineCloudInitUser {
    /**
    * The name of the user.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#name VirtualMachine#name}
    */
    readonly name: string;
    /**
    * The password of the user.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#password VirtualMachine#password}
    */
    readonly password?: string;
    /**
    * The public ssh keys of the user.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#public_keys VirtualMachine#public_keys}
    */
    readonly publicKeys?: string[];
}
export declare function virtualMachineCloudInitUserToTerraform(struct?: VirtualMachineCloudInitUser | cdktf.IResolvable): any;
export declare class VirtualMachineCloudInitUserOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): VirtualMachineCloudInitUser | cdktf.IResolvable | undefined;
    set internalValue(value: VirtualMachineCloudInitUser | cdktf.IResolvable | undefined);
    private _name?;
    get name(): string;
    set name(value: string);
    get nameInput(): string | undefined;
    private _password?;
    get password(): string;
    set password(value: string);
    resetPassword(): void;
    get passwordInput(): string | undefined;
    private _publicKeys?;
    get publicKeys(): string[];
    set publicKeys(value: string[]);
    resetPublicKeys(): void;
    get publicKeysInput(): string[] | undefined;
}
export interface VirtualMachineCloudInit {
    /**
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#dns VirtualMachine#dns}
    */
    readonly dns?: VirtualMachineCloudInitDns | cdktf.IResolvable;
    /**
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#ip VirtualMachine#ip}
    */
    readonly ip?: VirtualMachineCloudInitIp[] | cdktf.IResolvable;
    /**
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#user VirtualMachine#user}
    */
    readonly user?: VirtualMachineCloudInitUser | cdktf.IResolvable;
}
export declare function virtualMachineCloudInitToTerraform(struct?: VirtualMachineCloudInit | cdktf.IResolvable): any;
export declare class VirtualMachineCloudInitOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): VirtualMachineCloudInit | cdktf.IResolvable | undefined;
    set internalValue(value: VirtualMachineCloudInit | cdktf.IResolvable | undefined);
    private _dns;
    get dns(): VirtualMachineCloudInitDnsOutputReference;
    putDns(value: VirtualMachineCloudInitDns | cdktf.IResolvable): void;
    resetDns(): void;
    get dnsInput(): cdktf.IResolvable | VirtualMachineCloudInitDns | undefined;
    private _ip;
    get ip(): VirtualMachineCloudInitIpList;
    putIp(value: VirtualMachineCloudInitIp[] | cdktf.IResolvable): void;
    resetIp(): void;
    get ipInput(): cdktf.IResolvable | VirtualMachineCloudInitIp[] | undefined;
    private _user;
    get user(): VirtualMachineCloudInitUserOutputReference;
    putUser(value: VirtualMachineCloudInitUser | cdktf.IResolvable): void;
    resetUser(): void;
    get userInput(): cdktf.IResolvable | VirtualMachineCloudInitUser | undefined;
}
export interface VirtualMachineComputedDisksSpeedLimits {
    /**
    * The read speed limit in bytes per second.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#read VirtualMachine#read}
    */
    readonly read?: number;
    /**
    * The read burstable speed limit in bytes per second.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#read_burstable VirtualMachine#read_burstable}
    */
    readonly readBurstable?: number;
    /**
    * The write speed limit in bytes per second.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#write VirtualMachine#write}
    */
    readonly write?: number;
    /**
    * The write burstable speed limit in bytes per second.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#write_burstable VirtualMachine#write_burstable}
    */
    readonly writeBurstable?: number;
}
export declare function virtualMachineComputedDisksSpeedLimitsToTerraform(struct?: VirtualMachineComputedDisksSpeedLimits | cdktf.IResolvable): any;
export declare class VirtualMachineComputedDisksSpeedLimitsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): VirtualMachineComputedDisksSpeedLimits | cdktf.IResolvable | undefined;
    set internalValue(value: VirtualMachineComputedDisksSpeedLimits | cdktf.IResolvable | undefined);
    private _read?;
    get read(): number;
    set read(value: number);
    resetRead(): void;
    get readInput(): number | undefined;
    private _readBurstable?;
    get readBurstable(): number;
    set readBurstable(value: number);
    resetReadBurstable(): void;
    get readBurstableInput(): number | undefined;
    private _write?;
    get write(): number;
    set write(value: number);
    resetWrite(): void;
    get writeInput(): number | undefined;
    private _writeBurstable?;
    get writeBurstable(): number;
    set writeBurstable(value: number);
    resetWriteBurstable(): void;
    get writeBurstableInput(): number | undefined;
}
export interface VirtualMachineComputedDisks {
    /**
    * Whether the disk has discard enabled.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#discard VirtualMachine#discard}
    */
    readonly discard?: boolean | cdktf.IResolvable;
    /**
    * The file format of the disk.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#file_format VirtualMachine#file_format}
    */
    readonly fileFormat?: string;
    /**
    * The type of the disk.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#interface_type VirtualMachine#interface_type}
    */
    readonly interfaceType: string;
    /**
    * The position of the disk. (0, 1, 2, etc.) This is combined with the `interface_type` to determine the disk name.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#position VirtualMachine#position}
    */
    readonly position: number;
    /**
    * The size of the disk in GiB.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#size VirtualMachine#size}
    */
    readonly size: number;
    /**
    * The speed limits of the disk. If not set, no speed limitations are applied.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#speed_limits VirtualMachine#speed_limits}
    */
    readonly speedLimits?: VirtualMachineComputedDisksSpeedLimits | cdktf.IResolvable;
    /**
    * Whether to use SSD emulation. conflicts with virtio disk type.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#ssd_emulation VirtualMachine#ssd_emulation}
    */
    readonly ssdEmulation?: boolean | cdktf.IResolvable;
    /**
    * The storage the disk is on.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#storage VirtualMachine#storage}
    */
    readonly storage: string;
    /**
    * Whether to use an iothread for the disk.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#use_iothread VirtualMachine#use_iothread}
    */
    readonly useIothread?: boolean | cdktf.IResolvable;
}
export declare function virtualMachineComputedDisksToTerraform(struct?: VirtualMachineComputedDisks): any;
export declare class VirtualMachineComputedDisksOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): VirtualMachineComputedDisks | undefined;
    set internalValue(value: VirtualMachineComputedDisks | undefined);
    private _discard?;
    get discard(): boolean | cdktf.IResolvable;
    set discard(value: boolean | cdktf.IResolvable);
    resetDiscard(): void;
    get discardInput(): boolean | cdktf.IResolvable | undefined;
    private _fileFormat?;
    get fileFormat(): string;
    set fileFormat(value: string);
    resetFileFormat(): void;
    get fileFormatInput(): string | undefined;
    private _interfaceType?;
    get interfaceType(): string;
    set interfaceType(value: string);
    get interfaceTypeInput(): string | undefined;
    get name(): string;
    private _position?;
    get position(): number;
    set position(value: number);
    get positionInput(): number | undefined;
    private _size?;
    get size(): number;
    set size(value: number);
    get sizeInput(): number | undefined;
    private _speedLimits;
    get speedLimits(): VirtualMachineComputedDisksSpeedLimitsOutputReference;
    putSpeedLimits(value: VirtualMachineComputedDisksSpeedLimits | cdktf.IResolvable): void;
    resetSpeedLimits(): void;
    get speedLimitsInput(): cdktf.IResolvable | VirtualMachineComputedDisksSpeedLimits | undefined;
    private _ssdEmulation?;
    get ssdEmulation(): boolean | cdktf.IResolvable;
    set ssdEmulation(value: boolean | cdktf.IResolvable);
    resetSsdEmulation(): void;
    get ssdEmulationInput(): boolean | cdktf.IResolvable | undefined;
    private _storage?;
    get storage(): string;
    set storage(value: string);
    get storageInput(): string | undefined;
    private _useIothread?;
    get useIothread(): boolean | cdktf.IResolvable;
    set useIothread(value: boolean | cdktf.IResolvable);
    resetUseIothread(): void;
    get useIothreadInput(): boolean | cdktf.IResolvable | undefined;
}
export declare class VirtualMachineComputedDisksList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: VirtualMachineComputedDisks[] | cdktf.IResolvable;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): VirtualMachineComputedDisksOutputReference;
}
export interface VirtualMachineComputedNetworkInterfaces {
    /**
    * The bridge the network interface is on.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#bridge VirtualMachine#bridge}
    */
    readonly bridge: string;
    /**
    * Whether the network interface is enabled.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#enabled VirtualMachine#enabled}
    */
    readonly enabled?: boolean | cdktf.IResolvable;
    /**
    * The MAC address of the network interface.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#mac_address VirtualMachine#mac_address}
    */
    readonly macAddress?: string;
    /**
    * The model of the network interface.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#model VirtualMachine#model}
    */
    readonly model?: string;
    /**
    * The MTU of the network interface. Only valid for virtio.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#mtu VirtualMachine#mtu}
    */
    readonly mtu?: number;
    /**
    * The position of the network interface in the VM as an int. Used to determine the interface name (net0, net1, etc).
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#position VirtualMachine#position}
    */
    readonly position: number;
    /**
    * The rate limit of the network interface in megabytes per second.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#rate_limit VirtualMachine#rate_limit}
    */
    readonly rateLimit?: number;
    /**
    * Whether the firewall for the network interface is enabled.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#use_firewall VirtualMachine#use_firewall}
    */
    readonly useFirewall?: boolean | cdktf.IResolvable;
    /**
    * The VLAN tag of the network interface.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#vlan VirtualMachine#vlan}
    */
    readonly vlan?: number;
}
export declare function virtualMachineComputedNetworkInterfacesToTerraform(struct?: VirtualMachineComputedNetworkInterfaces): any;
export declare class VirtualMachineComputedNetworkInterfacesOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): VirtualMachineComputedNetworkInterfaces | undefined;
    set internalValue(value: VirtualMachineComputedNetworkInterfaces | undefined);
    private _bridge?;
    get bridge(): string;
    set bridge(value: string);
    get bridgeInput(): string | undefined;
    private _enabled?;
    get enabled(): boolean | cdktf.IResolvable;
    set enabled(value: boolean | cdktf.IResolvable);
    resetEnabled(): void;
    get enabledInput(): boolean | cdktf.IResolvable | undefined;
    private _macAddress?;
    get macAddress(): string;
    set macAddress(value: string);
    resetMacAddress(): void;
    get macAddressInput(): string | undefined;
    private _model?;
    get model(): string;
    set model(value: string);
    resetModel(): void;
    get modelInput(): string | undefined;
    private _mtu?;
    get mtu(): number;
    set mtu(value: number);
    resetMtu(): void;
    get mtuInput(): number | undefined;
    private _position?;
    get position(): number;
    set position(value: number);
    get positionInput(): number | undefined;
    private _rateLimit?;
    get rateLimit(): number;
    set rateLimit(value: number);
    resetRateLimit(): void;
    get rateLimitInput(): number | undefined;
    private _useFirewall?;
    get useFirewall(): boolean | cdktf.IResolvable;
    set useFirewall(value: boolean | cdktf.IResolvable);
    resetUseFirewall(): void;
    get useFirewallInput(): boolean | cdktf.IResolvable | undefined;
    private _vlan?;
    get vlan(): number;
    set vlan(value: number);
    resetVlan(): void;
    get vlanInput(): number | undefined;
}
export declare class VirtualMachineComputedNetworkInterfacesList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: VirtualMachineComputedNetworkInterfaces[] | cdktf.IResolvable;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): VirtualMachineComputedNetworkInterfacesOutputReference;
}
export interface VirtualMachineComputedPciDevices {
    /**
    * The device ID of the PCI device.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#id VirtualMachine#id}
    *
    * Please be aware that the id field is automatically added to all resources in Terraform providers using a Terraform provider SDK version below 2.
    * If you experience problems setting this value it might not be settable. Please take a look at the provider documentation to ensure it should be settable.
    */
    readonly id: string;
    /**
    * The mediated device name.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#mdev VirtualMachine#mdev}
    */
    readonly mdev?: string;
    /**
    * The device name of the PCI device.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#name VirtualMachine#name}
    */
    readonly name: string;
    /**
    * Whether the PCI device is PCIe.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#pcie VirtualMachine#pcie}
    */
    readonly pcie?: boolean | cdktf.IResolvable;
    /**
    * Whether the PCI device is the primary GPU.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#primary_gpu VirtualMachine#primary_gpu}
    */
    readonly primaryGpu?: boolean | cdktf.IResolvable;
    /**
    * The relative path to the ROM for the device.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#rom_file VirtualMachine#rom_file}
    */
    readonly romFile?: string;
    /**
    * Make the firmware room visible to the VM.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#rombar VirtualMachine#rombar}
    */
    readonly rombar?: boolean | cdktf.IResolvable;
}
export declare function virtualMachineComputedPciDevicesToTerraform(struct?: VirtualMachineComputedPciDevices): any;
export declare class VirtualMachineComputedPciDevicesOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): VirtualMachineComputedPciDevices | undefined;
    set internalValue(value: VirtualMachineComputedPciDevices | undefined);
    private _id?;
    get id(): string;
    set id(value: string);
    get idInput(): string | undefined;
    private _mdev?;
    get mdev(): string;
    set mdev(value: string);
    resetMdev(): void;
    get mdevInput(): string | undefined;
    private _name?;
    get name(): string;
    set name(value: string);
    get nameInput(): string | undefined;
    private _pcie?;
    get pcie(): boolean | cdktf.IResolvable;
    set pcie(value: boolean | cdktf.IResolvable);
    resetPcie(): void;
    get pcieInput(): boolean | cdktf.IResolvable | undefined;
    private _primaryGpu?;
    get primaryGpu(): boolean | cdktf.IResolvable;
    set primaryGpu(value: boolean | cdktf.IResolvable);
    resetPrimaryGpu(): void;
    get primaryGpuInput(): boolean | cdktf.IResolvable | undefined;
    private _romFile?;
    get romFile(): string;
    set romFile(value: string);
    resetRomFile(): void;
    get romFileInput(): string | undefined;
    private _rombar?;
    get rombar(): boolean | cdktf.IResolvable;
    set rombar(value: boolean | cdktf.IResolvable);
    resetRombar(): void;
    get rombarInput(): boolean | cdktf.IResolvable | undefined;
}
export declare class VirtualMachineComputedPciDevicesList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: VirtualMachineComputedPciDevices[] | cdktf.IResolvable;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): VirtualMachineComputedPciDevicesOutputReference;
}
export interface VirtualMachineCpu {
    /**
    * The CPU architecture.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#architecture VirtualMachine#architecture}
    */
    readonly architecture?: string;
    /**
    * The number of CPU cores.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#cores VirtualMachine#cores}
    */
    readonly cores?: number;
    /**
    * The CPU units.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#cpu_units VirtualMachine#cpu_units}
    */
    readonly cpuUnits?: number;
    /**
    * The emulated CPU type.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#emulated_type VirtualMachine#emulated_type}
    */
    readonly emulatedType?: string;
    /**
    * The number of CPU sockets.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#sockets VirtualMachine#sockets}
    */
    readonly sockets?: number;
}
export declare function virtualMachineCpuToTerraform(struct?: VirtualMachineCpu | cdktf.IResolvable): any;
export declare class VirtualMachineCpuOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): VirtualMachineCpu | cdktf.IResolvable | undefined;
    set internalValue(value: VirtualMachineCpu | cdktf.IResolvable | undefined);
    private _architecture?;
    get architecture(): string;
    set architecture(value: string);
    resetArchitecture(): void;
    get architectureInput(): string | undefined;
    private _cores?;
    get cores(): number;
    set cores(value: number);
    resetCores(): void;
    get coresInput(): number | undefined;
    private _cpuUnits?;
    get cpuUnits(): number;
    set cpuUnits(value: number);
    resetCpuUnits(): void;
    get cpuUnitsInput(): number | undefined;
    private _emulatedType?;
    get emulatedType(): string;
    set emulatedType(value: string);
    resetEmulatedType(): void;
    get emulatedTypeInput(): string | undefined;
    private _sockets?;
    get sockets(): number;
    set sockets(value: number);
    resetSockets(): void;
    get socketsInput(): number | undefined;
}
export interface VirtualMachineDisksSpeedLimits {
    /**
    * The read speed limit in bytes per second.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#read VirtualMachine#read}
    */
    readonly read?: number;
    /**
    * The read burstable speed limit in bytes per second.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#read_burstable VirtualMachine#read_burstable}
    */
    readonly readBurstable?: number;
    /**
    * The write speed limit in bytes per second.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#write VirtualMachine#write}
    */
    readonly write?: number;
    /**
    * The write burstable speed limit in bytes per second.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#write_burstable VirtualMachine#write_burstable}
    */
    readonly writeBurstable?: number;
}
export declare function virtualMachineDisksSpeedLimitsToTerraform(struct?: VirtualMachineDisksSpeedLimits | cdktf.IResolvable): any;
export declare class VirtualMachineDisksSpeedLimitsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): VirtualMachineDisksSpeedLimits | cdktf.IResolvable | undefined;
    set internalValue(value: VirtualMachineDisksSpeedLimits | cdktf.IResolvable | undefined);
    private _read?;
    get read(): number;
    set read(value: number);
    resetRead(): void;
    get readInput(): number | undefined;
    private _readBurstable?;
    get readBurstable(): number;
    set readBurstable(value: number);
    resetReadBurstable(): void;
    get readBurstableInput(): number | undefined;
    private _write?;
    get write(): number;
    set write(value: number);
    resetWrite(): void;
    get writeInput(): number | undefined;
    private _writeBurstable?;
    get writeBurstable(): number;
    set writeBurstable(value: number);
    resetWriteBurstable(): void;
    get writeBurstableInput(): number | undefined;
}
export interface VirtualMachineDisks {
    /**
    * Whether the disk has discard enabled.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#discard VirtualMachine#discard}
    */
    readonly discard?: boolean | cdktf.IResolvable;
    /**
    * The file format of the disk.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#file_format VirtualMachine#file_format}
    */
    readonly fileFormat?: string;
    /**
    * The type of the disk.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#interface_type VirtualMachine#interface_type}
    */
    readonly interfaceType: string;
    /**
    * The position of the disk. (0, 1, 2, etc.) This is combined with the `interface_type` to determine the disk name.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#position VirtualMachine#position}
    */
    readonly position: number;
    /**
    * The size of the disk in GiB.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#size VirtualMachine#size}
    */
    readonly size: number;
    /**
    * The speed limits of the disk. If not set, no speed limitations are applied.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#speed_limits VirtualMachine#speed_limits}
    */
    readonly speedLimits?: VirtualMachineDisksSpeedLimits | cdktf.IResolvable;
    /**
    * Whether to use SSD emulation. conflicts with virtio disk type.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#ssd_emulation VirtualMachine#ssd_emulation}
    */
    readonly ssdEmulation?: boolean | cdktf.IResolvable;
    /**
    * The storage the disk is on.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#storage VirtualMachine#storage}
    */
    readonly storage: string;
    /**
    * Whether to use an iothread for the disk.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#use_iothread VirtualMachine#use_iothread}
    */
    readonly useIothread?: boolean | cdktf.IResolvable;
}
export declare function virtualMachineDisksToTerraform(struct?: VirtualMachineDisks | cdktf.IResolvable): any;
export declare class VirtualMachineDisksOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): VirtualMachineDisks | cdktf.IResolvable | undefined;
    set internalValue(value: VirtualMachineDisks | cdktf.IResolvable | undefined);
    private _discard?;
    get discard(): boolean | cdktf.IResolvable;
    set discard(value: boolean | cdktf.IResolvable);
    resetDiscard(): void;
    get discardInput(): boolean | cdktf.IResolvable | undefined;
    private _fileFormat?;
    get fileFormat(): string;
    set fileFormat(value: string);
    resetFileFormat(): void;
    get fileFormatInput(): string | undefined;
    private _interfaceType?;
    get interfaceType(): string;
    set interfaceType(value: string);
    get interfaceTypeInput(): string | undefined;
    get name(): string;
    private _position?;
    get position(): number;
    set position(value: number);
    get positionInput(): number | undefined;
    private _size?;
    get size(): number;
    set size(value: number);
    get sizeInput(): number | undefined;
    private _speedLimits;
    get speedLimits(): VirtualMachineDisksSpeedLimitsOutputReference;
    putSpeedLimits(value: VirtualMachineDisksSpeedLimits | cdktf.IResolvable): void;
    resetSpeedLimits(): void;
    get speedLimitsInput(): cdktf.IResolvable | VirtualMachineDisksSpeedLimits | undefined;
    private _ssdEmulation?;
    get ssdEmulation(): boolean | cdktf.IResolvable;
    set ssdEmulation(value: boolean | cdktf.IResolvable);
    resetSsdEmulation(): void;
    get ssdEmulationInput(): boolean | cdktf.IResolvable | undefined;
    private _storage?;
    get storage(): string;
    set storage(value: string);
    get storageInput(): string | undefined;
    private _useIothread?;
    get useIothread(): boolean | cdktf.IResolvable;
    set useIothread(value: boolean | cdktf.IResolvable);
    resetUseIothread(): void;
    get useIothreadInput(): boolean | cdktf.IResolvable | undefined;
}
export declare class VirtualMachineDisksList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: VirtualMachineDisks[] | cdktf.IResolvable;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): VirtualMachineDisksOutputReference;
}
export interface VirtualMachineIso {
    /**
    * The image to use for install media.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#image VirtualMachine#image}
    */
    readonly image: string;
    /**
    * The storage to place install media on.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#storage VirtualMachine#storage}
    */
    readonly storage: string;
}
export declare function virtualMachineIsoToTerraform(struct?: VirtualMachineIso | cdktf.IResolvable): any;
export declare class VirtualMachineIsoOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): VirtualMachineIso | cdktf.IResolvable | undefined;
    set internalValue(value: VirtualMachineIso | cdktf.IResolvable | undefined);
    private _image?;
    get image(): string;
    set image(value: string);
    get imageInput(): string | undefined;
    private _storage?;
    get storage(): string;
    set storage(value: string);
    get storageInput(): string | undefined;
}
export interface VirtualMachineMemory {
    /**
    * The size of the memory in MB.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#dedicated VirtualMachine#dedicated}
    */
    readonly dedicated?: number;
    /**
    * The floating memory in MB.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#floating VirtualMachine#floating}
    */
    readonly floating?: number;
    /**
    * The shared memory in MB.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#shared VirtualMachine#shared}
    */
    readonly shared?: number;
}
export declare function virtualMachineMemoryToTerraform(struct?: VirtualMachineMemory | cdktf.IResolvable): any;
export declare class VirtualMachineMemoryOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): VirtualMachineMemory | cdktf.IResolvable | undefined;
    set internalValue(value: VirtualMachineMemory | cdktf.IResolvable | undefined);
    private _dedicated?;
    get dedicated(): number;
    set dedicated(value: number);
    resetDedicated(): void;
    get dedicatedInput(): number | undefined;
    private _floating?;
    get floating(): number;
    set floating(value: number);
    resetFloating(): void;
    get floatingInput(): number | undefined;
    private _shared?;
    get shared(): number;
    set shared(value: number);
    resetShared(): void;
    get sharedInput(): number | undefined;
}
export interface VirtualMachineNetworkInterfaces {
    /**
    * The bridge the network interface is on.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#bridge VirtualMachine#bridge}
    */
    readonly bridge: string;
    /**
    * Whether the network interface is enabled.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#enabled VirtualMachine#enabled}
    */
    readonly enabled?: boolean | cdktf.IResolvable;
    /**
    * The MAC address of the network interface.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#mac_address VirtualMachine#mac_address}
    */
    readonly macAddress?: string;
    /**
    * The model of the network interface.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#model VirtualMachine#model}
    */
    readonly model?: string;
    /**
    * The MTU of the network interface. Only valid for virtio.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#mtu VirtualMachine#mtu}
    */
    readonly mtu?: number;
    /**
    * The position of the network interface in the VM as an int. Used to determine the interface name (net0, net1, etc).
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#position VirtualMachine#position}
    */
    readonly position: number;
    /**
    * The rate limit of the network interface in megabytes per second.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#rate_limit VirtualMachine#rate_limit}
    */
    readonly rateLimit?: number;
    /**
    * Whether the firewall for the network interface is enabled.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#use_firewall VirtualMachine#use_firewall}
    */
    readonly useFirewall?: boolean | cdktf.IResolvable;
    /**
    * The VLAN tag of the network interface.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#vlan VirtualMachine#vlan}
    */
    readonly vlan?: number;
}
export declare function virtualMachineNetworkInterfacesToTerraform(struct?: VirtualMachineNetworkInterfaces | cdktf.IResolvable): any;
export declare class VirtualMachineNetworkInterfacesOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): VirtualMachineNetworkInterfaces | cdktf.IResolvable | undefined;
    set internalValue(value: VirtualMachineNetworkInterfaces | cdktf.IResolvable | undefined);
    private _bridge?;
    get bridge(): string;
    set bridge(value: string);
    get bridgeInput(): string | undefined;
    private _enabled?;
    get enabled(): boolean | cdktf.IResolvable;
    set enabled(value: boolean | cdktf.IResolvable);
    resetEnabled(): void;
    get enabledInput(): boolean | cdktf.IResolvable | undefined;
    private _macAddress?;
    get macAddress(): string;
    set macAddress(value: string);
    resetMacAddress(): void;
    get macAddressInput(): string | undefined;
    private _model?;
    get model(): string;
    set model(value: string);
    resetModel(): void;
    get modelInput(): string | undefined;
    private _mtu?;
    get mtu(): number;
    set mtu(value: number);
    resetMtu(): void;
    get mtuInput(): number | undefined;
    private _position?;
    get position(): number;
    set position(value: number);
    get positionInput(): number | undefined;
    private _rateLimit?;
    get rateLimit(): number;
    set rateLimit(value: number);
    resetRateLimit(): void;
    get rateLimitInput(): number | undefined;
    private _useFirewall?;
    get useFirewall(): boolean | cdktf.IResolvable;
    set useFirewall(value: boolean | cdktf.IResolvable);
    resetUseFirewall(): void;
    get useFirewallInput(): boolean | cdktf.IResolvable | undefined;
    private _vlan?;
    get vlan(): number;
    set vlan(value: number);
    resetVlan(): void;
    get vlanInput(): number | undefined;
}
export declare class VirtualMachineNetworkInterfacesList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: VirtualMachineNetworkInterfaces[] | cdktf.IResolvable;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): VirtualMachineNetworkInterfacesOutputReference;
}
export interface VirtualMachinePciDevices {
    /**
    * The device ID of the PCI device.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#id VirtualMachine#id}
    *
    * Please be aware that the id field is automatically added to all resources in Terraform providers using a Terraform provider SDK version below 2.
    * If you experience problems setting this value it might not be settable. Please take a look at the provider documentation to ensure it should be settable.
    */
    readonly id: string;
    /**
    * The mediated device name.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#mdev VirtualMachine#mdev}
    */
    readonly mdev?: string;
    /**
    * The device name of the PCI device.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#name VirtualMachine#name}
    */
    readonly name: string;
    /**
    * Whether the PCI device is PCIe.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#pcie VirtualMachine#pcie}
    */
    readonly pcie?: boolean | cdktf.IResolvable;
    /**
    * Whether the PCI device is the primary GPU.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#primary_gpu VirtualMachine#primary_gpu}
    */
    readonly primaryGpu?: boolean | cdktf.IResolvable;
    /**
    * The relative path to the ROM for the device.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#rom_file VirtualMachine#rom_file}
    */
    readonly romFile?: string;
    /**
    * Make the firmware room visible to the VM.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#rombar VirtualMachine#rombar}
    */
    readonly rombar?: boolean | cdktf.IResolvable;
}
export declare function virtualMachinePciDevicesToTerraform(struct?: VirtualMachinePciDevices | cdktf.IResolvable): any;
export declare class VirtualMachinePciDevicesOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): VirtualMachinePciDevices | cdktf.IResolvable | undefined;
    set internalValue(value: VirtualMachinePciDevices | cdktf.IResolvable | undefined);
    private _id?;
    get id(): string;
    set id(value: string);
    get idInput(): string | undefined;
    private _mdev?;
    get mdev(): string;
    set mdev(value: string);
    resetMdev(): void;
    get mdevInput(): string | undefined;
    private _name?;
    get name(): string;
    set name(value: string);
    get nameInput(): string | undefined;
    private _pcie?;
    get pcie(): boolean | cdktf.IResolvable;
    set pcie(value: boolean | cdktf.IResolvable);
    resetPcie(): void;
    get pcieInput(): boolean | cdktf.IResolvable | undefined;
    private _primaryGpu?;
    get primaryGpu(): boolean | cdktf.IResolvable;
    set primaryGpu(value: boolean | cdktf.IResolvable);
    resetPrimaryGpu(): void;
    get primaryGpuInput(): boolean | cdktf.IResolvable | undefined;
    private _romFile?;
    get romFile(): string;
    set romFile(value: string);
    resetRomFile(): void;
    get romFileInput(): string | undefined;
    private _rombar?;
    get rombar(): boolean | cdktf.IResolvable;
    set rombar(value: boolean | cdktf.IResolvable);
    resetRombar(): void;
    get rombarInput(): boolean | cdktf.IResolvable | undefined;
}
export declare class VirtualMachinePciDevicesList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: VirtualMachinePciDevices[] | cdktf.IResolvable;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): VirtualMachinePciDevicesOutputReference;
}
export interface VirtualMachineTimeouts {
    /**
    * The timeout for cloning the virtual machine.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#clone VirtualMachine#clone}
    */
    readonly clone?: number;
    /**
    * The timeout for configuring the virtual machine.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#configure VirtualMachine#configure}
    */
    readonly configure?: number;
    /**
    * The timeout for creating the virtual machine.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#create VirtualMachine#create}
    */
    readonly create?: number;
    /**
    * The timeout for deleting the virtual machine.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#delete VirtualMachine#delete}
    */
    readonly delete?: number;
    /**
    * The timeout for rebooting the virtual machine.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#reboot VirtualMachine#reboot}
    */
    readonly reboot?: number;
    /**
    * The timeout for resizing disk the virtual machine.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#resize_disk VirtualMachine#resize_disk}
    */
    readonly resizeDisk?: number;
    /**
    * The timeout for shutting down the virtual machine.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#shutdown VirtualMachine#shutdown}
    */
    readonly shutdown?: number;
    /**
    * The timeout for starting the virtual machine.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#start VirtualMachine#start}
    */
    readonly start?: number;
    /**
    * The timeout for stopping the virtual machine.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine#stop VirtualMachine#stop}
    */
    readonly stop?: number;
}
export declare function virtualMachineTimeoutsToTerraform(struct?: VirtualMachineTimeouts | cdktf.IResolvable): any;
export declare class VirtualMachineTimeoutsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): VirtualMachineTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: VirtualMachineTimeouts | cdktf.IResolvable | undefined);
    private _clone?;
    get clone(): number;
    set clone(value: number);
    resetClone(): void;
    get cloneInput(): number | undefined;
    private _configure?;
    get configure(): number;
    set configure(value: number);
    resetConfigure(): void;
    get configureInput(): number | undefined;
    private _create?;
    get create(): number;
    set create(value: number);
    resetCreate(): void;
    get createInput(): number | undefined;
    private _delete?;
    get delete(): number;
    set delete(value: number);
    resetDelete(): void;
    get deleteInput(): number | undefined;
    private _reboot?;
    get reboot(): number;
    set reboot(value: number);
    resetReboot(): void;
    get rebootInput(): number | undefined;
    private _resizeDisk?;
    get resizeDisk(): number;
    set resizeDisk(value: number);
    resetResizeDisk(): void;
    get resizeDiskInput(): number | undefined;
    private _shutdown?;
    get shutdown(): number;
    set shutdown(value: number);
    resetShutdown(): void;
    get shutdownInput(): number | undefined;
    private _start?;
    get start(): number;
    set start(value: number);
    resetStart(): void;
    get startInput(): number | undefined;
    private _stop?;
    get stop(): number;
    set stop(value: number);
    resetStop(): void;
    get stopInput(): number | undefined;
}
/**
* Represents a {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine proxmox_virtual_machine}
*/
export declare class VirtualMachine extends cdktf.TerraformResource {
    static readonly tfResourceType = "proxmox_virtual_machine";
    /**
    * Create a new {@link https://www.terraform.io/docs/providers/proxmox/r/virtual_machine proxmox_virtual_machine} Resource
    *
    * @param scope The scope in which to define this construct
    * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
    * @param options VirtualMachineConfig
    */
    constructor(scope: Construct, id: string, config: VirtualMachineConfig);
    private _agent;
    get agent(): VirtualMachineAgentOutputReference;
    putAgent(value: VirtualMachineAgent | cdktf.IResolvable): void;
    resetAgent(): void;
    get agentInput(): cdktf.IResolvable | VirtualMachineAgent | undefined;
    private _bios?;
    get bios(): string;
    set bios(value: string);
    resetBios(): void;
    get biosInput(): string | undefined;
    private _clone;
    get clone(): VirtualMachineCloneOutputReference;
    putClone(value: VirtualMachineClone | cdktf.IResolvable): void;
    resetClone(): void;
    get cloneInput(): cdktf.IResolvable | VirtualMachineClone | undefined;
    private _cloudInit;
    get cloudInit(): VirtualMachineCloudInitOutputReference;
    putCloudInit(value: VirtualMachineCloudInit | cdktf.IResolvable): void;
    resetCloudInit(): void;
    get cloudInitInput(): cdktf.IResolvable | VirtualMachineCloudInit | undefined;
    private _computedDisks;
    get computedDisks(): VirtualMachineComputedDisksList;
    private _computedNetworkInterfaces;
    get computedNetworkInterfaces(): VirtualMachineComputedNetworkInterfacesList;
    private _computedPciDevices;
    get computedPciDevices(): VirtualMachineComputedPciDevicesList;
    private _cpu;
    get cpu(): VirtualMachineCpuOutputReference;
    putCpu(value: VirtualMachineCpu | cdktf.IResolvable): void;
    resetCpu(): void;
    get cpuInput(): cdktf.IResolvable | VirtualMachineCpu | undefined;
    private _description?;
    get description(): string;
    set description(value: string);
    resetDescription(): void;
    get descriptionInput(): string | undefined;
    private _disks;
    get disks(): VirtualMachineDisksList;
    putDisks(value: VirtualMachineDisks[] | cdktf.IResolvable): void;
    resetDisks(): void;
    get disksInput(): cdktf.IResolvable | VirtualMachineDisks[] | undefined;
    private _id?;
    get id(): number;
    set id(value: number);
    resetId(): void;
    get idInput(): number | undefined;
    private _iso;
    get iso(): VirtualMachineIsoOutputReference;
    putIso(value: VirtualMachineIso | cdktf.IResolvable): void;
    resetIso(): void;
    get isoInput(): cdktf.IResolvable | VirtualMachineIso | undefined;
    private _keyboardLayout?;
    get keyboardLayout(): string;
    set keyboardLayout(value: string);
    resetKeyboardLayout(): void;
    get keyboardLayoutInput(): string | undefined;
    private _kvmArguments?;
    get kvmArguments(): string;
    set kvmArguments(value: string);
    resetKvmArguments(): void;
    get kvmArgumentsInput(): string | undefined;
    private _machineType?;
    get machineType(): string;
    set machineType(value: string);
    resetMachineType(): void;
    get machineTypeInput(): string | undefined;
    private _memory;
    get memory(): VirtualMachineMemoryOutputReference;
    putMemory(value: VirtualMachineMemory | cdktf.IResolvable): void;
    resetMemory(): void;
    get memoryInput(): cdktf.IResolvable | VirtualMachineMemory | undefined;
    private _name?;
    get name(): string;
    set name(value: string);
    resetName(): void;
    get nameInput(): string | undefined;
    private _networkInterfaces;
    get networkInterfaces(): VirtualMachineNetworkInterfacesList;
    putNetworkInterfaces(value: VirtualMachineNetworkInterfaces[] | cdktf.IResolvable): void;
    resetNetworkInterfaces(): void;
    get networkInterfacesInput(): cdktf.IResolvable | VirtualMachineNetworkInterfaces[] | undefined;
    private _node?;
    get nodeAttribute(): string;
    set nodeAttribute(value: string);
    get nodeAttributeInput(): string | undefined;
    private _pciDevices;
    get pciDevices(): VirtualMachinePciDevicesList;
    putPciDevices(value: VirtualMachinePciDevices[] | cdktf.IResolvable): void;
    resetPciDevices(): void;
    get pciDevicesInput(): cdktf.IResolvable | VirtualMachinePciDevices[] | undefined;
    private _resourcePool?;
    get resourcePool(): string;
    set resourcePool(value: string);
    resetResourcePool(): void;
    get resourcePoolInput(): string | undefined;
    private _startOnCreate?;
    get startOnCreate(): boolean | cdktf.IResolvable;
    set startOnCreate(value: boolean | cdktf.IResolvable);
    resetStartOnCreate(): void;
    get startOnCreateInput(): boolean | cdktf.IResolvable | undefined;
    private _startOnNodeBoot?;
    get startOnNodeBoot(): boolean | cdktf.IResolvable;
    set startOnNodeBoot(value: boolean | cdktf.IResolvable);
    resetStartOnNodeBoot(): void;
    get startOnNodeBootInput(): boolean | cdktf.IResolvable | undefined;
    private _tags?;
    get tags(): string[];
    set tags(value: string[]);
    resetTags(): void;
    get tagsInput(): string[] | undefined;
    private _timeouts;
    get timeouts(): VirtualMachineTimeoutsOutputReference;
    putTimeouts(value: VirtualMachineTimeouts | cdktf.IResolvable): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | VirtualMachineTimeouts | undefined;
    private _type?;
    get type(): string;
    set type(value: string);
    resetType(): void;
    get typeInput(): string | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
}
