// @flow opaque type Next = Function | void; opaque type Yield = mixed; export type Gensync = { (...args: Args): Handler, sync(...args: Args): Return, async(...args: Args): Promise, // ...args: [...Args, Callback] errback(...args: any[]): void, }; export type Handler = Generator; export type Options = { sync(...args: Args): Return, arity?: number, name?: string, } & ( | { async?: (...args: Args) => Promise } // ...args: [...Args, Callback] | { errback(...args: any[]): void } ); declare module.exports: { ( Options | ((...args: Args) => Handler) ): Gensync, all(Array>): Handler, race(Array>): Handler, };