UNPKG

@revmax/agent-sdk

Version:

Official Node.js SDK for RevMax - billing, customer management, and usage tracking

97 lines (96 loc) 3.02 kB
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 {};