import { APIResponse } from '../types';
import { CrossPlatformBuffer } from './compatibility';
import { Logger } from 'pino';
export interface HTTPClientConfigWithAPIKey {
    baseURL: string;
    apiKey: string;
    apiSecret: string;
}
export interface HTTPClientConfigWithToken {
    baseURL: string;
    token: string;
}
export type HTTPClientConfig = HTTPClientConfigWithAPIKey | HTTPClientConfigWithToken;
export interface FormFileData {
    name: string;
    data: CrossPlatformBuffer | string;
}
export type FormValue = string | string[] | CrossPlatformBuffer | CrossPlatformBuffer[] | number | number[] | boolean | boolean[] | FormFileData | null | undefined;
export declare class HTTPClient {
    private _config;
    private _logger;
    private _client;
    constructor(_config: HTTPClientConfig, _logger: Logger);
    get<T, Q extends object = Record<string, unknown>>(path: string, params?: Q): Promise<APIResponse<T>>;
    post<T, Q extends object = Record<string, unknown>>(path: string, data?: unknown, params?: Q): Promise<APIResponse<T>>;
    put<T, Q extends object = Record<string, unknown>>(path: string, data?: unknown, params?: Q): Promise<APIResponse<T>>;
    patch<T, Q extends object = Record<string, unknown>>(path: string, data?: unknown, params?: Q): Promise<APIResponse<T>>;
    delete<T, Q extends object = Record<string, unknown>>(path: string, params?: Q): Promise<APIResponse<T>>;
    getBinary<Q extends object = Record<string, unknown>>(path: string, params?: Q): Promise<CrossPlatformBuffer>;
    form<T, Q extends object = Record<string, unknown>>(path: string, data: Record<string, FormValue | Record<string, FormValue>>, method?: 'POST' | 'PUT' | 'PATCH', params?: Q): Promise<APIResponse<T>>;
}
//# sourceMappingURL=http.d.ts.map