import { Logger, LogLevel } from '../../public/node/output.js'; import React from 'react'; import { Key, RenderOptions } from 'ink'; import { EventEmitter } from 'events'; /** * Signal that the current Ink tree is done. Must be called within an * InkLifecycleRoot — throws if the provider is missing so lifecycle * bugs surface immediately instead of silently hanging. */ export declare function useComplete(): (error?: Error) => void; /** * Root wrapper for Ink trees. Owns the single `exit()` call site — children * signal completion via `useComplete()`, which sets state here. The `useEffect` * fires post-render, guaranteeing all batched state updates have been flushed * before the tree is torn down. */ export declare function InkLifecycleRoot({ children }: { children: React.ReactNode; }): React.JSX.Element; interface RenderOnceOptions { logLevel?: LogLevel; logger?: Logger; renderOptions?: RenderOptions; } export declare function renderOnce(element: JSX.Element, { logLevel, renderOptions }: RenderOnceOptions): string | undefined; export declare function render(element: JSX.Element, options?: RenderOptions): Promise; export declare class Stdout extends EventEmitter { columns: number; rows: number; readonly frames: string[]; private _lastFrame?; constructor(options: { columns?: number; rows?: number; }); write: (frame: string) => void; lastFrame: () => string | undefined; } export declare function handleCtrlC(input: string, key: Key, exit?: () => void): void; export {};