import { BodyRow } from '../bodyRows.js'; import type { DataLabel } from '../types/Label.js'; import type { NewTablePropSet, TablePlugin } from '../types/TablePlugin.js'; import { type ArraySetStore } from '../utils/store.js'; export interface GroupByConfig { initialGroupByIds?: string[]; disableMultiGroup?: boolean; isMultiGroupEvent?: (event: Event) => boolean; } export interface GroupByState { groupByIds: ArraySetStore; } export interface GroupByColumnOptions { disable?: boolean; getAggregateValue?: (values: GroupOn[]) => Aggregate; getGroupOn?: (value: Value) => GroupOn; cell?: DataLabel; } export type GroupByPropSet = NewTablePropSet<{ 'thead.tr.th': { grouped: boolean; toggle: (event: Event) => void; clear: () => void; disabled: boolean; }; 'tbody.tr.td': { repeated: boolean; aggregated: boolean; grouped: boolean; }; }>; interface GetGroupedRowsProps { repeatCellIds: Record; aggregateCellIds: Record; groupCellIds: Record; allGroupByIds: string[]; } export declare const getGroupedRows: , GroupOn extends string | number = any>(rows: Row[], groupByIds: string[], columnOptions: Record>, { repeatCellIds, aggregateCellIds, groupCellIds, allGroupByIds }: GetGroupedRowsProps) => Row[]; export declare const addGroupBy: ({ initialGroupByIds, disableMultiGroup, isMultiGroupEvent, }?: GroupByConfig) => TablePlugin, GroupByPropSet>; export {};