/**
 * Scan-and-reconcile olam skill symlinks after npm install.
 *
 * Source of truth: $(npm root -g)/@pleri/olam-cli/plugin/skills/olam-*
 * Deployed location: ~/.claude/skills/olam-*
 *
 * Rules (T22/OQ29):
 *   - For each olam-* dir in npm source not in deployed: create symlink
 *   - For each olam-* symlink in deployed pointing into npm package:
 *       if target file exists → leave alone
 *       if dangling → remove
 *   - Never touch non-olam-* entries (collision-safety per T7/T10)
 */
import * as fs from 'node:fs';
export interface ReconcileResult {
    readonly added: string[];
    readonly removed: string[];
    readonly kept: string[];
}
export type FsAdapter = {
    readdirSync: (p: string) => string[];
    existsSync: (p: string) => boolean;
    lstatSync: (p: string) => fs.Stats;
    readlinkSync: (p: string) => string;
    symlinkSync: (target: string, linkPath: string) => void;
    unlinkSync: (p: string) => void;
    mkdirSync: (p: string, opts?: {
        recursive?: boolean;
    }) => void;
};
export declare function reconcileSkillSymlinks(npmSkillsDir: string, claudeSkillsDir: string, _fs?: FsAdapter): ReconcileResult;
//# sourceMappingURL=symlink-reconcile.d.ts.map