import type { TerminalRegion } from '../region.js'; /** * Interface for complex components that need measurement logic * Simple strings don't need this - flex measures them directly */ export interface Renderable { getPreferredWidth(): number; getMinWidth(): number; getMaxWidth(): number; getHeight(): number; render(x: number, y: number, width: number): void; readonly flexGrow: number; readonly flexShrink: number; } /** * A flex child can be a string, Renderable, array of either (for functional components), * or a descriptor (ColDescriptor, FlexDescriptor) */ export type FlexChild = string | Renderable | Array; /** * Helper to strip ANSI codes for width measurement */ export declare function stripAnsiCodes(text: string): string; /** * Measure a string (strips ANSI codes) */ export declare function measureString(text: string): number; /** * Flatten an array of flex children, handling nested arrays */ export declare function flattenChildren(children: FlexChild[]): Array; /** * Convert a flex child to a Renderable (strings become simple renderables) */ export declare function toRenderable(region: TerminalRegion, child: string | Renderable, options?: { flexGrow?: number; flexShrink?: number; minWidth?: number; maxWidth?: number; overflow?: 'none' | 'ellipsis-end' | 'ellipsis-start' | 'ellipsis-middle' | 'wrap'; }): Renderable; //# sourceMappingURL=renderable.d.ts.map