import type { TerminalData } from "./ffi.js"; export interface OpenTuiCapturedRgba { r: number; g: number; b: number; a: number; } export interface OpenTuiCapturedSpan { text: string; fg: OpenTuiCapturedRgba; bg: OpenTuiCapturedRgba; attributes: number; width: number; } export interface OpenTuiCapturedLine { spans: OpenTuiCapturedSpan[]; } export interface OpenTuiCapturedFrame { cols: number; rows: number; cursor: [number, number]; lines: OpenTuiCapturedLine[]; } /** Theme colors for rendering */ export interface ImageTheme { /** Background color as hex string (e.g. "#1a1b26") */ background: string; /** Default text color as hex string (e.g. "#c0caf5") */ text: string; } /** Options for rendering a single image */ export interface RenderImageOptions { /** Image width in pixels. If not set, auto-calculated from terminal cols */ width?: number; /** Image height in pixels. If not set, auto-calculated from content */ height?: number; /** Font size in pixels (default: 14) */ fontSize?: number; /** Line height multiplier (default: 1.5) */ lineHeight?: number; /** Horizontal padding in pixels (default: 0) */ paddingX?: number; /** Vertical padding in pixels (default: 0) */ paddingY?: number; /** Theme colors (default: tokyo night) */ theme?: ImageTheme; /** Path to a custom TTF/OTF font file. If not set, uses bundled JetBrains Mono Nerd */ fontPath?: string; /** Device pixel ratio for HiDPI/retina rendering (default: 1) */ devicePixelRatio?: number; /** Color of the padding/frame area. Defaults to theme.background. * Only visible when paddingX or paddingY > 0. */ frameColor?: string; } /** Options for paginated rendering */ export interface RenderPaginatedOptions extends RenderImageOptions { /** Maximum lines per image before splitting (default: 70) */ maxLinesPerImage?: number; } /** Result from paginated render */ export interface PaginatedRenderResult { /** Array of PNG image buffers */ images: Buffer[]; /** Paths to temp files where images were saved */ paths: string[]; /** Total number of content lines */ totalLines: number; /** Number of images generated */ imageCount: number; } /** * Render TerminalData to deterministic SVG. * Useful for debugging and for callers that want vector terminal output. */ export declare function renderTerminalToSvg(data: TerminalData, options?: RenderImageOptions): string; /** * Render an OpenTUI CapturedFrame to deterministic SVG. * This skips ANSI parsing and Ghostty, for apps that already have OpenTUI buffer spans. */ export declare function renderOpenTuiToSvg(frame: OpenTuiCapturedFrame, options?: RenderImageOptions): string; /** * Render TerminalData to a PNG image buffer. * Height and width are auto-calculated from content if not specified. */ export declare function renderTerminalToImage(data: TerminalData, options?: RenderImageOptions): Promise; /** Render an OpenTUI CapturedFrame to a PNG image buffer. */ export declare function renderOpenTuiToImage(frame: OpenTuiCapturedFrame, options?: RenderImageOptions): Promise; /** * Render TerminalData to multiple paginated PNG images. * Splits content when exceeding maxLinesPerImage. * Saves images to temp directory and returns paths. */ export declare function renderTerminalToPaginatedImages(data: TerminalData, options?: RenderPaginatedOptions): Promise; /** Render an OpenTUI CapturedFrame to multiple paginated PNG images. */ export declare function renderOpenTuiToPaginatedImages(frame: OpenTuiCapturedFrame, options?: RenderPaginatedOptions): Promise; //# sourceMappingURL=image.d.ts.map