import { APIResponse } from '../types';
import { CrossPlatformBuffer, CrossPlatformFileResponse } from './compatibility';
import { Logger } from 'pino';
import { GlobalAmount } from '../modules/global/types';
import { TagTuple } from '../modules/horizontal/communities/types/tag';
export declare const ELEVA_HEADER_IMPERSONATE = "x-eleva-impersonate";
export interface HTTPClientConfigWithAPIKey {
    baseURL: string;
    apiKey: string;
    apiSecret: string;
    emitWebhook?: boolean;
}
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 | FormFileData[] | null | undefined | GlobalAmount | TagTuple | TagTuple[];
export type HTTPHeaderValue = string | string[] | number | boolean | null;
export type HTTPHeaders = Record<string, HTTPHeaderValue>;
export declare class HTTPClient {
    private _config;
    private _logger;
    constructor(_config: HTTPClientConfig, _logger: Logger);
    private _buildHeaders;
    private _buildUrl;
    private _request;
    get<T, Q extends object = Record<string, unknown>>(path: string, params?: Q, headers?: HTTPHeaders): Promise<APIResponse<T>>;
    post<T, Q extends object = Record<string, unknown>>(path: string, data?: unknown, params?: Q, headers?: HTTPHeaders): Promise<APIResponse<T>>;
    put<T, Q extends object = Record<string, unknown>>(path: string, data?: unknown, params?: Q, headers?: HTTPHeaders): Promise<APIResponse<T>>;
    patch<T, Q extends object = Record<string, unknown>>(path: string, data?: unknown, params?: Q, headers?: HTTPHeaders): Promise<APIResponse<T>>;
    delete<T, Q extends object = Record<string, unknown>>(path: string, params?: Q, headers?: HTTPHeaders): Promise<APIResponse<T>>;
    getBinary<Q extends object = Record<string, unknown>>(path: string, params?: Q, headers?: HTTPHeaders): Promise<CrossPlatformFileResponse>;
    form<T, Q extends object = Record<string, unknown>>(path: string, data: Record<string, FormValue | Record<string, FormValue>>, method?: 'POST' | 'PUT' | 'PATCH', params?: Q, headers?: HTTPHeaders): Promise<APIResponse<T>>;
}
//# sourceMappingURL=http.d.ts.map