/**
 * Унифицированный класс ошибок для всех ELS-запросов и tool handler'ов.
 *
 * Мапится 1-в-1 в MCP-стандартный error shape:
 *   { isError: true, content: [{ type: 'text', text: <msg> }],
 *     _meta: { code, retryAfter?, suggestedAction? } }
 *
 * Коды:
 *   - RATE_LIMITED         — 429 от ELS
 *   - UPSTREAM_UNAVAILABLE — 5xx от ELS (после retry)
 *   - INVALID_ARGS         — 400 от ELS, либо локальная валидация
 *   - NOT_FOUND            — 404 (отсутствует traceId, app и т.д.)
 *   - INSUFFICIENT_SCOPE   — 403 от ELS
 *   - QUOTA_EXCEEDED       — generic квота (legacy)
 *   - TIER_QUOTA_EXCEEDED  — основной дневной лимит tier'а
 *   - AI_QUOTA_EXCEEDED    — отдельная AI-квота для AI-tools
 *   - INTERNAL             — fallback для непредвиденных ситуаций
 */
export type ToolErrorCode = 'RATE_LIMITED' | 'UPSTREAM_UNAVAILABLE' | 'INVALID_ARGS' | 'NOT_FOUND' | 'INSUFFICIENT_SCOPE' | 'QUOTA_EXCEEDED' | 'TIER_QUOTA_EXCEEDED' | 'AI_QUOTA_EXCEEDED' | 'INTERNAL';
export declare class ToolError extends Error {
    readonly code: ToolErrorCode;
    readonly retryAfter?: number;
    readonly suggestedAction?: string;
    readonly meta?: Record<string, unknown>;
    constructor(code: ToolErrorCode, message: string, options?: {
        retryAfter?: number;
        suggestedAction?: string;
        meta?: Record<string, unknown>;
        cause?: unknown;
    });
    /**
     * Сериализация в MCP-tool error response.
     */
    toToolResult(): {
        isError: true;
        content: Array<{
            type: 'text';
            text: string;
        }>;
        structuredContent: Record<string, unknown>;
        _meta: Record<string, unknown>;
    };
}
/**
 * Преобразовать HTTP-статус и тело ответа ELS в ToolError.
 *
 * `body` приходит как уже-распарсенный JSON (или string, если parse не удался).
 * `retryAfterHeader` — содержимое заголовка Retry-After (секунды).
 */
export declare function mapHttpToToolError(status: number, body: unknown, retryAfterHeader?: string | null): ToolError;
//# sourceMappingURL=errors.d.ts.map