import { ResourceBase, ResourceTag as Inner_ResourceTag } from "../../resource";
import { Value, List } from "../../data-types";
export declare class ServerSideEncryptionRule {
    ServerSideEncryptionByDefault?: ServerSideEncryptionByDefault;
    constructor(properties: ServerSideEncryptionRule);
}
export declare class StorageClassAnalysis {
    DataExport?: DataExport;
    constructor(properties: StorageClassAnalysis);
}
export declare class RoutingRuleCondition {
    HttpErrorCodeReturnedEquals?: Value<string>;
    KeyPrefixEquals?: Value<string>;
    constructor(properties: RoutingRuleCondition);
}
export declare class InventoryConfiguration {
    Destination: Destination;
    Enabled: Value<boolean>;
    Id: Value<string>;
    IncludedObjectVersions: Value<string>;
    OptionalFields?: List<Value<string>>;
    Prefix?: Value<string>;
    ScheduleFrequency: Value<string>;
    constructor(properties: InventoryConfiguration);
}
export declare class ReplicationRule {
    Destination: ReplicationDestination;
    Id?: Value<string>;
    Prefix: Value<string>;
    SourceSelectionCriteria?: SourceSelectionCriteria;
    Status: Value<string>;
    constructor(properties: ReplicationRule);
}
export declare class WebsiteConfiguration {
    ErrorDocument?: Value<string>;
    IndexDocument?: Value<string>;
    RedirectAllRequestsTo?: RedirectAllRequestsTo;
    RoutingRules?: List<RoutingRule>;
    constructor(properties: WebsiteConfiguration);
}
export declare class CorsConfiguration {
    CorsRules: List<CorsRule>;
    constructor(properties: CorsConfiguration);
}
export declare class SseKmsEncryptedObjects {
    Status: Value<string>;
    constructor(properties: SseKmsEncryptedObjects);
}
export declare class Rule {
    TagFilters?: List<TagFilter>;
    NoncurrentVersionTransition?: NoncurrentVersionTransition;
    ExpirationInDays?: Value<number>;
    Status: Value<string>;
    NoncurrentVersionTransitions?: List<NoncurrentVersionTransition>;
    Prefix?: Value<string>;
    Transition?: Transition;
    NoncurrentVersionExpirationInDays?: Value<number>;
    Id?: Value<string>;
    ExpirationDate?: Value<string>;
    Transitions?: List<Transition>;
    AbortIncompleteMultipartUpload?: AbortIncompleteMultipartUpload;
    constructor(properties: Rule);
}
export declare class NotificationConfiguration {
    LambdaConfigurations?: List<LambdaConfiguration>;
    QueueConfigurations?: List<QueueConfiguration>;
    TopicConfigurations?: List<TopicConfiguration>;
    constructor(properties: NotificationConfiguration);
}
export declare class DefaultRetention {
    Days?: Value<number>;
    Mode?: Value<string>;
    Years?: Value<number>;
    constructor(properties: DefaultRetention);
}
export declare class ObjectLockConfiguration {
    ObjectLockEnabled?: Value<string>;
    Rule?: ObjectLockRule;
    constructor(properties: ObjectLockConfiguration);
}
export declare class VersioningConfiguration {
    Status: Value<string>;
    constructor(properties: VersioningConfiguration);
}
export declare class DataExport {
    Destination: Destination;
    OutputSchemaVersion: Value<string>;
    constructor(properties: DataExport);
}
export declare class AbortIncompleteMultipartUpload {
    DaysAfterInitiation: Value<number>;
    constructor(properties: AbortIncompleteMultipartUpload);
}
export declare class ServerSideEncryptionByDefault {
    KMSMasterKeyID?: Value<string>;
    SSEAlgorithm: Value<string>;
    constructor(properties: ServerSideEncryptionByDefault);
}
export declare class Destination {
    BucketAccountId?: Value<string>;
    BucketArn: Value<string>;
    Format: Value<string>;
    Prefix?: Value<string>;
    constructor(properties: Destination);
}
export declare class LambdaConfiguration {
    Event: Value<string>;
    Filter?: NotificationFilter;
    Function: Value<string>;
    constructor(properties: LambdaConfiguration);
}
export declare class ReplicationDestination {
    AccessControlTranslation?: AccessControlTranslation;
    Account?: Value<string>;
    Bucket: Value<string>;
    EncryptionConfiguration?: EncryptionConfiguration;
    StorageClass?: Value<string>;
    constructor(properties: ReplicationDestination);
}
export declare class SourceSelectionCriteria {
    SseKmsEncryptedObjects: SseKmsEncryptedObjects;
    constructor(properties: SourceSelectionCriteria);
}
export declare class NotificationFilter {
    S3Key: S3KeyFilter;
    constructor(properties: NotificationFilter);
}
export declare class TagFilter {
    Key: Value<string>;
    Value: Value<string>;
    constructor(properties: TagFilter);
}
export declare class QueueConfiguration {
    Event: Value<string>;
    Filter?: NotificationFilter;
    Queue: Value<string>;
    constructor(properties: QueueConfiguration);
}
export declare class EncryptionConfiguration {
    ReplicaKmsKeyID: Value<string>;
    constructor(properties: EncryptionConfiguration);
}
export declare class ObjectLockRule {
    DefaultRetention?: DefaultRetention;
    constructor(properties: ObjectLockRule);
}
export declare class TopicConfiguration {
    Event: Value<string>;
    Filter?: NotificationFilter;
    Topic: Value<string>;
    constructor(properties: TopicConfiguration);
}
export declare class CorsRule {
    AllowedHeaders?: List<Value<string>>;
    AllowedMethods: List<Value<string>>;
    AllowedOrigins: List<Value<string>>;
    ExposedHeaders?: List<Value<string>>;
    Id?: Value<string>;
    MaxAge?: Value<number>;
    constructor(properties: CorsRule);
}
export declare class S3KeyFilter {
    Rules: List<FilterRule>;
    constructor(properties: S3KeyFilter);
}
export declare class ReplicationConfiguration {
    Role: Value<string>;
    Rules: List<ReplicationRule>;
    constructor(properties: ReplicationConfiguration);
}
export declare class AccelerateConfiguration {
    AccelerationStatus: Value<string>;
    constructor(properties: AccelerateConfiguration);
}
export declare class LifecycleConfiguration {
    Rules: List<Rule>;
    constructor(properties: LifecycleConfiguration);
}
export declare class BucketEncryption {
    ServerSideEncryptionConfiguration: List<ServerSideEncryptionRule>;
    constructor(properties: BucketEncryption);
}
export declare class AnalyticsConfiguration {
    Id: Value<string>;
    Prefix?: Value<string>;
    StorageClassAnalysis: StorageClassAnalysis;
    TagFilters?: List<TagFilter>;
    constructor(properties: AnalyticsConfiguration);
}
export declare class NoncurrentVersionTransition {
    StorageClass: Value<string>;
    TransitionInDays: Value<number>;
    constructor(properties: NoncurrentVersionTransition);
}
export declare class MetricsConfiguration {
    Id: Value<string>;
    Prefix?: Value<string>;
    TagFilters?: List<TagFilter>;
    constructor(properties: MetricsConfiguration);
}
export declare class FilterRule {
    Name: Value<string>;
    Value: Value<string>;
    constructor(properties: FilterRule);
}
export declare class RoutingRule {
    RedirectRule: RedirectRule;
    RoutingRuleCondition?: RoutingRuleCondition;
    constructor(properties: RoutingRule);
}
export declare class Transition {
    StorageClass: Value<string>;
    TransitionDate?: Value<string>;
    TransitionInDays?: Value<number>;
    constructor(properties: Transition);
}
export declare class PublicAccessBlockConfiguration {
    BlockPublicAcls?: Value<boolean>;
    BlockPublicPolicy?: Value<boolean>;
    IgnorePublicAcls?: Value<boolean>;
    RestrictPublicBuckets?: Value<boolean>;
    constructor(properties: PublicAccessBlockConfiguration);
}
export declare class RedirectAllRequestsTo {
    HostName: Value<string>;
    Protocol?: Value<string>;
    constructor(properties: RedirectAllRequestsTo);
}
export declare class LoggingConfiguration {
    DestinationBucketName?: Value<string>;
    LogFilePrefix?: Value<string>;
    constructor(properties: LoggingConfiguration);
}
export declare class RedirectRule {
    HostName?: Value<string>;
    HttpRedirectCode?: Value<string>;
    Protocol?: Value<string>;
    ReplaceKeyPrefixWith?: Value<string>;
    ReplaceKeyWith?: Value<string>;
    constructor(properties: RedirectRule);
}
export declare class AccessControlTranslation {
    Owner: Value<string>;
    constructor(properties: AccessControlTranslation);
}
export interface BucketProperties {
    MetricsConfigurations?: List<MetricsConfiguration>;
    AnalyticsConfigurations?: List<AnalyticsConfiguration>;
    CorsConfiguration?: CorsConfiguration;
    ReplicationConfiguration?: ReplicationConfiguration;
    NotificationConfiguration?: NotificationConfiguration;
    VersioningConfiguration?: VersioningConfiguration;
    LifecycleConfiguration?: LifecycleConfiguration;
    ObjectLockConfiguration?: ObjectLockConfiguration;
    BucketEncryption?: BucketEncryption;
    BucketName?: Value<string>;
    PublicAccessBlockConfiguration?: PublicAccessBlockConfiguration;
    ObjectLockEnabled?: Value<boolean>;
    LoggingConfiguration?: LoggingConfiguration;
    Tags?: List<Inner_ResourceTag>;
    AccelerateConfiguration?: AccelerateConfiguration;
    InventoryConfigurations?: List<InventoryConfiguration>;
    AccessControl?: Value<string>;
    WebsiteConfiguration?: WebsiteConfiguration;
}
export default class Inner_Bucket extends ResourceBase<BucketProperties> {
    static ServerSideEncryptionRule: typeof ServerSideEncryptionRule;
    static StorageClassAnalysis: typeof StorageClassAnalysis;
    static RoutingRuleCondition: typeof RoutingRuleCondition;
    static InventoryConfiguration: typeof InventoryConfiguration;
    static ReplicationRule: typeof ReplicationRule;
    static WebsiteConfiguration: typeof WebsiteConfiguration;
    static CorsConfiguration: typeof CorsConfiguration;
    static SseKmsEncryptedObjects: typeof SseKmsEncryptedObjects;
    static Rule: typeof Rule;
    static NotificationConfiguration: typeof NotificationConfiguration;
    static DefaultRetention: typeof DefaultRetention;
    static ObjectLockConfiguration: typeof ObjectLockConfiguration;
    static VersioningConfiguration: typeof VersioningConfiguration;
    static DataExport: typeof DataExport;
    static AbortIncompleteMultipartUpload: typeof AbortIncompleteMultipartUpload;
    static ServerSideEncryptionByDefault: typeof ServerSideEncryptionByDefault;
    static Destination: typeof Destination;
    static LambdaConfiguration: typeof LambdaConfiguration;
    static ReplicationDestination: typeof ReplicationDestination;
    static SourceSelectionCriteria: typeof SourceSelectionCriteria;
    static NotificationFilter: typeof NotificationFilter;
    static TagFilter: typeof TagFilter;
    static QueueConfiguration: typeof QueueConfiguration;
    static EncryptionConfiguration: typeof EncryptionConfiguration;
    static ObjectLockRule: typeof ObjectLockRule;
    static TopicConfiguration: typeof TopicConfiguration;
    static CorsRule: typeof CorsRule;
    static S3KeyFilter: typeof S3KeyFilter;
    static ReplicationConfiguration: typeof ReplicationConfiguration;
    static AccelerateConfiguration: typeof AccelerateConfiguration;
    static LifecycleConfiguration: typeof LifecycleConfiguration;
    static BucketEncryption: typeof BucketEncryption;
    static AnalyticsConfiguration: typeof AnalyticsConfiguration;
    static NoncurrentVersionTransition: typeof NoncurrentVersionTransition;
    static MetricsConfiguration: typeof MetricsConfiguration;
    static FilterRule: typeof FilterRule;
    static RoutingRule: typeof RoutingRule;
    static Transition: typeof Transition;
    static PublicAccessBlockConfiguration: typeof PublicAccessBlockConfiguration;
    static RedirectAllRequestsTo: typeof RedirectAllRequestsTo;
    static LoggingConfiguration: typeof LoggingConfiguration;
    static RedirectRule: typeof RedirectRule;
    static AccessControlTranslation: typeof AccessControlTranslation;
    constructor(properties: BucketProperties);
}
