import DimensionProvider from '../../services/dimension.provider';
import { type SelectionStoreConnector } from '../../services/selection.store.connector';
import ViewportProvider from '../../services/viewport.provider';
import { OrdererService } from '../order/order-renderer';
import GridScrollingService from './viewport.scrolling.service';
import ColumnDataProvider from '../../services/column.data.provider';
import { DataProvider } from '../../services/data.provider';
import type { AllDimensionType, Cell, ColumnRegular, DimensionCols, DimensionRows, RangeArea, ViewportProps } from "../../types/index";
export type ResizeDetails = {
    [index: number]: ColumnRegular;
};
type Config = {
    columnProvider: ColumnDataProvider;
    dataProvider: DataProvider;
    dimensionProvider: DimensionProvider;
    viewportProvider: ViewportProvider;
    scrollingService: GridScrollingService;
    orderService: OrdererService;
    selectionStoreConnector: SelectionStoreConnector;
    noHorizontalScrollTransfer?: boolean;
    disableVirtualX?: boolean;
    disableVirtualY?: boolean;
    resize(r: ResizeDetails): void;
};
export type FocusedData = {
    model: any;
    cell: Cell;
    colType: DimensionCols;
    rowType: DimensionRows;
    column?: ColumnRegular;
};
export default class ViewportService {
    private config;
    readonly columns: ViewportProps[];
    constructor(config: Config, contentHeight: number);
    private onColumnResize;
    /** register selection store for Segment */
    private registerSegment;
    /** register selection store for Row */
    private registerRow;
    /** register selection store for Column */
    private registerCol;
    /** Collect Row data */
    private dataViewPort;
    scrollToCell(cell: Partial<Cell>): void;
    /**
     * Clear current grid focus
     */
    clearFocused(): void;
    clearEdit(): void;
    /**
     * Collect focused element data
     */
    getFocused(): FocusedData | null;
    getStoreCoordinateByType(colType: DimensionCols, rowType: DimensionRows): Cell | undefined;
    setFocus(colType: string, rowType: string, start: Cell, end: Cell): void;
    getSelectedRange(): RangeArea & AllDimensionType | null | undefined;
    setEdit(rowIndex: number, colIndex: number, colType: DimensionCols, rowType: DimensionRows): void;
}
export {};
