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

/**
 * A clickable button component that displays only an icon without text. Provides visual feedback states and supports various sizing and styling options. Commonly used in toolbars, navigation bars, and compact UI layouts where space is limited.
 *
 * @usageNotes
 * ### Basic icon button
 * ```html
 * <eui-icon-button
 *   icon="edit"
 *   ariaLabel="Edit item"
 *   (buttonClick)="onEdit()">
 * </eui-icon-button>
 * ```
 *
 * ### With state variant
 * ```html
 * <eui-icon-button
 *   icon="delete"
 *   euiDanger
 *   size="l"
 *   ariaLabel="Delete item">
 * </eui-icon-button>
 * ```
 *
 * ### Accessibility
 * - Always provide descriptive `ariaLabel` for screen readers
 * - Button is keyboard accessible via Tab and Enter/Space
 * - Focus states are clearly visible
 *
 * ### Notes
 * - Use `hasNoPadding` for compact layouts or icon-only toolbars
 * - Apply `euiRounded` for circular button shape
 * - Set `euiDisabled` to prevent interaction
 * - Choose between `hasFocusHoverColor` and `hasFocusHoverBg` for hover effects
 */
declare class EuiIconButtonComponent implements OnInit {
    get cssClasses(): string;
    /**
     * The name of the icon to display from the eUI icon library.
     */
    icon: string;
    /**
     * URL path to a custom icon image. Used when displaying icons not available in the eUI icon library.
     */
    iconUrl: string;
    /**
     * CSS color value to apply as the icon fill color. Overrides default theme colors.
     */
    fillColor: string;
    /**
     * Controls the icon dimensions. Default: 'm'
     */
    size: '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' | '2xl' | '3xl' | '4xl';
    /**
     * Accessible label for screen readers describing the button's purpose.
     * @default 'eUI Icon button'
     */
    ariaLabel: string;
    /**
     * Tab order position for keyboard navigation. Set to -1 to remove from tab sequence. Default: 0
     */
    tabindex: number;
    /**
     * Removes internal padding from the button, allowing the icon to fill the entire button area. Default: false
     */
    hasNoPadding: boolean;
    /**
     * Enables hover state that expands beyond the button boundaries, typically used in dense layouts. Default: false
     */
    hasOverflowHover: boolean;
    /**
     * Applies color change on focus and hover states instead of background change. Mutually exclusive with hasFocusHoverBg. Default: false
     */
    hasFocusHoverColor: boolean;
    /**
     * Applies background color change on focus and hover states. Automatically disabled when hasFocusHoverColor is true. Default: true
     */
    hasFocusHoverBg: boolean;
    /**
     * Applies rounded corners to the button shape instead of default square corners. Default: false
     */
    euiRounded: boolean;
    /**
     * Disables the button, preventing interaction and applying disabled styling. Default: false
     */
    euiDisabled: boolean;
    /**
     * Emitted when the button is clicked. Payload contains the native click Event object.
     */
    buttonClick: EventEmitter<Event>;
    protected baseStatesDirective: BaseStatesDirective;
    onClick(event: Event): void;
    ngOnInit(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<EuiIconButtonComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<EuiIconButtonComponent, "eui-icon-button", never, { "icon": { "alias": "icon"; "required": false; }; "iconUrl": { "alias": "iconUrl"; "required": false; }; "fillColor": { "alias": "fillColor"; "required": false; }; "size": { "alias": "size"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "hasNoPadding": { "alias": "hasNoPadding"; "required": false; }; "hasOverflowHover": { "alias": "hasOverflowHover"; "required": false; }; "hasFocusHoverColor": { "alias": "hasFocusHoverColor"; "required": false; }; "hasFocusHoverBg": { "alias": "hasFocusHoverBg"; "required": false; }; "euiRounded": { "alias": "euiRounded"; "required": false; }; "euiDisabled": { "alias": "euiDisabled"; "required": false; }; }, { "buttonClick": "buttonClick"; }, never, ["eui-badge"], true, [{ directive: typeof i1.BaseStatesDirective; inputs: { "euiPrimary": "euiPrimary"; "euiSecondary": "euiSecondary"; "euiSuccess": "euiSuccess"; "euiInfo": "euiInfo"; "euiWarning": "euiWarning"; "euiDanger": "euiDanger"; "euiVariant": "euiVariant"; "euiSizeS": "euiSizeS"; }; outputs: {}; }]>;
    static ngAcceptInputType_hasNoPadding: unknown;
    static ngAcceptInputType_hasOverflowHover: unknown;
    static ngAcceptInputType_hasFocusHoverColor: unknown;
    static ngAcceptInputType_hasFocusHoverBg: unknown;
    static ngAcceptInputType_euiRounded: unknown;
    static ngAcceptInputType_euiDisabled: unknown;
}

declare const EUI_ICON_BUTTON: readonly [typeof EuiIconButtonComponent];

export { EUI_ICON_BUTTON, EuiIconButtonComponent };
//# sourceMappingURL=eui-components-eui-icon-button.d.ts.map
