/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface StorageTransferJobConfig extends cdktf.TerraformMetaArguments {
    /**
    * Unique description to identify the Transfer Job.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#description StorageTransferJob#description}
    */
    readonly description: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#id StorageTransferJob#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 name of the Transfer Job.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#name StorageTransferJob#name}
    */
    readonly name?: string;
    /**
    * The project in which the resource belongs. If it is not provided, the provider project is used.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#project StorageTransferJob#project}
    */
    readonly project?: string;
    /**
    * Status of the job. Default: ENABLED. NOTE: The effect of the new job status takes place during a subsequent job run. For example, if you change the job status from ENABLED to DISABLED, and an operation spawned by the transfer is running, the status change would not affect the current operation.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#status StorageTransferJob#status}
    */
    readonly status?: string;
    /**
    * event_stream block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#event_stream StorageTransferJob#event_stream}
    */
    readonly eventStream?: StorageTransferJobEventStream;
    /**
    * logging_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#logging_config StorageTransferJob#logging_config}
    */
    readonly loggingConfig?: StorageTransferJobLoggingConfig;
    /**
    * notification_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#notification_config StorageTransferJob#notification_config}
    */
    readonly notificationConfig?: StorageTransferJobNotificationConfig;
    /**
    * replication_spec block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#replication_spec StorageTransferJob#replication_spec}
    */
    readonly replicationSpec?: StorageTransferJobReplicationSpec;
    /**
    * schedule block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#schedule StorageTransferJob#schedule}
    */
    readonly schedule?: StorageTransferJobSchedule;
    /**
    * transfer_spec block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#transfer_spec StorageTransferJob#transfer_spec}
    */
    readonly transferSpec?: StorageTransferJobTransferSpec;
}
export interface StorageTransferJobEventStream {
    /**
    * Specifies the data and time at which Storage Transfer Service stops listening for events from this stream. After this time, any transfers in progress will complete, but no new transfers are initiated
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#event_stream_expiration_time StorageTransferJob#event_stream_expiration_time}
    */
    readonly eventStreamExpirationTime?: string;
    /**
    * Specifies the date and time that Storage Transfer Service starts listening for events from this stream. If no start time is specified or start time is in the past, Storage Transfer Service starts listening immediately
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#event_stream_start_time StorageTransferJob#event_stream_start_time}
    */
    readonly eventStreamStartTime?: string;
    /**
    * Specifies a unique name of the resource such as AWS SQS ARN in the form 'arn:aws:sqs:region:account_id:queue_name', or Pub/Sub subscription resource name in the form 'projects/{project}/subscriptions/{sub}'
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#name StorageTransferJob#name}
    */
    readonly name: string;
}
export declare function storageTransferJobEventStreamToTerraform(struct?: StorageTransferJobEventStreamOutputReference | StorageTransferJobEventStream): any;
export declare function storageTransferJobEventStreamToHclTerraform(struct?: StorageTransferJobEventStreamOutputReference | StorageTransferJobEventStream): any;
export declare class StorageTransferJobEventStreamOutputReference 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(): StorageTransferJobEventStream | undefined;
    set internalValue(value: StorageTransferJobEventStream | undefined);
    private _eventStreamExpirationTime?;
    get eventStreamExpirationTime(): string;
    set eventStreamExpirationTime(value: string);
    resetEventStreamExpirationTime(): void;
    get eventStreamExpirationTimeInput(): string | undefined;
    private _eventStreamStartTime?;
    get eventStreamStartTime(): string;
    set eventStreamStartTime(value: string);
    resetEventStreamStartTime(): void;
    get eventStreamStartTimeInput(): string | undefined;
    private _name?;
    get name(): string;
    set name(value: string);
    get nameInput(): string | undefined;
}
export interface StorageTransferJobLoggingConfig {
    /**
    * For transfers with a PosixFilesystem source, this option enables the Cloud Storage transfer logs for this transfer.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#enable_on_prem_gcs_transfer_logs StorageTransferJob#enable_on_prem_gcs_transfer_logs}
    */
    readonly enableOnPremGcsTransferLogs?: boolean | cdktf.IResolvable;
    /**
    * States in which logActions are logged. Not supported for transfers with PosifxFilesystem data sources; use enable_on_prem_gcs_transfer_logs instead.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#log_action_states StorageTransferJob#log_action_states}
    */
    readonly logActionStates?: string[];
    /**
    * Specifies the actions to be logged. Not supported for transfers with PosifxFilesystem data sources; use enable_on_prem_gcs_transfer_logs instead.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#log_actions StorageTransferJob#log_actions}
    */
    readonly logActions?: string[];
}
export declare function storageTransferJobLoggingConfigToTerraform(struct?: StorageTransferJobLoggingConfigOutputReference | StorageTransferJobLoggingConfig): any;
export declare function storageTransferJobLoggingConfigToHclTerraform(struct?: StorageTransferJobLoggingConfigOutputReference | StorageTransferJobLoggingConfig): any;
export declare class StorageTransferJobLoggingConfigOutputReference 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(): StorageTransferJobLoggingConfig | undefined;
    set internalValue(value: StorageTransferJobLoggingConfig | undefined);
    private _enableOnPremGcsTransferLogs?;
    get enableOnPremGcsTransferLogs(): boolean | cdktf.IResolvable;
    set enableOnPremGcsTransferLogs(value: boolean | cdktf.IResolvable);
    resetEnableOnPremGcsTransferLogs(): void;
    get enableOnPremGcsTransferLogsInput(): boolean | cdktf.IResolvable | undefined;
    private _logActionStates?;
    get logActionStates(): string[];
    set logActionStates(value: string[]);
    resetLogActionStates(): void;
    get logActionStatesInput(): string[] | undefined;
    private _logActions?;
    get logActions(): string[];
    set logActions(value: string[]);
    resetLogActions(): void;
    get logActionsInput(): string[] | undefined;
}
export interface StorageTransferJobNotificationConfig {
    /**
    * Event types for which a notification is desired. If empty, send notifications for all event types. The valid types are "TRANSFER_OPERATION_SUCCESS", "TRANSFER_OPERATION_FAILED", "TRANSFER_OPERATION_ABORTED".
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#event_types StorageTransferJob#event_types}
    */
    readonly eventTypes?: string[];
    /**
    * The desired format of the notification message payloads. One of "NONE" or "JSON".
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#payload_format StorageTransferJob#payload_format}
    */
    readonly payloadFormat: string;
    /**
    * The Topic.name of the Pub/Sub topic to which to publish notifications.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#pubsub_topic StorageTransferJob#pubsub_topic}
    */
    readonly pubsubTopic: string;
}
export declare function storageTransferJobNotificationConfigToTerraform(struct?: StorageTransferJobNotificationConfigOutputReference | StorageTransferJobNotificationConfig): any;
export declare function storageTransferJobNotificationConfigToHclTerraform(struct?: StorageTransferJobNotificationConfigOutputReference | StorageTransferJobNotificationConfig): any;
export declare class StorageTransferJobNotificationConfigOutputReference 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(): StorageTransferJobNotificationConfig | undefined;
    set internalValue(value: StorageTransferJobNotificationConfig | undefined);
    private _eventTypes?;
    get eventTypes(): string[];
    set eventTypes(value: string[]);
    resetEventTypes(): void;
    get eventTypesInput(): string[] | undefined;
    private _payloadFormat?;
    get payloadFormat(): string;
    set payloadFormat(value: string);
    get payloadFormatInput(): string | undefined;
    private _pubsubTopic?;
    get pubsubTopic(): string;
    set pubsubTopic(value: string);
    get pubsubTopicInput(): string | undefined;
}
export interface StorageTransferJobReplicationSpecGcsDataSink {
    /**
    * Google Cloud Storage bucket name.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#bucket_name StorageTransferJob#bucket_name}
    */
    readonly bucketName: string;
    /**
    * Google Cloud Storage path in bucket to transfer
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#path StorageTransferJob#path}
    */
    readonly path?: string;
}
export declare function storageTransferJobReplicationSpecGcsDataSinkToTerraform(struct?: StorageTransferJobReplicationSpecGcsDataSinkOutputReference | StorageTransferJobReplicationSpecGcsDataSink): any;
export declare function storageTransferJobReplicationSpecGcsDataSinkToHclTerraform(struct?: StorageTransferJobReplicationSpecGcsDataSinkOutputReference | StorageTransferJobReplicationSpecGcsDataSink): any;
export declare class StorageTransferJobReplicationSpecGcsDataSinkOutputReference 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(): StorageTransferJobReplicationSpecGcsDataSink | undefined;
    set internalValue(value: StorageTransferJobReplicationSpecGcsDataSink | undefined);
    private _bucketName?;
    get bucketName(): string;
    set bucketName(value: string);
    get bucketNameInput(): string | undefined;
    private _path?;
    get path(): string;
    set path(value: string);
    resetPath(): void;
    get pathInput(): string | undefined;
}
export interface StorageTransferJobReplicationSpecGcsDataSource {
    /**
    * Google Cloud Storage bucket name.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#bucket_name StorageTransferJob#bucket_name}
    */
    readonly bucketName: string;
    /**
    * Google Cloud Storage path in bucket to transfer
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#path StorageTransferJob#path}
    */
    readonly path?: string;
}
export declare function storageTransferJobReplicationSpecGcsDataSourceToTerraform(struct?: StorageTransferJobReplicationSpecGcsDataSourceOutputReference | StorageTransferJobReplicationSpecGcsDataSource): any;
export declare function storageTransferJobReplicationSpecGcsDataSourceToHclTerraform(struct?: StorageTransferJobReplicationSpecGcsDataSourceOutputReference | StorageTransferJobReplicationSpecGcsDataSource): any;
export declare class StorageTransferJobReplicationSpecGcsDataSourceOutputReference 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(): StorageTransferJobReplicationSpecGcsDataSource | undefined;
    set internalValue(value: StorageTransferJobReplicationSpecGcsDataSource | undefined);
    private _bucketName?;
    get bucketName(): string;
    set bucketName(value: string);
    get bucketNameInput(): string | undefined;
    private _path?;
    get path(): string;
    set path(value: string);
    resetPath(): void;
    get pathInput(): string | undefined;
}
export interface StorageTransferJobReplicationSpecObjectConditions {
    /**
    * exclude_prefixes must follow the requirements described for include_prefixes.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#exclude_prefixes StorageTransferJob#exclude_prefixes}
    */
    readonly excludePrefixes?: string[];
    /**
    * If include_refixes is specified, objects that satisfy the object conditions must have names that start with one of the include_prefixes and that do not start with any of the exclude_prefixes. If include_prefixes is not specified, all objects except those that have names starting with one of the exclude_prefixes must satisfy the object conditions.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#include_prefixes StorageTransferJob#include_prefixes}
    */
    readonly includePrefixes?: string[];
    /**
    * If specified, only objects with a "last modification time" before this timestamp and objects that don't have a "last modification time" are transferred. 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.50.0/docs/resources/storage_transfer_job#last_modified_before StorageTransferJob#last_modified_before}
    */
    readonly lastModifiedBefore?: string;
    /**
    * If specified, only objects with a "last modification time" on or after this timestamp and objects that don't have a "last modification time" are transferred. 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.50.0/docs/resources/storage_transfer_job#last_modified_since StorageTransferJob#last_modified_since}
    */
    readonly lastModifiedSince?: string;
    /**
    * A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s".
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#max_time_elapsed_since_last_modification StorageTransferJob#max_time_elapsed_since_last_modification}
    */
    readonly maxTimeElapsedSinceLastModification?: string;
    /**
    * A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s".
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#min_time_elapsed_since_last_modification StorageTransferJob#min_time_elapsed_since_last_modification}
    */
    readonly minTimeElapsedSinceLastModification?: string;
}
export declare function storageTransferJobReplicationSpecObjectConditionsToTerraform(struct?: StorageTransferJobReplicationSpecObjectConditionsOutputReference | StorageTransferJobReplicationSpecObjectConditions): any;
export declare function storageTransferJobReplicationSpecObjectConditionsToHclTerraform(struct?: StorageTransferJobReplicationSpecObjectConditionsOutputReference | StorageTransferJobReplicationSpecObjectConditions): any;
export declare class StorageTransferJobReplicationSpecObjectConditionsOutputReference 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(): StorageTransferJobReplicationSpecObjectConditions | undefined;
    set internalValue(value: StorageTransferJobReplicationSpecObjectConditions | undefined);
    private _excludePrefixes?;
    get excludePrefixes(): string[];
    set excludePrefixes(value: string[]);
    resetExcludePrefixes(): void;
    get excludePrefixesInput(): string[] | undefined;
    private _includePrefixes?;
    get includePrefixes(): string[];
    set includePrefixes(value: string[]);
    resetIncludePrefixes(): void;
    get includePrefixesInput(): string[] | undefined;
    private _lastModifiedBefore?;
    get lastModifiedBefore(): string;
    set lastModifiedBefore(value: string);
    resetLastModifiedBefore(): void;
    get lastModifiedBeforeInput(): string | undefined;
    private _lastModifiedSince?;
    get lastModifiedSince(): string;
    set lastModifiedSince(value: string);
    resetLastModifiedSince(): void;
    get lastModifiedSinceInput(): string | undefined;
    private _maxTimeElapsedSinceLastModification?;
    get maxTimeElapsedSinceLastModification(): string;
    set maxTimeElapsedSinceLastModification(value: string);
    resetMaxTimeElapsedSinceLastModification(): void;
    get maxTimeElapsedSinceLastModificationInput(): string | undefined;
    private _minTimeElapsedSinceLastModification?;
    get minTimeElapsedSinceLastModification(): string;
    set minTimeElapsedSinceLastModification(value: string);
    resetMinTimeElapsedSinceLastModification(): void;
    get minTimeElapsedSinceLastModificationInput(): string | undefined;
}
export interface StorageTransferJobReplicationSpecTransferOptionsMetadataOptions {
    /**
    * Specifies how each object's ACLs should be preserved for transfers between Google Cloud Storage buckets
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#acl StorageTransferJob#acl}
    */
    readonly acl?: string;
    /**
    * Specifies how each file's POSIX group ID (GID) attribute should be handled by the transfer.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#gid StorageTransferJob#gid}
    */
    readonly gid?: string;
    /**
    * Specifies how each object's Cloud KMS customer-managed encryption key (CMEK) is preserved for transfers between Google Cloud Storage buckets
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#kms_key StorageTransferJob#kms_key}
    */
    readonly kmsKey?: string;
    /**
    * Specifies how each file's mode attribute should be handled by the transfer.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#mode StorageTransferJob#mode}
    */
    readonly mode?: string;
    /**
    * Specifies the storage class to set on objects being transferred to Google Cloud Storage buckets
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#storage_class StorageTransferJob#storage_class}
    */
    readonly storageClass?: string;
    /**
    * Specifies how symlinks should be handled by the transfer.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#symlink StorageTransferJob#symlink}
    */
    readonly symlink?: string;
    /**
    * SSpecifies how each object's temporary hold status should be preserved for transfers between Google Cloud Storage buckets
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#temporary_hold StorageTransferJob#temporary_hold}
    */
    readonly temporaryHold?: string;
    /**
    * Specifies how each object's timeCreated metadata is preserved for transfers.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#time_created StorageTransferJob#time_created}
    */
    readonly timeCreated?: string;
    /**
    * Specifies how each file's POSIX user ID (UID) attribute should be handled by the transfer.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#uid StorageTransferJob#uid}
    */
    readonly uid?: string;
}
export declare function storageTransferJobReplicationSpecTransferOptionsMetadataOptionsToTerraform(struct?: StorageTransferJobReplicationSpecTransferOptionsMetadataOptionsOutputReference | StorageTransferJobReplicationSpecTransferOptionsMetadataOptions): any;
export declare function storageTransferJobReplicationSpecTransferOptionsMetadataOptionsToHclTerraform(struct?: StorageTransferJobReplicationSpecTransferOptionsMetadataOptionsOutputReference | StorageTransferJobReplicationSpecTransferOptionsMetadataOptions): any;
export declare class StorageTransferJobReplicationSpecTransferOptionsMetadataOptionsOutputReference 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(): StorageTransferJobReplicationSpecTransferOptionsMetadataOptions | undefined;
    set internalValue(value: StorageTransferJobReplicationSpecTransferOptionsMetadataOptions | undefined);
    private _acl?;
    get acl(): string;
    set acl(value: string);
    resetAcl(): void;
    get aclInput(): string | undefined;
    private _gid?;
    get gid(): string;
    set gid(value: string);
    resetGid(): void;
    get gidInput(): string | undefined;
    private _kmsKey?;
    get kmsKey(): string;
    set kmsKey(value: string);
    resetKmsKey(): void;
    get kmsKeyInput(): string | undefined;
    private _mode?;
    get mode(): string;
    set mode(value: string);
    resetMode(): void;
    get modeInput(): string | undefined;
    private _storageClass?;
    get storageClass(): string;
    set storageClass(value: string);
    resetStorageClass(): void;
    get storageClassInput(): string | undefined;
    private _symlink?;
    get symlink(): string;
    set symlink(value: string);
    resetSymlink(): void;
    get symlinkInput(): string | undefined;
    private _temporaryHold?;
    get temporaryHold(): string;
    set temporaryHold(value: string);
    resetTemporaryHold(): void;
    get temporaryHoldInput(): string | undefined;
    private _timeCreated?;
    get timeCreated(): string;
    set timeCreated(value: string);
    resetTimeCreated(): void;
    get timeCreatedInput(): string | undefined;
    private _uid?;
    get uid(): string;
    set uid(value: string);
    resetUid(): void;
    get uidInput(): string | undefined;
}
export interface StorageTransferJobReplicationSpecTransferOptions {
    /**
    * Whether objects should be deleted from the source after they are transferred to the sink. Note that this option and delete_objects_unique_in_sink are mutually exclusive.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#delete_objects_from_source_after_transfer StorageTransferJob#delete_objects_from_source_after_transfer}
    */
    readonly deleteObjectsFromSourceAfterTransfer?: boolean | cdktf.IResolvable;
    /**
    * Whether objects that exist only in the sink should be deleted. Note that this option and delete_objects_from_source_after_transfer are mutually exclusive.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#delete_objects_unique_in_sink StorageTransferJob#delete_objects_unique_in_sink}
    */
    readonly deleteObjectsUniqueInSink?: boolean | cdktf.IResolvable;
    /**
    * Whether overwriting objects that already exist in the sink is allowed.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#overwrite_objects_already_existing_in_sink StorageTransferJob#overwrite_objects_already_existing_in_sink}
    */
    readonly overwriteObjectsAlreadyExistingInSink?: boolean | cdktf.IResolvable;
    /**
    * When to overwrite objects that already exist in the sink. If not set, overwrite behavior is determined by overwriteObjectsAlreadyExistingInSink.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#overwrite_when StorageTransferJob#overwrite_when}
    */
    readonly overwriteWhen?: string;
    /**
    * metadata_options block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#metadata_options StorageTransferJob#metadata_options}
    */
    readonly metadataOptions?: StorageTransferJobReplicationSpecTransferOptionsMetadataOptions;
}
export declare function storageTransferJobReplicationSpecTransferOptionsToTerraform(struct?: StorageTransferJobReplicationSpecTransferOptionsOutputReference | StorageTransferJobReplicationSpecTransferOptions): any;
export declare function storageTransferJobReplicationSpecTransferOptionsToHclTerraform(struct?: StorageTransferJobReplicationSpecTransferOptionsOutputReference | StorageTransferJobReplicationSpecTransferOptions): any;
export declare class StorageTransferJobReplicationSpecTransferOptionsOutputReference 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(): StorageTransferJobReplicationSpecTransferOptions | undefined;
    set internalValue(value: StorageTransferJobReplicationSpecTransferOptions | undefined);
    private _deleteObjectsFromSourceAfterTransfer?;
    get deleteObjectsFromSourceAfterTransfer(): boolean | cdktf.IResolvable;
    set deleteObjectsFromSourceAfterTransfer(value: boolean | cdktf.IResolvable);
    resetDeleteObjectsFromSourceAfterTransfer(): void;
    get deleteObjectsFromSourceAfterTransferInput(): boolean | cdktf.IResolvable | undefined;
    private _deleteObjectsUniqueInSink?;
    get deleteObjectsUniqueInSink(): boolean | cdktf.IResolvable;
    set deleteObjectsUniqueInSink(value: boolean | cdktf.IResolvable);
    resetDeleteObjectsUniqueInSink(): void;
    get deleteObjectsUniqueInSinkInput(): boolean | cdktf.IResolvable | undefined;
    private _overwriteObjectsAlreadyExistingInSink?;
    get overwriteObjectsAlreadyExistingInSink(): boolean | cdktf.IResolvable;
    set overwriteObjectsAlreadyExistingInSink(value: boolean | cdktf.IResolvable);
    resetOverwriteObjectsAlreadyExistingInSink(): void;
    get overwriteObjectsAlreadyExistingInSinkInput(): boolean | cdktf.IResolvable | undefined;
    private _overwriteWhen?;
    get overwriteWhen(): string;
    set overwriteWhen(value: string);
    resetOverwriteWhen(): void;
    get overwriteWhenInput(): string | undefined;
    private _metadataOptions;
    get metadataOptions(): StorageTransferJobReplicationSpecTransferOptionsMetadataOptionsOutputReference;
    putMetadataOptions(value: StorageTransferJobReplicationSpecTransferOptionsMetadataOptions): void;
    resetMetadataOptions(): void;
    get metadataOptionsInput(): StorageTransferJobReplicationSpecTransferOptionsMetadataOptions | undefined;
}
export interface StorageTransferJobReplicationSpec {
    /**
    * gcs_data_sink block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#gcs_data_sink StorageTransferJob#gcs_data_sink}
    */
    readonly gcsDataSink?: StorageTransferJobReplicationSpecGcsDataSink;
    /**
    * gcs_data_source block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#gcs_data_source StorageTransferJob#gcs_data_source}
    */
    readonly gcsDataSource?: StorageTransferJobReplicationSpecGcsDataSource;
    /**
    * object_conditions block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#object_conditions StorageTransferJob#object_conditions}
    */
    readonly objectConditions?: StorageTransferJobReplicationSpecObjectConditions;
    /**
    * transfer_options block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#transfer_options StorageTransferJob#transfer_options}
    */
    readonly transferOptions?: StorageTransferJobReplicationSpecTransferOptions;
}
export declare function storageTransferJobReplicationSpecToTerraform(struct?: StorageTransferJobReplicationSpecOutputReference | StorageTransferJobReplicationSpec): any;
export declare function storageTransferJobReplicationSpecToHclTerraform(struct?: StorageTransferJobReplicationSpecOutputReference | StorageTransferJobReplicationSpec): any;
export declare class StorageTransferJobReplicationSpecOutputReference 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(): StorageTransferJobReplicationSpec | undefined;
    set internalValue(value: StorageTransferJobReplicationSpec | undefined);
    private _gcsDataSink;
    get gcsDataSink(): StorageTransferJobReplicationSpecGcsDataSinkOutputReference;
    putGcsDataSink(value: StorageTransferJobReplicationSpecGcsDataSink): void;
    resetGcsDataSink(): void;
    get gcsDataSinkInput(): StorageTransferJobReplicationSpecGcsDataSink | undefined;
    private _gcsDataSource;
    get gcsDataSource(): StorageTransferJobReplicationSpecGcsDataSourceOutputReference;
    putGcsDataSource(value: StorageTransferJobReplicationSpecGcsDataSource): void;
    resetGcsDataSource(): void;
    get gcsDataSourceInput(): StorageTransferJobReplicationSpecGcsDataSource | undefined;
    private _objectConditions;
    get objectConditions(): StorageTransferJobReplicationSpecObjectConditionsOutputReference;
    putObjectConditions(value: StorageTransferJobReplicationSpecObjectConditions): void;
    resetObjectConditions(): void;
    get objectConditionsInput(): StorageTransferJobReplicationSpecObjectConditions | undefined;
    private _transferOptions;
    get transferOptions(): StorageTransferJobReplicationSpecTransferOptionsOutputReference;
    putTransferOptions(value: StorageTransferJobReplicationSpecTransferOptions): void;
    resetTransferOptions(): void;
    get transferOptionsInput(): StorageTransferJobReplicationSpecTransferOptions | undefined;
}
export interface StorageTransferJobScheduleScheduleEndDate {
    /**
    * Day of month. Must be from 1 to 31 and valid for the year and month.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#day StorageTransferJob#day}
    */
    readonly day: number;
    /**
    * Month of year. Must be from 1 to 12.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#month StorageTransferJob#month}
    */
    readonly month: number;
    /**
    * Year of date. Must be from 1 to 9999.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#year StorageTransferJob#year}
    */
    readonly year: number;
}
export declare function storageTransferJobScheduleScheduleEndDateToTerraform(struct?: StorageTransferJobScheduleScheduleEndDateOutputReference | StorageTransferJobScheduleScheduleEndDate): any;
export declare function storageTransferJobScheduleScheduleEndDateToHclTerraform(struct?: StorageTransferJobScheduleScheduleEndDateOutputReference | StorageTransferJobScheduleScheduleEndDate): any;
export declare class StorageTransferJobScheduleScheduleEndDateOutputReference 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(): StorageTransferJobScheduleScheduleEndDate | undefined;
    set internalValue(value: StorageTransferJobScheduleScheduleEndDate | undefined);
    private _day?;
    get day(): number;
    set day(value: number);
    get dayInput(): number | undefined;
    private _month?;
    get month(): number;
    set month(value: number);
    get monthInput(): number | undefined;
    private _year?;
    get year(): number;
    set year(value: number);
    get yearInput(): number | undefined;
}
export interface StorageTransferJobScheduleScheduleStartDate {
    /**
    * Day of month. Must be from 1 to 31 and valid for the year and month.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#day StorageTransferJob#day}
    */
    readonly day: number;
    /**
    * Month of year. Must be from 1 to 12.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#month StorageTransferJob#month}
    */
    readonly month: number;
    /**
    * Year of date. Must be from 1 to 9999.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#year StorageTransferJob#year}
    */
    readonly year: number;
}
export declare function storageTransferJobScheduleScheduleStartDateToTerraform(struct?: StorageTransferJobScheduleScheduleStartDateOutputReference | StorageTransferJobScheduleScheduleStartDate): any;
export declare function storageTransferJobScheduleScheduleStartDateToHclTerraform(struct?: StorageTransferJobScheduleScheduleStartDateOutputReference | StorageTransferJobScheduleScheduleStartDate): any;
export declare class StorageTransferJobScheduleScheduleStartDateOutputReference 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(): StorageTransferJobScheduleScheduleStartDate | undefined;
    set internalValue(value: StorageTransferJobScheduleScheduleStartDate | undefined);
    private _day?;
    get day(): number;
    set day(value: number);
    get dayInput(): number | undefined;
    private _month?;
    get month(): number;
    set month(value: number);
    get monthInput(): number | undefined;
    private _year?;
    get year(): number;
    set year(value: number);
    get yearInput(): number | undefined;
}
export interface StorageTransferJobScheduleStartTimeOfDay {
    /**
    * Hours of day in 24 hour format. Should be from 0 to 23.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#hours StorageTransferJob#hours}
    */
    readonly hours: number;
    /**
    * Minutes of hour of day. Must be from 0 to 59.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#minutes StorageTransferJob#minutes}
    */
    readonly minutes: number;
    /**
    * Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#nanos StorageTransferJob#nanos}
    */
    readonly nanos: number;
    /**
    * Seconds of minutes of the time. Must normally be from 0 to 59.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#seconds StorageTransferJob#seconds}
    */
    readonly seconds: number;
}
export declare function storageTransferJobScheduleStartTimeOfDayToTerraform(struct?: StorageTransferJobScheduleStartTimeOfDayOutputReference | StorageTransferJobScheduleStartTimeOfDay): any;
export declare function storageTransferJobScheduleStartTimeOfDayToHclTerraform(struct?: StorageTransferJobScheduleStartTimeOfDayOutputReference | StorageTransferJobScheduleStartTimeOfDay): any;
export declare class StorageTransferJobScheduleStartTimeOfDayOutputReference 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(): StorageTransferJobScheduleStartTimeOfDay | undefined;
    set internalValue(value: StorageTransferJobScheduleStartTimeOfDay | undefined);
    private _hours?;
    get hours(): number;
    set hours(value: number);
    get hoursInput(): number | undefined;
    private _minutes?;
    get minutes(): number;
    set minutes(value: number);
    get minutesInput(): number | undefined;
    private _nanos?;
    get nanos(): number;
    set nanos(value: number);
    get nanosInput(): number | undefined;
    private _seconds?;
    get seconds(): number;
    set seconds(value: number);
    get secondsInput(): number | undefined;
}
export interface StorageTransferJobSchedule {
    /**
    * Interval between the start of each scheduled transfer. If unspecified, the default value is 24 hours. This value may not be less than 1 hour. A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s".
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#repeat_interval StorageTransferJob#repeat_interval}
    */
    readonly repeatInterval?: string;
    /**
    * schedule_end_date block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#schedule_end_date StorageTransferJob#schedule_end_date}
    */
    readonly scheduleEndDate?: StorageTransferJobScheduleScheduleEndDate;
    /**
    * schedule_start_date block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#schedule_start_date StorageTransferJob#schedule_start_date}
    */
    readonly scheduleStartDate: StorageTransferJobScheduleScheduleStartDate;
    /**
    * start_time_of_day block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#start_time_of_day StorageTransferJob#start_time_of_day}
    */
    readonly startTimeOfDay?: StorageTransferJobScheduleStartTimeOfDay;
}
export declare function storageTransferJobScheduleToTerraform(struct?: StorageTransferJobScheduleOutputReference | StorageTransferJobSchedule): any;
export declare function storageTransferJobScheduleToHclTerraform(struct?: StorageTransferJobScheduleOutputReference | StorageTransferJobSchedule): any;
export declare class StorageTransferJobScheduleOutputReference 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(): StorageTransferJobSchedule | undefined;
    set internalValue(value: StorageTransferJobSchedule | undefined);
    private _repeatInterval?;
    get repeatInterval(): string;
    set repeatInterval(value: string);
    resetRepeatInterval(): void;
    get repeatIntervalInput(): string | undefined;
    private _scheduleEndDate;
    get scheduleEndDate(): StorageTransferJobScheduleScheduleEndDateOutputReference;
    putScheduleEndDate(value: StorageTransferJobScheduleScheduleEndDate): void;
    resetScheduleEndDate(): void;
    get scheduleEndDateInput(): StorageTransferJobScheduleScheduleEndDate | undefined;
    private _scheduleStartDate;
    get scheduleStartDate(): StorageTransferJobScheduleScheduleStartDateOutputReference;
    putScheduleStartDate(value: StorageTransferJobScheduleScheduleStartDate): void;
    get scheduleStartDateInput(): StorageTransferJobScheduleScheduleStartDate | undefined;
    private _startTimeOfDay;
    get startTimeOfDay(): StorageTransferJobScheduleStartTimeOfDayOutputReference;
    putStartTimeOfDay(value: StorageTransferJobScheduleStartTimeOfDay): void;
    resetStartTimeOfDay(): void;
    get startTimeOfDayInput(): StorageTransferJobScheduleStartTimeOfDay | undefined;
}
export interface StorageTransferJobTransferSpecAwsS3DataSourceAwsAccessKey {
    /**
    * AWS Key ID.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#access_key_id StorageTransferJob#access_key_id}
    */
    readonly accessKeyId: string;
    /**
    * AWS Secret Access Key.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#secret_access_key StorageTransferJob#secret_access_key}
    */
    readonly secretAccessKey: string;
}
export declare function storageTransferJobTransferSpecAwsS3DataSourceAwsAccessKeyToTerraform(struct?: StorageTransferJobTransferSpecAwsS3DataSourceAwsAccessKeyOutputReference | StorageTransferJobTransferSpecAwsS3DataSourceAwsAccessKey): any;
export declare function storageTransferJobTransferSpecAwsS3DataSourceAwsAccessKeyToHclTerraform(struct?: StorageTransferJobTransferSpecAwsS3DataSourceAwsAccessKeyOutputReference | StorageTransferJobTransferSpecAwsS3DataSourceAwsAccessKey): any;
export declare class StorageTransferJobTransferSpecAwsS3DataSourceAwsAccessKeyOutputReference 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(): StorageTransferJobTransferSpecAwsS3DataSourceAwsAccessKey | undefined;
    set internalValue(value: StorageTransferJobTransferSpecAwsS3DataSourceAwsAccessKey | undefined);
    private _accessKeyId?;
    get accessKeyId(): string;
    set accessKeyId(value: string);
    get accessKeyIdInput(): string | undefined;
    private _secretAccessKey?;
    get secretAccessKey(): string;
    set secretAccessKey(value: string);
    get secretAccessKeyInput(): string | undefined;
}
export interface StorageTransferJobTransferSpecAwsS3DataSource {
    /**
    * S3 Bucket name.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#bucket_name StorageTransferJob#bucket_name}
    */
    readonly bucketName: string;
    /**
    * The CloudFront distribution domain name pointing to this bucket, to use when fetching. See [Transfer from S3 via CloudFront](https://cloud.google.com/storage-transfer/docs/s3-cloudfront) for more information. Format: https://{id}.cloudfront.net or any valid custom domain. Must begin with https://.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#cloudfront_domain StorageTransferJob#cloudfront_domain}
    */
    readonly cloudfrontDomain?: string;
    /**
    * Egress bytes over a Google-managed private network. This network is shared between other users of Storage Transfer Service.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#managed_private_network StorageTransferJob#managed_private_network}
    */
    readonly managedPrivateNetwork?: boolean | cdktf.IResolvable;
    /**
    * S3 Bucket path in bucket to transfer.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#path StorageTransferJob#path}
    */
    readonly path?: string;
    /**
    * The Amazon Resource Name (ARN) of the role to support temporary credentials via 'AssumeRoleWithWebIdentity'. For more information about ARNs, see [IAM ARNs](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns). When a role ARN is provided, Transfer Service fetches temporary credentials for the session using a 'AssumeRoleWithWebIdentity' call for the provided role using the [GoogleServiceAccount][] for this project.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#role_arn StorageTransferJob#role_arn}
    */
    readonly roleArn?: string;
    /**
    * aws_access_key block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#aws_access_key StorageTransferJob#aws_access_key}
    */
    readonly awsAccessKey?: StorageTransferJobTransferSpecAwsS3DataSourceAwsAccessKey;
}
export declare function storageTransferJobTransferSpecAwsS3DataSourceToTerraform(struct?: StorageTransferJobTransferSpecAwsS3DataSourceOutputReference | StorageTransferJobTransferSpecAwsS3DataSource): any;
export declare function storageTransferJobTransferSpecAwsS3DataSourceToHclTerraform(struct?: StorageTransferJobTransferSpecAwsS3DataSourceOutputReference | StorageTransferJobTransferSpecAwsS3DataSource): any;
export declare class StorageTransferJobTransferSpecAwsS3DataSourceOutputReference 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(): StorageTransferJobTransferSpecAwsS3DataSource | undefined;
    set internalValue(value: StorageTransferJobTransferSpecAwsS3DataSource | undefined);
    private _bucketName?;
    get bucketName(): string;
    set bucketName(value: string);
    get bucketNameInput(): string | undefined;
    private _cloudfrontDomain?;
    get cloudfrontDomain(): string;
    set cloudfrontDomain(value: string);
    resetCloudfrontDomain(): void;
    get cloudfrontDomainInput(): string | undefined;
    private _managedPrivateNetwork?;
    get managedPrivateNetwork(): boolean | cdktf.IResolvable;
    set managedPrivateNetwork(value: boolean | cdktf.IResolvable);
    resetManagedPrivateNetwork(): void;
    get managedPrivateNetworkInput(): boolean | cdktf.IResolvable | undefined;
    private _path?;
    get path(): string;
    set path(value: string);
    resetPath(): void;
    get pathInput(): string | undefined;
    private _roleArn?;
    get roleArn(): string;
    set roleArn(value: string);
    resetRoleArn(): void;
    get roleArnInput(): string | undefined;
    private _awsAccessKey;
    get awsAccessKey(): StorageTransferJobTransferSpecAwsS3DataSourceAwsAccessKeyOutputReference;
    putAwsAccessKey(value: StorageTransferJobTransferSpecAwsS3DataSourceAwsAccessKey): void;
    resetAwsAccessKey(): void;
    get awsAccessKeyInput(): StorageTransferJobTransferSpecAwsS3DataSourceAwsAccessKey | undefined;
}
export interface StorageTransferJobTransferSpecAzureBlobStorageDataSourceAzureCredentials {
    /**
    * Azure shared access signature.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#sas_token StorageTransferJob#sas_token}
    */
    readonly sasToken: string;
}
export declare function storageTransferJobTransferSpecAzureBlobStorageDataSourceAzureCredentialsToTerraform(struct?: StorageTransferJobTransferSpecAzureBlobStorageDataSourceAzureCredentialsOutputReference | StorageTransferJobTransferSpecAzureBlobStorageDataSourceAzureCredentials): any;
export declare function storageTransferJobTransferSpecAzureBlobStorageDataSourceAzureCredentialsToHclTerraform(struct?: StorageTransferJobTransferSpecAzureBlobStorageDataSourceAzureCredentialsOutputReference | StorageTransferJobTransferSpecAzureBlobStorageDataSourceAzureCredentials): any;
export declare class StorageTransferJobTransferSpecAzureBlobStorageDataSourceAzureCredentialsOutputReference 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(): StorageTransferJobTransferSpecAzureBlobStorageDataSourceAzureCredentials | undefined;
    set internalValue(value: StorageTransferJobTransferSpecAzureBlobStorageDataSourceAzureCredentials | undefined);
    private _sasToken?;
    get sasToken(): string;
    set sasToken(value: string);
    get sasTokenInput(): string | undefined;
}
export interface StorageTransferJobTransferSpecAzureBlobStorageDataSourceFederatedIdentityConfig {
    /**
    * The client (application) ID of the application with federated credentials.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#client_id StorageTransferJob#client_id}
    */
    readonly clientId: string;
    /**
    * The tenant (directory) ID of the application with federated credentials.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#tenant_id StorageTransferJob#tenant_id}
    */
    readonly tenantId: string;
}
export declare function storageTransferJobTransferSpecAzureBlobStorageDataSourceFederatedIdentityConfigToTerraform(struct?: StorageTransferJobTransferSpecAzureBlobStorageDataSourceFederatedIdentityConfigOutputReference | StorageTransferJobTransferSpecAzureBlobStorageDataSourceFederatedIdentityConfig): any;
export declare function storageTransferJobTransferSpecAzureBlobStorageDataSourceFederatedIdentityConfigToHclTerraform(struct?: StorageTransferJobTransferSpecAzureBlobStorageDataSourceFederatedIdentityConfigOutputReference | StorageTransferJobTransferSpecAzureBlobStorageDataSourceFederatedIdentityConfig): any;
export declare class StorageTransferJobTransferSpecAzureBlobStorageDataSourceFederatedIdentityConfigOutputReference 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(): StorageTransferJobTransferSpecAzureBlobStorageDataSourceFederatedIdentityConfig | undefined;
    set internalValue(value: StorageTransferJobTransferSpecAzureBlobStorageDataSourceFederatedIdentityConfig | undefined);
    private _clientId?;
    get clientId(): string;
    set clientId(value: string);
    get clientIdInput(): string | undefined;
    private _tenantId?;
    get tenantId(): string;
    set tenantId(value: string);
    get tenantIdInput(): string | undefined;
}
export interface StorageTransferJobTransferSpecAzureBlobStorageDataSource {
    /**
    * The container to transfer from the Azure Storage account.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#container StorageTransferJob#container}
    */
    readonly container: string;
    /**
    * The Resource name of a secret in Secret Manager containing SAS Credentials in JSON form. Service Agent must have permissions to access secret. If credentials_secret is specified, do not specify azure_credentials.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#credentials_secret StorageTransferJob#credentials_secret}
    */
    readonly credentialsSecret?: string;
    /**
    * Root path to transfer objects. Must be an empty string or full path name that ends with a '/'. This field is treated as an object prefix. As such, it should generally not begin with a '/'.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#path StorageTransferJob#path}
    */
    readonly path?: string;
    /**
    * The name of the Azure Storage account.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#storage_account StorageTransferJob#storage_account}
    */
    readonly storageAccount: string;
    /**
    * azure_credentials block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#azure_credentials StorageTransferJob#azure_credentials}
    */
    readonly azureCredentials?: StorageTransferJobTransferSpecAzureBlobStorageDataSourceAzureCredentials;
    /**
    * federated_identity_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#federated_identity_config StorageTransferJob#federated_identity_config}
    */
    readonly federatedIdentityConfig?: StorageTransferJobTransferSpecAzureBlobStorageDataSourceFederatedIdentityConfig;
}
export declare function storageTransferJobTransferSpecAzureBlobStorageDataSourceToTerraform(struct?: StorageTransferJobTransferSpecAzureBlobStorageDataSourceOutputReference | StorageTransferJobTransferSpecAzureBlobStorageDataSource): any;
export declare function storageTransferJobTransferSpecAzureBlobStorageDataSourceToHclTerraform(struct?: StorageTransferJobTransferSpecAzureBlobStorageDataSourceOutputReference | StorageTransferJobTransferSpecAzureBlobStorageDataSource): any;
export declare class StorageTransferJobTransferSpecAzureBlobStorageDataSourceOutputReference 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(): StorageTransferJobTransferSpecAzureBlobStorageDataSource | undefined;
    set internalValue(value: StorageTransferJobTransferSpecAzureBlobStorageDataSource | undefined);
    private _container?;
    get container(): string;
    set container(value: string);
    get containerInput(): string | undefined;
    private _credentialsSecret?;
    get credentialsSecret(): string;
    set credentialsSecret(value: string);
    resetCredentialsSecret(): void;
    get credentialsSecretInput(): string | undefined;
    private _path?;
    get path(): string;
    set path(value: string);
    resetPath(): void;
    get pathInput(): string | undefined;
    private _storageAccount?;
    get storageAccount(): string;
    set storageAccount(value: string);
    get storageAccountInput(): string | undefined;
    private _azureCredentials;
    get azureCredentials(): StorageTransferJobTransferSpecAzureBlobStorageDataSourceAzureCredentialsOutputReference;
    putAzureCredentials(value: StorageTransferJobTransferSpecAzureBlobStorageDataSourceAzureCredentials): void;
    resetAzureCredentials(): void;
    get azureCredentialsInput(): StorageTransferJobTransferSpecAzureBlobStorageDataSourceAzureCredentials | undefined;
    private _federatedIdentityConfig;
    get federatedIdentityConfig(): StorageTransferJobTransferSpecAzureBlobStorageDataSourceFederatedIdentityConfigOutputReference;
    putFederatedIdentityConfig(value: StorageTransferJobTransferSpecAzureBlobStorageDataSourceFederatedIdentityConfig): void;
    resetFederatedIdentityConfig(): void;
    get federatedIdentityConfigInput(): StorageTransferJobTransferSpecAzureBlobStorageDataSourceFederatedIdentityConfig | undefined;
}
export interface StorageTransferJobTransferSpecGcsDataSink {
    /**
    * Google Cloud Storage bucket name.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#bucket_name StorageTransferJob#bucket_name}
    */
    readonly bucketName: string;
    /**
    * Google Cloud Storage path in bucket to transfer
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#path StorageTransferJob#path}
    */
    readonly path?: string;
}
export declare function storageTransferJobTransferSpecGcsDataSinkToTerraform(struct?: StorageTransferJobTransferSpecGcsDataSinkOutputReference | StorageTransferJobTransferSpecGcsDataSink): any;
export declare function storageTransferJobTransferSpecGcsDataSinkToHclTerraform(struct?: StorageTransferJobTransferSpecGcsDataSinkOutputReference | StorageTransferJobTransferSpecGcsDataSink): any;
export declare class StorageTransferJobTransferSpecGcsDataSinkOutputReference 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(): StorageTransferJobTransferSpecGcsDataSink | undefined;
    set internalValue(value: StorageTransferJobTransferSpecGcsDataSink | undefined);
    private _bucketName?;
    get bucketName(): string;
    set bucketName(value: string);
    get bucketNameInput(): string | undefined;
    private _path?;
    get path(): string;
    set path(value: string);
    resetPath(): void;
    get pathInput(): string | undefined;
}
export interface StorageTransferJobTransferSpecGcsDataSource {
    /**
    * Google Cloud Storage bucket name.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#bucket_name StorageTransferJob#bucket_name}
    */
    readonly bucketName: string;
    /**
    * Google Cloud Storage path in bucket to transfer
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#path StorageTransferJob#path}
    */
    readonly path?: string;
}
export declare function storageTransferJobTransferSpecGcsDataSourceToTerraform(struct?: StorageTransferJobTransferSpecGcsDataSourceOutputReference | StorageTransferJobTransferSpecGcsDataSource): any;
export declare function storageTransferJobTransferSpecGcsDataSourceToHclTerraform(struct?: StorageTransferJobTransferSpecGcsDataSourceOutputReference | StorageTransferJobTransferSpecGcsDataSource): any;
export declare class StorageTransferJobTransferSpecGcsDataSourceOutputReference 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(): StorageTransferJobTransferSpecGcsDataSource | undefined;
    set internalValue(value: StorageTransferJobTransferSpecGcsDataSource | undefined);
    private _bucketName?;
    get bucketName(): string;
    set bucketName(value: string);
    get bucketNameInput(): string | undefined;
    private _path?;
    get path(): string;
    set path(value: string);
    resetPath(): void;
    get pathInput(): string | undefined;
}
export interface StorageTransferJobTransferSpecHdfsDataSource {
    /**
    * Directory path to the filesystem.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#path StorageTransferJob#path}
    */
    readonly path: string;
}
export declare function storageTransferJobTransferSpecHdfsDataSourceToTerraform(struct?: StorageTransferJobTransferSpecHdfsDataSourceOutputReference | StorageTransferJobTransferSpecHdfsDataSource): any;
export declare function storageTransferJobTransferSpecHdfsDataSourceToHclTerraform(struct?: StorageTransferJobTransferSpecHdfsDataSourceOutputReference | StorageTransferJobTransferSpecHdfsDataSource): any;
export declare class StorageTransferJobTransferSpecHdfsDataSourceOutputReference 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(): StorageTransferJobTransferSpecHdfsDataSource | undefined;
    set internalValue(value: StorageTransferJobTransferSpecHdfsDataSource | undefined);
    private _path?;
    get path(): string;
    set path(value: string);
    get pathInput(): string | undefined;
}
export interface StorageTransferJobTransferSpecHttpDataSource {
    /**
    * The URL that points to the file that stores the object list entries. This file must allow public access. Currently, only URLs with HTTP and HTTPS schemes are supported.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#list_url StorageTransferJob#list_url}
    */
    readonly listUrl: string;
}
export declare function storageTransferJobTransferSpecHttpDataSourceToTerraform(struct?: StorageTransferJobTransferSpecHttpDataSourceOutputReference | StorageTransferJobTransferSpecHttpDataSource): any;
export declare function storageTransferJobTransferSpecHttpDataSourceToHclTerraform(struct?: StorageTransferJobTransferSpecHttpDataSourceOutputReference | StorageTransferJobTransferSpecHttpDataSource): any;
export declare class StorageTransferJobTransferSpecHttpDataSourceOutputReference 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(): StorageTransferJobTransferSpecHttpDataSource | undefined;
    set internalValue(value: StorageTransferJobTransferSpecHttpDataSource | undefined);
    private _listUrl?;
    get listUrl(): string;
    set listUrl(value: string);
    get listUrlInput(): string | undefined;
}
export interface StorageTransferJobTransferSpecObjectConditions {
    /**
    * exclude_prefixes must follow the requirements described for include_prefixes.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#exclude_prefixes StorageTransferJob#exclude_prefixes}
    */
    readonly excludePrefixes?: string[];
    /**
    * If include_refixes is specified, objects that satisfy the object conditions must have names that start with one of the include_prefixes and that do not start with any of the exclude_prefixes. If include_prefixes is not specified, all objects except those that have names starting with one of the exclude_prefixes must satisfy the object conditions.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#include_prefixes StorageTransferJob#include_prefixes}
    */
    readonly includePrefixes?: string[];
    /**
    * If specified, only objects with a "last modification time" before this timestamp and objects that don't have a "last modification time" are transferred. 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.50.0/docs/resources/storage_transfer_job#last_modified_before StorageTransferJob#last_modified_before}
    */
    readonly lastModifiedBefore?: string;
    /**
    * If specified, only objects with a "last modification time" on or after this timestamp and objects that don't have a "last modification time" are transferred. 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.50.0/docs/resources/storage_transfer_job#last_modified_since StorageTransferJob#last_modified_since}
    */
    readonly lastModifiedSince?: string;
    /**
    * A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s".
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#max_time_elapsed_since_last_modification StorageTransferJob#max_time_elapsed_since_last_modification}
    */
    readonly maxTimeElapsedSinceLastModification?: string;
    /**
    * A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s".
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#min_time_elapsed_since_last_modification StorageTransferJob#min_time_elapsed_since_last_modification}
    */
    readonly minTimeElapsedSinceLastModification?: string;
}
export declare function storageTransferJobTransferSpecObjectConditionsToTerraform(struct?: StorageTransferJobTransferSpecObjectConditionsOutputReference | StorageTransferJobTransferSpecObjectConditions): any;
export declare function storageTransferJobTransferSpecObjectConditionsToHclTerraform(struct?: StorageTransferJobTransferSpecObjectConditionsOutputReference | StorageTransferJobTransferSpecObjectConditions): any;
export declare class StorageTransferJobTransferSpecObjectConditionsOutputReference 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(): StorageTransferJobTransferSpecObjectConditions | undefined;
    set internalValue(value: StorageTransferJobTransferSpecObjectConditions | undefined);
    private _excludePrefixes?;
    get excludePrefixes(): string[];
    set excludePrefixes(value: string[]);
    resetExcludePrefixes(): void;
    get excludePrefixesInput(): string[] | undefined;
    private _includePrefixes?;
    get includePrefixes(): string[];
    set includePrefixes(value: string[]);
    resetIncludePrefixes(): void;
    get includePrefixesInput(): string[] | undefined;
    private _lastModifiedBefore?;
    get lastModifiedBefore(): string;
    set lastModifiedBefore(value: string);
    resetLastModifiedBefore(): void;
    get lastModifiedBeforeInput(): string | undefined;
    private _lastModifiedSince?;
    get lastModifiedSince(): string;
    set lastModifiedSince(value: string);
    resetLastModifiedSince(): void;
    get lastModifiedSinceInput(): string | undefined;
    private _maxTimeElapsedSinceLastModification?;
    get maxTimeElapsedSinceLastModification(): string;
    set maxTimeElapsedSinceLastModification(value: string);
    resetMaxTimeElapsedSinceLastModification(): void;
    get maxTimeElapsedSinceLastModificationInput(): string | undefined;
    private _minTimeElapsedSinceLastModification?;
    get minTimeElapsedSinceLastModification(): string;
    set minTimeElapsedSinceLastModification(value: string);
    resetMinTimeElapsedSinceLastModification(): void;
    get minTimeElapsedSinceLastModificationInput(): string | undefined;
}
export interface StorageTransferJobTransferSpecPosixDataSink {
    /**
    * Root directory path to the filesystem.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#root_directory StorageTransferJob#root_directory}
    */
    readonly rootDirectory: string;
}
export declare function storageTransferJobTransferSpecPosixDataSinkToTerraform(struct?: StorageTransferJobTransferSpecPosixDataSinkOutputReference | StorageTransferJobTransferSpecPosixDataSink): any;
export declare function storageTransferJobTransferSpecPosixDataSinkToHclTerraform(struct?: StorageTransferJobTransferSpecPosixDataSinkOutputReference | StorageTransferJobTransferSpecPosixDataSink): any;
export declare class StorageTransferJobTransferSpecPosixDataSinkOutputReference 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(): StorageTransferJobTransferSpecPosixDataSink | undefined;
    set internalValue(value: StorageTransferJobTransferSpecPosixDataSink | undefined);
    private _rootDirectory?;
    get rootDirectory(): string;
    set rootDirectory(value: string);
    get rootDirectoryInput(): string | undefined;
}
export interface StorageTransferJobTransferSpecPosixDataSource {
    /**
    * Root directory path to the filesystem.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#root_directory StorageTransferJob#root_directory}
    */
    readonly rootDirectory: string;
}
export declare function storageTransferJobTransferSpecPosixDataSourceToTerraform(struct?: StorageTransferJobTransferSpecPosixDataSourceOutputReference | StorageTransferJobTransferSpecPosixDataSource): any;
export declare function storageTransferJobTransferSpecPosixDataSourceToHclTerraform(struct?: StorageTransferJobTransferSpecPosixDataSourceOutputReference | StorageTransferJobTransferSpecPosixDataSource): any;
export declare class StorageTransferJobTransferSpecPosixDataSourceOutputReference 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(): StorageTransferJobTransferSpecPosixDataSource | undefined;
    set internalValue(value: StorageTransferJobTransferSpecPosixDataSource | undefined);
    private _rootDirectory?;
    get rootDirectory(): string;
    set rootDirectory(value: string);
    get rootDirectoryInput(): string | undefined;
}
export interface StorageTransferJobTransferSpecTransferOptionsMetadataOptions {
    /**
    * Specifies how each object's ACLs should be preserved for transfers between Google Cloud Storage buckets
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#acl StorageTransferJob#acl}
    */
    readonly acl?: string;
    /**
    * Specifies how each file's POSIX group ID (GID) attribute should be handled by the transfer.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#gid StorageTransferJob#gid}
    */
    readonly gid?: string;
    /**
    * Specifies how each object's Cloud KMS customer-managed encryption key (CMEK) is preserved for transfers between Google Cloud Storage buckets
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#kms_key StorageTransferJob#kms_key}
    */
    readonly kmsKey?: string;
    /**
    * Specifies how each file's mode attribute should be handled by the transfer.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#mode StorageTransferJob#mode}
    */
    readonly mode?: string;
    /**
    * Specifies the storage class to set on objects being transferred to Google Cloud Storage buckets
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#storage_class StorageTransferJob#storage_class}
    */
    readonly storageClass?: string;
    /**
    * Specifies how symlinks should be handled by the transfer.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#symlink StorageTransferJob#symlink}
    */
    readonly symlink?: string;
    /**
    * SSpecifies how each object's temporary hold status should be preserved for transfers between Google Cloud Storage buckets
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#temporary_hold StorageTransferJob#temporary_hold}
    */
    readonly temporaryHold?: string;
    /**
    * Specifies how each object's timeCreated metadata is preserved for transfers.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#time_created StorageTransferJob#time_created}
    */
    readonly timeCreated?: string;
    /**
    * Specifies how each file's POSIX user ID (UID) attribute should be handled by the transfer.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#uid StorageTransferJob#uid}
    */
    readonly uid?: string;
}
export declare function storageTransferJobTransferSpecTransferOptionsMetadataOptionsToTerraform(struct?: StorageTransferJobTransferSpecTransferOptionsMetadataOptionsOutputReference | StorageTransferJobTransferSpecTransferOptionsMetadataOptions): any;
export declare function storageTransferJobTransferSpecTransferOptionsMetadataOptionsToHclTerraform(struct?: StorageTransferJobTransferSpecTransferOptionsMetadataOptionsOutputReference | StorageTransferJobTransferSpecTransferOptionsMetadataOptions): any;
export declare class StorageTransferJobTransferSpecTransferOptionsMetadataOptionsOutputReference 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(): StorageTransferJobTransferSpecTransferOptionsMetadataOptions | undefined;
    set internalValue(value: StorageTransferJobTransferSpecTransferOptionsMetadataOptions | undefined);
    private _acl?;
    get acl(): string;
    set acl(value: string);
    resetAcl(): void;
    get aclInput(): string | undefined;
    private _gid?;
    get gid(): string;
    set gid(value: string);
    resetGid(): void;
    get gidInput(): string | undefined;
    private _kmsKey?;
    get kmsKey(): string;
    set kmsKey(value: string);
    resetKmsKey(): void;
    get kmsKeyInput(): string | undefined;
    private _mode?;
    get mode(): string;
    set mode(value: string);
    resetMode(): void;
    get modeInput(): string | undefined;
    private _storageClass?;
    get storageClass(): string;
    set storageClass(value: string);
    resetStorageClass(): void;
    get storageClassInput(): string | undefined;
    private _symlink?;
    get symlink(): string;
    set symlink(value: string);
    resetSymlink(): void;
    get symlinkInput(): string | undefined;
    private _temporaryHold?;
    get temporaryHold(): string;
    set temporaryHold(value: string);
    resetTemporaryHold(): void;
    get temporaryHoldInput(): string | undefined;
    private _timeCreated?;
    get timeCreated(): string;
    set timeCreated(value: string);
    resetTimeCreated(): void;
    get timeCreatedInput(): string | undefined;
    private _uid?;
    get uid(): string;
    set uid(value: string);
    resetUid(): void;
    get uidInput(): string | undefined;
}
export interface StorageTransferJobTransferSpecTransferOptions {
    /**
    * Whether objects should be deleted from the source after they are transferred to the sink. Note that this option and delete_objects_unique_in_sink are mutually exclusive.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#delete_objects_from_source_after_transfer StorageTransferJob#delete_objects_from_source_after_transfer}
    */
    readonly deleteObjectsFromSourceAfterTransfer?: boolean | cdktf.IResolvable;
    /**
    * Whether objects that exist only in the sink should be deleted. Note that this option and delete_objects_from_source_after_transfer are mutually exclusive.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#delete_objects_unique_in_sink StorageTransferJob#delete_objects_unique_in_sink}
    */
    readonly deleteObjectsUniqueInSink?: boolean | cdktf.IResolvable;
    /**
    * Whether overwriting objects that already exist in the sink is allowed.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#overwrite_objects_already_existing_in_sink StorageTransferJob#overwrite_objects_already_existing_in_sink}
    */
    readonly overwriteObjectsAlreadyExistingInSink?: boolean | cdktf.IResolvable;
    /**
    * When to overwrite objects that already exist in the sink. If not set, overwrite behavior is determined by overwriteObjectsAlreadyExistingInSink.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#overwrite_when StorageTransferJob#overwrite_when}
    */
    readonly overwriteWhen?: string;
    /**
    * metadata_options block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#metadata_options StorageTransferJob#metadata_options}
    */
    readonly metadataOptions?: StorageTransferJobTransferSpecTransferOptionsMetadataOptions;
}
export declare function storageTransferJobTransferSpecTransferOptionsToTerraform(struct?: StorageTransferJobTransferSpecTransferOptionsOutputReference | StorageTransferJobTransferSpecTransferOptions): any;
export declare function storageTransferJobTransferSpecTransferOptionsToHclTerraform(struct?: StorageTransferJobTransferSpecTransferOptionsOutputReference | StorageTransferJobTransferSpecTransferOptions): any;
export declare class StorageTransferJobTransferSpecTransferOptionsOutputReference 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(): StorageTransferJobTransferSpecTransferOptions | undefined;
    set internalValue(value: StorageTransferJobTransferSpecTransferOptions | undefined);
    private _deleteObjectsFromSourceAfterTransfer?;
    get deleteObjectsFromSourceAfterTransfer(): boolean | cdktf.IResolvable;
    set deleteObjectsFromSourceAfterTransfer(value: boolean | cdktf.IResolvable);
    resetDeleteObjectsFromSourceAfterTransfer(): void;
    get deleteObjectsFromSourceAfterTransferInput(): boolean | cdktf.IResolvable | undefined;
    private _deleteObjectsUniqueInSink?;
    get deleteObjectsUniqueInSink(): boolean | cdktf.IResolvable;
    set deleteObjectsUniqueInSink(value: boolean | cdktf.IResolvable);
    resetDeleteObjectsUniqueInSink(): void;
    get deleteObjectsUniqueInSinkInput(): boolean | cdktf.IResolvable | undefined;
    private _overwriteObjectsAlreadyExistingInSink?;
    get overwriteObjectsAlreadyExistingInSink(): boolean | cdktf.IResolvable;
    set overwriteObjectsAlreadyExistingInSink(value: boolean | cdktf.IResolvable);
    resetOverwriteObjectsAlreadyExistingInSink(): void;
    get overwriteObjectsAlreadyExistingInSinkInput(): boolean | cdktf.IResolvable | undefined;
    private _overwriteWhen?;
    get overwriteWhen(): string;
    set overwriteWhen(value: string);
    resetOverwriteWhen(): void;
    get overwriteWhenInput(): string | undefined;
    private _metadataOptions;
    get metadataOptions(): StorageTransferJobTransferSpecTransferOptionsMetadataOptionsOutputReference;
    putMetadataOptions(value: StorageTransferJobTransferSpecTransferOptionsMetadataOptions): void;
    resetMetadataOptions(): void;
    get metadataOptionsInput(): StorageTransferJobTransferSpecTransferOptionsMetadataOptions | undefined;
}
export interface StorageTransferJobTransferSpec {
    /**
    * Specifies the agent pool name associated with the posix data source. When unspecified, the default name is used.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#sink_agent_pool_name StorageTransferJob#sink_agent_pool_name}
    */
    readonly sinkAgentPoolName?: string;
    /**
    * Specifies the agent pool name associated with the posix data source. When unspecified, the default name is used.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#source_agent_pool_name StorageTransferJob#source_agent_pool_name}
    */
    readonly sourceAgentPoolName?: string;
    /**
    * aws_s3_data_source block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#aws_s3_data_source StorageTransferJob#aws_s3_data_source}
    */
    readonly awsS3DataSource?: StorageTransferJobTransferSpecAwsS3DataSource;
    /**
    * azure_blob_storage_data_source block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#azure_blob_storage_data_source StorageTransferJob#azure_blob_storage_data_source}
    */
    readonly azureBlobStorageDataSource?: StorageTransferJobTransferSpecAzureBlobStorageDataSource;
    /**
    * gcs_data_sink block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#gcs_data_sink StorageTransferJob#gcs_data_sink}
    */
    readonly gcsDataSink?: StorageTransferJobTransferSpecGcsDataSink;
    /**
    * gcs_data_source block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#gcs_data_source StorageTransferJob#gcs_data_source}
    */
    readonly gcsDataSource?: StorageTransferJobTransferSpecGcsDataSource;
    /**
    * hdfs_data_source block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#hdfs_data_source StorageTransferJob#hdfs_data_source}
    */
    readonly hdfsDataSource?: StorageTransferJobTransferSpecHdfsDataSource;
    /**
    * http_data_source block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#http_data_source StorageTransferJob#http_data_source}
    */
    readonly httpDataSource?: StorageTransferJobTransferSpecHttpDataSource;
    /**
    * object_conditions block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#object_conditions StorageTransferJob#object_conditions}
    */
    readonly objectConditions?: StorageTransferJobTransferSpecObjectConditions;
    /**
    * posix_data_sink block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#posix_data_sink StorageTransferJob#posix_data_sink}
    */
    readonly posixDataSink?: StorageTransferJobTransferSpecPosixDataSink;
    /**
    * posix_data_source block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#posix_data_source StorageTransferJob#posix_data_source}
    */
    readonly posixDataSource?: StorageTransferJobTransferSpecPosixDataSource;
    /**
    * transfer_options block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#transfer_options StorageTransferJob#transfer_options}
    */
    readonly transferOptions?: StorageTransferJobTransferSpecTransferOptions;
}
export declare function storageTransferJobTransferSpecToTerraform(struct?: StorageTransferJobTransferSpecOutputReference | StorageTransferJobTransferSpec): any;
export declare function storageTransferJobTransferSpecToHclTerraform(struct?: StorageTransferJobTransferSpecOutputReference | StorageTransferJobTransferSpec): any;
export declare class StorageTransferJobTransferSpecOutputReference 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(): StorageTransferJobTransferSpec | undefined;
    set internalValue(value: StorageTransferJobTransferSpec | undefined);
    private _sinkAgentPoolName?;
    get sinkAgentPoolName(): string;
    set sinkAgentPoolName(value: string);
    resetSinkAgentPoolName(): void;
    get sinkAgentPoolNameInput(): string | undefined;
    private _sourceAgentPoolName?;
    get sourceAgentPoolName(): string;
    set sourceAgentPoolName(value: string);
    resetSourceAgentPoolName(): void;
    get sourceAgentPoolNameInput(): string | undefined;
    private _awsS3DataSource;
    get awsS3DataSource(): StorageTransferJobTransferSpecAwsS3DataSourceOutputReference;
    putAwsS3DataSource(value: StorageTransferJobTransferSpecAwsS3DataSource): void;
    resetAwsS3DataSource(): void;
    get awsS3DataSourceInput(): StorageTransferJobTransferSpecAwsS3DataSource | undefined;
    private _azureBlobStorageDataSource;
    get azureBlobStorageDataSource(): StorageTransferJobTransferSpecAzureBlobStorageDataSourceOutputReference;
    putAzureBlobStorageDataSource(value: StorageTransferJobTransferSpecAzureBlobStorageDataSource): void;
    resetAzureBlobStorageDataSource(): void;
    get azureBlobStorageDataSourceInput(): StorageTransferJobTransferSpecAzureBlobStorageDataSource | undefined;
    private _gcsDataSink;
    get gcsDataSink(): StorageTransferJobTransferSpecGcsDataSinkOutputReference;
    putGcsDataSink(value: StorageTransferJobTransferSpecGcsDataSink): void;
    resetGcsDataSink(): void;
    get gcsDataSinkInput(): StorageTransferJobTransferSpecGcsDataSink | undefined;
    private _gcsDataSource;
    get gcsDataSource(): StorageTransferJobTransferSpecGcsDataSourceOutputReference;
    putGcsDataSource(value: StorageTransferJobTransferSpecGcsDataSource): void;
    resetGcsDataSource(): void;
    get gcsDataSourceInput(): StorageTransferJobTransferSpecGcsDataSource | undefined;
    private _hdfsDataSource;
    get hdfsDataSource(): StorageTransferJobTransferSpecHdfsDataSourceOutputReference;
    putHdfsDataSource(value: StorageTransferJobTransferSpecHdfsDataSource): void;
    resetHdfsDataSource(): void;
    get hdfsDataSourceInput(): StorageTransferJobTransferSpecHdfsDataSource | undefined;
    private _httpDataSource;
    get httpDataSource(): StorageTransferJobTransferSpecHttpDataSourceOutputReference;
    putHttpDataSource(value: StorageTransferJobTransferSpecHttpDataSource): void;
    resetHttpDataSource(): void;
    get httpDataSourceInput(): StorageTransferJobTransferSpecHttpDataSource | undefined;
    private _objectConditions;
    get objectConditions(): StorageTransferJobTransferSpecObjectConditionsOutputReference;
    putObjectConditions(value: StorageTransferJobTransferSpecObjectConditions): void;
    resetObjectConditions(): void;
    get objectConditionsInput(): StorageTransferJobTransferSpecObjectConditions | undefined;
    private _posixDataSink;
    get posixDataSink(): StorageTransferJobTransferSpecPosixDataSinkOutputReference;
    putPosixDataSink(value: StorageTransferJobTransferSpecPosixDataSink): void;
    resetPosixDataSink(): void;
    get posixDataSinkInput(): StorageTransferJobTransferSpecPosixDataSink | undefined;
    private _posixDataSource;
    get posixDataSource(): StorageTransferJobTransferSpecPosixDataSourceOutputReference;
    putPosixDataSource(value: StorageTransferJobTransferSpecPosixDataSource): void;
    resetPosixDataSource(): void;
    get posixDataSourceInput(): StorageTransferJobTransferSpecPosixDataSource | undefined;
    private _transferOptions;
    get transferOptions(): StorageTransferJobTransferSpecTransferOptionsOutputReference;
    putTransferOptions(value: StorageTransferJobTransferSpecTransferOptions): void;
    resetTransferOptions(): void;
    get transferOptionsInput(): StorageTransferJobTransferSpecTransferOptions | undefined;
}
/**
* Represents a {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job google_storage_transfer_job}
*/
export declare class StorageTransferJob extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_storage_transfer_job";
    /**
    * Generates CDKTF code for importing a StorageTransferJob 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 StorageTransferJob to import
    * @param importFromId The id of the existing StorageTransferJob that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/storage_transfer_job#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the StorageTransferJob 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/storage_transfer_job google_storage_transfer_job} 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 StorageTransferJobConfig
    */
    constructor(scope: Construct, id: string, config: StorageTransferJobConfig);
    get creationTime(): string;
    get deletionTime(): string;
    private _description?;
    get description(): string;
    set description(value: string);
    get descriptionInput(): string | undefined;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    get lastModificationTime(): string;
    private _name?;
    get name(): string;
    set name(value: string);
    resetName(): void;
    get nameInput(): string | undefined;
    private _project?;
    get project(): string;
    set project(value: string);
    resetProject(): void;
    get projectInput(): string | undefined;
    private _status?;
    get status(): string;
    set status(value: string);
    resetStatus(): void;
    get statusInput(): string | undefined;
    private _eventStream;
    get eventStream(): StorageTransferJobEventStreamOutputReference;
    putEventStream(value: StorageTransferJobEventStream): void;
    resetEventStream(): void;
    get eventStreamInput(): StorageTransferJobEventStream | undefined;
    private _loggingConfig;
    get loggingConfig(): StorageTransferJobLoggingConfigOutputReference;
    putLoggingConfig(value: StorageTransferJobLoggingConfig): void;
    resetLoggingConfig(): void;
    get loggingConfigInput(): StorageTransferJobLoggingConfig | undefined;
    private _notificationConfig;
    get notificationConfig(): StorageTransferJobNotificationConfigOutputReference;
    putNotificationConfig(value: StorageTransferJobNotificationConfig): void;
    resetNotificationConfig(): void;
    get notificationConfigInput(): StorageTransferJobNotificationConfig | undefined;
    private _replicationSpec;
    get replicationSpec(): StorageTransferJobReplicationSpecOutputReference;
    putReplicationSpec(value: StorageTransferJobReplicationSpec): void;
    resetReplicationSpec(): void;
    get replicationSpecInput(): StorageTransferJobReplicationSpec | undefined;
    private _schedule;
    get schedule(): StorageTransferJobScheduleOutputReference;
    putSchedule(value: StorageTransferJobSchedule): void;
    resetSchedule(): void;
    get scheduleInput(): StorageTransferJobSchedule | undefined;
    private _transferSpec;
    get transferSpec(): StorageTransferJobTransferSpecOutputReference;
    putTransferSpec(value: StorageTransferJobTransferSpec): void;
    resetTransferSpec(): void;
    get transferSpecInput(): StorageTransferJobTransferSpec | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
