import ViewportProvider from './viewport.provider';
import { DimensionStoreCollection, Trimmed } from "../store/index";
import type { DimensionCols, DimensionType, MultiDimensionType, ColumnRegular, DimensionSettingsState, ViewPortScrollEvent, ViewSettingSizeProp } from "../types/index";
export type DimensionConfig = {
    realSizeChanged(k: MultiDimensionType): void;
};
export declare const DEFAULT_VIRTUAL_X: readonly DimensionCols[];
export declare function isVirtualXDimension(type: DimensionCols, disableVirtualX?: boolean, virtualX?: readonly DimensionCols[]): boolean;
/**
 * Dimension provider
 * Stores dimension information and custom sizes
 *
 * @dependsOn ViewportProvider
 */
export default class DimensionProvider {
    private viewports;
    readonly stores: DimensionStoreCollection;
    constructor(viewports: ViewportProvider, config: DimensionConfig);
    /**
     * Clear old sizes from dimension and viewports
     * @param type - dimension type
     * @param count - count of items
     */
    clearSize(t: MultiDimensionType, count: number): void;
    /**
     * Apply new custom sizes to dimension and view port
     * @param type - dimension type
     * @param sizes - new custom sizes
     * @param keepOld - keep old sizes merge new with old
     */
    setCustomSizes(type: MultiDimensionType, sizes: ViewSettingSizeProp, keepOld?: boolean): void;
    setItemCount(realCount: number, type: MultiDimensionType): void;
    /**
     * Apply trimmed items
     * @param trimmed - trimmed items
     * @param type
     */
    setTrimmed(trimmed: Trimmed, type: MultiDimensionType): void;
    /**
     * Sets dimension data and viewport coordinate
     * @param itemCount
     * @param type - dimension type
     * @param noVirtual - disable virtual data
     */
    setData(itemCount: number, type: MultiDimensionType, noVirtual?: boolean): void;
    /**
     * Applies new columns to the dimension provider
     * @param columns - new columns data
     * @param disableVirtualX - disable virtual data for X axis
     * @param virtualX - column dimensions that should use virtual data
     */
    applyNewColumns(columns: Record<DimensionCols, ColumnRegular[]>, disableVirtualX: boolean, keepOld?: boolean, virtualX?: readonly DimensionCols[]): void;
    /**
     * Gets the full size of the grid by summing up the sizes of all dimensions
     * Goes through all dimensions columnTypes (x) and rowTypes (y) and sums up their sizes
     */
    getFullSize(): {
        x: number;
        y: number;
    };
    setViewPortCoordinate({ type, coordinate, force, }: {
        coordinate?: number;
        type: MultiDimensionType;
        force?: boolean;
    }): void;
    getViewPortPos(e: ViewPortScrollEvent): number;
    setSettings(data: Partial<DimensionSettingsState>, dimensionType: DimensionType): void;
    updateSizesPositionByNewDataIndexes(type: MultiDimensionType, newItemsOrder: number[], prevItemsOrder?: number[]): void;
}
