import '../../../../../globals.js';
import Disposable, { DisposableOptions } from '../../../../../axon/js/Disposable.js';
import Emitter from '../../../../../axon/js/Emitter.js';
import StrictOmit from '../../../../../phet-core/js/types/StrictOmit.js';
import { ParallelDOMOptions } from '../../../../../scenery/js/accessibility/pdom/ParallelDOM.js';
import Node from '../../../../../scenery/js/nodes/Node.js';
import Path from '../../../../../scenery/js/nodes/Path.js';
import { GrabReleaseCueNodeOptions } from '../../nodes/GrabReleaseCueNode.js';
import GroupSelectModel from '../model/GroupSelectModel.js';
type SelfOptions<ItemModel, ItemNode extends Node> = {
    getGroupItemToSelect: (() => ItemModel | null);
    isGroupItemEnabled?: (groupItem: ItemModel) => boolean;
    getNodeFromModelItem: (model: ItemModel) => ItemNode | null;
    getHighlightNodeFromModelItem?: (model: ItemModel) => Node | null;
    onGrab?: (groupItem: ItemModel) => void;
    onRelease?: (groupItem: ItemModel) => void;
    grabReleaseCueOptions?: Partial<StrictOmit<GrabReleaseCueNodeOptions, 'visibleProperty'>>;
    primaryFocusedNodeOptions?: ParallelDOMOptions;
};
type ParentOptions = DisposableOptions;
export type GroupSelectViewOptions<ItemModel, ItemNode extends Node> = SelfOptions<ItemModel, ItemNode> & ParentOptions;
declare class GroupSelectView<ItemModel, ItemNode extends Node> extends Disposable {
    readonly model: GroupSelectModel<ItemModel>;
    private readonly primaryFocusedNode;
    readonly groupSortGroupFocusHighlightPath: Path;
    readonly grabReleaseCueNode: Node;
    readonly positionSortCueNodeEmitter: Emitter<[]>;
    private readonly getNodeFromModelItem;
    private readonly isGroupItemEnabled;
    constructor(model: GroupSelectModel<ItemModel>, primaryFocusedNode: Node, // Client is responsible for setting accessibleName and nothing else!
    providedOptions: GroupSelectViewOptions<ItemModel, ItemNode>);
    protected onGroupItemChange(newGroupItem: ItemModel): void;
    /**
     * Programmatic way to activate the group select interaction, set its selection, and grab that selection.
     */
    keyboardGrab(groupItem: ItemModel): void;
    dispose(): void;
}
export default GroupSelectView;
//# sourceMappingURL=GroupSelectView.d.ts.map