import { VegaSlimmer } from '../../../vega-slimmer/vega-slimmer-core';
import { BodyPositionCalculationStrategy } from './body-position-calculation-strategy';
import { ScreenPositionCalculationStrategy } from './screen-position-calculation-strategy';
import { ElementAppenderShowConfig } from '../../ui/element-appender';
/**
 * Calculation and adjustment of positions for appendable elements based on target element positions.
 */
export declare class PositionCalculationController extends VegaSlimmer {
  container: HTMLElement;
  showConfig: ElementAppenderShowConfig;
  protected readonly bodyPositionStrategy: BodyPositionCalculationStrategy;
  protected readonly screenPositionStrategy: ScreenPositionCalculationStrategy;
  private positionStrategy;
  /**
   * Clears any pending screen-position scroll animation frame callback.
   * Call this when the appendable is hidden/destroyed.
   */
  clearScreenPositionScrollFrame(): void;
  /**
   * Sets the calculate postion strategy.
   */
  setCalculationStrategy(): void;
  /**
   * Calculates the position and applies it to the appendable element.
   *
   * @param {boolean} [usePreviousPlacement] - Should keep use previous placement and alignment.
   */
  adjustPosition(usePreviousPlacement?: boolean): void;
  /**
   * Apply the position to the appendable element.
   *
   * @param {ElementPositionBox} positionBox - position box
   */
  private applyPosition;
  /**
   * It sets the width of the appendable element to the width of the target element if the
   * matchTargetWidth property is true, otherwise it sets the width of the appendable element to the
   * size property
   *
   * @returns {void}
   */
  private adjustWidth;
  /**
   * It takes a name and a value, formats the value, and then sets the style of the element
   *
   * @param {'width' | 'maxWidth' | 'minWidth'} name - 'width' | 'maxWidth' | 'minWidth'
   * @param {ResponsiveType<SizeType>} value - ResponsiveType<SizeType>
   * @returns {void}
   */
  private setRelatedWidth;
  /**
   * > If the `matchContainerHeight` property is set to `true`, then the maximum height of the dropdown
   * is set to the height of the container minus the height of the target minus the top offset of the
   * target
   *
   * @returns {void}
   */
  private adjustHeight;
}
