import { CancellationToken } from 'vscode'; export type ITask = () => T; export declare class Delayer { defaultDelay: number; private timeout; private completionPromise; private onSuccess; private task; constructor(defaultDelay: number); trigger(task: ITask, delay?: number): Promise; forceDelivery(): T | undefined; isTriggered(): boolean; cancel(): void; private cancelTimeout; } export declare class Semaphore { private _capacity; private _active; private _waiting; constructor(capacity?: number); lock(thunk: () => T | PromiseLike): Promise; get active(): number; private runNext; private doRunNext; } export declare function setTestMode(): void; export declare function clearTestMode(): void; export type YieldOptions = { /** * The time in ms after which the function should yield. * The minimum yield time is 15ms */ yieldAfter?: number; /** * An optional callback that is invoke when the code yields. */ yieldCallback?: () => void; }; export declare function map(items: ReadonlyArray

, func: (item: P) => C, token?: CancellationToken, options?: YieldOptions): Promise; export declare function mapAsync(items: ReadonlyArray

, func: (item: P, token?: CancellationToken) => Promise, token?: CancellationToken, options?: YieldOptions): Promise; export declare function forEach

(items: ReadonlyArray

, func: (item: P) => void, token?: CancellationToken, options?: YieldOptions): Promise;