import type { CapturedDispatch, ClaimBindingRule, ReturnedEvidence, ScopeDeclaration } from '../../../integrity/claim-binding/types.js';
export interface EvidenceAuthorizationInput {
    /** Exact executed identity and selected scope, never all tool arguments. */
    readonly dispatch: CapturedDispatch;
    /** Full return-time semantic metadata, not the stripped model projection. */
    readonly returned: ReturnedEvidence;
    /** Actual payload after governance, placement and caps, before extra notes. */
    readonly served: unknown;
}
export interface EvidenceAuthorization {
    /** Grants retention of ALL original facts, provenance, coverage extras and period. */
    readonly resultVisible: boolean;
    /** Separately grants retention of EVERY selected executed scope dimension. */
    readonly scopeVisible: boolean;
}
export interface FindingsVerificationOptions {
    readonly rules: readonly ClaimBindingRule[];
    /**
     * Synchronous author policy; may close over app-owned authorization. Inputs
     * are detached/frozen. Projection equality does not supply this permission.
     * Missing, partial, malformed or throwing decisions withhold both channels.
     */
    readonly authorizeEvidence: (input: EvidenceAuthorizationInput) => EvidenceAuthorization;
}
export interface CompiledVerificationConfig extends FindingsVerificationOptions {
    /** One admitted scope per tool; conflicting declarations fail at compilation. */
    readonly scopeForTool: (toolName: string) => ScopeDeclaration | undefined;
}
/** Strict configuration admission runs once, not at every verification. */
export declare function compileVerificationConfig(raw: unknown): CompiledVerificationConfig;
