import { VegaSlimmer } from '../../vega-slimmer/vega-slimmer-core';
import { BreakpointsTokenType } from '../../types/design-token.type';
import { Nullable } from '../../types/general';
export declare type PageResizeObserverEntry = {
  /**
   * The slimmer update currentBreakpoint as default while window resize,
   * but if you want add additional logic by listen window resize you can set this callback.
   */
  callback?: PageResizeObserverEntryCallbackType;
  target?: () => HTMLElement | HTMLElement[];
  /**
   * if callback function update width of target, we should make this as true,
   * else it will raise error `ResizeObserver loop completed with undelivered notifications`.
   * For example, please see vega-cypress/cypress/e2e/common/modal.cy.ts.
   */
  isDeferred?: boolean;
  /**
   * this method will block the callback
   * for example, the tab group should not invoke the callback before the tab group ends the animation
   */
  shouldTrigger?: () => boolean;
};
declare type PageResizeObserverEntryCallbackType = (entries?: ResizeObserverEntry[], observer?: ResizeObserver) => void;
/**
 * The `PageResizeObserverSlimmer` class is a TypeScript class that extends `VegaSlimmer` and provides functionality for observing page resize events.
 *
 * Note: The slimmer which will extends the `PageResizeObserverSlimmer` should not have same name method `connectedCallbackByResizeSlimmer` , `disconnectedCallbackByResizeSlimmer` and `componentDidLoadByResizeSlimmer`
 */
export declare class PageResizeObserverSlimmer extends VegaSlimmer {
  currentBreakpoint: Nullable<BreakpointsTokenType>;
  private resizeObserver;
  private observerEntry;
  /**
   * The constructor function takes a PageResizeObserverEntry object as a parameter.
   *
   * @param {PageResizeObserverEntry} observerEntry - The `observerEntry` parameter is an instance of
   * the `PageResizeObserverEntry` class. It represents an entry in the `PageResizeObserver`'s list of
   * observed elements. It contains information about the observed element's size and position.
   */
  constructor(observerEntry?: PageResizeObserverEntry);
  /**
   * create resize observer when connectedCallback
   */
  reconnectResizeObserver(): void;
  /**
   * cancel resize observer when disconnectedCallback
   */
  disconnectResizeObserver(): void;
  /**
   * create resize observer when componentDidLoad
   */
  connectResizeObserver(): void;
  /**
   * The function creates a resize observer that calls a callback function with the current breakpoint whenever the page resize.
   */
  private createResizeObserver;
  /**
   * The function `observerResizeObserver` observes the resize of one or multiple HTML elements using the
   * ResizeObserver API.
   */
  private observerResizeObserver;
}
export {};
