import { EventEmitter } from '../../stencil-public-runtime';
import { IDropdownItem, IDropdownSubAction } from '../ez-dropdown/structure/DropdownItem';
type ButtonMode = 'default' | 'icon-only' | 'icon-left';
type ButtonSize = 'small' | 'medium' | 'large';
interface RippleType {
  x: number;
  y: number;
  id: number;
}
/**
 * Split Button Component
 *
 * @example
 * ```html
 * <ez-split-button
 *   label="Save"
 *   mode="icon-left"
 *   left-icon-name="save"
 *   size="medium"
 *   variant="primary">
 * </ez-split-button>
 * ```
 *
 * @fires buttonClick - Emitido quando o botão principal é clicado
 * @fires dropdownItemClick - Emitido quando um botão do dropdown é clicado
 * @fires dropdownSubActionClick - Emitido quando uma subação de um item do dropdown é clicada
 */
export declare class EzSplitButton {
  _element: HTMLElement;
  private leftButton;
  private rightButton;
  private dropdownParent;
  private offsetParentRect;
  private i18n;
  leftRipples: RippleType[];
  rightRipples: RippleType[];
  isLeftPressed: boolean;
  isRightPressed: boolean;
  /**
   * Se true, o dropdown do botão é exibido.
   */
  show: boolean;
  /**
   * Se false o usuário não pode interagir com o botão.
   * @deprecated Use `isDisabled` prop instead.
   */
  enabled: boolean;
  /**
   * Se verdadeiro o clique no botão fica desabilitado mas a navegação continua funcional.
   * Se full, o usuário não pode interagir com o botão.
   */
  isDisabled: boolean | "full" | "";
  /**
   * Define o ícone a ser usado da biblioteca de ícones: [ez-icons](https://gilded-nasturtium-6b64dd.netlify.app/docs/components/layout-doc/icons/)
   * @deprecated Use `leftIconName` prop instead.
   */
  iconName: string;
  /**
   * Define o ícone esquerdo a ser usado da biblioteca de ícones: [ez-icons](https://gilded-nasturtium-6b64dd.netlify.app/docs/components/layout-doc/icons/)
   */
  leftIconName: string;
  /**
   * Define o ícone direito a ser usado da biblioteca de ícones: [ez-icons](https://gilded-nasturtium-6b64dd.netlify.app/docs/components/layout-doc/icons/)
   */
  rightIconName: string;
  /**
   * Define o caminho usado nos modos `icon-only` e `icon-left` para imagens não contempladas na biblioteca de ícones.
   */
  image: string;
  /**
   * Define o conteúdo do dropdown.
   */
  items: Array<IDropdownItem>;
  /**
   * Texto a ser apresentado como label do botão.
   */
  label: string;
  /**
   * Texto a ser apresentado como title do botão principal
   */
  leftTitle: string;
  /**
   * Texto a ser apresentado como title do botão dropdown
   */
  rightTitle: string;
  /**
   * Define o modo de uso do botão.
   */
  mode: ButtonMode;
  /**
   * Define o tamanho do ez-split-button.
   */
  size: ButtonSize;
  /**
   * Define a variante do ez-split-button.
   */
  variant?: "primary" | "secondary" | "tertiary";
  /**
   * Se verdadeiro, desabilita a animação de ripple.
   */
  suppressAnimation?: boolean;
  /**
   * Função builder que possibilita alterar como o item da lista vai ser apresentado.
   * Observação: No react ele se transforma em VNode e não como HTMLElement.
   */
  itemBuilder: (item: IDropdownItem, level: number) => HTMLElement | string;
  /**
   * Emitido quando o botão principal é clicado
   */
  buttonClick: EventEmitter<void>;
  /**
   * Emitido quando um item do dropdown é clicado
   */
  dropdownItemClick: EventEmitter<IDropdownItem>;
  /**
   * Emitido quando uma subAction de um item do dropdown é clicada
   */
  dropdownSubActionClick: EventEmitter<IDropdownSubAction>;
  /**
   * Remove o foco de ambos os botões.
   */
  setBlur(): Promise<void>;
  /**
   * Aplica o foco no botão principal.
   */
  setLeftButtonFocus(): Promise<void>;
  /**
   * Aplica o foco no botão do dropdown.
  */
  setRightButtonFocus(): Promise<void>;
  /**
   * Abre ou Fecha o dropdown do Split Button.
   */
  toggleDropdown(): Promise<void>;
  /**
   * Informa se a lista de ações está aberta.
   */
  isOpenedDropdown(): Promise<boolean>;
  private rippleCounter;
  private eventListeners;
  private createRipple;
  private getEventCoordinates;
  private addRippleToButton;
  private setButtonPressed;
  private scheduleRippleCleanup;
  private removeRipple;
  onMouseDown(event: MouseEvent): void;
  onTouchStart(event: TouchEvent): void;
  clickListener(evt: MouseEvent): void;
  private shouldShowLabelOnLeftButton;
  private shouldShowIconOnLeftButton;
  private getIconSize;
  private closeDropdown;
  private handleButtonClick;
  private handleDropdownItemClick;
  private handleDropdownSubActionClick;
  /**
   * Método responsável em posicionar o dropdown na tela.
   * Faz com que o dropdown se ajuste automaticamente ao espaco na tela
   */
  private positionDropdown;
  private calculateDropdownPosition;
  private setupEventListeners;
  private cleanupEventListeners;
  componentWillLoad(): Promise<void>;
  componentDidLoad(): void;
  disconnectedCallback(): void;
  componentDidUpdate(): void;
  private addElementIDs;
  private renderRipples;
  render(): any;
  private renderLeftButton;
  private renderDivider;
  private renderDropdownSection;
  private renderRightButton;
  private renderDropdownContent;
  private renderLeftIcon;
  private renderLabel;
  private renderRightIcon;
  private renderDropdown;
  private removeForcedFocusVisibleLeft;
  private removeForcedFocusVisibleRight;
  private addBlurListeners;
  private removeBlurListeners;
  connectedCallback(): void;
  private get isButtonDisabled();
  private get isButtonAriaDisabled();
}
export {};
