///
/*!
* Copyright (c) Microsoft. All rights reserved.
* Licensed under the MIT license. See LICENSE file in the project.
*/
import type { Field, SortDirection } from '@datashaper/schema';
import { type IColumn, type IDetailsGroupRenderProps, type IListProps } from '@fluentui/react';
import type ColumnTable from 'arquero/dist/types/table/column-table.js';
import type { ArqueroDetailsListFeatures, GroupHeaderFunction } from './ArqueroDetailsList.types.js';
import { groupBuilder } from './ArqueroDetailsList.utils.js';
import { useFill } from './hooks/useFill.js';
export declare function useVirtualizedItems(table: ColumnTable, columns: IColumn[] | undefined, features: ArqueroDetailsListFeatures, fill: boolean, compact: boolean, compactRowHeight: number): {
ref: React.MutableRefObject;
items: any[];
virtual: ReturnType;
};
export declare function useGroups(table: ColumnTable, sliced: ColumnTable, items: any[], sortDirection: SortDirection | undefined, features: ArqueroDetailsListFeatures, sortColumn: string | undefined): undefined | Array>;
/**
* As in FluentUI documentation, when updating item we can update the list items with a spread operator.
* since when adding a new column we're changing the columns prop too, this approach doesn't work for that.
* a workaround found in the issues suggest to use this version property to use as comparison to force re-render
*/
export declare function useVersion(table: ColumnTable, columns: IColumn[] | undefined, compact: boolean): [number, React.Dispatch>];
export declare function useOnColumnResizeHandler(setVersion: React.Dispatch>): (column: IColumn | undefined, newWidth: number | undefined) => void;
/**
* Ensures every key is unique
*/
export declare function useGetKey(): (_: any, index?: number) => string;
export declare function useGroupProps(table: ColumnTable, fields: Field[], onRenderGroupHeader: GroupHeaderFunction | undefined, features: ArqueroDetailsListFeatures): IDetailsGroupRenderProps;
export declare function useListProps(version: number): IListProps;
export declare function useFields(table: ColumnTable, fields?: Field[]): Field[];