import { type Context, type ReactNode } from 'react';
import type { TranscriptUiBlock } from '../transcript/model.js';
/** Draws a server-pushed component block. */
export type AmbientRenderUi = (block: TranscriptUiBlock) => ReactNode;
/**
 * A context stored on `globalThis` under a registered symbol. Each entry point (`.`, `/genui`,
 * `/genui/json-render`) is its own bundle with its own copy of every module, so a context one entry
 * provides and another reads has to be found by key, not by module identity.
 */
export declare function sharedContext<T>(key: string): Context<T | null>;
/**
 * How pushed components are drawn when no `renderUi` is passed — set by `<GenuiProvider>` (the
 * `/genui` subpath) and read by `MessageItem`.
 */
export declare const AmbientRenderUiContext: Context<AmbientRenderUi | null>;
/**
 * The renderer `<GenuiProvider>` installed for pushed components, or `null` outside one. For a
 * custom transcript built on `useTranscriptItem`: draw a `ui` block with it and you get what
 * `MessageItem` draws.
 */
export declare function useAmbientRenderUi(): AmbientRenderUi | null;
//# sourceMappingURL=ambient-ui.d.ts.map