/** * Custom error classes for OpenCage SDK * Provides detailed error information and proper error handling */ import { OpenCageErrorType, OpenCageErrorDetails, Status, RateLimit } from './opencage-types'; /** * Base error class for all OpenCage SDK errors */ export declare class OpenCageError extends Error { readonly type: OpenCageErrorType; readonly statusCode?: number; readonly apiStatus?: Status; readonly rateLimit?: RateLimit; readonly originalError?: any; readonly request?: { query: string; options?: any; }; readonly timestamp: Date; constructor(details: OpenCageErrorDetails); /** * Get detailed error information */ getDetails(): OpenCageErrorDetails; /** * Check if error is retryable */ isRetryable(): boolean; /** * Get retry delay in milliseconds */ getRetryDelay(): number; /** * Convert error to JSON for logging */ toJSON(): object; } /** * Network-related error */ export declare class OpenCageNetworkError extends OpenCageError { constructor(message: string, originalError?: any, request?: any); } /** * Authentication-related error */ export declare class OpenCageAuthError extends OpenCageError { constructor(message?: string, statusCode?: number, request?: any); } /** * Rate limit exceeded error */ export declare class OpenCageRateLimitError extends OpenCageError { constructor(message: string, rateLimit?: RateLimit, statusCode?: number, request?: any); } /** * Request validation error */ export declare class OpenCageRequestError extends OpenCageError { constructor(message: string, statusCode?: number, request?: any); } /** * Server error */ export declare class OpenCageServerError extends OpenCageError { constructor(message: string, statusCode?: number, apiStatus?: Status, request?: any); } /** * Timeout error */ export declare class OpenCageTimeoutError extends OpenCageError { constructor(timeout: number, request?: any); } /** * No results found error */ export declare class OpenCageNoResultsError extends OpenCageError { constructor(query: string, request?: any); } /** * Invalid API key error */ export declare class OpenCageInvalidApiKeyError extends OpenCageError { constructor(request?: any); } /** * Quota exceeded error */ export declare class OpenCageQuotaExceededError extends OpenCageError { constructor(rateLimit?: RateLimit, request?: any); } /** * Factory function to create appropriate error from HTTP response */ export declare function createOpenCageError(statusCode: number, message: string, apiStatus?: Status, rateLimit?: RateLimit, request?: any, originalError?: any): OpenCageError; /** * Type guard to check if error is OpenCageError */ export declare function isOpenCageError(error: any): error is OpenCageError; /** * Error handler utility functions */ export declare class OpenCageErrorHandler { /** * Log error with appropriate level */ static logError(error: OpenCageError, logger?: Console): void; /** * Get appropriate log level for error type */ private static getLogLevel; /** * Get user-friendly error message */ static getUserFriendlyMessage(error: OpenCageError): string; }