/** * App — top-level Ink shell. Renders the banner + project line, then the * result body via the shared view-model (`resultToView` → `renderToInk`). * * There is no per-result-type rendering here anymore: every CommandResult * is expressed once as a ViewNode by `resultToView`, and the same node is * rendered to plain text on the non-TTY path (bootstrap/render.ts). This * shell owns only the chrome the plain-text path intentionally omits — the * banner and the `ℹ Project:` line. */ import React from 'react'; import type { CommandResult } from '@opensip-cli/contracts'; import type { UiContext } from '@opensip-cli/core'; /** Project location for the shell's `ℹ Project:` line. */ export interface ProjectHeaderProps { readonly root: string; readonly walkedUp: number; } export interface AppProps { readonly result: CommandResult; /** Omitted for project-agnostic commands (init/configure/completion) and scopeless error paths. */ readonly projectHeader?: ProjectHeaderProps; /** Presentation settings (banner size + version). Omitted on scopeless paths. */ readonly ui?: UiContext; } /** * App shell — the single source of truth for banner visibility. Renders * the banner once for every human-facing command, then the result body * through the shared view-model. */ export declare function App({ result, projectHeader, ui }: AppProps): React.ReactElement; //# sourceMappingURL=App.d.ts.map