import type { InkTheme } from "../render/ink-theme.js"; import { type EditorState } from "./editor-model.js"; export interface VisualRow { readonly start: number; readonly end: number; readonly text: string; readonly hardBreak: boolean; } export interface EditorLayout { readonly rows: readonly VisualRow[]; readonly caretRow: number; readonly caretColumn: number; readonly width: number; } export declare function layoutEditor(state: EditorState, width: number): EditorLayout; export declare function scrollTop(layout: EditorLayout, height: number, previousTop?: number): number; export interface EditorSpan { readonly start: number; readonly end: number; } export interface RenderEditorInput { readonly state: EditorState; readonly layout: EditorLayout; readonly ink: InkTheme; readonly height: number; readonly scrollTop: number; readonly showCaret: boolean; readonly placeholder: string | undefined; readonly accentSpans?: readonly EditorSpan[] | undefined; } export interface RenderedEditor { readonly rows: readonly string[]; readonly clippedAbove: boolean; readonly clippedBelow: boolean; } export declare function renderCaretRow(ink: InkTheme, text: string, caretColumn: number, showCaret: boolean): string; export declare function renderEditor(input: RenderEditorInput): RenderedEditor; export declare function moveVisual(state: EditorState, width: number, delta: number): EditorState; export declare function padRow(text: string, width: number): string;