import type Database from 'better-sqlite3'; import type { KnowledgeEntry } from '../types/index.js'; import { type ValueAssessment } from '../pipeline/value-gate.js'; export type QualityGateDecisionType = 'passed' | 'rejected' | 'bypassed'; export type QualityGateReason = 'duplicate' | 'low_value' | 'bypassed' | 'cli_flag' | 'passed'; export interface QualityGateDecision { decision: QualityGateDecisionType; reason: QualityGateReason; message: string; similarity?: number; matchedEntryId?: string; matchedEntryTitle?: string; valueAssessment?: ValueAssessment; embedding?: number[]; } export interface QualityGateLogRecord { entry: KnowledgeEntry; decision: QualityGateDecision; } export interface EvaluateQualityGateOptions { ignoreEntryId?: string; skip?: boolean; /** Skip BGE embedding (deferred to batch vectorization). Dedup uses content hash fallback. */ skipEmbedding?: boolean; } export interface IntakeQualityGateOptions { db: Database.Database; dbPath: string; configDir?: string; conflictThreshold?: number; } export declare class QualityGateRejectedError extends Error { readonly decision: QualityGateDecision; constructor(decision: QualityGateDecision); } export declare class IntakeQualityGate { private readonly db; private readonly dbPath; private readonly configDir?; private readonly embedder; private readonly conflictThreshold?; constructor(options: IntakeQualityGateOptions); private ensureSchema; private ensureAdmissionPromptLoaded; close(): Promise; evaluate(entry: KnowledgeEntry, options?: EvaluateQualityGateOptions): Promise; log(record: QualityGateLogRecord): void; private findBestDuplicate; } //# sourceMappingURL=intake-quality-gate.d.ts.map