import type { SessionCleanupResult, SessionClientInjectArgs, SessionClientInjectResult, SessionClientRecord, SessionConversationBindArgs, SessionStaleCleanupResult } from './session-client-registry-utils.js'; export declare class SessionClientRegistry { private readonly records; private readonly conversationToTmuxSession; private bindingsLoaded; private bindingsStorePath; private normalizeSessionDirEnvValue; private resolveBindingsStorePath; private ensureConversationBindingsLoaded; private persistConversationBindings; register(input: { daemonId: string; callbackUrl: string; tmuxSessionId?: string; sessionId?: string; workdir?: string; clientType?: string; tmuxTarget?: string; managedTmuxSession?: boolean; managedClientProcess?: boolean; managedClientPid?: number; managedClientCommandHint?: string; }): SessionClientRecord; heartbeat(daemonId: string, input?: { tmuxSessionId?: string; workdir?: string; managedTmuxSession?: boolean; managedClientProcess?: boolean; managedClientPid?: number; managedClientCommandHint?: string; }): boolean; unregister(daemonId: string): boolean; list(): SessionClientRecord[]; findByDaemonId(daemonIdRaw: string): SessionClientRecord | undefined; findByTmuxSessionId(tmuxSessionIdRaw: string): SessionClientRecord | undefined; unbindConversationSession(conversationSessionIdRaw: string): { ok: boolean; removed: boolean; daemonIds: string[]; }; unbindSessionScope(scopeRaw: string): { ok: boolean; removed: boolean; daemonIds: string[]; tmuxSessionIds: string[]; }; cleanupStaleHeartbeats(args?: { nowMs?: number; staleAfterMs?: number; isTmuxSessionAlive?: (tmuxSessionId: string) => boolean; terminateManagedTmuxSession?: (tmuxSessionId: string) => boolean; terminateManagedClientProcess?: (processInfo: { daemonId: string; pid: number; commandHint?: string; clientType?: string; }) => boolean; }): SessionStaleCleanupResult; cleanupDeadTmuxSessions(args: { isTmuxSessionAlive: (tmuxSessionId: string) => boolean; terminateManagedTmuxSession?: (tmuxSessionId: string) => boolean; terminateManagedClientProcess?: (processInfo: { daemonId: string; pid: number; commandHint?: string; clientType?: string; }) => boolean; }): SessionCleanupResult; private isAlive; private pickAliveCandidates; private resolveNoBindingReason; bindConversationSession(args: SessionConversationBindArgs): { ok: boolean; reason?: string; daemonId?: string; tmuxSessionId?: string; }; resolveBoundTmuxSession(conversationSessionIdRaw: string): string | undefined; resolveBoundWorkdir(conversationSessionIdRaw: string): string | undefined; hasAliveTmuxSession(tmuxSessionIdRaw: string): boolean; private resolveInjectTmuxSessionId; inject(args: SessionClientInjectArgs): Promise; } export declare function getSessionClientRegistry(): SessionClientRegistry; export declare function injectSessionClientPromptWithResult(args: SessionClientInjectArgs): Promise; export declare function injectSessionClientPrompt(args: SessionClientInjectArgs): Promise;