import { AfterContentInit, ElementRef, EventEmitter, QueryList, SimpleChanges, TemplateRef } from '@angular/core';
import { ControlValueAccessor, FormControl } from '@angular/forms';
import { PrimeTemplate } from 'primeng/api';
import { BaseComponent } from 'primeng/basecomponent';
import { Nullable } from 'primeng/ts-helpers';
import { CheckboxChangeEvent } from './checkbox.interface';
import { CheckboxStyle } from './style/checkboxstyle';
import * as i0 from "@angular/core";
import * as i1 from "primeng/api";
export declare const CHECKBOX_VALUE_ACCESSOR: any;
/**
 * Checkbox is an extension to standard checkbox element with theming.
 * @group Components
 */
export declare class Checkbox extends BaseComponent implements AfterContentInit, ControlValueAccessor {
    /**
     * Value of the checkbox.
     * @group Props
     */
    value: any;
    /**
     * Name of the checkbox group.
     * @group Props
     */
    name: string | undefined;
    /**
     * When present, it specifies that the element should be disabled.
     * @group Props
     */
    disabled: boolean | undefined;
    /**
     * Allows to select a boolean value instead of multiple values.
     * @group Props
     */
    binary: boolean | undefined;
    /**
     * Establishes relationships between the component and label(s) where its value should be one or more element IDs.
     * @group Props
     */
    ariaLabelledBy: string | undefined;
    /**
     * Used to define a string that labels the input element.
     * @group Props
     */
    ariaLabel: string | undefined;
    /**
     * Index of the element in tabbing order.
     * @group Props
     */
    tabindex: number | undefined;
    /**
     * Identifier of the focus input to match a label defined for the component.
     * @group Props
     */
    inputId: string | undefined;
    /**
     * Inline style of the component.
     * @group Props
     */
    style: {
        [klass: string]: any;
    } | null | undefined;
    /**
     * Inline style of the input element.
     * @group Props
     */
    inputStyle: {
        [klass: string]: any;
    } | null | undefined;
    /**
     * Style class of the component.
     * @group Props
     */
    styleClass: string | undefined;
    /**
     * Style class of the input element.
     * @group Props
     */
    inputClass: string | undefined;
    /**
     * When present, it specifies input state as indeterminate.
     * @group Props
     */
    indeterminate: boolean;
    /**
     * Defines the size of the component.
     * @group Props
     */
    size: 'large' | 'small';
    /**
     * Form control value.
     * @group Props
     */
    formControl: FormControl | undefined;
    /**
     * Icon class of the checkbox icon.
     * @group Props
     */
    checkboxIcon: string | undefined;
    /**
     * When present, it specifies that the component cannot be edited.
     * @group Props
     */
    readonly: boolean | undefined;
    /**
     * When present, it specifies that checkbox must be checked before submitting the form.
     * @group Props
     */
    required: boolean | undefined;
    /**
     * When present, it specifies that the component should automatically get focus on load.
     * @group Props
     */
    autofocus: boolean | undefined;
    /**
     * Value in checked state.
     * @group Props
     */
    trueValue: any;
    /**
     * Value in unchecked state.
     * @group Props
     */
    falseValue: any;
    /**
     * Specifies the input variant of the component.
     * @group Props
     */
    variant: 'filled' | 'outlined';
    /**
     * Callback to invoke on value change.
     * @param {CheckboxChangeEvent} event - Custom value change event.
     * @group Emits
     */
    onChange: EventEmitter<CheckboxChangeEvent>;
    /**
     * Callback to invoke when the receives focus.
     * @param {Event} event - Browser event.
     * @group Emits
     */
    onFocus: EventEmitter<Event>;
    /**
     * Callback to invoke when the loses focus.
     * @param {Event} event - Browser event.
     * @group Emits
     */
    onBlur: EventEmitter<Event>;
    inputViewChild: Nullable<ElementRef>;
    get checked(): boolean;
    get containerClass(): {
        'p-checkbox p-component': boolean;
        'p-checkbox-checked p-highlight': boolean;
        'p-disabled': boolean;
        'p-variant-filled': boolean;
        'p-checkbox-sm p-inputfield-sm': boolean;
        'p-checkbox-lg p-inputfield-lg': boolean;
    };
    _indeterminate: import("@angular/core").WritableSignal<any>;
    /**
     * The template of the checkbox icon.
     * @group Templates
     */
    checkboxIconTemplate: TemplateRef<any>;
    templates: Nullable<QueryList<PrimeTemplate>>;
    _checkboxIconTemplate: TemplateRef<any> | undefined;
    model: any;
    onModelChange: Function;
    onModelTouched: Function;
    focused: boolean;
    _componentStyle: CheckboxStyle;
    ngAfterContentInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    updateModel(event: any): void;
    handleChange(event: any): void;
    onInputFocus(event: any): void;
    onInputBlur(event: any): void;
    focus(): void;
    writeValue(model: any): void;
    registerOnChange(fn: Function): void;
    registerOnTouched(fn: Function): void;
    setDisabledState(val: boolean): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<Checkbox, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<Checkbox, "p-checkbox, p-checkBox, p-check-box", never, { "value": { "alias": "value"; "required": false; }; "name": { "alias": "name"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "binary": { "alias": "binary"; "required": false; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "style": { "alias": "style"; "required": false; }; "inputStyle": { "alias": "inputStyle"; "required": false; }; "styleClass": { "alias": "styleClass"; "required": false; }; "inputClass": { "alias": "inputClass"; "required": false; }; "indeterminate": { "alias": "indeterminate"; "required": false; }; "size": { "alias": "size"; "required": false; }; "formControl": { "alias": "formControl"; "required": false; }; "checkboxIcon": { "alias": "checkboxIcon"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "trueValue": { "alias": "trueValue"; "required": false; }; "falseValue": { "alias": "falseValue"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; }, { "onChange": "onChange"; "onFocus": "onFocus"; "onBlur": "onBlur"; }, ["checkboxIconTemplate", "templates"], never, true, never>;
    static ngAcceptInputType_disabled: unknown;
    static ngAcceptInputType_binary: unknown;
    static ngAcceptInputType_tabindex: unknown;
    static ngAcceptInputType_indeterminate: unknown;
    static ngAcceptInputType_readonly: unknown;
    static ngAcceptInputType_required: unknown;
    static ngAcceptInputType_autofocus: unknown;
}
export declare class CheckboxModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<CheckboxModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<CheckboxModule, never, [typeof Checkbox, typeof i1.SharedModule], [typeof Checkbox, typeof i1.SharedModule]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<CheckboxModule>;
}
