solver-sdk
Version:
SDK for WorkAI API - AI-powered code analysis with WorkCoins billing system
158 lines • 5.73 kB
TypeScript
/**
* Централизованные классы ошибок SDK
* Покрывают все типы ошибок backend с типизацией
*/
import type { CreditsBalance, CreditsAction } from '../types/credits.js';
/**
* Базовый класс для всех SDK ошибок
*/
export declare class BaseSDKError extends Error {
/** HTTP статус код */
readonly statusCode: number;
/** Тип ошибки для категоризации */
readonly errorType: string;
/** ID запроса для корреляции с логами backend */
readonly requestId?: string;
/** Временная метка ошибки */
readonly timestamp?: string;
/** Исходный ответ от сервера */
readonly rawResponse?: any;
constructor(statusCode: number, errorType: string, message: string, details?: any);
}
/**
* Ошибка аутентификации (401)
* Выбрасывается при истекшем или невалидном access token
*/
export declare class AuthenticationError extends BaseSDKError {
/** Можно ли повторить запрос после refresh токена */
readonly shouldRetry: boolean;
constructor(message: string, details?: any);
}
/**
* Ошибка доступа (403)
* Выбрасывается когда доступ запрещен (не путать с LimitExceededError)
*/
export declare class ForbiddenError extends BaseSDKError {
/** Причина отказа в доступе */
readonly reason?: string;
constructor(message: string, details?: any);
}
/**
* Ошибка валидации (422)
* Выбрасывается при невалидных данных в запросе
*/
export declare class ValidationError extends BaseSDKError {
/** Поля с ошибками валидации */
readonly fields?: Record<string, string>;
constructor(message: string, details?: any);
}
/**
* Ресурс не найден (404)
*/
export declare class NotFoundError extends BaseSDKError {
/** Тип ресурса который не найден */
readonly resource?: string;
constructor(message: string, details?: any);
}
/**
* Конфликт данных (409)
* Выбрасывается при попытке создать дубликат или конфликтующую запись
*/
export declare class ConflictError extends BaseSDKError {
constructor(message: string, details?: any);
}
/**
* Некорректный запрос (400)
*/
export declare class BadRequestError extends BaseSDKError {
constructor(message: string, details?: any);
}
/**
* Внутренняя ошибка сервера (500)
*/
export declare class InternalServerError extends BaseSDKError {
constructor(message: string, details?: any);
}
/**
* Сервис недоступен (503)
*/
export declare class ServiceUnavailableError extends BaseSDKError {
/** Время ожидания перед повторным запросом (секунды) */
readonly retryAfter?: number;
constructor(message: string, details?: any);
}
/**
* Таймаут gateway (504)
*/
export declare class GatewayTimeoutError extends BaseSDKError {
constructor(message: string, details?: any);
}
/**
* Ошибка базы данных
* Выбрасывается при SQL ошибках или проблемах с БД
*/
export declare class DatabaseError extends BaseSDKError {
constructor(message: string, details?: any);
}
/**
* Таймаут запроса (408)
*/
export declare class TimeoutError extends BaseSDKError {
constructor(message: string, details?: any);
}
/**
* Ошибка сети
* Выбрасывается когда запрос не смог достичь сервера
*/
export declare class NetworkError extends BaseSDKError {
constructor(message: string, details?: any);
}
/**
* Ошибка превышения лимита кредитов (WorkCoins)
* Выбрасывается при HTTP 403 с error.type === 'credits_limit_exceeded'
*/
export declare class LimitExceededError extends BaseSDKError {
/** Тип статуса лимита */
readonly statusType: string;
/** Уровень статуса */
readonly status: string;
/** Детали лимитов */
readonly details: any;
/** Рекомендуемое действие */
readonly action?: CreditsAction;
/** Информация о балансе */
readonly balance?: CreditsBalance;
/** План пользователя */
readonly plan?: string;
constructor(errorData: any);
/**
* Проверяет, заблокирован ли пользователь
*/
isBlocked(): boolean;
/**
* Получает URL для действия пользователя
*/
getActionUrl(): string | undefined;
}
/**
* Ошибка превышения rate limit
* Выбрасывается при HTTP 429
*/
export declare class RateLimitError extends BaseSDKError {
/** Время ожидания в секундах */
readonly retryAfter: number;
/** Время когда можно повторить запрос */
readonly retryAt: Date;
/** Детали rate limit */
readonly details: any;
constructor(errorData: any);
/**
* Получает время ожидания в миллисекундах
*/
getRetryDelayMs(): number;
/**
* Проверяет, прошло ли время ожидания
*/
canRetryNow(): boolean;
}
//# sourceMappingURL=sdk-errors.d.ts.map