/**
 * Shared TypeScript types для ELS MCP-сервера.
 *
 * Источник истины — `error-logs-service/prisma/schema.prisma` (model ErrorLog).
 * Здесь хранятся плоские DTO, удобные для MCP-tool responses.
 */
export type ErrorLevel = 'CRITICAL' | 'ERROR' | 'WARNING' | 'INFO' | 'DEBUG';
export type ErrorSource = 'CLIENT' | 'SERVER';
/**
 * ErrorLog в API-формате (как отдаёт ELS endpoint `GET /errors`).
 *
 * Все timestamp'ы — ISO-8601 strings (после `.toISOString()` на стороне ELS).
 * Опциональные поля приходят как null или отсутствуют.
 */
export interface ErrorLog {
    id: string;
    traceId: string;
    message: string;
    stack: string | null;
    componentStack: string | null;
    url: string;
    timestamp: string;
    receivedAt: string;
    level: ErrorLevel | string;
    source: ErrorSource | string;
    browser: string;
    urlPath: string;
    errorCategory: string;
    appSlug: string;
    serviceName: string;
    deploymentEnv: string;
    userAgent: string;
    language: string | null;
    screenSize: string | null;
    viewportSize: string | null;
    referrer: string | null;
    ip: string;
    fingerprint: string | null;
    sessionId: string | null;
    appVersion: string | null;
    httpStatus?: number | null;
    durationMs?: number | null;
    aiDiagnosis?: unknown;
}
/**
 * Compact-вариант (response_format=compact): без stack/componentStack/userAgent,
 * message ≤ 200ch.
 */
export interface ErrorLogCompact {
    traceId: string;
    level: string;
    message: string;
    serviceName: string | null;
    url: string | null;
    fingerprint: string | null;
    receivedAt: string;
}
/**
 * Summary-вариант (response_format=summary): минимум для ranked list.
 */
export interface ErrorLogSummary {
    traceId: string;
    message: string;
    level: string;
    count?: number;
    lastSeen?: string;
}
export interface FacetValue {
    value: string;
    count: number;
}
export interface Facets {
    source?: FacetValue[];
    level?: FacetValue[];
    browser?: FacetValue[];
    urlPath?: FacetValue[];
    language?: FacetValue[];
    ip?: FacetValue[];
    errorCategory?: FacetValue[];
    app?: FacetValue[];
    serviceName?: FacetValue[];
    deploymentEnv?: FacetValue[];
    appVersion?: FacetValue[];
}
export interface HistogramBucket {
    ts: string;
    count: number;
    byLevel?: Record<string, number>;
}
export interface SearchLogsRawResponse {
    items: ErrorLog[];
    total: number;
    page: number;
    limit: number;
    totalPages: number;
    facets: Facets;
    histogram: HistogramBucket[];
}
/**
 * ResponseMeta — добавляется ко всем tool responses.
 *
 * Содержит `elsRequestId` (если ELS вернул), флаг `cached`, факт применения
 * redaction и пр. служебные поля.
 */
export interface ResponseMeta {
    elsRequestId?: string | null;
    cached: boolean;
    ttlSec?: number;
    redactionApplied: boolean;
    truncated?: boolean;
    degraded?: boolean;
    warnings?: string[];
}
/**
 * Seek-cursor payload (внутренний, base64url-кодируется).
 *
 * Transitional wrapper над offset-based ELS API. Зашиваем page/limit, чтобы
 * сохранить совместимость до момента переключения ELS на seek-based
 * pagination — формат cursor останется тот же.
 */
export interface CursorPayload {
    /** ISO timestamp anchor — для seek-base (после миграции ELS). */
    anchorReceivedAt: string;
    /** id записи, использованной как anchor. */
    anchorId: string;
    /** Хэш текущих фильтров — детект изменения filters между страницами. */
    filtersHash: string;
    /** Версия cursor-формата (для future migrations). */
    v: 1;
    /** Offset-based page для backwards-compat (до миграции ELS на seek). */
    page?: number;
    /** Размер страницы (до миграции ELS на seek). */
    limit?: number;
}
export type ResponseFormat = 'compact' | 'full' | 'summary';
/**
 * MCP-стандартный tool result. Совпадает по форме с CallToolResult из MCP SDK,
 * но даёт нам типизированный shortcut в handler'ах.
 */
export interface ToolResult {
    structuredContent?: Record<string, unknown>;
    content: Array<{
        type: 'text';
        text: string;
    }>;
    isError?: boolean;
    _meta?: Record<string, unknown>;
}
//# sourceMappingURL=types.d.ts.map