import { type InputCoreState } from './input-core.js'; import type { AutocompleteState } from './input/autocomplete-state.js'; import type { IHistoryRing } from './input/types.js'; import type { ImageAttachment } from './input/attachments.js'; import { SpinnerController } from './input/spinner.js'; import { CaretBlinkController } from './input/caret-blink.js'; import type { StdinClaimHandle } from './input/stdin-claim.js'; import { type BandRowMeta, type CompositorInputMode, type CompositorScrollRegionGuard, type KeyInfo, type LogUpdateFn, type PickerController, type SubmissionPayload, type TerminalCompositorOptions, type SuggestEngine, type SuggestContext } from './terminal-compositor.types.js'; import * as QueuedAccess from './terminal-compositor.queued-access.js'; import type { BandReflowCache } from './terminal-compositor.band-reflow.js'; export type { CompositorInputMode, CompositorScrollRegionGuard, PickerController, SubmissionPayload, SuggestContext, SuggestEngine, TerminalCompositorOptions, }; export declare class TerminalCompositor { readonly stdout: NodeJS.WriteStream; readonly stdin: NodeJS.ReadStream; onCancel?: () => void; onSoftStop?: () => void; softStopped: boolean; postEscCoalesce: boolean; postEscPayload: SubmissionPayload | null; onBackground?: () => void; onRewindRequest?: () => void; onIdleEscape?: () => void; lastIdleEscAt: number; onPauseInterrupt?: () => void; onShiftTab?: () => void; onTaskView?: () => boolean; onOpenEditor?: () => void; readonly promptTextFn: (buffer: string) => string; readonly history?: IHistoryRing; readonly autocompleteState?: AutocompleteState; readonly formatInputBuffer?: (segment: string) => string; readonly scrollRegion?: CompositorScrollRegionGuard; anchorRow: number | undefined; declaredAnchorRow: number | undefined; onSubmit?: (payload: SubmissionPayload) => void; attachments: ImageAttachment[]; pasting: boolean; pasteStartBufferLen: number; pasteStartCursor: number; pasteRegistry: Map; clipboardInFlight: boolean; clipboardFailureMsg: string | null; inputMode: CompositorInputMode; pickerController: PickerController | null; pickerSavedMode: CompositorInputMode; armed: boolean; suspended: boolean; canceled: boolean; backgrounded: boolean; paused: boolean; wasRaw: boolean; stdinClaim: StdinClaimHandle | null; logUpdate: LogUpdateFn | null; overlay: string; input: InputCoreState; queued: boolean; pendingSubmissions: SubmissionPayload[]; readonly queuedReservations: Set; handleKeypress: ((char: string | undefined, key: KeyInfo) => void) | null; resizeUnsub: (() => void) | null; resizeImmediateUnsub: (() => void) | null; disarmRows: number; readonly spinnerController: SpinnerController; private activeToolName; readonly caretBlinkController: CaretBlinkController; repaintCount: number; pendingTrailingRepaint: boolean; burstActive: boolean; committing: boolean; hasCommitted: boolean; placementMode: import('./terminal-compositor.types.js').FramePlacementMode; committedBand: string[]; committedBandMeta: BandRowMeta[]; committedBandTopRow: number; committedBandBottomRow: number; lastMeasuredFrameTop: number; committedBandPaintedRows: number; bandReflowCache: BandReflowCache | null; lastKnownRows: number; pendingResizeErase: { top: number; bottom: number; } | null; bandGeometryStale: boolean; lifecycleStateDirty: boolean; commitInFlight: boolean; private readonly debugCompositor; readonly ghostEngine: SuggestEngine | undefined; readonly ghostGetContext: (() => SuggestContext) | undefined; activeGhost: string | null; ghostPaused: boolean; debugLog(stage: string, extra?: Record): void; constructor(opts: TerminalCompositorOptions); isArmed(): boolean; setAnchorRow(row: number | undefined): void; suspendInput(): void; resumeInput(): void; setOnSubmit(handler: ((payload: SubmissionPayload) => void) | null): void; setOnCancel(handler: (() => void) | null): void; getOnCancel(): (() => void) | undefined; setOnRewindRequest(handler: (() => void) | null): void; setOnIdleEscape(handler: (() => void) | null): void; setOnOpenEditor(handler: (() => void) | null): void; enterPickerMode(controller: PickerController): void; exitPickerMode(): void; repaintPicker(): void; terminalRows(): number; setInputMode(mode: CompositorInputMode): void; getInputMode(): CompositorInputMode; arm(): Promise; endTurn(): void; disarm(): void; setOverlay(text: string): void; setSpinner(config: { enabled: boolean; rotateVerbEveryMs?: number; }): void; setActiveToolName(toolName: string | undefined): void; commitAbove(text: string): void; clearCommittedBand(): void; flushResizeGhostErase(): void; resetCommittedBand(): void; repositionCommittedBand(desiredTopRow: number, preRenderFrameTop: number, targetBottomRow: number): void; getBuffer(): { text: string; queued: boolean; }; getPendingCount(): number; peekQueuedText(): QueuedAccess.QueuedSnapshot | undefined; reserveQueued(snapshot: QueuedAccess.QueuedSnapshot): void; releaseQueued(snapshot: QueuedAccess.QueuedSnapshot): void; dropQueued(snapshot: QueuedAccess.QueuedSnapshot): number; getAttachments(): ImageAttachment[]; get caretVisible(): boolean; renderInputLine(): string; updateAutocomplete(): void; updateGhost(): void; primePromptGhost(): void; dismissPromptGhost(): boolean; renderDropdownRows(): string[]; renderHintRow(): string | null; repaint(): void; scheduleRepaint(): void; flushPendingRepaint(): void; clearScreen(): void; resetState(): void; applyEdit(next: InputCoreState): boolean; prefillInput(text: string): void; applyDropdownSelection(): boolean; applyGhostAccept(): boolean; applyGhostWordAccept(): boolean; }