/** * Screen codegen — generates React/Ink components from KERN `screen` nodes. * * KERN syntax: * screen name=MyComponent target=ink * prop name=title type=string * prop name=count type=number optional=true * state name=value type=string initial="''" * state name=open type=boolean initial="false" * effect <<< * // useEffect body * >>> * render <<< * {title} * >>> * * Generates: * import React, { useState, useEffect, useCallback, useRef } from 'react'; * import { Box, Text, useInput, useApp } from 'ink'; * * export function MyComponent({ title, count }: { title: string; count?: number }) { * const [value, setValue] = useState(''); * const [open, setOpen] = useState(false); * useEffect(() => { ... }, []); * return ({title}); * } */ import type { IRNode } from '../types.js'; export declare function generateScreen(node: IRNode): string[]; /** * Emit the render body — return-statement + JSX — into `lines`. Exported so * target-specific transpilers (Ink, Vue, etc.) can delegate the composed-mode * walk (wrapper / each / conditional / local) to a single source of truth * rather than re-implementing it per target. * * Terminal target uses this for screens where the author supplied either * `render wrapper="..."` or a JSX-composable child (each, conditional) or * a `local` binding — all three trigger composed mode. */ export declare function emitRender(renderNode: IRNode | undefined, lines: string[]): void;