import { EventEmitter } from '../../stencil-public-runtime';
import { ResponsiveType, SizeType, PlacementType, PositionAlignmentType, PaddingType } from '../../types/ui.type';
import { GlobalSlimmers } from '../../vega-slimmer/vega-slimmer-core';
import { EventEmitSlimmerBase } from '../../helpers/event-manager/slimmers/event-emit-slimmer';
import { VegaPopoverAppenderRenderer } from './slimmers/renderers/vega-popover-appender-renderer';
import { VegaPopoverAppenderController } from './slimmers/controllers/vega-popover-appender-controller';
import { VegaComponentUsageRuntimeMetricsSlimmer } from '../../helpers/slimmers/component-usage-runtime-metrics';
/**
 * @vegaVersion 1.19.0
 */
export declare class VegaPopover {
  protected readonly globalSlimmers: GlobalSlimmers;
  protected appenderRenderer: VegaPopoverAppenderRenderer;
  protected appenderController: VegaPopoverAppenderController;
  protected popoverShowEventEmitter: EventEmitSlimmerBase;
  protected popoverHideEventEmitter: EventEmitSlimmerBase;
  protected vegaComponentUsageRuntimeMetricsSlimmer: VegaComponentUsageRuntimeMetricsSlimmer<HTMLVegaPopoverElement>;
  /**
   * The below method is e2e-test covered in
   * @see{module:vega-popover-keyboard-control-e2e}
   */
  host: HTMLVegaPopoverElement;
  /** popover isPopoverShow */
  isPopoverShow: boolean;
  watchIsPopoverShow(): Promise<void>;
  /**
   * Specifies the size of the popover component.
   *
   * It is provided as a number or ResponsiveType.
   *
   * @vegaVersion 1.19.0
   */
  size: ResponsiveType<SizeType>;
  /**
   * Specifies the placement or position of the popover
   *    in relation to its parent element.
   *
   * If there is insufficient space to display the popover in the
   *    default position, it will automatically adjust its placement
   *    based on the following order: `top`, `left`, `bottom`, `right`.
   *
   * @vegaVersion 1.19.0
   */
  placement: PlacementType;
  /**
   * Controls how the popover aligns horizontally and vertically,
   *    ensuring it is displayed in the desired position.
   *
   * @vegaVersion 1.19.0
   */
  alignment: PositionAlignmentType;
  watchToRefreshPopover(): void;
  /**
   * Specifies the selector for the element that will
   *    contain the popover.
   *
   * If this parameter is not provided, the popover will be appended to
   *    the body element of the page. However, if you encounter any issues
   *    with the positioning of the popover, especially when scrolling occurs,
   *    you can modify this property to specify a different element
   *    as the container for the popover.
   *
   * @VegaWarning The value of this property should be an element that is
   * 		the parent of this component or an ancestor of the parent element.
   * 		Using any other element may lead to unexpected behavior.
   * @vegaVersion 1.19.0
   */
  positionRelativeTo: string;
  /**
   * Specifies the trigger mode for the popover.
   *
   * @vegaVersion 2.1.0
   */
  trigger: 'hover' | 'click';
  /**
   * Controls whether the arrow is display.
   *
   * @vegaVersion 2.8.0
   */
  showArrow: boolean;
  /**
   * Determines whether the popover's position is calculated relative to the screen.
   *
   * @VegaWarning - It will overrides the positionRelativeTo and matchContainerHeight properties, rendering them ineffective.
   *              - Currently, when set to true, the position calculation may be inaccurate if the popover is placed inside a scrollable container within a shadowRoot (e.g., inside a vega-modal with scrollable content).
   * @vegaVersion 2.39.0
   */
  isScreenPosition: boolean;
  /**
   * Determines the spacing between the content and the edges of the popover content box.
   *
   * @vegaVersion 2.59.0
   */
  padding: ResponsiveType<PaddingType>;
  /**
   * An event emitter notifying the popover show event.
   *
   * @vegaVersion 1.22.0
   */
  vegaPopoverShow: EventEmitter<string>;
  /**
   * An event emitter notifying the popover show event.
   * @eventSemantics namespace:native
   *
   * @vegaVersion 2.0.0
   */
  popoverShow: EventEmitter<string>;
  /**
   * An event emitter notifying the popover hide event.
   *
   * @vegaVersion 1.22.0
   */
  vegaPopoverHide: EventEmitter<string>;
  /**
   * An event emitter notifying the popover hide event.
   * @eventSemantics namespace:native
   *
   * @vegaVersion 2.0.0
   */
  popoverHide: EventEmitter<string>;
  componentDidRender(): void;
  /**
   * Invoke this method to show the popover.
   *
   * @vegaVersion 1.22.0
   * @param {boolean} refresh - Determines whether the popover should be refreshed even when it is already visible. This is useful for updating the popover‘s styles (such as width, height, or position). The default value is false. Added in 2.73.0.
   */
  show(refresh?: boolean): Promise<void>;
  /**
   * Invoke this method to close the popover.
   *
   * @vegaVersion 1.22.0
   */
  hide(): Promise<void>;
  render(): VegaPopover;
  private showPopover;
  private hidePopover;
}
