atombeak
Version:
Create asynchronous atomic functions!
18 lines (17 loc) • 994 B
TypeScript
import { Operation } from "./Operation/Operation";
import { Log } from "./Log";
import { Result } from "./Result";
export declare const ITER = "ITER";
export declare type Iter<Outer, Inner, Action> = {
type: 'ITER';
next: () => Promise<[Operation<Outer, Inner, Action>, Log<Outer, Action>]>;
};
export declare function iter<Outer, Inner, Action>(next: () => Promise<[Operation<Outer, Inner, Action>, Log<Outer, Action>]>): Iter<Outer, Inner, Action>;
export declare const DONE = "DONE";
export declare type Done<Outer, Inner, Action> = {
type: 'DONE';
value: Result<Outer, Inner, Action>;
};
export declare function done<Outer, Inner, Action>(value: Result<Outer, Inner, Action>): Done<Outer, Inner, Action>;
export declare type Trampoline<Outer, Inner, Action> = Iter<Outer, Inner, Action> | Done<Outer, Inner, Action>;
export declare function runAsPromise<Outer, Inner, Action>(operation: Operation<Outer, Inner, Action>, outer: Outer): Promise<Result<Outer, Inner, Action>>;