import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * An isolated set of Cloud Spanner resources on which databases can be
 * hosted.
 *
 * To get more information about Instance, see:
 *
 * * [API documentation](https://cloud.google.com/spanner/docs/reference/rest/v1/projects.instances)
 * * How-to Guides
 *     * [Official Documentation](https://cloud.google.com/spanner/)
 *
 * ## Example Usage
 *
 * ### Spanner Instance Basic
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 *
 * const example = new gcp.spanner.Instance("example", {
 *     config: "regional-us-central1",
 *     displayName: "Test Spanner Instance",
 *     numNodes: 2,
 *     edition: "STANDARD",
 *     defaultBackupScheduleType: "AUTOMATIC",
 *     labels: {
 *         foo: "bar",
 *     },
 * });
 * ```
 * ### Spanner Instance Processing Units
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 *
 * const example = new gcp.spanner.Instance("example", {
 *     config: "regional-us-central1",
 *     displayName: "Test Spanner Instance",
 *     processingUnits: 200,
 *     labels: {
 *         foo: "bar",
 *     },
 * });
 * ```
 * ### Spanner Instance Multi Regional
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 *
 * const example = new gcp.spanner.Instance("example", {
 *     config: "nam-eur-asia1",
 *     displayName: "Multi Regional Instance",
 *     numNodes: 2,
 *     labels: {
 *         foo: "bar",
 *     },
 * });
 * ```
 *
 * ## Import
 *
 * Instance can be imported using any of these accepted formats:
 *
 * * `projects/{{project}}/instances/{{name}}`
 *
 * * `{{project}}/{{name}}`
 *
 * * `{{name}}`
 *
 * When using the `pulumi import` command, Instance can be imported using one of the formats above. For example:
 *
 * ```sh
 * $ pulumi import gcp:spanner/instance:Instance default projects/{{project}}/instances/{{name}}
 * ```
 *
 * ```sh
 * $ pulumi import gcp:spanner/instance:Instance default {{project}}/{{name}}
 * ```
 *
 * ```sh
 * $ pulumi import gcp:spanner/instance:Instance default {{name}}
 * ```
 */
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;
    /**
     * The autoscaling configuration. Autoscaling is enabled if this field is set.
     * When autoscaling is enabled, numNodes and processingUnits are treated as,
     * OUTPUT_ONLY fields and reflect the current compute capacity allocated to
     * the instance.
     * Structure is documented below.
     */
    readonly autoscalingConfig: pulumi.Output<outputs.spanner.InstanceAutoscalingConfig | undefined>;
    /**
     * The name of the instance's configuration (similar but not
     * quite the same as a region) which defines the geographic placement and
     * replication of your databases in this instance. It determines where your data
     * is stored. Values are typically of the form `regional-europe-west1` , `us-central` etc.
     * In order to obtain a valid list please consult the
     * [Configuration section of the docs](https://cloud.google.com/spanner/docs/instances).
     */
    readonly config: pulumi.Output<string>;
    /**
     * Controls the default backup behavior for new databases within the instance.
     * Note that `AUTOMATIC` is not permitted for free instances, as backups and backup schedules are not allowed for free instances.
     * if unset or NONE, no default backup schedule will be created for new databases within the instance.
     * Possible values are: `NONE`, `AUTOMATIC`.
     */
    readonly defaultBackupScheduleType: pulumi.Output<string>;
    /**
     * The descriptive name for this instance as it appears in UIs. Must be
     * unique per project and between 4 and 30 characters in length.
     *
     *
     * - - -
     */
    readonly displayName: pulumi.Output<string>;
    /**
     * The edition selected for this instance. Different editions provide different capabilities at different price points.
     * Possible values are: `EDITION_UNSPECIFIED`, `STANDARD`, `ENTERPRISE`, `ENTERPRISE_PLUS`.
     */
    readonly edition: pulumi.Output<string>;
    /**
     * All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
     */
    readonly effectiveLabels: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * When deleting a spanner instance, this boolean option will delete all backups of this instance.
     * This must be set to true if you created a backup manually in the console.
     */
    readonly forceDestroy: pulumi.Output<boolean | undefined>;
    /**
     * An object containing a list of "key": value pairs.
     * Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }.
     *
     * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
     * Please refer to the field `effectiveLabels` for all of the labels present on the resource.
     */
    readonly labels: pulumi.Output<{
        [key: string]: string;
    } | undefined>;
    /**
     * A unique identifier for the instance, which cannot be changed after
     * the instance is created. The name must be between 6 and 30 characters
     * in length.
     * If not provided, a random string starting with `tf-` will be selected.
     */
    readonly name: pulumi.Output<string>;
    readonly numNodes: pulumi.Output<number>;
    readonly processingUnits: pulumi.Output<number>;
    /**
     * The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     */
    readonly project: pulumi.Output<string>;
    /**
     * The combination of labels configured directly on the resource
     * and default labels configured on the provider.
     */
    readonly pulumiLabels: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * Instance status: `CREATING` or `READY`.
     */
    readonly state: 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 {
    /**
     * The autoscaling configuration. Autoscaling is enabled if this field is set.
     * When autoscaling is enabled, numNodes and processingUnits are treated as,
     * OUTPUT_ONLY fields and reflect the current compute capacity allocated to
     * the instance.
     * Structure is documented below.
     */
    autoscalingConfig?: pulumi.Input<inputs.spanner.InstanceAutoscalingConfig>;
    /**
     * The name of the instance's configuration (similar but not
     * quite the same as a region) which defines the geographic placement and
     * replication of your databases in this instance. It determines where your data
     * is stored. Values are typically of the form `regional-europe-west1` , `us-central` etc.
     * In order to obtain a valid list please consult the
     * [Configuration section of the docs](https://cloud.google.com/spanner/docs/instances).
     */
    config?: pulumi.Input<string>;
    /**
     * Controls the default backup behavior for new databases within the instance.
     * Note that `AUTOMATIC` is not permitted for free instances, as backups and backup schedules are not allowed for free instances.
     * if unset or NONE, no default backup schedule will be created for new databases within the instance.
     * Possible values are: `NONE`, `AUTOMATIC`.
     */
    defaultBackupScheduleType?: pulumi.Input<string>;
    /**
     * The descriptive name for this instance as it appears in UIs. Must be
     * unique per project and between 4 and 30 characters in length.
     *
     *
     * - - -
     */
    displayName?: pulumi.Input<string>;
    /**
     * The edition selected for this instance. Different editions provide different capabilities at different price points.
     * Possible values are: `EDITION_UNSPECIFIED`, `STANDARD`, `ENTERPRISE`, `ENTERPRISE_PLUS`.
     */
    edition?: pulumi.Input<string>;
    /**
     * All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
     */
    effectiveLabels?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    /**
     * When deleting a spanner instance, this boolean option will delete all backups of this instance.
     * This must be set to true if you created a backup manually in the console.
     */
    forceDestroy?: pulumi.Input<boolean>;
    /**
     * An object containing a list of "key": value pairs.
     * Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }.
     *
     * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
     * Please refer to the field `effectiveLabels` for all of the labels present on the resource.
     */
    labels?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    /**
     * A unique identifier for the instance, which cannot be changed after
     * the instance is created. The name must be between 6 and 30 characters
     * in length.
     * If not provided, a random string starting with `tf-` will be selected.
     */
    name?: pulumi.Input<string>;
    numNodes?: pulumi.Input<number>;
    processingUnits?: pulumi.Input<number>;
    /**
     * The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     */
    project?: pulumi.Input<string>;
    /**
     * The combination of labels configured directly on the resource
     * and default labels configured on the provider.
     */
    pulumiLabels?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    /**
     * Instance status: `CREATING` or `READY`.
     */
    state?: pulumi.Input<string>;
}
/**
 * The set of arguments for constructing a Instance resource.
 */
export interface InstanceArgs {
    /**
     * The autoscaling configuration. Autoscaling is enabled if this field is set.
     * When autoscaling is enabled, numNodes and processingUnits are treated as,
     * OUTPUT_ONLY fields and reflect the current compute capacity allocated to
     * the instance.
     * Structure is documented below.
     */
    autoscalingConfig?: pulumi.Input<inputs.spanner.InstanceAutoscalingConfig>;
    /**
     * The name of the instance's configuration (similar but not
     * quite the same as a region) which defines the geographic placement and
     * replication of your databases in this instance. It determines where your data
     * is stored. Values are typically of the form `regional-europe-west1` , `us-central` etc.
     * In order to obtain a valid list please consult the
     * [Configuration section of the docs](https://cloud.google.com/spanner/docs/instances).
     */
    config: pulumi.Input<string>;
    /**
     * Controls the default backup behavior for new databases within the instance.
     * Note that `AUTOMATIC` is not permitted for free instances, as backups and backup schedules are not allowed for free instances.
     * if unset or NONE, no default backup schedule will be created for new databases within the instance.
     * Possible values are: `NONE`, `AUTOMATIC`.
     */
    defaultBackupScheduleType?: pulumi.Input<string>;
    /**
     * The descriptive name for this instance as it appears in UIs. Must be
     * unique per project and between 4 and 30 characters in length.
     *
     *
     * - - -
     */
    displayName: pulumi.Input<string>;
    /**
     * The edition selected for this instance. Different editions provide different capabilities at different price points.
     * Possible values are: `EDITION_UNSPECIFIED`, `STANDARD`, `ENTERPRISE`, `ENTERPRISE_PLUS`.
     */
    edition?: pulumi.Input<string>;
    /**
     * When deleting a spanner instance, this boolean option will delete all backups of this instance.
     * This must be set to true if you created a backup manually in the console.
     */
    forceDestroy?: pulumi.Input<boolean>;
    /**
     * An object containing a list of "key": value pairs.
     * Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }.
     *
     * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
     * Please refer to the field `effectiveLabels` for all of the labels present on the resource.
     */
    labels?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    /**
     * A unique identifier for the instance, which cannot be changed after
     * the instance is created. The name must be between 6 and 30 characters
     * in length.
     * If not provided, a random string starting with `tf-` will be selected.
     */
    name?: pulumi.Input<string>;
    numNodes?: pulumi.Input<number>;
    processingUnits?: pulumi.Input<number>;
    /**
     * The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     */
    project?: pulumi.Input<string>;
}
