import * as core from "@terrascript/core"; export interface DefaultRetentionArgs extends core.SchemaArgs { days?: number | core.NumberOut; mode?: string | core.StringOut; years?: number | core.NumberOut; } export class DefaultRetention extends core.Schema { @core.attr(Number) public days?: number | core.NumberOut; @core.attr(String) public mode?: string | core.StringOut; @core.attr(Number) public years?: number | core.NumberOut; } export interface RuleArgs extends core.SchemaArgs { defaultRetention: DefaultRetention; } export class Rule extends core.Schema { @core.attr(DefaultRetention) public defaultRetention!: DefaultRetention; } export interface BucketObjectLockConfigurationArgs extends core.ResourceArgs { /** * (Required, Forces new resource) The name of the bucket. */ bucket: string | core.StringOut; /** * (Optional, Forces new resource) The account ID of the expected bucket owner. */ expectedBucketOwner?: string | core.StringOut; /** * (Optional, Forces new resource) Indicates whether this bucket has an Object Lock configuration enabl * ed. Defaults to `Enabled`. Valid values: `Enabled`. */ objectLockEnabled?: string | core.StringOut; /** * (Required) Configuration block for specifying the Object Lock rule for the specified object [detaile * d below](#rule). */ rule: Rule; /** * (Optional) A token to allow Object Lock to be enabled for an existing bucket. You must contact AWS s * upport for the bucket's "Object Lock token". */ token?: string | core.StringOut; } export class BucketObjectLockConfiguration extends core.Resource { /** * (Required, Forces new resource) The name of the bucket. */ @core.attr(String) public bucket!: string | core.StringOut; /** * (Optional, Forces new resource) The account ID of the expected bucket owner. */ @core.attr(String) public expectedBucketOwner?: string | core.StringOut; /** * The `bucket` or `bucket` and `expected_bucket_owner` separated by a comma (`,`) if the latter is pro * vided. */ @core.attr(String, { computed: true }) public id!: string | core.StringOut; /** * (Optional, Forces new resource) Indicates whether this bucket has an Object Lock configuration enabl * ed. Defaults to `Enabled`. Valid values: `Enabled`. */ @core.attr(String) public objectLockEnabled?: string | core.StringOut; /** * (Required) Configuration block for specifying the Object Lock rule for the specified object [detaile * d below](#rule). */ @core.attr(Rule) public rule!: Rule; /** * (Optional) A token to allow Object Lock to be enabled for an existing bucket. You must contact AWS s * upport for the bucket's "Object Lock token". */ @core.attr(String) public token?: string | core.StringOut; constructor(name: string, args?: BucketObjectLockConfigurationArgs) { super(name, "aws_s3_bucket_object_lock_configuration", args); } public override getNamespace(): string { return "aws_s3"; } }