import { VegaDropdown } from '../../vega-dropdown';
import { ElementAppenderSlimmer } from '../../../../helpers/slimmers/element-appender/element-appender-slimmer';
import { AriaDialogFocusableTrapSlimmer } from '../../../../helpers/slimmers/aria-dialog-focusable-trap-slimmer';
/**
 * The `VegaDropdownAppenderController` class is responsible for managing the visibility and
 * behavior of a dropdown component.
 */
export declare class VegaDropdownAppenderController extends ElementAppenderSlimmer {
  host: VegaDropdown['host'];
  trigger: VegaDropdown['trigger'];
  isDropdownShow: VegaDropdown['isDropdownShow'];
  positionRelativeTo: VegaDropdown['positionRelativeTo'];
  matchTargetWidth: VegaDropdown['matchTargetWidth'];
  matchContainerHeight: VegaDropdown['matchContainerHeight'];
  size: VegaDropdown['size'];
  minWidth: VegaDropdown['minWidth'];
  maxWidth: VegaDropdown['maxWidth'];
  translocation: VegaDropdown['translocation'];
  maxHeight: VegaDropdown['maxHeight'];
  placement: VegaDropdown['placement'];
  alignment: VegaDropdown['alignment'];
  renderer: VegaDropdown['renderer'];
  searchRenderer: VegaDropdown['searchRenderer'];
  showEventEmitter: VegaDropdown['showEventEmitter'];
  hideEventEmitter: VegaDropdown['hideEventEmitter'];
  isScreenPosition: VegaDropdown['isScreenPosition'];
  protected readonly ariaDialogFocusableTrapSlimmer: AriaDialogFocusableTrapSlimmer;
  private target;
  private lastFocusedElement;
  /**
   * Component lifecycle - [componentDidLoad]{@link VegaPopover.connectedCallback}
   */
  connectedCallback(): void;
  /**
   * Component lifecycle - [componentDidLoad]{@link VegaPopover.disconnectedCallback}
   */
  disconnectedCallback(): void;
  /**
   * Component lifecycle - [componentDidRender]{@link VegaPopover.componentDidRender}
   */
  componentDidRender(): void;
  /**
   * This constructor initializes a dropdown component with various configuration options.
   */
  constructor();
  /**
   * This controller extends `ElementAppenderSlimmer`, which already uses `componentDidLoad`.
   * To avoid overriding the parent lifecycle mapping, we expose `ariaComponentDidLoad`
   * here and map it to `componentDidLoad` for the ARIA slimmer.
   */
  ariaComponentDidLoad(): void;
  /**
   * The function `watchIsDropdownShow` checks if the dropdown is shown and performs certain actions
   * based on the result.
   */
  watchIsDropdownShow(): Promise<void>;
  /**
   * The function `userShow` checks if a dropdown is not already shown and then calls the `show`
   * function.
   */
  userShow(): void;
  /**
   * The function `userHide` hides a dropdown if it is currently being shown.
   */
  userHide(): void;
  /**
   * Restores focus to the dropdown trigger element.
   * Should be called after programmatic hide actions (item selection, Escape, reset)
   * to maintain proper screen reader context per WAI-ARIA menu button pattern.
   */
  private focusTriggerForAria;
  /**
   * Updates the last focused element by getting the currently active element in the shadow DOM.
   */
  private updateLastFocusedElement;
  /**
   * Generate the show configuration for the dropdown.
   *
   * @returns {ElementAppenderShowConfig} The show configuration for the dropdown.
   */
  private generateShowConfigFactory;
}
