import { ClaimType, RecordType } from './claim-evidence-types.js'; import type { APSBundle } from './accountability/types/bundle.js'; import type { ContestStatus } from './accountability/types/contestability.js'; export type OpenContestationLookup = { contestationId: string; status: ContestStatus; } | null; export type OpenContestationResolver = (recordId: string) => OpenContestationLookup; export type ClaimVerificationResult = { status: 'valid'; claimType: ClaimType; satisfiedBy: RecordType[]; } | { status: 'missing_evidence'; claimType: ClaimType; missing: RecordType[]; provided: RecordType[]; } | { status: 'forbidden_substitution'; claimType: ClaimType; offendingRecord: RecordType; reason: string; } | { status: 'unsupported_claim_type'; claimType: ClaimType; } | { status: 'profile_not_populated'; claimType: ClaimType; } | { status: 'bundle_requires_inclusion_proof'; claimType: ClaimType; bundleRecord: APSBundle; } | { status: 'contested'; claimType: ClaimType; contestedRecordId: string; contestationId: string; contestationStatus: ContestStatus; }; export interface ClaimVerificationInput { claim: { type: ClaimType; subject: string; }; evidence: Array<{ recordType: RecordType; record: unknown; receiptId?: string; }>; /** Optional Module 4 hook. When provided, every evidence entry that * carries a receiptId is checked against the resolver after the * static registry passes but before the verifier returns 'valid'. * Statuses 'filed', 'under_review', 'upheld', 'remedied' all * block; 'rejected', 'abandoned', 'expired' do not. */ openContestationResolver?: OpenContestationResolver; } export declare function verifyEvidenceClaim(input: ClaimVerificationInput): ClaimVerificationResult; //# sourceMappingURL=claim-verifier.d.ts.map