import { List, Value } from "./dataTypes"; export interface CreationPolicy { AutoScalingCreationPolicy?: { MinSuccessfulInstancesPercent?: Value; }; ResourceSignal?: { Count?: Value; Timeout?: Value; }; } export declare enum DeletionPolicy { Delete = "Delete", Retain = "Retain", Snapshot = "Snapshot" } export interface UpdatePolicy { AutoScalingReplacingUpdate?: { WillReplace?: Value; }; AutoScalingRollingUpdate?: { MaxBatchSize?: Value; MinInstancesInService?: Value; MinSuccessfulInstancesPercent?: Value; PauseTime?: Value; SuspendProcesses?: List; WaitOnResourceSignals?: Value; }; AutoScalingScheduledAction?: { IgnoreUnmodifiedGroupSizeProperties?: Value; }; } export default interface Resource { Type: string; DependsOn?: Value | List; Properties?: { [key: string]: any; }; Metadata?: { [key: string]: any; }; CreationPolicy?: CreationPolicy; DeletionPolicy?: DeletionPolicy; UpdatePolicy?: UpdatePolicy; Condition?: Value; } export declare abstract class ResourceBase implements Resource { Type: string; DependsOn?: Value | List; Properties: TProperties; Metadata?: { [key: string]: any; }; CreationPolicy?: CreationPolicy; DeletionPolicy?: DeletionPolicy; UpdatePolicy?: UpdatePolicy; Condition?: Value; protected constructor(type: string, properties: TProperties); dependsOn(dependencies: Value | List): this; metadata(metadata: { [key: string]: any; }): this; creationPolicy(policy: CreationPolicy): this; deletionPolicy(policy: DeletionPolicy): this; updatePolicy(policy: UpdatePolicy): this; condition(condition: Value): this; } export declare class ResourceTag { Key: Value; Value: Value; constructor(Key: Value, Value: Value); }