/** * @name ui/tool-card-registry * @description Polymorphic card dispatcher: maps tool name + real data to the * correct card builder. Each tool category has an adapter that transforms * tool result data into CardBuilder calls. * * Usage: * const registry = new ToolCardRegistry(version, wallet); * const html = registry.render('sol_get_balance', { sol: 2.5, usdc: 15, ... }); * * @module ui/tool-card-registry */ /** Tool result data — a loosely-typed record that adapters transform. */ export type ToolResultData = Record; /** Adapter function: takes tool name + result data + meta, returns card HTML. */ export type ToolCardAdapter = (data: ToolResultData, meta: CardMeta) => string; export interface CardMeta { readonly toolName: string; readonly version: string; readonly wallet: string; } export type ToolCategory = 'balance' | 'position' | 'pricing' | 'transfer' | 'swap' | 'nft' | 'magicblock' | 'bridge' | 'agent' | 'memory' | 'audit' | 'premium' | 'chart' | 'staking' | 'strategy' | 'stream' | 'generic-read' | 'generic-write' | 'generic-build'; export type ToolCardCoverageKind = 'specialized' | 'generic-read' | 'generic-write' | 'generic-build'; export interface ToolCardCoverageEntry { readonly toolName: string; readonly coverage: ToolCardCoverageKind; readonly specialized: boolean; } export interface ToolCardCoverageReport { readonly totalTools: number; readonly specializedTools: number; readonly genericTools: number; readonly byCoverage: Readonly>; readonly entries: readonly ToolCardCoverageEntry[]; } export declare function resolveGenericCardCoverage(toolName: string): Exclude; export declare function classifyToolCardCoverage(toolName: string): ToolCardCoverageKind; export declare function buildToolCardCoverageReport(toolNames: readonly string[]): ToolCardCoverageReport; export declare class ToolCardRegistry { private readonly version; private readonly wallet; constructor(version: string, wallet: string); /** * Render a card for a specific tool with real result data. * @param toolName - Tool name (e.g. 'sol_get_balance') * @param data - Real tool result data */ render(toolName: string, data?: ToolResultData): string; /** * Render cards for multiple tools with their data. */ renderMany(entries: Array<{ toolName: string; data?: ToolResultData; }>): string[]; /** * List all tools that have specific (non-generic) adapters. */ specializedTools(): string[]; } //# sourceMappingURL=tool-card-registry.d.ts.map