import { ComponentInterface, EventEmitter } from '../../../stencil-public-runtime';
import { HTMLStencilElement } from '../../../stencil-public-runtime';
import { BalFocusObserver } from '../../../utils/focus';
import { BalAriaForm, BalAriaFormLinking } from '../../../utils/form';
import { Loggable, LogInstance } from '../../../utils/log';
import { BalMutationObserver } from '../../../utils/mutation';
import { BalRadioOption } from '../bal-radio.type';
export declare class RadioGroup implements ComponentInterface, Loggable, BalMutationObserver, BalAriaFormLinking, BalFocusObserver {
    private inputId;
    private inheritedAttributes;
    private initialValue?;
    log: LogInstance;
    createLogger(log: LogInstance): void;
    el: HTMLStencilElement;
    ariaForm: BalAriaForm;
    /**
     * PUBLIC PROPERTY API
     * ------------------------------------------------------
     */
    /**
     * Steps can be passed as a property or through HTML markup.
     */
    options?: BalRadioOption[];
    protected optionChanged(): Promise<void>;
    /**
     * Defines the layout of the radio button
     */
    interface?: BalProps.BalRadioGroupInterface;
    /**
     * If `true`, the radios can be deselected.
     */
    allowEmptySelection: boolean;
    /**
     * The name of the control, which is submitted with the form data.
     */
    name: string;
    /**
     * Displays the checkboxes vertically
     */
    vertical: boolean;
    /**
     * If `true`, the controls will be vertically on mobile devices.
     */
    verticalOnMobile: boolean;
    /**
     * Uses the whole width
     */
    expanded: boolean;
    /**
     * If `true`, the element is not mutable, focusable, or even submitted with the form. The user can neither edit nor focus on the control, nor its form control descendants.
     */
    invalid?: boolean;
    invalidChanged(value: boolean | undefined): void;
    /**
     * If `true`, the element is not mutable, focusable, or even submitted with the form. The user can neither edit nor focus on the control, nor its form control descendants.
     */
    disabled?: boolean;
    disabledChanged(value: boolean | undefined): void;
    /**
     * If `true` the element can not mutated, meaning the user can not edit the control.
     */
    readonly?: boolean;
    readonlyChanged(value: boolean | undefined): void;
    /**
     * the value of the radio group.
     */
    value?: any | null;
    valueChanged(): void;
    /**
     * Defines the column size like the grid.
     */
    columns: BalProps.BalRadioGroupColumns;
    columnsChanged(value: BalProps.BalRadioGroupColumns): void;
    /**
     * Defines the column size for tablet and bigger like the grid.
     */
    columnsTablet: BalProps.BalRadioGroupColumns;
    columnsTabletChanged(value: BalProps.BalRadioGroupColumns): void;
    /**
     * Defines the column size for mobile and bigger like the grid.
     */
    columnsMobile: BalProps.BalRadioGroupColumns;
    columnsMobileChanged(value: BalProps.BalRadioGroupColumns): void;
    /**
     * If `true`, in Angular reactive forms the control will not be set invalid
     */
    autoInvalidOff: boolean;
    /**
     * Emitted when the checked property has changed.
     */
    balChange: EventEmitter<BalEvents.BalRadioGroupChangeDetail>;
    /**
     * Emitted when the toggle has focus.
     */
    balFocus: EventEmitter<BalEvents.BalRadioGroupFocusDetail>;
    /**
     * Emitted when the toggle loses focus.
     */
    balBlur: EventEmitter<BalEvents.BalRadioGroupBlurDetail>;
    /**
     * LIFECYCLE
     * ------------------------------------------------------
     */
    connectedCallback(): void;
    componentWillLoad(): void;
    /**
     * LISTENERS
     * ------------------------------------------------------
     */
    hasFocus: boolean;
    focusInListener(ev: any): void;
    focusOutListener(ev: any): void;
    mutationObserverActive: boolean;
    mutationListener(): void;
    listenOnClick(ev: UIEvent): void;
    radioFocusListener(ev: CustomEvent<FocusEvent>): void;
    radioBlurListener(ev: CustomEvent<FocusEvent>): void;
    resetListener(ev: UIEvent): void;
    onKeydown(ev: any): void;
    private onOptionChange;
    /**
     * PUBLIC METHODS
     * ------------------------------------------------------
     */
    /** @internal */
    setValue(value: number | string | boolean): Promise<void>;
    /**
     * Find the options properties by its value
     */
    getOptionByValue(value: string): Promise<BalRadioOption>;
    /**
     * @internal
     */
    setAriaForm(ariaForm: BalAriaForm): Promise<void>;
    /**
     * PRIVATE METHODS
     * ------------------------------------------------------
     */
    private setRadioTabindex;
    private setRadioInterface;
    private setRadioChecked;
    /**
     * GETTERS
     * ------------------------------------------------------
     */
    private getRadios;
    /**
     * EVENT BINDING
     * ------------------------------------------------------
     */
    private onClick;
    /**
     * RENDER
     * ------------------------------------------------------
     */
    render(): any;
}
