import { type ReactNode } from "react"; import { type OpenGeniText } from "../messages/runtime.js"; export type GenieLoadingRenderProps = { startedAt: string; phase: "preparing" | "waiting"; detailsOpen: boolean; onShowDetails: () => void; }; export type GenieLoadingOptions = { /** Replace the visual while preserving SDK loading visibility and transitions. */ render?: (props: GenieLoadingRenderProps) => ReactNode; phrases?: readonly string[]; /** Native copy overrides. Omitted messages retain the default English copy. */ messages?: { status?: string; slowStatus?: string; slowText?: string; showDetails?: string; hideDetails?: string; }; /** Public adapter options; the renderer dependency's declarations stay private. */ orb?: { state?: "working" | "searching" | "solving" | "listening" | "connecting" | "weaving" | "composing" | "breathing" | "shaping"; size?: 64 | 20; speed?: number; }; }; export declare const GenieLoadingOptionsContext: import("react").Context; /** * Neutral defaults for conversations embedded in another product * (`SessionConversation`, `OpenGeniChat`), which should not carry Opengeni's * own playful copy. The Opengeni app keeps the defaults above. */ export declare const EMBEDDED_GENIE_LOADING: (t: OpenGeniText) => { readonly phrases: readonly [string]; readonly messages: { readonly showDetails: string; }; }; /** Decorative copy never substitutes for a failure or claims measurable progress. */ export declare function GenieLoading({ startedAt, phase, onShowDetails, detailsOpen, notice, }: { startedAt: string; phase?: GenieLoadingRenderProps["phase"]; onShowDetails: () => void; detailsOpen?: boolean; /** An actionable startup problem takes precedence over decorative copy. */ notice?: string | undefined; }): string | number | bigint | boolean | import("react").JSX.Element | Iterable | Promise | import("react").ReactElement> | import("react").ReactPortal | null | undefined> | null | undefined;