import type Database from 'better-sqlite3';
import type { AnalysisResultSceneType, AnalysisResultSnapshot, AnalysisResultVisibility, EvidenceRef, NormalizedMetricValue } from '../types/multiTraceComparison';
import type { EnterpriseRepositoryScope } from './enterpriseRepository';
export interface AnalysisResultSnapshotListFilters {
    traceId?: string;
    sceneType?: AnalysisResultSceneType;
    visibility?: AnalysisResultVisibility;
    createdBy?: string;
    includeExpired?: boolean;
    includeConclusionContract?: boolean;
    limit?: number;
}
export interface SnapshotAccessScope extends EnterpriseRepositoryScope {
    auditActorUserId?: string;
}
export declare class AnalysisResultSnapshotRepository {
    private readonly db;
    constructor(db: Database.Database);
    createSnapshot(snapshot: AnalysisResultSnapshot): AnalysisResultSnapshot;
    getSnapshot(scope: SnapshotAccessScope, snapshotId: string): AnalysisResultSnapshot | null;
    listSnapshots(scope: SnapshotAccessScope, filters?: AnalysisResultSnapshotListFilters): AnalysisResultSnapshot[];
    updateVisibility(scope: SnapshotAccessScope, snapshotId: string, visibility: AnalysisResultVisibility): AnalysisResultSnapshot | null;
    upsertMetrics(scope: SnapshotAccessScope, snapshotId: string, metrics: NormalizedMetricValue[], evidenceRefs?: EvidenceRef[]): AnalysisResultSnapshot | null;
    deleteSnapshot(scope: SnapshotAccessScope, snapshotId: string): boolean;
    private hydrateSnapshot;
    private recordReadAudit;
}
export declare function createAnalysisResultSnapshotRepository(db: Database.Database): AnalysisResultSnapshotRepository;
//# sourceMappingURL=analysisResultSnapshotStore.d.ts.map