import { type ReactNode } from 'react'; import type { TFunction } from 'i18next'; import { type PracticeAnamnesisConfig } from './anamnesis-config'; import type { AnamnesisRecord, NumericParameterDef, OpenAnamnesisNote, Visit } from './anamnesis-types'; export interface AnamnesisEvolutionProps { record: AnamnesisRecord; t: TFunction; editable?: boolean; onCellChange?: (visit: Visit, def: NumericParameterDef, value: number | null) => void; /** Draw the grid's own border/surface. `false` when this sits inside a card. */ framed?: boolean; /** The practice's configured vocabulary. Omitted = the kit-seeded default. */ config?: PracticeAnamnesisConfig; /** One table per anamnesis type: visits grouped by `sourceLabel`, each * group with its own header, picker and matrix. Default false — every * visit in one grid, as before. */ partitionBySource?: boolean; /** Give each per-module block its own elevated card. The HOST decides, * because only the host knows what surface the trend sits on: a surface * that already cards the trend would otherwise nest a card in a card. * Only read under `partitionBySource` — the single whole-record block is * never carded here. */ cardBlocks?: boolean; /** Mount with this visit selection instead of every visit. Demo/story hook * only — Chromatic skips play functions, so a click-narrowed grid is never * snapshotted. Under `partitionBySource` each block keeps the ids it holds * and ignores the rest. */ defaultVisitIds?: readonly string[]; /** Mount with these events already drawn. Demo/story hook only — the * arrival state picks none, and Chromatic skips play functions. */ defaultEventIds?: readonly string[]; /** The picker's live selection, whenever it changes (and once on mount). * A host's export control needs to know which visit columns are on screen * — the file must be the view that was asked for. Under * `partitionBySource` it is the union of every block's columns. */ onVisitSelectionChange?: (visitIds: readonly string[]) => void; /** The host's side panel. Wired ⇒ a visit's note trigger routes there * instead of opening a popover, and turning an event chip on navigates the * panel to that event. Omitted ⇒ the note opens in place and the chip only * draws its line, which is all a standalone surface can do. */ onOpenNote?: OpenAnamnesisNote; /** Rendered at the inline end of the trend's toolbar row — the host's * export control. Under `partitionBySource` it sits above the blocks, once, * for the whole trend. */ exportSlot?: ReactNode; } export declare function AnamnesisEvolution({ record, t, editable, config, partitionBySource, cardBlocks, onVisitSelectionChange, exportSlot, ...blockProps }: AnamnesisEvolutionProps): import("react/jsx-runtime").JSX.Element; /** Mirror of the trend's shown columns for a host's export control. Bails * on an identical set: the child reports on every mount, and a fresh array * each time would re-render the host. */ export declare function useShownVisitIds(): [ readonly string[], (ids: readonly string[]) => void ]; //# sourceMappingURL=anamnesis-evolution.d.ts.map