import '../../globals.js';
import Property from '../../axon/js/Property.js';
import TReadOnlyProperty from '../../axon/js/TReadOnlyProperty.js';
import Range from '../../dot/js/Range.js';
import StrictOmit from '../../phet-core/js/types/StrictOmit.js';
import Node from '../../scenery/js/nodes/Node.js';
import ComboBox, { ComboBoxOptions } from '../../sun/js/ComboBox.js';
import { NumberDisplayOptions } from './NumberDisplay.js';
type SubsetOfNumberDisplayOptions = StrictOmit<NumberDisplayOptions, 'valuePattern'>;
export type ComboBoxDisplayItem<T> = {
    choice: T;
    numberProperty: TReadOnlyProperty<number | null>;
    range: Range;
    units: string | TReadOnlyProperty<string>;
    numberDisplayOptions?: SubsetOfNumberDisplayOptions;
    tandemName?: string;
};
type SelfOptions = {
    numberDisplayOptions?: SubsetOfNumberDisplayOptions;
};
export type ComboBoxDisplayOptions = SelfOptions & ComboBoxOptions;
export default class ComboBoxDisplay<T> extends ComboBox<T> {
    private readonly disposeComboBoxDisplay;
    /**
     * @param choiceProperty - determines which item is currently selected
     * @param items - describes the items that appear in the ComboBox
     * @param listParent - parent for the ComboBox list
     * @param providedOptions?
     */
    constructor(choiceProperty: Property<T>, items: ComboBoxDisplayItem<T>[], listParent: Node, providedOptions?: ComboBoxDisplayOptions);
    dispose(): void;
}
export {};
