///
import * as AWS from 'aws-sdk';
export declare class AwsClients {
readonly region: string;
private readonly output;
static default(output: NodeJS.WritableStream): Promise;
static forRegion(region: string, output: NodeJS.WritableStream): Promise;
private readonly config;
readonly cloudFormation: AwsCaller;
readonly s3: AwsCaller;
readonly ecr: AwsCaller;
readonly sns: AwsCaller;
readonly iam: AwsCaller;
readonly lambda: AwsCaller;
readonly sts: AwsCaller;
constructor(region: string, output: NodeJS.WritableStream);
account(): Promise;
deleteStacks(...stackNames: string[]): Promise;
stackStatus(stackName: string): Promise;
emptyBucket(bucketName: string): Promise;
deleteImageRepository(repositoryName: string): Promise;
deleteBucket(bucketName: string): Promise;
}
declare type AwsCaller = >(call: B, request: First[B]>) => Promise[B]>>;
declare type ServiceCalls = NoNayNever>;
declare type SimplifiedService = {
[k in keyof T]: AwsCallIO;
};
declare type NoNayNever = Pick;
declare type AwsCallIO = T extends {
(args: infer INPUT, callback?: ((err: AWS.AWSError, data: any) => void) | undefined): AWS.Request;
(callback?: ((err: AWS.AWSError, data: {}) => void) | undefined): AWS.Request;
} ? [INPUT, OUTPUT] : never;
declare type First = T extends [any, any] ? T[0] : never;
declare type Second = T extends [any, any] ? T[1] : never;
export declare function isStackMissingError(e: Error): boolean;
export declare function isBucketMissingError(e: Error): boolean;
/**
* Retry an async operation until a deadline is hit.
*
* Use `retry.forSeconds()` to construct a deadline relative to right now.
*
* Exceptions will cause the operation to retry. Use `retry.abort` to annotate an exception
* to stop the retry and end in a failure.
*/
export declare function retry(output: NodeJS.WritableStream, operation: string, deadline: Date, block: () => Promise): Promise;
export declare namespace retry {
var forSeconds: (seconds: number) => Date;
var abort: (e: Error) => Error;
}
export declare function sleep(ms: number): Promise;
export declare function outputFromStack(key: string, stack: AWS.CloudFormation.Stack): string | undefined;
export {};