/** * Extension chrome: the widget slots above/below the editor and the custom * footer/header overrides that extensions can install via the * ExtensionUIContext. Extracted from interactive-mode.ts. */ import { type Component, Container, type Slot, type TUI } from "@kolisachint/hoocode-tui"; import type { ExtensionWidgetOptions } from "../../core/extensions/index.js"; import type { FooterDataProvider } from "../../core/footer-data-provider.js"; import { type Theme } from "./theme/theme.js"; type DisposableComponent = Component & { dispose?(): void; }; /** The slice of the interactive mode the chrome renders into. */ export interface ExtensionChromeDeps { ui: TUI; widgetContainerAbove: Container; widgetContainerBelow: Container; headerContainer: Container; /** The built-in footer component (restored when the custom footer is removed). */ footer: Component; /** The root child the footer lives in; its occupant is what swaps. */ footerSlot: Slot; footerDataProvider: FooterDataProvider; /** The built-in header, once init() created it (undefined before that). */ getBuiltInHeader(): Component | undefined; isToolOutputExpanded(): boolean; } export declare class ExtensionChrome { private readonly deps; private widgetsAbove; private widgetsBelow; /** Custom footer set by an extension; undefined = built-in footer. */ private footerOverride; /** Custom header set by an extension; undefined = built-in header. */ private headerOverride; constructor(deps: ExtensionChromeDeps); /** The extension-installed header, if any (combined with the built-in by callers). */ get customHeader(): DisposableComponent | undefined; setWidget(key: string, content: string[] | ((tui: TUI, thm: Theme) => DisposableComponent) | undefined, options?: ExtensionWidgetOptions): void; clearWidgets(): void; /** * Render all extension widgets to the widget container. */ renderWidgets(): void; private renderWidgetContainer; /** * Set a custom footer component, or restore the built-in footer. */ setFooter(factory: ((tui: TUI, thm: Theme, footerData: FooterDataProvider) => DisposableComponent) | undefined): void; /** * Set a custom header component, or restore the built-in header. */ setHeader(factory: ((tui: TUI, thm: Theme) => DisposableComponent) | undefined): void; /** Remove custom footer/header and all widgets (session reset). */ reset(): void; } export {}; //# sourceMappingURL=extension-chrome.d.ts.map