import { IGridCanvas, IGridImageOptions } from './GridCanvas';
import { IPageColumnDefs } from '../Page/Page';
import { IGridCell } from './GridCell';
import { IGridPage, IGridPageContent } from './GridPage';
import { IPageContent } from '../Page/Content';
import { IGridState, IGridContentStyles } from '../Grid3/Grid';
import { IActionsButton } from '../Actions/Buttons';
import { IGridEvents } from './GridEvents';
import { ITrackingData } from '../Tracking';
export interface IGrid {
    structured: boolean;
    fit: string;
    contrast: string;
    freezeRow: number;
    freezeCol: number;
    minVisibleRows: number;
    highlights: boolean;
    tracking: boolean;
    disallowSelection: boolean;
    hoverHighlights: boolean;
    canEdit: boolean;
    gridlines: boolean;
    userId: number;
    height: number;
    width: number;
    content: IGridPageContent;
    destroy(): void;
    getContentHtml(type?: string): string;
    getSelectedCells(): IGridCells;
    setContent(content: IPageContent, state?: IGridState): void;
    setDeltaContent(content: any): void;
    setFreeze(row: number, col: number, headings?: boolean): void;
    setContrast(which: string): void;
    setHiddenColumns(columns: number[]): void;
    update(refresh?: boolean): void;
    updateButtons(buttons?: IActionsButton[]): void;
    updateRanges(ranges: any, userId?: number): void;
    updateState(state: IGridState): void;
    updateColumnDefs(columnDefs: IPageColumnDefs[]): void;
    updateFreeze(row: number, col: number, headings?: boolean): void;
    updateFit(fit: string): void;
    updateTrackingData(trackingData: ITrackingData[]): void;
    updateStyles(styles?: IGridContentStyles): void;
    updateTrackingData(trackingData: ITrackingData[]): void;
    clearTrackingData(): void;
    setSelectorByRef(str: string): void;
    image(options?: IGridImageOptions): string;
    [key: string]: any;
}
export interface IGridOptions {
    fit?: string;
    headings?: boolean;
    gridlines?: boolean;
    highlights?: boolean;
    tracking?: boolean;
    contrast?: string;
    disallowSelection?: boolean;
    canEdit?: boolean;
    [key: string]: any;
}
export interface IGridSelection {
    from?: IGridCell;
    to?: IGridCell;
    last?: IGridCell;
    selected: boolean;
    rowFrom: number;
    rowTo: number;
    colFrom: number;
    colTo: number;
    heading: boolean;
    inside: boolean;
    keyboard: boolean;
    type: string;
    [key: string]: any;
}
export interface IGridCells extends Array<any> {
    [index: number]: IGridCell[];
}
export declare class Grid implements IGrid {
    ref: string | HTMLDivElement;
    fit: string;
    contrast: string;
    freezeRow: number;
    freezeRowTop: number;
    freezeColLeft: number;
    freezeCol: number;
    minVisibleRows: number;
    highlights: boolean;
    isFocus: boolean;
    disallowSelection: boolean;
    canEdit: boolean;
    userId: number;
    height: number;
    width: number;
    content: IGridPageContent;
    rowsToHide: number[];
    state: IGridState;
    Events: IGridEvents;
    Page: IGridPage;
    Canvas: IGridCanvas;
    private initialized;
    private rendering;
    private scrollTop;
    private visibleRows;
    private _editing;
    private _hasFocus;
    private _gridlines;
    private _headings;
    private _hoverHighlights;
    private doubleClicked;
    private clickedAt;
    private historyClick;
    private rightClick;
    private _optimisedScrolling;
    private uuid;
    private forceUpdate;
    private dirty;
    private rowChecked;
    private scale;
    private pinchDistance;
    private pinchScale;
    tracking: boolean;
    trackingData: ITrackingData[] | undefined;
    private trackingUsers;
    private pageEl;
    private editEl;
    private pageElRect;
    private scaleEl;
    private mainEl;
    private freezeRowEl;
    private freezeCornerEl;
    private freezeColEl;
    private headingRow;
    private scrollEl;
    private noMatchesEl;
    private containerEl;
    private boxEl;
    private boxColEl;
    private boxRowEl;
    private selectorWrapperEl;
    private selectorEl;
    private selectorBoxEl;
    private rowFragments;
    private styleSheet;
    private rowStyle;
    private colStyles;
    private input;
    private sortWrapperEl;
    private sortEl;
    private gridCells;
    private gridCornerHeading;
    private gridRowHeading;
    private gridCornerHeadingCell;
    private gridRowHeadingCells;
    private gridColumnHeadingCells;
    private rows;
    private colRows;
    private cornerRows;
    private rowRemovalInterval;
    private selection;
    private buttons;
    private styles;
    private accessRanges;
    private found;
    private ctrlDown;
    private shiftDown;
    private arrowKeyDown;
    private keyValue;
    private hammer;
    private editingCell;
    private buttonPopper;
    private editValue;
    private editDone;
    constructor(ref: string | HTMLDivElement, options?: IGridOptions);
    image(options: IGridImageOptions): string;
    structured: boolean;
    hoverHighlights: boolean;
    gridlines: boolean;
    headings: boolean;
    hasFocus: boolean;
    private editing;
    optimiseScrolling: boolean;
    destroy(): void;
    setContent(content: IGridPageContent, state?: IGridState, columnDefs?: IPageColumnDefs[]): void;
    setDeltaContent(content: IPageContent): void;
    setFreeze(row: number, col: number): void;
    setContrast(which: string): void;
    setHiddenColumns(columns: number[]): void;
    update(refresh?: boolean): void;
    updateState(state: IGridState): void;
    updateColumnDefs(columnDefs: IPageColumnDefs[]): void;
    updateHeadings(headings: boolean): void;
    updateFreeze(row: number, col: number): void;
    updateFit(fit: string): void;
    updateButtons(buttons?: IActionsButton[]): void;
    updateStyles(styles?: IGridContentStyles): void;
    updateRanges(ranges: any, userId?: number): void;
    getContentHtml(type?: string): string;
    find(query: string): void;
    clearFound(): void;
    private applyStyles;
    private applyButtons;
    private applyRanges;
    private applyCellUpdate;
    hideSelector(): void;
    clearSelector(): void;
    setSelectorByRef(str: string): void;
    editCell(row: number, col: number, value?: string, click?: boolean): void;
    getSelectedCells(): IGridCells;
    getGridCell(rowIndex: number, colIndex: number, ignore?: boolean): IGridCell | null;
    private init;
    private reset;
    private createListeners;
    private destroyListeners;
    private dom;
    private getScrollbarWidth;
    private updateElSizes;
    private updateSelector;
    private scrollSelector;
    private keepSelectorInView;
    private applyState;
    private applyColWidth;
    private applySortIndicator;
    private applyFilters;
    private applySorting;
    private onScrollFreezeCol;
    private onScroll;
    private applyMergeWidths;
    private onCell;
    private setToCell;
    private render;
    private resizeTimer;
    private onResize;
    private onKeydown;
    private onKeyup;
    private onMouseDown;
    private onMouseMove;
    private onMouseUp;
    private defocus;
    private getGridCellTarget;
    private onCtrlNavigate;
    private selectNextCell;
    private emitCellSelected;
    private getScrollTop;
    private getScrollLeft;
    private getTouchDistance;
    private isRightClick;
    private destroyPopper;
    clearTrackingData(): void;
    updateTrackingData(trackingData: ITrackingData[]): void;
    private updateHistoryCells;
    private getTrackingUser;
    private applyScale;
}
