import type { CasReceipt } from "../../config/atomic-yaml-patch"; import type { Settings } from "../../config/settings"; import type { DriftReason } from "./result-types"; import { type InstallSkillName, type PaseoSetupDependencies } from "./setup-deps"; type BridgeEntryAction = "create" | "noop" | "prune-and-recreate"; type BridgeEntryPlan = { readonly name: InstallSkillName; readonly action: BridgeEntryAction; readonly linkPath: string; readonly targetPath: string; /** The dangling link text captured during preflight, used as an unlink guard. */ readonly danglingTarget?: string; }; /** Immutable preflight evidence consumed by the install saga and its inverse. */ export interface SkillsBridgePreflight { readonly bridgeDir: string; readonly bridgeDirCreated: boolean; readonly entries: Readonly>; } /** What the forward operation actually created, rather than what preflight intended to create. */ export interface SkillsBridgeInstallResult { readonly createdEntries: readonly InstallSkillName[]; readonly bridgeDirCreated: boolean; } export declare class SkillsBridgeError extends Error { constructor(message: string); } /** * Classify every allowlisted bridge entry without mutating either skill tree. * All conflicts are accumulated so the caller can report them together. */ export declare function preflightSkillsBridge(deps: PaseoSetupDependencies): Promise; /** Create only preflight-approved bridge links; symlink publication never replaces an existing entry. */ export declare function installSkillsBridge(preflight: SkillsBridgePreflight): Promise; /** * Undo exactly the links this run created. A changed link is reported as a * conflict rather than being deleted; this makes compensation safe after edits. */ export declare function inverseSkillsBridge(deps: PaseoSetupDependencies, result: SkillsBridgeInstallResult): Promise; /** Find Paseo-prefixed bridge or source entries that the locked install allowlist does not repair. */ export declare function scanSkillsBridgeDrift(deps: PaseoSetupDependencies): Promise; /** Append the bridge directory without discarding concurrent user config changes. */ export declare function registerSkillsBridgeDirectory(settings: Settings, bridgeDir: string): Promise; export {};