import '../../globals.js';
import IOType from '../../tandem/js/types/IOType.js';
import { StateObject } from '../../tandem/js/types/StateSchema.js';
import Bounds3 from './Bounds3.js';
declare const STATE_SCHEMA: {
    width: IOType<number, import("../../tandem/js/types/InfiniteNumberIO.js").InfiniteNumberStateObject, import("../../tandem/js/types/InfiniteNumberIO.js").InfiniteNumberStateObject>;
    height: IOType<number, import("../../tandem/js/types/InfiniteNumberIO.js").InfiniteNumberStateObject, import("../../tandem/js/types/InfiniteNumberIO.js").InfiniteNumberStateObject>;
    depth: IOType<number, import("../../tandem/js/types/InfiniteNumberIO.js").InfiniteNumberStateObject, import("../../tandem/js/types/InfiniteNumberIO.js").InfiniteNumberStateObject>;
};
export type Dimension3StateObject = StateObject<typeof STATE_SCHEMA>;
export default class Dimension3 {
    width: number;
    height: number;
    depth: number;
    constructor(width: number, height: number, depth: number);
    /**
     * Debugging string for the dimension.
     */
    toString(): string;
    /**
     * Sets this dimension to be a copy of another dimension.
     * This is the mutable form of the function copy(). This will mutate (change) this dimension, in addition to returning
     * this dimension itself.
     */
    set(dimension: Dimension3): Dimension3;
    /**
     * Sets the width of the dimension, returning this.
     */
    setWidth(width: number): Dimension3;
    /**
     * Sets the height of the dimension, returning this.
     */
    setHeight(height: number): Dimension3;
    /**
     * Sets the depth of the dimension, returning this.
     */
    setDepth(depth: number): Dimension3;
    /**
     * Creates a copy of this dimension, or if a dimension is passed in, set that dimension's values to ours.
     * This is the immutable form of the function set(), if a dimension is provided. This will return a new dimension,
     * and will not modify this dimension.
     *
     * @param [dimension] - If not provided, creates a new Dimension3 with filled in values. Otherwise, fills
     *                      in the values of the provided dimension so that it equals this dimension.
     */
    copy(dimension?: Dimension3): Dimension3;
    /**
     * Creates a Bounds2 from this dimension based on passing in the minimum (top-left) corner as (x,y).
     * @param [x] - Minimum x coordinate of the bounds, or 0 if not provided.
     * @param [y] - Minimum y coordinate of the bounds, or 0 if not provided.
     * @param [z] - Minimum z coordinate of the bounds, or 0 if not provided.
     */
    toBounds(x?: number, y?: number, z?: number): Bounds3;
    /**
     * Exact equality comparison between this dimension and another dimension.
     */
    equals(that: Dimension3): boolean;
    toStateObject(): Dimension3StateObject;
    static fromStateObject(stateObject: Dimension3StateObject): Dimension3;
    static Dimension3IO: IOType<Dimension3, StateObject<{
        width: IOType<number, import("../../tandem/js/types/InfiniteNumberIO.js").InfiniteNumberStateObject, import("../../tandem/js/types/InfiniteNumberIO.js").InfiniteNumberStateObject>;
        height: IOType<number, import("../../tandem/js/types/InfiniteNumberIO.js").InfiniteNumberStateObject, import("../../tandem/js/types/InfiniteNumberIO.js").InfiniteNumberStateObject>;
        depth: IOType<number, import("../../tandem/js/types/InfiniteNumberIO.js").InfiniteNumberStateObject, import("../../tandem/js/types/InfiniteNumberIO.js").InfiniteNumberStateObject>;
    }>, StateObject<{
        width: IOType<number, import("../../tandem/js/types/InfiniteNumberIO.js").InfiniteNumberStateObject, import("../../tandem/js/types/InfiniteNumberIO.js").InfiniteNumberStateObject>;
        height: IOType<number, import("../../tandem/js/types/InfiniteNumberIO.js").InfiniteNumberStateObject, import("../../tandem/js/types/InfiniteNumberIO.js").InfiniteNumberStateObject>;
        depth: IOType<number, import("../../tandem/js/types/InfiniteNumberIO.js").InfiniteNumberStateObject, import("../../tandem/js/types/InfiniteNumberIO.js").InfiniteNumberStateObject>;
    }>>;
}
export {};
//# sourceMappingURL=Dimension3.d.ts.map