import React from 'react';
import { RendererProps } from '../../factory';
import { SchemaNode, Action } from '../../types';
import { ITableStore, IColumn, IRow } from '../../store/table';
import Sortable from 'sortablejs';
import { TableCell } from './TableCell';
export interface Column {
    type: string;
    [propName: string]: any;
}
export interface TableProps extends RendererProps {
    title?: string;
    header?: SchemaNode;
    footer?: SchemaNode;
    actions?: Action[];
    className?: string;
    headerClassName?: string;
    footerClassName?: string;
    store: ITableStore;
    columns?: Array<Column>;
    headingClassName?: string;
    toolbarClassName?: string;
    headerToolbarClassName?: string;
    footerToolbarClassName?: string;
    tableClassName?: string;
    source?: string;
    selectable?: boolean;
    selected?: Array<any>;
    valueField?: string;
    draggable?: boolean;
    columnsTogglable?: boolean | 'auto';
    affixHeader?: boolean;
    affixColumns?: boolean;
    combineNum?: number;
    footable?: boolean | {
        expand?: 'first' | 'all' | 'none';
        expandAll?: boolean;
        accordion?: boolean;
    };
    expandConfig?: {
        expand?: 'first' | 'all' | 'none';
        expandAll?: boolean;
        accordion?: boolean;
    };
    itemCheckableOn?: string;
    itemDraggableOn?: string;
    itemActions?: Array<Action>;
    onSelect: (selectedItems: Array<object>, unSelectedItems: Array<object>) => void;
    onSave?: (items: Array<object> | object, diff: Array<object> | object, rowIndexes: Array<number> | number, unModifiedItems?: Array<object>, rowOrigins?: Array<object> | object) => void;
    onSaveOrder?: (moved: Array<object>, items: Array<object>) => void;
    onQuery: (values: object) => void;
    onImageEnlarge?: (data: any, target: any) => void;
    buildItemProps?: (item: any, index: number) => any;
    checkOnItemClick?: boolean;
    hideCheckToggler?: boolean;
    rowClassName?: string;
    rowClassNameExpr?: string;
    popOverContainer?: any;
}
export default class Table extends React.Component<TableProps, object> {
    static propsList: Array<string>;
    static defaultProps: Partial<TableProps>;
    table?: HTMLTableElement;
    sortable?: Sortable;
    dragTip?: HTMLElement;
    affixedTable?: HTMLTableElement;
    parentNode?: HTMLElement | Window;
    lastScrollLeft: number;
    totalWidth: number;
    totalHeight: number;
    outterWidth: number;
    outterHeight: number;
    unSensor: Function;
    updateTableInfoLazy: () => void;
    widths: {
        [propName: string]: number;
    };
    heights: {
        [propName: string]: number;
    };
    renderedToolbars: Array<string>;
    subForms: any;
    constructor(props: TableProps);
    static syncRows(store: ITableStore, props: TableProps, prevProps?: TableProps): void;
    componentWillMount(): void;
    componentDidMount(): void;
    componentWillReceiveProps(nextProps: TableProps): void;
    componentDidUpdate(): void;
    componentWillUnmount(): void;
    subFormRef(form: any, x: number, y: number): void;
    handleAction(e: React.UIEvent<any>, action: Action, ctx: object): void;
    handleCheck(item: IRow): void;
    handleCheckAll(): void;
    handleQuickChange(item: IRow, values: object, saveImmediately?: boolean | any, savePristine?: boolean): void;
    handleSave(): Promise<void>;
    handleSaveOrder(): void;
    syncSelected(): void;
    reset(): void;
    bulkUpdate(value: any, items: Array<object>): void;
    getSelected(): any[];
    affixDetect(): void;
    updateTableInfo(): void;
    handleOutterScroll(): void;
    tableRef(ref: HTMLTableElement): void;
    dragTipRef(ref: any): void;
    affixedTableRef(ref: HTMLTableElement): void;
    initDragging(): void;
    destroyDragging(): void;
    getPopOverContainer(): Element | Text | null;
    handleMouseMove(e: React.MouseEvent<any>): void;
    handleMouseLeave(): void;
    draggingTr: HTMLTableRowElement;
    originIndex: number;
    draggingSibling: Array<HTMLTableRowElement>;
    handleDragStart(e: React.DragEvent): void;
    handleDragOver(e: any): void;
    handleDrop(): void;
    handleDragEnd(): void;
    handleImageEnlarge(info: any, target: {
        rowIndex: number;
        colIndex: number;
    }): void;
    renderHeading(): JSX.Element | null;
    renderHeadCell(column: IColumn, props?: any): JSX.Element;
    renderCell(region: string, column: IColumn, item: IRow, props: any, ignoreDrag?: boolean): JSX.Element | null;
    renderAffixHeader(tableClassName: string): JSX.Element | null;
    renderFixedColumns(rows: Array<any>, columns: Array<IColumn>, headerOnly?: boolean, tableClassName?: string): JSX.Element;
    renderToolbar(toolbar: SchemaNode): JSX.Element | null | undefined;
    renderColumnsToggler(config?: any): JSX.Element | null;
    renderDragToggler(): JSX.Element | null;
    renderActions(region: string): JSX.Element | null;
    renderHeader(editable?: boolean): JSX.Element | JSX.Element[] | null;
    renderFooter(): JSX.Element | JSX.Element[] | null;
    renderRows(rows: Array<any>, columns?: ({
        label: any;
        type: string;
        name: string | undefined;
        value: any;
        groupName: string;
        toggled: boolean;
        toggable: boolean;
        expandable: boolean;
        isPrimary: boolean;
        searchable: any;
        sortable: boolean;
        filterable: any;
        fixed: string;
        index: number;
        rawIndex: number;
        breakpoint: any;
        pristine: any;
        remark: any;
        className: string;
    } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
        toggleToggle(): void;
        setToggled(value: boolean): void;
    } & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IModelType<{
        label: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IType<any, any, any>, [undefined]>;
        type: import("mobx-state-tree").ISimpleType<string>;
        name: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
        value: import("mobx-state-tree").IType<any, any, any>;
        groupName: import("mobx-state-tree").IType<string | undefined, string, string>;
        toggled: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
        toggable: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
        expandable: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
        isPrimary: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
        searchable: import("mobx-state-tree").IMaybe<import("mobx-state-tree").IType<any, any, any>>;
        sortable: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
        filterable: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IType<any, any, any>, [undefined]>;
        fixed: import("mobx-state-tree").IType<string | undefined, string, string>;
        index: import("mobx-state-tree").IType<number | undefined, number, number>;
        rawIndex: import("mobx-state-tree").IType<number | undefined, number, number>;
        breakpoint: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IType<any, any, any>, [undefined]>;
        pristine: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IType<any, any, any>, [undefined]>;
        remark: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IType<any, any, any>, [undefined]>;
        className: import("mobx-state-tree").IType<string | undefined, string, string>;
    }, {
        toggleToggle(): void;
        setToggled(value: boolean): void;
    }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>)[], rowProps?: any): any;
    renderItemActions(): JSX.Element | null;
    renderTableContent(): JSX.Element;
    render(): JSX.Element;
}
export declare class TableRenderer extends Table {
}
export { TableCell };
