import type { RenderConfig } from 'svelte-render/createRender'; import type { BodyRow } from '../bodyRows.js'; import type { TablePlugin, NewTablePropSet } from '../types/TablePlugin.js'; import { type Readable, type Writable } from 'svelte/store'; import type { PluginInitTableState } from '../createViewModel.js'; export interface ColumnFiltersConfig { serverSide?: boolean; } export interface ColumnFiltersState { filterValues: Writable>; preFilteredRows: Readable[]>; } export interface ColumnFiltersColumnOptions { fn: ColumnFilterFn; initialFilterValue?: FilterValue; render?: (props: ColumnRenderConfigPropArgs) => RenderConfig; } interface ColumnRenderConfigPropArgs extends PluginInitTableState { id: string; filterValue: Writable; values: Readable; preFilteredRows: Readable[]>; preFilteredValues: Readable; } export type ColumnFilterFn = (props: ColumnFilterFnProps) => boolean; export type ColumnFilterFnProps = { filterValue: FilterValue; value: Value; }; export type ColumnFiltersPropSet = NewTablePropSet<{ 'thead.tr.th': { render?: RenderConfig; } | undefined; }>; export declare const addColumnFilters: ({ serverSide }?: ColumnFiltersConfig) => TablePlugin, ColumnFiltersColumnOptions, ColumnFiltersPropSet>; export declare const matchFilter: ColumnFilterFn; export declare const textPrefixFilter: ColumnFilterFn; export declare const numberRangeFilter: ColumnFilterFn<[number | null, number | null], number>; export {};