import type { CandidateSetStatus } from "./types.js"; import { type ClaimTargetHint, type ExtractionReference, type ProducerPolicy, type ReviewItem, type ReviewLocator, type SourceReference, type SurveyRecordProjectionHint } from "./review-resource.js"; /** * A single candidate value for a current/proposed {@link ReviewItem}. Carries * the candidate value plus its source, extraction, and claim-target evidence. * The builder owns id, role, and candidate-set wiring; the caller owns the * value and its domain vocabulary. */ export interface CurrentProposedCandidateInput { readonly value: unknown; readonly confidence?: number; readonly sourceRank?: number; readonly rejectionReason?: string; readonly source: SourceReference; readonly locator?: ReviewLocator; readonly extraction: ExtractionReference; readonly claimTarget: ClaimTargetHint; readonly projection?: SurveyRecordProjectionHint; readonly producer?: Record; } /** * Input for {@link currentProposedReviewItem} — the generic envelope, id, and * role wiring for a two-candidate current/proposed ReviewItem. */ export interface CurrentProposedReviewItemInput { readonly name: string; readonly target: string; readonly current: CurrentProposedCandidateInput; readonly proposed: CurrentProposedCandidateInput; readonly candidateSetStatus?: CandidateSetStatus; readonly selectedCandidateRole?: "current" | "proposed"; readonly rationale?: string; readonly labels?: Record; readonly producerMetadata?: Record; readonly producerPolicy?: ProducerPolicy; readonly projection?: SurveyRecordProjectionHint; readonly candidateIdSuffix?: { readonly current?: string; readonly proposed?: string; }; /** * Whether the reviewer may edit the proposed value inline. Defaults to * `true`. Pass `false` for keep/use/reject-only queues (see * {@link ReviewItemSpec.editable}). */ readonly editable?: boolean; } /** * Builds the two-candidate current/proposed {@link ReviewItem} envelope that * producers otherwise hand-assemble: candidate ids, roles, candidate-set id, * observed-candidate count, and selected-candidate mirroring. The caller still * owns each candidate's value, source, extraction, and claim-target vocabulary. * * Candidate ids default to `.current` / `.proposed` (the trailing * segment is overridable via `candidateIdSuffix`); the candidate-set id defaults * to `.candidates` (overridable via `projection.candidateSetId`); * `candidateSetStatus` defaults to `"needs-review"`. `status.observedCandidateCount` * is always 2, and `status.selectedCandidateId` mirrors `spec.selectedCandidateId` * when `selectedCandidateRole` is set. */ export declare function currentProposedReviewItem(input: CurrentProposedReviewItemInput): ReviewItem;