/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface LoggingFolderBucketConfigConfig extends cdktf.TerraformMetaArguments {
    /**
    * The name of the logging bucket. Logging automatically creates two log buckets: _Required and _Default.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/logging_folder_bucket_config#bucket_id LoggingFolderBucketConfig#bucket_id}
    */
    readonly bucketId: string;
    /**
    * An optional description for this bucket.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/logging_folder_bucket_config#description LoggingFolderBucketConfig#description}
    */
    readonly description?: string;
    /**
    * The parent resource that contains the logging bucket.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/logging_folder_bucket_config#folder LoggingFolderBucketConfig#folder}
    */
    readonly folder: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/logging_folder_bucket_config#id LoggingFolderBucketConfig#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 location of the bucket.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/logging_folder_bucket_config#location LoggingFolderBucketConfig#location}
    */
    readonly location: string;
    /**
    * Logs will be retained by default for this amount of time, after which they will automatically be deleted. The minimum retention period is 1 day. If this value is set to zero at bucket creation time, the default time of 30 days will be used.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/logging_folder_bucket_config#retention_days LoggingFolderBucketConfig#retention_days}
    */
    readonly retentionDays?: number;
    /**
    * cmek_settings block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/logging_folder_bucket_config#cmek_settings LoggingFolderBucketConfig#cmek_settings}
    */
    readonly cmekSettings?: LoggingFolderBucketConfigCmekSettings;
    /**
    * index_configs block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/logging_folder_bucket_config#index_configs LoggingFolderBucketConfig#index_configs}
    */
    readonly indexConfigs?: LoggingFolderBucketConfigIndexConfigs[] | cdktf.IResolvable;
}
export interface LoggingFolderBucketConfigCmekSettings {
    /**
    * The resource name for the configured Cloud KMS key.
    * KMS key name format:
    * "projects/[PROJECT_ID]/locations/[LOCATION]/keyRings/[KEYRING]/cryptoKeys/[KEY]"
    * To enable CMEK for the bucket, set this field to a valid kmsKeyName for which the associated service account has the required cloudkms.cryptoKeyEncrypterDecrypter roles assigned for the key.
    * The Cloud KMS key used by the bucket can be updated by changing the kmsKeyName to a new valid key name. Encryption operations that are in progress will be completed with the key that was in use when they started. Decryption operations will be completed using the key that was used at the time of encryption unless access to that key has been revoked.
    * See [Enabling CMEK for Logging Buckets](https://cloud.google.com/logging/docs/routing/managed-encryption-storage) for more information.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/logging_folder_bucket_config#kms_key_name LoggingFolderBucketConfig#kms_key_name}
    */
    readonly kmsKeyName: string;
}
export declare function loggingFolderBucketConfigCmekSettingsToTerraform(struct?: LoggingFolderBucketConfigCmekSettingsOutputReference | LoggingFolderBucketConfigCmekSettings): any;
export declare function loggingFolderBucketConfigCmekSettingsToHclTerraform(struct?: LoggingFolderBucketConfigCmekSettingsOutputReference | LoggingFolderBucketConfigCmekSettings): any;
export declare class LoggingFolderBucketConfigCmekSettingsOutputReference 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(): LoggingFolderBucketConfigCmekSettings | undefined;
    set internalValue(value: LoggingFolderBucketConfigCmekSettings | undefined);
    private _kmsKeyName?;
    get kmsKeyName(): string;
    set kmsKeyName(value: string);
    get kmsKeyNameInput(): string | undefined;
    get kmsKeyVersionName(): string;
    get name(): string;
    get serviceAccountId(): string;
}
export interface LoggingFolderBucketConfigIndexConfigs {
    /**
    * The LogEntry field path to index.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/logging_folder_bucket_config#field_path LoggingFolderBucketConfig#field_path}
    */
    readonly fieldPath: string;
    /**
    * The type of data in this index
    * Note that some paths are automatically indexed, and other paths are not eligible for indexing. See [indexing documentation]( https://cloud.google.com/logging/docs/view/advanced-queries#indexed-fields) for details.
    * For example: jsonPayload.request.status
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/logging_folder_bucket_config#type LoggingFolderBucketConfig#type}
    */
    readonly type: string;
}
export declare function loggingFolderBucketConfigIndexConfigsToTerraform(struct?: LoggingFolderBucketConfigIndexConfigs | cdktf.IResolvable): any;
export declare function loggingFolderBucketConfigIndexConfigsToHclTerraform(struct?: LoggingFolderBucketConfigIndexConfigs | cdktf.IResolvable): any;
export declare class LoggingFolderBucketConfigIndexConfigsOutputReference 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(): LoggingFolderBucketConfigIndexConfigs | cdktf.IResolvable | undefined;
    set internalValue(value: LoggingFolderBucketConfigIndexConfigs | cdktf.IResolvable | undefined);
    private _fieldPath?;
    get fieldPath(): string;
    set fieldPath(value: string);
    get fieldPathInput(): string | undefined;
    private _type?;
    get type(): string;
    set type(value: string);
    get typeInput(): string | undefined;
}
export declare class LoggingFolderBucketConfigIndexConfigsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: LoggingFolderBucketConfigIndexConfigs[] | 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): LoggingFolderBucketConfigIndexConfigsOutputReference;
}
/**
* Represents a {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/logging_folder_bucket_config google_logging_folder_bucket_config}
*/
export declare class LoggingFolderBucketConfig extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_logging_folder_bucket_config";
    /**
    * Generates CDKTF code for importing a LoggingFolderBucketConfig 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 LoggingFolderBucketConfig to import
    * @param importFromId The id of the existing LoggingFolderBucketConfig that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/logging_folder_bucket_config#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the LoggingFolderBucketConfig 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.50.0/docs/resources/logging_folder_bucket_config google_logging_folder_bucket_config} 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 LoggingFolderBucketConfigConfig
    */
    constructor(scope: Construct, id: string, config: LoggingFolderBucketConfigConfig);
    private _bucketId?;
    get bucketId(): string;
    set bucketId(value: string);
    get bucketIdInput(): string | undefined;
    private _description?;
    get description(): string;
    set description(value: string);
    resetDescription(): void;
    get descriptionInput(): string | undefined;
    private _folder?;
    get folder(): string;
    set folder(value: string);
    get folderInput(): string | undefined;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    get lifecycleState(): string;
    private _location?;
    get location(): string;
    set location(value: string);
    get locationInput(): string | undefined;
    get name(): string;
    private _retentionDays?;
    get retentionDays(): number;
    set retentionDays(value: number);
    resetRetentionDays(): void;
    get retentionDaysInput(): number | undefined;
    private _cmekSettings;
    get cmekSettings(): LoggingFolderBucketConfigCmekSettingsOutputReference;
    putCmekSettings(value: LoggingFolderBucketConfigCmekSettings): void;
    resetCmekSettings(): void;
    get cmekSettingsInput(): LoggingFolderBucketConfigCmekSettings | undefined;
    private _indexConfigs;
    get indexConfigs(): LoggingFolderBucketConfigIndexConfigsList;
    putIndexConfigs(value: LoggingFolderBucketConfigIndexConfigs[] | cdktf.IResolvable): void;
    resetIndexConfigs(): void;
    get indexConfigsInput(): cdktf.IResolvable | LoggingFolderBucketConfigIndexConfigs[] | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
