export declare class Completer<T> {
    promise: Promise<T>;
    completed: boolean;
    resolve: (value: T | PromiseLike<T>) => void;
    reject: (reason?: any) => void;
    constructor();
}
export declare class Waiter {
    private _completer;
    private _count;
    get count(): number;
    get promise(): Promise<void>;
    get completed(): boolean;
    constructor(todo?: number | (() => Promise<any>)[]);
    add(todo: number | (() => Promise<any>)[]): Promise<void>;
    done(): void;
}
