import { Configuration, ConfigurationParameters } from './configuration';
import { Identifiable } from '@custis/common';
import { GridDataStore, GridStateStore } from './stores';
import { ColumnOrderState, ColumnPinningState, ColumnSizingInfoState, ColumnSizingState, PaginationState, RowSelectionState, TableState, Updater, VisibilityState, ColumnFiltersState, SortingState, ExpandedState } from '@tanstack/react-table';
import { DragEndEvent } from '@dnd-kit/core';
import { DataQuery, DataQueryResult } from '../DataQuery';
import { PaginationService } from '../services';
export declare abstract class NewGridStore<TItem extends Identifiable & {
    children?: TItem[];
}, TFilter, TSorting, TResultAdditionalInfo = undefined> {
    loaded: boolean;
    protected abortController?: AbortController;
    gridData: GridDataStore<TItem, TResultAdditionalInfo>;
    gridState: GridStateStore<TFilter, TSorting>;
    pagingService: PaginationService<TItem>;
    protected configuration: Configuration;
    protected constructor(configuration: ConfigurationParameters);
    abstract executeQuery(query: DataQuery<TFilter, TSorting>, signal?: AbortSignal): Promise<DataQueryResult<TItem, TResultAdditionalInfo>>;
    loadData(): Promise<void>;
    get result(): DataQueryResult<TItem, TResultAdditionalInfo>;
    setState(value: TableState): void;
    setColumnOrder(updater: Updater<ColumnOrderState>): void;
    setRowSelection(updater: Updater<RowSelectionState>): void;
    setColumnSizing(updater: Updater<ColumnSizingState>): void;
    setColumnSizingInfo(updater: Updater<ColumnSizingInfoState>): void;
    setColumnVisibility(updater: Updater<VisibilityState>): void;
    setPinning(updater: Updater<ColumnPinningState>): void;
    setColumnFilter(updater: Updater<ColumnFiltersState>): void;
    setColumnSorting(updater: Updater<SortingState>): void;
    setPagination(updater: Updater<PaginationState>): void;
    setExpanded(updater: Updater<ExpandedState>): void;
    loadState(defaultState: TableState): Promise<void>;
    onColumnReorder(event: DragEndEvent): void;
    onRowReorder(event: DragEndEvent): void;
    onRowClick(row: TItem): void;
    setLoaded(value: boolean): void;
    reset(): void;
}
