/** * ResttyTerminalView — TerminalView over the primary Restty API * (libghostty-vt WASM + WebGPU/WebGL2). * * Configured for Ghostty parity via {@link buildGhosttyParity}: * full Nerd Font weight set, Symbols Nerd Font, Ghostty default theme, * WebGPU-first renderer, ligatures, linear-corrected blending, window padding. * * I/O model: * - Keys: AvocadoPtyTransport (connected) → avocado PTY (no local echo) * - Display: avocado PTY output → Restty.sendInput(text, "pty") * - Resize: engine-driven only (transport.resize / fit); host-driven resizes * use transport.withHostResizeSuppressed to avoid feedback loops */ import type { TerminalView, TerminalViewCreateOptions, TerminalViewLifecycleEvent, Unsubscribe } from './types.js'; import { AvocadoPtyTransport } from './avocado-pty-transport.js'; /** Minimal Restty instance surface we depend on. */ export interface ResttyInstance { sendInput(text: string, source?: string): void; resize(cols: number, rows: number): void; focus(): void; blur(): void; updateSize(force?: boolean): void; destroy(): void; applyTheme?(theme: unknown, sourceLabel?: string): void; setFontSize?(size: number): void; setLigatures?(enabled: boolean): void; setRenderer?(value: 'auto' | 'webgpu' | 'webgl2'): void; getBackend?(): string; } export type ResttyCtor = new (config: Record) => ResttyInstance; export type LoadRestty = () => Promise; /** Optional restty module helpers (theme catalog, etc.). */ export type ResttyModule = { Restty?: ResttyCtor; getBuiltinTheme?: (name: string) => unknown; }; export declare class ResttyTerminalView implements TerminalView { private readonly restty; private readonly transport; private readonly container; private disposed; private _cols; private _rows; private readonly dataListeners; private readonly resizeListeners; private readonly lifecycleListeners; private constructor(); static create(options: TerminalViewCreateOptions, load?: LoadRestty): Promise; get cols(): number; get rows(): number; /** Expose transport for tests / advanced lifecycle (exit/error). */ get ptyTransport(): AvocadoPtyTransport; /** Underlying restty instance (advanced Ghostty-parity tweaks). */ get engine(): ResttyInstance; write(data: string | Uint8Array): void; /** * Host-driven resize: apply to restty without re-emitting onResize * (caller already owns the dimension state). */ resize(cols: number, rows: number): void; focus(): void; blur(): void; fit(): void; onData(listener: (data: string) => void): Unsubscribe; onResize(listener: (size: { cols: number; rows: number; }) => void): Unsubscribe; onLifecycle(listener: (event: TerminalViewLifecycleEvent) => void): Unsubscribe; /** Forward PTY session exit into the transport lifecycle. */ reportExit(code?: number): void; reportError(message: string, errors?: string[]): void; dispose(): void; } export declare function createResttyTerminalView(options: TerminalViewCreateOptions, load?: LoadRestty): Promise; export type LoadResttyXterm = LoadRestty; export type ResttyXtermTerminalCtor = ResttyCtor; export type ResttyXtermTerminal = ResttyInstance; //# sourceMappingURL=restty-view.d.ts.map