import { $TSAny } from '@aws-amplify/amplify-cli-core';
export interface CFNOutput {
    readonly Description?: string;
    Value: string | object;
}
export declare enum CFNFunction {
    Equals = "Fn::Equals",
    Not = "Fn::Not",
    Or = "Fn::Or",
    And = "Fn::And",
    If = "Fn::If"
}
export type CFNIntrinsicFunctionCondition = {
    readonly Condition: string;
};
export type CFNConditionFunctionStatement = string | object | CFNConditionFunction | CFNIntrinsicFunctionCondition;
export type CFNConditionFunction = {
    readonly [CFNFunction.Equals]: [CFNConditionFunctionStatement, CFNConditionFunctionStatement];
} | {
    readonly [CFNFunction.Not]: [CFNConditionFunctionStatement];
} | {
    readonly [CFNFunction.Or]: [CFNConditionFunctionStatement, CFNConditionFunctionStatement];
} | {
    readonly [CFNFunction.And]: [CFNConditionFunctionStatement, CFNConditionFunctionStatement];
};
export interface CFNResource {
    readonly Type: string;
    readonly Properties: Record<string, string | number | boolean | object>;
    readonly Condition?: string;
    UpdateReplacePolicy?: string;
    DeletionPolicy?: string;
    DependsOn?: string | string[];
}
export interface CFNParameter {
    readonly Type: string;
    readonly Default?: string;
    readonly Description?: string;
    readonly NoEcho?: boolean;
}
export interface CFNTemplate {
    readonly Description: string;
    readonly AWSTemplateFormatVersion: string;
    readonly Conditions?: Record<string, CFNConditionFunction>;
    readonly Parameters?: Record<string, CFNParameter>;
    Resources: Record<string, CFNResource>;
    Outputs?: Record<string, CFNOutput>;
    Metadata?: Record<string, $TSAny>;
}
export declare enum CFNStackStatus {
    UPDATE_COMPLETE = "UPDATE_COMPLETE",
    CREATE_COMPLETE = "CREATE_COMPLETE"
}
export declare enum CFN_PSEUDO_PARAMETERS_REF {
    StackName = "AWS::StackName"
}
//# sourceMappingURL=cfn-template.d.ts.map