import type { CapturedDispatch, EvidenceSnapshot, ResultEvidence, ResultIdentity, ReturnedEvidence, ScopeDeclaration } from './types.js';
export declare function resultIdentityOf(identity: ResultIdentity): string;
/** Decode only canonical runtime result occurrences; no lookup or authority is inferred. */
export declare function readResultIdentity(raw: unknown): ResultIdentity;
/** Capture selected scope now; a later mutation of args cannot change it. */
export declare function captureDispatch(identity: ResultIdentity, tool: {
    readonly toolName: string;
    readonly toolCallId: string;
    readonly iteration: number;
}, executedArgs: unknown, declaration: ScopeDeclaration): CapturedDispatch;
/** Preserve the returned reading before any async result rule can mutate it. */
export declare function captureReturnedEvidence(dispatch: CapturedDispatch, original: unknown): ReturnedEvidence;
/**
 * returned is the return-time copy from that invocation. served is
 * the final model-facing payload AFTER all governance, placement and caps.
 * Visibility is a trusted adapter decision; equality alone grants no access.
 * Rewrites need a future explicit association, and are unavailable here.
 */
export declare function finalizeEvidence(dispatch: CapturedDispatch, returned: ReturnedEvidence, served: unknown, access: {
    readonly completed: boolean;
    readonly resultVisible: boolean;
    readonly scopeVisible: boolean;
}): ResultEvidence;
/** Freeze the caller's completed evidence universe at the declaration moment. */
export declare function evidenceSnapshot(namespace: string, verifiedRunIds: readonly string[], results: readonly ResultEvidence[]): EvidenceSnapshot;
