import { ComponentInterface, EventEmitter } from '../../stencil-public-runtime';
import { BalElementStateInfo } from '../../utils/element-states';
import { BalAriaForm, BalAriaFormLinking } from '../../utils/form';
import { FormInput } from '../../utils/form-input';
import { Loggable, LogInstance } from '../../utils/log';
import { BalCheckboxOption } from './bal-checkbox.type';
export declare class Checkbox implements ComponentInterface, FormInput<any>, Loggable, BalAriaFormLinking {
    private inputId;
    private inheritedAttributes;
    private keyboardMode;
    nativeInput?: HTMLInputElement;
    el: HTMLBalCheckboxElement;
    log: LogInstance;
    createLogger(log: LogInstance): void;
    hasLabel: boolean;
    focused: boolean;
    buttonTabindex?: number;
    ariaForm: BalAriaForm;
    /**
     * Track focus state
     * If `true` checkbox needs to remain focused
     */
    wasFocused: boolean;
    outerElementState: BalElementStateInfo;
    innerElementState: BalElementStateInfo;
    mergedElementState: BalElementStateInfo;
    /**
     * PUBLIC PROPERTY API
     * ------------------------------------------------------
     */
    /**
     * The name of the control, which is submitted with the form data.
     */
    name: string;
    /**
     * Label of the radio item.
     */
    label: string;
    /**
     * If `true` the checkbox has no label
     */
    labelHidden: boolean;
    /**
     * If `true` the control is no padding
     */
    flat: boolean;
    /**
     * Defines the layout of the checkbox button
     */
    interface: BalProps.BalCheckboxInterface;
    /**
     * A DOMString representing the value of the checkbox. This is not displayed on the
     * client-side, but on the server this is the value given to the data
     * submitted with the checkbox's name.
     */
    value: string | number;
    /**
     * If `true`, the checkbox is selected.
     */
    checked: boolean;
    private initialValue;
    /**
     * 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;
    /**
     * If `true` the element can not mutated, meaning the user can not edit the control.
     */
    readonly: boolean;
    /**
     * If `true`, the user must fill in a value before submitting a form.
     */
    required: boolean;
    /**
     * If `true`, in Angular reactive forms the control will not be set invalid
     */
    autoInvalidOff: boolean;
    /**
     * If `true`, the value will not be send with a form submit
     */
    nonSubmit: boolean;
    /**
     * If `true` the component gets a invalid style.
     */
    invalid: boolean;
    /**
     * @internal
     */
    hovered: boolean;
    hoveredChanged(): void;
    /**
     * @internal
     */
    pressed: boolean;
    pressedChanged(): void;
    /**
     * Defines the color of the tile checkbox.
     */
    color?: BalProps.BalCheckboxTileColor;
    /**
     * @internal
     */
    colSize: BalProps.BalCheckboxGroupColumns;
    /**
     * @internal
     */
    colSizeTablet: BalProps.BalCheckboxGroupColumns;
    /**
     * @internal
     */
    colSizeMobile: BalProps.BalCheckboxGroupColumns;
    /**
     * Emitted when the toggle has focus.
     */
    balFocus: EventEmitter<BalEvents.BalCheckboxFocusDetail>;
    /**
     * Emitted when the toggle loses focus.
     */
    balBlur: EventEmitter<BalEvents.BalCheckboxBlurDetail>;
    /**
     * Emitted when the value property has changed.
     */
    balChange: EventEmitter<BalEvents.BalCheckboxChangeDetail>;
    /**
     * LIFECYCLE
     * ------------------------------------------------------
     */
    connectedCallback(): void;
    componentWillLoad(): void;
    componentWillRender(): Promise<void> | void;
    disconnectedCallback(): void;
    /**
     * LISTENERS
     * ------------------------------------------------------
     */
    listenOnClick(ev: UIEvent): void;
    resetHandler(ev: UIEvent): void;
    elementStateListener(info: BalElementStateInfo): void;
    /**
     * PUBLIC METHODS
     * ------------------------------------------------------
     */
    /**
     * Sets the focus on the checkbox input element.
     */
    setFocus(): Promise<void>;
    /**
     * Sets blur on the native `input`. Use this method instead of the global
     * `input.blur()`.
     * @internal
     */
    setBlur(): Promise<void>;
    /**
     * Returns the native `<input>` element used under the hood.
     */
    getInputElement(): Promise<HTMLInputElement | undefined>;
    /**
     * Options of the tab like label, value etc.
     */
    getOption(): Promise<BalCheckboxOption>;
    /**
     * @internal
     */
    updateState(): Promise<void>;
    /**
     * @internal
     */
    setAriaForm(ariaForm: BalAriaForm): Promise<void>;
    /**
     * GETTERS
     * ------------------------------------------------------
     */
    private get group();
    private get interactionChildElements();
    private get option();
    /**
     * EVENT HANDLERS
     * ------------------------------------------------------
     */
    private mergeElementState;
    private setChecked;
    private toggleChecked;
    private onClick;
    private onFocus;
    private onBlur;
    private onPointerDown;
    private onKeydown;
    /**
     * RENDER
     * ------------------------------------------------------
     */
    render(): any;
}
