import { type ImageAttachment } from './input/attachments.js'; import type { SpinnerController } from './input/spinner.js'; import type { BandRowMeta, CompositorInputMode, CompositorScrollRegionGuard, FramePlacementMode, LogUpdateFn, PickerController } from './terminal-compositor.types.js'; import { type BandReflowCache } from './terminal-compositor.band-reflow.js'; export interface FrameHost { flushResizeGhostErase(): void; renderInputLine(): string; renderDropdownRows(): string[]; renderHintRow(): string | null; repositionCommittedBand(desiredTopRow: number, preRenderFrameTop: number, targetBottomRow: number): void; clearCommittedBand(): void; debugLog(stage: string, extra?: Record): void; armed: boolean; committing: boolean; suspended: boolean; logUpdate: LogUpdateFn | null; overlay: string; inputMode: CompositorInputMode; pickerController: PickerController | null; readonly spinnerController: SpinnerController; attachments: ImageAttachment[]; clipboardFailureMsg: string | null; committedBand: string[]; committedBandMeta: BandRowMeta[]; committedBandTopRow: number; committedBandBottomRow: number; lastMeasuredFrameTop: number; committedBandPaintedRows: number; bandReflowCache: BandReflowCache | null; hasCommitted: boolean; anchorRow: number | undefined; placementMode: FramePlacementMode; lastKnownRows: number; commitInFlight: boolean; readonly scrollRegion?: CompositorScrollRegionGuard; readonly stdout: NodeJS.WriteStream; } export declare function repaint(self: FrameHost): void;