import * as pulumi from "@pulumi/pulumi";
import * as inputs from "./types/input";
import * as outputs from "./types/output";
/**
 * Creates and manages Scaleway compute Instances. For more information, see the [API documentation](https://www.scaleway.com/en/developers/api/instance/#path-instances-list-all-instances).
 *
 * Please check our [FAQ - Instances](https://www.scaleway.com/en/docs/faq/instances).
 *
 * ## Example Usage
 *
 * ### Basic
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as scaleway from "@pulumiverse/scaleway";
 *
 * const publicIp = new scaleway.instance.Ip("public_ip", {});
 * const web = new scaleway.instance.Server("web", {
 *     type: "DEV1-S",
 *     image: "ubuntu_jammy",
 *     ipId: publicIp.id,
 * });
 * ```
 *
 * ### With additional volumes and tags
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as scaleway from "@pulumiverse/scaleway";
 *
 * const data = new scaleway.block.Volume("data", {
 *     sizeInGb: 100,
 *     iops: 5000,
 * });
 * const web = new scaleway.instance.Server("web", {
 *     type: "DEV1-S",
 *     image: "ubuntu_jammy",
 *     tags: [
 *         "hello",
 *         "public",
 *     ],
 *     rootVolume: {
 *         deleteOnTermination: false,
 *     },
 *     additionalVolumeIds: [data.id],
 * });
 * ```
 *
 * ### With filesystem
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as scaleway from "@pulumiverse/scaleway";
 *
 * const volume = new scaleway.block.Volume("volume", {
 *     iops: 15000,
 *     sizeInGb: 15,
 * });
 * const terraformInstanceFilesystem = new scaleway.FileFilesystem("terraform_instance_filesystem", {
 *     name: "filesystem-instance-terraform",
 *     sizeInGb: 100,
 * });
 * const base = new scaleway.instance.Server("base", {
 *     type: "POP2-HM-2C-16G",
 *     state: "started",
 *     tags: [
 *         "terraform-test",
 *         "scaleway_instance_server",
 *         "state",
 *     ],
 *     rootVolume: {
 *         volumeType: "sbs_volume",
 *         volumeId: volume.id,
 *     },
 *     filesystems: [{
 *         filesystemId: terraformInstanceFilesystem.id,
 *     }],
 * });
 * ```
 *
 * ### With a reserved IP
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as scaleway from "@pulumiverse/scaleway";
 *
 * const ip = new scaleway.instance.Ip("ip", {});
 * const web = new scaleway.instance.Server("web", {
 *     type: "DEV1-S",
 *     image: "f974feac-abae-4365-b988-8ec7d1cec10d",
 *     tags: [
 *         "hello",
 *         "public",
 *     ],
 *     ipId: ip.id,
 * });
 * ```
 *
 * ### With security group
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as scaleway from "@pulumiverse/scaleway";
 *
 * const www = new scaleway.instance.SecurityGroup("www", {
 *     inboundDefaultPolicy: "drop",
 *     outboundDefaultPolicy: "accept",
 *     inboundRules: [
 *         {
 *             action: "accept",
 *             port: 22,
 *             ip: "212.47.225.64",
 *         },
 *         {
 *             action: "accept",
 *             port: 80,
 *         },
 *         {
 *             action: "accept",
 *             port: 443,
 *         },
 *     ],
 *     outboundRules: [{
 *         action: "drop",
 *         ipRange: "10.20.0.0/24",
 *     }],
 * });
 * const web = new scaleway.instance.Server("web", {
 *     type: "DEV1-S",
 *     image: "ubuntu_jammy",
 *     securityGroupId: www.id,
 * });
 * ```
 *
 * ### With private network
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as scaleway from "@pulumiverse/scaleway";
 *
 * const pn01 = new scaleway.network.PrivateNetwork("pn01", {name: "private_network_instance"});
 * const base = new scaleway.instance.Server("base", {
 *     image: "ubuntu_jammy",
 *     type: "DEV1-S",
 *     privateNetworks: [{
 *         pnId: pn01.id,
 *     }],
 * });
 * ```
 *
 * ### Root volume configuration
 *
 * ### Resized block volume with installed image
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as scaleway from "@pulumiverse/scaleway";
 *
 * const image = new scaleway.instance.Server("image", {
 *     type: "PRO2-XXS",
 *     image: "ubuntu_jammy",
 *     rootVolume: {
 *         sizeInGb: 100,
 *     },
 * });
 * ```
 *
 * ### From snapshot
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as scaleway from "@pulumiverse/scaleway";
 *
 * const snapshot = scaleway.block.getSnapshot({
 *     name: "my_snapshot",
 * });
 * const fromSnapshot = new scaleway.block.Volume("from_snapshot", {
 *     snapshotId: snapshot.then(snapshot => snapshot.id),
 *     iops: 5000,
 * });
 * const fromSnapshotServer = new scaleway.instance.Server("from_snapshot", {
 *     type: "PRO2-XXS",
 *     rootVolume: {
 *         volumeId: fromSnapshot.id,
 *         volumeType: "sbs_volume",
 *     },
 * });
 * ```
 *
 * ### Using Scaleway Block Storage (SBS) volume
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as scaleway from "@pulumiverse/scaleway";
 *
 * const server = new scaleway.instance.Server("server", {
 *     type: "PLAY2-MICRO",
 *     image: "ubuntu_jammy",
 *     rootVolume: {
 *         volumeType: "sbs_volume",
 *         sbsIops: 15000,
 *         sizeInGb: 50,
 *     },
 * });
 * ```
 *
 * ## Private Network
 *
 * > **Important:** Updates to `privateNetwork` will recreate a new private network interface.
 *
 * - `pnId` - (Required) The private network ID where to connect.
 * - `macAddress` The private NIC MAC address.
 * - `status` The private NIC state.
 * - `zone` - (Defaults to provider `zone`) The zone in which the server must be created.
 *
 * > **Important:** You can only attach an instance in the same zone as a private network.
 * **Important:** Instance supports a maximum of 8 different private networks.
 *
 * ## Import
 *
 * Instance servers can be imported using the `{zone}/{id}`, e.g.
 *
 * ```sh
 * $ pulumi import scaleway:index/instanceServer:InstanceServer web fr-par-1/11111111-1111-1111-1111-111111111111
 * ```
 *
 * @deprecated scaleway.index/instanceserver.InstanceServer has been deprecated in favor of scaleway.instance/server.Server
 */
