/**
 * A short, stable hash of this process's HOME when — and only when — HOME has
 * been redirected away from the account's real home.
 *
 * `os.userInfo().homedir` reads the OS/passwd record directly and ignores
 * `$HOME` (unlike `os.homedir()`, which honors it), so comparing the two
 * detects exactly that redirection: true for every hermetic test process, false
 * for every real interactive or production invocation. A real user's services
 * therefore keep registering under their unchanged production identifiers.
 */
export declare function isolatedHomeSuffix(): string | null;
/**
 * Namespace a service identifier under a redirected HOME. Returns `base`
 * unchanged for a real production invocation.
 */
export declare function namespacedServiceLabel(base: string): string;
/**
 * The home-resolution environment every generated service manifest must carry,
 * so the service-manager-started child resolves the SAME home the caller did.
 *
 * `AGENTS_REAL_HOME` is the canonical seam that distinguishes an agent's
 * isolated version home from the active installation home; pinning it alongside
 * HOME keeps a child that a login shell or service manager re-homes pointed at
 * the installation the caller meant.
 */
export declare function serviceManifestHomeEnv(): {
    HOME: string;
    AGENTS_REAL_HOME: string;
};
/**
 * Whether this process may safely register (or tear down) a service with the
 * user's real service manager.
 *
 * `launchctl` and `systemctl --user` are per-user-session and HOME-independent:
 * a process running under a redirected HOME still talks to the SAME launchd or
 * systemd instance as a normal login session. service-manifest.ts namespaces the
 * job label under a redirected HOME, but that only changes the identifier — the
 * registration still lands in the real service manager. A hermetic test fork (or
 * any CLI running under a sandbox HOME) must therefore never touch launchd/
 * systemd unless it has explicitly opted in.
 *
 * `AGENTS_SERVICE_MANAGER_ALLOW_REDIRECTED_HOME=1` is the test seam for the
 * shim/PATH-based tests that intentionally exercise the registration code path
 * under a redirected HOME. Production code must never set it.
 */
export declare function serviceManagerRegistrationAllowed(): {
    allowed: boolean;
    reason: string;
};
