import type { Header, HeaderGroup, RowData } from '@tanstack/svelte-table';
import type { DataTableInstance } from './data-table-utils';
import type { DataTableFeatures } from './features';
export type DataTableViewState<T extends RowData> = ReturnType<typeof createTableViewState<T>>;
export type DataTableHeaderSection = 'left' | 'center' | 'right';
/**
 * Shared derived state for the standard and virtualized table roots.
 *
 * Writable slice atoms are rune-backed, so reading them inside a $derived
 * registers the dependency. Derived table APIs (getRowModel, header groups,
 * getVisibleLeafColumns, …) are not reliably tracked by the beta adapter, so
 * each derived below first reads the slices its result depends on.
 */
export declare function createTableViewState<T extends RowData>(getTable: () => DataTableInstance<T>): {
    readonly table: DataTableInstance<T>;
    readonly columnPinning: import("@tanstack/table-core").ColumnPinningState;
    readonly columnResizing: import("@tanstack/table-core").columnResizingState;
    readonly columnSizing: import("@tanstack/table-core").ColumnSizingState;
    readonly columnVisibility: import("@tanstack/table-core").ColumnVisibilityState;
    readonly rowSelection: import("@tanstack/table-core").RowSelectionState;
    readonly sorting: import("@tanstack/table-core").SortingState;
    readonly rowModel: import("@tanstack/table-core").RowModel<{
        rowSortingFeature: import("@tanstack/table-core").TableFeature;
        rowSelectionFeature: import("@tanstack/table-core").TableFeature;
        columnFilteringFeature: import("@tanstack/table-core").TableFeature;
        columnFacetingFeature: import("@tanstack/table-core").TableFeature;
        globalFilteringFeature: import("@tanstack/table-core").TableFeature;
        columnVisibilityFeature: import("@tanstack/table-core").TableFeature;
        columnPinningFeature: import("@tanstack/table-core").TableFeature;
        columnSizingFeature: import("@tanstack/table-core").TableFeature;
        columnResizingFeature: import("@tanstack/table-core").TableFeature;
        sortedRowModel: (table: import("@tanstack/table-core").Table<any, any>) => () => import("@tanstack/table-core").RowModel<any, any>;
        filteredRowModel: (table: import("@tanstack/table-core").Table<any, any>) => () => import("@tanstack/table-core").RowModel<any, any>;
        facetedRowModel: (table: import("@tanstack/table-core").Table<any, any>, columnId: string) => () => import("@tanstack/table-core").RowModel<any, any>;
        facetedUniqueValues: (table: import("@tanstack/table-core").Table<import("@tanstack/table-core").TableFeatures, any>, columnId: string) => () => Map<any, number>;
        facetedMinMaxValues: (table: import("@tanstack/table-core").Table<import("@tanstack/table-core").TableFeatures, any>, columnId: string) => () => undefined | [number, number];
        sortFns: {
            alphanumeric: import("@tanstack/table-core").CreatedSortFn<any, any>;
            alphanumericCaseSensitive: import("@tanstack/table-core").CreatedSortFn<any, any>;
            basic: import("@tanstack/table-core").CreatedSortFn<any, any>;
            datetime: import("@tanstack/table-core").CreatedSortFn<any, any>;
            text: import("@tanstack/table-core").CreatedSortFn<any, any>;
            textCaseSensitive: import("@tanstack/table-core").CreatedSortFn<any, any>;
        };
        filterFns: {
            arrIncludes: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            arrIncludesAll: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            arrHas: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            arrIncludesSome: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            between: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            betweenInclusive: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            empty: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            endsWith: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            equals: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            equalsString: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            equalsStringSensitive: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            inDateRange: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            inNumberRange: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            includesString: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            includesStringSensitive: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            notEmpty: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            startsWith: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            weakEquals: import("@tanstack/table-core").CreatedFilterFn<any, any>;
        };
        columnMeta: import("./types").DataTableColumnMeta;
    }, T>;
    readonly headerGroups: HeaderGroup<{
        rowSortingFeature: import("@tanstack/table-core").TableFeature;
        rowSelectionFeature: import("@tanstack/table-core").TableFeature;
        columnFilteringFeature: import("@tanstack/table-core").TableFeature;
        columnFacetingFeature: import("@tanstack/table-core").TableFeature;
        globalFilteringFeature: import("@tanstack/table-core").TableFeature;
        columnVisibilityFeature: import("@tanstack/table-core").TableFeature;
        columnPinningFeature: import("@tanstack/table-core").TableFeature;
        columnSizingFeature: import("@tanstack/table-core").TableFeature;
        columnResizingFeature: import("@tanstack/table-core").TableFeature;
        sortedRowModel: (table: import("@tanstack/table-core").Table<any, any>) => () => import("@tanstack/table-core").RowModel<any, any>;
        filteredRowModel: (table: import("@tanstack/table-core").Table<any, any>) => () => import("@tanstack/table-core").RowModel<any, any>;
        facetedRowModel: (table: import("@tanstack/table-core").Table<any, any>, columnId: string) => () => import("@tanstack/table-core").RowModel<any, any>;
        facetedUniqueValues: (table: import("@tanstack/table-core").Table<import("@tanstack/table-core").TableFeatures, any>, columnId: string) => () => Map<any, number>;
        facetedMinMaxValues: (table: import("@tanstack/table-core").Table<import("@tanstack/table-core").TableFeatures, any>, columnId: string) => () => undefined | [number, number];
        sortFns: {
            alphanumeric: import("@tanstack/table-core").CreatedSortFn<any, any>;
            alphanumericCaseSensitive: import("@tanstack/table-core").CreatedSortFn<any, any>;
            basic: import("@tanstack/table-core").CreatedSortFn<any, any>;
            datetime: import("@tanstack/table-core").CreatedSortFn<any, any>;
            text: import("@tanstack/table-core").CreatedSortFn<any, any>;
            textCaseSensitive: import("@tanstack/table-core").CreatedSortFn<any, any>;
        };
        filterFns: {
            arrIncludes: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            arrIncludesAll: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            arrHas: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            arrIncludesSome: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            between: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            betweenInclusive: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            empty: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            endsWith: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            equals: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            equalsString: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            equalsStringSensitive: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            inDateRange: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            inNumberRange: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            includesString: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            includesStringSensitive: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            notEmpty: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            startsWith: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            weakEquals: import("@tanstack/table-core").CreatedFilterFn<any, any>;
        };
        columnMeta: import("./types").DataTableColumnMeta;
    }, T>[];
    getHeaderSection(header: Header<DataTableFeatures, T, unknown>): DataTableHeaderSection | undefined;
    readonly visibleLeafColumns: import("@tanstack/table-core").Column<{
        rowSortingFeature: import("@tanstack/table-core").TableFeature;
        rowSelectionFeature: import("@tanstack/table-core").TableFeature;
        columnFilteringFeature: import("@tanstack/table-core").TableFeature;
        columnFacetingFeature: import("@tanstack/table-core").TableFeature;
        globalFilteringFeature: import("@tanstack/table-core").TableFeature;
        columnVisibilityFeature: import("@tanstack/table-core").TableFeature;
        columnPinningFeature: import("@tanstack/table-core").TableFeature;
        columnSizingFeature: import("@tanstack/table-core").TableFeature;
        columnResizingFeature: import("@tanstack/table-core").TableFeature;
        sortedRowModel: (table: import("@tanstack/table-core").Table<any, any>) => () => import("@tanstack/table-core").RowModel<any, any>;
        filteredRowModel: (table: import("@tanstack/table-core").Table<any, any>) => () => import("@tanstack/table-core").RowModel<any, any>;
        facetedRowModel: (table: import("@tanstack/table-core").Table<any, any>, columnId: string) => () => import("@tanstack/table-core").RowModel<any, any>;
        facetedUniqueValues: (table: import("@tanstack/table-core").Table<import("@tanstack/table-core").TableFeatures, any>, columnId: string) => () => Map<any, number>;
        facetedMinMaxValues: (table: import("@tanstack/table-core").Table<import("@tanstack/table-core").TableFeatures, any>, columnId: string) => () => undefined | [number, number];
        sortFns: {
            alphanumeric: import("@tanstack/table-core").CreatedSortFn<any, any>;
            alphanumericCaseSensitive: import("@tanstack/table-core").CreatedSortFn<any, any>;
            basic: import("@tanstack/table-core").CreatedSortFn<any, any>;
            datetime: import("@tanstack/table-core").CreatedSortFn<any, any>;
            text: import("@tanstack/table-core").CreatedSortFn<any, any>;
            textCaseSensitive: import("@tanstack/table-core").CreatedSortFn<any, any>;
        };
        filterFns: {
            arrIncludes: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            arrIncludesAll: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            arrHas: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            arrIncludesSome: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            between: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            betweenInclusive: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            empty: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            endsWith: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            equals: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            equalsString: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            equalsStringSensitive: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            inDateRange: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            inNumberRange: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            includesString: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            includesStringSensitive: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            notEmpty: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            startsWith: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            weakEquals: import("@tanstack/table-core").CreatedFilterFn<any, any>;
        };
        columnMeta: import("./types").DataTableColumnMeta;
    }, T, unknown>[];
    readonly growColumn: import("@tanstack/table-core").Column<{
        rowSortingFeature: import("@tanstack/table-core").TableFeature;
        rowSelectionFeature: import("@tanstack/table-core").TableFeature;
        columnFilteringFeature: import("@tanstack/table-core").TableFeature;
        columnFacetingFeature: import("@tanstack/table-core").TableFeature;
        globalFilteringFeature: import("@tanstack/table-core").TableFeature;
        columnVisibilityFeature: import("@tanstack/table-core").TableFeature;
        columnPinningFeature: import("@tanstack/table-core").TableFeature;
        columnSizingFeature: import("@tanstack/table-core").TableFeature;
        columnResizingFeature: import("@tanstack/table-core").TableFeature;
        sortedRowModel: (table: import("@tanstack/table-core").Table<any, any>) => () => import("@tanstack/table-core").RowModel<any, any>;
        filteredRowModel: (table: import("@tanstack/table-core").Table<any, any>) => () => import("@tanstack/table-core").RowModel<any, any>;
        facetedRowModel: (table: import("@tanstack/table-core").Table<any, any>, columnId: string) => () => import("@tanstack/table-core").RowModel<any, any>;
        facetedUniqueValues: (table: import("@tanstack/table-core").Table<import("@tanstack/table-core").TableFeatures, any>, columnId: string) => () => Map<any, number>;
        facetedMinMaxValues: (table: import("@tanstack/table-core").Table<import("@tanstack/table-core").TableFeatures, any>, columnId: string) => () => undefined | [number, number];
        sortFns: {
            alphanumeric: import("@tanstack/table-core").CreatedSortFn<any, any>;
            alphanumericCaseSensitive: import("@tanstack/table-core").CreatedSortFn<any, any>;
            basic: import("@tanstack/table-core").CreatedSortFn<any, any>;
            datetime: import("@tanstack/table-core").CreatedSortFn<any, any>;
            text: import("@tanstack/table-core").CreatedSortFn<any, any>;
            textCaseSensitive: import("@tanstack/table-core").CreatedSortFn<any, any>;
        };
        filterFns: {
            arrIncludes: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            arrIncludesAll: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            arrHas: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            arrIncludesSome: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            between: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            betweenInclusive: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            empty: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            endsWith: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            equals: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            equalsString: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            equalsStringSensitive: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            inDateRange: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            inNumberRange: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            includesString: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            includesStringSensitive: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            notEmpty: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            startsWith: import("@tanstack/table-core").CreatedFilterFn<any, any>;
            weakEquals: import("@tanstack/table-core").CreatedFilterFn<any, any>;
        };
        columnMeta: import("./types").DataTableColumnMeta;
    }, T, unknown> | undefined;
    readonly hasGrowColumn: boolean;
    readonly isRowSelectionEnabled: boolean;
    readonly isMultiRowSelectionEnabled: boolean;
    readonly allRowsSelectionState: boolean | "indeterminate";
    readonly selectedRowCount: number;
    readonly isColumnResizing: boolean;
    readonly hasFooter: boolean;
};
