@revmax/agent-sdk
Version:
Official Node.js SDK for RevMax - billing, customer management, and usage tracking
128 lines (127 loc) • 2.55 kB
TypeScript
/**
* 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';
}