/**
 * The ui-bridge barrel.
 *
 * One import site for everything a host needs to put the new runtime on screen:
 * the {@link InteractiveApp} component, the adapter projections that feed it
 * ({@link toAgentMessages} and friends), and {@link mountInteractive} — the
 * convenience that renders the app with Ink and resolves once the user leaves.
 *
 * The barrel is plain `.ts` (no JSX), so the interactive element is built with
 * `createElement` from the react-host shim rather than JSX syntax; the component
 * itself lives in `InteractiveApp.tsx`.
 */
import type { Agent } from "../runtime";
export { InteractiveApp } from "./InteractiveApp";
export type { InteractiveAppOptions } from "./InteractiveApp";
export { toAgentMessages, turnToAgentMessages, replyToAssistantMessage, gatewayUsageToMl, liveUsage, type LiveUsage, } from "./adapter";
/** The options {@link mountInteractive} needs beyond the agent itself. */
export interface MountOptions {
    /** The model id this run is bound to (rendered in the Footer). */
    readonly model: string;
    /** The working directory shown in the Footer's cwd line; defaults to cwd. */
    readonly cwd?: string;
}
/**
 * Mount the interactive Ink app over a live runtime {@link Agent} and resolve
 * the process exit code once the user leaves.
 *
 * Ink owns the screen for the lifetime of the call: `render` paints the
 * {@link InteractiveApp}, the component drives the agent in response to input,
 * and `onExit` unmounts the tree. `waitUntilExit` resolves when the tree
 * unmounts (an explicit exit, or Ctrl-C / Esc inside the app). Ctrl-C is handled
 * inside the component, so Ink's own `exitOnCtrlC` is disabled to keep teardown
 * in one place. The exit code is always `0` — a clean interactive leave is a
 * success; run-level failures surface as faulted snapshots in the UI, not as a
 * non-zero process code.
 */
export declare function mountInteractive(agent: Agent, opts: MountOptions): Promise<number>;
