import '../../assert/js/assert.js';
import '../../globals.js';
import TProperty from '../../axon/js/TProperty.js';
import { Node, TPaint, VoicingNode } from '../../scenery/js/imports.js';
import TSoundPlayer from '../../tambo/js/TSoundPlayer.js';
import Tandem from '../../tandem/js/Tandem.js';
import { ComboBoxItemNoNode } from './ComboBox.js';
import { ComboBoxListItemNodeOptions } from './ComboBoxListItemNode.js';
import Panel, { PanelOptions } from './Panel.js';
type SelfOptions = {
    highlightFill?: TPaint;
    comboBoxListItemNodeOptions?: ComboBoxListItemNodeOptions;
    openedSoundPlayer?: TSoundPlayer;
    closedNoChangeSoundPlayer?: TSoundPlayer;
};
export type ComboBoxListBoxOptions = SelfOptions & PanelOptions;
export default class ComboBoxListBox<T> extends Panel {
    private readonly content;
    private readonly disposeComboBoxListBox;
    private readonly voiceOnSelectionNode;
    private selectionOnFireAction;
    /**
     * @param property
     * @param items
     * @param nodes
     * @param hideListBoxCallback - called to hide the list box
     * @param focusButtonCallback - called to transfer focus to the combo box's button
     * @param voiceOnSelectionNode - Node to voice the response when selecting a combo box item.
     * @param tandem
     * @param providedOptions
     */
    constructor(property: TProperty<T>, items: ComboBoxItemNoNode<T>[], nodes: Node[], hideListBoxCallback: () => void, focusButtonCallback: () => void, voiceOnSelectionNode: VoicingNode, tandem: Tandem, providedOptions?: ComboBoxListBoxOptions);
    dispose(): void;
    /**
     * Sets the visibility of one or more items in the listbox that correspond to a value. Assumes that each item
     * in the listbox has a unique value.
     * @param value - the value associated with the ComboBoxItem
     * @param visible
     */
    setItemVisible(value: T, visible: boolean): void;
    /**
     * Is the item that corresponds to a value visible when the listbox is popped up?
     * @param value - the value associated with the ComboBoxItem
     */
    isItemVisible(value: T): boolean;
    /**
     * Returns all list item Nodes, as children of the list box content in the correct order which may have changed
     * from PhET-iO.
     */
    private getAllListItemNodes;
    /**
     * Returns an array containing all the visible list item Nodes in top-to-bottom order.
     */
    private getVisibleListItemNodes;
    /**
     * Gets the ComboBoxListItemNode that corresponds to a specified value. Assumes that values are unique.
     */
    private getListItemNode;
    /**
     * Gets the item in the ComboBox that currently has focus.
     */
    private getFocusedItemNode;
    /**
     * Focuses the ComboBoxListItemNode that corresponds to a specified value. If the item for that value is not
     * visible, focus is placed on the first visible item.
     */
    focusListItemNode(value: T): void;
    /**
     * voice the response from selecting a new item Node. The response will differ depending on if the selection
     * changed the Property.
     */
    private voiceOnNewSelection;
}
export {};
//# sourceMappingURL=ComboBoxListBox.d.ts.map