import { IEventEmitter } from '@breadstone/mosaik-elements';
import type { Appearance } from '../../../Types/Appearance';
import type { FlowDirection } from '../../../Types/FlowDirection';
import type { Variant } from '../../../Types/Variant';
import { CustomElement } from '../../Abstracts/CustomElement';
import type { IChoiceGroupChangedEvent, IChoiceGroupChangedEventDetail } from './Events/ChoiceGroupChangedEventDetail';
import type { IChoiceGroupElementProps } from './IChoiceGroupElementProps';
import { IInvalidable } from '../../../Behaviors/Invalidable';
import { ISlottable } from '../../../Behaviors/Slottable';
declare const ChoiceGroupElement_base: (abstract new (...args: Array<any>) => import("../../../Behaviors/Themeable").IThemeableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Orientable").IOrientableProps) & (abstract new (...args: Array<any>) => IInvalidable & import("../../../Behaviors/Invalidable").IInvalidableProps<unknown>) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Valueable").IValueableProps<unknown>) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Disableable").IDisableableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Appearanceable").IAppearanceableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Variantable").IVariantableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Slottable").ISlottableProps & ISlottable) & typeof CustomElement & import("../../../Behaviors/Themeable").IThemeableCtor;
/**
 * Choice Group - A container for grouping multiple choices, such as radio buttons or checkboxes.
 *
 * @element mosaik-choice-group
 *
 * @description
 * The Choice Group component is used to organize and manage a set of choices, allowing users to select one or more options from the group. It typically contains multiple Choice components, each representing an individual option. Common examples of Choice Groups include radio button groups and checkbox groups.
 *
 * @category Forms
 *
 * @fires choiceChanged - Called when the value of the `ChoiceGroupElement` changes.
 *
 * @example
 * ```html
 * <mosaik-choice-group>
 *   <mosaik-choice>Option 1</mosaik-choice>
 *   <mosaik-choice>Option 2</mosaik-choice>
 *   <mosaik-choice>Option 3</mosaik-choice>
 * </mosaik-choice-group>
 * ```
 *
 * @public
 */
export declare class ChoiceGroupElement extends ChoiceGroupElement_base implements IChoiceGroupElementProps, IInvalidable, ISlottable {
    private readonly _choiceChanged;
    private _name;
    private _required;
    private _eventSubscriptions;
    /**
     * @public
     */
    constructor();
    /**
     * Returns the `{@link is}` property.
     * The `{@link is}` property represents natural name of this element.
     *
     * @public
     * @static
     * @readonly
     */
    static get is(): string;
    /**
     * Gets or sets the `name` property.
     *
     * @public
     * @attr
     */
    get name(): string;
    set name(value: string);
    /**
     * Gets or sets the `required` property.
     *
     * @public
     * @attr
     */
    get required(): boolean;
    set required(value: boolean);
    /**
     * Called when the value of the `ChoiceGroupElement` changes.
     * Provides reference to `{@link IEventDetail}` as event detail.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get choiceChanged(): IEventEmitter<IChoiceGroupChangedEventDetail>;
    /**
     * @public
     * @override
     */
    onSlotChanges(): void;
    /**
     * Emits the {@link choiceChanged} event.
     *
     * @protected
     */
    protected onChoiceChanged(args: IChoiceGroupChangedEventDetail): void;
    /**
     * @protected
     */
    protected onDisabledPropertyChange(_prev?: boolean, next?: boolean): void;
    /**
     * @protected
     */
    protected onAppearancePropertyChange(_prev?: Appearance, next?: Appearance): void;
    /**
     * @protected
     */
    protected onVariantPropertyChange(_prev?: Variant, next?: Variant): void;
    /**
     * @protected
     */
    protected onNamePropertyChange(_prev?: string, next?: string): void;
    /**
     * @protected
     */
    protected onDirPropertyChange(_prev?: FlowDirection, next?: FlowDirection): void;
    /**
     * @protected
     */
    protected onValuePropertyChange(_prev?: Array<unknown>, next?: Array<unknown>): void;
    /**
     * @private
     */
    private onChoiceCheckChanged;
    /**
     * @private
     */
    private clearEvents;
}
/**
 * @public
 */
export declare namespace ChoiceGroupElement {
    type Props = IChoiceGroupElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-choice-group': ChoiceGroupElement;
    }
    interface HTMLElementEventMap {
        choiceChanged: IChoiceGroupChangedEvent;
    }
}
export {};
//# sourceMappingURL=ChoiceGroupElement.d.ts.map