/**
 * Base HTTP client implementation for the Reforge SDK
 */
import { AxiosInstance } from 'axios';
import type { ApiResponse, EventCallback, EventType, HttpMethod, ILogger, ReforgeClientOptions, RequestOptions } from '../types';
import { ErrorTransformer } from './errors';
import { RetryHandler } from './retry';
/**
 * Base HTTP client with comprehensive error handling and retry logic
 */
export declare class BaseHttpClient {
    protected readonly httpClient: AxiosInstance;
    protected readonly config: Required<Omit<ReforgeClientOptions, 'apiKey' | 'httpClient'>>;
    protected readonly logger: ILogger;
    protected readonly eventListeners: Map<EventType, EventCallback[]>;
    protected readonly errorTransformer: ErrorTransformer;
    protected readonly retryHandler: RetryHandler;
    protected apiKey?: string;
    constructor(options: ReforgeClientOptions);
    /**
     * Validate constructor options
     */
    private validateOptions;
    /**
     * Create and configure the Axios instance
     */
    protected createHttpClient(): AxiosInstance;
    /**
     * Emit an event to all registered listeners
     */
    protected emitEvent(type: EventType, data?: any): void;
    /**
     * Make HTTP request with comprehensive error handling and retry logic
     */
    protected makeRequest<T = any>(method: HttpMethod, path: string, data?: any, options?: RequestOptions): Promise<ApiResponse<T>>;
    /**
     * Update the API key
     */
    setApiKey(apiKey: string): void;
    /**
     * Get the current API key
     */
    getApiKey(): string | undefined;
    /**
     * Add event listener
     */
    on(event: EventType, callback: EventCallback): void;
    /**
     * Remove event listener
     */
    off(event: EventType, callback: EventCallback): void;
    /**
     * Remove all event listeners
     */
    removeAllListeners(event?: EventType): void;
}
//# sourceMappingURL=base.d.ts.map