import type { ReadOrWritable } from 'svelte-subscribe/derivedKeys'; import { type Readable } from 'svelte/store'; import { BodyRow } from './bodyRows.js'; import { FlatColumn, type Column } from './columns.js'; import type { Table } from './createTable.js'; import { HeaderRow } from './headerRows.js'; import type { AnyPlugins, PluginStates } from './types/TablePlugin.js'; export type TableAttributes = Record & { role: 'table'; }; export type TableHeadAttributes = Record; export type TableBodyAttributes = Record & { role: 'rowgroup'; }; export interface TableViewModel { flatColumns: FlatColumn[]; tableAttrs: Readable>; tableHeadAttrs: Readable>; tableBodyAttrs: Readable>; visibleColumns: Readable[]>; headerRows: Readable[]>; originalRows: Readable[]>; rows: Readable[]>; pageRows: Readable[]>; pluginStates: PluginStates; } export interface PluginInitTableState extends Omit, 'pluginStates'> { data: ReadOrWritable; columns: Column[]; } export interface TableState extends TableViewModel { data: ReadOrWritable; columns: Column[]; } export interface CreateViewModelOptions { rowDataId?: (item: Item, index: number) => string; } export declare const createViewModel: (table: Table, columns: Column[], { rowDataId }?: CreateViewModelOptions) => TableViewModel;