mobx-state-tree
Version:
Opinionated, transactional, MobX powered state container
31 lines (30 loc) • 1.1 kB
TypeScript
/** @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 {};