/**
 * Fire-and-forget telemetry + admin query facade (FR-011)
 */
import type { BatchScheduler } from '../../../infrastructure/scheduler/batch-scheduler.js';
import { TelemetryRepository, type ConsolidationQualityResult, type MemoryQualityResult, type SearchQualityResult, type SystemMetricsResult } from '../repositories/telemetry-repository.js';
import type { TelemetryEventInput, TelemetryEventQueryFilters, TelemetryEventRow, TelemetryPeriod } from '../types/telemetry.types.js';
export interface TelemetryContext {
    requestId: string;
    ownerId: string | null;
}
export declare class TelemetryService {
    private readonly repository;
    private readonly getScheduler?;
    private readonly als;
    /** 행 단위 손상 JSON이 전체 목록 API를 깨지 않게 한다 (FR-010) */
    static safeParseExtraData(raw: string | null): Record<string, unknown> | null;
    constructor(repository: TelemetryRepository, getScheduler?: (() => BatchScheduler | null) | undefined);
    getContext(): TelemetryContext | undefined;
    runWithContext<T>(ownerId: string | null, fn: () => Promise<T>): Promise<T>;
    record(partial: Omit<TelemetryEventInput, 'requestId' | 'ownerId'> & {
        requestId?: string;
        ownerId?: string | null;
    }): void;
    getSearchQuality(period: TelemetryPeriod, ownerId?: string | null): SearchQualityResult;
    getMemoryQuality(ownerId?: string | null): MemoryQualityResult;
    getConsolidationQuality(ownerId?: string | null): ConsolidationQualityResult;
    getSystemMetrics(period: TelemetryPeriod, ownerId?: string | null): SystemMetricsResult;
    private static jobNameToTelemetryEventType;
    private buildJobSnapshot;
    getEvents(filters: TelemetryEventQueryFilters): {
        events: Array<Omit<TelemetryEventRow, 'extra_data'> & {
            extra_data: Record<string, unknown> | null;
        }>;
        total: number;
        limit: number;
        offset: number;
        timestamp: string;
    };
    hasPriorWriteWithContentHash(ownerId: string | null, contentHash: string, sinceIso: string): boolean;
}
//# sourceMappingURL=telemetry-service.d.ts.map