export declare class InstanceServer extends pulumi.CustomResource {
    /**
     * Get an existing InstanceServer 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?: InstanceServerState, opts?: pulumi.CustomResourceOptions): InstanceServer;
    /**
     * Returns true if the given object is an instance of InstanceServer.  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 InstanceServer;
    /**
     * The [additional volumes](https://www.scaleway.com/en/developers/api/instance/#path-volume-types-list-volume-types)
     * attached to the server. Updates to this field will trigger a stop/start of the server.
     *
     * > **Important:** If this field contains local volumes, the `state` must be set to `stopped`, otherwise it will fail.
     *
     * > **Important:** If this field contains local volumes, you have to first detach them, in one apply, and then delete the volume in another apply.
     */
    readonly additionalVolumeIds: pulumi.Output<string[] | undefined>;
    /**
     * The ID of the SSH RSA key that will be used to encrypt the initial admin password for OS requiring it.
     * Mandatory for Windows OS. The publicKey value of this key is used to encrypt the admin password.
     * When set to an empty string, it resets this value and adminPasswordEncryptedValue to an empty string so a new password may be generated.
     */
    readonly adminPasswordEncryptionSshKeyId: pulumi.Output<string | undefined>;
    /**
     * The boot Type of the server. Possible values are: `local`, `bootscript` or `rescue`.
     */
    readonly bootType: pulumi.Output<string | undefined>;
    /**
     * ID of the target bootscript (set bootType to bootscript)
     *
     * @deprecated bootscript is not supported anymore.
     */
    readonly bootscriptId: pulumi.Output<string>;
    /**
     * The cloud init script associated with this server
     */
    readonly cloudInit: pulumi.Output<string>;
    /**
     * If true a dynamic IP will be attached to the server.
     */
    readonly enableDynamicIp: pulumi.Output<boolean | undefined>;
    /**
     * List of filesystems attached to the server.
     */
    readonly filesystems: pulumi.Output<outputs.InstanceServerFilesystem[]>;
    /**
     * The UUID or the label of the base image used by the server. You can use [this endpoint](https://www.scaleway.com/en/developers/api/marketplace/#path-marketplace-images-list-marketplace-images)
     * to find either the right `label` or the right local image `ID` for a given `type`. Optional when creating an instance with an existing root volume.
     *
     * You can check the available labels with our [CLI](https://www.scaleway.com/en/docs/compute/instances/api-cli/creating-managing-instances-with-cliv2/). ```scw marketplace image list```
     *
     * To retrieve more information by label please use: ```scw marketplace image get label=<LABEL>```
     *
     * To obtain a local-image UUID from a label, please use: ```scw marketplace local-image list image-label=<LABEL>```
     */
    readonly image: pulumi.Output<string | undefined>;
    /**
     * The ID of the reserved IP that is attached to the server.
     */
    readonly ipId: pulumi.Output<string | undefined>;
    /**
     * List of ID of reserved IPs that are attached to the server. Cannot be used with `ipId`.
     *
     * > `ipId` to `ipIds` migration: if moving the ip from the old `ipId` field to the new `ipIds`, it should not detach the ip.
     */
    readonly ipIds: pulumi.Output<string[] | undefined>;
    /**
     * The name of the server.
     */
    readonly name: pulumi.Output<string>;
    /**
     * The organization ID the server is associated with.
     */
    readonly organizationId: pulumi.Output<string>;
    /**
     * The [placement group](<https://www.scaleway.com/en/developers/api/instance/#path-security-groups-update-a-security-group> the server is attached to.
     *
     * > **Important:** When updating `placementGroupId` the `state` must be set to `stopped`, otherwise it will fail.
     */
    readonly placementGroupId: pulumi.Output<string | undefined>;
    /**
     * (Deprecated) Always false, use instancePlacementGroup resource to known when the placement group policy is respected.
     */
    readonly placementGroupPolicyRespected: pulumi.Output<boolean>;
    /**
     * The list of private IPv4 and IPv6 addresses associated with the resource.
     */
    readonly privateIps: pulumi.Output<outputs.InstanceServerPrivateIp[]>;
    /**
     * The private network associated with the server.
     * Use the `pnId` key to attach a [privateNetwork](https://www.scaleway.com/en/developers/api/instance/#path-private-nics-list-all-private-nics) on your instance.
     */
    readonly privateNetworks: pulumi.Output<outputs.InstanceServerPrivateNetwork[] | undefined>;
    /**
     * `projectId`) The ID of the project the server is associated with.
     */
    readonly projectId: pulumi.Output<string>;
    /**
     * Set to true to activate server protection option.
     */
    readonly protected: pulumi.Output<boolean | undefined>;
    /**
     * The list of public IPs of the server.
     */
    readonly publicIps: pulumi.Output<outputs.InstanceServerPublicIp[]>;
    /**
     * If true, the server will be replaced if `type` is changed. Otherwise, the server will migrate.
     */
    readonly replaceOnTypeChange: pulumi.Output<boolean | undefined>;
    /**
     * Root [volume](https://www.scaleway.com/en/developers/api/instance/#path-volume-types-list-volume-types) attached to the server on creation.
     */
    readonly rootVolume: pulumi.Output<outputs.InstanceServerRootVolume>;
    /**
     * The [security group](https://www.scaleway.com/en/developers/api/instance/#path-security-groups-update-a-security-group9) the server is attached to.
     *
     * > **Important:** If you don't specify a security group, a default one will be created, which won't be tracked by Terraform unless you import it.
     */
    readonly securityGroupId: pulumi.Output<string>;
    /**
     * The state of the server. Possible values are: `started`, `stopped` or `standby`.
     */
    readonly state: pulumi.Output<string>;
    /**
     * The tags associated with the server.
     */
    readonly tags: pulumi.Output<string[] | undefined>;
    /**
     * The commercial type of the server.
     * You find all the available types on the [pricing page](https://www.scaleway.com/en/pricing/).
     * Updates to this field will migrate the server, local storage constraint must be respected. [More info](https://www.scaleway.com/en/docs/compute/instances/api-cli/migrating-instances/).
     * Use `replaceOnTypeChange` to trigger replacement instead of migration.
     *
     * > **Important:** If `type` change and migration occurs, the server will be stopped and changed backed to its original state. It will be started again if it was running.
     */
    readonly type: pulumi.Output<string>;
    /**
     * The user data associated with the server.
     * Use the `cloud-init` key to use [cloud-init](https://cloudinit.readthedocs.io/en/latest/) on your instance.
     * You can define values using:
     * - string
     * - UTF-8 encoded file content using file
     * - Binary files using filebase64.
     */
    readonly userData: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * `zone`) The zone in which the server should be created.
     */
    readonly zone: pulumi.Output<string | undefined>;
    /**
     * Create a InstanceServer 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.
     */
    /** @deprecated scaleway.index/instanceserver.InstanceServer has been deprecated in favor of scaleway.instance/server.Server */
    constructor(name: string, args: InstanceServerArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering InstanceServer resources.
 */
export interface InstanceServerState {
    /**
     * The [additional volumes](https://www.scaleway.com/en/developers/api/instance/#path-volume-types-list-volume-types)
     * attached to the server. Updates to this field will trigger a stop/start of the server.
     *
     * > **Important:** If this field contains local volumes, the `state` must be set to `stopped`, otherwise it will fail.
     *
     * > **Important:** If this field contains local volumes, you have to first detach them, in one apply, and then delete the volume in another apply.
     */
    additionalVolumeIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * The ID of the SSH RSA key that will be used to encrypt the initial admin password for OS requiring it.
     * Mandatory for Windows OS. The publicKey value of this key is used to encrypt the admin password.
     * When set to an empty string, it resets this value and adminPasswordEncryptedValue to an empty string so a new password may be generated.
     */
    adminPasswordEncryptionSshKeyId?: pulumi.Input<string | undefined>;
    /**
     * The boot Type of the server. Possible values are: `local`, `bootscript` or `rescue`.
     */
    bootType?: pulumi.Input<string | undefined>;
    /**
     * ID of the target bootscript (set bootType to bootscript)
     *
     * @deprecated bootscript is not supported anymore.
     */
    bootscriptId?: pulumi.Input<string | undefined>;
    /**
     * The cloud init script associated with this server
     */
    cloudInit?: pulumi.Input<string | undefined>;
    /**
     * If true a dynamic IP will be attached to the server.
     */
    enableDynamicIp?: pulumi.Input<boolean | undefined>;
    /**
     * List of filesystems attached to the server.
     */
    filesystems?: pulumi.Input<pulumi.Input<inputs.InstanceServerFilesystem>[] | undefined>;
    /**
     * The UUID or the label of the base image used by the server. You can use [this endpoint](https://www.scaleway.com/en/developers/api/marketplace/#path-marketplace-images-list-marketplace-images)
     * to find either the right `label` or the right local image `ID` for a given `type`. Optional when creating an instance with an existing root volume.
     *
     * You can check the available labels with our [CLI](https://www.scaleway.com/en/docs/compute/instances/api-cli/creating-managing-instances-with-cliv2/). ```scw marketplace image list```
     *
     * To retrieve more information by label please use: ```scw marketplace image get label=<LABEL>```
     *
     * To obtain a local-image UUID from a label, please use: ```scw marketplace local-image list image-label=<LABEL>```
     */
    image?: pulumi.Input<string | undefined>;
    /**
     * The ID of the reserved IP that is attached to the server.
     */
    ipId?: pulumi.Input<string | undefined>;
    /**
     * List of ID of reserved IPs that are attached to the server. Cannot be used with `ipId`.
     *
     * > `ipId` to `ipIds` migration: if moving the ip from the old `ipId` field to the new `ipIds`, it should not detach the ip.
     */
    ipIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * The name of the server.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * The organization ID the server is associated with.
     */
    organizationId?: pulumi.Input<string | undefined>;
    /**
     * The [placement group](<https://www.scaleway.com/en/developers/api/instance/#path-security-groups-update-a-security-group> the server is attached to.
     *
     * > **Important:** When updating `placementGroupId` the `state` must be set to `stopped`, otherwise it will fail.
     */
    placementGroupId?: pulumi.Input<string | undefined>;
    /**
     * (Deprecated) Always false, use instancePlacementGroup resource to known when the placement group policy is respected.
     */
    placementGroupPolicyRespected?: pulumi.Input<boolean | undefined>;
    /**
     * The list of private IPv4 and IPv6 addresses associated with the resource.
     */
    privateIps?: pulumi.Input<pulumi.Input<inputs.InstanceServerPrivateIp>[] | undefined>;
    /**
     * The private network associated with the server.
     * Use the `pnId` key to attach a [privateNetwork](https://www.scaleway.com/en/developers/api/instance/#path-private-nics-list-all-private-nics) on your instance.
     */
    privateNetworks?: pulumi.Input<pulumi.Input<inputs.InstanceServerPrivateNetwork>[] | undefined>;
    /**
     * `projectId`) The ID of the project the server is associated with.
     */
    projectId?: pulumi.Input<string | undefined>;
    /**
     * Set to true to activate server protection option.
     */
    protected?: pulumi.Input<boolean | undefined>;
    /**
     * The list of public IPs of the server.
     */
    publicIps?: pulumi.Input<pulumi.Input<inputs.InstanceServerPublicIp>[] | undefined>;
    /**
     * If true, the server will be replaced if `type` is changed. Otherwise, the server will migrate.
     */
    replaceOnTypeChange?: pulumi.Input<boolean | undefined>;
    /**
     * Root [volume](https://www.scaleway.com/en/developers/api/instance/#path-volume-types-list-volume-types) attached to the server on creation.
     */
    rootVolume?: pulumi.Input<inputs.InstanceServerRootVolume | undefined>;
    /**
     * The [security group](https://www.scaleway.com/en/developers/api/instance/#path-security-groups-update-a-security-group9) the server is attached to.
     *
     * > **Important:** If you don't specify a security group, a default one will be created, which won't be tracked by Terraform unless you import it.
     */
    securityGroupId?: pulumi.Input<string | undefined>;
    /**
     * The state of the server. Possible values are: `started`, `stopped` or `standby`.
     */
    state?: pulumi.Input<string | undefined>;
    /**
     * The tags associated with the server.
     */
    tags?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * The commercial type of the server.
     * You find all the available types on the [pricing page](https://www.scaleway.com/en/pricing/).
     * Updates to this field will migrate the server, local storage constraint must be respected. [More info](https://www.scaleway.com/en/docs/compute/instances/api-cli/migrating-instances/).
     * Use `replaceOnTypeChange` to trigger replacement instead of migration.
     *
     * > **Important:** If `type` change and migration occurs, the server will be stopped and changed backed to its original state. It will be started again if it was running.
     */
    type?: pulumi.Input<string | undefined>;
    /**
     * The user data associated with the server.
     * Use the `cloud-init` key to use [cloud-init](https://cloudinit.readthedocs.io/en/latest/) on your instance.
     * You can define values using:
     * - string
     * - UTF-8 encoded file content using file
     * - Binary files using filebase64.
     */
    userData?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * `zone`) The zone in which the server should be created.
     */
    zone?: pulumi.Input<string | undefined>;
}
/**
 * The set of arguments for constructing a InstanceServer resource.
 */
export interface InstanceServerArgs {
    /**
     * The [additional volumes](https://www.scaleway.com/en/developers/api/instance/#path-volume-types-list-volume-types)
     * attached to the server. Updates to this field will trigger a stop/start of the server.
     *
     * > **Important:** If this field contains local volumes, the `state` must be set to `stopped`, otherwise it will fail.
     *
     * > **Important:** If this field contains local volumes, you have to first detach them, in one apply, and then delete the volume in another apply.
     */
    additionalVolumeIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * The ID of the SSH RSA key that will be used to encrypt the initial admin password for OS requiring it.
     * Mandatory for Windows OS. The publicKey value of this key is used to encrypt the admin password.
     * When set to an empty string, it resets this value and adminPasswordEncryptedValue to an empty string so a new password may be generated.
     */
    adminPasswordEncryptionSshKeyId?: pulumi.Input<string | undefined>;
    /**
     * The boot Type of the server. Possible values are: `local`, `bootscript` or `rescue`.
     */
    bootType?: pulumi.Input<string | undefined>;
    /**
     * ID of the target bootscript (set bootType to bootscript)
     *
     * @deprecated bootscript is not supported anymore.
     */
    bootscriptId?: pulumi.Input<string | undefined>;
    /**
     * The cloud init script associated with this server
     */
    cloudInit?: pulumi.Input<string | undefined>;
    /**
     * If true a dynamic IP will be attached to the server.
     */
    enableDynamicIp?: pulumi.Input<boolean | undefined>;
    /**
     * List of filesystems attached to the server.
     */
    filesystems?: pulumi.Input<pulumi.Input<inputs.InstanceServerFilesystem>[] | undefined>;
    /**
     * The UUID or the label of the base image used by the server. You can use [this endpoint](https://www.scaleway.com/en/developers/api/marketplace/#path-marketplace-images-list-marketplace-images)
     * to find either the right `label` or the right local image `ID` for a given `type`. Optional when creating an instance with an existing root volume.
     *
     * You can check the available labels with our [CLI](https://www.scaleway.com/en/docs/compute/instances/api-cli/creating-managing-instances-with-cliv2/). ```scw marketplace image list```
     *
     * To retrieve more information by label please use: ```scw marketplace image get label=<LABEL>```
     *
     * To obtain a local-image UUID from a label, please use: ```scw marketplace local-image list image-label=<LABEL>```
     */
    image?: pulumi.Input<string | undefined>;
    /**
     * The ID of the reserved IP that is attached to the server.
     */
    ipId?: pulumi.Input<string | undefined>;
    /**
     * List of ID of reserved IPs that are attached to the server. Cannot be used with `ipId`.
     *
     * > `ipId` to `ipIds` migration: if moving the ip from the old `ipId` field to the new `ipIds`, it should not detach the ip.
     */
    ipIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * The name of the server.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * The [placement group](<https://www.scaleway.com/en/developers/api/instance/#path-security-groups-update-a-security-group> the server is attached to.
     *
     * > **Important:** When updating `placementGroupId` the `state` must be set to `stopped`, otherwise it will fail.
     */
    placementGroupId?: pulumi.Input<string | undefined>;
    /**
     * The list of private IPv4 and IPv6 addresses associated with the resource.
     */
    privateIps?: pulumi.Input<pulumi.Input<inputs.InstanceServerPrivateIp>[] | undefined>;
    /**
     * The private network associated with the server.
     * Use the `pnId` key to attach a [privateNetwork](https://www.scaleway.com/en/developers/api/instance/#path-private-nics-list-all-private-nics) on your instance.
     */
    privateNetworks?: pulumi.Input<pulumi.Input<inputs.InstanceServerPrivateNetwork>[] | undefined>;
    /**
     * `projectId`) The ID of the project the server is associated with.
     */
    projectId?: pulumi.Input<string | undefined>;
    /**
     * Set to true to activate server protection option.
     */
    protected?: pulumi.Input<boolean | undefined>;
    /**
     * The list of public IPs of the server.
     */
    publicIps?: pulumi.Input<pulumi.Input<inputs.InstanceServerPublicIp>[] | undefined>;
    /**
     * If true, the server will be replaced if `type` is changed. Otherwise, the server will migrate.
     */
    replaceOnTypeChange?: pulumi.Input<boolean | undefined>;
    /**
     * Root [volume](https://www.scaleway.com/en/developers/api/instance/#path-volume-types-list-volume-types) attached to the server on creation.
     */
    rootVolume?: pulumi.Input<inputs.InstanceServerRootVolume | undefined>;
    /**
     * The [security group](https://www.scaleway.com/en/developers/api/instance/#path-security-groups-update-a-security-group9) the server is attached to.
     *
     * > **Important:** If you don't specify a security group, a default one will be created, which won't be tracked by Terraform unless you import it.
     */
    securityGroupId?: pulumi.Input<string | undefined>;
    /**
     * The state of the server. Possible values are: `started`, `stopped` or `standby`.
     */
    state?: pulumi.Input<string | undefined>;
    /**
     * The tags associated with the server.
     */
    tags?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * The commercial type of the server.
     * You find all the available types on the [pricing page](https://www.scaleway.com/en/pricing/).
     * Updates to this field will migrate the server, local storage constraint must be respected. [More info](https://www.scaleway.com/en/docs/compute/instances/api-cli/migrating-instances/).
     * Use `replaceOnTypeChange` to trigger replacement instead of migration.
     *
     * > **Important:** If `type` change and migration occurs, the server will be stopped and changed backed to its original state. It will be started again if it was running.
     */
    type: pulumi.Input<string>;
    /**
     * The user data associated with the server.
     * Use the `cloud-init` key to use [cloud-init](https://cloudinit.readthedocs.io/en/latest/) on your instance.
     * You can define values using:
     * - string
     * - UTF-8 encoded file content using file
     * - Binary files using filebase64.
     */
    userData?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * `zone`) The zone in which the server should be created.
     */
    zone?: pulumi.Input<string | undefined>;
}
//# sourceMappingURL=instanceServer.d.ts.map