import * as pulumi from "@pulumi/pulumi";
import * as inputs from "./types/input";
import * as outputs from "./types/output";
/**
 * Provides a Vultr instance resource. This can be used to create, read, modify, and delete instances on your Vultr account.
 *
 * ## Example Usage
 *
 * Create a new instance:
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as vultr from "@ediri/vultr";
 *
 * const myInstance = new vultr.Instance("myInstance", {
 *     osId: 1743,
 *     plan: "vc2-1c-2gb",
 *     region: "sea",
 * });
 * ```
 *
 * Create a new instance with options:
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as vultr from "@ediri/vultr";
 *
 * const myInstance = new vultr.Instance("myInstance", {
 *     activationEmail: false,
 *     backups: "enabled",
 *     backupsSchedule: {
 *         type: "daily",
 *     },
 *     ddosProtection: true,
 *     disablePublicIpv4: true,
 *     enableIpv6: true,
 *     hostname: "my-instance-hostname",
 *     label: "my-instance-label",
 *     osId: 1743,
 *     plan: "vc2-1c-2gb",
 *     region: "sea",
 *     tags: ["my-instance-tag"],
 * });
 * ```
 *
 * ## Import
 *
 * Instances can be imported using the instance `ID`, e.g.
 *
 * ```sh
 * $ pulumi import vultr:index/instance:Instance my_instance b6a859c5-b299-49dd-8888-b1abbc517d08
 * ```
 */
