@revmax/agent-sdk
Version:
Official Node.js SDK for RevMax - billing, customer management, and usage tracking
97 lines (96 loc) • 3.02 kB
TypeScript
import { AxiosRequestConfig, AxiosResponse } from 'axios';
import { AuthMethod, ClientOptions } from '../types';
import { Logger } from './logger';
interface CustomRequestConfig extends AxiosRequestConfig {
metadata?: {
requestId?: string;
telemetryTracked?: boolean;
retryCount?: number;
[key: string]: any;
};
}
/**
* API client for making HTTP requests with retry logic
*/
export declare class ApiClient {
private readonly axios;
private readonly retries;
private readonly retryDelay;
private readonly logger;
private readonly telemetry;
/**
* Create a new API client
* @param auth - Authentication method
* @param options - Client options
* @param logger - Logger instance
*/
constructor(auth: AuthMethod, options: Partial<ClientOptions> | undefined, logger: Logger);
/**
* Make a request with retry logic
* @param config - Request configuration
* @returns API response
*/
request<T = any>(config: CustomRequestConfig): Promise<AxiosResponse<T>>;
/**
* Make a GET request
* @param url - Endpoint URL
* @param params - Query parameters
* @param config - Additional request configuration
* @returns API response
*/
get<T = any>(url: string, params?: any, config?: CustomRequestConfig): Promise<T>;
/**
* Make a POST request
* @param url - Endpoint URL
* @param data - Request body
* @param config - Additional request configuration
* @returns API response
*/
post<T = any>(url: string, data?: any, config?: CustomRequestConfig): Promise<T>;
/**
* Make a PUT request
* @param url - Endpoint URL
* @param data - Request body
* @param config - Additional request configuration
* @returns API response
*/
put<T = any>(url: string, data?: any, config?: CustomRequestConfig): Promise<T>;
/**
* Make a PATCH request
* @param url - Endpoint URL
* @param data - Request body
* @param config - Additional request configuration
* @returns API response
*/
patch<T = any>(url: string, data?: any, config?: CustomRequestConfig): Promise<T>;
/**
* Make a DELETE request
* @param url - Endpoint URL
* @param config - Additional request configuration
* @returns API response
*/
delete<T = any>(url: string, config?: CustomRequestConfig): Promise<T>;
/**
* Ensure URL has proper prefix (leading slash)
* @param url - URL to normalize
* @returns Normalized URL
*/
private ensureURLPrefix;
/**
* Get telemetry statistics
* @returns Current telemetry stats
*/
getTelemetryStats(): {
requestCount: number;
successCount: number;
errorCount: number;
successRate: number;
averageDuration: number;
errorBreakdown: Record<string, number>;
};
/**
* Reset telemetry statistics
*/
resetTelemetryStats(): void;
}
export {};