export { paneExists, paneLocation, paneOfNode, paneCurrentPath, ensureSession, openNodeWindow, splitWindow, closePane, currentTmux, switchClient, selectWindow, selectLayout, selectPane, getPaneOption, setPaneOption, breakPane, inTmux, piCommand, shellQuote, installTmuxBindings, renameWindow, displayPopup, windowOfPane, respawnPaneSync, respawnPaneInPlace, paneStartCommand, panePid, windowAlive, listLivePanes, } from './tmux.js'; /** The shared cold-start deadline (ms) a freshly-opened viewer waits for its * broker's view.sock — one source of truth for the CRTR_ATTACH_WAIT_MS a viewer * pane is handed. */ export declare const BROKER_VIEW_SOCKET_WAIT_MS = 30000; /** Wait until a broker's view.sock accepts a connection. The launching caller * stays async, so the broker's real exit signal can fail fast the wait instead * of being masked by a zombie pid. Success proves more than file existence: it * is robust to a stale leftover socket the broker has not unlinked yet, * because only an accepting listener yields a `connect`. */ export declare function waitForBrokerViewSocket(nodeId: string, exited?: Promise<{ code: number | null; signal: NodeJS.Signals | null; }>): Promise; /** Env for a `crtr surface attach` VIEWER pane (the focus split, the spawn viewer * window, AND recycle's re-attach respawn): propagate CRTR_HOME so the viewer * resolves the SAME canvas home — and thus the right view.sock — under a * non-default override; otherwise an empty env (the pane inherits the tmux * server env, like every other crtr chrome pane). One helper so the viewer-pane * sites can't drift. */ export declare function viewerSplitEnv(): Record; /** The opened viewer pane's tmux coordinates. */ export interface ViewerPane { pane: string; session: string | null; window: string | null; } /** Open a `crtr surface attach` VIEWER pane for `nodeId` — the PURE tmux half of * placement's openViewerWindow (no focus-row write). Wraps `ensureSession` + * `openNodeWindow`/`splitWindow`. The attach client connects to the node's * `view.sock` and renders/drives the live broker engine — it NEVER launches the * engine (the one-writer invariant; the caller ensures the broker is alive * first). Returns the opened pane's coordinates, or null if tmux refused. * - default → a fresh WINDOW in `session` (the --root spawn-viewer path). * - `besidePane` → a SPLIT beside that pane in its own session (the focus * open-beside-the-caller path); `session` is then only a fallback. */ export declare function openViewerPane(nodeId: string, session: string, opts?: { name?: string; cwd?: string; besidePane?: string; waitForBroker?: boolean; }): ViewerPane | null;