export declare type NextFunction = (error?: any, ...args: any[]) => void;
export declare function array<T>(array: T[] | ArrayLike<T>, body: (element: T, i: number, next: NextFunction) => void | PromiseLike<void>, complete: NextFunction): void;
export declare function object<T>(o: T, body: (element: T[keyof T], i: keyof T, next: NextFunction) => void, complete: NextFunction): void;
export declare function each<T>(array: T[] | ArrayLike<T>, body: (element: T, i?: number, next?: NextFunction) => PromiseLike<void>, complete: NextFunction): void;
export declare function each<T>(array: T[] | ArrayLike<T>, body: (element: T, i?: number, next?: NextFunction) => PromiseLike<void>): PromiseLike<void>;
export declare function each<T>(array: T[] | ArrayLike<T>, body: (element: T, i: number, next: NextFunction) => void, complete: NextFunction): void;
export declare function each(o: any, body: (element: any, i: string, next: NextFunction) => void, complete: NextFunction): void;
export declare function each<T>(array: T[] | ArrayLike<T>, body: (element: T, i: number, next: NextFunction) => void): PromiseLike<void>;
export declare function each(o: any, body: (element: any, i: string, next: NextFunction) => void): PromiseLike<void>;
