import { AbstractionSet, EventDispatcher, IAbstraction, IAbstractionPool, IAsset, IAssetClass } from '@awayjs/core';
import { RaycastPicker } from './pick/RaycastPicker';
import { BoundsPicker } from './pick/BoundsPicker';
import { TabPicker } from './pick/TabPicker';
import { INode } from './partition/INode';
/**
 * @class away.pool.PickGroup
 */
export declare class PickGroup extends EventDispatcher implements IAbstractionPool {
    private static _store;
    private static _instance;
    private static _tabPickerPool;
    private _raycastPickerPool;
    private _boundsPickerPool;
    private _tabPickerPool;
    readonly id: number;
    readonly abstractions: AbstractionSet;
    static getInstance(): PickGroup;
    /**
     * //TODO
     *
     * @param materialClassGL
     */
    constructor();
    requestAbstraction(asset: IAsset): IAbstraction;
    storeAbstraction(abstraction: IAbstraction): void;
    getRaycastPicker(node: INode): RaycastPicker;
    getBoundsPicker(node: INode): BoundsPicker;
    getTabPicker(node: INode): TabPicker;
}
export declare class RaycastPickerPool implements IAbstractionPool {
    private static _store;
    readonly id: number;
    readonly abstractions: AbstractionSet;
    readonly pickGroup: PickGroup;
    constructor(pickGroup: PickGroup);
    requestAbstraction(assetClass: IAssetClass): IAbstraction;
    storeAbstraction(abstraction: IAbstraction): void;
}
export declare class BoundsPickerPool implements IAbstractionPool {
    private static _store;
    readonly id: number;
    readonly abstractions: AbstractionSet;
    readonly pickGroup: PickGroup;
    constructor(pickGroup: PickGroup);
    requestAbstraction(assetClass: IAssetClass): IAbstraction;
    storeAbstraction(abstraction: IAbstraction): void;
}
//# sourceMappingURL=PickGroup.d.ts.map