import type { Cell, Style } from "../types.js"; import type { WidthProvider } from "./width.js"; export declare function normalizeStyle(style?: Style): Style; export declare function createCell(ch: string, style?: Style, widthProvider?: WidthProvider): Cell; export declare function createBlankCell(style?: Style): Cell; export declare function createContinuationCell(style?: Style): Cell; export type CellFingerprintFn = (ch: string, style: Style) => number; export interface GridBuffer { cols: number; rows: number; grid: Cell[][]; gridStart: number; dirtyBits: Uint8Array; dirtyCount: number; dirtyMin: number; dirtyMax: number; dirtyAll: boolean; cursorX: number; cursorY: number; cursorVisible: boolean; cursorStyle: Style; scrollback: Cell[][]; scrollbackLimit: number; rowPool: Cell[][]; soaFingerprints: Uint32Array | null; fingerprintFn: CellFingerprintFn | null; widthProvider: WidthProvider; } export declare function createGridBuffer(cols: number, rows: number, options?: Readonly<{ widthProvider?: WidthProvider; }>): GridBuffer; export declare function clamp(n: number, min: number, max: number): number; /** * Register or clear a fingerprint function on the buffer. This enables SoA fingerprint * pre-computation: cell writes will update fingerprints inline, and the renderer * can read them via getRowFingerprints() instead of per-cell hash computation. */ export declare function setFingerprintFn(buffer: GridBuffer, fn: CellFingerprintFn | null): void; /** * Get pre-computed fingerprints for a logical row as a TypedArray slice. * Returns null if fingerprinting is not enabled on this buffer. */ export declare function getRowFingerprints(buffer: GridBuffer, y: number): Uint32Array | null; export declare function getBufferRow(buffer: GridBuffer, y: number): Cell[]; export declare function getBufferCell(buffer: GridBuffer, x: number, y: number): Cell; export declare function markAllDirty(buffer: GridBuffer): void; export declare function markDirty(buffer: GridBuffer, y: number): void; export declare function putCell(buffer: GridBuffer, x: number, y: number, ch: string, style?: Style): void; export declare function fillRect(buffer: GridBuffer, x: number, y: number, w: number, h: number, ch?: string, style?: Style): void; export declare function clearRect(buffer: GridBuffer, x?: number, y?: number, w?: number, h?: number): void; export declare function scrollBuffer(buffer: GridBuffer, lines: number): void; export declare function scrollBufferRegion(buffer: GridBuffer, startY: number, endY: number, lines: number): readonly number[]; export declare function resizeBuffer(buffer: GridBuffer, cols: number, rows: number): void; export declare function snapshotText(buffer: GridBuffer): string[];