import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface VaultSecretConfig extends cdktf.TerraformMetaArguments {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/vault_secret#compartment_id VaultSecret#compartment_id}
    */
    readonly compartmentId: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/vault_secret#defined_tags VaultSecret#defined_tags}
    */
    readonly definedTags?: {
        [key: string]: string;
    };
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/vault_secret#description VaultSecret#description}
    */
    readonly description?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/vault_secret#freeform_tags VaultSecret#freeform_tags}
    */
    readonly freeformTags?: {
        [key: string]: string;
    };
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/vault_secret#id VaultSecret#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;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/vault_secret#key_id VaultSecret#key_id}
    */
    readonly keyId: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/vault_secret#metadata VaultSecret#metadata}
    */
    readonly metadata?: {
        [key: string]: string;
    };
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/vault_secret#secret_name VaultSecret#secret_name}
    */
    readonly secretName: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/vault_secret#vault_id VaultSecret#vault_id}
    */
    readonly vaultId: string;
    /**
    * rotation_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/vault_secret#rotation_config VaultSecret#rotation_config}
    */
    readonly rotationConfig?: VaultSecretRotationConfig;
    /**
    * secret_content block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/vault_secret#secret_content VaultSecret#secret_content}
    */
    readonly secretContent?: VaultSecretSecretContent;
    /**
    * secret_rules block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/vault_secret#secret_rules VaultSecret#secret_rules}
    */
    readonly secretRules?: VaultSecretSecretRules[] | cdktf.IResolvable;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/vault_secret#timeouts VaultSecret#timeouts}
    */
    readonly timeouts?: VaultSecretTimeouts;
}
export interface VaultSecretRotationConfigTargetSystemDetails {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/vault_secret#adb_id VaultSecret#adb_id}
    */
    readonly adbId?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/vault_secret#function_id VaultSecret#function_id}
    */
    readonly functionId?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/vault_secret#target_system_type VaultSecret#target_system_type}
    */
    readonly targetSystemType: string;
}
export declare function vaultSecretRotationConfigTargetSystemDetailsToTerraform(struct?: VaultSecretRotationConfigTargetSystemDetailsOutputReference | VaultSecretRotationConfigTargetSystemDetails): any;
export declare function vaultSecretRotationConfigTargetSystemDetailsToHclTerraform(struct?: VaultSecretRotationConfigTargetSystemDetailsOutputReference | VaultSecretRotationConfigTargetSystemDetails): any;
export declare class VaultSecretRotationConfigTargetSystemDetailsOutputReference 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(): VaultSecretRotationConfigTargetSystemDetails | undefined;
    set internalValue(value: VaultSecretRotationConfigTargetSystemDetails | undefined);
    private _adbId?;
    get adbId(): string;
    set adbId(value: string);
    resetAdbId(): void;
    get adbIdInput(): string | undefined;
    private _functionId?;
    get functionId(): string;
    set functionId(value: string);
    resetFunctionId(): void;
    get functionIdInput(): string | undefined;
    private _targetSystemType?;
    get targetSystemType(): string;
    set targetSystemType(value: string);
    get targetSystemTypeInput(): string | undefined;
}
export interface VaultSecretRotationConfig {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/vault_secret#is_scheduled_rotation_enabled VaultSecret#is_scheduled_rotation_enabled}
    */
    readonly isScheduledRotationEnabled?: boolean | cdktf.IResolvable;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/vault_secret#rotation_interval VaultSecret#rotation_interval}
    */
    readonly rotationInterval?: string;
    /**
    * target_system_details block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/vault_secret#target_system_details VaultSecret#target_system_details}
    */
    readonly targetSystemDetails: VaultSecretRotationConfigTargetSystemDetails;
}
export declare function vaultSecretRotationConfigToTerraform(struct?: VaultSecretRotationConfigOutputReference | VaultSecretRotationConfig): any;
export declare function vaultSecretRotationConfigToHclTerraform(struct?: VaultSecretRotationConfigOutputReference | VaultSecretRotationConfig): any;
export declare class VaultSecretRotationConfigOutputReference 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(): VaultSecretRotationConfig | undefined;
    set internalValue(value: VaultSecretRotationConfig | undefined);
    private _isScheduledRotationEnabled?;
    get isScheduledRotationEnabled(): boolean | cdktf.IResolvable;
    set isScheduledRotationEnabled(value: boolean | cdktf.IResolvable);
    resetIsScheduledRotationEnabled(): void;
    get isScheduledRotationEnabledInput(): boolean | cdktf.IResolvable | undefined;
    private _rotationInterval?;
    get rotationInterval(): string;
    set rotationInterval(value: string);
    resetRotationInterval(): void;
    get rotationIntervalInput(): string | undefined;
    private _targetSystemDetails;
    get targetSystemDetails(): VaultSecretRotationConfigTargetSystemDetailsOutputReference;
    putTargetSystemDetails(value: VaultSecretRotationConfigTargetSystemDetails): void;
    get targetSystemDetailsInput(): VaultSecretRotationConfigTargetSystemDetails | undefined;
}
export interface VaultSecretSecretContent {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/vault_secret#content VaultSecret#content}
    */
    readonly content?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/vault_secret#content_type VaultSecret#content_type}
    */
    readonly contentType: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/vault_secret#name VaultSecret#name}
    */
    readonly name?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/vault_secret#stage VaultSecret#stage}
    */
    readonly stage?: string;
}
export declare function vaultSecretSecretContentToTerraform(struct?: VaultSecretSecretContentOutputReference | VaultSecretSecretContent): any;
export declare function vaultSecretSecretContentToHclTerraform(struct?: VaultSecretSecretContentOutputReference | VaultSecretSecretContent): any;
export declare class VaultSecretSecretContentOutputReference 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(): VaultSecretSecretContent | undefined;
    set internalValue(value: VaultSecretSecretContent | undefined);
    private _content?;
    get content(): string;
    set content(value: string);
    resetContent(): void;
    get contentInput(): string | undefined;
    private _contentType?;
    get contentType(): string;
    set contentType(value: string);
    get contentTypeInput(): string | undefined;
    private _name?;
    get name(): string;
    set name(value: string);
    resetName(): void;
    get nameInput(): string | undefined;
    private _stage?;
    get stage(): string;
    set stage(value: string);
    resetStage(): void;
    get stageInput(): string | undefined;
}
export interface VaultSecretSecretRules {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/vault_secret#is_enforced_on_deleted_secret_versions VaultSecret#is_enforced_on_deleted_secret_versions}
    */
    readonly isEnforcedOnDeletedSecretVersions?: boolean | cdktf.IResolvable;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/vault_secret#is_secret_content_retrieval_blocked_on_expiry VaultSecret#is_secret_content_retrieval_blocked_on_expiry}
    */
    readonly isSecretContentRetrievalBlockedOnExpiry?: boolean | cdktf.IResolvable;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/vault_secret#rule_type VaultSecret#rule_type}
    */
    readonly ruleType: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/vault_secret#secret_version_expiry_interval VaultSecret#secret_version_expiry_interval}
    */
    readonly secretVersionExpiryInterval?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/vault_secret#time_of_absolute_expiry VaultSecret#time_of_absolute_expiry}
    */
    readonly timeOfAbsoluteExpiry?: string;
}
export declare function vaultSecretSecretRulesToTerraform(struct?: VaultSecretSecretRules | cdktf.IResolvable): any;
export declare function vaultSecretSecretRulesToHclTerraform(struct?: VaultSecretSecretRules | cdktf.IResolvable): any;
export declare class VaultSecretSecretRulesOutputReference 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(): VaultSecretSecretRules | cdktf.IResolvable | undefined;
    set internalValue(value: VaultSecretSecretRules | cdktf.IResolvable | undefined);
    private _isEnforcedOnDeletedSecretVersions?;
    get isEnforcedOnDeletedSecretVersions(): boolean | cdktf.IResolvable;
    set isEnforcedOnDeletedSecretVersions(value: boolean | cdktf.IResolvable);
    resetIsEnforcedOnDeletedSecretVersions(): void;
    get isEnforcedOnDeletedSecretVersionsInput(): boolean | cdktf.IResolvable | undefined;
    private _isSecretContentRetrievalBlockedOnExpiry?;
    get isSecretContentRetrievalBlockedOnExpiry(): boolean | cdktf.IResolvable;
    set isSecretContentRetrievalBlockedOnExpiry(value: boolean | cdktf.IResolvable);
    resetIsSecretContentRetrievalBlockedOnExpiry(): void;
    get isSecretContentRetrievalBlockedOnExpiryInput(): boolean | cdktf.IResolvable | undefined;
    private _ruleType?;
    get ruleType(): string;
    set ruleType(value: string);
    get ruleTypeInput(): string | undefined;
    private _secretVersionExpiryInterval?;
    get secretVersionExpiryInterval(): string;
    set secretVersionExpiryInterval(value: string);
    resetSecretVersionExpiryInterval(): void;
    get secretVersionExpiryIntervalInput(): string | undefined;
    private _timeOfAbsoluteExpiry?;
    get timeOfAbsoluteExpiry(): string;
    set timeOfAbsoluteExpiry(value: string);
    resetTimeOfAbsoluteExpiry(): void;
    get timeOfAbsoluteExpiryInput(): string | undefined;
}
export declare class VaultSecretSecretRulesList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: VaultSecretSecretRules[] | 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): VaultSecretSecretRulesOutputReference;
}
export interface VaultSecretTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/vault_secret#create VaultSecret#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/vault_secret#delete VaultSecret#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/vault_secret#update VaultSecret#update}
    */
    readonly update?: string;
}
export declare function vaultSecretTimeoutsToTerraform(struct?: VaultSecretTimeouts | cdktf.IResolvable): any;
export declare function vaultSecretTimeoutsToHclTerraform(struct?: VaultSecretTimeouts | cdktf.IResolvable): any;
export declare class VaultSecretTimeoutsOutputReference 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(): VaultSecretTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: VaultSecretTimeouts | 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;
}
/**
* Represents a {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/vault_secret oci_vault_secret}
*/
export declare class VaultSecret extends cdktf.TerraformResource {
    static readonly tfResourceType = "oci_vault_secret";
    /**
    * Generates CDKTF code for importing a VaultSecret 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 VaultSecret to import
    * @param importFromId The id of the existing VaultSecret that should be imported. Refer to the {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/vault_secret#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the VaultSecret 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/oracle/oci/6.18.0/docs/resources/vault_secret oci_vault_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 VaultSecretConfig
    */
    constructor(scope: Construct, id: string, config: VaultSecretConfig);
    private _compartmentId?;
    get compartmentId(): string;
    set compartmentId(value: string);
    get compartmentIdInput(): string | undefined;
    get currentVersionNumber(): string;
    private _definedTags?;
    get definedTags(): {
        [key: string]: string;
    };
    set definedTags(value: {
        [key: string]: string;
    });
    resetDefinedTags(): void;
    get definedTagsInput(): {
        [key: string]: string;
    } | undefined;
    private _description?;
    get description(): string;
    set description(value: string);
    resetDescription(): void;
    get descriptionInput(): string | undefined;
    private _freeformTags?;
    get freeformTags(): {
        [key: string]: string;
    };
    set freeformTags(value: {
        [key: string]: string;
    });
    resetFreeformTags(): void;
    get freeformTagsInput(): {
        [key: string]: string;
    } | undefined;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    private _keyId?;
    get keyId(): string;
    set keyId(value: string);
    get keyIdInput(): string | undefined;
    get lastRotationTime(): string;
    get lifecycleDetails(): string;
    private _metadata?;
    get metadata(): {
        [key: string]: string;
    };
    set metadata(value: {
        [key: string]: string;
    });
    resetMetadata(): void;
    get metadataInput(): {
        [key: string]: string;
    } | undefined;
    get nextRotationTime(): string;
    get rotationStatus(): string;
    private _secretName?;
    get secretName(): string;
    set secretName(value: string);
    get secretNameInput(): string | undefined;
    get state(): string;
    get timeCreated(): string;
    get timeOfCurrentVersionExpiry(): string;
    get timeOfDeletion(): string;
    private _vaultId?;
    get vaultId(): string;
    set vaultId(value: string);
    get vaultIdInput(): string | undefined;
    private _rotationConfig;
    get rotationConfig(): VaultSecretRotationConfigOutputReference;
    putRotationConfig(value: VaultSecretRotationConfig): void;
    resetRotationConfig(): void;
    get rotationConfigInput(): VaultSecretRotationConfig | undefined;
    private _secretContent;
    get secretContent(): VaultSecretSecretContentOutputReference;
    putSecretContent(value: VaultSecretSecretContent): void;
    resetSecretContent(): void;
    get secretContentInput(): VaultSecretSecretContent | undefined;
    private _secretRules;
    get secretRules(): VaultSecretSecretRulesList;
    putSecretRules(value: VaultSecretSecretRules[] | cdktf.IResolvable): void;
    resetSecretRules(): void;
    get secretRulesInput(): cdktf.IResolvable | VaultSecretSecretRules[] | undefined;
    private _timeouts;
    get timeouts(): VaultSecretTimeoutsOutputReference;
    putTimeouts(value: VaultSecretTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | VaultSecretTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
