/**
 * Packs rectangles into a finite area, packer is incremental and supports both insertions and removals of rectangles.
 * Implementation of "max rectangles" packing algorithm.
 * Useful for packing texture atlases.
 *
 * @see "A Thousand Ways to Pack the Bin - A Practical Approach to Two-Dimensional Rectangle Bin Packing" 2010 Jukka Jylänki
 */
export class MaxRectanglesPacker {
    /**
     *
     * @param {number} width
     * @param {number} height
     */
    constructor(width: number, height: number);
    size: Vector2;
    /**
     *
     * @type {QuadTreeNode}
     */
    free: QuadTreeNode<any>;
    /**
     * Currently held boxes.
     * Managed internally, do not modify.
     * @readonly
     * @type {AABB2[]}
     */
    readonly boxes: AABB2[];
    /**
     *
     * @param {AABB2} box exact box to remove
     * @returns {boolean} true when box is removed, false if not found
     */
    remove(box: AABB2): boolean;
    /**
     *
     * @param {AABB2[]} boxes
     * @returns {number} How many failed to be removed. Failure represents box that was not packed in the first place.
     */
    removeMany(boxes: AABB2[]): number;
    /**
     * Pack a given box.
     * Atomic, if box fails packing - the existing data structure is unchanged.
     * @param {AABB2} box
     * @returns {boolean} true if box was successfully added into the packing, false otherwise
     */
    add(box: AABB2): boolean;
    /**
     * Tests whether a rectangle of given dimensions can be packed into remaining space
     * Essentially, if this method succeeds - insertion will succeed as well, and if it fails - insertion will fail too
     * @param {number} w
     * @param {number} h
     * @return {boolean}
     */
    canAdd(w: number, h: number): boolean;
    /**
     * Method is transactional, if one box fails to be packed, all fail and packer is reverted to original state
     * @param {AABB2[]} boxes
     * @returns {boolean}
     */
    addMany(boxes: AABB2[]): boolean;
    /**
     * Re-packs all rectangles
     * @returns {boolean} true if successful, false if there was not enough space found during packing
     */
    repack(): boolean;
    /**
     * Clear out all the data from the packer
     */
    clear(): void;
    /**
     * Resize the packer canvas, may trigger repacking if new dimensions are smaller than the existing ones
     * @param {number} width
     * @param {number} height
     * @returns {boolean} false if packing fails after resize, true otherwise
     */
    resize(width: number, height: number): boolean;
}
import Vector2 from "../../Vector2.js";
import { QuadTreeNode } from "../../2d/quad-tree/QuadTreeNode.js";
//# sourceMappingURL=MaxRectanglesPacker.d.ts.map