export declare function makePromise(f: (f: (resolve: T) => void) => void, tag: string): Promise; export declare type DeepPromise = T extends Promise ? Promise> : T extends Array ? Array> | Array>> | Promise>> | Promise>>> : T extends object ? Promise<{ [P in keyof T]: DeepPromise; }> | { [P in keyof T]: DeepPromise; } : Promise | T; export declare type WaitAlll = T extends Promise ? WaitAlll : T extends Array ? Array> : T extends object ? { [P in keyof T]: WaitAlll; } : T; export declare function waitAll(obj: T): Promise>; export declare function delay(ms: number): Promise; export declare function filterUndefined(v: Array): Array; export declare function visitor(obj: any, f: (property: string, obj: any) => PromiseLike | void): Promise;