import { type ReviewedDiscoveryInputs } from "./agent-discovery.js"; export declare const CLAUDE_PROSPECTIVE_REVIEW_SCHEMA: "skills.claude-plugin-prospective-review/v1"; /** Hash the exact serialized Claude discovery binding used by review requests. */ export declare function hashClaudeDiscoveryBinding(binding: unknown): string; export interface ClaudeProspectiveReviewRequest { schema: typeof CLAUDE_PROSPECTIVE_REVIEW_SCHEMA; scope: { kind: "user" | "project"; projectPath: string; }; native: { home: string; executable: { path: string; target: string; version: string; sha256: string; }; configRoot: string; pluginRoot: string; }; skills: { dataDir: string; policySha256: string; discoverySha256: string; discoveryInputs: ReviewedDiscoveryInputs; }; candidate: { marketplace: string; root: string; catalogPath: string; catalogSha256: string; closureSha256: string; plugins: Array<{ plugin: string; manifestPath: string; manifestSha256: string; optionsPatch: Record; }>; releaseManifest?: { path: string; sha256: string; }; functionHooksEnv?: "1"; settingsMarketplaceSource?: "directory"; }; preimages: { settings: { path: string; sha256: string | null; }; userSettings: { path: string; sha256: string | null; }; projectSettings: { path: string; sha256: string | null; }; projectSettingsLocal: { path: string; sha256: string | null; }; marketplaces: { path: string; sha256: string | null; }; installedPlugins: { path: string; sha256: string | null; }; }; /** Complete semantic documents expected after native adoption. The one * timestamps generated by Claude for the owned marketplace and registration * rows use exact typed field markers documented below; every other field is * concrete. */ delta: { settingsAfter: Record; knownMarketplacesAfter: Record; installedPluginsAfter: Record; }; review: { pluginHooks: "reviewed-no-skill-injection"; }; } export interface ClaudeProspectiveReviewReceipt { schema: typeof CLAUDE_PROSPECTIVE_REVIEW_SCHEMA; accepted: true; applied: false; scope: ClaudeProspectiveReviewRequest["scope"]; pluginIds: string[]; native: { executablePath: string; executableTarget: string; executableVersion: string; executableSha256: string; configRoot: string; pluginRoot: string; }; candidate: { marketplace: string; plugins: Array<{ plugin: string; pluginId: string; manifestSha256: string; optionsPatchSha256: string; }>; closureSha256: string; catalogSha256: string; releaseManifest?: { path: string; sha256: string; }; }; targetSettingsPath: string; skillsDiscoverySha256: string; requestFileSha256: string; semanticDocumentsSha256: string; operationSha256: string; expectedPostStateSha256: string; preimages: Array<{ name: string; path: string; sha256: string | null; }>; ownedDelta: { settingsEnabledPlugins: string[]; selectedPluginOptions: string[]; functionHooksEnv: string | null; knownMarketplace: string; installedPlugins: string[]; unrelatedGraph: "preserved-by-complete-semantic-documents"; }; identityPrecondition: "Harnesses must resolve the installed Claude home/config/plugin roots and executable path/version/hash plus the installed Skills data directory through their package-owned consumers, then compare every value before trusting this receipt; this validator checks supplied paths and current bytes only and does not establish actual consumer identity"; reviewPrecondition: "The caller's no-skill-injection assessment is bound to the raw request hash; structural checks are not semantic hook review, and Harnesses must retain its existing review record and verify the exact candidate binding"; limitation: "validation-only; native installer atomicity and crash recovery are not established"; } /** Fingerprint every file byte and directory name under the frozen candidate. * Symlinks and special files refuse; the digest binds the complete closure. */ export declare function captureClaudeProspectiveCandidateClosure(root: string): string; /** Read-only capture used by the installed Claude installer bridge. */ export declare function captureClaudeInstallerCandidate(root: string, policyPath: string): { closureSha256: string; discoverySha256: string; manifests: Array<{ plugin: string; path: string; hashMode: "claude-plugin-manifest-v1"; sha256: string; }>; }; /** Validate a frozen candidate review against the current filesystem. This is * intentionally a planner only: its receipt is not native-install authority. */ export declare function reviewClaudeProspectiveCandidate(request: ClaudeProspectiveReviewRequest, requestFileSha256: string): ClaudeProspectiveReviewReceipt;