import BlockVolumePlane from "./BlockVolumePlane";
import Block from "./Block";
import IBlockVolumeColumn from "./IBlockVolumeColumn";
import IDimension from "./IDimension";
import BlockLocation from "./BlockLocation";
import Entity from "./Entity";
export default class BlockVolume implements IDimension {
    _maxX: number;
    _maxY: number;
    _maxZ: number;
    private _onMaxDimensionsChanged;
    private _onBlockTypeChanged;
    private _onBlockPropertyChanged;
    private _columns;
    private _entities;
    get onMaxDimensionsChanged(): import("ste-events").IEvent<BlockVolume, string>;
    get onBlockTypeChanged(): import("ste-events").IEvent<BlockVolume, Block>;
    get onBlockPropertyChanged(): import("ste-events").IEvent<BlockVolume, Block>;
    get columns(): IBlockVolumeColumn[][];
    get maxX(): number;
    get maxY(): number;
    get maxZ(): number;
    set maxX(newMaxX: number);
    set maxY(newMaxY: number);
    set maxZ(newMaxZ: number);
    setMaxDimensions(newMaxX: number, newMaxY: number, newMaxZ: number): void;
    planes: BlockVolumePlane[];
    constructor();
    spawnEntity(entityTypeId: string, location: BlockLocation): Entity;
    getBlock(location: BlockLocation): Block;
    getCommandList(fromX: number, fromY: number, fromZ: number): string[];
    _generateColumnInfo(): IBlockVolumeColumn[][];
    _notifyBlockTypeChanged(block: Block): void;
    _notifyBlockPropertyChanged(block: Block): void;
    x(int: number): BlockVolumePlane;
    fillEmpty(blockTypeId: string, xFrom: number, yFrom: number, zFrom: number, xTo: number, yTo: number, zTo: number): void;
    fill(blockTypeId: string, xFrom: number, yFrom: number, zFrom: number, xTo: number, yTo: number, zTo: number): void;
    fillY(blockTypeId: string, y: number): void;
    /**
     * Resizes the volume to new dimensions, preserving existing block data
     * within the overlapping region. Growth fills with air; blocks outside
     * shrunken bounds are discarded. Corner-anchored (origin stays at 0,0,0).
     */
    resize(newMaxX: number, newMaxY: number, newMaxZ: number): void;
}
