/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface SecretManagerRegionalSecretConfig extends cdktf.TerraformMetaArguments {
    /**
    * Custom metadata about the regional secret.
    *
    * Annotations are distinct from various forms of labels. Annotations exist to allow
    * client tools to store their own state information without requiring a database.
    *
    * Annotation keys must be between 1 and 63 characters long, have a UTF-8 encoding of
    * maximum 128 bytes, begin and end with an alphanumeric character ([a-z0-9A-Z]), and
    * may have dashes (-), underscores (_), dots (.), and alphanumerics in between these
    * symbols.
    *
    * The total size of annotation keys and values must be less than 16KiB.
    *
    * 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 annotations present in your configuration.
    * Please refer to the field 'effective_annotations' for all of the annotations present on the resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.35.0/docs/resources/secret_manager_regional_secret#annotations SecretManagerRegionalSecret#annotations}
    */
    readonly annotations?: {
        [key: string]: string;
    };
    /**
    * Timestamp in UTC when the regional secret is scheduled to expire. This is always provided on
    * output, regardless of what was sent on input. A timestamp in RFC3339 UTC "Zulu" format, with
    * nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and
    * "2014-10-02T15:01:23.045123456Z". Only one of 'expire_time' or 'ttl' can be provided.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.35.0/docs/resources/secret_manager_regional_secret#expire_time SecretManagerRegionalSecret#expire_time}
    */
    readonly expireTime?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.35.0/docs/resources/secret_manager_regional_secret#id SecretManagerRegionalSecret#id}
    *
    * Please be aware that the id field is automatically added to all resources in Terraform providers using a Terraform provider SDK version below 2.
    * If you experience problems setting this value it might not be settable. Please take a look at the provider documentation to ensure it should be settable.
    */
    readonly id?: string;
    /**
    * The labels assigned to this regional secret.
    *
    * Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes,
    * and must conform to the following PCRE regular expression: [\p{Ll}\p{Lo}][\p{Ll}\p{Lo}\p{N}_-]{0,62}
    *
    * Label values must be between 0 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes,
    * and must conform to the following PCRE regular expression: [\p{Ll}\p{Lo}\p{N}_-]{0,63}
    *
    * No more than 64 labels can be assigned to a given resource.
    *
    * 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 'effective_labels' for all of the labels present on the resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.35.0/docs/resources/secret_manager_regional_secret#labels SecretManagerRegionalSecret#labels}
    */
    readonly labels?: {
        [key: string]: string;
    };
    /**
    * The location of the regional secret. eg us-central1
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.35.0/docs/resources/secret_manager_regional_secret#location SecretManagerRegionalSecret#location}
    */
    readonly location: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.35.0/docs/resources/secret_manager_regional_secret#project SecretManagerRegionalSecret#project}
    */
    readonly project?: string;
    /**
    * This must be unique within the project.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.35.0/docs/resources/secret_manager_regional_secret#secret_id SecretManagerRegionalSecret#secret_id}
    */
    readonly secretId: string;
    /**
    * The TTL for the regional secret. A duration in seconds with up to nine fractional digits,
    * terminated by 's'. Example: "3.5s". Only one of 'ttl' or 'expire_time' can be provided.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.35.0/docs/resources/secret_manager_regional_secret#ttl SecretManagerRegionalSecret#ttl}
    */
    readonly ttl?: string;
    /**
    * Mapping from version alias to version name.
    *
    * A version alias is a string with a maximum length of 63 characters and can contain
    * uppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_')
    * characters. An alias string must start with a letter and cannot be the string
    * 'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret.
    *
    * An object containing a list of "key": value pairs. Example:
    * { "name": "wrench", "mass": "1.3kg", "count": "3" }.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.35.0/docs/resources/secret_manager_regional_secret#version_aliases SecretManagerRegionalSecret#version_aliases}
    */
    readonly versionAliases?: {
        [key: string]: string;
    };
    /**
    * Secret Version TTL after destruction request.
    * This is a part of the delayed delete feature on Secret Version.
    * For secret with versionDestroyTtl>0, version destruction doesn't happen immediately
    * on calling destroy instead the version goes to a disabled state and
    * the actual destruction happens after this TTL expires. It must be atleast 24h.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.35.0/docs/resources/secret_manager_regional_secret#version_destroy_ttl SecretManagerRegionalSecret#version_destroy_ttl}
    */
    readonly versionDestroyTtl?: string;
    /**
    * customer_managed_encryption block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.35.0/docs/resources/secret_manager_regional_secret#customer_managed_encryption SecretManagerRegionalSecret#customer_managed_encryption}
    */
    readonly customerManagedEncryption?: SecretManagerRegionalSecretCustomerManagedEncryption;
    /**
    * rotation block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.35.0/docs/resources/secret_manager_regional_secret#rotation SecretManagerRegionalSecret#rotation}
    */
    readonly rotation?: SecretManagerRegionalSecretRotation;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.35.0/docs/resources/secret_manager_regional_secret#timeouts SecretManagerRegionalSecret#timeouts}
    */
    readonly timeouts?: SecretManagerRegionalSecretTimeouts;
    /**
    * topics block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.35.0/docs/resources/secret_manager_regional_secret#topics SecretManagerRegionalSecret#topics}
    */
    readonly topics?: SecretManagerRegionalSecretTopics[] | cdktf.IResolvable;
}
export interface SecretManagerRegionalSecretCustomerManagedEncryption {
    /**
    * The resource name of the Cloud KMS CryptoKey used to encrypt secret payloads.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.35.0/docs/resources/secret_manager_regional_secret#kms_key_name SecretManagerRegionalSecret#kms_key_name}
    */
    readonly kmsKeyName: string;
}
export declare function secretManagerRegionalSecretCustomerManagedEncryptionToTerraform(struct?: SecretManagerRegionalSecretCustomerManagedEncryptionOutputReference | SecretManagerRegionalSecretCustomerManagedEncryption): any;
export declare function secretManagerRegionalSecretCustomerManagedEncryptionToHclTerraform(struct?: SecretManagerRegionalSecretCustomerManagedEncryptionOutputReference | SecretManagerRegionalSecretCustomerManagedEncryption): any;
export declare class SecretManagerRegionalSecretCustomerManagedEncryptionOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): SecretManagerRegionalSecretCustomerManagedEncryption | undefined;
    set internalValue(value: SecretManagerRegionalSecretCustomerManagedEncryption | undefined);
    private _kmsKeyName?;
    get kmsKeyName(): string;
    set kmsKeyName(value: string);
    get kmsKeyNameInput(): string | undefined;
}
export interface SecretManagerRegionalSecretRotation {
    /**
    * Timestamp in UTC at which the Secret is scheduled to rotate.
    * A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine
    * fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.35.0/docs/resources/secret_manager_regional_secret#next_rotation_time SecretManagerRegionalSecret#next_rotation_time}
    */
    readonly nextRotationTime?: string;
    /**
    * The Duration between rotation notifications. Must be in seconds and at least 3600s (1h)
    * and at most 3153600000s (100 years). If rotationPeriod is set, 'next_rotation_time' must
    * be set. 'next_rotation_time' will be advanced by this period when the service
    * automatically sends rotation notifications.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.35.0/docs/resources/secret_manager_regional_secret#rotation_period SecretManagerRegionalSecret#rotation_period}
    */
    readonly rotationPeriod?: string;
}
export declare function secretManagerRegionalSecretRotationToTerraform(struct?: SecretManagerRegionalSecretRotationOutputReference | SecretManagerRegionalSecretRotation): any;
export declare function secretManagerRegionalSecretRotationToHclTerraform(struct?: SecretManagerRegionalSecretRotationOutputReference | SecretManagerRegionalSecretRotation): any;
export declare class SecretManagerRegionalSecretRotationOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): SecretManagerRegionalSecretRotation | undefined;
    set internalValue(value: SecretManagerRegionalSecretRotation | undefined);
    private _nextRotationTime?;
    get nextRotationTime(): string;
    set nextRotationTime(value: string);
    resetNextRotationTime(): void;
    get nextRotationTimeInput(): string | undefined;
    private _rotationPeriod?;
    get rotationPeriod(): string;
    set rotationPeriod(value: string);
    resetRotationPeriod(): void;
    get rotationPeriodInput(): string | undefined;
}
export interface SecretManagerRegionalSecretTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.35.0/docs/resources/secret_manager_regional_secret#create SecretManagerRegionalSecret#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.35.0/docs/resources/secret_manager_regional_secret#delete SecretManagerRegionalSecret#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.35.0/docs/resources/secret_manager_regional_secret#update SecretManagerRegionalSecret#update}
    */
    readonly update?: string;
}
export declare function secretManagerRegionalSecretTimeoutsToTerraform(struct?: SecretManagerRegionalSecretTimeouts | cdktf.IResolvable): any;
export declare function secretManagerRegionalSecretTimeoutsToHclTerraform(struct?: SecretManagerRegionalSecretTimeouts | cdktf.IResolvable): any;
export declare class SecretManagerRegionalSecretTimeoutsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): SecretManagerRegionalSecretTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: SecretManagerRegionalSecretTimeouts | cdktf.IResolvable | undefined);
    private _create?;
    get create(): string;
    set create(value: string);
    resetCreate(): void;
    get createInput(): string | undefined;
    private _delete?;
    get delete(): string;
    set delete(value: string);
    resetDelete(): void;
    get deleteInput(): string | undefined;
    private _update?;
    get update(): string;
    set update(value: string);
    resetUpdate(): void;
    get updateInput(): string | undefined;
}
export interface SecretManagerRegionalSecretTopics {
    /**
    * The resource name of the Pub/Sub topic that will be published to, in the following format:
    * projects/* /topics/*. For publication to succeed, the Secret Manager Service
    * Agent service account must have pubsub.publisher permissions on the topic.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.35.0/docs/resources/secret_manager_regional_secret#name SecretManagerRegionalSecret#name}
     *
    * Note: The above comment contained a comment block ending sequence (* followed by /). We have introduced a space between to prevent syntax errors. Please ignore the space.
    */
    readonly name: string;
}
export declare function secretManagerRegionalSecretTopicsToTerraform(struct?: SecretManagerRegionalSecretTopics | cdktf.IResolvable): any;
export declare function secretManagerRegionalSecretTopicsToHclTerraform(struct?: SecretManagerRegionalSecretTopics | cdktf.IResolvable): any;
export declare class SecretManagerRegionalSecretTopicsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): SecretManagerRegionalSecretTopics | cdktf.IResolvable | undefined;
    set internalValue(value: SecretManagerRegionalSecretTopics | cdktf.IResolvable | undefined);
    private _name?;
    get name(): string;
    set name(value: string);
    get nameInput(): string | undefined;
}
export declare class SecretManagerRegionalSecretTopicsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: SecretManagerRegionalSecretTopics[] | cdktf.IResolvable;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): SecretManagerRegionalSecretTopicsOutputReference;
}
/**
* Represents a {@link https://registry.terraform.io/providers/hashicorp/google/6.35.0/docs/resources/secret_manager_regional_secret google_secret_manager_regional_secret}
*/
export declare class SecretManagerRegionalSecret extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_secret_manager_regional_secret";
    /**
    * Generates CDKTF code for importing a SecretManagerRegionalSecret resource upon running "cdktf plan <stack-name>"
    * @param scope The scope in which to define this construct
    * @param importToId The construct id used in the generated config for the SecretManagerRegionalSecret to import
    * @param importFromId The id of the existing SecretManagerRegionalSecret that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/6.35.0/docs/resources/secret_manager_regional_secret#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the SecretManagerRegionalSecret to import is found
    */
    static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktf.TerraformProvider): cdktf.ImportableResource;
    /**
    * Create a new {@link https://registry.terraform.io/providers/hashicorp/google/6.35.0/docs/resources/secret_manager_regional_secret google_secret_manager_regional_secret} Resource
    *
    * @param scope The scope in which to define this construct
    * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
    * @param options SecretManagerRegionalSecretConfig
    */
    constructor(scope: Construct, id: string, config: SecretManagerRegionalSecretConfig);
    private _annotations?;
    get annotations(): {
        [key: string]: string;
    };
    set annotations(value: {
        [key: string]: string;
    });
    resetAnnotations(): void;
    get annotationsInput(): {
        [key: string]: string;
    } | undefined;
    get createTime(): string;
    private _effectiveAnnotations;
    get effectiveAnnotations(): cdktf.StringMap;
    private _effectiveLabels;
    get effectiveLabels(): cdktf.StringMap;
    private _expireTime?;
    get expireTime(): string;
    set expireTime(value: string);
    resetExpireTime(): void;
    get expireTimeInput(): string | undefined;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    private _labels?;
    get labels(): {
        [key: string]: string;
    };
    set labels(value: {
        [key: string]: string;
    });
    resetLabels(): void;
    get labelsInput(): {
        [key: string]: string;
    } | undefined;
    private _location?;
    get location(): string;
    set location(value: string);
    get locationInput(): string | undefined;
    get name(): string;
    private _project?;
    get project(): string;
    set project(value: string);
    resetProject(): void;
    get projectInput(): string | undefined;
    private _secretId?;
    get secretId(): string;
    set secretId(value: string);
    get secretIdInput(): string | undefined;
    private _terraformLabels;
    get terraformLabels(): cdktf.StringMap;
    private _ttl?;
    get ttl(): string;
    set ttl(value: string);
    resetTtl(): void;
    get ttlInput(): string | undefined;
    private _versionAliases?;
    get versionAliases(): {
        [key: string]: string;
    };
    set versionAliases(value: {
        [key: string]: string;
    });
    resetVersionAliases(): void;
    get versionAliasesInput(): {
        [key: string]: string;
    } | undefined;
    private _versionDestroyTtl?;
    get versionDestroyTtl(): string;
    set versionDestroyTtl(value: string);
    resetVersionDestroyTtl(): void;
    get versionDestroyTtlInput(): string | undefined;
    private _customerManagedEncryption;
    get customerManagedEncryption(): SecretManagerRegionalSecretCustomerManagedEncryptionOutputReference;
    putCustomerManagedEncryption(value: SecretManagerRegionalSecretCustomerManagedEncryption): void;
    resetCustomerManagedEncryption(): void;
    get customerManagedEncryptionInput(): SecretManagerRegionalSecretCustomerManagedEncryption | undefined;
    private _rotation;
    get rotation(): SecretManagerRegionalSecretRotationOutputReference;
    putRotation(value: SecretManagerRegionalSecretRotation): void;
    resetRotation(): void;
    get rotationInput(): SecretManagerRegionalSecretRotation | undefined;
    private _timeouts;
    get timeouts(): SecretManagerRegionalSecretTimeoutsOutputReference;
    putTimeouts(value: SecretManagerRegionalSecretTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | SecretManagerRegionalSecretTimeouts | undefined;
    private _topics;
    get topics(): SecretManagerRegionalSecretTopicsList;
    putTopics(value: SecretManagerRegionalSecretTopics[] | cdktf.IResolvable): void;
    resetTopics(): void;
    get topicsInput(): cdktf.IResolvable | SecretManagerRegionalSecretTopics[] | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
