import { IEventEmitter } from '@breadstone/mosaik-elements';
import { IInvalidable } from '../../../Behaviors/Invalidable';
import { ISlottable } from '../../../Behaviors/Slottable';
import type { IGroupChangedEventDetail } from '../../../events';
import { CustomElement } from '../../Abstracts/CustomElement';
import type { IChoiceGroupElementProps } from './IChoiceGroupElementProps';
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.
 *
 * @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.
 *
 * @name ChoiceGroup
 * @element mosaik-choice-group
 * @category Forms
 *
 * @slot  - The default slot.
 * @slot error - The error slot.
 * @slot header - The header slot.
 *
 * @csspart root - The root part.
 *
 * @cssprop {String} --choice-group-background-color - The group background color CSS custom property.
 * @cssprop {String} --choice-group-border-color - The group border color CSS custom property.
 * @cssprop {String} --choice-group-border-radius - The group border radius CSS custom property.
 * @cssprop {String} --choice-group-border-style - The group border style CSS custom property.
 * @cssprop {String} --choice-group-border-width - The group border width CSS custom property.
 * @cssprop {String} --choice-group-font-family - The group font family CSS custom property.
 * @cssprop {String} --choice-group-font-letter-spacing - The group font letter spacing CSS custom property.
 * @cssprop {String} --choice-group-font-line-height - The group font line height CSS custom property.
 * @cssprop {String} --choice-group-font-size - The group font size CSS custom property.
 * @cssprop {String} --choice-group-font-text-decoration - The group font text decoration CSS custom property.
 * @cssprop {String} --choice-group-font-text-transform - The group font text transform CSS custom property.
 * @cssprop {String} --choice-group-font-weight - The group font weight CSS custom property.
 * @cssprop {String} --choice-group-foreground-color - The group foreground color CSS custom property.
 * @cssprop {String} --choice-group-gap - The group gap CSS custom property.
 * @cssprop {String} --choice-group-padding-bottom - The group padding bottom CSS custom property.
 * @cssprop {String} --choice-group-padding-left - The group padding left CSS custom property.
 * @cssprop {String} --choice-group-padding-right - The group padding right CSS custom property.
 * @cssprop {String} --choice-group-padding-top - The group padding top CSS custom property.
 * @cssprop {String} --choice-group-shadow - The group shadow CSS custom property.
 * @cssprop {String} --choice-group-shadow-blur - The group shadow blur CSS custom property.
 * @cssprop {String} --choice-group-shadow-color - The group shadow color CSS custom property.
 * @cssprop {String} --choice-group-shadow-offset-x - The group shadow offset x CSS custom property.
 * @cssprop {String} --choice-group-shadow-offset-y - The group shadow offset y CSS custom property.
 * @cssprop {String} --choice-group-shadow-spread - The group shadow spread CSS custom property.
 * @cssprop {String} --choice-group-transition-duration - The group transition duration CSS custom property.
 * @cssprop {String} --choice-group-transition-mode - The group transition mode CSS custom property.
 * @cssprop {String} --choice-group-transition-property - The group transition property CSS custom property.
 * @cssprop {String} --choice-group-translate - The group translate CSS custom property.
 *
 * @fires choiceChanged {GroupChangedEvent} - Called when the value of the `ChoiceGroupElement` changes.
 *
 * @example
 * Basic choice group:
 * ```html
 * <mosaik-choice-group name="plan">
 *   <mosaik-choice label="Basic" value="basic"></mosaik-choice>
 *   <mosaik-choice label="Professional" value="pro"></mosaik-choice>
 *   <mosaik-choice label="Enterprise" value="enterprise"></mosaik-choice>
 * </mosaik-choice-group>
 * ```
 *
 * @example
 * Choice group with header, variant, and horizontal layout:
 * ```html
 * <mosaik-choice-group name="size" orientation="horizontal" variant="primary">
 *   <mosaik-choice-group-header>Select size</mosaik-choice-group-header>
 *   <mosaik-choice label="Small" value="s"></mosaik-choice>
 *   <mosaik-choice label="Medium" value="m"></mosaik-choice>
 *   <mosaik-choice label="Large" value="l"></mosaik-choice>
 * </mosaik-choice-group>
 * ```
 *
 * @public
 */
export declare class ChoiceGroupElement extends ChoiceGroupElement_base implements IChoiceGroupElementProps, IInvalidable, ISlottable {
    private readonly _provider;
    private readonly _choiceChanged;
    private _name;
    private _required;
    private _eventSubscriptions;
    /**
     * @public
     */
    constructor();
    /**
     * Returns the `is` property.
     * The `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 `IEventDetail` as event detail.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get choiceChanged(): IEventEmitter<IGroupChangedEventDetail>;
    /**
     * @public
     * @override
     */
    onSlotChanges(): void;
    /**
     * Returns whether a form will validate when it is submitted, without having to submit it.
     *
     * @public
     * @override
     */
    checkValidity(): boolean;
    /**
     * Resets the element to its initial state.
     *
     * @public
     */
    reset(): void;
    /**
     * Emits the `choiceChanged` event.
     *
     * @protected
     */
    protected onChoiceChanged(args: IGroupChangedEventDetail): 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;
    }
}
export {};
//# sourceMappingURL=ChoiceGroupElement.d.ts.map