import { CheckboxPassThrough, CheckboxChangeEvent, CheckboxIconTemplateContext } from 'primeng/types/checkbox';
export * from 'primeng/types/checkbox';
import * as _angular_core from '@angular/core';
import { Provider, ElementRef, TemplateRef } from '@angular/core';
import { FormControl } from '@angular/forms';
import { BaseEditableHolder } from 'primeng/baseeditableholder';
import * as i1 from 'primeng/bind';
import { Bind } from 'primeng/bind';
import { CSSProperties, InputVariant, InputSize } from 'primeng/types/shared';
import { BaseStyle } from 'primeng/base';
import * as i2 from 'primeng/api';

/**
 *
 * Checkbox is an extension to standard checkbox element with theming.
 *
 * [Live Demo](https://www.primeng.org/checkbox/)
 *
 * @module checkboxstyle
 *
 */
declare enum CheckboxClasses {
    /**
     * Class name of the root element
     */
    root = "p-checkbox",
    /**
     * Class name of the box element
     */
    box = "p-checkbox-box",
    /**
     * Class name of the input element
     */
    input = "p-checkbox-input",
    /**
     * Class name of the indicator element
     */
    indicator = "p-checkbox-indicator",
    /**
     * Class name of the icon element
     */
    icon = "p-checkbox-icon"
}
declare class CheckboxStyle extends BaseStyle {
    name: string;
    style: string;
    classes: {
        root: ({ instance }: {
            instance: any;
        }) => (string | {
            'p-checkbox-checked': any;
            'p-disabled': any;
            'p-invalid': any;
            'p-variant-filled': boolean;
            'p-checkbox-sm p-inputfield-sm': boolean;
            'p-checkbox-lg p-inputfield-lg': boolean;
        })[];
        box: string;
        input: string;
        indicator: string;
        icon: string;
    };
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<CheckboxStyle, never>;
    static ɵprov: _angular_core.ɵɵInjectableDeclaration<CheckboxStyle>;
}
interface CheckboxStyle extends BaseStyle {
}

declare const CHECKBOX_VALUE_ACCESSOR: Provider;
/**
 * Checkbox is an extension to standard checkbox element with theming.
 * @group Components
 */
