export class BoundingSphereOctree { root: any; keysToLeaves: any; putSpheres(spheres: any): void; putSphere(key: any, sphere: any): void; _putSphere(key: any, sphere: any): void; _expandToCoverPoint(x: any, y: any, z: any): void; _insertIntoOctant(key: any, sphere: any, octant: any): any; removeSphere(key: any): void; _updateSphere(key: any, sphere: any): void; _findSingleLeaf(octant: any): any; /** * Perform a depth-first walk of the tree structure, invoking a `callback` function for * each node. The `callback` will be passed the current tree node object, and will be invoked * for parent branch nodes first before their child nodes. * * If the function returns `false` for a branch node, none of that branch's children will be * visited; this is how you can efficiently query the tree by filtering out the majority of branches. * * @param {Function} callback */ walkTree(callback: Function): void; walkBranch(root: any, callback: any): void; /** * Given a {@link Ray}, search the octree for any spheres that intersect that ray and invoke * the given `callback` function, passing it the sphere and its key as arguments. * TODO need to handle near/far * * @param {Ray} ray * @param {Function} callback * @param {Object} scope */ forEachSphereOnRay(ray: Ray, callback: Function, scope: any): void; forEachIntersectingSphere(sphere: any, callback: any, scope: any): void; _forEachMatchingSphere(testFn: any, callback: any, scope: any): void; }