/**
* 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;