import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as volcengine from "@pulumi/volcengine";
 * import * as volcengine from "@volcengine/pulumi";
 *
 * const fooZones = volcengine.ecs.getZones({});
 * // create vpc
 * const fooVpc = new volcengine.vpc.Vpc("fooVpc", {
 *     vpcName: "acc-test-vpc",
 *     cidrBlock: "172.16.0.0/16",
 *     dnsServers: [
 *         "8.8.8.8",
 *         "114.114.114.114",
 *     ],
 *     projectName: "default",
 * });
 * // create subnet
 * const fooSubnet = new volcengine.vpc.Subnet("fooSubnet", {
 *     subnetName: "acc-test-subnet",
 *     cidrBlock: "172.16.0.0/24",
 *     zoneId: fooZones.then(fooZones => fooZones.zones?.[0]?.id),
 *     vpcId: fooVpc.id,
 * });
 * // create mongodb ReplicaSet instance
 * const foo_replica = new volcengine.mongodb.Instance("foo-replica", {
 *     zoneIds: [fooZones.then(fooZones => fooZones.zones?.[0]?.id)],
 *     dbEngineVersion: "MongoDB_4_0",
 *     instanceType: "ReplicaSet",
 *     nodeSpec: "mongo.2c4g",
 *     storageSpaceGb: 100,
 *     subnetId: fooSubnet.id,
 *     instanceName: "acc-test-mongodb-replica",
 *     chargeType: "PostPaid",
 *     superAccountPassword: "93f0cb0614Aab12",
 *     projectName: "default",
 *     tags: [{
 *         key: "k1",
 *         value: "v1",
 *     }],
 *     nodeAvailabilityZones: [{
 *         zoneId: fooZones.then(fooZones => fooZones.zones?.[0]?.id),
 *         nodeNumber: 2,
 *     }],
 * });
 * // create mongodb ShardedCluster instance
 * const foo_sharded = new volcengine.mongodb.Instance("foo-sharded", {
 *     zoneIds: [fooZones.then(fooZones => fooZones.zones?.[0]?.id)],
 *     dbEngineVersion: "MongoDB_4_0",
 *     instanceType: "ShardedCluster",
 *     nodeSpec: "mongo.shard.2c4g",
 *     mongosNodeSpec: "mongo.mongos.2c4g",
 *     mongosNodeNumber: 3,
 *     shardNumber: 3,
 *     configServerNodeSpec: "mongo.config.2c4g",
 *     configServerStorageSpaceGb: 30,
 *     storageSpaceGb: 100,
 *     subnetId: fooSubnet.id,
 *     instanceName: "acc-test-mongodb-sharded",
 *     chargeType: "PostPaid",
 *     superAccountPassword: "93f0cb0614Aab12",
 *     projectName: "default",
 *     tags: [{
 *         key: "k1",
 *         value: "v1",
 *     }],
 *     nodeAvailabilityZones: [{
 *         zoneId: fooZones.then(fooZones => fooZones.zones?.[0]?.id),
 *         nodeNumber: 2,
 *     }],
 * });
 * ```
 *
 * ## Import
 *
 * mongodb instance can be imported using the id, e.g.
 *
 * ```sh
 * $ pulumi import volcengine:mongodb/instance:Instance default mongo-replica-e405f8e2****
 * ```
 */
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 to enable automatic renewal. This parameter is required when the `ChargeType` is `Prepaid`.
     */
    readonly autoRenew: pulumi.Output<boolean>;
    /**
     * The charge type of instance, valid value contains `Prepaid` or `PostPaid`. Default is `PostPaid`.
     */
    readonly chargeType: pulumi.Output<string>;
    /**
     * The config server node spec of shard cluster. Default is `mongo.config.1c2g`. This parameter is only effective when the `InstanceType` is `ShardedCluster`.
     * When importing resources, this attribute will not be imported. If this attribute is set, please use lifecycle and ignoreChanges ignore changes in fields.
     */
    readonly configServerNodeSpec: pulumi.Output<string>;
    /**
     * The config server storage space of shard cluster, Unit: GiB. Default is 20. This parameter is only effective when the `InstanceType` is `ShardedCluster`.
     * When importing resources, this attribute will not be imported. If this attribute is set, please use lifecycle and ignoreChanges ignore changes in fields.
     */
    readonly configServerStorageSpaceGb: pulumi.Output<number>;
    /**
     * The config servers id of the ShardedCluster instance.
     */
    readonly configServersId: pulumi.Output<string>;
    /**
     * The version of db engine, valid value contains `MongoDB_4_0`, `MongoDB_4_2`, `MongoDB_4_4`, `MongoDB_5_0`, `MongoDB_6_0`.
     */
    readonly dbEngineVersion: pulumi.Output<string>;
    /**
     * The instance name.
     */
    readonly instanceName: pulumi.Output<string>;
    /**
     * The type of instance, the valid value contains `ReplicaSet` or `ShardedCluster`. Default is `ReplicaSet`.
     */
    readonly instanceType: pulumi.Output<string>;
    /**
     * The mongos information of the ShardedCluster instance.
     */
    readonly mongos: pulumi.Output<outputs.mongodb.InstanceMongo[]>;
    /**
     * The mongos id of the ShardedCluster instance.
     */
    readonly mongosId: pulumi.Output<string>;
    /**
     * The mongos node number of shard cluster, value range is `2~23`, this parameter is required when the `InstanceType` is `ShardedCluster`.
     */
    readonly mongosNodeNumber: pulumi.Output<number | undefined>;
    /**
     * The mongos node spec of shard cluster, this parameter is required when the `InstanceType` is `ShardedCluster`.
     */
    readonly mongosNodeSpec: pulumi.Output<string | undefined>;
    /**
     * The readonly node of the instance. When importing resources, this attribute will not be imported. If this attribute is set, please use lifecycle and ignoreChanges ignore changes in fields.
     */
    readonly nodeAvailabilityZones: pulumi.Output<outputs.mongodb.InstanceNodeAvailabilityZone[] | undefined>;
    /**
     * The spec of node. When the instanceType is ReplicaSet, this parameter represents the computing node specification of the replica set instance. When the instanceType is ShardedCluster, this parameter represents the specification of the Shard node.
     */
    readonly nodeSpec: pulumi.Output<string>;
    /**
     * The instance purchase duration, the value range is `1~3` when `PeriodUtil` is `Year`, the value range is `1~9` when `PeriodUtil` is `Month`. This parameter is required when the `ChargeType` is `Prepaid`.
     */
    readonly period: pulumi.Output<number>;
    /**
     * The period unit, valid value contains `Year` or `Month`. This parameter is required when the `ChargeType` is `Prepaid`.
     */
    readonly periodUnit: pulumi.Output<string>;
    /**
     * The private endpoint address of instance.
     */
    readonly privateEndpoint: pulumi.Output<string>;
    /**
     * The project name to which the instance belongs.
     */
    readonly projectName: pulumi.Output<string>;
    /**
     * The number of readonly node in instance.
     */
    readonly readOnlyNodeNumber: pulumi.Output<number>;
    /**
     * The number of shards in shard cluster, value range is `2~32`, this parameter is required when the `InstanceType` is `ShardedCluster`.
     */
    readonly shardNumber: pulumi.Output<number | undefined>;
    /**
     * The shards information of the ShardedCluster instance.
     */
    readonly shards: pulumi.Output<outputs.mongodb.InstanceShard[]>;
    /**
     * The total storage space of a replica set instance, or the storage space of a single shard in a sharded cluster. Unit: GiB.
     */
    readonly storageSpaceGb: pulumi.Output<number>;
    /**
     * The subnet id of instance.
     */
    readonly subnetId: pulumi.Output<string>;
    /**
     * The password of database account. When importing resources, this attribute will not be imported. If this attribute is set, please use lifecycle and ignoreChanges ignore changes in fields.
     */
    readonly superAccountPassword: pulumi.Output<string | undefined>;
    /**
     * Tags.
     */
    readonly tags: pulumi.Output<outputs.mongodb.InstanceTag[] | undefined>;
    /**
     * The vpc ID.
     */
    readonly vpcId: pulumi.Output<string>;
    /**
     * This field has been deprecated after version-0.0.156. Please use `zoneIds` to deploy multiple availability zones. The zone ID of instance.
     *
     * @deprecated This field has been deprecated after version-0.0.156. Please use `zoneIds` to deploy multiple availability zones.
     */
    readonly zoneId: pulumi.Output<string>;
    /**
     * The list of zone ids. If you need to deploy multiple availability zones for a newly created instance, you can specify three availability zone IDs at the same time. By default, the first available zone passed in is the primary available zone, and the two available zones passed in afterwards are the backup available zones.
     */
    readonly zoneIds: 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 to enable automatic renewal. This parameter is required when the `ChargeType` is `Prepaid`.
     */
    autoRenew?: pulumi.Input<boolean>;
    /**
     * The charge type of instance, valid value contains `Prepaid` or `PostPaid`. Default is `PostPaid`.
     */
    chargeType?: pulumi.Input<string>;
    /**
     * The config server node spec of shard cluster. Default is `mongo.config.1c2g`. This parameter is only effective when the `InstanceType` is `ShardedCluster`.
     * When importing resources, this attribute will not be imported. If this attribute is set, please use lifecycle and ignoreChanges ignore changes in fields.
     */
    configServerNodeSpec?: pulumi.Input<string>;
    /**
     * The config server storage space of shard cluster, Unit: GiB. Default is 20. This parameter is only effective when the `InstanceType` is `ShardedCluster`.
     * When importing resources, this attribute will not be imported. If this attribute is set, please use lifecycle and ignoreChanges ignore changes in fields.
     */
    configServerStorageSpaceGb?: pulumi.Input<number>;
    /**
     * The config servers id of the ShardedCluster instance.
     */
    configServersId?: pulumi.Input<string>;
    /**
     * The version of db engine, valid value contains `MongoDB_4_0`, `MongoDB_4_2`, `MongoDB_4_4`, `MongoDB_5_0`, `MongoDB_6_0`.
     */
    dbEngineVersion?: pulumi.Input<string>;
    /**
     * The instance name.
     */
    instanceName?: pulumi.Input<string>;
    /**
     * The type of instance, the valid value contains `ReplicaSet` or `ShardedCluster`. Default is `ReplicaSet`.
     */
    instanceType?: pulumi.Input<string>;
    /**
     * The mongos information of the ShardedCluster instance.
     */
    mongos?: pulumi.Input<pulumi.Input<inputs.mongodb.InstanceMongo>[]>;
    /**
     * The mongos id of the ShardedCluster instance.
     */
    mongosId?: pulumi.Input<string>;
    /**
     * The mongos node number of shard cluster, value range is `2~23`, this parameter is required when the `InstanceType` is `ShardedCluster`.
     */
    mongosNodeNumber?: pulumi.Input<number>;
    /**
     * The mongos node spec of shard cluster, this parameter is required when the `InstanceType` is `ShardedCluster`.
     */
    mongosNodeSpec?: pulumi.Input<string>;
    /**
     * The readonly node of the instance. When importing resources, this attribute will not be imported. If this attribute is set, please use lifecycle and ignoreChanges ignore changes in fields.
     */
    nodeAvailabilityZones?: pulumi.Input<pulumi.Input<inputs.mongodb.InstanceNodeAvailabilityZone>[]>;
    /**
     * The spec of node. When the instanceType is ReplicaSet, this parameter represents the computing node specification of the replica set instance. When the instanceType is ShardedCluster, this parameter represents the specification of the Shard node.
     */
    nodeSpec?: pulumi.Input<string>;
    /**
     * The instance purchase duration, the value range is `1~3` when `PeriodUtil` is `Year`, the value range is `1~9` when `PeriodUtil` is `Month`. This parameter is required when the `ChargeType` is `Prepaid`.
     */
    period?: pulumi.Input<number>;
    /**
     * The period unit, valid value contains `Year` or `Month`. This parameter is required when the `ChargeType` is `Prepaid`.
     */
    periodUnit?: pulumi.Input<string>;
    /**
     * The private endpoint address of instance.
     */
    privateEndpoint?: pulumi.Input<string>;
    /**
     * The project name to which the instance belongs.
     */
    projectName?: pulumi.Input<string>;
    /**
     * The number of readonly node in instance.
     */
    readOnlyNodeNumber?: pulumi.Input<number>;
    /**
     * The number of shards in shard cluster, value range is `2~32`, this parameter is required when the `InstanceType` is `ShardedCluster`.
     */
    shardNumber?: pulumi.Input<number>;
    /**
     * The shards information of the ShardedCluster instance.
     */
    shards?: pulumi.Input<pulumi.Input<inputs.mongodb.InstanceShard>[]>;
    /**
     * The total storage space of a replica set instance, or the storage space of a single shard in a sharded cluster. Unit: GiB.
     */
    storageSpaceGb?: pulumi.Input<number>;
    /**
     * The subnet id of instance.
     */
    subnetId?: pulumi.Input<string>;
    /**
     * The password of database account. When importing resources, this attribute will not be imported. If this attribute is set, please use lifecycle and ignoreChanges ignore changes in fields.
     */
    superAccountPassword?: pulumi.Input<string>;
    /**
     * Tags.
     */
    tags?: pulumi.Input<pulumi.Input<inputs.mongodb.InstanceTag>[]>;
    /**
     * The vpc ID.
     */
    vpcId?: pulumi.Input<string>;
    /**
     * This field has been deprecated after version-0.0.156. Please use `zoneIds` to deploy multiple availability zones. The zone ID of instance.
     *
     * @deprecated This field has been deprecated after version-0.0.156. Please use `zoneIds` to deploy multiple availability zones.
     */
    zoneId?: pulumi.Input<string>;
    /**
     * The list of zone ids. If you need to deploy multiple availability zones for a newly created instance, you can specify three availability zone IDs at the same time. By default, the first available zone passed in is the primary available zone, and the two available zones passed in afterwards are the backup available zones.
     */
    zoneIds?: pulumi.Input<pulumi.Input<string>[]>;
}
/**
 * The set of arguments for constructing a Instance resource.
 */
export interface InstanceArgs {
    /**
     * Whether to enable automatic renewal. This parameter is required when the `ChargeType` is `Prepaid`.
     */
    autoRenew?: pulumi.Input<boolean>;
    /**
     * The charge type of instance, valid value contains `Prepaid` or `PostPaid`. Default is `PostPaid`.
     */
    chargeType?: pulumi.Input<string>;
    /**
     * The config server node spec of shard cluster. Default is `mongo.config.1c2g`. This parameter is only effective when the `InstanceType` is `ShardedCluster`.
     * When importing resources, this attribute will not be imported. If this attribute is set, please use lifecycle and ignoreChanges ignore changes in fields.
     */
    configServerNodeSpec?: pulumi.Input<string>;
    /**
     * The config server storage space of shard cluster, Unit: GiB. Default is 20. This parameter is only effective when the `InstanceType` is `ShardedCluster`.
     * When importing resources, this attribute will not be imported. If this attribute is set, please use lifecycle and ignoreChanges ignore changes in fields.
     */
    configServerStorageSpaceGb?: pulumi.Input<number>;
    /**
     * The version of db engine, valid value contains `MongoDB_4_0`, `MongoDB_4_2`, `MongoDB_4_4`, `MongoDB_5_0`, `MongoDB_6_0`.
     */
    dbEngineVersion?: pulumi.Input<string>;
    /**
     * The instance name.
     */
    instanceName?: pulumi.Input<string>;
    /**
     * The type of instance, the valid value contains `ReplicaSet` or `ShardedCluster`. Default is `ReplicaSet`.
     */
    instanceType?: pulumi.Input<string>;
    /**
     * The mongos node number of shard cluster, value range is `2~23`, this parameter is required when the `InstanceType` is `ShardedCluster`.
     */
    mongosNodeNumber?: pulumi.Input<number>;
    /**
     * The mongos node spec of shard cluster, this parameter is required when the `InstanceType` is `ShardedCluster`.
     */
    mongosNodeSpec?: pulumi.Input<string>;
    /**
     * The readonly node of the instance. When importing resources, this attribute will not be imported. If this attribute is set, please use lifecycle and ignoreChanges ignore changes in fields.
     */
    nodeAvailabilityZones?: pulumi.Input<pulumi.Input<inputs.mongodb.InstanceNodeAvailabilityZone>[]>;
    /**
     * The spec of node. When the instanceType is ReplicaSet, this parameter represents the computing node specification of the replica set instance. When the instanceType is ShardedCluster, this parameter represents the specification of the Shard node.
     */
    nodeSpec: pulumi.Input<string>;
    /**
     * The instance purchase duration, the value range is `1~3` when `PeriodUtil` is `Year`, the value range is `1~9` when `PeriodUtil` is `Month`. This parameter is required when the `ChargeType` is `Prepaid`.
     */
    period?: pulumi.Input<number>;
    /**
     * The period unit, valid value contains `Year` or `Month`. This parameter is required when the `ChargeType` is `Prepaid`.
     */
    periodUnit?: pulumi.Input<string>;
    /**
     * The project name to which the instance belongs.
     */
    projectName?: pulumi.Input<string>;
    /**
     * The number of shards in shard cluster, value range is `2~32`, this parameter is required when the `InstanceType` is `ShardedCluster`.
     */
    shardNumber?: pulumi.Input<number>;
    /**
     * The total storage space of a replica set instance, or the storage space of a single shard in a sharded cluster. Unit: GiB.
     */
    storageSpaceGb: pulumi.Input<number>;
    /**
     * The subnet id of instance.
     */
    subnetId: pulumi.Input<string>;
    /**
     * The password of database account. When importing resources, this attribute will not be imported. If this attribute is set, please use lifecycle and ignoreChanges ignore changes in fields.
     */
    superAccountPassword?: pulumi.Input<string>;
    /**
     * Tags.
     */
    tags?: pulumi.Input<pulumi.Input<inputs.mongodb.InstanceTag>[]>;
    /**
     * The vpc ID.
     */
    vpcId?: pulumi.Input<string>;
    /**
     * This field has been deprecated after version-0.0.156. Please use `zoneIds` to deploy multiple availability zones. The zone ID of instance.
     *
     * @deprecated This field has been deprecated after version-0.0.156. Please use `zoneIds` to deploy multiple availability zones.
     */
    zoneId?: pulumi.Input<string>;
    /**
     * The list of zone ids. If you need to deploy multiple availability zones for a newly created instance, you can specify three availability zone IDs at the same time. By default, the first available zone passed in is the primary available zone, and the two available zones passed in afterwards are the backup available zones.
     */
    zoneIds?: pulumi.Input<pulumi.Input<string>[]>;
}
