import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * Manages a CosmosDB (formally DocumentDB) Account.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as azure from "@pulumi/azure";
 * import * as random from "@pulumi/random";
 *
 * const rg = new azure.core.ResourceGroup("rg", {
 *     name: "sample-rg",
 *     location: "westus",
 * });
 * const ri = new random.index.Integer("ri", {
 *     min: 10000,
 *     max: 99999,
 * });
 * const db = new azure.cosmosdb.Account("db", {
 *     name: `tfex-cosmos-db-${ri.result}`,
 *     location: example.location,
 *     resourceGroupName: example.name,
 *     offerType: "Standard",
 *     kind: "MongoDB",
 *     automaticFailoverEnabled: true,
 *     capabilities: [
 *         {
 *             name: "EnableAggregationPipeline",
 *         },
 *         {
 *             name: "mongoEnableDocLevelTTL",
 *         },
 *         {
 *             name: "MongoDBv3.4",
 *         },
 *         {
 *             name: "EnableMongo",
 *         },
 *     ],
 *     consistencyPolicy: {
 *         consistencyLevel: "BoundedStaleness",
 *         maxIntervalInSeconds: 300,
 *         maxStalenessPrefix: 100000,
 *     },
 *     geoLocations: [
 *         {
 *             location: "eastus",
 *             failoverPriority: 1,
 *         },
 *         {
 *             location: "westus",
 *             failoverPriority: 0,
 *         },
 *     ],
 * });
 * ```
 *
 * ## User Assigned Identity Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as azure from "@pulumi/azure";
 * import * as std from "@pulumi/std";
 *
 * const example = new azure.authorization.UserAssignedIdentity("example", {
 *     resourceGroupName: exampleAzurermResourceGroup.name,
 *     location: exampleAzurermResourceGroup.location,
 *     name: "example-resource",
 * });
 * const exampleAccount = new azure.cosmosdb.Account("example", {
 *     name: "example-resource",
 *     location: exampleAzurermResourceGroup.location,
 *     resourceGroupName: exampleAzurermResourceGroup.name,
 *     defaultIdentityType: std.joinOutput({
 *         separator: "=",
 *         input: [
 *             "UserAssignedIdentity",
 *             example.id,
 *         ],
 *     }).apply(invoke => invoke.result),
 *     offerType: "Standard",
 *     kind: "MongoDB",
 *     capabilities: [{
 *         name: "EnableMongo",
 *     }],
 *     consistencyPolicy: {
 *         consistencyLevel: "Strong",
 *     },
 *     geoLocations: [{
 *         location: "westus",
 *         failoverPriority: 0,
 *     }],
 *     identity: {
 *         type: "UserAssigned",
 *         identityIds: [example.id],
 *     },
 * });
 * ```
 * ## API Providers
 *
 * <!-- This section is generated, changes will be overwritten -->
 * This resource uses the following Azure API Providers:
 *
 * * `Microsoft.DocumentDB` - 2024-08-15
 *
 * ## Import
 *
 * CosmosDB Accounts can be imported using the `resource id`, e.g.
 *
 * ```sh
 * $ pulumi import azure:cosmosdb/account:Account account1 /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.DocumentDB/databaseAccounts/account1
 * ```
 */
