import { type ReactNode } from "react"; import type { AppApiHost } from "./app-api.js"; import type { AppSurfaces } from "./app-surfaces.js"; import type { MessageContextPill, MessageContextStore } from "./message-context.js"; import type { NavigationHost } from "./navigation.js"; export type AppHost = Readonly<{ navigation: NavigationHost; api: AppApiHost; /** Optional surfaces; an absent one renders its plain fallback or nothing. */ surfaces?: Partial | undefined; /** * Model context the page adds to each new chat and message (where the person * is writing from, such as an open workbook, and what they selected there). * Labeled items show as pills above the composer. Context, never * instructions. */ messageContext?: MessageContextStore | undefined; }>; /** * Sets the host of the page that owns the document, before the session UI * renders. Parts merge into what is set (tests set only the parts they use). */ export declare function configurePageAppHost(host: Partial): void; export declare function AppHostProvider(props: { host: AppHost; children?: ReactNode; }): import("react").JSX.Element; /** This app's host: the embed's own, or the page's. */ export declare function useAppHost(): Partial; /** Whether this app is embedded in a page it does not own. */ export declare function useEmbedded(): boolean; /** Reads the host's per-message model context at send time, if it supplies one. */ export declare function useHostMessageContext(): (() => string | undefined) | undefined; /** The host's context pills for the composer, with the controls to leave one out. */ export declare function useMessageContextPills(): { pills: readonly MessageContextPill[]; exclude: (id: string) => void; include: (id: string) => void; };