import { type RetainedAbsentWitness } from "./agent-discovery.js"; export declare const CLAUDE_DISCOVERY_BINDING_VERIFICATION_SCHEMA: "skills.claude-discovery-binding-verification/v1"; /** The rule that lets a stored witness stay unverified because Claude removed * its whole retired plugin-cache version while unchanged settings and * registrations select a current sibling version. */ export declare const ABSENT_RETIRED_CLAUDE_VERSION_RULE: "absent-retired-claude-version"; export type ClaudeDiscoveryBindingRefusalCode = "POLICY_PATH_MISMATCH" | "POLICY_UNAVAILABLE" | "POLICY_UNREADABLE" | "BINDING_UNAVAILABLE" | "BINDING_INVALID" | "POLICY_CHANGED"; /** A request, policy or stored-binding read/parse failure: no verdict. */ export declare class ClaudeDiscoveryBindingRefusal extends Error { readonly code: ClaudeDiscoveryBindingRefusalCode; constructor(code: ClaudeDiscoveryBindingRefusalCode); } export type ClaudeBindingSourceFailure = "MISSING" | "APPEARED" | "CHANGED" | "MARKER_INVALID" | "REFUSED"; export type ClaudeBindingDirectoryFailure = "MEMBERSHIP_CHANGED" | "REFUSED"; export interface ClaudeBindingSourceReport { index: number; path: string; hashMode: string | null; format: string | null; sha256: string | null; status: "current" | "retained-absent" | "drift"; retention?: { rule: typeof ABSENT_RETIRED_CLAUDE_VERSION_RULE; root: string; witness: RetainedAbsentWitness; }; reason?: ClaudeBindingSourceFailure; } export interface ClaudeBindingDirectoryReport { index: number; path: string; status: "current" | "drift"; reason?: ClaudeBindingDirectoryFailure; } export type ClaudeBindingFailure = { kind: "source"; index: number; path: string; reason: ClaudeBindingSourceFailure; } | { kind: "directory"; index: number; path: string; reason: ClaudeBindingDirectoryFailure; } | { kind: "binding"; reason: "DISCOVERY_REFUSED"; }; export interface ClaudeDiscoveryBindingVerification { schema: typeof CLAUDE_DISCOVERY_BINDING_VERIFICATION_SCHEMA; ok: boolean; policySha256: string; discoverySha256: string; agent: "claude"; method: "reviewed" | "automatic"; rootCount: number; sources: ClaudeBindingSourceReport[]; directories: ClaudeBindingDirectoryReport[]; failures: ClaudeBindingFailure[]; } /** Verify the stored `bridge.discovery.claude` binding of the package-owned * Skills policy. `ok` is true only when the hook's own discovery verification * accepts the binding and every source is current or retained under the * absent retired version rule, and every directory witness is current. */ export declare function verifyClaudeInstallerDiscoveryBinding(policyPath: string): ClaudeDiscoveryBindingVerification;