import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * Manages a virtual machine.
 *
 * ## High Availability
 *
 * When managing a virtual machine in a multi-node cluster, the VM's HA settings can
 * be managed using the `proxmoxve.HA.HAResource` resource.
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as proxmoxve from "@muhlba91/pulumi-proxmoxve";
 *
 * const ubuntuVmVirtualMachine = new proxmoxve.vm.VirtualMachine("ubuntuVmVirtualMachine", {vmId: 4321});
 * const ubuntuVmHAResource = new proxmoxve.ha.HAResource("ubuntuVmHAResource", {
 *     comment: "Managed by Pulumi",
 *     group: "node1",
 *     resourceId: pulumi.interpolate`vm:${ubuntuVmVirtualMachine.vmId}`,
 *     state: "started",
 * });
 * ```
 *
 * ## Important Notes
 *
 * ### `local-lvm` Datastore
 *
 * The `local-lvm` is the **default datastore** for many configuration blocks, including `initialization` and `tpmState`, which may not seem to be related to "storage".
 * If you do not have `local-lvm` configured in your environment, you may need to explicitly set the `datastoreId` in such blocks to a different value.
 *
 * ### Cloning
 *
 * When cloning an existing virtual machine, whether it's a template or not, the
 * resource will inherit the disks and other configuration from the source VM.
 *
 * *If* you modify any attributes of an existing disk in the clone, you also need to\
 * explicitly provide values for any other attributes that differ from the schema defaults\
 * in the source (e.g., `size`, `discard`, `cache`, `aio`).\
 * Otherwise, the schema defaults will take effect and override the source values.
 *
 * Furthermore, when cloning from one node to a different one, the behavior changes
 * depening on the datastores of the source VM. If at least one non-shared
 * datastore is used, the VM is first cloned to the source node before being
 * migrated to the target node. This circumvents a limitation in the Proxmox clone
 * API.
 *
 * Because the migration step after the clone tries to preserve the used
 * datastores by their name, it may fail if a datastore used in the source VM is
 * not available on the target node (e.g. `local-lvm` is used on the source node in
 * the VM but no `local-lvm` datastore is available on the target node). In this
 * case, it is recommended to set the `datastoreId` argument in the `clone` block
 * to force the migration step to migrate all disks to a specific datastore on the
 * target node. If you need certain disks to be on specific datastores, set
 * the `datastoreId` argument of the disks in the `disks` block to move the disks
 * to the correct datastore after the cloning and migrating succeeded.
 *
 * ## Import
 *
 * Instances can be imported using the `node_name` and the `vm_id`, e.g.,
 *
 * bash
 *
 * ```sh
 * $ pulumi import proxmoxve:VM/virtualMachine:VirtualMachine ubuntu_vm first-node/4321
 * ```
 */
export declare class VirtualMachine extends pulumi.CustomResource {
    /**
     * Get an existing VirtualMachine resource's state with the given name, ID, and optional extra
     * properties used to qualify the lookup.
     *
     * @param name The _unique_ name of the resulting resource.
     * @param id The _unique_ provider ID of the resource to lookup.
     * @param state Any extra arguments used during the lookup.
     * @param opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name: string, id: pulumi.Input<pulumi.ID>, state?: VirtualMachineState, opts?: pulumi.CustomResourceOptions): VirtualMachine;
    /**
     * Returns true if the given object is an instance of VirtualMachine.  This is designed to work even
     * when multiple copies of the Pulumi SDK have been loaded into the same process.
     */
    static isInstance(obj: any): obj is VirtualMachine;
    /**
     * Whether to enable ACPI (defaults to `true`).
     */
    readonly acpi: pulumi.Output<boolean | undefined>;
    /**
     * The QEMU agent configuration.
     */
    readonly agent: pulumi.Output<outputs.VM.VirtualMachineAgent | undefined>;
    /**
     * Secure Encrypted Virtualization (SEV) features by AMD CPUs.
     */
    readonly amdSev: pulumi.Output<outputs.VM.VirtualMachineAmdSev | undefined>;
    /**
     * An audio device.
     */
    readonly audioDevice: pulumi.Output<outputs.VM.VirtualMachineAudioDevice | undefined>;
    /**
     * The BIOS implementation (defaults to `seabios`).
     */
    readonly bios: pulumi.Output<string | undefined>;
    /**
     * Specify a list of devices to boot from in the order
     * they appear in the list (defaults to `[]`).
     */
    readonly bootOrders: pulumi.Output<string[] | undefined>;
    /**
     * The CD-ROM configuration.
     */
    readonly cdrom: pulumi.Output<outputs.VM.VirtualMachineCdrom | undefined>;
    /**
     * The cloning configuration.
     */
    readonly clone: pulumi.Output<outputs.VM.VirtualMachineClone | undefined>;
    /**
     * The CPU configuration.
     */
    readonly cpu: pulumi.Output<outputs.VM.VirtualMachineCpu | undefined>;
    /**
     * The description.
     */
    readonly description: pulumi.Output<string | undefined>;
    /**
     * A disk (multiple blocks supported).
     */
    readonly disks: pulumi.Output<outputs.VM.VirtualMachineDisk[] | undefined>;
    /**
     * The efi disk device (required if `bios` is set
     * to `ovmf`)
     */
    readonly efiDisk: pulumi.Output<outputs.VM.VirtualMachineEfiDisk | undefined>;
    /**
     * The identifier for a file containing a hook script (needs to be executable, e.g. by using the `proxmox_virtual_environment_file.file_mode` attribute).
     */
    readonly hookScriptFileId: pulumi.Output<string | undefined>;
    /**
     * A host PCI device mapping (multiple blocks supported).
     */
    readonly hostpcis: pulumi.Output<outputs.VM.VirtualMachineHostpci[] | undefined>;
    /**
     * The cloud-init configuration.
     */
    readonly initialization: pulumi.Output<outputs.VM.VirtualMachineInitialization | undefined>;
    /**
     * The IPv4 addresses per network interface published by the
     * QEMU agent (empty list when `agent.enabled` is `false`)
     */
    readonly ipv4Addresses: pulumi.Output<string[][]>;
    /**
     * The IPv6 addresses per network interface published by the
     * QEMU agent (empty list when `agent.enabled` is `false`)
     */
    readonly ipv6Addresses: pulumi.Output<string[][]>;
    /**
     * The keyboard layout (defaults to `en-us`).
     */
    readonly keyboardLayout: pulumi.Output<string | undefined>;
    /**
     * Arbitrary arguments passed to kvm.
     */
    readonly kvmArguments: pulumi.Output<string | undefined>;
    /**
     * The MAC addresses published by the QEMU agent with fallback
     * to the network device configuration, if the agent is disabled
     */
    readonly macAddresses: pulumi.Output<string[]>;
    /**
     * The VM machine type (defaults to `pc`).
     */
    readonly machine: pulumi.Output<string | undefined>;
    /**
     * The memory configuration.
     */
    readonly memory: pulumi.Output<outputs.VM.VirtualMachineMemory | undefined>;
    /**
     * Migrate the VM on node change instead of re-creating
     * it (defaults to `false`).
     */
    readonly migrate: pulumi.Output<boolean | undefined>;
    /**
     * The virtual machine name.
     */
    readonly name: pulumi.Output<string>;
    /**
     * A network device (multiple blocks supported).
     */
    readonly networkDevices: pulumi.Output<outputs.VM.VirtualMachineNetworkDevice[]>;
    /**
     * The network interface names published by the QEMU
     * agent (empty list when `agent.enabled` is `false`)
     */
    readonly networkInterfaceNames: pulumi.Output<string[]>;
    /**
     * The name of the node to assign the virtual machine
     * to.
     */
    readonly nodeName: pulumi.Output<string>;
    /**
     * The NUMA configuration.
     */
    readonly numas: pulumi.Output<outputs.VM.VirtualMachineNuma[] | undefined>;
    /**
     * Specifies whether a VM will be started during system
     * boot. (defaults to `true`)
     */
    readonly onBoot: pulumi.Output<boolean | undefined>;
    /**
     * The Operating System configuration.
     */
    readonly operatingSystem: pulumi.Output<outputs.VM.VirtualMachineOperatingSystem | undefined>;
    /**
     * The identifier for a pool to assign the virtual machine to.
     */
    readonly poolId: pulumi.Output<string | undefined>;
    /**
     * Sets the protection flag of the VM. This will disable the remove VM and remove disk operations (defaults to `false`).
     */
    readonly protection: pulumi.Output<boolean | undefined>;
    /**
     * Reboot the VM after initial creation (defaults to `false`).
     */
    readonly reboot: pulumi.Output<boolean | undefined>;
    /**
     * Reboot the VM after update if needed (defaults to `true`).
     */
    readonly rebootAfterUpdate: pulumi.Output<boolean | undefined>;
    /**
     * The random number generator configuration. Can only be set by `root@pam.`
     */
    readonly rngs: pulumi.Output<outputs.VM.VirtualMachineRng[] | undefined>;
    /**
     * The SCSI hardware type (defaults to
     * `virtio-scsi-pci`).
     */
    readonly scsiHardware: pulumi.Output<string | undefined>;
    /**
     * A serial device (multiple blocks supported).
     */
    readonly serialDevices: pulumi.Output<outputs.VM.VirtualMachineSerialDevice[] | undefined>;
    /**
     * The SMBIOS (type1) settings for the VM.
     */
    readonly smbios: pulumi.Output<outputs.VM.VirtualMachineSmbios | undefined>;
    /**
     * Whether to start the virtual machine (defaults
     * to `true`).
     */
    readonly started: pulumi.Output<boolean | undefined>;
    /**
     * Defines startup and shutdown behavior of the VM.
     */
    readonly startup: pulumi.Output<outputs.VM.VirtualMachineStartup | undefined>;
    /**
     * Whether to stop rather than shutdown on VM destroy (defaults to `false`)
     */
    readonly stopOnDestroy: pulumi.Output<boolean | undefined>;
    /**
     * Whether to enable the USB tablet device (defaults
     * to `true`).
     */
    readonly tabletDevice: pulumi.Output<boolean | undefined>;
    /**
     * A list of tags of the VM. This is only meta information (
     * defaults to `[]`). Note: Proxmox always sorts the VM tags. If the list in
     * template is not sorted, then Proxmox will always report a difference on the
     * resource. You may use the `ignoreChanges` lifecycle meta-argument to ignore
     * changes to this attribute.
     */
    readonly tags: pulumi.Output<string[] | undefined>;
    /**
     * Whether to create a template (defaults to `false`).
     */
    readonly template: pulumi.Output<boolean | undefined>;
    /**
     * Timeout for cloning a VM in seconds (defaults to
     * 1800).
     */
    readonly timeoutClone: pulumi.Output<number | undefined>;
    /**
     * Timeout for creating a VM in seconds (defaults to
     * 1800).
     */
    readonly timeoutCreate: pulumi.Output<number | undefined>;
    /**
     * Timeout for migrating the VM (defaults to
     * 1800).
     */
    readonly timeoutMigrate: pulumi.Output<number | undefined>;
    /**
     * MoveDisk timeout
     *
     * @deprecated This field is deprecated and will be removed in a future release. An overall operation timeout (timeout_create / timeoutClone / timeout_migrate) is used instead.
     */
    readonly timeoutMoveDisk: pulumi.Output<number | undefined>;
    /**
     * Timeout for rebooting a VM in seconds (defaults
     * to 1800).
     */
    readonly timeoutReboot: pulumi.Output<number | undefined>;
    /**
     * Timeout for shutting down a VM in seconds (
     * defaults to 1800).
     */
    readonly timeoutShutdownVm: pulumi.Output<number | undefined>;
    /**
     * Timeout for starting a VM in seconds (defaults
     * to 1800).
     */
    readonly timeoutStartVm: pulumi.Output<number | undefined>;
    /**
     * Timeout for stopping a VM in seconds (defaults
     * to 300).
     */
    readonly timeoutStopVm: pulumi.Output<number | undefined>;
    /**
     * The TPM state device.
     */
    readonly tpmState: pulumi.Output<outputs.VM.VirtualMachineTpmState | undefined>;
    /**
     * A host USB device mapping (multiple blocks supported).
     */
    readonly usbs: pulumi.Output<outputs.VM.VirtualMachineUsb[] | undefined>;
    /**
     * The VGA configuration.
     */
    readonly vga: pulumi.Output<outputs.VM.VirtualMachineVga>;
    /**
     * Virtiofs share
     */
    readonly virtiofs: pulumi.Output<outputs.VM.VirtualMachineVirtiof[] | undefined>;
    /**
     * The VM identifier.
     */
    readonly vmId: pulumi.Output<number>;
    /**
     * The watchdog configuration. Once enabled (by a guest action), the watchdog must be periodically polled by an agent inside the guest or else the watchdog will reset the guest (or execute the respective action specified).
     */
    readonly watchdog: pulumi.Output<outputs.VM.VirtualMachineWatchdog | undefined>;
    /**
     * Create a VirtualMachine resource with the given unique name, arguments, and options.
     *
     * @param name The _unique_ name of the resource.
     * @param args The arguments to use to populate this resource's properties.
     * @param opts A bag of options that control this resource's behavior.
     */
    constructor(name: string, args: VirtualMachineArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering VirtualMachine resources.
 */
export interface VirtualMachineState {
    /**
     * Whether to enable ACPI (defaults to `true`).
     */
    acpi?: pulumi.Input<boolean>;
    /**
     * The QEMU agent configuration.
     */
    agent?: pulumi.Input<inputs.VM.VirtualMachineAgent>;
    /**
     * Secure Encrypted Virtualization (SEV) features by AMD CPUs.
     */
    amdSev?: pulumi.Input<inputs.VM.VirtualMachineAmdSev>;
    /**
     * An audio device.
     */
    audioDevice?: pulumi.Input<inputs.VM.VirtualMachineAudioDevice>;
    /**
     * The BIOS implementation (defaults to `seabios`).
     */
    bios?: pulumi.Input<string>;
    /**
     * Specify a list of devices to boot from in the order
     * they appear in the list (defaults to `[]`).
     */
    bootOrders?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * The CD-ROM configuration.
     */
    cdrom?: pulumi.Input<inputs.VM.VirtualMachineCdrom>;
    /**
     * The cloning configuration.
     */
    clone?: pulumi.Input<inputs.VM.VirtualMachineClone>;
    /**
     * The CPU configuration.
     */
    cpu?: pulumi.Input<inputs.VM.VirtualMachineCpu>;
    /**
     * The description.
     */
    description?: pulumi.Input<string>;
    /**
     * A disk (multiple blocks supported).
     */
    disks?: pulumi.Input<pulumi.Input<inputs.VM.VirtualMachineDisk>[]>;
    /**
     * The efi disk device (required if `bios` is set
     * to `ovmf`)
     */
    efiDisk?: pulumi.Input<inputs.VM.VirtualMachineEfiDisk>;
    /**
     * The identifier for a file containing a hook script (needs to be executable, e.g. by using the `proxmox_virtual_environment_file.file_mode` attribute).
     */
    hookScriptFileId?: pulumi.Input<string>;
    /**
     * A host PCI device mapping (multiple blocks supported).
     */
    hostpcis?: pulumi.Input<pulumi.Input<inputs.VM.VirtualMachineHostpci>[]>;
    /**
     * The cloud-init configuration.
     */
    initialization?: pulumi.Input<inputs.VM.VirtualMachineInitialization>;
    /**
     * The IPv4 addresses per network interface published by the
     * QEMU agent (empty list when `agent.enabled` is `false`)
     */
    ipv4Addresses?: pulumi.Input<pulumi.Input<pulumi.Input<string>[]>[]>;
    /**
     * The IPv6 addresses per network interface published by the
     * QEMU agent (empty list when `agent.enabled` is `false`)
     */
    ipv6Addresses?: pulumi.Input<pulumi.Input<pulumi.Input<string>[]>[]>;
    /**
     * The keyboard layout (defaults to `en-us`).
     */
    keyboardLayout?: pulumi.Input<string>;
    /**
     * Arbitrary arguments passed to kvm.
     */
    kvmArguments?: pulumi.Input<string>;
    /**
     * The MAC addresses published by the QEMU agent with fallback
     * to the network device configuration, if the agent is disabled
     */
    macAddresses?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * The VM machine type (defaults to `pc`).
     */
    machine?: pulumi.Input<string>;
    /**
     * The memory configuration.
     */
    memory?: pulumi.Input<inputs.VM.VirtualMachineMemory>;
    /**
     * Migrate the VM on node change instead of re-creating
     * it (defaults to `false`).
     */
    migrate?: pulumi.Input<boolean>;
    /**
     * The virtual machine name.
     */
    name?: pulumi.Input<string>;
    /**
     * A network device (multiple blocks supported).
     */
    networkDevices?: pulumi.Input<pulumi.Input<inputs.VM.VirtualMachineNetworkDevice>[]>;
    /**
     * The network interface names published by the QEMU
     * agent (empty list when `agent.enabled` is `false`)
     */
    networkInterfaceNames?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * The name of the node to assign the virtual machine
     * to.
     */
    nodeName?: pulumi.Input<string>;
    /**
     * The NUMA configuration.
     */
    numas?: pulumi.Input<pulumi.Input<inputs.VM.VirtualMachineNuma>[]>;
    /**
     * Specifies whether a VM will be started during system
     * boot. (defaults to `true`)
     */
    onBoot?: pulumi.Input<boolean>;
    /**
     * The Operating System configuration.
     */
    operatingSystem?: pulumi.Input<inputs.VM.VirtualMachineOperatingSystem>;
    /**
     * The identifier for a pool to assign the virtual machine to.
     */
    poolId?: pulumi.Input<string>;
    /**
     * Sets the protection flag of the VM. This will disable the remove VM and remove disk operations (defaults to `false`).
     */
    protection?: pulumi.Input<boolean>;
    /**
     * Reboot the VM after initial creation (defaults to `false`).
     */
    reboot?: pulumi.Input<boolean>;
    /**
     * Reboot the VM after update if needed (defaults to `true`).
     */
    rebootAfterUpdate?: pulumi.Input<boolean>;
    /**
     * The random number generator configuration. Can only be set by `root@pam.`
     */
    rngs?: pulumi.Input<pulumi.Input<inputs.VM.VirtualMachineRng>[]>;
    /**
     * The SCSI hardware type (defaults to
     * `virtio-scsi-pci`).
     */
    scsiHardware?: pulumi.Input<string>;
    /**
     * A serial device (multiple blocks supported).
     */
    serialDevices?: pulumi.Input<pulumi.Input<inputs.VM.VirtualMachineSerialDevice>[]>;
    /**
     * The SMBIOS (type1) settings for the VM.
     */
    smbios?: pulumi.Input<inputs.VM.VirtualMachineSmbios>;
    /**
     * Whether to start the virtual machine (defaults
     * to `true`).
     */
    started?: pulumi.Input<boolean>;
    /**
     * Defines startup and shutdown behavior of the VM.
     */
    startup?: pulumi.Input<inputs.VM.VirtualMachineStartup>;
    /**
     * Whether to stop rather than shutdown on VM destroy (defaults to `false`)
     */
    stopOnDestroy?: pulumi.Input<boolean>;
    /**
     * Whether to enable the USB tablet device (defaults
     * to `true`).
     */
    tabletDevice?: pulumi.Input<boolean>;
    /**
     * A list of tags of the VM. This is only meta information (
     * defaults to `[]`). Note: Proxmox always sorts the VM tags. If the list in
     * template is not sorted, then Proxmox will always report a difference on the
     * resource. You may use the `ignoreChanges` lifecycle meta-argument to ignore
     * changes to this attribute.
     */
    tags?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Whether to create a template (defaults to `false`).
     */
    template?: pulumi.Input<boolean>;
    /**
     * Timeout for cloning a VM in seconds (defaults to
     * 1800).
     */
    timeoutClone?: pulumi.Input<number>;
    /**
     * Timeout for creating a VM in seconds (defaults to
     * 1800).
     */
    timeoutCreate?: pulumi.Input<number>;
    /**
     * Timeout for migrating the VM (defaults to
     * 1800).
     */
    timeoutMigrate?: pulumi.Input<number>;
    /**
     * MoveDisk timeout
     *
     * @deprecated This field is deprecated and will be removed in a future release. An overall operation timeout (timeout_create / timeoutClone / timeout_migrate) is used instead.
     */
    timeoutMoveDisk?: pulumi.Input<number>;
    /**
     * Timeout for rebooting a VM in seconds (defaults
     * to 1800).
     */
    timeoutReboot?: pulumi.Input<number>;
    /**
     * Timeout for shutting down a VM in seconds (
     * defaults to 1800).
     */
    timeoutShutdownVm?: pulumi.Input<number>;
    /**
     * Timeout for starting a VM in seconds (defaults
     * to 1800).
     */
    timeoutStartVm?: pulumi.Input<number>;
    /**
     * Timeout for stopping a VM in seconds (defaults
     * to 300).
     */
    timeoutStopVm?: pulumi.Input<number>;
    /**
     * The TPM state device.
     */
    tpmState?: pulumi.Input<inputs.VM.VirtualMachineTpmState>;
    /**
     * A host USB device mapping (multiple blocks supported).
     */
    usbs?: pulumi.Input<pulumi.Input<inputs.VM.VirtualMachineUsb>[]>;
    /**
     * The VGA configuration.
     */
    vga?: pulumi.Input<inputs.VM.VirtualMachineVga>;
    /**
     * Virtiofs share
     */
    virtiofs?: pulumi.Input<pulumi.Input<inputs.VM.VirtualMachineVirtiof>[]>;
    /**
     * The VM identifier.
     */
    vmId?: pulumi.Input<number>;
    /**
     * The watchdog configuration. Once enabled (by a guest action), the watchdog must be periodically polled by an agent inside the guest or else the watchdog will reset the guest (or execute the respective action specified).
     */
    watchdog?: pulumi.Input<inputs.VM.VirtualMachineWatchdog>;
}
/**
 * The set of arguments for constructing a VirtualMachine resource.
 */
export interface VirtualMachineArgs {
    /**
     * Whether to enable ACPI (defaults to `true`).
     */
    acpi?: pulumi.Input<boolean>;
    /**
     * The QEMU agent configuration.
     */
    agent?: pulumi.Input<inputs.VM.VirtualMachineAgent>;
    /**
     * Secure Encrypted Virtualization (SEV) features by AMD CPUs.
     */
    amdSev?: pulumi.Input<inputs.VM.VirtualMachineAmdSev>;
    /**
     * An audio device.
     */
    audioDevice?: pulumi.Input<inputs.VM.VirtualMachineAudioDevice>;
    /**
     * The BIOS implementation (defaults to `seabios`).
     */
    bios?: pulumi.Input<string>;
    /**
     * Specify a list of devices to boot from in the order
     * they appear in the list (defaults to `[]`).
     */
    bootOrders?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * The CD-ROM configuration.
     */
    cdrom?: pulumi.Input<inputs.VM.VirtualMachineCdrom>;
    /**
     * The cloning configuration.
     */
    clone?: pulumi.Input<inputs.VM.VirtualMachineClone>;
    /**
     * The CPU configuration.
     */
    cpu?: pulumi.Input<inputs.VM.VirtualMachineCpu>;
    /**
     * The description.
     */
    description?: pulumi.Input<string>;
    /**
     * A disk (multiple blocks supported).
     */
    disks?: pulumi.Input<pulumi.Input<inputs.VM.VirtualMachineDisk>[]>;
    /**
     * The efi disk device (required if `bios` is set
     * to `ovmf`)
     */
    efiDisk?: pulumi.Input<inputs.VM.VirtualMachineEfiDisk>;
    /**
     * The identifier for a file containing a hook script (needs to be executable, e.g. by using the `proxmox_virtual_environment_file.file_mode` attribute).
     */
    hookScriptFileId?: pulumi.Input<string>;
    /**
     * A host PCI device mapping (multiple blocks supported).
     */
    hostpcis?: pulumi.Input<pulumi.Input<inputs.VM.VirtualMachineHostpci>[]>;
    /**
     * The cloud-init configuration.
     */
    initialization?: pulumi.Input<inputs.VM.VirtualMachineInitialization>;
    /**
     * The keyboard layout (defaults to `en-us`).
     */
    keyboardLayout?: pulumi.Input<string>;
    /**
     * Arbitrary arguments passed to kvm.
     */
    kvmArguments?: pulumi.Input<string>;
    /**
     * The MAC addresses published by the QEMU agent with fallback
     * to the network device configuration, if the agent is disabled
     */
    macAddresses?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * The VM machine type (defaults to `pc`).
     */
    machine?: pulumi.Input<string>;
    /**
     * The memory configuration.
     */
    memory?: pulumi.Input<inputs.VM.VirtualMachineMemory>;
    /**
     * Migrate the VM on node change instead of re-creating
     * it (defaults to `false`).
     */
    migrate?: pulumi.Input<boolean>;
    /**
     * The virtual machine name.
     */
    name?: pulumi.Input<string>;
    /**
     * A network device (multiple blocks supported).
     */
    networkDevices?: pulumi.Input<pulumi.Input<inputs.VM.VirtualMachineNetworkDevice>[]>;
    /**
     * The name of the node to assign the virtual machine
     * to.
     */
    nodeName: pulumi.Input<string>;
    /**
     * The NUMA configuration.
     */
    numas?: pulumi.Input<pulumi.Input<inputs.VM.VirtualMachineNuma>[]>;
    /**
     * Specifies whether a VM will be started during system
     * boot. (defaults to `true`)
     */
    onBoot?: pulumi.Input<boolean>;
    /**
     * The Operating System configuration.
     */
    operatingSystem?: pulumi.Input<inputs.VM.VirtualMachineOperatingSystem>;
    /**
     * The identifier for a pool to assign the virtual machine to.
     */
    poolId?: pulumi.Input<string>;
    /**
     * Sets the protection flag of the VM. This will disable the remove VM and remove disk operations (defaults to `false`).
     */
    protection?: pulumi.Input<boolean>;
    /**
     * Reboot the VM after initial creation (defaults to `false`).
     */
    reboot?: pulumi.Input<boolean>;
    /**
     * Reboot the VM after update if needed (defaults to `true`).
     */
    rebootAfterUpdate?: pulumi.Input<boolean>;
    /**
     * The random number generator configuration. Can only be set by `root@pam.`
     */
    rngs?: pulumi.Input<pulumi.Input<inputs.VM.VirtualMachineRng>[]>;
    /**
     * The SCSI hardware type (defaults to
     * `virtio-scsi-pci`).
     */
    scsiHardware?: pulumi.Input<string>;
    /**
     * A serial device (multiple blocks supported).
     */
    serialDevices?: pulumi.Input<pulumi.Input<inputs.VM.VirtualMachineSerialDevice>[]>;
    /**
     * The SMBIOS (type1) settings for the VM.
     */
    smbios?: pulumi.Input<inputs.VM.VirtualMachineSmbios>;
    /**
     * Whether to start the virtual machine (defaults
     * to `true`).
     */
    started?: pulumi.Input<boolean>;
    /**
     * Defines startup and shutdown behavior of the VM.
     */
    startup?: pulumi.Input<inputs.VM.VirtualMachineStartup>;
    /**
     * Whether to stop rather than shutdown on VM destroy (defaults to `false`)
     */
    stopOnDestroy?: pulumi.Input<boolean>;
    /**
     * Whether to enable the USB tablet device (defaults
     * to `true`).
     */
    tabletDevice?: pulumi.Input<boolean>;
    /**
     * A list of tags of the VM. This is only meta information (
     * defaults to `[]`). Note: Proxmox always sorts the VM tags. If the list in
     * template is not sorted, then Proxmox will always report a difference on the
     * resource. You may use the `ignoreChanges` lifecycle meta-argument to ignore
     * changes to this attribute.
     */
    tags?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Whether to create a template (defaults to `false`).
     */
    template?: pulumi.Input<boolean>;
    /**
     * Timeout for cloning a VM in seconds (defaults to
     * 1800).
     */
    timeoutClone?: pulumi.Input<number>;
    /**
     * Timeout for creating a VM in seconds (defaults to
     * 1800).
     */
    timeoutCreate?: pulumi.Input<number>;
    /**
     * Timeout for migrating the VM (defaults to
     * 1800).
     */
    timeoutMigrate?: pulumi.Input<number>;
    /**
     * MoveDisk timeout
     *
     * @deprecated This field is deprecated and will be removed in a future release. An overall operation timeout (timeout_create / timeoutClone / timeout_migrate) is used instead.
     */
    timeoutMoveDisk?: pulumi.Input<number>;
    /**
     * Timeout for rebooting a VM in seconds (defaults
     * to 1800).
     */
    timeoutReboot?: pulumi.Input<number>;
    /**
     * Timeout for shutting down a VM in seconds (
     * defaults to 1800).
     */
    timeoutShutdownVm?: pulumi.Input<number>;
    /**
     * Timeout for starting a VM in seconds (defaults
     * to 1800).
     */
    timeoutStartVm?: pulumi.Input<number>;
    /**
     * Timeout for stopping a VM in seconds (defaults
     * to 300).
     */
    timeoutStopVm?: pulumi.Input<number>;
    /**
     * The TPM state device.
     */
    tpmState?: pulumi.Input<inputs.VM.VirtualMachineTpmState>;
    /**
     * A host USB device mapping (multiple blocks supported).
     */
    usbs?: pulumi.Input<pulumi.Input<inputs.VM.VirtualMachineUsb>[]>;
    /**
     * The VGA configuration.
     */
    vga?: pulumi.Input<inputs.VM.VirtualMachineVga>;
    /**
     * Virtiofs share
     */
    virtiofs?: pulumi.Input<pulumi.Input<inputs.VM.VirtualMachineVirtiof>[]>;
    /**
     * The VM identifier.
     */
    vmId?: pulumi.Input<number>;
    /**
     * The watchdog configuration. Once enabled (by a guest action), the watchdog must be periodically polled by an agent inside the guest or else the watchdog will reset the guest (or execute the respective action specified).
     */
    watchdog?: pulumi.Input<inputs.VM.VirtualMachineWatchdog>;
}
