import { ResourceBase , ResourceTag } from '../resource' ; import { Value , List } from '../dataTypes' ; export class FastRestoreRule { IntervalUnit ? : Value < string > ; AvailabilityZones ? : List < Value < string > > ; Count ? : Value < number > ; Interval ? : Value < number > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class EventSource { Type ! : Value < string > ; Parameters ? : EventParameters ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class EventParameters { EventType ! : Value < string > ; SnapshotOwner ! : List < Value < string > > ; DescriptionRegex ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class Action { CrossRegionCopy ! : List < CrossRegionCopyAction > ; Name ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class CreateRule { IntervalUnit ? : Value < string > ; Times ? : List < Value < string > > ; CronExpression ? : Value < string > ; Interval ? : Value < number > ; Location ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class RetainRule { IntervalUnit ? : Value < string > ; Count ? : Value < number > ; Interval ? : Value < number > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class PolicyDetails { ResourceTypes ? : List < Value < string > > ; Schedules ? : List < Schedule > ; PolicyType ? : Value < string > ; EventSource ? : EventSource ; Parameters ? : Parameters ; Actions ? : List < Action > ; TargetTags ? : List < ResourceTag > ; ResourceLocations ? : List < Value < string > > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class Parameters { ExcludeBootVolume ? : Value < boolean > ; NoReboot ? : Value < boolean > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class EncryptionConfiguration { Encrypted ! : Value < boolean > ; CmkArn ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class Schedule { ShareRules ? : List < ShareRule > ; TagsToAdd ? : List < ResourceTag > ; CreateRule ? : CreateRule ; VariableTags ? : List < ResourceTag > ; FastRestoreRule ? : FastRestoreRule ; RetainRule ? : RetainRule ; CrossRegionCopyRules ? : List < CrossRegionCopyRule > ; Name ? : Value < string > ; CopyTags ? : Value < boolean > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class CrossRegionCopyRetainRule { IntervalUnit ! : Value < string > ; Interval ! : Value < number > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class CrossRegionCopyRule { TargetRegion ? : Value < string > ; Target ? : Value < string > ; Encrypted ! : Value < boolean > ; CmkArn ? : Value < string > ; RetainRule ? : CrossRegionCopyRetainRule ; CopyTags ? : Value < boolean > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class CrossRegionCopyAction { Target ! : Value < string > ; EncryptionConfiguration ! : EncryptionConfiguration ; RetainRule ? : CrossRegionCopyRetainRule ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class ShareRule { TargetAccounts ? : List < Value < string > > ; UnshareIntervalUnit ? : Value < string > ; UnshareInterval ? : Value < number > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export interface LifecyclePolicyProperties { ExecutionRoleArn ? : Value < string > ; Description ? : Value < string > ; State ? : Value < string > ; PolicyDetails ? : PolicyDetails ; Tags ? : List < ResourceTag > ; } export default class LifecyclePolicy extends ResourceBase < LifecyclePolicyProperties > { static FastRestoreRule = FastRestoreRule ; static EventSource = EventSource ; static EventParameters = EventParameters ; static Action = Action ; static CreateRule = CreateRule ; static RetainRule = RetainRule ; static PolicyDetails = PolicyDetails ; static Parameters = Parameters ; static EncryptionConfiguration = EncryptionConfiguration ; static Schedule = Schedule ; static CrossRegionCopyRetainRule = CrossRegionCopyRetainRule ; static CrossRegionCopyRule = CrossRegionCopyRule ; static CrossRegionCopyAction = CrossRegionCopyAction ; static ShareRule = ShareRule ; constructor ( properties ? ) { super ( 'AWS::DLM::LifecyclePolicy' , properties || { } ) ; } }