import '../../assert/js/assert.js';
import '../../globals.js';
/**
 * LevelSelectionButtonGroup is a group of related LevelSelectionButtons, used in games.
 *
 * Responsibilities include:
 * - Instantiation of the buttons, based on an 'items' array that describes the buttons.
 * - Setting an effective uniform size for the button icons.
 * - Layout of the buttons, see details below.
 * - Support for the gameLevels query parameter, via LevelSelectionButtonGroupOptions.gameLevels.
 *
 * Layout:
 * - The default layout is a single row of buttons, customizable via LevelSelectionButtonGroupOptions.flowBoxOptions.
 * - To create multiple rows of buttons, see example MultiRowButtonGroup in demoLevelSelectionButtonGroup.ts.
 * - To create a custom layout, see example XButtonGroup in demoLevelSelectionButtonGroup.ts.
 *
 * @author Chris Malley (PixelZoom, Inc.)
 */
import StrictOmit from '../../phet-core/js/types/StrictOmit.js';
import PickRequired from '../../phet-core/js/types/PickRequired.js';
import { FlowBoxOptions, LayoutNode, Node, NodeLayoutConstraint, NodeOptions } from '../../scenery/js/imports.js';
import LevelSelectionButton, { LevelSelectionButtonOptions } from './LevelSelectionButton.js';
import TProperty from '../../axon/js/TProperty.js';
export type LevelSelectionButtonGroupItem = {
    icon: Node;
    scoreProperty: TProperty<number>;
    tandemName?: string;
    options?: StrictOmit<LevelSelectionButtonOptions, 'tandem' | 'buttonHeight' | 'buttonWidth'>;
};
type SelfOptions = {
    levelSelectionButtonOptions?: StrictOmit<LevelSelectionButtonOptions, 'tandem' | 'buttonHeight' | 'buttonWidth'>;
    flowBoxOptions?: StrictOmit<FlowBoxOptions, 'children'>;
    createLayoutNode?: (buttons: LevelSelectionButton[]) => LayoutNode<NodeLayoutConstraint>;
    gameLevels: number[];
    groupButtonHeight?: number;
    groupButtonWidth?: number;
};
export type LevelSelectionButtonGroupOptions = SelfOptions & StrictOmit<NodeOptions, 'children'> & PickRequired<NodeOptions, 'tandem'>;
export default class LevelSelectionButtonGroup extends Node {
    private readonly buttons;
    /**
     * @param items - descriptions of the LevelSelectionButtons, ordered by increasing level number
     * @param [providedOptions]
     */
    constructor(items: LevelSelectionButtonGroupItem[], providedOptions?: LevelSelectionButtonGroupOptions);
    /**
     * Sets the focus to the button associated with a specified level number. If your simulation supports keyboard
     * traversal, you'll typically need to call this when returning to the UI that show the LevelSelectionButtonGroup,
     * for example, when the 'Back' or 'Start Over' button is pressed in a game.
     * @param level - numbered starting from 1, to comply with gameLevels query parameter
     */
    focusLevelSelectionButton(level: number): void;
}
export {};
//# sourceMappingURL=LevelSelectionButtonGroup.d.ts.map