import { BaseLogger } from "../log/BaseLogger";
import { AsyncQueue } from "./time";
export interface VKApiOptions {
    lang?: string | number;
    testMode?: number;
    logger?: BaseLogger;
    token?: string;
    timeout?: number;
    requestsPerSecond?: number;
    useQueue?: boolean;
}
declare type GenericParams = {
    [key: string]: any;
};
export declare class BaseVKApi {
    readonly lang?: string | number;
    readonly testMode?: number;
    readonly logger?: BaseLogger;
    readonly queue?: AsyncQueue<any>;
    readonly token?: string;
    readonly timeout: number;
    constructor(options: VKApiOptions);
    call(method: string, params: GenericParams): Promise<any>;
    /**
     * Makes api call and if there was
     * server-side error or requests limit was reached
     * repeats the call after some timeout
     */
    callWithRetry(method: string, params: GenericParams, timeout?: number): Promise<any>;
    /**
     * Stops calls queue if have one
     */
    stopQueue(): void;
    private doCallWithRetry;
    private handleResponse;
    private filterParams;
}
export {};
