import { Room } from "./Room";
import { Container, Ticker } from "pixi.js";
import { RoomObjectLayer } from "./layers/RoomObjectLayer";
import { RoomTileLayer } from "./layers/RoomTileLayer";
/**
 * RoomView class that manage all the rendering part of the room.
 *
 * @class
 * @memberof Scuti
 */
export declare class RoomView extends Container {
    /**
     * The room instance that will be managed by the camera.
     *
     * @member {Room}
     * @private
     */
    private readonly _room;
    /**
     * The container that will contains all the walls objects.
     *
     * @member {Container}
     * @private
     */
    private _wallLayer;
    /**
     * The container that will contains all the tiles objects.
     *
     * @member {RoomTileLayer}
     * @private
     */
    private _tileLayer;
    /**
     * The container that will contains all the objects like avatars or furnitures.
     *
     * @member {RoomObjectLayer}
     * @private
     */
    private _objectLayer;
    /**
     * List containing all the walls instances.
     *
     * @member {Wall}
     * @private
     */
    private _walls;
    /**
     * List containing all the tiles and stairs instances.
     *
     * @member {Tile | Stair}
     * @private
     */
    private _tiles;
    /**
     * The room tile cursor instance.
     *
     * @member {Cursor}
     * @private
     */
    private _cursor;
    /**
     * The room animation ticker instance that will manage all the objects animations
     *
     * @member {Ticker}
     * @private
     */
    private _animationTicker;
    /**
     * @param {Room} [room] - The room instance that we want to visualize.
     */
    constructor(room: Room);
    /**
     * Draw the room visualization with all the tiles and walls.
     *
     * @return {void}
     * @private
     */
    private _draw;
    /**
     * Destroy all the parts (tiles, walls, stairs, ...).
     *
     * @return {void}
     * @private
     */
    private _destroyParts;
    /**
     * Rerender all the room visualization.
     *
     * @return {void}
     * @private
     */
    update(): void;
    /**
     * Create a room part and add it into the visualization.
     *
     * @param {ITileInfo} [tileInfo] - The tile informations where we want to create the part.
     * @param {IPosition3D} [position] - And the position.
     * @return {void}
     * @private
     */
    private _createPart;
    /**
     * Destroy the current cursor and draw a new one at the new position.
     *
     * @param {IPosition3D} [position] - The cursor position.
     * @return {void}
     * @private
     */
    private _createCursor;
    /**
     * Destroy the room cursor
     *
     * @return {void}
     * @private
     */
    private _destroyCursor;
    /**
     * Create a tile.
     *
     * @param {IPosition3D} [position] - The tile position.
     * @return {void}
     * @private
     */
    private _createTile;
    /**
     * Create a door.
     *
     * @param {IPosition3D} [position] - The door position.
     * @return {void}
     * @private
     */
    private _createDoor;
    /**
     * Create a wall.
     *
     * @param {IPosition3D} [position] - The wall position.
     * @param {WallType} [type] - The wall type.
     * @return {void}
     * @private
     */
    private _createWall;
    /**
     * Create stairs.
     *
     * @param {IPosition3D} [position] - The stairs position.
     * @param {StairType} [type] - The stairs type.
     * @return {void}
     * @private
     */
    private _createStair;
    /**
     * Reference to the room visualization room instance.
     *
     * @member {Room}
     * @readonly
     * @public
     */
    get room(): Room;
    /**
     * Reference to the tile layer container.
     *
     * @member {RoomTileLayer}
     * @readonly
     * @public
     */
    get tileLayer(): RoomTileLayer;
    /**
     * Reference to the wall layer container.
     *
     * @member {Container}
     * @readonly
     * @public
     */
    get wallLayer(): Container;
    /**
     * Reference to the object layer container.
     *
     * @member {RoomObjectLayer}
     * @readonly
     * @public
     */
    get objectLayer(): RoomObjectLayer;
    /**
     * Reference to the room animation ticker instance.
     *
     * @member {Ticker}
     * @readonly
     * @public
     */
    get animationTicker(): Ticker;
}
