@airgap/coinlib-core
Version:
The @airgap/coinlib-core is a protocol agnostic library to prepare, sign and broadcast cryptocurrency transactions.
25 lines (24 loc) • 727 B
TypeScript
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;
}