UNPKG

@revmax/agent-sdk

Version:

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

128 lines (127 loc) 2.55 kB
/** * Configuration options for the SDK */ export interface ClientOptions { /** * Base URL for API requests */ baseURL?: string; /** * Request timeout in milliseconds */ timeout?: number; /** * Number of retry attempts for failed requests */ retries?: number; /** * Delay between retry attempts in milliseconds */ retryDelay?: number; /** * Logging configuration */ logging?: LoggingOptions; /** * Additional headers to include with every request */ headers?: Record<string, string>; /** * Telemetry configuration */ telemetry?: TelemetryOptions; } /** * Logging level options */ export type LogLevel = 'debug' | 'info' | 'warn' | 'error'; /** * Logging handler function type */ export type LogHandler = (level: LogLevel, message: string, data?: any) => void; /** * Logging configuration options */ export interface LoggingOptions { /** * Whether logging is enabled */ enabled?: boolean; /** * Minimum log level to output */ level?: LogLevel; /** * Custom log handler function */ handler?: LogHandler; } /** * Telemetry handler function type */ export type TelemetryHandler = (metrics: TelemetryMetrics) => void; /** * Telemetry metrics data */ export interface TelemetryMetrics { requestId: string; method: string; path: string; statusCode?: number; duration: number; retryCount: number; error?: string; } /** * Telemetry configuration options */ export interface TelemetryOptions { /** * Whether telemetry is enabled */ enabled?: boolean; /** * Sample rate for telemetry (0-1) */ sampleRate?: number; /** * Custom telemetry handler function */ handler?: TelemetryHandler; } /** * Authentication method interface */ export interface AuthMethod { /** * Get headers for authentication */ getHeaders(): Record<string, string>; /** * Set verification status (optional) */ setVerified?(status: boolean): void; /** * Check if verified (optional) */ isVerified?(): boolean; } /** * API response with pagination */ export interface PaginatedResponse<T> { results: T[]; page: number; limit: number; totalPages: number; totalResults: number; } /** * Pagination parameters */ export interface PaginationParams { page?: number; limit?: number; sortBy?: string; sortOrder?: 'asc' | 'desc'; }