import { EventEmitter } from "events";
import { Core } from "../Core";
import { Logger } from "../common/Logger";
import RequestRateLimiter from "./request-rate-limiter/index";
import { LevelLogs } from "../common/LevelLogs.js";
export {};
declare class RequestForQueue {
    id: string;
    method: Function;
    params: IArguments;
    label: string;
    constructor();
}
/**
 *
 */
declare class HttpManager extends LevelLogs {
    _logger: Logger;
    private _eventEmitter;
    private _imOptions;
    private _options;
    private lockEngine;
    private lockKeyNbHttpAdded;
    nbHttpAdded: number;
    nbRunningReq: number;
    started: boolean;
    retryAfterTime: number;
    retryAfterEndTime: number;
    retryAfterStartTime: number;
    _core: any;
    limiter: RequestRateLimiter;
    static getClassName(): string;
    getClassName(): string;
    static getAccessorName(): string;
    getAccessorName(): string;
    constructor(_eventEmitter: EventEmitter, _logger: Logger);
    init(_options: any, _core: Core): Promise<unknown>;
    checkHTTPStatus(): Promise<{
        nbHttpAdded: number;
        httpQueueSize: number;
        nbRunningReq: number;
        maxSimultaneousRequests: number;
        nbReqInQueue: number;
        retryAfterTime: number;
        retryAfterEndTime: number;
        retryAfterStartTime: number;
    }>;
    locknbRunningReq(fn: any): any;
    incNbRunningReq(): any;
    decNbRunningReq(): any;
    /**
     *
     * @param {} req {id, method, params, resolve, reject}
     * @return {Promise<any>}
     */
    add(req: RequestForQueue): Promise<any>;
    stop(): void;
}
export { RequestForQueue, HttpManager };
