import * as pulumi from "@pulumi/pulumi";
/**
 * From the [official documentation](https://docs.netbox.dev/en/stable/features/virtualization/#virtual-machines):
 *
 * > A virtual machine is a virtualized compute instance. These behave in NetBox very similarly to device objects, but without any physical attributes. For example, a VM may have interfaces assigned to it with IP addresses and VLANs, however its interfaces cannot be connected via cables (because they are virtual). Each VM may also define its compute, memory, and storage resources as well.
 */
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;
    /**
     * At least one of `siteId` or `clusterId` must be given.
     */
    readonly clusterId: pulumi.Output<number | undefined>;
    readonly comments: pulumi.Output<string | undefined>;
    readonly customFields: pulumi.Output<{
        [key: string]: string;
    } | undefined>;
    readonly description: pulumi.Output<string | undefined>;
    readonly deviceId: pulumi.Output<number | undefined>;
    readonly diskSizeMb: pulumi.Output<number>;
    /**
     * This is best managed through the use of `jsonencode` and a map of settings.
     */
    readonly localContextData: pulumi.Output<string | undefined>;
    readonly memoryMb: pulumi.Output<number | undefined>;
    readonly name: pulumi.Output<string>;
    readonly platformId: pulumi.Output<number | undefined>;
    readonly primaryIpv4: pulumi.Output<number>;
    readonly primaryIpv6: pulumi.Output<number>;
    readonly roleId: pulumi.Output<number | undefined>;
    /**
     * At least one of `siteId` or `clusterId` must be given.
     */
    readonly siteId: pulumi.Output<number | undefined>;
    /**
     * Valid values are `offline`, `active`, `planned`, `staged`, `failed` and `decommissioning`. Defaults to `active`.
     */
    readonly status: pulumi.Output<string | undefined>;
    readonly tags: pulumi.Output<string[] | undefined>;
    readonly tagsAlls: pulumi.Output<string[]>;
    readonly tenantId: pulumi.Output<number | undefined>;
    readonly vcpus: pulumi.Output<number | 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 {
    /**
     * At least one of `siteId` or `clusterId` must be given.
     */
    clusterId?: pulumi.Input<number>;
    comments?: pulumi.Input<string>;
    customFields?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    description?: pulumi.Input<string>;
    deviceId?: pulumi.Input<number>;
    diskSizeMb?: pulumi.Input<number>;
    /**
     * This is best managed through the use of `jsonencode` and a map of settings.
     */
    localContextData?: pulumi.Input<string>;
    memoryMb?: pulumi.Input<number>;
    name?: pulumi.Input<string>;
    platformId?: pulumi.Input<number>;
    primaryIpv4?: pulumi.Input<number>;
    primaryIpv6?: pulumi.Input<number>;
    roleId?: pulumi.Input<number>;
    /**
     * At least one of `siteId` or `clusterId` must be given.
     */
    siteId?: pulumi.Input<number>;
    /**
     * Valid values are `offline`, `active`, `planned`, `staged`, `failed` and `decommissioning`. Defaults to `active`.
     */
    status?: pulumi.Input<string>;
    tags?: pulumi.Input<pulumi.Input<string>[]>;
    tagsAlls?: pulumi.Input<pulumi.Input<string>[]>;
    tenantId?: pulumi.Input<number>;
    vcpus?: pulumi.Input<number>;
}
/**
 * The set of arguments for constructing a VirtualMachine resource.
 */
export interface VirtualMachineArgs {
    /**
     * At least one of `siteId` or `clusterId` must be given.
     */
    clusterId?: pulumi.Input<number>;
    comments?: pulumi.Input<string>;
    customFields?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    description?: pulumi.Input<string>;
    deviceId?: pulumi.Input<number>;
    diskSizeMb?: pulumi.Input<number>;
    /**
     * This is best managed through the use of `jsonencode` and a map of settings.
     */
    localContextData?: pulumi.Input<string>;
    memoryMb?: pulumi.Input<number>;
    name?: pulumi.Input<string>;
    platformId?: pulumi.Input<number>;
    roleId?: pulumi.Input<number>;
    /**
     * At least one of `siteId` or `clusterId` must be given.
     */
    siteId?: pulumi.Input<number>;
    /**
     * Valid values are `offline`, `active`, `planned`, `staged`, `failed` and `decommissioning`. Defaults to `active`.
     */
    status?: pulumi.Input<string>;
    tags?: pulumi.Input<pulumi.Input<string>[]>;
    tenantId?: pulumi.Input<number>;
    vcpus?: pulumi.Input<number>;
}
