import type { ApiResponse, BriqConfig, RequestConfig } from "../types/common";
export declare abstract class BaseClient {
    protected readonly config: Required<BriqConfig>;
    protected readonly defaultHeaders: Record<string, string>;
    constructor(config: BriqConfig);
    protected request<T>(config: RequestConfig): Promise<ApiResponse<T>>;
    private buildUrl;
    protected abstract executeRequest(config: RequestConfig): Promise<any>;
    protected abstract handleResponse<T>(response: any): Promise<ApiResponse<T>>;
    protected abstract handleError(error: any): Error;
    get<T>(url: string, config?: Partial<RequestConfig>): Promise<ApiResponse<T>>;
    post<T>(url: string, data?: any, config?: Partial<RequestConfig>): Promise<ApiResponse<T>>;
    patch<T>(url: string, data?: any, config?: Partial<RequestConfig>): Promise<ApiResponse<T>>;
    put<T>(url: string, data?: any, config?: Partial<RequestConfig>): Promise<ApiResponse<T>>;
    delete<T>(url: string, config?: Partial<RequestConfig>): Promise<ApiResponse<T>>;
}
//# sourceMappingURL=BaseClient.d.ts.map