/// <reference types="node" />
/// <reference types="node" />
import { ResponseError, SDKError } from '../errors/sdkError';
import { RefreshTokenManager } from '../helper/refreshTokenManager';
import { HttpClient, HttpHeaders, HttpQueryParameters, HttpRequest, HttpResponse } from '../http';
import { ClientParameters, Global, RefreshTokenMethod, Region, ServiceType } from './types';
import { Agent as HttpAgent } from 'http';
import { Agent as HttpsAgent } from 'https';
export declare class Client {
    service: string;
    token?: string;
    client: HttpClient;
    region?: Region | Global;
    host: string;
    userAgent: string;
    refreshTokenMethod?: RefreshTokenMethod;
    refreshTokenManager?: RefreshTokenManager;
    constructor(params: ClientParameters & {
        service: string;
        type: ServiceType;
        userAgent: string;
    });
    getRegion(params: ClientParameters & {
        type: ServiceType;
    }): Region | Global | undefined;
    getHost(params: ClientParameters): string;
    getTimeout(params: ClientParameters): number | undefined;
    getHttpAgent(params: ClientParameters): HttpAgent | undefined;
    getHttpsAgent(params: ClientParameters): HttpsAgent | undefined;
    handle<T>(request: HttpRequest, retries?: number): Promise<HttpResponse<T>>;
    parseResponse<ResponseBody, OutputBody>(response: HttpResponse<ResponseBody | ResponseError>, errors: {
        [key: string]: typeof SDKError;
    }): OutputBody;
    isValidStatusCode(code: number): boolean;
    protected clean(data: HttpHeaders | HttpQueryParameters): HttpHeaders | HttpQueryParameters;
    protected cleanRequest(request: HttpRequest): HttpRequest;
}
