import { AbstractionBase, IAbstractionPool } from '@awayjs/core';
import { IPartitionTraverser } from '../partition/IPartitionTraverser';
import { INode } from '../partition/INode';
import { ContainerNode } from '../partition/ContainerNode';
/**
 * Picks a 3d object from a view or scene by 3D raycast calculations.
 * Performs an initial coarse boundary calculation to return a subset of entities whose bounding volumes intersect with the specified ray,
 * then triggers an optional picking collider on individual renderable objects to further determine the precise values of the picking ray collision.
 *
 * @class away.pick.RaycastPicker
 */
export declare class TabPicker extends AbstractionBase implements IPartitionTraverser {
    /**
     *
     * @returns {ContainerNode}
     */
    get node(): INode;
    private _tabNodes;
    private _customTabNodes;
    private _customTabNodesSorted;
    /**
     * Creates a new <code>RaycastPicker</code> object.
     *
     * @param findClosestCollision Determines whether the picker searches for the closest bounds collision along the ray,
     * or simply returns the first collision encountered. Defaults to false.
     */
    init(node: INode, pool: IAbstractionPool): void;
    private sortTabEnabledEntities;
    traverse(): void;
    getTraverser(node: ContainerNode): IPartitionTraverser;
    getNextTabEntity(currentFocus: ContainerNode): ContainerNode;
    getPrevTabEntity(currentFocus: ContainerNode): ContainerNode;
    /**
     * Returns true if the current node is at least partly in the frustum. If so, the partition node knows to pass on the traverser to its children.
     *
     * @param node The Partition3DNode object to frustum-test.
     */
    enterNode(node: INode): boolean;
    dispose(): void;
    /**
     *
     * @param entity
     */
    applyEntity(node: ContainerNode): void;
}
//# sourceMappingURL=TabPicker.d.ts.map