import { HeaderColumn, ISavedGridState, TTableColumn } from '../models';
import { Identifiable } from '@custis/common';
import { ColumnInstance, ColumnResizing, IdType, Row } from 'react-table';
import { StorageService } from './StorageService';
import type { DataNode } from 'antd/es/tree';
import { CheckInfo } from 'rc-tree/lib/Tree';
import { Key } 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> {
    private storageService;
    columns: TTableColumn<TItem, TFilter, TSorting>[];
    _headerGroups: HeaderColumn<TItem, TFilter, TSorting>[];
    savedState: ISavedGridState<TItem>[];
    constructor(storageService: StorageService<TItem>);
    setColumns(columns: TTableColumn<TItem, TFilter, TSorting>[]): void;
    setSavedState(value: ISavedGridState<TItem>[]): void;
    loadState(): void;
    loadDefaultState(): void;
    generateHeaderColumns(headerGroups: ColumnInstance<TItem>[]): void;
    get maxDepth(): number;
    get visibilityColumnsTree(): DataNode[];
    get flattedSavedState(): ISavedGridState<TItem>[];
    get visibleColumns(): IdType<TItem>[];
    get hiddenColumns(): IdType<TItem>[];
    onVisibilityColumnChange(data: Key[], info?: CheckInfo): 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>[];
    get columnOrder(): IdType<TItem>[];
    get totalColumnsWidth(): number;
    onSaveColumnWidth(columnId: IdType<TItem>, width: number): void;
    pinColumn(columnId: IdType<TItem>): void;
    unpinColumn(columnId: IdType<TItem>): void;
    get pinnedColumnIds(): IdType<TItem>[];
    get lastPinnedColumnId(): IdType<TItem> | undefined;
    get columnWidths(): ColumnResizing;
}
