import { EventEmitter } from '../../stencil-public-runtime';
import { ResponsiveType } from '../../types/ui.type';
import { OpenByDefaultType, SidebarHeaderConfig, SidebarTopLevelItem } from './types';
import { GlobalSlimmers } from '../../vega-slimmer/vega-slimmer-core';
import { VegaComponentUsageRuntimeMetricsSlimmer } from '../../helpers/slimmers/component-usage-runtime-metrics';
import { VegaSidenavBackdropController } from './slimmers/controllers/vega-sidenav-backdrop-controller';
import { VegaSidenavCollapseButtonRenderer } from './slimmers/renderers/vega-sidenav-collapse-button-renderer';
import { SubStateNotifySlimmerBase } from '../../helpers/slimmers/sub-state/sub-state-notify-slimmer-base';
import { VegaSidenavOpenStatusController } from './slimmers/controllers/vega-sidenav-open-status-controller';
import { EventEmitSlimmerBase } from '../../helpers/event-manager/slimmers/event-emit-slimmer';
/**
 * @deprecated This component will be removed soon, please consider using `vega-left-nav` component instead.
 * @vegaVersion 1, v2.29.0
 */
export declare class VegaSidenav {
  protected readonly globalSlimmers: GlobalSlimmers;
  protected vegaComponentUsageRuntimeMetricsSlimmer: VegaComponentUsageRuntimeMetricsSlimmer<HTMLVegaSidenavElement>;
  protected readonly openStateNotifySlimmer: SubStateNotifySlimmerBase;
  protected backdropController: VegaSidenavBackdropController;
  protected collapseButtonRenderer: VegaSidenavCollapseButtonRenderer;
  protected openStatusController: VegaSidenavOpenStatusController;
  protected stateUpdateEmitter: EventEmitSlimmerBase;
  private content;
  host: HTMLVegaSidenavElement;
  openState: 'open' | 'hoverOpen' | 'close';
  /**
   * The method to used notify the sub state the parent state value changed
   */
  watchOpenState(): void;
  /**
   * Defines the data that is used to generate the items
   *    in the side nav list.
   *
   * @vegaVersion 1, v2.29.0
   */
  source: SidebarTopLevelItem[];
  /**
   * clear inner content in `div.vega-nav-list` if previousSource is empty.
   * to avoid untracked sidenav items (render by slot) keeping existed while source updated.
   * The below method is e2e-test covered in
   * @see{module:vega-sidenav-e2e-with-source-with-child}
   */
  watchSourceChange(currentSource: SidebarTopLevelItem[] | undefined, previousSource: SidebarTopLevelItem[] | undefined): void;
  /**
   * Provides additional information or context in the form of
   *    a footnote in the side nav footer.
   *
   * @vegaVersion 1, v2.29.0
   */
  footnote: string;
  /**
   * Specifies the configuration for the header of the side nav,
   *    allowing customization of the logo and headline.
   *
   * @vegaVersion 1, v2.29.0
   */
  headerConfig: SidebarHeaderConfig;
  /**
   * Specifies the default open behavior for the side nav across
   *    different screen sizes and disables collapse for
   *    large screens.
   *
   * @vegaVersion 1, v2.29.0
   */
  openByDefault: ResponsiveType<OpenByDefaultType>;
  watchOpenByDefaultChange(): void;
  /**
   * An event emitter notifying the completion of a navigation menu state change (open or close).
   *
   * @vegaVersion 1, v2.29.0
   */
  vegaStateUpdate: EventEmitter<string>;
  /**
   * An event emitter notifying the completion of a navigation menu state change (open or close).
   *
   * @eventSemantics namespace:native
   * @vegaVersion 1, v2.29.0
   */
  stateUpdate: EventEmitter<string>;
  /**
   * The below method is e2e-test covered in
   * @see{module:vega-sidenav-e2e-with-source-with-duplicated-selected}
   * @see{module:vega-sidenav-e2e-with-source-without-child}
   */
  componentWillLoad(): void;
  /**
   * The below method is e2e-test covered in
   * @see{module:vega-sidenav-e2e-vega-resize-with-desktop}
   * @see{module:vega-sidenav-e2e-vega-resize-with-desktop-to-mobile}
   */
  componentDidLoad(): void;
  /**
   * The below method is e2e-test covered in
   * @see{module:vega-sidenav-e2e-vega-click-backdrop-mobile}
   */
  collapseSidenavByBackDropClick(e: MouseEvent): void;
  /**
   * Invoke this method to toggle the side navigation menu.
   *
   * @vegaVersion 1, v2.29.0
   */
  toggle(): Promise<void>;
  /**
   * The below method is e2e-test covered in
   * @see{module:vega-sidenav-desktop-not-show-backdrop}
   * @see{module:vega-sidenav-mobile-show-backdrop}
   */
  render(): VegaSidenav;
  /**
   * The below method is e2e-test covered in
   * @see{module:vega-sidenav-e2e-with-source-with-duplicated-selected}
   * @see{module:vega-sidenav-e2e-with-source-without-child}
   */
  private validSource;
  /**
   * The below method is e2e-test covered in
   * @see{module:vega-sidenav-e2e-mouse-enter-and-mouse-leave-and-click}
   */
  private attachMouseEventToContent;
  /**
   * The current div uses a named slot and has a sibling above it, if you skip rendering this whole element by checking a variable,
   * it will cause the slot's position to move into the sibling.
   * For specific examples, see the documentation of stencil_slot_bug.md
   * The below method is e2e-test covered in
   * @see{module:vega-sidenav-e2e-with-source-with-child}
   * @see{module:vega-sidenav-e2e-with-source-without-length}
   */
  private renderSideBarList;
  /**
   * The below method is e2e-test covered in
   * @see{module:vega-sidenav-e2e-with-source-with-child}
   * @see{module:vega-sidenav-e2e-with-source-without-child}
   */
  private renderSideBarListBySource;
  private renderSideBarHeader;
  private renderSideBarFooter;
}
