import type { Logger } from '../logger.js'; import type { StatusPanelController } from './panel-controller.js'; interface PanelAppOptions { controller: StatusPanelController; logger: Logger; } export declare class PanelApp { private readonly controller; private readonly logger; private readonly terminal; private readonly tui; private readonly inputBridge; private readonly view; private readonly debugInput; private exitPromise?; private exitResolver?; private unsubscribe?; private unsubscribeScripts?; private logTimer?; private logBackoff?; private lastActiveLogPoll; private pendingLogRefresh?; private disposed; private started; private resizeListenerAttached; private userNavigated; private scriptBanner?; private bannerTimeout?; private readonly logChannelIndex; private logViewMode; private summaryMode; private lastManualSummaryMode; private cachedRowsVersion; private cachedRows; private unsubscribeLogs?; private lastHeaderText; private snapshot; private selectedRowIndex; private logLines; private logChannelLabel; private readonly handleTerminalResize; constructor(options: PanelAppOptions); start(): Promise; dispose(): void; private handleSnapshot; private handleInput; private setLogViewMode; private moveSelection; private shouldShowLogs; private syncLogChannelState; private getLogChannels; private getSelectedChannel; private getCurrentRowTarget; private shouldAttachBannerToSelected; private getRows; private updateView; /** * pi-tui keeps a diff cache (previousWidth/previousLines). When layout changes significantly, * force a full redraw to avoid stale lines or duplicate rows. */ private invalidateTuiCache; private queueLogRefresh; private refreshLogs; private updateLogPolling; private flipLogModeOrSummary; /** * Defensive viewport clamping: if the rendered view would exceed the terminal height * (causing scroll that pushes the header off-screen even in alt-buffer mode), * trim log lines until it fits. This keeps the header pinned and prevents duplicate * sections from appearing when the terminal scrolls. */ private clampToViewport; } export {}; //# sourceMappingURL=panel-app.d.ts.map