/**
 * Per-source icon-name + label lookup. Keyed by `RagTableConfig.id` (the same
 * id used in `chat_source_rag_tables.rag_table_id` and on each
 * `ChatRef.sourceRepo`).
 *
 * Server-safe — lives in `src/utils/` (no `'use client'` banner) so
 * hub server-side rag-mappers + chat route handlers can call
 * `getSourceLabel()` / `getSourceIconName()` directly. The client-side
 * chat barrel re-exports from here for ergonomic client imports.
 *
 * Used by SOURCE-LEVEL chip surfaces:
 *   - The chip strip below an assistant message.
 *   - The tracking-row source glyph on inline entity cards.
 *
 * Why a small map here instead of a column on RAG_TABLE_CONFIGS:
 *   - The icon NAME is a small string; the resolver (icon-name → React
 *     component) lives in `src/components/chat/utils/icon-registry.ts`
 *     where it can stay client-only. Server-side consumers stay
 *     icon-component-free.
 *   - The mapping is intrinsic to the TABLE, not per-platform — same
 *     entry serves every (platform, source) binding.
 *
 * Per-table admin-UI bucket id (`SOURCE_CATEGORIES_BY_TABLE`) stays
 * hub-side because it depends on the hub's `RagSourceCategoryId` enum.
 */
/** Map RagTableConfig.id → icon_name (resolvable via `getIconComponent`). */
export declare const SOURCE_ICON_NAMES: Record<string, string>;
/** Lookup an icon name by RagTableConfig.id. Returns undefined when
 *  unknown so callers can decide whether to fall back to documentType
 *  or to the generic FileText glyph in the icon registry. */
export declare function getSourceIconName(tableId: string | null | undefined): string | undefined;
/**
 * Per-table display LABEL — used by SERVER-SIDE chip-strip rendering
 * (the row's "Customer Interviews (8 records)" chip below an assistant
 * message).
 *
 * The chip GRID + autocomplete DROPDOWN read their command label
 * from the DB (per-source `chat_admin_slash_commands.label`) — those
 * surfaces can carry per-source labels (e.g. "OpenFrame Commits" vs
 * "GitHub Commits" for the same table). This map is the TABLE-LEVEL
 * label used by sub-message chips where a SINGLE label per table is
 * sufficient regardless of which source's chat is rendering.
 */
export declare const SOURCE_LABELS_BY_TABLE: Record<string, string>;
/** Lookup a human-readable label by RagTableConfig.id. Falls back
 *  to the raw id (chip text becomes the table slug — visible bug
 *  that prompts an entry to land in `SOURCE_LABELS_BY_TABLE`). */
export declare function getSourceLabel(tableId: string): string;
/**
 * Default `documentType → RagTableConfig.id` reverse map.
 *
 * Mirrors the canonical lookup the hub registers via
 * `lib/config/rag-table-config.ts:tableIdForDocumentType()` — same vocabulary
 * the LLM emits inside `[card://<type>:<id>]` markers, same tableIds the
 * retrieval layer routes by, and same set of keys covered by
 * `SOURCE_ICON_NAMES` / `SOURCE_LABELS_BY_TABLE` above.
 *
 * Server-safe (no `'use client'` banner), keyed by string for forward
 * compatibility — adding a new RAG table is a single-line edit here so
 * lib-based embedders pick it up without re-publishing.
 *
 * Embedders that need a CUSTOM mapping (e.g. polymorphic types whose
 * tableId depends on per-tenant config) still pass their own
 * `tableIdForDocumentType` callback to `useEmbeddedChat`; this default
 * only applies when no callback is supplied.
 *
 * Inverse mapping audited 2026-05-24 against the hub registry — every
 * entry in `RAG_TABLE_CONFIGS` with a `documentType` is represented.
 */
export declare const DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID: Record<string, string>;
/**
 * Default `tableIdForDocumentType` resolver used by `useEmbeddedChat` when
 * the caller didn't pass an explicit callback. Returns `null` for
 * unrecognized document types so downstream `discussRef` / `displayRef`
 * still short-circuits gracefully on stale or custom types.
 */
export declare function defaultTableIdForDocumentType(documentType: string): string | null;
//# sourceMappingURL=source-icons.d.ts.map