/// <reference types="lodash" />
import { Key, ReactNode } from 'react';
import { ColumnProps } from './Column';
import DataSet from '../data-set/DataSet';
import Record from '../data-set/Record';
import { DragColumnAlign, ScrollPosition, TableAutoHeightType, TableColumnTooltip, TableHeightType, TableQueryBarType } from './enum';
import ColumnGroups from './ColumnGroups';
import Table, { expandIconProps, TableCustomized, TablePaginationConfig, TableProps, TableQueryBarHook } from './Table';
import { Size } from '../core/enum';
import TableEditor from './TableEditor';
import { HighlightRenderer } from '../field/FormField';
export declare const SELECTION_KEY = "__selection-column__";
export declare const ROW_NUMBER_KEY = "__row-number-column__";
export declare const DRAG_KEY = "__drag-column__";
export declare const EXPAND_KEY = "__expand-column__";
export declare const CUSTOMIZED_KEY = "__customized-column__";
export declare const AGGREGATION_EXPAND_CELL_KEY = "__aggregation-expand-cell__";
export declare type HeaderText = {
    name: string;
    label: string;
};
export declare function getIdList(store: TableStore): number[];
export declare function mergeDefaultProps(originalColumns: ColumnProps[], tableAggregation?: boolean, customizedColumns?: {
    [key: string]: ColumnProps;
}, parent?: ColumnProps | null, defaultKey?: number[], columnSort?: {
    left: number;
    center: number;
    right: number;
}): [any[], any[], any[], boolean];
export declare function normalizeColumns(elements: ReactNode, tableAggregation?: boolean, customizedColumns?: {
    [key: string]: ColumnProps;
}, parent?: ColumnProps | null, defaultKey?: number[], columnSort?: {
    left: number;
    center: number;
    right: number;
}): [any[], any[], any[], boolean];
export default class TableStore {
    node: Table;
    editors: Map<string, TableEditor>;
    customizedLoaded?: boolean;
    props: TableProps;
    customized: TableCustomized;
    tempCustomized: TableCustomized;
    loading?: boolean;
    leftOriginalColumns: ColumnProps[];
    originalColumns: ColumnProps[];
    rightOriginalColumns: ColumnProps[];
    hasAggregationColumn?: boolean;
    calcBodyHeight: number;
    width?: number;
    height?: number;
    totalHeight?: number;
    lastScrollTop: number;
    lockColumnsBodyRowsHeight: any;
    lockColumnsFootRowsHeight: any;
    lockColumnsHeadRowsHeight: any;
    expandedRows: (string | number)[];
    hoverRow?: Record;
    rowClicked?: boolean;
    currentEditorName?: string;
    styledHidden?: boolean;
    customizedActiveKey: string[];
    mouseBatchChooseStartId: number;
    mouseBatchChooseEndId: number;
    mouseBatchChooseState: boolean;
    mouseBatchChooseIdList: number[];
    columnResizing?: boolean;
    scrollPosition: ScrollPosition;
    inBatchExpansion: boolean;
    performanceOn: boolean;
    lastSelected?: Record;
    timing: {
        renderStart: number;
        renderEnd: number;
    };
    get bodyHeight(): number;
    get stickyLeft(): boolean;
    get stickyRight(): boolean;
    get performanceEnabled(): boolean;
    get dataSet(): DataSet;
    get prefixCls(): string;
    get customizable(): boolean | undefined;
    get aggregation(): boolean | undefined;
    get aggregationExpandType(): 'cell' | 'row' | 'column';
    get autoHeight(): {
        type: TableAutoHeightType;
        diff: number;
    } | undefined;
    get heightType(): TableHeightType;
    get originalHeightType(): TableHeightType;
    get virtualCell(): boolean | undefined;
    /**
     * number 矫正虚拟滚动由于样式问题导致的高度不符问题
     */
    get virtualRowHeight(): number;
    get virtual(): boolean | undefined;
    get virtualHeight(): number;
    get virtualStartIndex(): number;
    get virtualEndIndex(): number;
    get virtualTop(): number;
    get virtualData(): Record[];
    get hidden(): boolean | undefined;
    get alwaysShowRowBox(): boolean;
    get keyboard(): boolean;
    get columnResizable(): boolean;
    get columnHideable(): boolean;
    /**
     * 表头支持编辑
     */
    get columnTitleEditable(): boolean;
    get pagination(): TablePaginationConfig | false | undefined;
    get dragColumnAlign(): DragColumnAlign | undefined;
    get columnDraggable(): boolean;
    get rowDraggable(): boolean;
    get size(): Size;
    get rowHeight(): 'auto' | number;
    get autoFootHeight(): boolean;
    get emptyText(): ReactNode;
    get highLightRow(): boolean | string;
    get parityRow(): boolean;
    get showRemovedRow(): boolean;
    get autoFocus(): boolean;
    get selectedHighLightRow(): boolean;
    get editorNextKeyEnterDown(): boolean;
    get border(): boolean;
    get columnEditorBorder(): boolean;
    get queryBar(): TableQueryBarType | TableQueryBarHook | undefined;
    get expandIcon(): ((props: expandIconProps) => ReactNode) | undefined;
    get currentEditRecord(): Record | undefined;
    set currentEditRecord(record: Record | undefined);
    showCachedSelection?: boolean;
    get isTree(): boolean;
    get editing(): boolean;
    get hasRowBox(): boolean;
    get useMouseBatchChoose(): boolean;
    get showSelectionTips(): boolean;
    get overflowX(): boolean;
    get overflowY(): boolean;
    customizedColumnHeader(): JSX.Element;
    get customizedColumn(): ColumnProps | undefined;
    get expandColumn(): ColumnProps | undefined;
    get rowNumberColumn(): ColumnProps | undefined;
    get selectionColumn(): ColumnProps | undefined;
    get draggableColumn(): ColumnProps | undefined;
    get leftColumns(): ColumnProps[];
    get rightColumns(): ColumnProps[];
    get columns(): ColumnProps[];
    get columnGroups(): ColumnGroups;
    get leftColumnGroups(): ColumnGroups;
    get rightColumnGroups(): ColumnGroups;
    get leafNamedColumns(): ColumnProps[];
    get hasEmptyWidthColumn(): boolean;
    get hasCheckFieldColumn(): boolean;
    get hasFooter(): boolean;
    get isAnyColumnsLeftLock(): boolean;
    get isAnyColumnsRightLock(): boolean;
    get isAnyColumnsLock(): boolean;
    get data(): Record[];
    get indeterminate(): boolean;
    get allChecked(): boolean;
    get expandIconAsCell(): boolean;
    get expandIconColumnIndex(): number;
    get inlineEdit(): boolean;
    private handleSelectAllChange;
    handleLoadCustomized(): void;
    constructor(node: Table);
    isBuiltInColumn({ key }: ColumnProps): boolean | undefined;
    getColumnTooltip(column: ColumnProps): TableColumnTooltip | undefined;
    getColumnHeaders(): Promise<HeaderText[]>;
    showEditor(name: string): void;
    setLastScrollTop(lastScrollTop: number): void;
    hideEditor(): void;
    changeMouseBatchChooseIdList(idList: number[]): void;
    showNextEditor(name: string, reserve: boolean): void;
    setProps(props: any): void;
    updateProps(props: any): void;
    initColumns(): void;
    isAggregationCellExpanded(record: Record, key: Key): boolean;
    setAggregationCellExpanded(record: Record, key: Key, expanded: boolean): void;
    isRowExpanded(record: Record): boolean;
    /**
     *
     * @param record 想修改的record
     * @param expanded 设置是否展开
     * @param disHandler 设置是否需要触发展开事件
     */
    setRowExpanded(record: Record, expanded: boolean, disHandler?: boolean): void;
    isRowPending(record: Record): boolean;
    setRowPending(record: Record, pending: boolean): void;
    isRowLoaded(record: Record): boolean;
    setRowLoaded(record: Record, loaded: boolean): void;
    isRowHover(record: Record): boolean;
    get canTreeLoadData(): boolean;
    get cellHighlightRenderer(): HighlightRenderer;
    setRowHover(record: Record, hover: boolean): void;
    expandAll(): void;
    collapseAll(): void;
    onTreeNodeLoad({ record }: {
        record: Record;
    }): Promise<any>;
    renderSelectionBox({ record }: {
        record: any;
    }): ReactNode;
    renderRowNumber({ record, dataSet }: {
        record: any;
        dataSet: any;
    }): ReactNode;
    renderDragBox({ record }: {
        record: any;
    }): JSX.Element;
    changeCustomizedColumnValue(column: ColumnProps, value: object): void;
    saveCustomized(customized?: TableCustomized | null): void;
    saveCustomizedDebounce: ((customized?: TableCustomized | null | undefined) => void) & import("lodash").Cancelable;
    openCustomizationModal(modal: any): void;
    loadCustomized(): Promise<void>;
    handleAllPageSelectionMenuClick({ key }: {
        key: any;
    }): void;
    renderAllPageSelectionMenu(): JSX.Element;
    private multipleSelectionRenderer;
}
