import { VegaSidenav } from '../../vega-sidenav';
import { PageResizeObserverSlimmer } from '../../../../helpers/slimmers/page-resize-observer-slimmer';
/** Manages the open status of a side navigation component, handling toggling, updating status based on screen size, and other related functionalities. */
export declare class VegaSidenavOpenStatusController extends PageResizeObserverSlimmer {
  protected openState: VegaSidenav['openState'];
  protected openByDefault: VegaSidenav['openByDefault'];
  protected host: VegaSidenav['host'];
  protected stateUpdateEmitter: VegaSidenav['stateUpdateEmitter'];
  protected backdropController: VegaSidenav['backdropController'];
  protected collapseButtonRenderer: VegaSidenav['collapseButtonRenderer'];
  private responsiveBehavior;
  private sidebar;
  /**
   * Register the callback function to page resize observer slimmer
   */
  constructor();
  /**
   * Toggle the open state of a side navigation based on certain conditions.
   */
  toggleSidenav(): void;
  /**
   * The function `setSidenavRef` sets the sidebar reference.
   *
   * @param {HTMLDivElement} sidebarRef - A reference to the sidebar element in the HTML document.
   */
  setSidenavRef(sidebarRef: HTMLDivElement): void;
  /**
   * Toggles the open/close status of a side navigation based on different input flags.
   *
   * @param {'hoverOpen' | 'hoverClose' | 'clickOpen' | 'clickClose'} statusFlag - A string literal type that can have one of the
   * following values: 'hoverOpen', 'hoverClose', 'clickOpen', or 'clickClose'.
   */
  setSideNavOpenStatus(statusFlag: 'hoverOpen' | 'hoverClose' | 'clickOpen' | 'clickClose'): void;
  /**
   * Update the sidenav status when component did load
   */
  protected initOpenStatus(): void;
  /**
   * Update sidenav status when the property value change
   */
  protected updateOpenStatus(): void;
  /**
   * Add an observer to a DOM node for a specific event and handles the event payload to determine whether to close the sidebar.
   */
  protected registerSidenavLinkClickObserver(): void;
  /**
   * Remove the observer when the component remove from page
   */
  protected unregisterSidenavLinkClickObserver(): void;
  /**
   * Returns different responsive behaviors based on the screen size.
   *
   * @returns {ResponsiveBehavior} Object
   */
  private getSidenavResponsiveBehavior;
  /**
   * Set or remove the sidenav and backdrop style z-index
   */
  private updateZIndex;
  /**
   * Determines whether the sidenav can be collapsed based on the current open by default setting and screen size.
   *
   * @returns {boolean} The method `canCollapseSidenav()` returns a boolean value.
   */
  private canCollapseSidenav;
  /**
   * Update the body style overflow
   */
  private updateOverflowAvailability;
  /**
   *
   *
   * @param triggerByResize
   */
  /**
   * Determines whether to open or close a side navigation based on certain conditions.
   *
   * @param {boolean} [triggerByResize=false] - The `updateStatusOpenByDefault` method was triggered by a resize event
   */
  private updateStatusOpenByDefault;
  /**
   * Returns true if the current breakpoint is 'L' or 'XL'.
   *
   * @returns {boolean} Determine if the screen is considered large.
   */
  private isLargeScreen;
  /**
   * TReturns the current openByDefault value formatted using ResponsiveFormatFacade.
   *
   * @param {ResponsiveType<OpenByDefaultType>} input - parameter
   * @returns {OpenByDefaultType} The formatted value of the `input` parameter, which is of type `OpenByDefaultType`.
   */
  private getCurrentOpenByDefault;
}
