import * as core from "@terrascript/core"; export interface PolicyDetailsParametersArgs extends core.SchemaArgs { excludeBootVolume?: boolean | core.BooleanOut; noReboot?: boolean | core.BooleanOut; } export class PolicyDetailsParameters extends core.Schema { @core.attr(Boolean) public excludeBootVolume?: boolean | core.BooleanOut; @core.attr(Boolean) public noReboot?: boolean | core.BooleanOut; } export interface FastRestoreRuleArgs extends core.SchemaArgs { availabilityZones: core.Array | core.ArrayOut; count?: number | core.NumberOut; interval?: number | core.NumberOut; intervalUnit?: string | core.StringOut; } export class FastRestoreRule extends core.Schema { @core.attr(String, { kind: "array" }) public availabilityZones!: core.Array | core.ArrayOut; @core.attr(Number) public count?: number | core.NumberOut; @core.attr(Number) public interval?: number | core.NumberOut; @core.attr(String) public intervalUnit?: string | core.StringOut; } export interface CrossRegionCopyRuleRetainRuleArgs extends core.SchemaArgs { interval: number | core.NumberOut; intervalUnit: string | core.StringOut; } export class CrossRegionCopyRuleRetainRule extends core.Schema { @core.attr(Number) public interval!: number | core.NumberOut; @core.attr(String) public intervalUnit!: string | core.StringOut; } export interface CrossRegionCopyRuleDeprecateRuleArgs extends core.SchemaArgs { interval: number | core.NumberOut; intervalUnit: string | core.StringOut; } export class CrossRegionCopyRuleDeprecateRule extends core.Schema { @core.attr(Number) public interval!: number | core.NumberOut; @core.attr(String) public intervalUnit!: string | core.StringOut; } export interface CrossRegionCopyRuleArgs extends core.SchemaArgs { cmkArn?: string | core.StringOut; copyTags?: boolean | core.BooleanOut; deprecateRule?: CrossRegionCopyRuleDeprecateRule; encrypted: boolean | core.BooleanOut; retainRule?: CrossRegionCopyRuleRetainRule; target: string | core.StringOut; } export class CrossRegionCopyRule extends core.Schema { @core.attr(String) public cmkArn?: string | core.StringOut; @core.attr(Boolean) public copyTags?: boolean | core.BooleanOut; @core.attr(CrossRegionCopyRuleDeprecateRule) public deprecateRule?: CrossRegionCopyRuleDeprecateRule; @core.attr(Boolean) public encrypted!: boolean | core.BooleanOut; @core.attr(CrossRegionCopyRuleRetainRule) public retainRule?: CrossRegionCopyRuleRetainRule; @core.attr(String) public target!: string | core.StringOut; } export interface ScheduleDeprecateRuleArgs extends core.SchemaArgs { count?: number | core.NumberOut; interval?: number | core.NumberOut; intervalUnit?: string | core.StringOut; } export class ScheduleDeprecateRule extends core.Schema { @core.attr(Number) public count?: number | core.NumberOut; @core.attr(Number) public interval?: number | core.NumberOut; @core.attr(String) public intervalUnit?: string | core.StringOut; } export interface ShareRuleArgs extends core.SchemaArgs { targetAccounts: core.Array | core.ArrayOut; unshareInterval?: number | core.NumberOut; unshareIntervalUnit?: string | core.StringOut; } export class ShareRule extends core.Schema { @core.attr(String, { kind: "array" }) public targetAccounts!: core.Array | core.ArrayOut; @core.attr(Number) public unshareInterval?: number | core.NumberOut; @core.attr(String) public unshareIntervalUnit?: string | core.StringOut; } export interface ScheduleRetainRuleArgs extends core.SchemaArgs { count?: number | core.NumberOut; interval?: number | core.NumberOut; intervalUnit?: string | core.StringOut; } export class ScheduleRetainRule extends core.Schema { @core.attr(Number) public count?: number | core.NumberOut; @core.attr(Number) public interval?: number | core.NumberOut; @core.attr(String) public intervalUnit?: string | core.StringOut; } export interface CreateRuleArgs extends core.SchemaArgs { cronExpression?: string | core.StringOut; interval?: number | core.NumberOut; intervalUnit?: string | core.StringOut; location?: string | core.StringOut; times?: core.Array | core.ArrayOut; } export class CreateRule extends core.Schema { @core.attr(String) public cronExpression?: string | core.StringOut; @core.attr(Number) public interval?: number | core.NumberOut; @core.attr(String, { computed: true }) public intervalUnit?: string | core.StringOut; @core.attr(String, { computed: true }) public location?: string | core.StringOut; @core.attr(String, { computed: true, kind: "array" }) public times?: core.Array | core.ArrayOut; } export interface ScheduleArgs extends core.SchemaArgs { copyTags?: boolean | core.BooleanOut; createRule: CreateRule; crossRegionCopyRule?: | core.Array | core.ArrayOut; deprecateRule?: ScheduleDeprecateRule; fastRestoreRule?: FastRestoreRule; name: string | core.StringOut; retainRule: ScheduleRetainRule; shareRule?: ShareRule; tagsToAdd?: core.Map | core.MapOut; variableTags?: core.Map | core.MapOut; } export class Schedule extends core.Schema { @core.attr(Boolean, { computed: true }) public copyTags?: boolean | core.BooleanOut; @core.attr(CreateRule) public createRule!: CreateRule; @core.attr(CrossRegionCopyRule, { kind: "array" }) public crossRegionCopyRule?: | core.Array | core.ArrayOut; @core.attr(ScheduleDeprecateRule) public deprecateRule?: ScheduleDeprecateRule; @core.attr(FastRestoreRule) public fastRestoreRule?: FastRestoreRule; @core.attr(String) public name!: string | core.StringOut; @core.attr(ScheduleRetainRule) public retainRule!: ScheduleRetainRule; @core.attr(ShareRule) public shareRule?: ShareRule; @core.attr(String, { kind: "map" }) public tagsToAdd?: core.Map | core.MapOut; @core.attr(String, { kind: "map" }) public variableTags?: core.Map | core.MapOut; } export interface EncryptionConfigurationArgs extends core.SchemaArgs { cmkArn?: string | core.StringOut; encrypted?: boolean | core.BooleanOut; } export class EncryptionConfiguration extends core.Schema { @core.attr(String) public cmkArn?: string | core.StringOut; @core.attr(Boolean) public encrypted?: boolean | core.BooleanOut; } export interface CrossRegionCopyArgs extends core.SchemaArgs { encryptionConfiguration: EncryptionConfiguration; retainRule?: CrossRegionCopyRuleRetainRule; target: string | core.StringOut; } export class CrossRegionCopy extends core.Schema { @core.attr(EncryptionConfiguration) public encryptionConfiguration!: EncryptionConfiguration; @core.attr(CrossRegionCopyRuleRetainRule) public retainRule?: CrossRegionCopyRuleRetainRule; @core.attr(String) public target!: string | core.StringOut; } export interface ActionArgs extends core.SchemaArgs { crossRegionCopy: core.Array | core.ArrayOut; name: string | core.StringOut; } export class Action extends core.Schema { @core.attr(CrossRegionCopy, { kind: "array" }) public crossRegionCopy!: | core.Array | core.ArrayOut; @core.attr(String) public name!: string | core.StringOut; } export interface EventSourceParametersArgs extends core.SchemaArgs { descriptionRegex: string | core.StringOut; eventType: string | core.StringOut; snapshotOwner: core.Array | core.ArrayOut; } export class EventSourceParameters extends core.Schema { @core.attr(String) public descriptionRegex!: string | core.StringOut; @core.attr(String) public eventType!: string | core.StringOut; @core.attr(String, { kind: "array" }) public snapshotOwner!: core.Array | core.ArrayOut; } export interface EventSourceArgs extends core.SchemaArgs { parameters: EventSourceParameters; type: string | core.StringOut; } export class EventSource extends core.Schema { @core.attr(EventSourceParameters) public parameters!: EventSourceParameters; @core.attr(String) public type!: string | core.StringOut; } export interface PolicyDetailsArgs extends core.SchemaArgs { action?: Action; eventSource?: EventSource; parameters?: PolicyDetailsParameters; policyType?: string | core.StringOut; resourceLocations?: core.Array | core.ArrayOut; resourceTypes?: core.Array | core.ArrayOut; schedule?: core.Array | core.ArrayOut; targetTags?: core.Map | core.MapOut; } export class PolicyDetails extends core.Schema { @core.attr(Action) public action?: Action; @core.attr(EventSource) public eventSource?: EventSource; @core.attr(PolicyDetailsParameters) public parameters?: PolicyDetailsParameters; @core.attr(String) public policyType?: string | core.StringOut; @core.attr(String, { computed: true, kind: "array" }) public resourceLocations?: core.Array | core.ArrayOut; @core.attr(String, { kind: "array" }) public resourceTypes?: core.Array | core.ArrayOut; @core.attr(Schedule, { kind: "array" }) public schedule?: core.Array | core.ArrayOut; @core.attr(String, { kind: "map" }) public targetTags?: core.Map | core.MapOut; } export interface LifecyclePolicyArgs extends core.ResourceArgs { description: string | core.StringOut; executionRoleArn: string | core.StringOut; policyDetails: PolicyDetails; state?: string | core.StringOut; tags?: core.Map | core.MapOut; tagsAll?: core.Map | core.MapOut; } export class LifecyclePolicy extends core.Resource { @core.attr(String, { computed: true }) public arn!: string | core.StringOut; @core.attr(String) public description!: string | core.StringOut; @core.attr(String) public executionRoleArn!: string | core.StringOut; @core.attr(String, { computed: true }) public id!: string | core.StringOut; @core.attr(PolicyDetails) public policyDetails!: PolicyDetails; @core.attr(String) public state?: string | core.StringOut; @core.attr(String, { kind: "map" }) public tags?: core.Map | core.MapOut; @core.attr(String, { computed: true, kind: "map" }) public tagsAll?: core.Map | core.MapOut; constructor(name: string, args?: LifecyclePolicyArgs) { super(name, "aws_dlm_lifecycle_policy", args); } public override getNamespace(): string { return "aws_dlm"; } }