import Component, { IComponentOptions } from '../share/Component';
import types from 'licia/types';
export interface IColumn {
    id: string;
    title: string;
    weight?: number;
    sortable?: boolean;
    visible?: boolean;
    comparator?: types.AnyFn;
}
export interface IOptions extends IComponentOptions {
    columns: IColumn[];
    height?: number;
    maxHeight?: number;
    minHeight?: number;
    filter?: string | RegExp | types.AnyFn;
    selectable?: boolean;
    headerContextMenu?: boolean;
}
type NodeData = types.PlainObj<string | HTMLElement>;
export interface IDataGridNodeOptions {
    selectable?: boolean;
}
export default class DataGrid extends Component<IOptions> {
    private id;
    private $headerRow;
    private $fillerRow;
    private fillerRow;
    private $tableBody;
    private $colgroup;
    private $dataContainer;
    private $style;
    private dataContainer;
    private $resizers;
    private resizeIdx;
    private resizeRightIdx;
    private resizeStartX;
    private resizeStartLeft;
    private resizeDeltaX;
    private resizeSensor;
    private onResize;
    private tableBody;
    private nodes;
    private displayNodes;
    private colWidthsInitialized;
    private colMap;
    private sortId?;
    private selectedNode;
    private isAscending;
    private sorted;
    private colWidths;
    private $space;
    private $data;
    private data;
    private space;
    private spaceHeight;
    private topSpaceHeight;
    private lastScrollTop;
    private lastTimestamp;
    private speedToleranceFactor;
    private maxSpeedTolerance;
    private minSpeedTolerance;
    private scrollTimer;
    constructor(container: HTMLElement, options: IOptions);
    destroy(): void;
    remove(node: DataGridNode): void;
    append(data: NodeData, options?: IDataGridNodeOptions): DataGridNode;
    setData(data: Array<NodeData | [NodeData, IDataGridNodeOptions]>, uniqueId?: string): void;
    clear(): void;
    fit(): void;
    private clearData;
    private updateHeight;
    private selectNode;
    private getRightIdx;
    private onResizeColStart;
    private onResizeColMove;
    private onResizeColEnd;
    private bindEvent;
    private sortNodes;
    private initWeights;
    private updateWeights;
    private positionResizers;
    private onScroll;
    private renderData;
    private updateTopSpace;
    private updateSpace;
    private filterNode;
    private renderHeader;
    private renderResizers;
    private initTpl;
}
export declare class DataGridNode {
    container: HTMLElement;
    data: types.PlainObj<string | HTMLElement>;
    selectable: boolean;
    private $container;
    private dataGrid;
    constructor(dataGrid: DataGrid, data: types.PlainObj<string | HTMLElement>, options: IDataGridNodeOptions);
    text(): string;
    select(): void;
    deselect(): void;
    render(): void;
}
export {};
