import { VegaSlimmer } from '../../../../../vega-slimmer/vega-slimmer-core';
import { ToolbarButtonConfig } from '../../../interface';
import { TextColorsTokenType } from '../../../../../types/design-token.type';
import { VegaRichTextEditor } from '../../../vega-rich-text-editor';
export declare type ToolbarInternalButtonConfig = {
  showArrowIcon?: boolean;
  iconColor?: TextColorsTokenType;
};
export declare abstract class ToolbarButtonSlimmer extends VegaSlimmer {
  protected translationSlimmer: VegaRichTextEditor['translationSlimmer'];
  protected readonly selectionController: VegaRichTextEditor['selectionController'];
  protected readonly focusController: VegaRichTextEditor['focusController'];
  protected readonly disabled: VegaRichTextEditor['disabled'];
  private icon;
  private readonly tooltip;
  private readonly autoFocusOnClick;
  protected constructor({ icon, tooltip, autoFocusOnClick }: ToolbarButtonConfig);
  setIcon(icon: string): void;
  /**
   * Whether the button is hidden or not.
   */
  isHidden(): boolean;
  render(): HTMLElement;
  /**
   * The wrapper for the button.
   *
   * @param {(config?: ToolbarInternalButtonConfig) => HTMLElement} renderBtn - The button wrapper render function
   * @returns {HTMLElement} - The button wrapper.
   */
  protected renderBtnWrapper?(renderBtn: (config?: ToolbarInternalButtonConfig) => HTMLElement): HTMLElement;
  /**
   * The click handler for the button
   */
  protected onClick?(): void;
  /**
   * The Content for the button.
   */
  protected renderSlotContent?(): HTMLElement;
  /**
   * Whether the button is disabled or not.
   */
  protected isDisabled(): boolean;
  protected preventLostFocus(): {
    onMouseDown: (e: Event) => void;
  };
  private renderBtn;
  /**
   * Handle the click event on the toolbar button.
   * If there are no selected nodes, the focus will be set on the content and the click will be triggered after the selection change.
   */
  private handleClick;
  /**
   * Whether the button is selected or not.
   */
  protected abstract isSelected(): boolean;
}
