export declare type ScrollPositionUpdateDecision = {
  shouldUpdate: boolean;
};
export declare type ScrollPositionUpdateStrategyContext = {
  currentTargetRect: DOMRect;
  appendableRect: DOMRect;
  previousTargetRect: DOMRect;
  viewportWidth: number;
  viewportHeight: number;
};
/**
 * Updates position on scroll When the target rect changes, we recompute placement/alignment.
 */
export declare class ScreenScrollPositionUpdate {
  private viewportWidth;
  private viewportHeight;
  /**
   * Determines whether the appendable element's position should update on scroll.
   *
   * @param {ScrollPositionUpdateStrategyContext} context - Current/previous rectangles plus viewport size.
   * @returns {ScrollPositionUpdateDecision} Decision that indicates whether to recompute position.
   */
  shouldUpdatePosition(context: ScrollPositionUpdateStrategyContext): ScrollPositionUpdateDecision;
  /**
   * Whether the rect is fully within the viewport bounds.
   *
   * @param {DOMRect} rect - The DOMRect to check.
   * @returns {boolean} True when rect is fully within the viewport.
   */
  private isRectEntirelyWithinViewport;
  /**
   * Whether the element is fully outside the viewport.
   * If true, the rect has "disappeared" from the viewport.
   *
   * @param {DOMRect} rect - The DOMRect to check.
   * @returns {boolean} True when rect is completely outside viewport bounds.
   */
  private isRectOutsideViewport;
}
