import { Room } from "../Room";
import { IStairConfiguration } from "../../../interfaces/Room.interface";
import { Container } from "pixi.js";
import { IInteractionEvent } from "../../../interfaces/Interaction.interface";
/**
 * Stair class that show up when two tiles side by side have a height difference of one.
 *
 * @class
 * @memberof Scuti
 */
export declare class Stair extends Container {
    /**
     * The room instance where the stair will be drawn.
     *
     * @member {Room}
     * @private
     */
    private _room;
    /**
     * The thickness of the stair part.
     *
     * @member {number}
     * @private
     */
    private _thickness;
    /**
     * The stair material that will be applied to this part, it contains the color and the texture of the stair.
     *
     * @member {Material}
     * @private
     */
    private _material;
    /**
     * The stair position.
     *
     * @member {IPosition3D}
     * @private
     */
    private _position;
    /**
     * The stair type.
     *
     * @member {StairType}
     * @private
     */
    private _type;
    /**
     * The stair interaction manager.
     *
     * @member {InteractionManager}
     * @private
     */
    private _interactionManager;
    /**
     * @param {Room} [room] - The room instance where the stair will be drawn.
     * @param {IStairConfiguration} [configuration] - The stair configuration.
     * @param {Material} [configuration.material] - The stair material that will be applied.
     * @param {number} [configuration.thickness] - The stair thickness.
     * @param {IPosition3D} [configuration.position] - The stair position.
     * @param {StairType} [configuration.type] - The stair type.
     **/
    constructor(room: Room, configuration: IStairConfiguration);
    /**
     * Select which stair should be drawn by it's type.
     *
     * @return {void}
     * @private
     */
    private _draw;
    /**
     * Draw the stair using the given points and offsets.
     *
     * @param {IPosition2D[]} [points] - The point list that will be used to draw the stair.
     * @param {IPosition2D[]} [offsets] - The offset list that will be used to draw the stair.
     * @return {void}
     * @private
     */
    private _drawStair;
    /**
     * Draw the corner stair using the given points, points offsets and offsets.
     *
     * @param {IPosition2D[]} [points] - The point list that will be used to draw the stair.
     * @param {IPosition2D[]} [pointsOffsets] - The offset point list that will be used to draw the stair.
     * @param {IPosition2D[]} [offsets] - The offset list that will be used to draw the stair.
     * @return {void}
     * @private
     */
    private _drawCornerStair;
    /**
     * Reference to the pointer down event.
     *
     * @member {(event: IInteractionEvent) => void}
     * @readonly
     * @public
     */
    get onPointerDown(): (event: IInteractionEvent) => void;
    /**
     * Update the event function that will be executed.
     *
     * @param {(event: IInteractionEvent) => void} [value] - The event function that will be executed.
     * @public
     */
    set onPointerDown(value: (event: IInteractionEvent) => void);
    /**
     * Reference to the pointer up event.
     *
     * @member {(event: IInteractionEvent) => void}
     * @readonly
     * @public
     */
    get onPointerUp(): (event: IInteractionEvent) => void;
    /**
     * Update the event function that will be executed.
     *
     * @param {(event: IInteractionEvent) => void} [value] - The event function that will be executed.
     * @public
     */
    set onPointerUp(value: (event: IInteractionEvent) => void);
    /**
     * Reference to the pointer move event.
     *
     * @member {(event: IInteractionEvent) => void}
     * @readonly
     * @public
     */
    get onPointerMove(): (event: IInteractionEvent) => void;
    /**
     * Update the event function that will be executed.
     *
     * @param {(event: IInteractionEvent) => void} [value] - The event function that will be executed.
     * @public
     */
    set onPointerMove(value: (event: IInteractionEvent) => void);
    /**
     * Reference to the pointer out event.
     *
     * @member {(event: IInteractionEvent) => void}
     * @readonly
     * @public
     */
    get onPointerOut(): (event: IInteractionEvent) => void;
    /**
     * Update the event function that will be executed.
     *
     * @param {(event: IInteractionEvent) => void} [value] - The event function that will be executed.
     * @public
     */
    set onPointerOut(value: (event: IInteractionEvent) => void);
    /**
     * Reference to the pointer over event.
     *
     * @member {(event: IInteractionEvent) => void}
     * @readonly
     * @public
     */
    get onPointerOver(): (event: IInteractionEvent) => void;
    /**
     * Update the event function that will be executed.
     *
     * @param {(event: IInteractionEvent) => void} [value] - The event function that will be executed.
     * @public
     */
    set onPointerOver(value: (event: IInteractionEvent) => void);
    /**
     * Reference to the pointer double click event.
     *
     * @member {(event: IInteractionEvent) => void}
     * @readonly
     * @public
     */
    get onDoubleClick(): (event: IInteractionEvent) => void;
    /**
     * Update the event function that will be executed.
     *
     * @param {(event: IInteractionEvent) => void} [value] - The event function that will be executed.
     * @public
     */
    set onDoubleClick(value: (event: IInteractionEvent) => void);
}
