export declare enum ActionState {
    READY = 0,
    EXECUTING = 1,
    COMPLETED = 2,
    CANCELLED = 3
}
export declare abstract class Action<Result, Context> {
    get identifier(): string;
    readonly context: Context;
    result?: Result;
    error?: Error;
    onComplete?: (result: Result) => Promise<void>;
    onError?: (error: Error) => Promise<void>;
    onCancel?: () => Promise<void>;
    private readonly stateMachine;
    constructor(context: Context);
    getState(): ActionState;
    start(): Promise<void>;
    cancel(): void;
    protected abstract perform(): Promise<Result>;
    protected addValidTransition(from: ActionState, to: ActionState): void;
    private handleSuccess;
    private handleError;
}
