/// <reference types="request" />
import * as request from 'request';
import { LogLevel } from 'channelape-logger';
export default class RequestClientWrapper {
    private readonly client;
    private readonly logLevel;
    private readonly maximumRequestRetryTimeout;
    private readonly requestLogger;
    private readonly limiter;
    constructor(client: request.RequestAPI<request.Request, request.CoreOptions, request.RequiredUriUrl>, logLevel: LogLevel, endpoint: string, maximumRequestRetryTimeout: number);
    get(uri: string, options?: request.CoreOptions | undefined, callback?: request.RequestCallback | undefined): void;
    get(uri: string, callback?: request.RequestCallback | undefined): void;
    get(options: (request.UriOptions & request.CoreOptions), callback?: request.RequestCallback | undefined): void;
    put(uri: string, options?: request.CoreOptions | undefined, callback?: request.RequestCallback | undefined): void;
    put(uri: string, callback?: request.RequestCallback | undefined): void;
    put(options: (request.UriOptions & request.CoreOptions), callback?: request.RequestCallback | undefined): void;
    private makeRequest(method, callStart, numberOfCalls, uriOrOptions, callbackOrOptionsOrUndefined?, callBackOrUndefined?);
    private getCallableRequestMethod(method);
    private handleResponse(error, response, body, callBackOrUndefined, uri, options, callDetails);
    private getMaximumRetryLimitExceededMessage(callStart, numberOfCalls);
    private didRequestTimeout(callStart);
    private shouldRequestBeRetried(error, response);
    private isApiError(body);
    private retryRequest(method, uri, options, callBackOrUndefined, response, body, callDetails);
}