export declare class Instance extends pulumi.CustomResource {
    /**
     * Get an existing Instance 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?: InstanceState, opts?: pulumi.CustomResourceOptions): Instance;
    /**
     * Returns true if the given object is an instance of Instance.  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 Instance;
    /**
     * Whether an activation email will be sent when the server is ready.
     */
    readonly activationEmail: pulumi.Output<boolean | undefined>;
    /**
     * The server's allowed bandwidth usage in GB.
     */
    readonly allowedBandwidth: pulumi.Output<number>;
    /**
     * The ID of the Vultr application to be installed on the server. [See List Applications](https://www.vultr.com/api/#operation/list-applications)
     */
    readonly appId: pulumi.Output<number>;
    /**
     * A map of user-supplied variable keys and values for Vultr Marketplace apps. [See List Marketplace App Variables](https://www.vultr.com/api/#tag/marketplace/operation/list-marketplace-app-variables)
     */
    readonly appVariables: pulumi.Output<{
        [key: string]: string;
    } | undefined>;
    /**
     * Whether automatic backups will be enabled for this server (these have an extra charge associated with them). Values can be enabled or disabled.
     */
    readonly backups: pulumi.Output<string | undefined>;
    /**
     * A block that defines the way backups should be scheduled. While this is an optional field if `backups` are `enabled` this field is mandatory. The configuration of a `backupsSchedule` is listed below.
     */
    readonly backupsSchedule: pulumi.Output<outputs.InstanceBackupsSchedule | undefined>;
    /**
     * The date the server was added to your Vultr account.
     */
    readonly dateCreated: pulumi.Output<string>;
    /**
     * Whether DDOS protection will be enabled on the server (there is an additional charge for this).
     */
    readonly ddosProtection: pulumi.Output<boolean | undefined>;
    /**
     * The server's default password.
     */
    readonly defaultPassword: pulumi.Output<string>;
    /**
     * Whether the server has a public IPv4 address assigned (only possible with `enableIpv6` set to `true`)
     */
    readonly disablePublicIpv4: pulumi.Output<boolean | undefined>;
    /**
     * The description of the disk(s) on the server.
     */
    readonly disk: pulumi.Output<number>;
    /**
     * Whether the server has IPv6 networking activated.
     */
    readonly enableIpv6: pulumi.Output<boolean | undefined>;
    /**
     * Array of which features are enabled.
     */
    readonly features: pulumi.Output<string[]>;
    /**
     * The ID of the firewall group to assign to the server.
     */
    readonly firewallGroupId: pulumi.Output<string>;
    /**
     * The server's IPv4 gateway.
     */
    readonly gatewayV4: pulumi.Output<string>;
    /**
     * The hostname to assign to the server.
     */
    readonly hostname: pulumi.Output<string>;
    /**
     * The ID of the Vultr marketplace application to be installed on the server. [See List Applications](https://www.vultr.com/api/#operation/list-applications) Note marketplace applications are denoted by type: `marketplace` and you must use the `imageId` not the id.
     */
    readonly imageId: pulumi.Output<string>;
    /**
     * The server's internal IP address.
     */
    readonly internalIp: pulumi.Output<string>;
    /**
     * The ID of the ISO file to be installed on the server. [See List ISO](https://www.vultr.com/api/#operation/list-isos)
     */
    readonly isoId: pulumi.Output<string | undefined>;
    /**
     * The server's current KVM URL. This URL will change periodically. It is not advised to cache this value.
     */
    readonly kvm: pulumi.Output<string>;
    /**
     * A label for the server.
     */
    readonly label: pulumi.Output<string>;
    /**
     * The server's main IP address.
     */
    readonly mainIp: pulumi.Output<string>;
    /**
     * The server's IPv4 netmask.
     */
    readonly netmaskV4: pulumi.Output<string>;
    /**
     * The string description of the operating system installed on the server.
     */
    readonly os: pulumi.Output<string>;
    /**
     * The ID of the operating system to be installed on the server. [See List OS](https://www.vultr.com/api/#operation/list-os)
     */
    readonly osId: pulumi.Output<number>;
    /**
     * The ID of the plan that you want the instance to subscribe to. [See List Plans](https://www.vultr.com/api/#tag/plans)
     */
    readonly plan: pulumi.Output<string>;
    /**
     * Whether the server is powered on or not.
     */
    readonly powerStatus: pulumi.Output<string>;
    /**
     * The amount of memory available on the server in MB.
     */
    readonly ram: pulumi.Output<number>;
    /**
     * The ID of the region that the instance is to be created in. [See List Regions](https://www.vultr.com/api/#operation/list-regions)
     */
    readonly region: pulumi.Output<string>;
    /**
     * ID of the floating IP to use as the main IP of this server.
     */
    readonly reservedIpId: pulumi.Output<string>;
    /**
     * The ID of the startup script you want added to the server.
     */
    readonly scriptId: pulumi.Output<string>;
    /**
     * A more detailed server status (none, locked, installingbooting, isomounting, ok).
     */
    readonly serverStatus: pulumi.Output<string>;
    /**
     * The ID of the Vultr snapshot that the server will restore for the initial installation. [See List Snapshots](https://www.vultr.com/api/#operation/list-snapshots)
     */
    readonly snapshotId: pulumi.Output<string>;
    /**
     * A list of SSH key IDs to apply to the server on install (only valid for Linux/FreeBSD).
     */
    readonly sshKeyIds: pulumi.Output<string[] | undefined>;
    /**
     * The status of the server's subscription.
     */
    readonly status: pulumi.Output<string>;
    /**
     * A list of tags to apply to the instance.
     */
    readonly tags: pulumi.Output<string[] | undefined>;
    /**
     * Generic data store, which some provisioning tools and cloud operating systems use as a configuration file. It is generally consumed only once after an instance has been launched, but individual needs may vary.
     */
    readonly userData: pulumi.Output<string>;
    /**
     * The scheme used for the default user. Possible values are `root` or `limited` (linux servers only).
     */
    readonly userScheme: pulumi.Output<string | undefined>;
    /**
     * The main IPv6 network address.
     */
    readonly v6MainIp: pulumi.Output<string>;
    /**
     * The IPv6 subnet.
     */
    readonly v6Network: pulumi.Output<string>;
    /**
     * The IPv6 network size in bits.
     */
    readonly v6NetworkSize: pulumi.Output<number>;
    /**
     * The number of virtual CPUs available on the server.
     */
    readonly vcpuCount: pulumi.Output<number>;
    /**
     * A list of VPC 2.0 IDs to be attached to the server.
     */
    readonly vpc2Ids: pulumi.Output<string[] | undefined>;
    /**
     * A list of VPC IDs to be attached to the server.
     */
    readonly vpcIds: pulumi.Output<string[]>;
    /**
     * Create a Instance 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: InstanceArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering Instance resources.
 */
export interface InstanceState {
    /**
     * Whether an activation email will be sent when the server is ready.
     */
    activationEmail?: pulumi.Input<boolean>;
    /**
     * The server's allowed bandwidth usage in GB.
     */
    allowedBandwidth?: pulumi.Input<number>;
    /**
     * The ID of the Vultr application to be installed on the server. [See List Applications](https://www.vultr.com/api/#operation/list-applications)
     */
    appId?: pulumi.Input<number>;
    /**
     * A map of user-supplied variable keys and values for Vultr Marketplace apps. [See List Marketplace App Variables](https://www.vultr.com/api/#tag/marketplace/operation/list-marketplace-app-variables)
     */
    appVariables?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    /**
     * Whether automatic backups will be enabled for this server (these have an extra charge associated with them). Values can be enabled or disabled.
     */
    backups?: pulumi.Input<string>;
    /**
     * A block that defines the way backups should be scheduled. While this is an optional field if `backups` are `enabled` this field is mandatory. The configuration of a `backupsSchedule` is listed below.
     */
    backupsSchedule?: pulumi.Input<inputs.InstanceBackupsSchedule>;
    /**
     * The date the server was added to your Vultr account.
     */
    dateCreated?: pulumi.Input<string>;
    /**
     * Whether DDOS protection will be enabled on the server (there is an additional charge for this).
     */
    ddosProtection?: pulumi.Input<boolean>;
    /**
     * The server's default password.
     */
    defaultPassword?: pulumi.Input<string>;
    /**
     * Whether the server has a public IPv4 address assigned (only possible with `enableIpv6` set to `true`)
     */
    disablePublicIpv4?: pulumi.Input<boolean>;
    /**
     * The description of the disk(s) on the server.
     */
    disk?: pulumi.Input<number>;
    /**
     * Whether the server has IPv6 networking activated.
     */
    enableIpv6?: pulumi.Input<boolean>;
    /**
     * Array of which features are enabled.
     */
    features?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * The ID of the firewall group to assign to the server.
     */
    firewallGroupId?: pulumi.Input<string>;
    /**
     * The server's IPv4 gateway.
     */
    gatewayV4?: pulumi.Input<string>;
    /**
     * The hostname to assign to the server.
     */
    hostname?: pulumi.Input<string>;
    /**
     * The ID of the Vultr marketplace application to be installed on the server. [See List Applications](https://www.vultr.com/api/#operation/list-applications) Note marketplace applications are denoted by type: `marketplace` and you must use the `imageId` not the id.
     */
    imageId?: pulumi.Input<string>;
    /**
     * The server's internal IP address.
     */
    internalIp?: pulumi.Input<string>;
    /**
     * The ID of the ISO file to be installed on the server. [See List ISO](https://www.vultr.com/api/#operation/list-isos)
     */
    isoId?: pulumi.Input<string>;
    /**
     * The server's current KVM URL. This URL will change periodically. It is not advised to cache this value.
     */
    kvm?: pulumi.Input<string>;
    /**
     * A label for the server.
     */
    label?: pulumi.Input<string>;
    /**
     * The server's main IP address.
     */
    mainIp?: pulumi.Input<string>;
    /**
     * The server's IPv4 netmask.
     */
    netmaskV4?: pulumi.Input<string>;
    /**
     * The string description of the operating system installed on the server.
     */
    os?: pulumi.Input<string>;
    /**
     * The ID of the operating system to be installed on the server. [See List OS](https://www.vultr.com/api/#operation/list-os)
     */
    osId?: pulumi.Input<number>;
    /**
     * The ID of the plan that you want the instance to subscribe to. [See List Plans](https://www.vultr.com/api/#tag/plans)
     */
    plan?: pulumi.Input<string>;
    /**
     * Whether the server is powered on or not.
     */
    powerStatus?: pulumi.Input<string>;
    /**
     * The amount of memory available on the server in MB.
     */
    ram?: pulumi.Input<number>;
    /**
     * The ID of the region that the instance is to be created in. [See List Regions](https://www.vultr.com/api/#operation/list-regions)
     */
    region?: pulumi.Input<string>;
    /**
     * ID of the floating IP to use as the main IP of this server.
     */
    reservedIpId?: pulumi.Input<string>;
    /**
     * The ID of the startup script you want added to the server.
     */
    scriptId?: pulumi.Input<string>;
    /**
     * A more detailed server status (none, locked, installingbooting, isomounting, ok).
     */
    serverStatus?: pulumi.Input<string>;
    /**
     * The ID of the Vultr snapshot that the server will restore for the initial installation. [See List Snapshots](https://www.vultr.com/api/#operation/list-snapshots)
     */
    snapshotId?: pulumi.Input<string>;
    /**
     * A list of SSH key IDs to apply to the server on install (only valid for Linux/FreeBSD).
     */
    sshKeyIds?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * The status of the server's subscription.
     */
    status?: pulumi.Input<string>;
    /**
     * A list of tags to apply to the instance.
     */
    tags?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Generic data store, which some provisioning tools and cloud operating systems use as a configuration file. It is generally consumed only once after an instance has been launched, but individual needs may vary.
     */
    userData?: pulumi.Input<string>;
    /**
     * The scheme used for the default user. Possible values are `root` or `limited` (linux servers only).
     */
    userScheme?: pulumi.Input<string>;
    /**
     * The main IPv6 network address.
     */
    v6MainIp?: pulumi.Input<string>;
    /**
     * The IPv6 subnet.
     */
    v6Network?: pulumi.Input<string>;
    /**
     * The IPv6 network size in bits.
     */
    v6NetworkSize?: pulumi.Input<number>;
    /**
     * The number of virtual CPUs available on the server.
     */
    vcpuCount?: pulumi.Input<number>;
    /**
     * A list of VPC 2.0 IDs to be attached to the server.
     */
    vpc2Ids?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * A list of VPC IDs to be attached to the server.
     */
    vpcIds?: pulumi.Input<pulumi.Input<string>[]>;
}
/**
 * The set of arguments for constructing a Instance resource.
 */
export interface InstanceArgs {
    /**
     * Whether an activation email will be sent when the server is ready.
     */
    activationEmail?: pulumi.Input<boolean>;
    /**
     * The ID of the Vultr application to be installed on the server. [See List Applications](https://www.vultr.com/api/#operation/list-applications)
     */
    appId?: pulumi.Input<number>;
    /**
     * A map of user-supplied variable keys and values for Vultr Marketplace apps. [See List Marketplace App Variables](https://www.vultr.com/api/#tag/marketplace/operation/list-marketplace-app-variables)
     */
    appVariables?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    /**
     * Whether automatic backups will be enabled for this server (these have an extra charge associated with them). Values can be enabled or disabled.
     */
    backups?: pulumi.Input<string>;
    /**
     * A block that defines the way backups should be scheduled. While this is an optional field if `backups` are `enabled` this field is mandatory. The configuration of a `backupsSchedule` is listed below.
     */
    backupsSchedule?: pulumi.Input<inputs.InstanceBackupsSchedule>;
    /**
     * Whether DDOS protection will be enabled on the server (there is an additional charge for this).
     */
    ddosProtection?: pulumi.Input<boolean>;
    /**
     * Whether the server has a public IPv4 address assigned (only possible with `enableIpv6` set to `true`)
     */
    disablePublicIpv4?: pulumi.Input<boolean>;
    /**
     * Whether the server has IPv6 networking activated.
     */
    enableIpv6?: pulumi.Input<boolean>;
    /**
     * The ID of the firewall group to assign to the server.
     */
    firewallGroupId?: pulumi.Input<string>;
    /**
     * The hostname to assign to the server.
     */
    hostname?: pulumi.Input<string>;
    /**
     * The ID of the Vultr marketplace application to be installed on the server. [See List Applications](https://www.vultr.com/api/#operation/list-applications) Note marketplace applications are denoted by type: `marketplace` and you must use the `imageId` not the id.
     */
    imageId?: pulumi.Input<string>;
    /**
     * The ID of the ISO file to be installed on the server. [See List ISO](https://www.vultr.com/api/#operation/list-isos)
     */
    isoId?: pulumi.Input<string>;
    /**
     * A label for the server.
     */
    label?: pulumi.Input<string>;
    /**
     * The ID of the operating system to be installed on the server. [See List OS](https://www.vultr.com/api/#operation/list-os)
     */
    osId?: pulumi.Input<number>;
    /**
     * The ID of the plan that you want the instance to subscribe to. [See List Plans](https://www.vultr.com/api/#tag/plans)
     */
    plan: pulumi.Input<string>;
    /**
     * The ID of the region that the instance is to be created in. [See List Regions](https://www.vultr.com/api/#operation/list-regions)
     */
    region: pulumi.Input<string>;
    /**
     * ID of the floating IP to use as the main IP of this server.
     */
    reservedIpId?: pulumi.Input<string>;
    /**
     * The ID of the startup script you want added to the server.
     */
    scriptId?: pulumi.Input<string>;
    /**
     * The ID of the Vultr snapshot that the server will restore for the initial installation. [See List Snapshots](https://www.vultr.com/api/#operation/list-snapshots)
     */
    snapshotId?: pulumi.Input<string>;
    /**
     * A list of SSH key IDs to apply to the server on install (only valid for Linux/FreeBSD).
     */
    sshKeyIds?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * A list of tags to apply to the instance.
     */
    tags?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Generic data store, which some provisioning tools and cloud operating systems use as a configuration file. It is generally consumed only once after an instance has been launched, but individual needs may vary.
     */
    userData?: pulumi.Input<string>;
    /**
     * The scheme used for the default user. Possible values are `root` or `limited` (linux servers only).
     */
    userScheme?: pulumi.Input<string>;
    /**
     * A list of VPC 2.0 IDs to be attached to the server.
     */
    vpc2Ids?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * A list of VPC IDs to be attached to the server.
     */
    vpcIds?: pulumi.Input<pulumi.Input<string>[]>;
}
