import { DataViewOptions, DataViewState, SortOrder } from './data-view.types';
/**
* Headless data view: a sort / search / paginate state machine ported from the
* maildrill `useDataView` hook. Wires search input, sortable headers and
* pagination controls, emits `dataview:change` with the full state, and — when
* `[data-c42-dataview-row]` elements are present — also filters, reorders and
* paginates them directly in the DOM. Server-driven consumers omit the rows and
* react to the change event instead.
*
* Markup:
* ```html
*
*
*
*
*
*
*
* /
*
*
*
* ```
*/
export declare class DataView {
private readonly root;
private readonly searchInput;
private readonly rowsContainer;
private readonly prevBtn;
private readonly nextBtn;
private readonly pageEl;
private readonly pagesEl;
private readonly infoEl;
private readonly sortButtons;
private readonly allRows;
private readonly manualTotal;
private pageSize;
private query;
private sortField;
private sortOrder;
private page;
private total;
private loading;
private visibleColumns;
private cleanups;
constructor(root: HTMLElement, options?: DataViewOptions);
private init;
private matchesQuery;
private fieldValue;
/** Recompute the visible set, optionally emitting a change event. */
private render;
private renderRows;
private renderControls;
private emitChange;
setQuery(query: string): void;
setSort(field: string | null, order?: SortOrder): void;
/** Toggle sort on a field: asc → desc → same field stays, first click asc. */
toggleSort(field: string): void;
setPage(page: number): void;
setPageSize(size: number): void;
/** Set loading state. When set to false, re-scans rows from the DOM. */
setLoading(loading: boolean): void;
/** Re-scan rows from the DOM and re-render (call after async data insert). */
rescanRows(): void;
/** Show a column by key. */
showColumn(column: string): void;
/** Hide a column by key. */
hideColumn(column: string): void;
/** Set which columns are visible. */
setColumns(columns: string[]): void;
private applyColumnVisibility;
private onRowAction;
get totalPages(): number;
getState(): DataViewState;
on(event: string, handler: (event: E) => void): () => void;
destroy(): void;
}