import * as core from "@terrascript/core"; export interface NoncurrentVersionTransitionArgs extends core.SchemaArgs { newerNoncurrentVersions?: string | core.StringOut; noncurrentDays?: number | core.NumberOut; storageClass: string | core.StringOut; } export class NoncurrentVersionTransition extends core.Schema { @core.attr(String) public newerNoncurrentVersions?: string | core.StringOut; @core.attr(Number) public noncurrentDays?: number | core.NumberOut; @core.attr(String) public storageClass!: string | core.StringOut; } export interface TagArgs extends core.SchemaArgs { key: string | core.StringOut; value: string | core.StringOut; } export class Tag extends core.Schema { @core.attr(String) public key!: string | core.StringOut; @core.attr(String) public 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 | core.MapOut; } export class And extends core.Schema { @core.attr(Number) public objectSizeGreaterThan?: number | core.NumberOut; @core.attr(Number) public objectSizeLessThan?: number | core.NumberOut; @core.attr(String) public prefix?: string | core.StringOut; @core.attr(String, { kind: "map" }) public tags?: core.Map | core.MapOut; } export interface FilterArgs extends core.SchemaArgs { and?: And; objectSizeGreaterThan?: string | core.StringOut; objectSizeLessThan?: string | core.StringOut; prefix?: string | core.StringOut; tag?: Tag; } export class Filter extends core.Schema { @core.attr(And) public and?: And; @core.attr(String) public objectSizeGreaterThan?: string | core.StringOut; @core.attr(String) public objectSizeLessThan?: string | core.StringOut; @core.attr(String) public prefix?: string | core.StringOut; @core.attr(Tag) public tag?: Tag; } export interface NoncurrentVersionExpirationArgs extends core.SchemaArgs { newerNoncurrentVersions?: string | core.StringOut; noncurrentDays?: number | core.NumberOut; } export class NoncurrentVersionExpiration extends core.Schema { @core.attr(String) public newerNoncurrentVersions?: string | core.StringOut; @core.attr(Number) public noncurrentDays?: number | core.NumberOut; } export interface AbortIncompleteMultipartUploadArgs extends core.SchemaArgs { daysAfterInitiation?: number | core.NumberOut; } export class AbortIncompleteMultipartUpload extends core.Schema { @core.attr(Number) public daysAfterInitiation?: number | core.NumberOut; } export interface ExpirationArgs extends core.SchemaArgs { date?: string | core.StringOut; days?: number | core.NumberOut; expiredObjectDeleteMarker?: boolean | core.BooleanOut; } export class Expiration extends core.Schema { @core.attr(String) public date?: string | core.StringOut; @core.attr(Number) public days?: number | core.NumberOut; @core.attr(Boolean, { computed: true }) public expiredObjectDeleteMarker?: boolean | core.BooleanOut; } export interface TransitionArgs extends core.SchemaArgs { date?: string | core.StringOut; days?: number | core.NumberOut; storageClass: string | core.StringOut; } export class Transition extends core.Schema { @core.attr(String) public date?: string | core.StringOut; @core.attr(Number) public days?: number | core.NumberOut; @core.attr(String) public storageClass!: string | core.StringOut; } export interface RuleArgs extends core.SchemaArgs { abortIncompleteMultipartUpload?: AbortIncompleteMultipartUpload; expiration?: Expiration; filter?: Filter; id: string | core.StringOut; noncurrentVersionExpiration?: NoncurrentVersionExpiration; noncurrentVersionTransition?: | core.Array | core.ArrayOut; prefix?: string | core.StringOut; status: string | core.StringOut; transition?: core.Array | core.ArrayOut; } export class Rule extends core.Schema { @core.attr(AbortIncompleteMultipartUpload) public abortIncompleteMultipartUpload?: AbortIncompleteMultipartUpload; @core.attr(Expiration) public expiration?: Expiration; @core.attr(Filter) public filter?: Filter; @core.attr(String) public id!: string | core.StringOut; @core.attr(NoncurrentVersionExpiration) public noncurrentVersionExpiration?: NoncurrentVersionExpiration; @core.attr(NoncurrentVersionTransition, { kind: "array" }) public noncurrentVersionTransition?: | core.Array | core.ArrayOut; @core.attr(String) public prefix?: string | core.StringOut; @core.attr(String) public status!: string | core.StringOut; @core.attr(Transition, { kind: "array" }) public transition?: core.Array | core.ArrayOut; } export interface BucketLifecycleConfigurationArgs extends core.ResourceArgs { /** * (Required) The name of the source S3 bucket you want Amazon S3 to monitor. */ bucket: string | core.StringOut; /** * (Optional) The account ID of the expected bucket owner. If the bucket is owned by a different accoun * t, the request will fail with an HTTP 403 (Access Denied) error. */ expectedBucketOwner?: string | core.StringOut; /** * (Required) List of configuration blocks describing the rules managing the replication [documented be * low](#rule). */ rule: core.Array | core.ArrayOut; } export class BucketLifecycleConfiguration extends core.Resource { /** * (Required) The name of the source S3 bucket you want Amazon S3 to monitor. */ @core.attr(String) public bucket!: string | core.StringOut; /** * (Optional) The account ID of the expected bucket owner. If the bucket is owned by a different accoun * t, the request will fail with an HTTP 403 (Access Denied) error. */ @core.attr(String) public expectedBucketOwner?: string | core.StringOut; /** * (Required) Unique identifier for the rule. The value cannot be longer than 255 characters. */ @core.attr(String, { computed: true }) public id!: string | core.StringOut; /** * (Required) List of configuration blocks describing the rules managing the replication [documented be * low](#rule). */ @core.attr(Rule, { kind: "array" }) public rule!: core.Array | core.ArrayOut; constructor(name: string, args?: BucketLifecycleConfigurationArgs) { super(name, "aws_s3_bucket_lifecycle_configuration", args); } public override getNamespace(): string { return "aws_s3"; } }