/**
 * @module ButtonGroup
 */
import { ClientApplication } from '../../client';
import { ActionSetWithChildren } from '../helper';
import { ActionSetProps, Component, MetaAction } from '../types';
import { Button, Payload as ButtonPayload } from '../Button';
import { ErrorAction } from '../Error';
import { Action, Options, Payload } from './types';
export interface ButtonGroupUpdateAction extends MetaAction {
    readonly group: string;
    payload: Payload;
}
export declare type ButtonGroupAction = ButtonGroupUpdateAction | MetaAction;
export declare function update(group: string, component: Component, props: Payload): ButtonGroupUpdateAction;
export declare function isGroupedButton(options: ButtonGroup | object): options is ButtonGroup;
export declare function isGroupedButtonPayload(payload: Payload | object): payload is Payload;
export declare function getSafeButtonGroupProps(props: Payload): Pick<Payload, "disabled" | "label" | "buttons" | "id">;
export declare function validationError(action: ButtonGroupUpdateAction | MetaAction): undefined | ErrorAction;
export declare function isValidButtonGroupProps(buttonGroup: Payload): boolean;
export declare class ButtonGroup extends ActionSetWithChildren implements ActionSetProps<Options, Payload> {
    label: string;
    disabled: boolean;
    buttonsOptions: Button[];
    buttons: ButtonPayload[];
    constructor(app: ClientApplication<any>, options: Options);
    readonly options: Options;
    readonly payload: Payload;
    set(options: Partial<Options>, shouldUpdate?: boolean): this;
    dispatch(action: Action): this;
    updateButtons(newPayload: ButtonPayload): void;
    protected getSingleButton(button: Button): ButtonPayload;
    protected getButtons(buttonOptions?: Button[]): ButtonPayload[];
    private validateOptions(options);
}
export declare function create(app: ClientApplication<any>, options: Options): ButtonGroup;
