import * as core from "@terrascript/core";
export interface WebsiteArgs extends core.SchemaArgs {
    errorDocument?: string | core.StringOut;
    indexDocument?: string | core.StringOut;
    redirectAllRequestsTo?: string | core.StringOut;
    routingRules?: string | core.StringOut;
}
export declare class Website extends core.Schema<WebsiteArgs> {
    errorDocument?: string | core.StringOut;
    indexDocument?: string | core.StringOut;
    redirectAllRequestsTo?: string | core.StringOut;
    routingRules?: string | core.StringOut;
}
export interface VersioningArgs extends core.SchemaArgs {
    enabled?: boolean | core.BooleanOut;
    mfaDelete?: boolean | core.BooleanOut;
}
export declare class Versioning extends core.Schema<VersioningArgs> {
    enabled?: boolean | core.BooleanOut;
    mfaDelete?: boolean | core.BooleanOut;
}
export interface FilterArgs extends core.SchemaArgs {
    prefix?: string | core.StringOut;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
}
export declare class Filter extends core.Schema<FilterArgs> {
    prefix?: string | core.StringOut;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
}
export interface AccessControlTranslationArgs extends core.SchemaArgs {
    owner: string | core.StringOut;
}
export declare class AccessControlTranslation extends core.Schema<AccessControlTranslationArgs> {
    owner: string | core.StringOut;
}
export interface ReplicationTimeArgs extends core.SchemaArgs {
    minutes?: number | core.NumberOut;
    status?: string | core.StringOut;
}
export declare class ReplicationTime extends core.Schema<ReplicationTimeArgs> {
    minutes?: number | core.NumberOut;
    status?: string | core.StringOut;
}
export interface MetricsArgs extends core.SchemaArgs {
    minutes?: number | core.NumberOut;
    status?: string | core.StringOut;
}
export declare class Metrics extends core.Schema<MetricsArgs> {
    minutes?: number | core.NumberOut;
    status?: string | core.StringOut;
}
export interface DestinationArgs extends core.SchemaArgs {
    accessControlTranslation?: AccessControlTranslation;
    accountId?: string | core.StringOut;
    bucket: string | core.StringOut;
    metrics?: Metrics;
    replicaKmsKeyId?: string | core.StringOut;
    replicationTime?: ReplicationTime;
    storageClass?: string | core.StringOut;
}
export declare class Destination extends core.Schema<DestinationArgs> {
    accessControlTranslation?: AccessControlTranslation;
    accountId?: string | core.StringOut;
    bucket: string | core.StringOut;
    metrics?: Metrics;
    replicaKmsKeyId?: string | core.StringOut;
    replicationTime?: ReplicationTime;
    storageClass?: string | core.StringOut;
}
export interface SseKmsEncryptedObjectsArgs extends core.SchemaArgs {
    enabled: boolean | core.BooleanOut;
}
export declare class SseKmsEncryptedObjects extends core.Schema<SseKmsEncryptedObjectsArgs> {
    enabled: boolean | core.BooleanOut;
}
export interface SourceSelectionCriteriaArgs extends core.SchemaArgs {
    sseKmsEncryptedObjects?: SseKmsEncryptedObjects;
}
export declare class SourceSelectionCriteria extends core.Schema<SourceSelectionCriteriaArgs> {
    sseKmsEncryptedObjects?: SseKmsEncryptedObjects;
}
export interface RulesArgs extends core.SchemaArgs {
    deleteMarkerReplicationStatus?: string | core.StringOut;
    destination: Destination;
    filter?: Filter;
    id?: string | core.StringOut;
    prefix?: string | core.StringOut;
    priority?: number | core.NumberOut;
    sourceSelectionCriteria?: SourceSelectionCriteria;
    status: string | core.StringOut;
}
export declare class Rules extends core.Schema<RulesArgs> {
    deleteMarkerReplicationStatus?: string | core.StringOut;
    destination: Destination;
    filter?: Filter;
    id?: string | core.StringOut;
    prefix?: string | core.StringOut;
    priority?: number | core.NumberOut;
    sourceSelectionCriteria?: SourceSelectionCriteria;
    status: string | core.StringOut;
}
export interface ReplicationConfigurationArgs extends core.SchemaArgs {
    role: string | core.StringOut;
    rules: core.Array<Rules> | core.ArrayOut<Rules>;
}
export declare class ReplicationConfiguration extends core.Schema<ReplicationConfigurationArgs> {
    role: string | core.StringOut;
    rules: core.Array<Rules> | core.ArrayOut<Rules>;
}
export interface ExpirationArgs extends core.SchemaArgs {
    date?: string | core.StringOut;
    days?: number | core.NumberOut;
    expiredObjectDeleteMarker?: boolean | core.BooleanOut;
}
export declare class Expiration extends core.Schema<ExpirationArgs> {
    date?: string | core.StringOut;
    days?: number | core.NumberOut;
    expiredObjectDeleteMarker?: boolean | core.BooleanOut;
}
export interface NoncurrentVersionTransitionArgs extends core.SchemaArgs {
    days?: number | core.NumberOut;
    storageClass: string | core.StringOut;
}
export declare class NoncurrentVersionTransition extends core.Schema<NoncurrentVersionTransitionArgs> {
    days?: number | core.NumberOut;
    storageClass: string | core.StringOut;
}
export interface NoncurrentVersionExpirationArgs extends core.SchemaArgs {
    days?: number | core.NumberOut;
}
export declare class NoncurrentVersionExpiration extends core.Schema<NoncurrentVersionExpirationArgs> {
    days?: number | core.NumberOut;
}
export interface TransitionArgs extends core.SchemaArgs {
    date?: string | core.StringOut;
    days?: number | core.NumberOut;
    storageClass: string | core.StringOut;
}
export declare class Transition extends core.Schema<TransitionArgs> {
    date?: string | core.StringOut;
    days?: number | core.NumberOut;
    storageClass: string | core.StringOut;
}
export interface LifecycleRuleArgs extends core.SchemaArgs {
    abortIncompleteMultipartUploadDays?: number | core.NumberOut;
    enabled: boolean | core.BooleanOut;
    expiration?: Expiration;
    id?: string | core.StringOut;
    noncurrentVersionExpiration?: NoncurrentVersionExpiration;
    noncurrentVersionTransition?: core.Array<NoncurrentVersionTransition> | core.ArrayOut<NoncurrentVersionTransition>;
    prefix?: string | core.StringOut;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    transition?: core.Array<Transition> | core.ArrayOut<Transition>;
}
export declare class LifecycleRule extends core.Schema<LifecycleRuleArgs> {
    abortIncompleteMultipartUploadDays?: number | core.NumberOut;
    enabled: boolean | core.BooleanOut;
    expiration?: Expiration;
    id?: string | core.StringOut;
    noncurrentVersionExpiration?: NoncurrentVersionExpiration;
    noncurrentVersionTransition?: core.Array<NoncurrentVersionTransition> | core.ArrayOut<NoncurrentVersionTransition>;
    prefix?: string | core.StringOut;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    transition?: core.Array<Transition> | core.ArrayOut<Transition>;
}
export interface LoggingArgs extends core.SchemaArgs {
    targetBucket: string | core.StringOut;
    targetPrefix?: string | core.StringOut;
}
export declare class Logging extends core.Schema<LoggingArgs> {
    targetBucket: string | core.StringOut;
    targetPrefix?: string | core.StringOut;
}
export interface GrantArgs extends core.SchemaArgs {
    id?: string | core.StringOut;
    permissions: core.Array<string> | core.ArrayOut<core.StringOut>;
    type: string | core.StringOut;
    uri?: string | core.StringOut;
}
export declare class Grant extends core.Schema<GrantArgs> {
    id?: string | core.StringOut;
    permissions: core.Array<string> | core.ArrayOut<core.StringOut>;
    type: string | core.StringOut;
    uri?: string | core.StringOut;
}
export interface DefaultRetentionArgs extends core.SchemaArgs {
    days?: number | core.NumberOut;
    mode: string | core.StringOut;
    years?: number | core.NumberOut;
}
export declare class DefaultRetention extends core.Schema<DefaultRetentionArgs> {
    days?: number | core.NumberOut;
    mode: string | core.StringOut;
    years?: number | core.NumberOut;
}
export interface ObjectLockConfigurationRuleArgs extends core.SchemaArgs {
    defaultRetention: DefaultRetention;
}
export declare class ObjectLockConfigurationRule extends core.Schema<ObjectLockConfigurationRuleArgs> {
    defaultRetention: DefaultRetention;
}
export interface ObjectLockConfigurationArgs extends core.SchemaArgs {
    objectLockEnabled?: string | core.StringOut;
    rule?: ObjectLockConfigurationRule;
}
export declare class ObjectLockConfiguration extends core.Schema<ObjectLockConfigurationArgs> {
    objectLockEnabled?: string | core.StringOut;
    rule?: ObjectLockConfigurationRule;
}
export interface ApplyServerSideEncryptionByDefaultArgs extends core.SchemaArgs {
    kmsMasterKeyId?: string | core.StringOut;
    sseAlgorithm: string | core.StringOut;
}
export declare class ApplyServerSideEncryptionByDefault extends core.Schema<ApplyServerSideEncryptionByDefaultArgs> {
    kmsMasterKeyId?: string | core.StringOut;
    sseAlgorithm: string | core.StringOut;
}
export interface ServerSideEncryptionConfigurationRuleArgs extends core.SchemaArgs {
    applyServerSideEncryptionByDefault: ApplyServerSideEncryptionByDefault;
    bucketKeyEnabled?: boolean | core.BooleanOut;
}
export declare class ServerSideEncryptionConfigurationRule extends core.Schema<ServerSideEncryptionConfigurationRuleArgs> {
    applyServerSideEncryptionByDefault: ApplyServerSideEncryptionByDefault;
    bucketKeyEnabled?: boolean | core.BooleanOut;
}
export interface ServerSideEncryptionConfigurationArgs extends core.SchemaArgs {
    rule: ServerSideEncryptionConfigurationRule;
}
export declare class ServerSideEncryptionConfiguration extends core.Schema<ServerSideEncryptionConfigurationArgs> {
    rule: ServerSideEncryptionConfigurationRule;
}
export interface CorsRuleArgs extends core.SchemaArgs {
    allowedHeaders?: core.Array<string> | core.ArrayOut<core.StringOut>;
    allowedMethods: core.Array<string> | core.ArrayOut<core.StringOut>;
    allowedOrigins: core.Array<string> | core.ArrayOut<core.StringOut>;
    exposeHeaders?: core.Array<string> | core.ArrayOut<core.StringOut>;
    maxAgeSeconds?: number | core.NumberOut;
}
export declare class CorsRule extends core.Schema<CorsRuleArgs> {
    allowedHeaders?: core.Array<string> | core.ArrayOut<core.StringOut>;
    allowedMethods: core.Array<string> | core.ArrayOut<core.StringOut>;
    allowedOrigins: core.Array<string> | core.ArrayOut<core.StringOut>;
    exposeHeaders?: core.Array<string> | core.ArrayOut<core.StringOut>;
    maxAgeSeconds?: number | core.NumberOut;
}
export interface BucketArgs extends core.ResourceArgs {
    accelerationStatus?: string | core.StringOut;
    acl?: string | core.StringOut;
    arn?: string | core.StringOut;
    bucket?: string | core.StringOut;
    bucketPrefix?: string | core.StringOut;
    corsRule?: core.Array<CorsRule> | core.ArrayOut<CorsRule>;
    forceDestroy?: boolean | core.BooleanOut;
    grant?: core.Array<Grant> | core.ArrayOut<Grant>;
    hostedZoneId?: string | core.StringOut;
    lifecycleRule?: core.Array<LifecycleRule> | core.ArrayOut<LifecycleRule>;
    logging?: Logging;
    objectLockConfiguration?: ObjectLockConfiguration;
    objectLockEnabled?: boolean | core.BooleanOut;
    policy?: string | core.StringOut;
    replicationConfiguration?: ReplicationConfiguration;
    requestPayer?: string | core.StringOut;
    serverSideEncryptionConfiguration?: ServerSideEncryptionConfiguration;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;
    versioning?: Versioning;
    website?: Website;
}
export declare class Bucket extends core.Resource<BucketArgs> {
    accelerationStatus?: string | core.StringOut;
    acl?: string | core.StringOut;
    arn?: string | core.StringOut;
    bucket?: string | core.StringOut;
    bucketDomainName: string | core.StringOut;
    bucketPrefix?: string | core.StringOut;
    bucketRegionalDomainName: string | core.StringOut;
    corsRule?: core.Array<CorsRule> | core.ArrayOut<CorsRule>;
    forceDestroy?: boolean | core.BooleanOut;
    grant?: core.Array<Grant> | core.ArrayOut<Grant>;
    hostedZoneId?: string | core.StringOut;
    id: string | core.StringOut;
    lifecycleRule?: core.Array<LifecycleRule> | core.ArrayOut<LifecycleRule>;
    logging?: Logging;
    objectLockConfiguration?: ObjectLockConfiguration;
    objectLockEnabled?: boolean | core.BooleanOut;
    policy?: string | core.StringOut;
    region: string | core.StringOut;
    replicationConfiguration?: ReplicationConfiguration;
    requestPayer?: string | core.StringOut;
    serverSideEncryptionConfiguration?: ServerSideEncryptionConfiguration;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;
    versioning?: Versioning;
    website?: Website;
    websiteDomain: string | core.StringOut;
    websiteEndpoint: string | core.StringOut;
    constructor(name: string, args?: BucketArgs);
    getNamespace(): string;
}
//# sourceMappingURL=bucket.d.ts.map