/** * Terminal connection state tracker hook. * * Tracks connection status derived from ResttyTerminal lifecycle callbacks * (`onConnect`, `onDisconnect`, `onError`, `onPtyStatus`). Returns a * `handlers` object to spread onto `` for automatic wiring. * * This is NOT a WebSocket manager (that's `useTerminalWebSocket` for xterm). * It's a reactive state tracker that works with any terminal renderer. * * @module @mks2508/mks-ui/react/blocks/Terminal/hooks/useTerminalConnection * * @example * ```tsx * const connection = useTerminalConnection({ onConnect: () => console.log('up') }); * * * {connection.status} * ``` */ import type { TTerminalConnectionStatusToken } from '../Terminal.tokens'; import type { IResttyTerminalRef } from '../restty/ResttyTerminal.types'; /** * Options for useTerminalConnection. */ export interface IUseTerminalConnectionOptions { /** Initial connection status (default: 'disconnected'). */ initialStatus?: TTerminalConnectionStatusToken; /** Called when PTY connection opens. */ onConnect?: () => void; /** Called when PTY connection closes. */ onDisconnect?: () => void; /** Called on connection error. */ onError?: (message: string) => void; } /** * Return type for useTerminalConnection. */ export interface IUseTerminalConnectionReturn { /** Current connection status. */ status: TTerminalConnectionStatusToken; /** Whether the PTY is connected. */ isConnected: boolean; /** Reconnect via restty ref. */ reconnect: (ref: React.RefObject, wsUrl?: string) => void; /** Disconnect via restty ref. */ disconnect: (ref: React.RefObject) => void; /** Handlers to spread onto ResttyTerminal props. */ handlers: { onConnect: () => void; onDisconnect: () => void; onError: (message: string) => void; onPtyStatus: (status: string) => void; }; /** Uptime in seconds since connection (null if not connected). */ uptimeSeconds: number | null; } /** * Terminal connection state tracker. * * Derives reactive connection state from ResttyTerminal lifecycle callbacks. * Provides `handlers` to spread onto `` for zero-config wiring, * plus `reconnect`/`disconnect` imperative controls. * * @param options - Connection tracking options * @returns Connection state, handlers, and imperative controls * * @example * ```tsx * const resttyRef = useRef(null); * const connection = useTerminalConnection({ * onConnect: () => console.log('Terminal connected'), * onError: (msg) => console.error('Terminal error:', msg), * }); * * * {connection.isConnected && Online} * ``` */ export declare function useTerminalConnection(options?: IUseTerminalConnectionOptions): IUseTerminalConnectionReturn; //# sourceMappingURL=useTerminalConnection.d.ts.map