import * as i0 from '@angular/core';
import { EventEmitter, Renderer2, ElementRef } from '@angular/core';
import * as i1 from '@eui/components/shared';
import { BaseStatesDirective } from '@eui/components/shared';
import { BooleanInput } from '@angular/cdk/coercion';

/**
 * @description
 * A versatile button component that supports various states, sizes, and visual styles.
 * It can be used as a native `<button>` or `<a>` element while preserving consistent EUI behavior and styling.
 *
 * @usageNotes
 * #### Basic buttons with variants
 * ```html
 * <button euiButton>Default</button>
 * <button euiButton euiPrimary>Primary</button>
 * <button euiButton euiSecondary>Secondary</button>
 * <button euiButton euiSuccess>Success</button>
 * ```
 *
 * #### Icon button
 * ```html
 * <button euiButton euiIconButton aria-label="Notifications">
 *   <eui-icon-svg icon="bell:outline"></eui-icon-svg>
 * </button>
 * ```
 *
 * #### CTA and block buttons
 * ```html
 * <button euiButton euiCTAButton>Call to Action</button>
 * <button euiButton euiBlockButton>Full Width</button>
 * ```
 *
 * #### Size variants
 * ```html
 * <button euiButton euiSizeS>Small</button>
 * <button euiButton euiSizeM>Medium</button>
 * <button euiButton euiSizeL>Large</button>
 * ```
 *
 * #### Disabled and checked states
 * ```html
 * <button euiButton [euiDisabled]="true">Disabled</button>
 * <button euiButton [isChecked]="true">Checked</button>
 * ```
 *
 * #### As link
 * ```html
 * <a euiButton href="/page">Link Button</a>
 * ```
 *
 * ```ts
 * onButtonClick(button: EuiButtonComponent): void {
 *   console.log('Button clicked:', button);
 * }
 * ```
 *
 * ### Accessibility
 * - Native button/anchor semantics preserved for screen readers
 * - Keyboard accessible with Enter/Space (button) or Enter (link)
 * - euiIconButton requires aria-label for icon-only buttons
 * - Disabled state prevents interaction and is announced to screen readers
 * - Focus ring visible by default (remove with hasNoFocusRing if alternative focus indicator exists)
 * - isChecked state is visually indicated and announced
 *
 * ### Notes
 * - Use on `<button>` or `<a>` elements via euiButton attribute
 * - Color variants: euiPrimary, euiBranding, euiSecondary, euiSuccess, euiInfo, euiWarning, euiDanger, euiInverse
 * - Size variants: euiSizeXS, euiSizeS, euiSizeM (default), euiSizeL
 * - euiBasicButton removes background for minimal styling
 * - euiCTAButton applies prominent call-to-action styling
 * - euiBlockButton makes button full-width
 * - euiIconButton optimizes layout for icon-only content
 * - euiAvatarButton styles for avatar dropdown triggers
 * - euiLineWrap allows multi-line button text
 * - isCompact reduces padding and dimensions
 * - euiOutline applies outline/ghost styling
 * - euiRounded applies rounded corners
 * - euiResponsive adjusts sizing based on viewport
 * - euiStart/euiEnd aligns content within button
 * - buttonClick event emits component instance on click
 */
