import { EventEmitter } from '../../stencil-public-runtime';
import { BreakpointsTokenType } from '../../types/design-token.type';
import { ResponsiveType } from '../../types/ui.type';
import { VegaButtonIconAlign, VegaButtonSize, VegaButtonType, VegaButtonVariant } from './types';
import { GlobalSlimmers } from '../../vega-slimmer/vega-slimmer-core';
import { PageResizeObserverSlimmer } from '../../helpers/slimmers/page-resize-observer-slimmer';
import { EventEmitSlimmerBase } from '../../helpers/event-manager/slimmers/event-emit-slimmer';
import { ChildNodesEventPreventSlimmer } from '../../helpers/event-manager/slimmers/child-nodes-event-prevent-slimmer';
import { VegaComponentUsageRuntimeMetricsSlimmer } from '../../helpers/slimmers/component-usage-runtime-metrics';
import { VegaButtonLoadingRenderer } from './slimmers/renderers/vega-button-loading-renderer';
/**
 * @vegaVersion 1.0.0
 */
export declare class VegaButton {
  protected readonly globalSlimmers: GlobalSlimmers;
  /**
   * The below method is e2e-test covered in
   * @see{module:vega-button-resize-e2e}
   */
  protected readonly pageResizeObserverSlimmer: PageResizeObserverSlimmer;
  protected clickEventEmitter: EventEmitSlimmerBase;
  protected eventPrevent: ChildNodesEventPreventSlimmer;
  protected vegaComponentUsageRuntimeMetricsSlimmer: VegaComponentUsageRuntimeMetricsSlimmer<HTMLVegaButtonElement>;
  protected vegaButtonLoadingRenderer: VegaButtonLoadingRenderer;
  host: HTMLVegaButtonElement;
  currentBreakpoint: BreakpointsTokenType;
  /**
   * Specifies the size of the button.
   *
   * @vegaVersion 1.0.0
   */
  size: ResponsiveType<VegaButtonSize>;
  /**
   * Specifies the visual style and prominence of the button.
   *
   * It determines how the button will be presented to the user.
   *
   * @vegaVersion 1.0.0
   */
  variant: VegaButtonVariant;
  /**
   * Specifies the icon to be displayed on the button,
   *    which can be selected from a list of predefined icon tokens
   *    or specified using a Font Awesome class.
   *
   * @vegaVersion 1.0.3
   */
  icon: string;
  /**
   * Specifies the placement of the icon in relation to the button's label.
   *
   * @vegaVersion 1.3.0
   */
  iconAlign: VegaButtonIconAlign;
  /**
   * Specifies the text displayed on the button.
   *
   * @vegaVersion 1.0.3
   */
  label: string;
  /**
   * Specifies whether the button element is disabled.
   *
   * @vegaVersion 1.0.3
   */
  disabled: boolean;
  /**
   * Indicates the danger status of the button,
   *    typically used for destructive actions.
   *
   * @vegaVersion 1.3.0
   */
  danger: boolean;
  /**
   * Specifies whether the button should span the
   *    full width of its parent element.
   *
   * @vegaVersion 1.3.0
   */
  block: ResponsiveType<boolean>;
  /**
   * Specifies the type of button and its behavior in relation to
   *    form submission and data reset.
   *
   * @vegaVersion 1.0.3
   */
  type: VegaButtonType;
  /**
   * Specifies whether the button is in a loading state. When `true`,
   *     the button is disabled and an indeterminate loading indicator
   *     is displayed within the button.
   *
   * @vegaVersion 2.17.0
   */
  loading: boolean;
  /**
   * An event emitter notifying the click event of the button.
   *
   * @vegaVersion 1.0.11
   */
  vegaClick: EventEmitter;
  /**
   * An event emitter notifying the click event of the button.
   *
   * @eventSemantics namespace:native
   * @vegaVersion 2.0.0
   */
  click: EventEmitter;
  componentWillLoad(): void;
  render(): VegaButton;
  private renderContent;
  private renderLabel;
  private renderIcon;
  private handleClick;
  /**
   * The function `isDisabledButton` returns true if either the `disabled` or `loading` property is true.
   *
   * @returns {boolean} The method `isDisabledButton()` is returning a boolean value, which is determined by the
   * logical OR operation between `this.disabled` and `this.loading`. If either `this.disabled` or
   * `this.loading` is true, the method will return `true`, indicating that the button is disabled.
   */
  private isDisabledButton;
  /**
   * Returns a boolean value based on the formatting of a block using a responsive format facade.
   *
   * @returns {boolean} A boolean value.
   */
  private isBlockStyleButton;
}
