/** * Raw tool output as choices — the one shape Select, Radio and Combobox share. * The model passes a tool's array straight in and names the two fields; nothing * reshapes on the way. */ export type KitOption = string | number | Record; export interface KitChoice { value: string; label: string; /** Shown but not selectable. */ disabled?: boolean; /** The heading this choice sits under. */ group?: string; } /** A run of choices under one heading — the unnamed run is the ungrouped ones. */ export interface KitRun { group?: string; items: T[]; } /** W3 — fail SOFT on missing data: a failed query resolves to undefined. */ export declare function choices(options: KitOption[] | undefined, labelField?: string, valueField?: string): KitChoice[]; /** Choices bucketed by their own `group`, each run where its first member stood. * An ungrouped list comes back as ONE unnamed run, so every component renders * it exactly as it did before groups existed. */ export declare function grouped(items: T[]): KitRun[];