/**
 * EmbeddableChat — lib-portable port of the hub's `<GlobalAskAI>` component.
 *
 * Drops every hub-only import (auth-provider, useNavLink, currentPlatform,
 * tableIdForDocumentType, rag-table-config, etc.) and routes ALL navigation
 * + identity decisions through `useRequiredChatRuntime()`. Host wires the
 * runtime once at root (HubRuntimeProvider in the hub, custom provider in
 * embedders); this component reads from it everywhere.
 *
 * Diff summary vs hub original:
 *   - `useAuth()` → `useRequiredChatRuntime().user` (greeting + identity only;
 *     the requireAuth render gate is dropped — hub's wrapper handles it).
 *   - `currentPlatform()` → `useRequiredChatRuntime().source`.
 *   - `useNavLink`/`NavLinkAnchor` → chip-anchor rewrite via
 *     `handleChatNavClick` + lib's `NavLinkAnchorViaRuntime`.
 *   - `useDocChat(source)` → `useSseChatAdapter()` (reads source from runtime).
 *   - `tableIdForDocumentType` import deleted (dead per audit).
 *   - `renderChatInlineEntityCard` imported from lib's entity-cards barrel.
 *   - `useCloseOnNavigation` signature is `(close, pathname)` — pass `null`
 *     because lib has no `usePathname()` and embedders own that decision.
 *   - All other hub utilities (chat-attachment-bar, slash-commands fetcher,
 *     icon registry, chip-styles, click-utils, etc.) re-resolved against
 *     the equivalent lib modules.
 *
 * Public surface — `<EmbeddableChat />` taking the same prop bundle the hub
 * shell passes (minus `requireAuth`, which the hub's wrapper handles), plus
 * an optional `extras` opt-in for the chat-card dispatch helpers that need
 * host-supplied builders (program configs, product-release prop builder).
 */
import React from 'react';
import { type MingoWelcomeProps } from './mingo-welcome';
import { type GuideWelcomeProps } from './guide-welcome';
import type { ChatCardDispatchExtras } from './entity-cards/dispatch';
import { type ChatMode, type UseUnifiedChatModes } from './hooks/use-unified-chat';
import type { UnifiedChatState } from './types/unified-chat-state.types';
import type { FetchDialogsParams, FetchDialogsResult } from './hooks/use-nats-chat-adapter';
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;
    /**
     * Pre-built Mingo-mode state, supplied by the host instead of letting the
     * built-in NATS adapter own it. When provided, the panel renders Mingo mode
     * from this object and opens no subscription of its own — the host keeps
     * chat data + streaming in its own store/cache so it survives the panel
     * unmounting (no `keepMounted` needed). The host should then NOT pass
     * `modes.mingo` (Guide-mode wiring via `modes.guide` is unaffected).
     */
    mingoState?: UnifiedChatState;
    /**
     * Dialog-management capabilities for injected Mingo mode (`mingoState`).
     *
     * When the host injects `mingoState`, it doesn't pass `modes.mingo` (that
     * would re-activate the idle built-in adapter), so the rename/archive/
     * restore/archive-page affordances can't read their capability flags off the
     * callback config. Supply them here instead. `canRename`/`canArchive` default
     * to `true` when `mingoState` is set; the archive page + restore are shown
     * only when their callbacks are provided. Ignored unless `mingoState` is set.
     */
    mingoDialogCapabilities?: {
        canRename?: boolean;
        canArchive?: boolean;
        fetchArchivedDialogs?: (params: FetchDialogsParams) => Promise<FetchDialogsResult>;
        unarchiveDialog?: (id: string) => Promise<void>;
    };
    /**
     * 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;
    /**
     * Wrapper shell around the chat body.
     *   - `'drawer'` (default): wraps in a body-level Radix Drawer (slide-in
     *     overlay from the right) — the original MPH / standalone behaviour.
     *   - `'none'`: no shell. Renders only the chat body so the consumer can
     *     host it inside their own container (e.g. `AppLayoutDrawerContent`).
     *     The internal "Ask AI" trigger and iOS body scroll-lock are also
     *     suppressed — those are Drawer-shell concerns. The consumer is
     *     responsible for mount/unmount and for opening/closing via the
     *     `open` / `onOpenChange` props (which the in-body close button still
     *     drives).
     */
    shell?: 'drawer' | 'none';
    /**
     * Content overrides for the default (Mingo-mode) empty state
     * (`<MingoWelcome>`): greeting `title`/`subtitle`, the capability
     * `featureCards` grid, the `promo` card, and extra `quickActions` chips.
     * Each field falls back to the built-in OpenFrame defaults, so the kit
     * stays platform-agnostic. `userName`, `onStartGuideChat` and
     * `hasExistingChats` are wired internally and are NOT overridable here.
     */
    mingoWelcome?: Omit<MingoWelcomeProps, 'userName' | 'onStartGuideChat' | 'hasExistingChats'>;
    /**
     * Content overrides for the Guide-mode empty state (`<GuideWelcome>`):
     * greeting `title`/`subtitle` and the `quickActions` chips. Each field falls
     * back to the built-in OpenFrame defaults. `onQuickAction` and the
     * slash-command list `children` are wired internally and not overridable.
     */
    guideWelcome?: Omit<GuideWelcomeProps, 'onQuickAction' | 'children'>;
}
/**
 * EmbeddableChat — the floating "Ask AI" button + Mingo chat panel.
 * Lib-portable port of the hub's `<GlobalAskAI>`.
 */
export declare function EmbeddableChat(props: EmbeddableChatProps): React.JSX.Element;
//# sourceMappingURL=embeddable-chat.d.ts.map