/**
 *  Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 *
 *  Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
 *  with the License. A copy of the License is located at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
 *  OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
 *  and limitations under the License.
 */
import { Parameter, Tag } from '@aws-sdk/client-cloudformation';
export declare enum WorkFlowEventType {
    INITIAL = "Initial",
    CALLSELF = "CallSelf"
}
export interface WorkFlowInitialEvent {
    readonly Type: WorkFlowEventType;
    readonly Data: {
        readonly ExecutionName: string;
        readonly Input: {
            readonly value: WorkflowOriginInput;
        };
    };
}
export interface StackData {
    ExecutionName?: string;
    Input: {
        Region: string;
        Action: string;
        StackName: string;
        TemplateURL: string;
        Parameters: Parameter[];
        Tags?: Tag[];
    };
}
export interface WorkflowOriginInput {
    readonly Type: WorkflowStateType;
}
export interface WorkflowState extends WorkflowOriginInput {
    ExecutionName?: string;
    Data?: StackData;
    Branches?: WorkflowParallelBranch[];
    End?: boolean;
    Next?: string;
}
export interface WorkflowCallSelfState extends WorkflowOriginInput {
    Type: WorkflowStateType.CALL_SELF;
    Data: WorkflowState;
    Token: string;
}
export declare enum WorkflowStateType {
    PASS = "Pass",
    STACK = "Stack",
    SERIAL = "Serial",
    PARALLEL = "Parallel",
    CALL_SELF = "CallSelf"
}
export interface WorkflowParallelBranch {
    StartAt: string;
    States: {
        [name: string]: WorkflowState;
    };
}
export declare const handler: (event: WorkFlowInitialEvent) => Promise<any>;
export declare const serial: (branch: WorkflowParallelBranch, executionName: string) => {
    Type: string;
    Data: WorkflowState[];
};
export declare const callback: (state: WorkflowState) => Promise<void>;
export declare const describe: (region: string, stackName: string) => Promise<import("@aws-sdk/client-cloudformation").Stack | undefined>;
