import { EventEmitter, OnInit, AfterViewInit, ChangeDetectorRef, ElementRef } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { BoxGroupComponent } from './box-group';
/** box type: radio or checkbox */
export declare type BOX_TYPE = 'radio' | 'checkbox';
/**
 * A single checkbox or radiobox
 */
export declare class InputBoxComponent implements OnInit, AfterViewInit, ControlValueAccessor {
    private _el;
    private _cd;
    /** When the box state change, emit a change event with a boolean value */
    change: EventEmitter<boolean>;
    /** to enable [(checked)] style, we need to add a checkedChange event */
    checkedChange: EventEmitter<boolean>;
    /**
     * box type: either 'checkbox' or 'radio'
     * @default checkbox
     */
    type: 'radio' | 'checkbox';
    /**
     * input name, used to group radio inputs
     * @docs-private
     */
    uuid: string;
    /**
     * Whether the box is disabled
     * @default false
     */
    disabled: boolean;
    /**
     * Whether the box is checked
     * @default false
     */
    checked: boolean;
    /**
     * Whether the box is intermediate
     * @default false
     */
    intermediate: boolean;
    /**
     * extra theme class
     * @default ''
     */
    theme: string;
    /** box value, can be any type */
    value: any;
    /** if using within boxgroup, the parent boxgroup component */
    _parentBox: BoxGroupComponent;
    /**
     * box component constructor
     *
     * @param {BoxGroupComponent?} parentBox - find parent box group component and inject it
     */
    constructor(parentBox: BoxGroupComponent, _el: ElementRef, _cd: ChangeDetectorRef);
    ngOnInit(): void;
    ngAfterViewInit(): void;
    /**
     * input checked change event
     *
     * @param {boolean} checked - whether the input is checked
     * @param {Event} event - original change event, to prevent input default change event
     * @docs-private
     */
    onChange(checked: boolean, event: Event): void;
    /**
     * Prevent input default change event
     *
     * @param {Event} event - original change event, to prevent input default change event
     * @docs-private
     */
    onInputChange(event: Event): void;
    /**
     * Prevent default click event
     *
     * @param {Event} event - original change event, to prevent input default change event
     * @docs-private
     */
    preventCheckboxDefaultEvent(event: Event): void;
    /**
     * The method to be called in order to update ngModel.
     * Now `ngModel` binding is not supported in multiple selection mode.
     */
    private _onModelChange;
    /**
     * Registers a callback that will be triggered when the value has changed.
     * Implemented as part of ControlValueAccessor.
     * @param fn On change callback function.
     */
    registerOnChange(fn: Function): void;
    /** onTouch function registered via registerOnTouch (ControlValueAccessor). */
    private _onTouch;
    /**
     * Registers a callback that will be triggered when the control has been touched.
     * Implemented as part of ControlValueAccessor.
     * @param fn On touch callback function.
     */
    registerOnTouched(fn: Function): void;
    /**
     * Sets the model value. Implemented as part of ControlValueAccessor.
     * @param value Value to be set to the model.
     */
    writeValue(value: any): void;
    /**
     * Toggles the disabled state of the component. Implemented as part of ControlValueAccessor.
     * @param isDisabled Whether the component should be disabled.
     */
    setDisabledState(isDisabled: boolean): void;
    /**
     * update form model value and mark for check
     */
    _updateFormModel(): void;
}
