/**
 * This component creates a grouping of Option components.  Within the group
 * only one option can be selected at a time.
 *
 * ## Screen:
 * <img src="https://github.com/jmquigley/gadgets/blob/master/images/optionGroup.png" width="50%" />
 *
 * ## Examples:
 *
 * ```javascript
 * import {OptionGroup} from 'gadgets';
 *
 * <OptionGroup
 *     default="option1"
 *     disabled={this.props['disabled']}
 *     onSelection={this.handleSelect}
 *     options={[
 *         'option1',
 *         'option2',
 *         'option3',
 *         'option4 this is a longer string'
 *     ]}
 *     optionType={OptionType.circle}
 *     sizing={this.props['sizing']}
 *     title="test options"
 * />
 * ```
 *
 * #### Events
 * - `onSelection(text: string)` - When an option is selected in the group this
 * callback is invoked.  The text value of the option is passed to the
 * function.
 *
 * #### Styles
 * - `ui-option-group` - The global style applied to the container `div` around
 * the component.
 * - `ui-option-group-title` - The style applied to the `title` property
 *
 * #### Properties
 * - `default="" {string}` - The default option selected when the control
 * is created.
 * - `optionType=OptionType.square {OptionType}` - The Option component has 10
 * distinct graphics.  This option sets that choice.
 * - `options=[] {string[]}` - an array of of strings that represent the option
 * choices.
 * - `title="" {string}` - a string that represents the option group title
 *
 * @module OptionGroup
 */
/// <reference types="react" />
import { OrderedMap } from "immutable";
import { BaseComponent, BaseProps, BaseState } from "../shared";
import { OptionType } from "./Option";
export interface OptionGroupProps extends BaseProps {
    default?: string;
    onSelection?: (text: string) => void;
    optionType?: OptionType;
    options?: string[];
    title?: string;
}
export interface OptionGroupState extends BaseState {
    options?: OrderedMap<string, boolean>;
}
export declare class OptionGroup extends BaseComponent<OptionGroupProps, OptionGroupState> {
    static readonly defaultProps: OptionGroupProps;
    constructor(props: OptionGroupProps);
    private buildOptionList;
    /**
     * Takes the current list of labels and generates an ordered map of
     * boolean values related to each label in the group.  The value that is
     * selected is set to true in the map where the remaining are false.
     * This state is then used to build the Option components for the
     * grouping with one option in the selected state.
     * @param labels {string[]} - the list of option labels in the group
     * @param selected {string} - the label string of the option that was
     * selected.  This is used to set on e option to true and the
     * remaining options to false.
     * @returns a new Map<string, boolean> structure with labels as the key
     * and its current selection status
     */
    private static buildOptionState;
    private handleSelection;
    render(): JSX.Element;
}
export default OptionGroup;
