import { UniFiConfig, SystemInfo, APIResponse } from './types.js'; declare module 'axios' { interface InternalAxiosRequestConfig { metadata?: { requestId: string; startTime: number; }; } } /** * UniFi Network API Client * * Comprehensive client for interacting with UniFi Network Application API. * Handles authentication, connection management, error handling, and retry logic. */ export interface UniFiClientOptions extends UniFiConfig { useHTTPS?: boolean; enableRetry?: boolean; retryConfig?: { maxAttempts: number; baseDelay: number; maxDelay: number; }; rateLimit?: { requestsPerMinute: number; burstLimit: number; }; } export interface ConnectionInfo { isConnected: boolean; isAuthenticated: boolean; lastConnected?: Date; lastError?: string; gatewayInfo?: { ip: string; version: string; model: string; siteId: string; }; connectionAttempts: number; retryCount: number; } export declare class UniFiClient { private httpClient; private config; private connectionInfo; private logger; private requestQueue; private rateLimitTokens; private lastRateLimitReset; constructor(config: UniFiClientOptions); /** * Establish connection to UniFi controller */ connect(): Promise; /** * Disconnect from UniFi controller */ disconnect(): Promise; /** * Test basic connectivity to controller */ testConnection(): Promise; /** * Authenticate with API key */ private authenticate; /** * Create configured HTTP client */ private createHttpClient; /** * Get base URL for API requests */ private getBaseURL; /** * Get authentication headers */ private getAuthHeaders; /** * Build complete endpoint URL */ private buildEndpoint; /** * Enforce rate limiting */ private enforceRateLimit; /** * Make authenticated GET request */ get(endpoint: string, params?: Record): Promise>; /** * Make authenticated POST request */ post(endpoint: string, data?: any, params?: Record): Promise>; /** * Make authenticated PUT request */ put(endpoint: string, data?: any, params?: Record): Promise>; /** * Make authenticated DELETE request */ delete(endpoint: string, params?: Record): Promise>; /** * Make HTTP request with retry logic */ private makeRequest; /** * Ensure we have a valid authenticated connection */ private ensureAuthenticated; /** * Get system information */ getSystemInfo(): Promise; /** * Get current connection status */ getConnectionInfo(): ConnectionInfo; /** * Check if client is connected and authenticated */ isConnected(): boolean; /** * Perform health check */ healthCheck(): Promise<{ status: 'healthy' | 'unhealthy'; details: { connected: boolean; authenticated: boolean; lastConnected?: Date; responseTime?: number; version?: string; }; }>; /** * Get client statistics */ getStatistics(): { connectionAttempts: number; retryCount: number; lastConnected?: Date; rateLimitTokens: number; requestQueueSize: number; }; /** * Update client configuration */ updateConfig(newConfig: Partial): void; /** * Get current configuration (without sensitive data) */ getConfig(): Omit; } export declare function createUniFiClient(config: UniFiClientOptions): UniFiClient; //# sourceMappingURL=client.d.ts.map