/**
 * Resolve the browser URL path for a fresh `indusk ui` invocation. If the
 * current working directory matches a registered project's `path`, return
 * `/p/{name}/` so the user lands on that project directly. Otherwise fall
 * back to `/` (the project grid). This is T16's contract.
 *
 * Both sides are normalized via `realpathSync` so macOS's /var ↔ /private/var
 * symlink doesn't cause a false mismatch — `mkdtempSync` can return a path
 * with an unresolved leading component while `process.cwd()` returns the
 * fully-resolved realpath, so raw string compare misses.
 */
export declare function resolveOpenPath(): string;
export interface UiStartOptions {
    port: string;
    open: boolean;
}
/**
 * Start the admin-ui daemon. If already running, prints "already running"
 * and the existing URL without spawning a second daemon. Otherwise picks
 * a free port (respecting `--port`, auto-bumping on conflict), spawns the
 * bundled admin app via `daemonStart`, and opens the browser unless
 * `--no-open`.
 */
export declare function uiStart(opts: UiStartOptions): Promise<void>;
/**
 * Restart the admin-ui daemon: stop (if running) then start. Picks up any
 * new bundle that landed via `npm i -g` since the daemon last started. The
 * inner `uiStart` call reuses the same cwd-aware open behavior and flag
 * passthrough as a bare `indusk ui start`.
 */
export declare function uiRestart(opts: UiStartOptions): Promise<void>;
/**
 * Stop the admin-ui daemon. Reports whether it was running, the PID it
 * signaled, and whether SIGKILL was required.
 */
export declare function uiStop(): Promise<void>;
/**
 * Report the daemon's current status plus the number of registered projects
 * (read fresh from `~/.indusk/projects.json`). The registry count is part of
 * the contract — see T3 in admin-ui-hosting/impl.md.
 */
export declare function uiStatus(): Promise<void>;
