import * as core from "@terrascript/core";
export interface ExistingObjectReplicationArgs extends core.SchemaArgs {
    status: string | core.StringOut;
}
export declare class ExistingObjectReplication extends core.Schema<ExistingObjectReplicationArgs> {
    status: string | core.StringOut;
}
export interface ReplicaModificationsArgs extends core.SchemaArgs {
    status: string | core.StringOut;
}
export declare class ReplicaModifications extends core.Schema<ReplicaModificationsArgs> {
    status: string | core.StringOut;
}
export interface SseKmsEncryptedObjectsArgs extends core.SchemaArgs {
    status: string | core.StringOut;
}
export declare class SseKmsEncryptedObjects extends core.Schema<SseKmsEncryptedObjectsArgs> {
    status: string | core.StringOut;
}
export interface SourceSelectionCriteriaArgs extends core.SchemaArgs {
    replicaModifications?: ReplicaModifications;
    sseKmsEncryptedObjects?: SseKmsEncryptedObjects;
}
export declare class SourceSelectionCriteria extends core.Schema<SourceSelectionCriteriaArgs> {
    replicaModifications?: ReplicaModifications;
    sseKmsEncryptedObjects?: SseKmsEncryptedObjects;
}
export interface DeleteMarkerReplicationArgs extends core.SchemaArgs {
    status: string | core.StringOut;
}
export declare class DeleteMarkerReplication extends core.Schema<DeleteMarkerReplicationArgs> {
    status: string | core.StringOut;
}
export interface EncryptionConfigurationArgs extends core.SchemaArgs {
    replicaKmsKeyId: string | core.StringOut;
}
export declare class EncryptionConfiguration extends core.Schema<EncryptionConfigurationArgs> {
    replicaKmsKeyId: string | core.StringOut;
}
export interface EventThresholdArgs extends core.SchemaArgs {
    minutes: number | core.NumberOut;
}
export declare class EventThreshold extends core.Schema<EventThresholdArgs> {
    minutes: number | core.NumberOut;
}
export interface MetricsArgs extends core.SchemaArgs {
    eventThreshold?: EventThreshold;
    status: string | core.StringOut;
}
export declare class Metrics extends core.Schema<MetricsArgs> {
    eventThreshold?: EventThreshold;
    status: string | core.StringOut;
}
export interface TimeArgs extends core.SchemaArgs {
    minutes: number | core.NumberOut;
}
export declare class Time extends core.Schema<TimeArgs> {
    minutes: number | core.NumberOut;
}
export interface ReplicationTimeArgs extends core.SchemaArgs {
    status: string | core.StringOut;
    time: Time;
}
export declare class ReplicationTime extends core.Schema<ReplicationTimeArgs> {
    status: string | core.StringOut;
    time: Time;
}
export interface AccessControlTranslationArgs extends core.SchemaArgs {
    owner: string | core.StringOut;
}
export declare class AccessControlTranslation extends core.Schema<AccessControlTranslationArgs> {
    owner: string | core.StringOut;
}
export interface DestinationArgs extends core.SchemaArgs {
    accessControlTranslation?: AccessControlTranslation;
    account?: string | core.StringOut;
    bucket: string | core.StringOut;
    encryptionConfiguration?: EncryptionConfiguration;
    metrics?: Metrics;
    replicationTime?: ReplicationTime;
    storageClass?: string | core.StringOut;
}
export declare class Destination extends core.Schema<DestinationArgs> {
    accessControlTranslation?: AccessControlTranslation;
    account?: string | core.StringOut;
    bucket: string | core.StringOut;
    encryptionConfiguration?: EncryptionConfiguration;
    metrics?: Metrics;
    replicationTime?: ReplicationTime;
    storageClass?: string | core.StringOut;
}
export interface AndArgs extends core.SchemaArgs {
    prefix?: string | core.StringOut;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
}
export declare class And extends core.Schema<AndArgs> {
    prefix?: string | core.StringOut;
    tags?: core.Map<string, string> | core.MapOut<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 FilterArgs extends core.SchemaArgs {
    and?: And;
    prefix?: string | core.StringOut;
    tag?: Tag;
}
export declare class Filter extends core.Schema<FilterArgs> {
    and?: And;
    prefix?: string | core.StringOut;
    tag?: Tag;
}
export interface RuleArgs extends core.SchemaArgs {
    deleteMarkerReplication?: DeleteMarkerReplication;
    destination: Destination;
    existingObjectReplication?: ExistingObjectReplication;
    filter?: Filter;
    id?: string | core.StringOut;
    prefix?: string | core.StringOut;
    priority?: number | core.NumberOut;
    sourceSelectionCriteria?: SourceSelectionCriteria;
    status: string | core.StringOut;
}
export declare class Rule extends core.Schema<RuleArgs> {
    deleteMarkerReplication?: DeleteMarkerReplication;
    destination: Destination;
    existingObjectReplication?: ExistingObjectReplication;
    filter?: Filter;
    id?: string | core.StringOut;
    prefix?: string | core.StringOut;
    priority?: number | core.NumberOut;
    sourceSelectionCriteria?: SourceSelectionCriteria;
    status: string | core.StringOut;
}
export interface BucketReplicationConfigurationArgs extends core.ResourceArgs {
    bucket: string | core.StringOut;
    role: string | core.StringOut;
    rule: core.Array<Rule> | core.ArrayOut<Rule>;
    token?: string | core.StringOut;
}
export declare class BucketReplicationConfiguration extends core.Resource<BucketReplicationConfigurationArgs> {
    bucket: string | core.StringOut;
    id: string | core.StringOut;
    role: string | core.StringOut;
    rule: core.Array<Rule> | core.ArrayOut<Rule>;
    token?: string | core.StringOut;
    constructor(name: string, args?: BucketReplicationConfigurationArgs);
    getNamespace(): string;
}
//# sourceMappingURL=bucket_replication_configuration.d.ts.map