import { ErrorCode } from './types.js'; import type { ErrorContext } from './types.js'; /** * Base error class for all Elasticsearch client errors * * @example * ```typescript * throw new ElasticsearchError('Connection failed', { * code: ErrorCode.CONNECTION_FAILED, * retryable: true, * context: { * timestamp: new Date(), * operation: 'connect', * statusCode: 503 * } * }); * ``` */ export declare class ElasticsearchError extends Error { /** Error code for categorization */ readonly code: ErrorCode; /** Whether this error is retryable */ readonly retryable: boolean; /** Additional context about the error */ readonly context: ErrorContext; constructor(message: string, options: { code: ErrorCode; retryable: boolean; context: ErrorContext; cause?: Error; }); /** * Convert error to JSON for logging/serialization */ toJSON(): Record; /** * Check if error is of a specific code */ is(code: ErrorCode): boolean; /** * Check if error is retryable */ canRetry(): boolean; } /** * Connection-related errors */ export declare class ConnectionError extends ElasticsearchError { constructor(message: string, context?: Partial, cause?: Error); } /** * Timeout errors */ export declare class TimeoutError extends ElasticsearchError { constructor(message: string, operation: string, timeoutMs: number, context?: Partial, cause?: Error); } /** * Index not found error */ export declare class IndexNotFoundError extends ElasticsearchError { constructor(indexName: string, context?: Partial, cause?: Error); } /** * Document not found error */ export declare class DocumentNotFoundError extends ElasticsearchError { constructor(documentId: string, indexName?: string, context?: Partial, cause?: Error); } /** * Document conflict error (version mismatch, optimistic locking) */ export declare class DocumentConflictError extends ElasticsearchError { constructor(documentId: string, message: string, context?: Partial, cause?: Error); } /** * Authentication error */ export declare class AuthenticationError extends ElasticsearchError { constructor(message: string, context?: Partial, cause?: Error); } /** * Authorization error (insufficient permissions) */ export declare class AuthorizationError extends ElasticsearchError { constructor(operation: string, resource: string, context?: Partial, cause?: Error); } /** * Configuration error */ export declare class ConfigurationError extends ElasticsearchError { constructor(message: string, context?: Partial, cause?: Error); } /** * Query parsing error */ export declare class QueryParseError extends ElasticsearchError { constructor(query: unknown, reason: string, context?: Partial, cause?: Error); } /** * Bulk operation error with partial failures */ export declare class BulkOperationError extends ElasticsearchError { readonly successfulCount: number; readonly failedCount: number; readonly failures: Array<{ documentId?: string; error: string; status: number; }>; constructor(message: string, successful: number, failed: number, failures: Array<{ documentId?: string; error: string; status: number; }>, context?: Partial, cause?: Error); toJSON(): Record; } /** * Cluster unavailable error */ export declare class ClusterUnavailableError extends ElasticsearchError { constructor(message: string, context?: Partial, cause?: Error); }