UNPKG

mobx-state-tree

Version:

Opinionated, transactional, MobX powered state container

31 lines (30 loc) 1.1 kB
/** @hidden */ declare const $flowYield: unique symbol; /** @hidden */ export interface FlowYield { [$flowYield]: undefined; } /** @hidden */ declare const $flowReturn: unique symbol; /** @hidden */ export interface FlowReturn<T> { [$flowReturn]: T; } /** @hidden */ export declare type FlowReturnType<R> = IfAllAreFlowYieldThenVoid<R extends FlowReturn<infer FR> ? FR extends Promise<infer FRP> ? FRP : FR : R extends Promise<any> ? FlowYield : R>; /** @hidden */ export declare type IfAllAreFlowYieldThenVoid<R> = Exclude<R, FlowYield> extends never ? void : Exclude<R, FlowYield>; /** * See [asynchronous actions](https://github.com/mobxjs/mobx-state-tree/blob/master/docs/async-actions.md). * * @returns The flow as a promise. */ export declare function flow<R, Args extends any[]>(generator: (...args: Args) => IterableIterator<R>): (...args: Args) => Promise<FlowReturnType<R>>; /** * Used for TypeScript to make flows that return a promise return the actual promise result. * * @param val * @returns */ export declare function castFlowReturn<T>(val: T): FlowReturn<T>; export {};