interface ColumnDef { /** * Column identifier. * - number: column index (0-based). Negative counts from the end: * -1 = last column, -2 = second-to-last, etc. * - string: data field name (data/ajax mode); CSS index = array position. */ key: string | number; header?: string; hidden?: boolean; pinLeft?: boolean; pinRight?: boolean; width?: number | string; minWidth?: number; maxWidth?: number; sortable?: boolean; render?: (value: unknown, row: Row) => string; attribute?: { name: string; value: string; target: 'th' | 'td' | 'both'; }; } type Row = Record; interface FilteringOptions { searchLabel?: string; searchPlaceholder?: string; } interface PaginationOptions { pageSize?: number; pageSizes?: Array; sizeLabel?: [string, string]; searchLabel?: string; searchPlaceholder?: string; } interface SearchOptions { stext?: string; placeholder?: string; } interface VirtualScrollOptions { height?: string; width?: string; rowHeight?: number; bufferSize?: number; yBufferSize?: number; xBufferSize?: number; } interface ColumnResizingOptions { minWidth?: number; } interface RowSelectionOptions { mode?: 'single' | 'multiple'; onChange?: (selectedRows: Row[]) => void; } interface InlineEditingOptions { onSave?: (row: Row, changes: Partial) => boolean | Promise; onCancel?: (row: Row) => void; readonlyKeys?: string[]; } type ExportFormat = 'csv' | 'excel' | 'pdf' | 'image'; interface ExportOptions { formats?: ExportFormat[]; filename?: string; } interface ThemeBorderOptions { tableBorder?: boolean; rowBorder?: boolean; columnBorder?: boolean; borderWidth?: number; borderColor?: string; } interface ThemeOptions { name?: 'default' | 'dark' | 'compact'; variables?: Record; striped?: boolean; stripeColor?: string; border?: ThemeBorderOptions; } interface EditableOptions { type: 'full_row'; url: string; key: number[]; hide?: number[]; action: { add?: boolean; edit?: boolean; delete?: boolean; }; } interface LiTableOptions { data?: Row[]; columns?: ColumnDef[]; ajax?: string; serverSide?: boolean; wrapper?: boolean; sorting?: boolean; filtering?: boolean | FilteringOptions; pagination?: boolean | PaginationOptions; info?: boolean; sort?: boolean; paging?: boolean; search?: boolean | SearchOptions; virtualScrolling?: boolean | VirtualScrollOptions; stickyHeader?: number[]; editable?: EditableOptions; export?: boolean | ExportOptions; theme?: string | ThemeOptions; rowSelection?: boolean | RowSelectionOptions; inlineEditing?: boolean | InlineEditingOptions; columnResizing?: boolean | ColumnResizingOptions; columnReordering?: boolean; onSort?: (column: string, direction: 'asc' | 'desc') => void; onFilter?: (term: string) => void; onPageChange?: (page: number, pageSize: number) => void; onRowSelect?: (rows: Row[]) => void; onChange?: (data: Row[]) => void; beforeRender?: () => void; onRender?: () => void; } interface LiTableInstance { update(options: Partial): void; refresh(): void; reload(): void; reset(): void; destroy(): void; getData(): Row[]; setData(data: Row[]): void; getHead(): HTMLElement; setHead(head: HTMLElement | string): void; getBodyRow(): HTMLTableRowElement[]; setBodyRow(rows: HTMLTableRowElement[]): void; } declare class LiTable implements LiTableInstance { private options; private tableId; private tbody; private allRows; private filteredIndices; private isFiltered; private currentPage; private pageSize; private allMaxLength; private maxPageSize; private searchTerm; private scrollHandler; private resizeHandler; private originalHTML; private notifyEl; private isPinnedCols; private columnBorder; private rowBorder; private tableBorder; private borderColor; private serverTotal; private parsedCols; private sortBy; private sortDir; private serverSearch; private searchDebounce; constructor(containerOrSelector: HTMLElement | string | null, options?: LiTableOptions); private _normalizeOptions; update(options: Partial): void; refresh(): void; reload(): void; reset(): void; destroy(): void; getData(): Row[]; setData(data: Row[]): void; getHead(): HTMLElement; setHead(head: HTMLElement | string): void; getBodyRow(): HTMLTableRowElement[]; setBodyRow(rows: HTMLTableRowElement[]): void; private _init; private _fetchAndInit; private _buildFetchUrl; private _parseServerResponse; private _showLoader; private _hideLoader; private _fetchPage; private _buildFromData; private _buildRowElements; private _buildFromHTML; private _rebuildRows; private _finalise; private _wrapTable; private _applyStyles; private _initLengthSelector; private _applyTheme; private _initExport; private _exportRows; private _exportCSV; private _exportExcel; private _exportPDF; private _exportImage; private _triggerDownload; private _initSorting; private _search; private _render; private _renderPaged; private _renderVirtual; private _renderPagination; private _updateInfo; private _getOrCreateModal; private _onRowSelect; private _onRowNew; private _onRowEdit; private _onRowDelete; private _onSubmitAction; private _notify; private _getHeaders; private _removeScrollHandler; private _removeResizeHandler; } export { type ColumnDef, type ColumnResizingOptions, type EditableOptions, type ExportFormat, type ExportOptions, type InlineEditingOptions, LiTable, type LiTableInstance, type LiTableOptions, type PaginationOptions, type Row, type RowSelectionOptions, type ThemeBorderOptions, type ThemeOptions, type VirtualScrollOptions, LiTable as default };