/**
 * RectangularRadioButtonGroup is a group of rectangular radio buttons, in either horizontal or vertical orientation.
 * See sun.ButtonsScreenView for example usage.
 *
 * @author Aaron Davis (PhET Interactive Simulations)
 * @author Chris Malley (PixelZoom, Inc.)
 */
import '../../../globals.js';
import '../../../chipper/js/browser/initialize-globals.js';
import type PhetioProperty from '../../../axon/js/PhetioProperty.js';
import type PickOptional from '../../../phet-core/js/types/PickOptional.js';
import type StrictOmit from '../../../phet-core/js/types/StrictOmit.js';
import { type ParallelDOMOptions, type TrimParallelDOMOptions } from '../../../scenery/js/accessibility/pdom/ParallelDOM.js';
import FlowBox, { type FlowBoxOptions } from '../../../scenery/js/layout/nodes/FlowBox.js';
import type Node from '../../../scenery/js/nodes/Node.js';
import type TSoundPlayer from '../../../tambo/js/TSoundPlayer.js';
import type GroupItemOptions from '../GroupItemOptions.js';
import RectangularRadioButton, { type RectangularRadioButtonOptions } from './RectangularRadioButton.js';
export type RectangularRadioButtonGroupItem<T> = {
    value: T;
    label?: Node;
    phetioDocumentation?: string;
    options?: StrictOmit<RectangularRadioButtonOptions, 'tandem'>;
} & GroupItemOptions;
export type RectangularRadioButtonLabelAlign = 'top' | 'bottom' | 'left' | 'right';
type SelfOptions = {
    soundPlayers?: TSoundPlayer[] | null;
    labelAlign?: RectangularRadioButtonLabelAlign;
    labelSpacing?: number;
    touchAreaXDilation?: number;
    touchAreaYDilation?: number;
    mouseAreaXDilation?: number;
    mouseAreaYDilation?: number;
    radioButtonOptions?: StrictOmit<RectangularRadioButtonOptions, 'soundPlayer' | // use SelfOptions.soundPlayers
    'touchAreaXDilation' | // use SelfOptions.touchAreaXDilation
    'touchAreaYDilation' | // use SelfOptions.touchAreaYDilation
    'mouseAreaXDilation' | // use SelfOptions.mouseAreaXDilation
    'mouseAreaYDilation'>;
};
type TrimmedParentOptions = TrimParallelDOMOptions<FlowBoxOptions> & PickOptional<ParallelDOMOptions, 'labelTagName'>;
export type RectangularRadioButtonGroupOptions = SelfOptions & StrictOmit<TrimmedParentOptions, 'children'>;
export default class RectangularRadioButtonGroup<T> extends FlowBox {
    private readonly disposeRadioButtonGroup;
    private readonly radioButtonMap;
    constructor(property: PhetioProperty<T>, items: RectangularRadioButtonGroupItem<T>[], providedOptions?: RectangularRadioButtonGroupOptions);
    /**
     * Find the RectangularRadioButton corresponding to a value. Note that in the scene graph, the button may be nested
     * under other layers, so use caution for coordinate transformations.
     * @param value
     * @returns the corresponding button
     */
    getButtonForValue(value: T): RectangularRadioButton<T>;
    dispose(): void;
}
export {};
