import { VegaSlimmer } from '../../../vega-slimmer/vega-slimmer-core';
import { ElementAppenderShowConfig } from '../../ui/element-appender';
import { DefaultWrapper } from './body-positioned-wrapper/default-wrapper';
import { PositionRelativeToWrapper } from './body-positioned-wrapper/position-relative-to-wrapper';
import { VegaModalWrapper } from './body-positioned-wrapper/vega-modal-wrapper';
import { VegaPopoverWrapper } from './body-positioned-wrapper/vega-popover-wrapper';
import { ThirdPartyDialogWrapper } from './body-positioned-wrapper/third-party-dialog-wrapper';
export interface ElementAppenderContainerRetriever {
  canRetrieve: () => boolean;
  retrieve: () => HTMLElement;
}
/**
 * This class is responsible for setting the container element for appending an element based on certain conditions.
 *
 * @property {HTMLElement} container the container
 * @property {HTMLElement} showConfig the show config
 */
export declare class ElementAppenderContainerController extends VegaSlimmer {
  container: HTMLElement;
  showConfig: ElementAppenderShowConfig;
  protected readonly positionRelativeToWrapper: PositionRelativeToWrapper;
  protected readonly vegaPopoverWrapper: VegaPopoverWrapper;
  protected readonly vegaModalWrapper: VegaModalWrapper;
  protected readonly thirdPartyDialogWrapper: ThirdPartyDialogWrapper;
  protected readonly defaultWrapper: DefaultWrapper;
  private containerRetrievers;
  /**
   * The function sets the container element by iterating through a list of retrievers, defaulting to the document body.
   */
  setContainer(): void;
  /**
   * The function sets up an array of container retrievers based on certain conditions.
   */
  private setContainerRetrievers;
}
