import { FocusOrigin } from '@angular/cdk/a11y';
import { EventEmitter, ExistingProvider } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { FocusIndicatorDirective } from '../../directives/accessibility';
import { FocusableControl } from '../menu/interfaces/focusable-control.interface';
import * as i0 from "@angular/core";
export declare const CHECKBOX_VALUE_ACCESSOR: ExistingProvider;
export declare class CheckboxComponent<T = number> implements ControlValueAccessor, FocusableControl {
    private readonly _changeDetector;
    /** Provide a default unique id value for the checkbox */
    _checkboxId: string;
    /** Determines if the checkbox should be checked, unchecked or indeterminate. */
    id: string;
    /** Specifies the form name of the element. */
    name: string | null;
    /** Determines if the checkbox should be checked, unchecked or indeterminate. */
    value: boolean | T;
    /** Specified if this is a required input. */
    required: boolean;
    /** Specifies the tabindex of the input. */
    tabindex: number;
    /** If set to `true` the checkbox will not toggle state when clicked. */
    clickable: boolean;
    /** If set to `true` the checkbox will be displayed without a border and background. */
    simplified: boolean;
    /**
     * If `value` is set to the indeterminate value specified using this attribute, it will neither
     * display the checkbox as checked or unchecked, and will instead show the indeterminate variation.
     */
    indeterminateValue: T | number;
    /** Specify if the checkbox should be disabled. */
    disabled: boolean;
    /** Provide an aria label for the checkbox. */
    ariaLabel: string;
    /** Provide an aria-labelled by property for the checkbox. */
    ariaLabelledby: string;
    /** Emits when `value` has been changed. */
    valueChange: EventEmitter<boolean | T>;
    /** Determine if the underlying input component has been focused with the keyboard */
    _focused: boolean;
    /** Used to inform Angular forms that the component has been touched */
    onTouchedCallback: () => void;
    /** Used to inform Angular forms that the component value has changed */
    onChangeCallback: (_: boolean | T) => void;
    /** Get the focus indicator to set focus */
    _focusIndicator?: FocusIndicatorDirective;
    /** Toggle the current state of the checkbox */
    toggle(): void;
    writeValue(value: boolean | T): void;
    /** Allow Angular forms for provide us with a callback for when the input value changes */
    registerOnChange(fn: (_: boolean | T) => void): void;
    /** Allow Angular forms for provide us with a callback for when the touched state changes */
    registerOnTouched(fn: () => void): void;
    /** Allow Angular forms to disable the component */
    setDisabledState(isDisabled: boolean): void;
    /** Focus the input element */
    focus(origin: FocusOrigin): void;
    setInputTabIndex(tabindex: number): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<CheckboxComponent<any>, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<CheckboxComponent<any>, "ux-checkbox", never, { "id": { "alias": "id"; "required": false; }; "name": { "alias": "name"; "required": false; }; "value": { "alias": "value"; "required": false; }; "required": { "alias": "required"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "clickable": { "alias": "clickable"; "required": false; }; "simplified": { "alias": "simplified"; "required": false; }; "indeterminateValue": { "alias": "indeterminateValue"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "ariaLabel": { "alias": "aria-label"; "required": false; }; "ariaLabelledby": { "alias": "aria-labelledby"; "required": false; }; }, { "valueChange": "valueChange"; }, never, ["*"], false, never>;
}
