interface PromiseQueueItem {
    fn: () => any | Promise<any>;
    resolve: (value: any) => void;
    reject: (reason: any) => void;
}
export declare class Limit<T> {
    limit: number;
    count: number;
    queue: PromiseQueueItem[];
    constructor(limit: number);
    enqueue<T>(fn: () => T | Promise<T>): Promise<T>;
    dequeue(): void;
    run<T>(fn: () => T | Promise<T>): Promise<T>;
    build<T>(fn: () => T | Promise<T>): Promise<T>;
}
export {};
//# sourceMappingURL=limit.d.ts.map