import cdk = require('@aws-cdk/cdk');
export declare namespace cloudformation {
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html
     */
    interface BucketResourceProps {
        /**
         * ``AWS::S3::Bucket.AccelerateConfiguration``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-accelerateconfiguration
         */
        accelerateConfiguration?: BucketResource.AccelerateConfigurationProperty | cdk.Token;
        /**
         * ``AWS::S3::Bucket.AccessControl``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-accesscontrol
         */
        accessControl?: string | cdk.Token;
        /**
         * ``AWS::S3::Bucket.AnalyticsConfigurations``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-analyticsconfigurations
         */
        analyticsConfigurations?: Array<BucketResource.AnalyticsConfigurationProperty | cdk.Token> | cdk.Token;
        /**
         * ``AWS::S3::Bucket.BucketEncryption``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-bucketencryption
         */
        bucketEncryption?: BucketResource.BucketEncryptionProperty | cdk.Token;
        /**
         * ``AWS::S3::Bucket.BucketName``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-name
         */
        bucketName?: string | cdk.Token;
        /**
         * ``AWS::S3::Bucket.CorsConfiguration``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-crossoriginconfig
         */
        corsConfiguration?: BucketResource.CorsConfigurationProperty | cdk.Token;
        /**
         * ``AWS::S3::Bucket.InventoryConfigurations``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-inventoryconfigurations
         */
        inventoryConfigurations?: Array<BucketResource.InventoryConfigurationProperty | cdk.Token> | cdk.Token;
        /**
         * ``AWS::S3::Bucket.LifecycleConfiguration``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-lifecycleconfig
         */
        lifecycleConfiguration?: BucketResource.LifecycleConfigurationProperty | cdk.Token;
        /**
         * ``AWS::S3::Bucket.LoggingConfiguration``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-loggingconfig
         */
        loggingConfiguration?: BucketResource.LoggingConfigurationProperty | cdk.Token;
        /**
         * ``AWS::S3::Bucket.MetricsConfigurations``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-metricsconfigurations
         */
        metricsConfigurations?: Array<BucketResource.MetricsConfigurationProperty | cdk.Token> | cdk.Token;
        /**
         * ``AWS::S3::Bucket.NotificationConfiguration``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-notification
         */
        notificationConfiguration?: BucketResource.NotificationConfigurationProperty | cdk.Token;
        /**
         * ``AWS::S3::Bucket.ReplicationConfiguration``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-replicationconfiguration
         */
        replicationConfiguration?: BucketResource.ReplicationConfigurationProperty | cdk.Token;
        /**
         * ``AWS::S3::Bucket.Tags``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-tags
         */
        tags?: Array<cdk.Tag | cdk.Token> | cdk.Token;
        /**
         * ``AWS::S3::Bucket.VersioningConfiguration``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-versioning
         */
        versioningConfiguration?: BucketResource.VersioningConfigurationProperty | cdk.Token;
        /**
         * ``AWS::S3::Bucket.WebsiteConfiguration``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-websiteconfiguration
         */
        websiteConfiguration?: BucketResource.WebsiteConfigurationProperty | cdk.Token;
    }
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html
     */
    class BucketResource extends cdk.Resource {
        /**
         * The CloudFormation resource type name for this resource class.
         */
        static readonly resourceTypeName: string;
        /**
         * @cloudformation_attribute Arn
         */
        readonly bucketArn: BucketArn;
        /**
         * @cloudformation_attribute DomainName
         */
        readonly bucketDomainName: BucketDomainName;
        /**
         * @cloudformation_attribute DualStackDomainName
         */
        readonly bucketDualStackDomainName: BucketDualStackDomainName;
        /**
         * @cloudformation_attribute WebsiteURL
         */
        readonly bucketWebsiteUrl: BucketWebsiteUrl;
        /**
         * Creates a new ``AWS::S3::Bucket``.
         *
         * @param parent     the ``cdk.Construct`` this ``BucketResource`` is a part of
         * @param name       the name of the resource in the ``cdk.Construct`` tree
         * @param properties the properties of this ``BucketResource``
         */
        constructor(parent: cdk.Construct, name: string, properties?: BucketResourceProps);
        protected renderProperties(): {
            [key: string]: any;
        };
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-abortincompletemultipartupload.html
         */
        interface AbortIncompleteMultipartUploadProperty {
            /**
             * ``BucketResource.AbortIncompleteMultipartUploadProperty.DaysAfterInitiation``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-abortincompletemultipartupload.html#cfn-s3-bucket-abortincompletemultipartupload-daysafterinitiation
             */
            daysAfterInitiation: number | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-accelerateconfiguration.html
         */
        interface AccelerateConfigurationProperty {
            /**
             * ``BucketResource.AccelerateConfigurationProperty.AccelerationStatus``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-accelerateconfiguration.html#cfn-s3-bucket-accelerateconfiguration-accelerationstatus
             */
            accelerationStatus: string | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-accesscontroltranslation.html
         */
        interface AccessControlTranslationProperty {
            /**
             * ``BucketResource.AccessControlTranslationProperty.Owner``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-accesscontroltranslation.html#cfn-s3-bucket-accesscontroltranslation-owner
             */
            owner: string | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-analyticsconfiguration.html
         */
        interface AnalyticsConfigurationProperty {
            /**
             * ``BucketResource.AnalyticsConfigurationProperty.Id``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-analyticsconfiguration.html#cfn-s3-bucket-analyticsconfiguration-id
             */
            id: string | cdk.Token;
            /**
             * ``BucketResource.AnalyticsConfigurationProperty.Prefix``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-analyticsconfiguration.html#cfn-s3-bucket-analyticsconfiguration-prefix
             */
            prefix?: string | cdk.Token;
            /**
             * ``BucketResource.AnalyticsConfigurationProperty.StorageClassAnalysis``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-analyticsconfiguration.html#cfn-s3-bucket-analyticsconfiguration-storageclassanalysis
             */
            storageClassAnalysis: StorageClassAnalysisProperty | cdk.Token;
            /**
             * ``BucketResource.AnalyticsConfigurationProperty.TagFilters``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-analyticsconfiguration.html#cfn-s3-bucket-analyticsconfiguration-tagfilters
             */
            tagFilters?: Array<TagFilterProperty | cdk.Token> | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-bucketencryption.html
         */
        interface BucketEncryptionProperty {
            /**
             * ``BucketResource.BucketEncryptionProperty.ServerSideEncryptionConfiguration``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-bucketencryption.html#cfn-s3-bucket-bucketencryption-serversideencryptionconfiguration
             */
            serverSideEncryptionConfiguration: Array<ServerSideEncryptionRuleProperty | cdk.Token> | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-cors.html
         */
        interface CorsConfigurationProperty {
            /**
             * ``BucketResource.CorsConfigurationProperty.CorsRules``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-cors.html#cfn-s3-bucket-cors-corsrule
             */
            corsRules: Array<CorsRuleProperty | cdk.Token> | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-cors-corsrule.html
         */
        interface CorsRuleProperty {
            /**
             * ``BucketResource.CorsRuleProperty.AllowedHeaders``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-cors-corsrule.html#cfn-s3-bucket-cors-corsrule-allowedheaders
             */
            allowedHeaders?: Array<string | cdk.Token> | cdk.Token;
            /**
             * ``BucketResource.CorsRuleProperty.AllowedMethods``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-cors-corsrule.html#cfn-s3-bucket-cors-corsrule-allowedmethods
             */
            allowedMethods: Array<string | cdk.Token> | cdk.Token;
            /**
             * ``BucketResource.CorsRuleProperty.AllowedOrigins``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-cors-corsrule.html#cfn-s3-bucket-cors-corsrule-allowedorigins
             */
            allowedOrigins: Array<string | cdk.Token> | cdk.Token;
            /**
             * ``BucketResource.CorsRuleProperty.ExposedHeaders``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-cors-corsrule.html#cfn-s3-bucket-cors-corsrule-exposedheaders
             */
            exposedHeaders?: Array<string | cdk.Token> | cdk.Token;
            /**
             * ``BucketResource.CorsRuleProperty.Id``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-cors-corsrule.html#cfn-s3-bucket-cors-corsrule-id
             */
            id?: string | cdk.Token;
            /**
             * ``BucketResource.CorsRuleProperty.MaxAge``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-cors-corsrule.html#cfn-s3-bucket-cors-corsrule-maxage
             */
            maxAge?: number | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-dataexport.html
         */
        interface DataExportProperty {
            /**
             * ``BucketResource.DataExportProperty.Destination``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-dataexport.html#cfn-s3-bucket-dataexport-destination
             */
            destination: DestinationProperty | cdk.Token;
            /**
             * ``BucketResource.DataExportProperty.OutputSchemaVersion``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-dataexport.html#cfn-s3-bucket-dataexport-outputschemaversion
             */
            outputSchemaVersion: string | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-destination.html
         */
        interface DestinationProperty {
            /**
             * ``BucketResource.DestinationProperty.BucketAccountId``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-destination.html#cfn-s3-bucket-destination-bucketaccountid
             */
            bucketAccountId?: string | cdk.Token;
            /**
             * ``BucketResource.DestinationProperty.BucketArn``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-destination.html#cfn-s3-bucket-destination-bucketarn
             */
            bucketArn: string | cdk.Token;
            /**
             * ``BucketResource.DestinationProperty.Format``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-destination.html#cfn-s3-bucket-destination-format
             */
            format: string | cdk.Token;
            /**
             * ``BucketResource.DestinationProperty.Prefix``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-destination.html#cfn-s3-bucket-destination-prefix
             */
            prefix?: string | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-encryptionconfiguration.html
         */
        interface EncryptionConfigurationProperty {
            /**
             * ``BucketResource.EncryptionConfigurationProperty.ReplicaKmsKeyID``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-encryptionconfiguration.html#cfn-s3-bucket-encryptionconfiguration-replicakmskeyid
             */
            replicaKmsKeyId: string | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfiguration-config-filter-s3key-rules.html
         */
        interface FilterRuleProperty {
            /**
             * ``BucketResource.FilterRuleProperty.Name``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfiguration-config-filter-s3key-rules.html#cfn-s3-bucket-notificationconfiguraiton-config-filter-s3key-rules-name
             */
            name: string | cdk.Token;
            /**
             * ``BucketResource.FilterRuleProperty.Value``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfiguration-config-filter-s3key-rules.html#cfn-s3-bucket-notificationconfiguraiton-config-filter-s3key-rules-value
             */
            value: string | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-inventoryconfiguration.html
         */
        interface InventoryConfigurationProperty {
            /**
             * ``BucketResource.InventoryConfigurationProperty.Destination``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-inventoryconfiguration.html#cfn-s3-bucket-inventoryconfiguration-destination
             */
            destination: DestinationProperty | cdk.Token;
            /**
             * ``BucketResource.InventoryConfigurationProperty.Enabled``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-inventoryconfiguration.html#cfn-s3-bucket-inventoryconfiguration-enabled
             */
            enabled: boolean | cdk.Token;
            /**
             * ``BucketResource.InventoryConfigurationProperty.Id``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-inventoryconfiguration.html#cfn-s3-bucket-inventoryconfiguration-id
             */
            id: string | cdk.Token;
            /**
             * ``BucketResource.InventoryConfigurationProperty.IncludedObjectVersions``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-inventoryconfiguration.html#cfn-s3-bucket-inventoryconfiguration-includedobjectversions
             */
            includedObjectVersions: string | cdk.Token;
            /**
             * ``BucketResource.InventoryConfigurationProperty.OptionalFields``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-inventoryconfiguration.html#cfn-s3-bucket-inventoryconfiguration-optionalfields
             */
            optionalFields?: Array<string | cdk.Token> | cdk.Token;
            /**
             * ``BucketResource.InventoryConfigurationProperty.Prefix``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-inventoryconfiguration.html#cfn-s3-bucket-inventoryconfiguration-prefix
             */
            prefix?: string | cdk.Token;
            /**
             * ``BucketResource.InventoryConfigurationProperty.ScheduleFrequency``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-inventoryconfiguration.html#cfn-s3-bucket-inventoryconfiguration-schedulefrequency
             */
            scheduleFrequency: string | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig-lambdaconfig.html
         */
        interface LambdaConfigurationProperty {
            /**
             * ``BucketResource.LambdaConfigurationProperty.Event``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig-lambdaconfig.html#cfn-s3-bucket-notificationconfig-lambdaconfig-event
             */
            event: string | cdk.Token;
            /**
             * ``BucketResource.LambdaConfigurationProperty.Filter``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig-lambdaconfig.html#cfn-s3-bucket-notificationconfig-lambdaconfig-filter
             */
            filter?: NotificationFilterProperty | cdk.Token;
            /**
             * ``BucketResource.LambdaConfigurationProperty.Function``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig-lambdaconfig.html#cfn-s3-bucket-notificationconfig-lambdaconfig-function
             */
            function: string | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig.html
         */
        interface LifecycleConfigurationProperty {
            /**
             * ``BucketResource.LifecycleConfigurationProperty.Rules``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig.html#cfn-s3-bucket-lifecycleconfig-rules
             */
            rules: Array<RuleProperty | cdk.Token> | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-loggingconfig.html
         */
        interface LoggingConfigurationProperty {
            /**
             * ``BucketResource.LoggingConfigurationProperty.DestinationBucketName``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-loggingconfig.html#cfn-s3-bucket-loggingconfig-destinationbucketname
             */
            destinationBucketName?: string | cdk.Token;
            /**
             * ``BucketResource.LoggingConfigurationProperty.LogFilePrefix``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-loggingconfig.html#cfn-s3-bucket-loggingconfig-logfileprefix
             */
            logFilePrefix?: string | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-metricsconfiguration.html
         */
        interface MetricsConfigurationProperty {
            /**
             * ``BucketResource.MetricsConfigurationProperty.Id``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-metricsconfiguration.html#cfn-s3-bucket-metricsconfiguration-id
             */
            id: string | cdk.Token;
            /**
             * ``BucketResource.MetricsConfigurationProperty.Prefix``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-metricsconfiguration.html#cfn-s3-bucket-metricsconfiguration-prefix
             */
            prefix?: string | cdk.Token;
            /**
             * ``BucketResource.MetricsConfigurationProperty.TagFilters``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-metricsconfiguration.html#cfn-s3-bucket-metricsconfiguration-tagfilters
             */
            tagFilters?: Array<TagFilterProperty | cdk.Token> | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule-noncurrentversiontransition.html
         */
        interface NoncurrentVersionTransitionProperty {
            /**
             * ``BucketResource.NoncurrentVersionTransitionProperty.StorageClass``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule-noncurrentversiontransition.html#cfn-s3-bucket-lifecycleconfig-rule-noncurrentversiontransition-storageclass
             */
            storageClass: string | cdk.Token;
            /**
             * ``BucketResource.NoncurrentVersionTransitionProperty.TransitionInDays``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule-noncurrentversiontransition.html#cfn-s3-bucket-lifecycleconfig-rule-noncurrentversiontransition-transitionindays
             */
            transitionInDays: number | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig.html
         */
        interface NotificationConfigurationProperty {
            /**
             * ``BucketResource.NotificationConfigurationProperty.LambdaConfigurations``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig.html#cfn-s3-bucket-notificationconfig-lambdaconfig
             */
            lambdaConfigurations?: Array<LambdaConfigurationProperty | cdk.Token> | cdk.Token;
            /**
             * ``BucketResource.NotificationConfigurationProperty.QueueConfigurations``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig.html#cfn-s3-bucket-notificationconfig-queueconfig
             */
            queueConfigurations?: Array<QueueConfigurationProperty | cdk.Token> | cdk.Token;
            /**
             * ``BucketResource.NotificationConfigurationProperty.TopicConfigurations``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig.html#cfn-s3-bucket-notificationconfig-topicconfig
             */
            topicConfigurations?: Array<TopicConfigurationProperty | cdk.Token> | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfiguration-config-filter.html
         */
        interface NotificationFilterProperty {
            /**
             * ``BucketResource.NotificationFilterProperty.S3Key``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfiguration-config-filter.html#cfn-s3-bucket-notificationconfiguraiton-config-filter-s3key
             */
            s3Key: S3KeyFilterProperty | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig-queueconfig.html
         */
        interface QueueConfigurationProperty {
            /**
             * ``BucketResource.QueueConfigurationProperty.Event``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig-queueconfig.html#cfn-s3-bucket-notificationconfig-queueconfig-event
             */
            event: string | cdk.Token;
            /**
             * ``BucketResource.QueueConfigurationProperty.Filter``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig-queueconfig.html#cfn-s3-bucket-notificationconfig-queueconfig-filter
             */
            filter?: NotificationFilterProperty | cdk.Token;
            /**
             * ``BucketResource.QueueConfigurationProperty.Queue``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig-queueconfig.html#cfn-s3-bucket-notificationconfig-queueconfig-queue
             */
            queue: string | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-redirectallrequeststo.html
         */
        interface RedirectAllRequestsToProperty {
            /**
             * ``BucketResource.RedirectAllRequestsToProperty.HostName``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-redirectallrequeststo.html#cfn-s3-websiteconfiguration-redirectallrequeststo-hostname
             */
            hostName: string | cdk.Token;
            /**
             * ``BucketResource.RedirectAllRequestsToProperty.Protocol``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-redirectallrequeststo.html#cfn-s3-websiteconfiguration-redirectallrequeststo-protocol
             */
            protocol?: string | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules-redirectrule.html
         */
        interface RedirectRuleProperty {
            /**
             * ``BucketResource.RedirectRuleProperty.HostName``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules-redirectrule.html#cfn-s3-websiteconfiguration-redirectrule-hostname
             */
            hostName?: string | cdk.Token;
            /**
             * ``BucketResource.RedirectRuleProperty.HttpRedirectCode``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules-redirectrule.html#cfn-s3-websiteconfiguration-redirectrule-httpredirectcode
             */
            httpRedirectCode?: string | cdk.Token;
            /**
             * ``BucketResource.RedirectRuleProperty.Protocol``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules-redirectrule.html#cfn-s3-websiteconfiguration-redirectrule-protocol
             */
            protocol?: string | cdk.Token;
            /**
             * ``BucketResource.RedirectRuleProperty.ReplaceKeyPrefixWith``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules-redirectrule.html#cfn-s3-websiteconfiguration-redirectrule-replacekeyprefixwith
             */
            replaceKeyPrefixWith?: string | cdk.Token;
            /**
             * ``BucketResource.RedirectRuleProperty.ReplaceKeyWith``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules-redirectrule.html#cfn-s3-websiteconfiguration-redirectrule-replacekeywith
             */
            replaceKeyWith?: string | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationconfiguration.html
         */
        interface ReplicationConfigurationProperty {
            /**
             * ``BucketResource.ReplicationConfigurationProperty.Role``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationconfiguration.html#cfn-s3-bucket-replicationconfiguration-role
             */
            role: string | cdk.Token;
            /**
             * ``BucketResource.ReplicationConfigurationProperty.Rules``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationconfiguration.html#cfn-s3-bucket-replicationconfiguration-rules
             */
            rules: Array<ReplicationRuleProperty | cdk.Token> | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationconfiguration-rules-destination.html
         */
        interface ReplicationDestinationProperty {
            /**
             * ``BucketResource.ReplicationDestinationProperty.AccessControlTranslation``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationconfiguration-rules-destination.html#cfn-s3-bucket-replicationdestination-accesscontroltranslation
             */
            accessControlTranslation?: AccessControlTranslationProperty | cdk.Token;
            /**
             * ``BucketResource.ReplicationDestinationProperty.Account``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationconfiguration-rules-destination.html#cfn-s3-bucket-replicationdestination-account
             */
            account?: string | cdk.Token;
            /**
             * ``BucketResource.ReplicationDestinationProperty.Bucket``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationconfiguration-rules-destination.html#cfn-s3-bucket-replicationconfiguration-rules-destination-bucket
             */
            bucket: string | cdk.Token;
            /**
             * ``BucketResource.ReplicationDestinationProperty.EncryptionConfiguration``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationconfiguration-rules-destination.html#cfn-s3-bucket-replicationdestination-encryptionconfiguration
             */
            encryptionConfiguration?: EncryptionConfigurationProperty | cdk.Token;
            /**
             * ``BucketResource.ReplicationDestinationProperty.StorageClass``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationconfiguration-rules-destination.html#cfn-s3-bucket-replicationconfiguration-rules-destination-storageclass
             */
            storageClass?: string | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationconfiguration-rules.html
         */
        interface ReplicationRuleProperty {
            /**
             * ``BucketResource.ReplicationRuleProperty.Destination``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationconfiguration-rules.html#cfn-s3-bucket-replicationconfiguration-rules-destination
             */
            destination: ReplicationDestinationProperty | cdk.Token;
            /**
             * ``BucketResource.ReplicationRuleProperty.Id``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationconfiguration-rules.html#cfn-s3-bucket-replicationconfiguration-rules-id
             */
            id?: string | cdk.Token;
            /**
             * ``BucketResource.ReplicationRuleProperty.Prefix``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationconfiguration-rules.html#cfn-s3-bucket-replicationconfiguration-rules-prefix
             */
            prefix: string | cdk.Token;
            /**
             * ``BucketResource.ReplicationRuleProperty.SourceSelectionCriteria``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationconfiguration-rules.html#cfn-s3-bucket-replicationrule-sourceselectioncriteria
             */
            sourceSelectionCriteria?: SourceSelectionCriteriaProperty | cdk.Token;
            /**
             * ``BucketResource.ReplicationRuleProperty.Status``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationconfiguration-rules.html#cfn-s3-bucket-replicationconfiguration-rules-status
             */
            status: string | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules.html
         */
        interface RoutingRuleProperty {
            /**
             * ``BucketResource.RoutingRuleProperty.RedirectRule``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules.html#cfn-s3-websiteconfiguration-routingrules-redirectrule
             */
            redirectRule: RedirectRuleProperty | cdk.Token;
            /**
             * ``BucketResource.RoutingRuleProperty.RoutingRuleCondition``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules.html#cfn-s3-websiteconfiguration-routingrules-routingrulecondition
             */
            routingRuleCondition?: RoutingRuleConditionProperty | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules-routingrulecondition.html
         */
        interface RoutingRuleConditionProperty {
            /**
             * ``BucketResource.RoutingRuleConditionProperty.HttpErrorCodeReturnedEquals``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules-routingrulecondition.html#cfn-s3-websiteconfiguration-routingrules-routingrulecondition-httperrorcodereturnedequals
             */
            httpErrorCodeReturnedEquals?: string | cdk.Token;
            /**
             * ``BucketResource.RoutingRuleConditionProperty.KeyPrefixEquals``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules-routingrulecondition.html#cfn-s3-websiteconfiguration-routingrules-routingrulecondition-keyprefixequals
             */
            keyPrefixEquals?: string | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html
         */
        interface RuleProperty {
            /**
             * ``BucketResource.RuleProperty.AbortIncompleteMultipartUpload``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-rule-abortincompletemultipartupload
             */
            abortIncompleteMultipartUpload?: AbortIncompleteMultipartUploadProperty | cdk.Token;
            /**
             * ``BucketResource.RuleProperty.ExpirationDate``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-lifecycleconfig-rule-expirationdate
             */
            expirationDate?: Date | cdk.Token;
            /**
             * ``BucketResource.RuleProperty.ExpirationInDays``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-lifecycleconfig-rule-expirationindays
             */
            expirationInDays?: number | cdk.Token;
            /**
             * ``BucketResource.RuleProperty.Id``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-lifecycleconfig-rule-id
             */
            id?: string | cdk.Token;
            /**
             * ``BucketResource.RuleProperty.NoncurrentVersionExpirationInDays``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-lifecycleconfig-rule-noncurrentversionexpirationindays
             */
            noncurrentVersionExpirationInDays?: number | cdk.Token;
            /**
             * ``BucketResource.RuleProperty.NoncurrentVersionTransition``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-lifecycleconfig-rule-noncurrentversiontransition
             */
            noncurrentVersionTransition?: NoncurrentVersionTransitionProperty | cdk.Token;
            /**
             * ``BucketResource.RuleProperty.NoncurrentVersionTransitions``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-lifecycleconfig-rule-noncurrentversiontransitions
             */
            noncurrentVersionTransitions?: Array<NoncurrentVersionTransitionProperty | cdk.Token> | cdk.Token;
            /**
             * ``BucketResource.RuleProperty.Prefix``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-lifecycleconfig-rule-prefix
             */
            prefix?: string | cdk.Token;
            /**
             * ``BucketResource.RuleProperty.Status``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-lifecycleconfig-rule-status
             */
            status: string | cdk.Token;
            /**
             * ``BucketResource.RuleProperty.TagFilters``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-rule-tagfilters
             */
            tagFilters?: Array<TagFilterProperty | cdk.Token> | cdk.Token;
            /**
             * ``BucketResource.RuleProperty.Transition``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-lifecycleconfig-rule-transition
             */
            transition?: TransitionProperty | cdk.Token;
            /**
             * ``BucketResource.RuleProperty.Transitions``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-lifecycleconfig-rule-transitions
             */
            transitions?: Array<TransitionProperty | cdk.Token> | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfiguration-config-filter-s3key.html
         */
        interface S3KeyFilterProperty {
            /**
             * ``BucketResource.S3KeyFilterProperty.Rules``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfiguration-config-filter-s3key.html#cfn-s3-bucket-notificationconfiguraiton-config-filter-s3key-rules
             */
            rules: Array<FilterRuleProperty | cdk.Token> | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-serversideencryptionbydefault.html
         */
        interface ServerSideEncryptionByDefaultProperty {
            /**
             * ``BucketResource.ServerSideEncryptionByDefaultProperty.KMSMasterKeyID``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-serversideencryptionbydefault.html#cfn-s3-bucket-serversideencryptionbydefault-kmsmasterkeyid
             */
            kmsMasterKeyId?: string | cdk.Token;
            /**
             * ``BucketResource.ServerSideEncryptionByDefaultProperty.SSEAlgorithm``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-serversideencryptionbydefault.html#cfn-s3-bucket-serversideencryptionbydefault-ssealgorithm
             */
            sseAlgorithm: string | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-serversideencryptionrule.html
         */
        interface ServerSideEncryptionRuleProperty {
            /**
             * ``BucketResource.ServerSideEncryptionRuleProperty.ServerSideEncryptionByDefault``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-serversideencryptionrule.html#cfn-s3-bucket-serversideencryptionrule-serversideencryptionbydefault
             */
            serverSideEncryptionByDefault?: ServerSideEncryptionByDefaultProperty | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-sourceselectioncriteria.html
         */
        interface SourceSelectionCriteriaProperty {
            /**
             * ``BucketResource.SourceSelectionCriteriaProperty.SseKmsEncryptedObjects``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-sourceselectioncriteria.html#cfn-s3-bucket-sourceselectioncriteria-ssekmsencryptedobjects
             */
            sseKmsEncryptedObjects: SseKmsEncryptedObjectsProperty | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-ssekmsencryptedobjects.html
         */
        interface SseKmsEncryptedObjectsProperty {
            /**
             * ``BucketResource.SseKmsEncryptedObjectsProperty.Status``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-ssekmsencryptedobjects.html#cfn-s3-bucket-ssekmsencryptedobjects-status
             */
            status: string | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-storageclassanalysis.html
         */
        interface StorageClassAnalysisProperty {
            /**
             * ``BucketResource.StorageClassAnalysisProperty.DataExport``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-storageclassanalysis.html#cfn-s3-bucket-storageclassanalysis-dataexport
             */
            dataExport?: DataExportProperty | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-tagfilter.html
         */
        interface TagFilterProperty {
            /**
             * ``BucketResource.TagFilterProperty.Key``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-tagfilter.html#cfn-s3-bucket-tagfilter-key
             */
            key: string | cdk.Token;
            /**
             * ``BucketResource.TagFilterProperty.Value``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-tagfilter.html#cfn-s3-bucket-tagfilter-value
             */
            value: string | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig-topicconfig.html
         */
        interface TopicConfigurationProperty {
            /**
             * ``BucketResource.TopicConfigurationProperty.Event``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig-topicconfig.html#cfn-s3-bucket-notificationconfig-topicconfig-event
             */
            event: string | cdk.Token;
            /**
             * ``BucketResource.TopicConfigurationProperty.Filter``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig-topicconfig.html#cfn-s3-bucket-notificationconfig-topicconfig-filter
             */
            filter?: NotificationFilterProperty | cdk.Token;
            /**
             * ``BucketResource.TopicConfigurationProperty.Topic``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig-topicconfig.html#cfn-s3-bucket-notificationconfig-topicconfig-topic
             */
            topic: string | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule-transition.html
         */
        interface TransitionProperty {
            /**
             * ``BucketResource.TransitionProperty.StorageClass``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule-transition.html#cfn-s3-bucket-lifecycleconfig-rule-transition-storageclass
             */
            storageClass: string | cdk.Token;
            /**
             * ``BucketResource.TransitionProperty.TransitionDate``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule-transition.html#cfn-s3-bucket-lifecycleconfig-rule-transition-transitiondate
             */
            transitionDate?: Date | cdk.Token;
            /**
             * ``BucketResource.TransitionProperty.TransitionInDays``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule-transition.html#cfn-s3-bucket-lifecycleconfig-rule-transition-transitionindays
             */
            transitionInDays?: number | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-versioningconfig.html
         */
        interface VersioningConfigurationProperty {
            /**
             * ``BucketResource.VersioningConfigurationProperty.Status``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-versioningconfig.html#cfn-s3-bucket-versioningconfig-status
             */
            status: string | cdk.Token;
        }
    }
    namespace BucketResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration.html
         */
        interface WebsiteConfigurationProperty {
            /**
             * ``BucketResource.WebsiteConfigurationProperty.ErrorDocument``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration.html#cfn-s3-websiteconfiguration-errordocument
             */
            errorDocument?: string | cdk.Token;
            /**
             * ``BucketResource.WebsiteConfigurationProperty.IndexDocument``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration.html#cfn-s3-websiteconfiguration-indexdocument
             */
            indexDocument?: string | cdk.Token;
            /**
             * ``BucketResource.WebsiteConfigurationProperty.RedirectAllRequestsTo``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration.html#cfn-s3-websiteconfiguration-redirectallrequeststo
             */
            redirectAllRequestsTo?: RedirectAllRequestsToProperty | cdk.Token;
            /**
             * ``BucketResource.WebsiteConfigurationProperty.RoutingRules``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration.html#cfn-s3-websiteconfiguration-routingrules
             */
            routingRules?: Array<RoutingRuleProperty | cdk.Token> | cdk.Token;
        }
    }
}
export declare class BucketArn extends cdk.Arn {
}
export declare class BucketDomainName extends cdk.Token {
}
export declare class BucketDualStackDomainName extends cdk.Token {
}
export declare class BucketWebsiteUrl extends cdk.Token {
}
export declare namespace cloudformation {
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-policy.html
     */
    interface BucketPolicyResourceProps {
        /**
         * ``AWS::S3::BucketPolicy.Bucket``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-policy.html#aws-properties-s3-policy-bucket
         */
        bucket: string | cdk.Token;
        /**
         * ``AWS::S3::BucketPolicy.PolicyDocument``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-policy.html#aws-properties-s3-policy-policydocument
         */
        policyDocument: object | cdk.Token;
    }
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-policy.html
     */
    class BucketPolicyResource extends cdk.Resource {
        /**
         * The CloudFormation resource type name for this resource class.
         */
        static readonly resourceTypeName: string;
        /**
         * Creates a new ``AWS::S3::BucketPolicy``.
         *
         * @param parent     the ``cdk.Construct`` this ``BucketPolicyResource`` is a part of
         * @param name       the name of the resource in the ``cdk.Construct`` tree
         * @param properties the properties of this ``BucketPolicyResource``
         */
        constructor(parent: cdk.Construct, name: string, properties: BucketPolicyResourceProps);
        protected renderProperties(): {
            [key: string]: any;
        };
    }
}
