import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * This resource provides the Configuration resource in Oracle Cloud Infrastructure NoSQL Database service.
 * Api doc link for the resource: https://docs.oracle.com/iaas/api/#/en/nosql-database/latest/Configuration
 *
 * Example terraform configs related to the resource : https://github.com/oracle/terraform-provider-oci/tree/master/examples/object_storage
 *
 * Updates the service-level configuration.  The discriminator value
 * `UpdateConfigurationDetails.environment` must match the service's
 * environment type.
 *
 * A configuration serves as a centralized repository for global parameters that
 * affect the NoSQL service. Currently, there is only one such parameter: a
 * customer-provided key for encrypting NoSQL data at rest.
 *
 * The Customer-Managed Encryption Keys (CMEK) feature is exclusively available
 * in private NoSQL environments dedicated to a single tenancy, where the CMEK
 * option has been enabled. Updating the configuration of the default, regional,
 * multi-tenancy NoSQL service is not supported.
 *
 * To specify the dedicated environment, set the environment variable
 * CLIENT_HOST_OVERRIDES=oci_nosql.NosqlClient=$ENDPOINT
 * Where $ENDPOINT is the endpoint of the dedicated NoSQL environment.
 * For example:
 * $ export CLIENT_HOST_OVERRIDES=oci_nosql.NosqlClient=https://acme-widgets.nosql.oci.oraclecloud.com
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as oci from "@pulumi/oci";
 *
 * const testConfiguration = new oci.nosql.Configuration("test_configuration", {
 *     compartmentId: compartmentId,
 *     environment: "HOSTED",
 *     isOpcDryRun: configurationIsOpcDryRun === "true",
 *     kmsKey: {
 *         id: configurationKmsKeyId,
 *         kmsVaultId: testVault.id,
 *     },
 * });
 * ```
 *
 * ## Import
 *
 * Configurations can be imported using the `id`, e.g.
 *
 * ```sh
 * $ pulumi import oci:Nosql/configuration:Configuration test_configuration "configuration/compartmentId/{compartmentId}"
 * ```
 */
export declare class Configuration extends pulumi.CustomResource {
    /**
     * Get an existing Configuration 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?: ConfigurationState, opts?: pulumi.CustomResourceOptions): Configuration;
    /**
     * Returns true if the given object is an instance of Configuration.  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 Configuration;
    /**
     * (Updatable) The tenancy's OCID
     */
    readonly compartmentId: pulumi.Output<string>;
    /**
     * (Updatable) The service environment type.
     */
    readonly environment: pulumi.Output<string>;
    /**
     * (Updatable) If true, indicates that the request is a dry run. A dry run request does not modify the configuration item details and is used only to perform validation on the submitted data.
     */
    readonly isOpcDryRun: pulumi.Output<boolean>;
    /**
     * (Updatable) Information about the state of the service's encryption key management. The following properties are read-only and ignored when this object is used in UpdateConfiguration: kmsKeyState, timeCreated, timeUpdated.
     */
    readonly kmsKey: pulumi.Output<outputs.Nosql.ConfigurationKmsKey>;
    /**
     * Create a Configuration 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: ConfigurationArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering Configuration resources.
 */
export interface ConfigurationState {
    /**
     * (Updatable) The tenancy's OCID
     */
    compartmentId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The service environment type.
     */
    environment?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) If true, indicates that the request is a dry run. A dry run request does not modify the configuration item details and is used only to perform validation on the submitted data.
     */
    isOpcDryRun?: pulumi.Input<boolean | undefined>;
    /**
     * (Updatable) Information about the state of the service's encryption key management. The following properties are read-only and ignored when this object is used in UpdateConfiguration: kmsKeyState, timeCreated, timeUpdated.
     */
    kmsKey?: pulumi.Input<inputs.Nosql.ConfigurationKmsKey | undefined>;
}
/**
 * The set of arguments for constructing a Configuration resource.
 */
export interface ConfigurationArgs {
    /**
     * (Updatable) The tenancy's OCID
     */
    compartmentId: pulumi.Input<string>;
    /**
     * (Updatable) The service environment type.
     */
    environment: pulumi.Input<string>;
    /**
     * (Updatable) If true, indicates that the request is a dry run. A dry run request does not modify the configuration item details and is used only to perform validation on the submitted data.
     */
    isOpcDryRun?: pulumi.Input<boolean | undefined>;
    /**
     * (Updatable) Information about the state of the service's encryption key management. The following properties are read-only and ignored when this object is used in UpdateConfiguration: kmsKeyState, timeCreated, timeUpdated.
     */
    kmsKey?: pulumi.Input<inputs.Nosql.ConfigurationKmsKey | undefined>;
}
//# sourceMappingURL=configuration.d.ts.map