import * as i0 from '@angular/core';
import { EventEmitter } from '@angular/core';
import { ControlValueAccessor, FormControl } from '@angular/forms';
import * as i1 from '@eui/components/shared';
import { BaseStatesDirective } from '@eui/components/shared';

/**
 * @description
 * Slide toggle component used to represent a boolean state.
 * It can be used as a standalone toggle or integrated with Angular Reactive Forms.
 * Supports icons for ON/OFF states and visual variants via EUI base state directives.
 *
 * @usageNotes
 * ### Basic Usage
 * ```html
 * <!-- Simple toggle -->
 * <eui-slide-toggle [(isChecked)]="enabled" />
 *
 * <!-- With icons -->
 * <eui-slide-toggle
 *   [iconSvgNameOn]="'check'"
 *   [iconSvgNameOff]="'close'"
 *   [(isChecked)]="enabled" />
 *
 * <!-- Reactive forms -->
 * <form [formGroup]="form">
 *   <eui-slide-toggle formControlName="notifications" />
 * </form>
 * ```
 *
 * ### Accessibility
 * - Provide meaningful aria-label describing the toggle's purpose
 * - Toggle is keyboard accessible (Space/Enter to toggle)
 * - Disabled state is properly communicated to screen readers
 *
 * ### Notes
 * - Supports semantic color variants (euiPrimary, euiSuccess, euiDanger, etc.)
 * - Size variants (euiSizeS, euiSizeM, euiSizeL, euiSizeXL) control toggle dimensions
 * - Icons are optional and can be customized for ON/OFF states
 */
declare class EuiSlideToggleComponent implements ControlValueAccessor {
    /** CSS classes applied to the host element */
    get cssClasses(): string;
    /**
     * Unique identifier for the toggle
     * @default Generated unique ID with 'eui-slide-toggle-' prefix
     */
    id: string;
    /**
     * attribute attached to the aria-label of the input field
     * @default 'eUI slide toggle'
     */
    ariaLabel: string;
    /**
     * Name of the icon to display when toggle is ON
     * @default undefined
     */
    iconSvgNameOn: string;
    /**
     * Name of the icon to display when toggle is OFF
     * @default undefined
     */
    iconSvgNameOff: string;
    /**
     * Fill color for the ON state icon
     * @default 'secondary'
     */
    iconSvgFillColorOn: string;
    /**
     * Fill color for the OFF state icon
     * @default 'secondary'
     */
    iconSvgFillColorOff: string;
    /**
     * Current checked state of the toggle
     * @default false
     */
    isChecked: boolean;
    /**
     * Whether the toggle is disabled
     * @default false
     */
    set disabled(value: boolean);
    get disabled(): boolean;
    /**
     * Event emitted when toggle state changes
     * @emits boolean - The new toggle state
     */
    slideToggleChange: EventEmitter<boolean>;
    /** Form control for the toggle when used in reactive forms */
    checkboxControl: FormControl<any>;
    private _disabled;
    private cd;
    private control;
    protected baseStatesDirective: BaseStatesDirective;
    constructor();
    /**
     * Toggles the current state if not disabled
     * Emits the new state and notifies form control
     */
    toggle(): void;
    /**
     * Implements ControlValueAccessor
     * Updates the toggle's checked state
     */
    writeValue(value: boolean): void;
    /**
     * Implements ControlValueAccessor
     * Updates the toggle's disabled state
     */
    setDisabledState(isDisabled: boolean): void;
    /**
     * Handles focus out event
     * Notifies form control of touch event
     */
    onFocusOut(): void;
    /**
     * Implements ControlValueAccessor
     * Registers change handler
     * @todo Improve type definition or make generic
     */
    registerOnChange(fn: any): void;
    /**
     * Implements ControlValueAccessor
     * Registers touch handler
     * @todo Improve type definition or make generic
     */
    registerOnTouched(fn: any): void;
    private onChange;
    private onTouch;
    static ɵfac: i0.ɵɵFactoryDeclaration<EuiSlideToggleComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<EuiSlideToggleComponent, "eui-slide-toggle", never, { "id": { "alias": "id"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "iconSvgNameOn": { "alias": "iconSvgNameOn"; "required": false; }; "iconSvgNameOff": { "alias": "iconSvgNameOff"; "required": false; }; "iconSvgFillColorOn": { "alias": "iconSvgFillColorOn"; "required": false; }; "iconSvgFillColorOff": { "alias": "iconSvgFillColorOff"; "required": false; }; "isChecked": { "alias": "isChecked"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "slideToggleChange": "slideToggleChange"; }, never, never, true, [{ directive: typeof i1.BaseStatesDirective; inputs: { "euiPrimary": "euiPrimary"; "euiSecondary": "euiSecondary"; "euiInfo": "euiInfo"; "euiWarning": "euiWarning"; "euiSuccess": "euiSuccess"; "euiDanger": "euiDanger"; "euiVariant": "euiVariant"; "euiSizeS": "euiSizeS"; "euiSizeM": "euiSizeM"; "euiSizeL": "euiSizeL"; "euiSizeXL": "euiSizeXL"; "euiSizeVariant": "euiSizeVariant"; }; outputs: {}; }]>;
    static ngAcceptInputType_isChecked: unknown;
    static ngAcceptInputType_disabled: unknown;
}

declare const EUI_SLIDE_TOGGLE: readonly [typeof EuiSlideToggleComponent];

export { EUI_SLIDE_TOGGLE, EuiSlideToggleComponent };
//# sourceMappingURL=eui-components-eui-slide-toggle.d.ts.map
