import type { TemplateResult } from 'lit'; import type { DirectiveClass, DirectiveParameters, DirectiveResult } from 'lit/directive'; import type { DataTable } from './data-table'; declare module 'lit/directive' { interface DirectiveResult { ['_$litDirective$']: C; values: DirectiveParameters>; } } export declare type RenderPrimitive = null | undefined | boolean | number | string | symbol | bigint; export declare type RenderUnit = RenderPrimitive | DirectiveResult | TemplateResult | T; export declare type Renderable = RenderUnit | Iterable>; export interface ColumnDefinition { readonly render: (row: T, state: ColumnRenderState) => Renderable; readonly id?: string; readonly header?: Renderable; readonly sortable?: boolean | SortConfig; } export interface ColumnRenderState { readonly rowIndex: number; readonly table: DataTable; readonly column: ColumnDefinition; } export declare type Comparator = (valueA: T, valueB: T) => number; export interface SortConfig { readonly comparator: Comparator; } export interface SortState { readonly direction: -1 | 1; readonly priority: number; } export interface HeaderRenderState { readonly table: DataTable; readonly column: ColumnDefinition; readonly sortState?: SortState; } export declare type HeaderRenderer = (state: HeaderRenderState) => Renderable;