/**
 * Auto-start install/uninstall for the per-project daemon.
 *
 * macOS: writes a LaunchAgent plist under `~/Library/LaunchAgents/` and
 * loads it via `launchctl bootstrap`. The plist's `Label` and filename
 * include a short hash of the absolute project path so multiple projects
 * each get their own agent without clobbering.
 *
 * Linux: writes a systemd user unit under `~/.config/systemd/user/` and
 * enables it via `systemctl --user enable --now`.
 *
 * Windows: registers a per-user Scheduled Task via `schtasks /Create`
 * with an ONLOGON trigger. The task name embeds the same project-path
 * hash, so multiple projects each get their own task without clobbering.
 *
 * All operations are idempotent: install over an existing install is a
 * no-op (replaces the file/task), and uninstall on a missing install is
 * a no-op.
 *
 * See `agents/2026-05-20-skills-unification-plan.md` step 20.
 */
export type AutoStartPlatform = 'darwin' | 'linux' | 'win32' | 'unsupported';
export interface InstallOptions {
    projectRoot: string;
    /** Override the path to the daemon CLI entry. Defaults to the resolved bin. */
    daemonCommand?: string;
    /** Override the platform target. Tests pin this to get deterministic output. */
    platform?: AutoStartPlatform;
    /** Override `homedir()` for testing. */
    home?: string;
    /**
     * Whether the install function may shell out to `launchctl` / `systemctl`.
     * Defaults to true. Tests pass false to verify file generation only.
     */
    loadService?: boolean;
}
export interface InstallResult {
    platform: AutoStartPlatform;
    written?: string;
    message: string;
}
export declare function projectHash(projectRoot: string): string;
export declare function launchAgentPath(home: string, hash: string): string;
export declare function systemdUnitPath(home: string, hash: string): string;
/**
 * Per-project Scheduled Task name. We write the XML to disk for
 * `schtasks /XML` and reference the task by this name in subsequent
 * uninstall / status checks.
 */
export declare function scheduledTaskName(hash: string): string;
/**
 * Where the generated task XML lives. Per-user, hash-scoped so multiple
 * projects don't collide.
 */
export declare function scheduledTaskXmlPath(home: string, hash: string): string;
export declare function buildLaunchAgentPlist(projectRoot: string, hash: string, daemonCommand: string): string;
export declare function buildSystemdUnit(projectRoot: string, hash: string, daemonCommand: string): string;
/**
 * Build a Task Scheduler XML manifest for the daemon. ONLOGON trigger
 * runs the daemon at each user login; `RestartOnFailure` keeps it up
 * if it crashes (mirroring launchd `KeepAlive` and systemd `Restart`).
 */
export declare function buildScheduledTaskXml(projectRoot: string, hash: string, daemonCommand: string): string;
export declare function installAutoStart(opts: InstallOptions): Promise<InstallResult>;
export declare function uninstallAutoStart(opts: InstallOptions): Promise<InstallResult>;
export declare function isAutoStartInstalled(opts: InstallOptions): Promise<boolean>;
/** Exported for spec parity / read-only confirmation. */
export declare function readUnitOrPlist(opts: InstallOptions): Promise<string | null>;
//# sourceMappingURL=install.d.ts.map