import type { DenormalizeEvalResultOutput, EvalResultDenormInput } from './types';
/** Normalize EvalResult / parseReportsForClickHouse row for denormalize (camel + snake). */
export declare function evalResultRecordToDenormInput(row: Record<string, unknown>, overrides?: {
    evalId?: string;
    testRunId?: string | null;
}): EvalResultDenormInput;
/**
 * Dual-write denormalized analytics + component rows (Postgres + ClickHouse). Best-effort.
 */
export declare function insertEvalDenormArtifacts(row: EvalResultDenormInput | Record<string, unknown>, options?: {
    denormVersion?: number;
    skipPostgres?: boolean;
    skipClickHouse?: boolean;
}): Promise<void>;
export declare function insertEvalDenormArtifactsBatch(rows: Array<EvalResultDenormInput | Record<string, unknown>>, options?: {
    denormVersion?: number;
    skipPostgres?: boolean;
    skipClickHouse?: boolean;
}): Promise<void>;
/**
 * Persist pre-denormalized rows (avoids re-running denormalize in hot backfill loops).
 */
export declare function persistDenormOutputsBatch(outputs: DenormalizeEvalResultOutput[], options?: {
    skipPostgres?: boolean;
    skipClickHouse?: boolean;
    rethrowOnError?: boolean;
}): Promise<void>;
//# sourceMappingURL=insertEvalDenormArtifacts.d.ts.map