import { BaseError, FlowNodeInstance, Model } from '@5minds/processcube_engine_sdk';
import { FlowNodeInstanceTypeSpecificData } from '../../../Contracts';
import { FlowNodeHandler } from '../FlowNodeHandler';
export declare abstract class GatewayHandler<TFlowNode extends Model.Gateways.Gateway> extends FlowNodeHandler<TFlowNode> {
    protected flowNodeInstancesArrivedAtGateway: Array<string>;
    protected unresolved: Function[];
    protected beforeExecute(resolveFunction?: Function, rejectFunction?: Function, resumedFlowNodeInstances?: Array<FlowNodeInstance>): Promise<void>;
    protected afterExecute(): Promise<void>;
    execute(previousFlowNodeInstanceId?: string, previousResult?: any): Promise<void>;
    resume(flowNodeInstanceForHandler: FlowNodeInstance, allFlowNodeInstances: Array<FlowNodeInstance>): Promise<void>;
    protected resumeFromState(flowNodeInstance: FlowNodeInstance, processFlowNodeInstances?: Array<FlowNodeInstance>): Promise<Array<Model.Base.FlowNode>>;
    protected resumeAfterExit(allFlowNodeInstances?: Array<FlowNodeInstance>): Promise<Array<Model.Base.FlowNode>>;
    protected persistOnTerminate<TFlowNodeData extends FlowNodeInstanceTypeSpecificData>(typeData?: TFlowNodeData): Promise<void>;
    protected persistOnError<TFlowNodeData extends FlowNodeInstanceTypeSpecificData>(error: BaseError, typeData?: TFlowNodeData): Promise<void>;
    protected publishGatewayReachedNotification(): void;
    protected publishGatewayFinishedNotification(): void;
}
