import type { DisplayBodyCell } from './bodyCells.js'; import type { TableState } from './createViewModel.js'; import type { DisplayLabel, HeaderLabel } from './types/Label.js'; import type { DataLabel } from './types/Label.js'; import type { AnyPlugins, PluginColumnConfigs } from './types/TablePlugin.js'; export interface ColumnInit { header: HeaderLabel; footer?: HeaderLabel; height: number; plugins?: PluginColumnConfigs; } export declare class Column { header: HeaderLabel; footer?: HeaderLabel; height: number; plugins?: PluginColumnConfigs; constructor({ header, footer, height, plugins }: ColumnInit); isFlat(): this is FlatColumn; isData(): this is DataColumn; isDisplay(): this is DisplayColumn; isGroup(): this is GroupColumn; } export type FlatColumnInit = Omit, 'height'> & { id?: Id; }; export declare class FlatColumn extends Column { __flat: boolean; id: Id; constructor({ header, footer, plugins, id }: FlatColumnInit); } export type DataColumnInit = DataColumnInitBase & ((Id extends keyof Item ? DataColumnInitKey : never) | DataColumnInitIdAndKey | DataColumnInitFnAndId); export type DataColumnInitBase = Omit, 'height'> & { cell?: DataLabel; }; export type DataColumnInitKey = { accessor: Id; id?: Id; }; export type DataColumnInitIdAndKey = { accessor: Key; id?: Id; }; export type DataColumnInitFnAndId = { accessor: keyof Item | ((item: Item) => Value); id?: Id; }; export declare class DataColumn extends FlatColumn { __data: boolean; cell?: DataLabel; accessorKey?: keyof Item; accessorFn?: (item: Item) => Value; constructor({ header, footer, plugins, cell, accessor, id, }: DataColumnInit); getValue(item: Item): any; } export type DisplayColumnDataGetter = (cell: DisplayBodyCell, state?: TableState) => unknown; export type DisplayColumnInit = FlatColumnInit & { cell: DisplayLabel; data?: DisplayColumnDataGetter; }; export declare class DisplayColumn extends FlatColumn { __display: boolean; cell: DisplayLabel; data?: DisplayColumnDataGetter; constructor({ header, footer, plugins, id, cell, data }: DisplayColumnInit); } export type GroupColumnInit = Omit, 'height'> & { columns: Column[]; }; export declare class GroupColumn extends Column { __group: boolean; columns: Column[]; ids: string[]; constructor({ header, footer, columns, plugins }: GroupColumnInit); } export declare const getFlatColumnIds: (columns: Column[]) => string[]; export declare const getFlatColumns: (columns: Column[]) => FlatColumn[];