import type { Component } from "@threadwell/tui";
export type TranscriptViewportState = {
    pinned: boolean;
    unreadLineCount: number;
    scrollOffsetFromBottom: number;
};
export type TranscriptViewportDiagnostics = {
    childCount?: number;
};
export declare class TranscriptViewport implements Component {
    private readonly content;
    private readonly getRows;
    private readonly onStateChange?;
    private readonly getDiagnostics?;
    private scrollOffsetFromBottom;
    private unreadLineCount;
    private lastContentHeight;
    private lastEmittedState;
    private lastDiagnosticAt;
    private cachedWidth;
    private cachedContentLines;
    constructor(content: Component, getRows: () => number, onStateChange?: ((state: TranscriptViewportState) => void) | undefined, getDiagnostics?: (() => TranscriptViewportDiagnostics) | undefined);
    invalidate(): void;
    invalidateCache(): void;
    render(width: number): string[];
    scrollUp(lines?: number): void;
    scrollDown(lines?: number): void;
    pageUp(): void;
    pageDown(): void;
    followLatest(): void;
    isPinned(): boolean;
    getUnreadLineCount(): number;
    getScrollOffsetFromBottom(): number;
    private writeDiagnostics;
    private emitStateIfChanged;
}
//# sourceMappingURL=transcript-viewport.d.ts.map