import '../../assert/js/assert.js';
import '../../globals.js';
/**
 * LevelSelectionButton is a push button for selecting a game level. It is typically created by LevelSelectionButtonGroup.
 * The original specification was done in https://github.com/phetsims/vegas/issues/59, but there have been numerous
 * changes since then.
 *
 * Note that LevelSelectionButton originally supported an optional 'best time' display. That display was intentionally
 * removed from LevelSelectionButton, and from the level-selection user-interface in general, as the result of
 * a design meeting on 10/15/2023. See https://github.com/phetsims/vegas/issues/120#issuecomment-1858310218.
 *
 * @author John Blanco
 * @author Chris Malley (PixelZoom, Inc.)
 * @author Andrea Lin
 */
import TProperty from '../../axon/js/TProperty.js';
import Dimension2 from '../../dot/js/Dimension2.js';
import StrictOmit from '../../phet-core/js/types/StrictOmit.js';
import { Node } from '../../scenery/js/imports.js';
import RectangularPushButton, { RectangularPushButtonOptions } from '../../sun/js/buttons/RectangularPushButton.js';
type SelfOptions = {
    buttonWidth?: number;
    buttonHeight?: number;
    createScoreDisplay?: (scoreProperty: TProperty<number>) => Node;
    scoreDisplayProportion?: number;
    scoreDisplayMinXMargin?: number;
    scoreDisplayMinYMargin?: number;
    iconToScoreDisplayYSpace?: number;
    soundPlayerIndex?: number;
};
export type LevelSelectionButtonOptions = SelfOptions & StrictOmit<RectangularPushButtonOptions, 'content'>;
export default class LevelSelectionButton extends RectangularPushButton {
    private readonly disposeLevelSelectionButton;
    /**
     * @param icon - appears on the button above the score display, scaled to fit
     * @param scoreProperty
     * @param providedOptions
     */
    constructor(icon: Node, scoreProperty: TProperty<number>, providedOptions?: LevelSelectionButtonOptions);
    /**
     * Creates a new icon with specific dimensions. The provided icon is scaled to fit, and a background with the
     * specified size is added to ensure that the size of the returned Node is correct.
     */
    static createSizedImageNode(icon: Node, size: Dimension2): Node;
    dispose(): void;
}
export {};
//# sourceMappingURL=LevelSelectionButton.d.ts.map