import * as i0 from '@angular/core';
import { OnInit, DoCheck, OnChanges, EventEmitter, ElementRef, Renderer2, SimpleChanges } from '@angular/core';
import { ControlValueAccessor, NgControl } from '@angular/forms';
import { InputDirective } from '@eui/components/shared';
import { BooleanInput } from '@angular/cdk/coercion';
/**
* @description
* Checkbox input field that allows users to select or deselect a boolean value.
* Supports standard checked state, disabled and readonly modes, validation feedback, and an optional indeterminate (mixed) state.
*
* Angular component that provides a custom checkbox input implementation.
* Extends {@link InputDirective} and implements form control functionality.
*
* @usageNotes
* ### Basic Usage
* ```html
*
* I accept the terms and conditions
* ```
*
* ### With Indeterminate State
* ```typescript
*
* ```
*
* ### Accessibility
* - Always associate checkbox with a label using `for` attribute or wrap in ``
* - Component automatically provides `aria-label` based on checked state
* - Supports keyboard interaction (Space key to toggle)
* - Use `isInvalid` to communicate validation errors to screen readers
*
* ### Notes
* - Indeterminate state is automatically cleared when checkbox is clicked
* - Works seamlessly with Angular Forms (both template-driven and reactive)
* - Readonly state prevents interaction but maintains visual appearance
*
* @component
* @selector input[euiInputCheckBox]
* @implements {@link OnInit}
* @implements {@link DoCheck}
* @implements {@link OnChanges}
* @implements {@link ControlValueAccessor}
*/
declare class EuiInputCheckboxComponent extends InputDirective implements OnInit, DoCheck, OnChanges, ControlValueAccessor {
/**
* Gets the CSS classes for the checkbox component.
* Combines base classes with validation state classes.
*
* @returns {string} Space-separated list of CSS classes
*/
get cssClasses(): string;
/**
* Event emitter that fires when the indeterminate state changes.
*
* @event indeterminateChange
* @type {EventEmitter}
*/
readonly indeterminateChange: EventEmitter;
/**
* Controls the indeterminate (mixed) state of the checkbox.
* When true, the checkbox appears in an indeterminate state.
* This state is automatically cleared when the checkbox is clicked.
*
* @property {boolean} indeterminate
*/
get indeterminate(): boolean;
set indeterminate(value: BooleanInput);
/**
* Controls the invalid state of the checkbox. Used for displaying validation errors.
*
* @property {boolean} isInvalid
*/
get isInvalid(): boolean;
set isInvalid(state: any);
protected _isInvalid: boolean;
protected type: string;
/**
* Controls the checked state of the checkbox.
*
* @property {boolean} checked
*/
get checked(): boolean;
set checked(value: BooleanInput);
/**
* Attaches an aria-label attribute based on the checked state.
*
* @property {string} ariaLabel
*/
get ariaLabel(): string;
protected ngControl: NgControl;
protected _elementRef: ElementRef;
protected _renderer: Renderer2;
protected _checked: boolean;
private _indeterminate;
constructor();
/**
* Lifecycle hook that is called after data-bound properties are initialized.
* Sets the default control value if needed.
*/
ngOnInit(): void;
/**
* Lifecycle hook that performs custom change detection.
* Updates invalid state based on control status.
*/
ngDoCheck(): void;
/**
* Lifecycle hook that is called when data-bound properties change.
* Handles changes to checked and readonly states.
*
* @param {SimpleChanges} changes - Object containing changed properties
*/
ngOnChanges(changes: SimpleChanges): void;
/**
* Implements ControlValueAccessor writeValue method.
* Updates the checked state of the checkbox.
*
* @param {boolean} obj - The value to write
*/
writeValue(obj: boolean): void;
registerOnChange(fn: any): void;
registerOnTouched(fn: any): void;
setDisabledState?(isDisabled: boolean): void;
/**
* Event handler for checkbox change events.
*
* @param {boolean} checked - The new checked state
* @protected
*/
protected onChanged(checked: boolean): void;
/**
* Event handler for space key press.
* Prevents space key action when checkbox is readonly.
*
* @param {KeyboardEvent} event - The keyboard event
* @protected
*/
protected onSpacePressed(event: KeyboardEvent): void;
protected onChange: (_: T) => void;
protected onBlur: (_: any) => void;
/**
* Sets the invalid state of the checkbox.
*
* @param {any} state - The invalid state to set (true/false)
* @protected
*/
protected setInvalid(state?: boolean): void;
/**
* Sets the indeterminate state of the checkbox. This is also known as "mixed" mode and can be used to
* represent a checkbox with three states, e.g. a checkbox that represents a nested list of
* check-able items.
*
* @param value
*/
private _syncIndeterminate;
static ɵfac: i0.ɵɵFactoryDeclaration;
static ɵcmp: i0.ɵɵComponentDeclaration;
}
declare const EUI_INPUT_CHECKBOX: readonly [typeof EuiInputCheckboxComponent];
export { EUI_INPUT_CHECKBOX, EuiInputCheckboxComponent };
//# sourceMappingURL=eui-components-eui-input-checkbox.d.ts.map