export declare class Account extends pulumi.CustomResource {
    /**
     * Get an existing Account 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?: AccountState, opts?: pulumi.CustomResourceOptions): Account;
    /**
     * Returns true if the given object is an instance of Account.  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 Account;
    readonly accessKeyMetadataWritesEnabled: pulumi.Output<boolean | undefined>;
    /**
     * An `analyticalStorage` block as defined below.
     */
    readonly analyticalStorage: pulumi.Output<outputs.cosmosdb.AccountAnalyticalStorage>;
    readonly analyticalStorageEnabled: pulumi.Output<boolean | undefined>;
    readonly automaticFailoverEnabled: pulumi.Output<boolean | undefined>;
    readonly backup: pulumi.Output<outputs.cosmosdb.AccountBackup>;
    readonly burstCapacityEnabled: pulumi.Output<boolean | undefined>;
    readonly capabilities: pulumi.Output<outputs.cosmosdb.AccountCapability[]>;
    /**
     * A `capacity` block as defined below.
     */
    readonly capacity: pulumi.Output<outputs.cosmosdb.AccountCapacity>;
    readonly consistencyPolicy: pulumi.Output<outputs.cosmosdb.AccountConsistencyPolicy>;
    readonly corsRule: pulumi.Output<outputs.cosmosdb.AccountCorsRule | undefined>;
    /**
     * The creation mode for the CosmosDB Account. Possible values are `Default` and `Restore`. Changing this forces a new resource to be created.
     *
     * > **Note:** `createMode` can only be defined when the `backup.type` is set to `Continuous`.
     */
    readonly createMode: pulumi.Output<string>;
    /**
     * The default identity for accessing Key Vault. Possible values are `FirstPartyIdentity`, `SystemAssignedIdentity` or `UserAssignedIdentity`. Defaults to `FirstPartyIdentity`.
     */
    readonly defaultIdentityType: pulumi.Output<string | undefined>;
    /**
     * The endpoint used to connect to the CosmosDB account.
     */
    readonly endpoint: pulumi.Output<string>;
    readonly freeTierEnabled: pulumi.Output<boolean | undefined>;
    readonly geoLocations: pulumi.Output<outputs.cosmosdb.AccountGeoLocation[]>;
    readonly identity: pulumi.Output<outputs.cosmosdb.AccountIdentity | undefined>;
    readonly ipRangeFilters: pulumi.Output<string[] | undefined>;
    readonly isVirtualNetworkFilterEnabled: pulumi.Output<boolean | undefined>;
    readonly keyVaultKeyId: pulumi.Output<string | undefined>;
    readonly kind: pulumi.Output<string | undefined>;
    readonly localAuthenticationDisabled: pulumi.Output<boolean | undefined>;
    /**
     * Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created.
     */
    readonly location: pulumi.Output<string>;
    /**
     * @deprecated `managedHsmKeyId` has been deprecated in favour of `keyVaultKeyId` and will be removed in v5.0 of the AzureRM provider
     */
    readonly managedHsmKeyId: pulumi.Output<string | undefined>;
    /**
     * Specifies the minimal TLS version for the CosmosDB account. Possible values are: `Tls`, `Tls11`, and `Tls12`. Defaults to `Tls12`.
     *
     * > **Note:** Azure Services will require TLS 1.2+ by August 2025, please see this [announcement](https://azure.microsoft.com/en-us/updates/v2/update-retirement-tls1-0-tls1-1-versions-azure-services/) for more details.
     */
    readonly minimalTlsVersion: pulumi.Output<string | undefined>;
    readonly mongoServerVersion: pulumi.Output<string>;
    readonly multipleWriteLocationsEnabled: pulumi.Output<boolean | undefined>;
    /**
     * Specifies the name of the CosmosDB Account. Changing this forces a new resource to be created.
     */
    readonly name: pulumi.Output<string>;
    readonly networkAclBypassForAzureServices: pulumi.Output<boolean | undefined>;
    readonly networkAclBypassIds: pulumi.Output<string[] | undefined>;
    /**
     * Specifies the Offer Type to use for this CosmosDB Account; currently, this can only be set to `Standard`.
     */
    readonly offerType: pulumi.Output<string>;
    readonly partitionMergeEnabled: pulumi.Output<boolean | undefined>;
    /**
     * The Primary key for the CosmosDB Account.
     */
    readonly primaryKey: pulumi.Output<string>;
    /**
     * Primary Mongodb connection string for the CosmosDB Account.
     */
    readonly primaryMongodbConnectionString: pulumi.Output<string>;
    /**
     * The Primary read-only Key for the CosmosDB Account.
     */
    readonly primaryReadonlyKey: pulumi.Output<string>;
    /**
     * Primary readonly Mongodb connection string for the CosmosDB Account.
     */
    readonly primaryReadonlyMongodbConnectionString: pulumi.Output<string>;
    /**
     * Primary readonly SQL connection string for the CosmosDB Account.
     */
    readonly primaryReadonlySqlConnectionString: pulumi.Output<string>;
    /**
     * Primary SQL connection string for the CosmosDB Account.
     */
    readonly primarySqlConnectionString: pulumi.Output<string>;
    readonly publicNetworkAccessEnabled: pulumi.Output<boolean | undefined>;
    /**
     * A list of read endpoints available for this CosmosDB account.
     */
    readonly readEndpoints: pulumi.Output<string[]>;
    /**
     * The name of the resource group in which the CosmosDB Account is created. Changing this forces a new resource to be created.
     */
    readonly resourceGroupName: pulumi.Output<string>;
    readonly restore: pulumi.Output<outputs.cosmosdb.AccountRestore | undefined>;
    /**
     * The Secondary key for the CosmosDB Account.
     */
    readonly secondaryKey: pulumi.Output<string>;
    /**
     * Secondary Mongodb connection string for the CosmosDB Account.
     */
    readonly secondaryMongodbConnectionString: pulumi.Output<string>;
    /**
     * The Secondary read-only key for the CosmosDB Account.
     */
    readonly secondaryReadonlyKey: pulumi.Output<string>;
    /**
     * Secondary readonly Mongodb connection string for the CosmosDB Account.
     */
    readonly secondaryReadonlyMongodbConnectionString: pulumi.Output<string>;
    /**
     * Secondary readonly SQL connection string for the CosmosDB Account.
     */
    readonly secondaryReadonlySqlConnectionString: pulumi.Output<string>;
    /**
     * Secondary SQL connection string for the CosmosDB Account.
     */
    readonly secondarySqlConnectionString: pulumi.Output<string>;
    /**
     * A mapping of tags to assign to the resource.
     */
    readonly tags: pulumi.Output<{
        [key: string]: string;
    } | undefined>;
    readonly virtualNetworkRules: pulumi.Output<outputs.cosmosdb.AccountVirtualNetworkRule[] | undefined>;
    /**
     * A list of write endpoints available for this CosmosDB account.
     */
    readonly writeEndpoints: pulumi.Output<string[]>;
    /**
     * Create a Account 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: AccountArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering Account resources.
 */
export interface AccountState {
    accessKeyMetadataWritesEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * An `analyticalStorage` block as defined below.
     */
    analyticalStorage?: pulumi.Input<inputs.cosmosdb.AccountAnalyticalStorage | undefined>;
    analyticalStorageEnabled?: pulumi.Input<boolean | undefined>;
    automaticFailoverEnabled?: pulumi.Input<boolean | undefined>;
    backup?: pulumi.Input<inputs.cosmosdb.AccountBackup | undefined>;
    burstCapacityEnabled?: pulumi.Input<boolean | undefined>;
    capabilities?: pulumi.Input<pulumi.Input<inputs.cosmosdb.AccountCapability>[] | undefined>;
    /**
     * A `capacity` block as defined below.
     */
    capacity?: pulumi.Input<inputs.cosmosdb.AccountCapacity | undefined>;
    consistencyPolicy?: pulumi.Input<inputs.cosmosdb.AccountConsistencyPolicy | undefined>;
    corsRule?: pulumi.Input<inputs.cosmosdb.AccountCorsRule | undefined>;
    /**
     * The creation mode for the CosmosDB Account. Possible values are `Default` and `Restore`. Changing this forces a new resource to be created.
     *
     * > **Note:** `createMode` can only be defined when the `backup.type` is set to `Continuous`.
     */
    createMode?: pulumi.Input<string | undefined>;
    /**
     * The default identity for accessing Key Vault. Possible values are `FirstPartyIdentity`, `SystemAssignedIdentity` or `UserAssignedIdentity`. Defaults to `FirstPartyIdentity`.
     */
    defaultIdentityType?: pulumi.Input<string | undefined>;
    /**
     * The endpoint used to connect to the CosmosDB account.
     */
    endpoint?: pulumi.Input<string | undefined>;
    freeTierEnabled?: pulumi.Input<boolean | undefined>;
    geoLocations?: pulumi.Input<pulumi.Input<inputs.cosmosdb.AccountGeoLocation>[] | undefined>;
    identity?: pulumi.Input<inputs.cosmosdb.AccountIdentity | undefined>;
    ipRangeFilters?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    isVirtualNetworkFilterEnabled?: pulumi.Input<boolean | undefined>;
    keyVaultKeyId?: pulumi.Input<string | undefined>;
    kind?: pulumi.Input<string | undefined>;
    localAuthenticationDisabled?: pulumi.Input<boolean | undefined>;
    /**
     * Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created.
     */
    location?: pulumi.Input<string | undefined>;
    /**
     * @deprecated `managedHsmKeyId` has been deprecated in favour of `keyVaultKeyId` and will be removed in v5.0 of the AzureRM provider
     */
    managedHsmKeyId?: pulumi.Input<string | undefined>;
    /**
     * Specifies the minimal TLS version for the CosmosDB account. Possible values are: `Tls`, `Tls11`, and `Tls12`. Defaults to `Tls12`.
     *
     * > **Note:** Azure Services will require TLS 1.2+ by August 2025, please see this [announcement](https://azure.microsoft.com/en-us/updates/v2/update-retirement-tls1-0-tls1-1-versions-azure-services/) for more details.
     */
    minimalTlsVersion?: pulumi.Input<string | undefined>;
    mongoServerVersion?: pulumi.Input<string | undefined>;
    multipleWriteLocationsEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * Specifies the name of the CosmosDB Account. Changing this forces a new resource to be created.
     */
    name?: pulumi.Input<string | undefined>;
    networkAclBypassForAzureServices?: pulumi.Input<boolean | undefined>;
    networkAclBypassIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * Specifies the Offer Type to use for this CosmosDB Account; currently, this can only be set to `Standard`.
     */
    offerType?: pulumi.Input<string | undefined>;
    partitionMergeEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * The Primary key for the CosmosDB Account.
     */
    primaryKey?: pulumi.Input<string | undefined>;
    /**
     * Primary Mongodb connection string for the CosmosDB Account.
     */
    primaryMongodbConnectionString?: pulumi.Input<string | undefined>;
    /**
     * The Primary read-only Key for the CosmosDB Account.
     */
    primaryReadonlyKey?: pulumi.Input<string | undefined>;
    /**
     * Primary readonly Mongodb connection string for the CosmosDB Account.
     */
    primaryReadonlyMongodbConnectionString?: pulumi.Input<string | undefined>;
    /**
     * Primary readonly SQL connection string for the CosmosDB Account.
     */
    primaryReadonlySqlConnectionString?: pulumi.Input<string | undefined>;
    /**
     * Primary SQL connection string for the CosmosDB Account.
     */
    primarySqlConnectionString?: pulumi.Input<string | undefined>;
    publicNetworkAccessEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * A list of read endpoints available for this CosmosDB account.
     */
    readEndpoints?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * The name of the resource group in which the CosmosDB Account is created. Changing this forces a new resource to be created.
     */
    resourceGroupName?: pulumi.Input<string | undefined>;
    restore?: pulumi.Input<inputs.cosmosdb.AccountRestore | undefined>;
    /**
     * The Secondary key for the CosmosDB Account.
     */
    secondaryKey?: pulumi.Input<string | undefined>;
    /**
     * Secondary Mongodb connection string for the CosmosDB Account.
     */
    secondaryMongodbConnectionString?: pulumi.Input<string | undefined>;
    /**
     * The Secondary read-only key for the CosmosDB Account.
     */
    secondaryReadonlyKey?: pulumi.Input<string | undefined>;
    /**
     * Secondary readonly Mongodb connection string for the CosmosDB Account.
     */
    secondaryReadonlyMongodbConnectionString?: pulumi.Input<string | undefined>;
    /**
     * Secondary readonly SQL connection string for the CosmosDB Account.
     */
    secondaryReadonlySqlConnectionString?: pulumi.Input<string | undefined>;
    /**
     * Secondary SQL connection string for the CosmosDB Account.
     */
    secondarySqlConnectionString?: pulumi.Input<string | undefined>;
    /**
     * A mapping of tags to assign to the resource.
     */
    tags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    virtualNetworkRules?: pulumi.Input<pulumi.Input<inputs.cosmosdb.AccountVirtualNetworkRule>[] | undefined>;
    /**
     * A list of write endpoints available for this CosmosDB account.
     */
    writeEndpoints?: pulumi.Input<pulumi.Input<string>[] | undefined>;
}
/**
 * The set of arguments for constructing a Account resource.
 */
export interface AccountArgs {
    accessKeyMetadataWritesEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * An `analyticalStorage` block as defined below.
     */
    analyticalStorage?: pulumi.Input<inputs.cosmosdb.AccountAnalyticalStorage | undefined>;
    analyticalStorageEnabled?: pulumi.Input<boolean | undefined>;
    automaticFailoverEnabled?: pulumi.Input<boolean | undefined>;
    backup?: pulumi.Input<inputs.cosmosdb.AccountBackup | undefined>;
    burstCapacityEnabled?: pulumi.Input<boolean | undefined>;
    capabilities?: pulumi.Input<pulumi.Input<inputs.cosmosdb.AccountCapability>[] | undefined>;
    /**
     * A `capacity` block as defined below.
     */
    capacity?: pulumi.Input<inputs.cosmosdb.AccountCapacity | undefined>;
    consistencyPolicy: pulumi.Input<inputs.cosmosdb.AccountConsistencyPolicy>;
    corsRule?: pulumi.Input<inputs.cosmosdb.AccountCorsRule | undefined>;
    /**
     * The creation mode for the CosmosDB Account. Possible values are `Default` and `Restore`. Changing this forces a new resource to be created.
     *
     * > **Note:** `createMode` can only be defined when the `backup.type` is set to `Continuous`.
     */
    createMode?: pulumi.Input<string | undefined>;
    /**
     * The default identity for accessing Key Vault. Possible values are `FirstPartyIdentity`, `SystemAssignedIdentity` or `UserAssignedIdentity`. Defaults to `FirstPartyIdentity`.
     */
    defaultIdentityType?: pulumi.Input<string | undefined>;
    freeTierEnabled?: pulumi.Input<boolean | undefined>;
    geoLocations: pulumi.Input<pulumi.Input<inputs.cosmosdb.AccountGeoLocation>[]>;
    identity?: pulumi.Input<inputs.cosmosdb.AccountIdentity | undefined>;
    ipRangeFilters?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    isVirtualNetworkFilterEnabled?: pulumi.Input<boolean | undefined>;
    keyVaultKeyId?: pulumi.Input<string | undefined>;
    kind?: pulumi.Input<string | undefined>;
    localAuthenticationDisabled?: pulumi.Input<boolean | undefined>;
    /**
     * Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created.
     */
    location?: pulumi.Input<string | undefined>;
    /**
     * @deprecated `managedHsmKeyId` has been deprecated in favour of `keyVaultKeyId` and will be removed in v5.0 of the AzureRM provider
     */
    managedHsmKeyId?: pulumi.Input<string | undefined>;
    /**
     * Specifies the minimal TLS version for the CosmosDB account. Possible values are: `Tls`, `Tls11`, and `Tls12`. Defaults to `Tls12`.
     *
     * > **Note:** Azure Services will require TLS 1.2+ by August 2025, please see this [announcement](https://azure.microsoft.com/en-us/updates/v2/update-retirement-tls1-0-tls1-1-versions-azure-services/) for more details.
     */
    minimalTlsVersion?: pulumi.Input<string | undefined>;
    mongoServerVersion?: pulumi.Input<string | undefined>;
    multipleWriteLocationsEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * Specifies the name of the CosmosDB Account. Changing this forces a new resource to be created.
     */
    name?: pulumi.Input<string | undefined>;
    networkAclBypassForAzureServices?: pulumi.Input<boolean | undefined>;
    networkAclBypassIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * Specifies the Offer Type to use for this CosmosDB Account; currently, this can only be set to `Standard`.
     */
    offerType: pulumi.Input<string>;
    partitionMergeEnabled?: pulumi.Input<boolean | undefined>;
    publicNetworkAccessEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * The name of the resource group in which the CosmosDB Account is created. Changing this forces a new resource to be created.
     */
    resourceGroupName: pulumi.Input<string>;
    restore?: pulumi.Input<inputs.cosmosdb.AccountRestore | undefined>;
    /**
     * A mapping of tags to assign to the resource.
     */
    tags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    virtualNetworkRules?: pulumi.Input<pulumi.Input<inputs.cosmosdb.AccountVirtualNetworkRule>[] | undefined>;
}
//# sourceMappingURL=account.d.ts.map