import type { ChatCardDispatchExtras } from './entity-cards/dispatch';
import { type ChatMode, type UseUnifiedChatModes } from './hooks/use-unified-chat';
export interface EmbeddableChatProps {
    /** Base route for in-app doc chip nav (e.g. `/knowledge-base`). When
     *  omitted, defaults are derived from `runtime.source`. */
    baseRoute?: string;
    /** When the embedder doesn't host a `[...path]` route to render markdown
     *  chips against, set this to a platform that does. Chips with
     *  `externalUrl: null` resolve to `getBaseUrl(chipBasePlatform) +
     *  '/knowledge-base/' + path` and open in a new tab. */
    chipBasePlatform?: string;
    /** DB-driven list of enabled RAG table ids (chip catalog filter).
     *  Prefetched server-side by the embedder's wrapper. Empty/null → no
     *  empty-state chips render. */
    enabledRagTableIds?: ReadonlyArray<string> | null;
    /** DB-backed empty-state greeting. Falls back to a generic greeting. */
    emptyStateGreeting?: string | null;
    /** DB-backed starter prompts (chips below the greeting). */
    suggestedQueries?: ReadonlyArray<string> | null;
    /** Controlled-mode open state. When provided, `onOpenChange` MUST also
     *  be provided. Uncontrolled mode is the default. */
    open?: boolean;
    /** Controlled-mode change handler. Required when `open` is provided. */
    onOpenChange?: (open: boolean) => void;
    /** Initial open state for uncontrolled mode. Ignored if `open` is set. */
    defaultOpen?: boolean;
    /** Render the built-in floating "Ask AI" trigger. Defaults to `true`. */
    showInternalTrigger?: boolean;
    /** Optional builders for chat-card types whose props live in hub-land
     *  (programs + product_release). Forwarded straight to
     *  `renderChatInlineEntityCard`. */
    extras?: ChatCardDispatchExtras;
    /** Optional callback used by `useSseChatAdapter`'s `displayRef` /
     *  `discussRef` flow to translate an LLM document type into the
     *  registry table id for entity-id-filtered retrieval.
     *
     *  Legacy top-level form. The new shape is `modes.guide.tableIdForDocumentType`.
     *  When both are present, `modes` wins. */
    tableIdForDocumentType?: (documentType: string) => string | null;
    /**
     * Per-mode transport configuration. When omitted, the component
     * falls back to legacy guide-only behaviour synthesised from the
     * top-level `tableIdForDocumentType` prop — multi-platform-hub and
     * any other existing consumer keep working with zero changes.
     *
     * When provided, this is the canonical way to wire chat transports:
     *
     *   - `modes.guide`  → SSE/Guide adapter options (RAG retrieval, hub).
     *   - `modes.mingo`  → NATS/Mingo adapter config  (agent, openframe).
     *
     * Configuring both modes makes the in-panel mode toggle appear so
     * the user can flip between Guide and Mingo without losing either
     * history (each mode keeps its own local thread).
     */
    modes?: UseUnifiedChatModes;
    /**
     * Controlled active-mode. When provided, `onActiveModeChange` MUST
     * also be provided. For uncontrolled use see `defaultActiveMode`.
     */
    activeMode?: ChatMode;
    /** Controlled active-mode change handler. Required when `activeMode` is set. */
    onActiveModeChange?: (mode: ChatMode) => void;
    /**
     * Initial active mode for uncontrolled mode. Ignored when `activeMode`
     * is set. Defaults to `'guide'` when `modes.guide` is configured,
     * else `'mingo'`.
     */
    defaultActiveMode?: ChatMode;
}
/**
 * EmbeddableChat — the floating "Ask AI" button + Mingo chat panel.
 * Lib-portable port of the hub's `<GlobalAskAI>`.
 */
export declare function EmbeddableChat(props: EmbeddableChatProps): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=embeddable-chat.d.ts.map