import type { CellValueParams, Column } from '../types' export type { GridState } from './reducer' export type { GridFocusArea } from './reducer/focus' export type ColumnSortDetails = { sortStrategy: NonNullable['sortStrategy']> sortEmptyAs?: NonNullable['sortEmptyAs']> valueLookup?: NonNullable['cell']>['value'] } export type ColumnSortInfo = Record export type ColumnState = { id: string actualWidth: number data: Column parentId?: string | null childIds?: string[] isParent?: boolean } export type HeaderHierarchyGroup = { id: string level: number width: number childIds: string[] columnIds: string[] parentIds: string[] } export type HeaderHierarchy = { groups: HeaderHierarchyGroup[] levels: number } export type ColumnPreference = { id: string width: number | null hidden?: boolean } export type ColumnPreferences = { sortedIds: null | string[] hiddenIds: null | string[] entities: Record } export type StickyColumn = { id: string index: number width: number } export type StickyColumnDetails = { left: { columns: StickyColumn[] width: number } right: { columns: StickyColumn[] width: number } indexes: Set } export type ColumnAggregationMapType = { id: string fn?: | 'sum' | 'avg' | 'min' | 'max' | 'size' | ((values: Array) => number | Date) value: null | ((props: CellValueParams) => number | Date | null) }