import { IPosition2D, ITileInfo, TileMap } from "../../interfaces/Room.interface";
/**
 * RoomTileMap class that manage all the things about the room model.
 *
 * @class
 * @memberof Scuti
 */
export declare class RoomTileMap {
    /**
     * The room tile map where every informations about the room model is stored.
     *
     * @member {TileMap}
     * @private
     */
    private _tileMap;
    /**
     * @param {string} [tileMap] - The room tile map string that need to be parsed.
     */
    constructor(tileMap: string);
    /**
     * Parse the given tile map to convert it into a matrix.
     *
     * @param {string} [tileMap] - The tile map string that we want to convert into a matrix.
     * @return {TileMap}
     * @private
     */
    private _parse;
    /**
     * Reference to the room tile map matrix.
     *
     * @member {TileMap}
     * @readonly
     * @public
     */
    get tileMap(): TileMap;
    /**
     * Convert the 2D position into it's tile type character.
     *
     * @param {IPosition2D} [position] - The tile position that we want to have the type.
     * @return {string}
     * @public
     */
    getTile(position: IPosition2D): string;
    /**
     * Convert the tile character into a number that is the height of the tile.
     *
     * @param {IPosition2D} [position] - The tile position that we want to have the height.
     * @return {string}
     * @public
     */
    getTileHeight(position: IPosition2D): number;
    /**
     * Return informations about the tile (if it's a stair, a door, if there is walls, ...).
     *
     * @param {IPosition2D} [position] - The tile position that we want to have informations.
     * @return {ITileInfo}
     * @public
     */
    getTileInfo(position: IPosition2D): ITileInfo;
    /**
     * Return walls informations about the given tile, like if it's a left wall, a corner wall, ...
     *
     * @param {IPosition2D} [position] - The tile position where we want to have the wall informations.
     * @return {WallType}
     * @private
     */
    private _getWallType;
    /**
     * Return stairs informations about the given tile, like if it's a normal stair, a corner stair, ...
     *
     * @param {IPosition2D} [position] - The tile position where we want to have the stair informations.
     * @return {{ type: StairType, direction: Direction }}
     * @private
     */
    private _getStairType;
    /**
     * Calculate the height differencte between two tile position.
     *
     * @param {IPosition2D} [position1] - The tile position that we want to compare the height.
     * @param {IPosition2D} [position2] - The tile position that we want to compare the height.
     * @return {number}
     * @private
     */
    private _getTileDifference;
    /**
     * Return a boolean that indicate if the tile position given refer to an existing tile.
     *
     * @param {IPosition2D} [position] - The tile position that we want to see if it exist.
     * @return {boolean}
     * @public
     */
    isTile(position: IPosition2D): boolean;
    /**
     * Return a boolean that indicate if the given tile is a door.
     *
     * @param {IPosition2D} [position] - The tile position that we want to see if it's a door.
     * @return {boolean}
     * @public
     */
    isDoor(position: IPosition2D): boolean;
    /**
     * Return the max Z value of this tile map.
     *
     * @return {number}
     * @public
     */
    get maxZ(): number;
    /**
     * Indicate if the given tile position have a left or a right wall.
     *
     * @param {IPosition2D} [position] - The given tile position that we wan't to check if it have walls.
     * @return {{ x: boolean, y: boolean }}
     * @public
     */
    hasWall(position: IPosition2D): {
        x: boolean;
        y: boolean;
    };
}
