import { BaseError, Model } from '@5minds/processcube_engine_sdk';
import { FlowNodeInstanceTypeSpecificData } from '../../../Contracts/index';
import { FlowNodeInstanceDatabaseAdapter } from '../../../Tools/DatabaseAdaptersSequelize/';
import { EventMiddlewareHandler } from '../../../Tools/EventMiddlewareHandler';
import { ProcessInstance } from '../../ProcessInstance';
import { FlowNodeHandlerFactory } from '../FlowNodeHandlerFactory';
import { EventHandler } from './EventHandler';
export declare class StartEventHandler<TStartEvent extends Model.Events.StartEvent> extends EventHandler<Model.Events.StartEvent> {
    constructor(eventMiddlewareHandler: EventMiddlewareHandler, flowNodeHandlerFactory: FlowNodeHandlerFactory, flowNodeInstanceDatabaseAdapter: FlowNodeInstanceDatabaseAdapter, startEventModel: TStartEvent, processInstance: ProcessInstance, namespace?: string);
    private get startEvent();
    protected beforeExecute(resolveFunction?: Function, rejectFunction?: Function): Promise<void>;
    protected persistOnTerminate(typeData?: FlowNodeInstanceTypeSpecificData): Promise<void>;
    protected persistOnError(error: BaseError, typeData?: FlowNodeInstanceTypeSpecificData): Promise<void>;
    protected persistOnExit(typeData?: FlowNodeInstanceTypeSpecificData): Promise<void>;
    protected startExecution(): Promise<Array<Model.Base.FlowNode>>;
    protected executeHandler(): Promise<Array<Model.Base.FlowNode>>;
    protected sendProcessStartedMessage(eventName?: string): void;
    protected publishStartEventFinishedNotification(eventName?: string): void;
}
