/**
 * Claude Code / OpenClaw hook + plugin installer.
 *
 * Copies the cortex-memory hook into the hooks directory and
 * the real-time plugin into the OpenClaw extensions directory.
 * Supports both Claude Code (native binary) and legacy OpenClaw (Node.js).
 */
/**
 * Detect whether ShieldCortex is running inside a Docker container
 * or similar isolated environment (Umbrel, Unraid, NixOS sandbox, etc.).
 *
 * In these environments, OpenClaw hook/plugin installation may crash or
 * produce broken state. We warn and skip by default.
 */
export declare function isDockerEnvironment(): boolean;
/**
 * Find ALL valid hook directories for install/uninstall/status.
 *
 * Only returns user-space directories that survive package updates.
 * Creates the hooks/ subdirectory if the parent config dir exists.
 */
export declare function findAllHooksDirs(): string[];
/**
 * Pure idempotency check for the openclaw.json plugin registration.
 *
 * Returns true if the config needs to be rewritten — i.e. ANY of the
 * load-bearing fields differ from the desired state. Returns false when
 * the config already matches and a re-install would otherwise produce a
 * no-op write (which churned the gateway's config-watcher every
 * `shieldcortex openclaw install` pre-v4.12.11).
 *
 * Intentionally treats `installedAt` as transient — only differing on
 * that field does NOT force a write, otherwise this function would
 * always trip on its own previous timestamp.
 *
 * Exported for direct unit testing without booting the full installer.
 */
export declare function pluginInstallNeedsWrite(config: unknown, pluginId: string, _installDir: string, _version: string): boolean;
/**
 * Install options for `shieldcortex openclaw install`.
 */
export interface OpenClawInstallOptions {
    /** Skip hook installation (--no-hooks flag) */
    noHooks?: boolean;
    /** Skip plugin installation (--no-plugins flag) */
    noPlugins?: boolean;
    /**
     * Best-effort restart of the OpenClaw gateway after install so the freshly
     * copied hook + plugin files are picked up without manual intervention.
     * Defaults to true. Set to false (or pass `--no-gateway-restart` from the
     * CLI) to skip the restart.
     *
     * Symmetric with `uninstall --deep`'s gateway-restart, which has been live
     * since v4.12.0. Without this on the install side, an upgrade of the npm
     * package leaves the running gateway with the old plugin in memory until
     * something else triggers a restart — observed on Edith 2026-04-25 where
     * the npm package was on 4.12.5 but the plugin loaded was still 4.12.2,
     * silently producing zero memories.
     */
    restartGateway?: boolean;
}
export declare function installOpenClawHook(options?: OpenClawInstallOptions): Promise<void>;
export declare function uninstallOpenClawHook(): Promise<void>;
export declare function openClawHookStatus(): Promise<void>;
export declare function handleOpenClawCommand(subcommand: string, extraArgs?: string[]): Promise<void>;
