import { DataQueryResult, DataQuerySelection } from './DataQuery';
import { FilterValue, IdType, SortingRule } from 'react-table';
/**
 * Состояние пагинации грида
 * Отображает, как пагинация представлена на UI
 */
export interface GridPaging {
    pageCount: number;
    pageSize: number;
    pageIndex: number;
}
/**
 * Состояние сортировки грида
 */
export interface GridSorting<T extends object = {}> {
    sortBy: SortingRule<T>[];
}
export type GridFilters<D extends object> = Array<{
    id: IdType<D>;
    value: FilterValue;
}>;
export interface GridFiltering<D extends object> {
    filters: GridFilters<D>;
}
export type GridFilterObject<D extends object> = {
    [key in IdType<D>]: FilterValue;
};
/**
 * Всё состояние данных. Сюда включена сортировка, пагинация и фильтрация
 */
export interface GridDataState<TItem extends object> {
    readonly sorting?: GridSorting<TItem>;
    readonly filtering: GridFiltering<TItem>;
    readonly paging?: GridPaging;
    readonly selection?: DataQuerySelection;
}
export interface GridData<TItem, TResultAdditionalInfo> {
    data: DataQueryResult<TItem, TResultAdditionalInfo>;
}
