import type { GovernanceEvidenceCandidateLedgerEntry } from './evidence-candidate.js'; import type { TaskAggregate } from './task-aggregate.js'; import { type EvidenceKind } from './task-contract.js'; export declare const VERIFICATION_PLANNER_INPUT_SCHEMA_VERSION: 1; declare const VERIFICATION_PLAN_DRAFT_SCHEMA_VERSION: 1; export declare const MAX_VERIFICATION_CANDIDATE_PROPOSALS = 512; interface VerificationPlanningScopeV1 { readonly taskId: string; readonly contractVersion: number; readonly planFingerprint: string; readonly workspaceManifestHash: string; } interface VerificationCandidateProposalV1 { readonly requiredCheckId: string; readonly candidateId: string; } interface VerificationPlannerInputV1 { readonly schemaVersion: typeof VERIFICATION_PLANNER_INPUT_SCHEMA_VERSION; readonly scope: VerificationPlanningScopeV1; readonly proposals: readonly VerificationCandidateProposalV1[]; } type VerificationPlannerIssueCode = 'task_missing' | 'active_contract_missing' | 'contract_invalid' | 'invalid_schema_version' | 'task_mismatch' | 'contract_version_mismatch' | 'scope_identity_invalid' | 'proposal_limit_exceeded'; interface VerificationPlannerIssue { readonly code: VerificationPlannerIssueCode; readonly path: string; readonly message: string; } type VerificationProposalRejectionCode = 'proposal_invalid' | 'duplicate_proposal' | 'unknown_required_check' | 'candidate_missing' | 'candidate_ambiguous' | 'candidate_ineligible' | 'candidate_task_mismatch' | 'candidate_plan_mismatch' | 'candidate_workspace_mismatch'; type VerificationProposalDisposition = { readonly state: 'accepted_as_proposal'; readonly requiredCheckId: string; readonly candidateId: string; } | { readonly state: 'rejected'; readonly requiredCheckId: string | null; readonly candidateId: string | null; readonly code: VerificationProposalRejectionCode; readonly path: string; }; interface VerificationCheckDraftV1 { readonly requiredCheckId: string; readonly expectedEvidenceKind: EvidenceKind; readonly required: boolean; readonly requirementIds: readonly string[]; readonly acceptanceCriterionIds: readonly string[]; readonly state: 'unassigned' | 'candidates_proposed'; readonly proposedCandidateIds: readonly string[]; /** A proposed tool result is never sufficient evidence by itself. */ readonly evidenceSatisfied: false; } export interface VerificationPlanDraftV1 { readonly schemaVersion: typeof VERIFICATION_PLAN_DRAFT_SCHEMA_VERSION; readonly draftId: string; readonly status: 'draft'; readonly scope: VerificationPlanningScopeV1; readonly checks: readonly VerificationCheckDraftV1[]; readonly proposalDispositions: readonly VerificationProposalDisposition[]; readonly summary: { readonly requiredCheckCount: number; readonly requiredChecksWithCandidates: number; readonly allRequiredChecksHaveCandidates: boolean; readonly requiredEvidenceSatisfied: false; readonly nextAction: 'repropose_candidates' | 'independent_verification'; }; } type VerificationPlanningResult = { readonly planned: false; readonly issues: readonly VerificationPlannerIssue[]; } | { readonly planned: true; readonly issues: readonly VerificationPlannerIssue[]; readonly draft: VerificationPlanDraftV1; }; export declare function calculateVerificationPlanDraftId(draft: Pick): string; export declare function buildVerificationPlanDraft(task: TaskAggregate | null, candidates: readonly GovernanceEvidenceCandidateLedgerEntry[], input: VerificationPlannerInputV1): VerificationPlanningResult; export {}; //# sourceMappingURL=verification-planner.d.ts.map