import { HeaderColumn, ISavedGridState, TTableColumn } from '../models';
import { Identifiable } from '@custis/common';
import { ColumnInstance, IdType, Row } from 'react-table';
import { StorageService } from './StorageService';
import type { DataNode } from 'antd/es/tree';
import React from 'react';
export declare function getColumnDepth<TItem extends Identifiable, TFilter, TSorting>(columns: TTableColumn<TItem, TFilter, TSorting>[]): number;
export declare class ColumnService<TItem extends Identifiable, TFilter, TSorting> {
    columns: TTableColumn<TItem, TFilter, TSorting>[];
    _headerGroups: HeaderColumn<TItem, TFilter, TSorting>[];
    savedState: ISavedGridState<TItem>[];
    private storageService;
    constructor();
    setColumns(columns: TTableColumn<TItem, TFilter, TSorting>[]): void;
    setStorageService(service: StorageService<TItem>): void;
    setSavedState(value: ISavedGridState<TItem>[]): void;
    loadState(): void;
    generateHeaderColumns(headerGroups: ColumnInstance<TItem>[]): void;
    get maxDepth(): number;
    get visibilityColumnsTree(): DataNode[];
    get visibleColumns(): IdType<TItem>[];
    get hiddenColumns(): IdType<TItem>[];
    onVisibilityColumnChange(checkedIds: React.Key[]): void;
    get flatHeaderGroups(): HeaderColumn<TItem, TFilter, TSorting>[];
    get headerGroups(): HeaderColumn<TItem, TFilter, TSorting>[];
    toggleAllHiddenColumns(value: boolean): void;
    onDragEnd(from: number, to: number): void;
    checkNewColumns(state: ISavedGridState<TItem>[]): void;
    getVisibleRows(rows: Row<TItem>[]): Row<TItem>[];
}
