import * as _angular_core from '@angular/core';

/**
 * Component that provides a toggleable icon button with accessibility support.
 * Functions as a switch control that can be toggled between on/off states,
 * displaying different icons based on the current state.
 *
 * This component handles keyboard navigation, focus management, and proper
 * ARIA attributes for accessibility compliance.
 *
 * @usageNotes
 * ### Basic toggle
 * ```typescript
 * isFavorite = false;
 * ```
 * ```html
 * <eui-icon-toggle
 *   [(isChecked)]="isFavorite"
 *   iconSvgNameOn="star-filled"
 *   iconSvgNameOff="star-outline"
 *   ariaLabel="Toggle favorite"
 *   (toggle)="onToggle($event)">
 * </eui-icon-toggle>
 * ```
 *
 * ### With custom colors
 * ```html
 * <eui-icon-toggle
 *   [isChecked]="enabled"
 *   iconSvgNameOn="visibility"
 *   iconSvgNameOff="visibility-off"
 *   iconSvgFillColorOn="success"
 *   iconSvgFillColorOff="neutral"
 *   ariaLabel="Toggle visibility">
 * </eui-icon-toggle>
 * ```
 *
 * ### Accessibility
 * - Implements ARIA switch role with aria-checked state
 * - Keyboard accessible via Tab, Enter, and Space keys
 * - Provides keyboard shortcut via accesskey attribute
 * - Screen readers announce state changes
 *
 * ### Notes
 * - Use distinct icons for on/off states for clarity
 * - Set `isReadOnly` to prevent interaction while maintaining visual state
 * - Default colors: accent (on), neutral (off)
 * - Emits toggle event with boolean state on change
 */
declare class EuiIconToggleComponent {
    /**
     * Keyboard shortcut key.
     * @default 'i'
     */
    readonly keyboardAccessKey: _angular_core.InputSignal<string>;
    /**
     * Whether the toggle is in the checked/on state.
     * Bound to aria-checked attribute for accessibility.
     * @default false
     */
    readonly isChecked: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /** @internal two-way binding support */
    readonly isCheckedChange: _angular_core.OutputEmitterRef<boolean>;
    protected readonly _isChecked: _angular_core.WritableSignal<boolean>;
    /**
     * Whether the toggle is read-only (cannot be interacted with).
     * When true, tabindex is set to -1 and clicking will not change state.
     * @default undefined
     */
    readonly isReadOnly: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Data attribute for e2e testing.
     * @default 'eui-icon-toggle'
     */
    readonly e2eAttr: _angular_core.InputSignal<string>;
    /**
     * Unique identifier for the component.
     * @default 'eui-icon-toggle-{uniqueId}'
     */
    readonly id: _angular_core.InputSignal<string>;
    /**
     * Tab order value for keyboard navigation.
     * @default '0'
     */
    readonly tabindex: _angular_core.InputSignal<string>;
    /**
     * Accessible label for screen readers.
     * @default 'Toggle icon'
     */
    readonly ariaLabel: _angular_core.InputSignal<string>;
    /**
     * Size of the icon (s, m, l, xl).
     * @default 'm'
     */
    readonly iconSvgSize: _angular_core.InputSignal<string>;
    /**
     * Icon to display when toggle is in the ON state.
     */
    readonly iconSvgNameOn: _angular_core.InputSignal<string>;
    /**
     * Icon to display when toggle is in the OFF state.
     */
    readonly iconSvgNameOff: _angular_core.InputSignal<string>;
    /**
     * Color of the icon when toggle is in the ON state.
     * @default 'accent'
     */
    readonly iconSvgFillColorOn: _angular_core.InputSignal<string>;
    /**
     * Color of the icon when toggle is in the OFF state.
     * @default 'neutral'
     */
    readonly iconSvgFillColorOff: _angular_core.InputSignal<string>;
    /**
     * Event emitted when the toggle state changes.
     * Emits the new state (true = checked, false = unchecked).
     */
    readonly toggle: _angular_core.OutputEmitterRef<boolean>;
    constructor();
    protected readonly iconSvgName: _angular_core.Signal<string>;
    protected readonly iconSvgFillColor: _angular_core.Signal<string>;
    protected readonly _tabindex: _angular_core.Signal<string>;
    protected readonly _ariaLabel: _angular_core.Signal<string>;
    protected readonly _cssClasses: _angular_core.Signal<string>;
    protected _toggle(): void;
    /**
     * Host listener that handles keyboard events.
     * Triggers the toggle action on Enter or Space key press.
     *
     * @param {KeyboardEvent} event - The keyboard event
     */
    protected _onKeydown(event: KeyboardEvent): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<EuiIconToggleComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<EuiIconToggleComponent, "eui-icon-toggle", never, { "keyboardAccessKey": { "alias": "keyboardAccessKey"; "required": false; "isSignal": true; }; "isChecked": { "alias": "isChecked"; "required": false; "isSignal": true; }; "isReadOnly": { "alias": "isReadOnly"; "required": false; "isSignal": true; }; "e2eAttr": { "alias": "e2eAttr"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "tabindex": { "alias": "tabindex"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "iconSvgSize": { "alias": "iconSvgSize"; "required": false; "isSignal": true; }; "iconSvgNameOn": { "alias": "iconSvgNameOn"; "required": false; "isSignal": true; }; "iconSvgNameOff": { "alias": "iconSvgNameOff"; "required": false; "isSignal": true; }; "iconSvgFillColorOn": { "alias": "iconSvgFillColorOn"; "required": false; "isSignal": true; }; "iconSvgFillColorOff": { "alias": "iconSvgFillColorOff"; "required": false; "isSignal": true; }; }, { "isCheckedChange": "isCheckedChange"; "toggle": "toggle"; }, never, never, true, never>;
}

declare const EUI_ICON_TOGGLE: readonly [typeof EuiIconToggleComponent];

export { EUI_ICON_TOGGLE, EuiIconToggleComponent };
//# sourceMappingURL=eui-components-eui-icon-toggle.d.ts.map
