import type { SqliteDatabase } from '../db/adapter.js'; import { CONTEXT_FEEDBACK_VERDICTS, MAX_FEEDBACK_COMMENT_BYTES, MAX_FEEDBACK_IDENTIFIER_LENGTH } from '../ledger/checkpoint-contract.js'; export { CONTEXT_FEEDBACK_VERDICTS, MAX_FEEDBACK_COMMENT_BYTES, MAX_FEEDBACK_IDENTIFIER_LENGTH }; export declare const MAX_FEEDBACK_OUTCOME_BYTES: number; export type ContextFeedbackVerdict = (typeof CONTEXT_FEEDBACK_VERDICTS)[number]; export declare const RUN_FEEDBACK_RECOMMENDATION_VERDICTS: readonly ["accepted", "dismissed", "resolved"]; export type RunFeedbackRecommendationVerdict = (typeof RUN_FEEDBACK_RECOMMENDATION_VERDICTS)[number]; export interface ContextFeedbackRecord { feedbackId: string; workspace: string; deliveryId: string; entryId: string; runId: string; verdict: ContextFeedbackVerdict; comment: string | null; actor: string; /** The idempotency key is stored as this lowercase SHA-256 digest; the raw key is never returned. */ idempotencyKeyHash: string; createdAt: string; } export interface ContextFeedbackSignal { verdict: ContextFeedbackVerdict; distinctRuns: number; boundedInfluence: number; } /** Shared cross-run feedback evidence for retrieval policy consumers. */ export declare function contextFeedbackSignals(database: SqliteDatabase, entryId: string): ContextFeedbackSignal[]; export interface FeedbackListPage { records: T[]; truncated: boolean; } export interface RunFeedbackRecord { feedbackId: string; workspace: string; runId: string; outcome: string | null; recommendationCode: string | null; recommendationVerdict: RunFeedbackRecommendationVerdict | null; rating: number | null; comment: string | null; actor: string; /** The idempotency key is stored as this lowercase SHA-256 digest; the raw key is never returned. */ idempotencyKeyHash: string; createdAt: string; } export declare function validateFeedbackTimestamp(value: unknown): string; /** Validate a context-feedback write and its exact persisted target without mutating state. */ export declare function assertContextFeedbackRecordable(database: SqliteDatabase, input: unknown): void; export declare function recordContextFeedbackInTransaction(database: SqliteDatabase, input: unknown): ContextFeedbackRecord; export declare function recordContextFeedback(database: SqliteDatabase, input: unknown): ContextFeedbackRecord; export declare function recordRunFeedbackInTransaction(database: SqliteDatabase, input: unknown): RunFeedbackRecord; export declare function recordRunFeedback(database: SqliteDatabase, input: unknown): RunFeedbackRecord; export declare function listRunFeedback(database: SqliteDatabase, input: unknown): FeedbackListPage; export declare function listContextFeedback(database: SqliteDatabase, input: unknown): FeedbackListPage; export declare const INTAKE_FEEDBACK_VERDICTS: readonly ["helpful", "unnecessary", "corrected"]; export type IntakeFeedbackVerdict = (typeof INTAKE_FEEDBACK_VERDICTS)[number]; export interface IntakeFeedbackRecord { feedbackId: string; workspace: string; runId: string; sessionId: string; questionId: string | null; profileField: string | null; verdict: IntakeFeedbackVerdict; comment: string | null; actor: string; idempotencyKeyHash: string; createdAt: string; } export declare function recordIntakeFeedback(database: SqliteDatabase, input: unknown): IntakeFeedbackRecord; export declare function recordIntakeFeedbackInTransaction(database: SqliteDatabase, input: unknown): IntakeFeedbackRecord; export declare function listIntakeFeedback(database: SqliteDatabase, input: unknown): FeedbackListPage; //# sourceMappingURL=feedback.d.ts.map