/**
 * Sync the shipped XLL directory to a stable user-local path.
 *
 * The npm package ships xll/ containing:
 *   xll/ShortcutXL.xll     — the add-in DLL
 *   xll/modules/            — shortcut_xl.py and user UDF modules
 *   xll/python/             — Python 3.13 embeddable distribution (stdlib, DLLs, .pyd)
 *
 * On startup, if the package version has changed (or no sync has happened yet),
 * we sync xll/ to ~/.shortcut/agent/xll/ so the Windows registry key always
 * points to a stable path that survives npm re-installs.
 *
 * A version stamp (.sync-version) in the stable directory tracks the last
 * synced version. If it matches the current package version, sync is skipped
 * entirely — no filesystem walking, no stat comparisons.
 *
 * Note: files removed from the shipped directory are NOT deleted from the
 * stable directory. This is intentional — pip-installed packages live in
 * python/Lib/site-packages/ and must survive re-syncs.
 */
export declare function hasPythonAbiDrift(shippedDir: string, stableDir: string): boolean;
export declare function stablePythonRuntimeNeedsReset(): boolean;
interface SyncResult {
    /** Number of files copied/updated. 0 if sync was skipped (version match). */
    updated: number;
    /** The stable XLL directory path. */
    stableDir: string;
    /** Whether ShortcutXL.xll exists at the stable path after sync. */
    xllReady: boolean;
    /** Whether sync was skipped because the version stamp matched. */
    skipped: boolean;
    /** Whether Excel locked a file whose content still differs from the package. */
    staleLocked: boolean;
}
/**
 * Sync shipped XLL files (including embedded Python distribution) to
 * the stable user-local directory.
 *
 * Compares the package version against a stamp in the stable directory.
 * If they match, sync is skipped entirely. On version mismatch (package update)
 * or first install (no stamp), a full sync runs. Pip-installed packages
 * in python/Lib/site-packages/ are preserved because syncDir only copies
 * from source — it never deletes files missing from source.
 *
 * Callers should check `xllReady` — if false on first install, the agent
 * cannot proceed with registration.
 */
export declare function syncXll(): SyncResult;
export {};
//# sourceMappingURL=sync-xll.d.ts.map