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 { BalCheckboxOption } from '../bal-checkbox.type';
export declare class CheckboxGroup implements ComponentInterface, Loggable, BalMutationObserver, BalAriaFormLinking, BalFocusObserver {
    private inputId;
    private inheritedAttributes;
    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?: BalCheckboxOption[];
    protected optionChanged(): Promise<void>;
    /**
     * Defines the layout of the checkbox button
     */
    interface?: BalProps.BalCheckboxGroupInterface;
    /**
     * If `true` it acts as the main form control
     */
    control: 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 user cannot interact with the checkboxes.
     */
    disabled?: boolean;
    disabledChanged(value: boolean | undefined): void;
    /**
     * If `true`, the user cannot interact with the checkboxes.
     */
    readonly?: boolean;
    readonlyChanged(value: boolean | undefined): void;
    /**
     * The value of the control.
     */
    value: any[];
    valueChanged(_value: any[], oldValue: any[]): void;
    /**
     * Defines the column size like the grid.
     */
    columns: BalProps.BalCheckboxGroupColumns;
    columnsChanged(value: BalProps.BalCheckboxGroupColumns): void;
    /**
     * Defines the column size for tablet and bigger like the grid.
     */
    columnsTablet: BalProps.BalCheckboxGroupColumns;
    columnsTabletChanged(value: BalProps.BalCheckboxGroupColumns): void;
    /**
     * Defines the column size for mobile and bigger like the grid.
     */
    columnsMobile: BalProps.BalCheckboxGroupColumns;
    columnsMobileChanged(value: BalProps.BalCheckboxGroupColumns): 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.BalCheckboxGroupChangeDetail>;
    /**
     * Emitted when the toggle has focus.
     */
    balFocus: EventEmitter<BalEvents.BalCheckboxGroupFocusDetail>;
    /**
     * Emitted when the toggle loses focus.
     */
    balBlur: EventEmitter<BalEvents.BalCheckboxGroupBlurDetail>;
    /**
     * LIFECYCLE
     * ------------------------------------------------------
     */
    connectedCallback(): void;
    componentWillLoad(): void;
    /**
     * LISTENERS
     * ------------------------------------------------------
     */
    hasFocus: boolean;
    focusInListener(ev: any): void;
    focusOutListener(ev: any): void;
    mutationObserverActive: boolean;
    mutationListener(): void;
    listenOnCheckboxChange(ev: UIEvent): void;
    resetHandler(ev: UIEvent): void;
    checkboxFocusListener(ev: CustomEvent<FocusEvent>): void;
    checkboxBlurListener(ev: CustomEvent<FocusEvent>): void;
    /**
     * PUBLIC METHODS
     * ------------------------------------------------------
     */
    /** @internal */
    setValue(value: any[]): Promise<void>;
    /**
     * Find the options properties by its value
     */
    getOptionByValue(value: string): Promise<BalCheckboxOption>;
    /**
     * @internal
     */
    setAriaForm(ariaForm: BalAriaForm): Promise<void>;
    /**
     * PRIVATE METHODS
     * ------------------------------------------------------
     */
    private sync;
    /**
     * GETTERS
     * ------------------------------------------------------
     */
    private getCheckboxes;
    /**
     * EVENT BINDING
     * ------------------------------------------------------
     */
    private onClick;
    private updateValues;
    private onOptionChange;
    /**
     * RENDER
     * ------------------------------------------------------
     */
    render(): any;
}
