/** @jsx createElement */ import type { Hooks, RecordWithObjectID, Renderer } from '../../../types'; import type { ClientSideToolComponentProps } from '../types'; export type GroupedResultsTranslations = { /** * Caption shown under the groups while the tool is still streaming its * input. Defaults to "Curating results…". */ streamingLabel: string; }; /** * An item handed to a group's carousel: the record (hydrated from the search * tool) augmented with the display tool's own result object under a separate * `__groupedToolResult` namespace, so the tool's curation fields (e.g. `why`) * can never collide with record fields in either direction. */ export type GroupedResultsItem = RecordWithObjectID & { __groupedToolResult: RecordWithObjectID; }; export type GroupedResultsGroupCarouselProps = { items: Array>; sendEvent: ClientSideToolComponentProps['context']['sendEvent']; }; export type GroupedResultsToolProps = { toolProps: ClientSideToolComponentProps; /** * Renders a single group's carousel. The framework wrapper owns the * carousel implementation (and its internal hooks/refs) — ui-components * just lays out the intro, per-group headers, and the streaming caption. */ groupCarouselComponent: (props: GroupedResultsGroupCarouselProps) => JSX.Element; translations?: Partial; }; export declare function createGroupedResultsToolComponent({ createElement, Fragment, useEffect, useRef, }: Renderer & Pick): (userProps: GroupedResultsToolProps) => JSX.Element;