import * as core from "@terrascript/core";
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 TagArgs extends core.SchemaArgs {
    key: string | core.StringOut;
    value: string | core.StringOut;
}
export declare class Tag extends core.Schema<TagArgs> {
    key: string | core.StringOut;
    value: string | core.StringOut;
}
export interface AndArgs extends core.SchemaArgs {
    objectSizeGreaterThan?: number | core.NumberOut;
    objectSizeLessThan?: number | core.NumberOut;
    prefix?: string | core.StringOut;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
}
export declare class And extends core.Schema<AndArgs> {
    objectSizeGreaterThan?: number | core.NumberOut;
    objectSizeLessThan?: number | core.NumberOut;
    prefix?: string | core.StringOut;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
}
export interface FilterArgs extends core.SchemaArgs {
    and?: And;
    objectSizeGreaterThan?: string | core.StringOut;
    objectSizeLessThan?: string | core.StringOut;
    prefix?: string | core.StringOut;
    tag?: Tag;
}
export declare class Filter extends core.Schema<FilterArgs> {
    and?: And;
    objectSizeGreaterThan?: string | core.StringOut;
    objectSizeLessThan?: string | core.StringOut;
    prefix?: string | core.StringOut;
    tag?: Tag;
}
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 {
    newerNoncurrentVersions?: string | core.StringOut;
    noncurrentDays?: number | core.NumberOut;
    storageClass: string | core.StringOut;
}
export declare class NoncurrentVersionTransition extends core.Schema<NoncurrentVersionTransitionArgs> {
    newerNoncurrentVersions?: string | core.StringOut;
    noncurrentDays?: number | core.NumberOut;
    storageClass: string | core.StringOut;
}
export interface AbortIncompleteMultipartUploadArgs extends core.SchemaArgs {
    daysAfterInitiation?: number | core.NumberOut;
}
export declare class AbortIncompleteMultipartUpload extends core.Schema<AbortIncompleteMultipartUploadArgs> {
    daysAfterInitiation?: number | core.NumberOut;
}
export interface NoncurrentVersionExpirationArgs extends core.SchemaArgs {
    newerNoncurrentVersions?: string | core.StringOut;
    noncurrentDays?: number | core.NumberOut;
}
export declare class NoncurrentVersionExpiration extends core.Schema<NoncurrentVersionExpirationArgs> {
    newerNoncurrentVersions?: string | core.StringOut;
    noncurrentDays?: number | core.NumberOut;
}
export interface RuleArgs extends core.SchemaArgs {
    abortIncompleteMultipartUpload?: AbortIncompleteMultipartUpload;
    expiration?: Expiration;
    filter?: Filter;
    id: string | core.StringOut;
    noncurrentVersionExpiration?: NoncurrentVersionExpiration;
    noncurrentVersionTransition?: core.Array<NoncurrentVersionTransition> | core.ArrayOut<NoncurrentVersionTransition>;
    prefix?: string | core.StringOut;
    status: string | core.StringOut;
    transition?: core.Array<Transition> | core.ArrayOut<Transition>;
}
export declare class Rule extends core.Schema<RuleArgs> {
    abortIncompleteMultipartUpload?: AbortIncompleteMultipartUpload;
    expiration?: Expiration;
    filter?: Filter;
    id: string | core.StringOut;
    noncurrentVersionExpiration?: NoncurrentVersionExpiration;
    noncurrentVersionTransition?: core.Array<NoncurrentVersionTransition> | core.ArrayOut<NoncurrentVersionTransition>;
    prefix?: string | core.StringOut;
    status: string | core.StringOut;
    transition?: core.Array<Transition> | core.ArrayOut<Transition>;
}
export interface BucketLifecycleConfigurationArgs extends core.ResourceArgs {
    bucket: string | core.StringOut;
    expectedBucketOwner?: string | core.StringOut;
    rule: core.Array<Rule> | core.ArrayOut<Rule>;
}
export declare class BucketLifecycleConfiguration extends core.Resource<BucketLifecycleConfigurationArgs> {
    bucket: string | core.StringOut;
    expectedBucketOwner?: string | core.StringOut;
    id: string | core.StringOut;
    rule: core.Array<Rule> | core.ArrayOut<Rule>;
    constructor(name: string, args?: BucketLifecycleConfigurationArgs);
    getNamespace(): string;
}
//# sourceMappingURL=bucket_lifecycle_configuration.d.ts.map