export class b2TreeNode {
    constructor(id?: number);
    m_id: number;
    aabb: b2AABB;
    _userData: any;
    parent: any;
    child1: any;
    child2: any;
    height: number;
    moved: boolean;
    set userData(arg: any);
    get userData(): any;
    Reset(): void;
    IsLeaf(): boolean;
}
export class b2DynamicTree {
    static GetAreaNode(node: any): any;
    static ComputeHeightNode(node: any): any;
    static GetMaxBalanceNode(node: any, maxBalance: any): any;
    static ShiftOriginNode(node: any, newOrigin: any): void;
    m_root: any;
    m_freeList: any;
    m_insertionCount: number;
    m_stack: b2GrowableStack<any>;
    Query(aabb: any, callback: any): void;
    QueryPoint(point: any, callback: any): void;
    RayCast(input: any, callback: any): void;
    AllocateNode(): any;
    FreeNode(node: any): void;
    CreateProxy(aabb: any, userData: any): any;
    DestroyProxy(node: any): void;
    MoveProxy(node: any, aabb: any, displacement: any): boolean;
    InsertLeaf(leaf: any): void;
    RemoveLeaf(leaf: any): void;
    Balance(A: any): any;
    GetHeight(): any;
    GetAreaRatio(): number;
    ComputeHeight(): any;
    ValidateStructure(node: any): void;
    ValidateMetrics(node: any): void;
    Validate(): void;
    GetMaxBalance(): any;
    RebuildBottomUp(): void;
    ShiftOrigin(newOrigin: any): void;
}
export namespace b2DynamicTree {
    const s_r: b2Vec2;
    const s_v: b2Vec2;
    const s_abs_v: b2Vec2;
    const s_segmentAABB: b2AABB;
    const s_subInput: b2RayCastInput;
    const s_combinedAABB: b2AABB;
    const s_aabb: b2AABB;
    const s_node_id: number;
    const MoveProxy_s_fatAABB: b2AABB;
    const MoveProxy_s_hugeAABB: b2AABB;
}
import { b2AABB } from "./b2_collision.js";
import { b2GrowableStack } from "../common/b2_growable_stack.js";
import { b2Vec2 } from "../common/b2_math.js";
import { b2RayCastInput } from "./b2_collision.js";
