/**
 * Schema accepted at POST /api/agent/v1/:sessionId/feedback.
 *
 * Backward-compatible: original clients (rating/comment/turnIndex only) keep working.
 * New clients may attach metadata that the backend would otherwise have to reverse-look up.
 */
export interface FeedbackInputSchema {
    rating: 'positive' | 'negative';
    comment?: string;
    turnIndex?: number;
    traceId?: string;
    sceneType?: string;
    architecture?: string;
    packageName?: string;
    findingIds?: string[];
    patternId?: string;
    schemaVersion?: number;
}
/**
 * Subset of in-memory session state needed for reverse lookup.
 *
 * Decoupled from `AnalysisSession` so the enricher stays pure and so future
 * lookup sources (SessionStateSnapshot, persistence layer) can satisfy the same
 * shape without dragging in their full type surface.
 */
export interface SessionLookup {
    traceId?: string;
    referenceTraceId?: string;
}
export interface EnrichedFeedbackEntry {
    schemaVersion: 1;
    sessionId: string;
    rating: 'positive' | 'negative';
    comment?: string;
    turnIndex?: number;
    traceId?: string;
    referenceTraceId?: string;
    sceneType?: string;
    architecture?: string;
    packageName?: string;
    findingIds?: string[];
    patternId?: string;
    timestamp: string;
    /** True when at least one field was filled by reverse lookup rather than the client body. */
    enrichedFromSession: boolean;
}
export type ValidationResult = {
    ok: true;
    value: FeedbackInputSchema;
} | {
    ok: false;
    error: string;
};
/**
 * Validate the raw HTTP body and produce a sanitized FeedbackInputSchema.
 *
 * Truncates over-long string fields rather than rejecting — matches the
 * existing `comment.substring(0, 500)` convention in agentRoutes.ts. Hard-rejects
 * only for type errors and unknown rating / schemaVersion values.
 */
export declare function validateFeedbackInput(body: unknown): ValidationResult;
/**
 * Combine validated client input with best-effort reverse lookup from in-memory
 * session state. When the session has been cleaned up (after 30 min idle) the
 * lookup fields stay undefined — callers can later supplement from durable
 * snapshots if needed.
 */
export declare function enrichFeedbackEntry(sessionId: string, input: FeedbackInputSchema, session: SessionLookup | null, now?: Date): EnrichedFeedbackEntry;
//# sourceMappingURL=feedbackEnricher.d.ts.map