@dima_aryze/reforge
Version:
TypeScript/JavaScript SDK for Reforge - Cross-chain token operations
57 lines • 1.92 kB
TypeScript
/**
* 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