import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * Creates and manages Scaleway OpenSearch deployments.
 * For more information refer to the [product documentation](https://www.scaleway.com/en/docs/managed-opensearch/).
 *
 * ## Example Usage
 *
 * ### Basic
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as scaleway from "@pulumiverse/scaleway";
 *
 * const main = new scaleway.opensearch.Deployment("main", {
 *     name: "my-opensearch-cluster",
 *     version: "2.0",
 *     nodeCount: 1,
 *     nodeType: "SEARCHDB-SHARED-2C-8G",
 *     password: "ThisIsASecurePassword123!",
 *     volume: {
 *         type: "sbs_5k",
 *         sizeInGb: 5,
 *     },
 * });
 * ```
 *
 * ### Production Setup with High Availability
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as scaleway from "@pulumiverse/scaleway";
 *
 * const prod = new scaleway.opensearch.Deployment("prod", {
 *     name: "logs-prod-cluster",
 *     version: "2.0",
 *     nodeCount: 3,
 *     nodeType: "SEARCHDB-DEDICATED-2C-8G",
 *     password: opensearchPassword,
 *     tags: [
 *         "production",
 *         "logs",
 *     ],
 *     volume: {
 *         type: "sbs_15k",
 *         sizeInGb: 100,
 *     },
 * });
 * export const opensearchUrl = prod.endpoints.apply(endpoints => endpoints[0].services?.[0]?.url);
 * ```
 *
 * ### With Tags for Organization
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as scaleway from "@pulumiverse/scaleway";
 *
 * const analytics = new scaleway.opensearch.Deployment("analytics", {
 *     name: "analytics-cluster",
 *     version: "2.0",
 *     nodeCount: 1,
 *     nodeType: "SEARCHDB-SHARED-4C-16G",
 *     password: opensearchPassword,
 *     tags: [
 *         "analytics",
 *         "dev",
 *         "team-data",
 *     ],
 *     volume: {
 *         type: "sbs_5k",
 *         sizeInGb: 10,
 *     },
 * });
 * ```
 *
 * ### With Private Network
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as scaleway from "@pulumiverse/scaleway";
 *
 * const main = new scaleway.network.Vpc("main", {name: "my-vpc"});
 * const pn = new scaleway.network.PrivateNetwork("pn", {
 *     name: "my-private-network",
 *     vpcId: main.id,
 * });
 * const mainDeployment = new scaleway.opensearch.Deployment("main", {
 *     name: "my-opensearch-cluster",
 *     version: "2.0",
 *     nodeCount: 1,
 *     nodeType: "SEARCHDB-DEDICATED-2C-8G",
 *     password: "ThisIsASecurePassword123!",
 *     privateNetwork: {
 *         privateNetworkId: pn.id,
 *     },
 *     volume: {
 *         type: "sbs_5k",
 *         sizeInGb: 5,
 *     },
 * });
 * ```
 *
 * ## Upgrade Notes
 *
 * ### Changing Resources
 *
 * Most attribute changes require recreating the deployment due to API limitations. Plan accordingly:
 *
 * 1. Create a snapshot of your data (manual process)
 * 2. Modify the `nodeType` in your Terraform configuration
 * 3. Apply the changes (will destroy and recreate)
 * 4. Restore your data from the snapshot
 *
 * ## Import
 *
 * OpenSearch deployments can be imported using the `{region}/{id}`, e.g.
 *
 * ```sh
 * $ pulumi import scaleway:opensearch/deployment:Deployment main fr-par/11111111-1111-1111-1111-111111111111
 * ```
 */
export declare class Deployment extends pulumi.CustomResource {
    /**
     * Get an existing Deployment 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?: DeploymentState, opts?: pulumi.CustomResourceOptions): Deployment;
    /**
     * Returns true if the given object is an instance of Deployment.  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 Deployment;
    /**
     * Date and time of deployment creation (RFC 3339 format).
     */
    readonly createdAt: pulumi.Output<string>;
    /**
     * List of endpoints for accessing the deployment.
     */
    readonly endpoints: pulumi.Output<outputs.opensearch.DeploymentEndpoint[]>;
    /**
     * Name of the OpenSearch deployment. If not specified, a random name will be generated.
     */
    readonly name: pulumi.Output<string>;
    /**
     * Use `nodeCount` instead. Changing this forces recreation of the deployment.
     *
     * @deprecated Please use nodeCount instead
     */
    readonly nodeAmount: pulumi.Output<number | undefined>;
    /**
     * Number of nodes in the cluster. Changing this forces recreation of the deployment.
     */
    readonly nodeCount: pulumi.Output<number | undefined>;
    /**
     * Type of node to use (e.g., "SEARCHDB-SHARED-2C-8G", "SEARCHDB-DEDICATED-2C-8G"). Changing this forces recreation of the deployment.
     */
    readonly nodeType: pulumi.Output<string>;
    /**
     * Password for the OpenSearch user. Must be at least 12 characters long. If not specified, you will need to reset the password through the API or console. Changing this forces recreation of the deployment.
     */
    readonly password: pulumi.Output<string | undefined>;
    /**
     * Private network configuration for the OpenSearch API endpoint. Can be added, updated, or removed on an existing deployment.
     */
    readonly privateNetwork: pulumi.Output<outputs.opensearch.DeploymentPrivateNetwork | undefined>;
    /**
     * `projectId`) The ID of the project the deployment is associated with.
     *
     * > **Note:** Without `privateNetwork`, a public endpoint is created for both the OpenSearch API and Dashboards. With `privateNetwork`, the API is exposed on the private network; OpenSearch Dashboards may still be reachable on a public URL (see `publicDashboardUrl`).
     *
     * > **Important:** The password must be at least 12 characters long. If not provided, you will need to reset it through the Scaleway console or API.
     */
    readonly projectId: pulumi.Output<string>;
    /**
     * URL of OpenSearch Dashboards when served on a **public** endpoint. With a private network for the API, the API endpoint is private but the dashboard may still be reachable at this public URL.
     */
    readonly publicDashboardUrl: pulumi.Output<string>;
    /**
     * `region`) The region in which the deployment should be created.
     */
    readonly region: pulumi.Output<string | undefined>;
    /**
     * The status of the deployment (e.g., "ready", "creating", "upgrading").
     */
    readonly status: pulumi.Output<string>;
    /**
     * List of tags to apply to the deployment.
     */
    readonly tags: pulumi.Output<string[] | undefined>;
    /**
     * Date and time of deployment last update (RFC 3339 format).
     */
    readonly updatedAt: pulumi.Output<string>;
    /**
     * Username for the deployment. If not specified, the default username will be used. Changing this forces recreation of the deployment.
     */
    readonly userName: pulumi.Output<string | undefined>;
    /**
     * OpenSearch version to use (e.g., "2.0"). Changing this forces recreation of the deployment.
     */
    readonly version: pulumi.Output<string>;
    /**
     * Volume configuration for the cluster.
     */
    readonly volume: pulumi.Output<outputs.opensearch.DeploymentVolume | undefined>;
    /**
     * Create a Deployment 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: DeploymentArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering Deployment resources.
 */
export interface DeploymentState {
    /**
     * Date and time of deployment creation (RFC 3339 format).
     */
    createdAt?: pulumi.Input<string | undefined>;
    /**
     * List of endpoints for accessing the deployment.
     */
    endpoints?: pulumi.Input<pulumi.Input<inputs.opensearch.DeploymentEndpoint>[] | undefined>;
    /**
     * Name of the OpenSearch deployment. If not specified, a random name will be generated.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * Use `nodeCount` instead. Changing this forces recreation of the deployment.
     *
     * @deprecated Please use nodeCount instead
     */
    nodeAmount?: pulumi.Input<number | undefined>;
    /**
     * Number of nodes in the cluster. Changing this forces recreation of the deployment.
     */
    nodeCount?: pulumi.Input<number | undefined>;
    /**
     * Type of node to use (e.g., "SEARCHDB-SHARED-2C-8G", "SEARCHDB-DEDICATED-2C-8G"). Changing this forces recreation of the deployment.
     */
    nodeType?: pulumi.Input<string | undefined>;
    /**
     * Password for the OpenSearch user. Must be at least 12 characters long. If not specified, you will need to reset the password through the API or console. Changing this forces recreation of the deployment.
     */
    password?: pulumi.Input<string | undefined>;
    /**
     * Private network configuration for the OpenSearch API endpoint. Can be added, updated, or removed on an existing deployment.
     */
    privateNetwork?: pulumi.Input<inputs.opensearch.DeploymentPrivateNetwork | undefined>;
    /**
     * `projectId`) The ID of the project the deployment is associated with.
     *
     * > **Note:** Without `privateNetwork`, a public endpoint is created for both the OpenSearch API and Dashboards. With `privateNetwork`, the API is exposed on the private network; OpenSearch Dashboards may still be reachable on a public URL (see `publicDashboardUrl`).
     *
     * > **Important:** The password must be at least 12 characters long. If not provided, you will need to reset it through the Scaleway console or API.
     */
    projectId?: pulumi.Input<string | undefined>;
    /**
     * URL of OpenSearch Dashboards when served on a **public** endpoint. With a private network for the API, the API endpoint is private but the dashboard may still be reachable at this public URL.
     */
    publicDashboardUrl?: pulumi.Input<string | undefined>;
    /**
     * `region`) The region in which the deployment should be created.
     */
    region?: pulumi.Input<string | undefined>;
    /**
     * The status of the deployment (e.g., "ready", "creating", "upgrading").
     */
    status?: pulumi.Input<string | undefined>;
    /**
     * List of tags to apply to the deployment.
     */
    tags?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * Date and time of deployment last update (RFC 3339 format).
     */
    updatedAt?: pulumi.Input<string | undefined>;
    /**
     * Username for the deployment. If not specified, the default username will be used. Changing this forces recreation of the deployment.
     */
    userName?: pulumi.Input<string | undefined>;
    /**
     * OpenSearch version to use (e.g., "2.0"). Changing this forces recreation of the deployment.
     */
    version?: pulumi.Input<string | undefined>;
    /**
     * Volume configuration for the cluster.
     */
    volume?: pulumi.Input<inputs.opensearch.DeploymentVolume | undefined>;
}
/**
 * The set of arguments for constructing a Deployment resource.
 */
export interface DeploymentArgs {
    /**
     * Name of the OpenSearch deployment. If not specified, a random name will be generated.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * Use `nodeCount` instead. Changing this forces recreation of the deployment.
     *
     * @deprecated Please use nodeCount instead
     */
    nodeAmount?: pulumi.Input<number | undefined>;
    /**
     * Number of nodes in the cluster. Changing this forces recreation of the deployment.
     */
    nodeCount?: pulumi.Input<number | undefined>;
    /**
     * Type of node to use (e.g., "SEARCHDB-SHARED-2C-8G", "SEARCHDB-DEDICATED-2C-8G"). Changing this forces recreation of the deployment.
     */
    nodeType: pulumi.Input<string>;
    /**
     * Password for the OpenSearch user. Must be at least 12 characters long. If not specified, you will need to reset the password through the API or console. Changing this forces recreation of the deployment.
     */
    password?: pulumi.Input<string | undefined>;
    /**
     * Private network configuration for the OpenSearch API endpoint. Can be added, updated, or removed on an existing deployment.
     */
    privateNetwork?: pulumi.Input<inputs.opensearch.DeploymentPrivateNetwork | undefined>;
    /**
     * `projectId`) The ID of the project the deployment is associated with.
     *
     * > **Note:** Without `privateNetwork`, a public endpoint is created for both the OpenSearch API and Dashboards. With `privateNetwork`, the API is exposed on the private network; OpenSearch Dashboards may still be reachable on a public URL (see `publicDashboardUrl`).
     *
     * > **Important:** The password must be at least 12 characters long. If not provided, you will need to reset it through the Scaleway console or API.
     */
    projectId?: pulumi.Input<string | undefined>;
    /**
     * `region`) The region in which the deployment should be created.
     */
    region?: pulumi.Input<string | undefined>;
    /**
     * List of tags to apply to the deployment.
     */
    tags?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * Username for the deployment. If not specified, the default username will be used. Changing this forces recreation of the deployment.
     */
    userName?: pulumi.Input<string | undefined>;
    /**
     * OpenSearch version to use (e.g., "2.0"). Changing this forces recreation of the deployment.
     */
    version: pulumi.Input<string>;
    /**
     * Volume configuration for the cluster.
     */
    volume?: pulumi.Input<inputs.opensearch.DeploymentVolume | undefined>;
}
//# sourceMappingURL=deployment.d.ts.map