/// <reference types="jquery" />
import { Dimension, HtmlComponent, HtmlCompPrefSizeOptions, Insets, LogicalGridLayout, Point, Rectangle, Tile, TileGrid, TileGridLayoutConfig, Widget } from '../index';
export declare class TileGridLayout extends LogicalGridLayout {
    widget: TileGrid<Tile>;
    containerPos: Point;
    containerScrollTop: number;
    maxWidth: number;
    tiles: Tile[];
    protected _calculatingPrimitivePrefSize: boolean;
    constructor(widget: Widget, layoutConfig: TileGridLayoutConfig);
    /**
     * @param scrollTopDirty If the scroll top position should be considered dirty while updating the view port.
     * If true, the view port is not rendered, as the scroll positions are not reliable anyway. Then only the layout of the TileGrid is updated.
     */
    updateViewPort(scrollTopDirty?: boolean): void;
    layout($container: JQuery): void;
    protected _sizeChanged(htmlComp: HtmlComponent): boolean;
    protected _storeBounds(tiles: Tile[]): void;
    protected _validateGridData(htmlComp: HtmlComponent): boolean;
    protected _layoutCellBounds(containerSize: Dimension, containerInsets: Insets): Rectangle[][];
    protected _animateTiles(): JQuery.Promise<void>[];
    protected _animateTile(tile: Tile): void | JQuery.Promise<void>;
    protected _inViewport(bounds: Rectangle): boolean;
    protected _onAnimationDone(): void;
    protected _animateTileBounds(tile: Tile, fromBounds: Rectangle, bounds: Rectangle): JQuery.Promise<void>;
    protected _updateScrollbar(): void;
    /**
     * When max. width should be enforced, add a padding to the container if necessary
     * (to make sure, scrollbar position is not changed)
     */
    protected _updateMaxWidth(): void;
    protected _resetGridColumnCount(): void;
    preferredLayoutSize($container: JQuery, options?: HtmlCompPrefSizeOptions): Dimension;
    /**
     * Calculates the preferred size only based on the grid column count, row count and layout config. Does not use rendered elements.
     * Therefore, it only works if all tiles are of the same size (which is a precondition for the virtual scrolling anyway).
     */
    virtualPrefSize($container: JQuery, options: HtmlCompPrefSizeOptions): Dimension;
    primitivePrefSize($container: JQuery, options: HtmlCompPrefSizeOptions): Dimension;
    protected _primitivePrefSize(options: HtmlCompPrefSizeOptions): Dimension;
    protected _updateFilterFieldMaxWidth($container: JQuery): void;
}
//# sourceMappingURL=TileGridLayout.d.ts.map