1 | import { CommandContext, EventContext, HandlerStatus } from "./handler";
|
2 |
|
3 |
|
4 |
|
5 | export interface Step<C extends EventContext | CommandContext, G extends Record<string, any> = any> {
|
6 |
|
7 | name: string;
|
8 |
|
9 | run: (context: C, parameters: G) => Promise<undefined | HandlerStatus>;
|
10 |
|
11 | runWhen?: (context: C, parameters: G) => Promise<boolean>;
|
12 | }
|
13 | export interface StepListener<C extends EventContext | CommandContext, G extends Record<string, any> = any> {
|
14 | starting?(step: Step<C>, parameters: G): Promise<void>;
|
15 | skipped?(step: Step<C>, parameters: G): Promise<void>;
|
16 | completed?(step: Step<C>, parameters: G, result: undefined | HandlerStatus): Promise<void>;
|
17 | failed?(step: Step<C>, parameters: G, error: Error): Promise<void>;
|
18 | done?(parameters: G, result: undefined | HandlerStatus): Promise<undefined | HandlerStatus>;
|
19 | }
|
20 |
|
21 |
|
22 |
|
23 | export declare function runSteps<C extends EventContext | CommandContext>(options: {
|
24 | context: C;
|
25 | steps: Step<C> | Array<Step<C>>;
|
26 | listeners?: StepListener<C> | Array<StepListener<C>>;
|
27 | }): Promise<undefined | HandlerStatus>;
|
28 |
|
\ | No newline at end of file |