declare class Checkbox extends BaseEditableHolder<CheckboxPassThrough> {
    componentName: string;
    /**
     * Value of the checkbox.
     * @group Props
     */
    value: _angular_core.InputSignal<any>;
    /**
     * Allows to select a boolean value instead of multiple values.
     * @group Props
     */
    binary: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Establishes relationships between the component and label(s) where its value should be one or more element IDs.
     * @group Props
     */
    ariaLabelledBy: _angular_core.InputSignal<string | undefined>;
    /**
     * Used to define a string that labels the input element.
     * @group Props
     */
    ariaLabel: _angular_core.InputSignal<string | undefined>;
    /**
     * Index of the element in tabbing order.
     * @group Props
     */
    tabindex: _angular_core.InputSignal<number | undefined>;
    /**
     * Identifier of the focus input to match a label defined for the component.
     * @group Props
     */
    inputId: _angular_core.InputSignal<string | undefined>;
    /**
     * Inline style of the input element.
     * @group Props
     */
    inputStyle: _angular_core.InputSignal<CSSProperties>;
    /**
     * Style class of the input element.
     * @group Props
     */
    inputClass: _angular_core.InputSignal<string | undefined>;
    /**
     * When present, it specifies input state as indeterminate.
     * @group Props
     */
    indeterminate: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Form control value.
     * @group Props
     */
    formControl: _angular_core.InputSignal<FormControl<any> | undefined>;
    /**
     * Icon class of the checkbox icon.
     * @group Props
     */
    checkboxIcon: _angular_core.InputSignal<string | undefined>;
    /**
     * When present, it specifies that the component cannot be edited.
     * @group Props
     */
    readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * When present, it specifies that the component should automatically get focus on load.
     * @group Props
     */
    autofocus: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Value in checked state.
     * @group Props
     */
    trueValue: _angular_core.InputSignal<any>;
    /**
     * Value in unchecked state.
     * @group Props
     */
    falseValue: _angular_core.InputSignal<any>;
    /**
     * Specifies the input variant of the component.
     * @defaultValue undefined
     * @group Props
     */
    variant: _angular_core.InputSignal<InputVariant | undefined>;
    /**
     * Specifies the size of the component.
     * @defaultValue undefined
     * @group Props
     */
    size: _angular_core.InputSignal<InputSize | undefined>;
    /**
     * Callback to invoke on value change.
     * @param {CheckboxChangeEvent} event - Custom value change event.
     * @group Emits
     */
    onChange: _angular_core.OutputEmitterRef<CheckboxChangeEvent>;
    /**
     * Callback to invoke when the receives focus.
     * @param {Event} event - Browser event.
     * @group Emits
     */
    onFocus: _angular_core.OutputEmitterRef<Event>;
    /**
     * Callback to invoke when the loses focus.
     * @param {Event} event - Browser event.
     * @group Emits
     */
    onBlur: _angular_core.OutputEmitterRef<Event>;
    inputViewChild: _angular_core.Signal<ElementRef<any> | undefined>;
    /**
     * Custom checkbox icon template.
     * @group Templates
     */
    iconTemplate: _angular_core.Signal<TemplateRef<CheckboxIconTemplateContext> | undefined>;
    _indeterminate: _angular_core.WritableSignal<boolean>;
    focused: _angular_core.WritableSignal<boolean>;
    _componentStyle: CheckboxStyle;
    bindDirectiveInstance: Bind;
    $pcCheckbox: Checkbox | undefined;
    $variant: _angular_core.Signal<InputVariant | null>;
    requiredAttr: _angular_core.Signal<"" | undefined>;
    readonlyAttr: _angular_core.Signal<"" | undefined>;
    disabledAttr: _angular_core.Signal<"" | undefined>;
    checked: _angular_core.Signal<boolean>;
    iconTemplateContext: _angular_core.Signal<{
        checked: boolean;
        class: string | undefined;
        dataP: string;
    }>;
    dataP: _angular_core.Signal<string>;
    constructor();
    onAfterViewChecked(): void;
    updateModel(event: Event): void;
    handleChange(event: Event): void;
    onInputFocus(event: FocusEvent): void;
    onInputBlur(event: FocusEvent): void;
    focus(): void;
    /**
     * @override
     *
     * @see {@link BaseEditableHolder.writeControlValue}
     * Writes the value to the control.
     */
    writeControlValue(value: any, setModelValue: (value: any) => void): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<Checkbox, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<Checkbox, "p-checkbox, p-check-box", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "binary": { "alias": "binary"; "required": false; "isSignal": true; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "tabindex": { "alias": "tabindex"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "inputStyle": { "alias": "inputStyle"; "required": false; "isSignal": true; }; "inputClass": { "alias": "inputClass"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "formControl": { "alias": "formControl"; "required": false; "isSignal": true; }; "checkboxIcon": { "alias": "checkboxIcon"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "autofocus": { "alias": "autofocus"; "required": false; "isSignal": true; }; "trueValue": { "alias": "trueValue"; "required": false; "isSignal": true; }; "falseValue": { "alias": "falseValue"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "onChange": "onChange"; "onFocus": "onFocus"; "onBlur": "onBlur"; }, ["iconTemplate"], never, true, [{ directive: typeof i1.Bind; inputs: {}; outputs: {}; }]>;
}
declare class CheckboxModule {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<CheckboxModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<CheckboxModule, never, [typeof Checkbox, typeof i2.SharedModule], [typeof Checkbox, typeof i2.SharedModule]>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<CheckboxModule>;
}

export { CHECKBOX_VALUE_ACCESSOR, Checkbox, CheckboxClasses, CheckboxModule, CheckboxStyle };