declare class EuiButtonComponent {
    /**
     * @description
     * Computes and returns the CSS classes for the button based on its current state
     *
     * @returns {string} Space-separated string of CSS class names
     */
    get cssClasses(): string;
    /**
     * @description Data attribute for e2e testing
     * @default eui-button
     */
    e2eAttr: string;
    /** @description ID attribute for the button element */
    id: string;
    /**
     * @description When true, applies basic styling without background
     * @default false
     */
    euiBasicButton: boolean;
    /**
     * @description When true, styles the button as a call-to-action
     * @default false
     */
    euiCTAButton: boolean;
    /**
     * @description When true, makes the button full-width
     * @default false
     */
    euiBlockButton: boolean;
    /**
     * @description When true, styles the button for icon-only content
     * @default false
     */
    euiIconButton: boolean;
    /**
     * @description When true, style the button when used in avatar trigger (for dropdown trigger f.e. see actionable avatar)
     * @default false
     */
    euiAvatarButton: boolean;
    /**
     * @description When true, allows text content to wrap
     * @default false
     */
    euiLineWrap: boolean;
    /**
     * @description When true, applies styling with lower padding / reduced height and width
     * @default false
     */
    isCompact: boolean;
    /**
     * @description When true, applies styling without focus ring
     * @default false
     */
    hasNoFocusRing: boolean;
    /**
     * @description
     * Controls the checked state of the button
     * When true, applies accent styling
     */
    get isChecked(): boolean;
    set isChecked(value: BooleanInput);
    /**
     * @description
     * Controls the disabled state of the button
     * When true, adds the disabled attribute and prevents interaction
     */
    get euiDisabled(): boolean;
    set euiDisabled(value: BooleanInput);
    /**
     * @description
     * Event emitted when the button is clicked
     * Emits the button component instance
     */
    buttonClick: EventEmitter<EuiButtonComponent>;
    baseStatesDirective: BaseStatesDirective;
    protected _renderer: Renderer2;
    protected _elementRef: ElementRef<HTMLButtonElement>;
    private _isChecked;
    private _euiDisabled;
    /**
     * @description
     * Click event handler that emits the buttonClick event
     * @private
     */
    protected onClick(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<EuiButtonComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<EuiButtonComponent, "button[euiButton], a[euiButton]", never, { "e2eAttr": { "alias": "e2eAttr"; "required": false; }; "id": { "alias": "id"; "required": false; }; "euiBasicButton": { "alias": "euiBasicButton"; "required": false; }; "euiCTAButton": { "alias": "euiCTAButton"; "required": false; }; "euiBlockButton": { "alias": "euiBlockButton"; "required": false; }; "euiIconButton": { "alias": "euiIconButton"; "required": false; }; "euiAvatarButton": { "alias": "euiAvatarButton"; "required": false; }; "euiLineWrap": { "alias": "euiLineWrap"; "required": false; }; "isCompact": { "alias": "isCompact"; "required": false; }; "hasNoFocusRing": { "alias": "hasNoFocusRing"; "required": false; }; "isChecked": { "alias": "isChecked"; "required": false; }; "euiDisabled": { "alias": "euiDisabled"; "required": false; }; }, { "buttonClick": "buttonClick"; }, never, ["*"], true, [{ directive: typeof i1.BaseStatesDirective; inputs: { "euiPrimary": "euiPrimary"; "euiBranding": "euiBranding"; "euiSecondary": "euiSecondary"; "euiSuccess": "euiSuccess"; "euiInfo": "euiInfo"; "euiWarning": "euiWarning"; "euiDanger": "euiDanger"; "euiInverse": "euiInverse"; "euiVariant": "euiVariant"; "euiSizeXS": "euiSizeXS"; "euiSizeS": "euiSizeS"; "euiSizeM": "euiSizeM"; "euiSizeL": "euiSizeL"; "euiSizeVariant": "euiSizeVariant"; "euiOutline": "euiOutline"; "euiRounded": "euiRounded"; "euiResponsive": "euiResponsive"; "euiStart": "euiStart"; "euiEnd": "euiEnd"; }; outputs: {}; }]>;
    static ngAcceptInputType_euiBasicButton: unknown;
    static ngAcceptInputType_euiCTAButton: unknown;
    static ngAcceptInputType_euiBlockButton: unknown;
    static ngAcceptInputType_euiIconButton: unknown;
    static ngAcceptInputType_euiAvatarButton: unknown;
    static ngAcceptInputType_euiLineWrap: unknown;
    static ngAcceptInputType_isCompact: unknown;
    static ngAcceptInputType_hasNoFocusRing: unknown;
}

declare const EUI_BUTTON: readonly [typeof EuiButtonComponent];

export { EUI_BUTTON, EuiButtonComponent };
//# sourceMappingURL=eui-components-eui-button.d.ts.map
