import { GridData, Tile } from '..';
export declare const tileUtil: {
    /**
     * Creates a matrix containing references to the given tiles at the points where these tiles are.
     * If the tiles span some columns or rows, the spanned cells reference the tiles as well.
     *
     * Example: If a tile has a `gridData` with `x = 2`, `y = 4`, `w = 2`, `h = 1` it will be at position `matrix[2][4]` and `matrix[3][4]`.
     *
     * It uses gridDataHints if x/y are set explicitly. Otherwise, gridData is used.
     * Tiles with no gridData set or whose gridData.x or y is < 0 are ignored.
     *
     * @returns a two-dimensional array where the first dimension is the x-axis and the second the y-axis.
     */
    buildMatrix(tiles: Tile[]): TileMatrix;
    /**
     * Moves the tiles down that intersect with the resized tile to make space for the resized tile.
     * Existing tiles on the bottom will be pushed down as well if they are in the way.
     *
     * This only works for tiles with an explicit position which means it only works if gridDataHints.x and gridDataHints.y are greater than or equal to 0.
     * Tiles without an explicit position are ignored because they are arranged automatically by the logical grid.
     *
     * @param ignore If the function returns true the passed tile will be ignored and never be moved. This is typically used for placeholder tiles.
     */
    moveOtherTilesDown(tiles: Tile[], resizedTile: Tile, newGridData: GridData, ignore?: (tile: Tile) => boolean): void;
};
/**
 * A two-dimensional array where the first dimension is the x-axis and the second the y-axis.
 */
export type TileMatrix = Tile[][] & {
    /**
     * The starting point of the x-axis array. It is the lowest x of all grid datas in the matrix, never smaller than 0.
     */
    x: number;
    /**
     * The starting point of the y-axis array. It is the lowest y of all grid datas in the matrix, never smaller than 0.
     */
    y: number;
    /**
     * The length of the x-axis array adjusted by {@link x}.
     * It is the number of columns between the left most tile and the right side of the right most tile in the matrix.
     */
    width: number;
    /**
     * The length of the y-axis array adjusted by {@link y}.
     * It is the number of rows between the uppermost tile and the bottom side of the lowest tile in the matrix.
     */
    height: number;
};
//# sourceMappingURL=tileUtil.d.ts.map