import { EventEmitter } from '../../../stencil-public-runtime';
import { autoCollapseGroupsType, LeftNavHeaderConfig, LeftNavOpenStateType, LeftNavSourceItem } from '../interface';
import { GlobalSlimmers } from '../../../vega-slimmer/vega-slimmer-core';
import { VegaLeftNavOpenStateController } from './slimmers/controllers/vega-left-nav-open-state-controller';
import { VegaLeftNavHeaderRenderer } from './slimmers/renderers/vega-left-nav-header-renderer';
import { VegaLeftNavFooterRenderer } from './slimmers/renderers/vega-left-nav-footer-renderer';
import { VegaLeftNavZIndexController } from './slimmers/controllers/vega-left-nav-zindex-controller';
import { VegaLeftNavBackdropController } from './slimmers/controllers/vega-left-nav-backdrop-controller';
import { VegaNavListRenderer } from '../slimmers/renderers/vega-nav-list-renderer';
import { EventEmitSlimmerBase } from '../../../helpers/event-manager/slimmers/event-emit-slimmer';
import { ComponentGlobalStyleSlimmer } from '../../../helpers/slimmers/component-global-style-slimmer';
import { VegaLeftNavAutoCollapseController } from './slimmers/controllers/vega-left-nav-auto-collapse-controller';
import { VegaComponentUsageRuntimeMetricsSlimmer } from '../../../helpers/slimmers/component-usage-runtime-metrics';
import { SubStateNotifySlimmerBase } from '../../../helpers/slimmers/sub-state/sub-state-notify-slimmer-base';
import { BrandSwitchControllerSlimmer } from '../../../helpers/slimmers/brand-switch-state-controller-slimmer';
import { BrandOptions } from '../../../helpers/theme/theme';
/**
 * @vegaVersion 1.31.0
 */
export declare class VegaLeftNav {
  protected readonly globalSlimmers: GlobalSlimmers;
  protected readonly headerRenderer: VegaLeftNavHeaderRenderer;
  protected readonly footerRenderer: VegaLeftNavFooterRenderer;
  protected readonly openStateController: VegaLeftNavOpenStateController;
  protected readonly backdropController: VegaLeftNavBackdropController;
  protected readonly zIndexController: VegaLeftNavZIndexController;
  protected readonly listRenderer: VegaNavListRenderer;
  protected readonly vegaLeftNavAutoCollapseController: VegaLeftNavAutoCollapseController;
  protected stateUpdateEventEmitter: EventEmitSlimmerBase;
  protected readonly componentGlobalStyleSlimmer: ComponentGlobalStyleSlimmer<HTMLVegaLeftNavElement>;
  protected vegaComponentUsageRuntimeMetricsSlimmer: VegaComponentUsageRuntimeMetricsSlimmer<HTMLVegaLeftNavElement>;
  protected readonly autoCollapseGroupsNotifySlimmer: SubStateNotifySlimmerBase;
  protected readonly brandSwitchControllerSlimmer: BrandSwitchControllerSlimmer;
  host: HTMLVegaLeftNavElement;
  currentBranding: BrandOptions;
  openState: LeftNavOpenStateType;
  watchOpenState(): void;
  /**
   * Determines whether the left navigation is expanded or collapsed.
   *
   * @vegaVersion 1.39.2
   */
  open: boolean;
  watchOpen(): void;
  /**
   * Specifies the configuration options for the header within the left-nav.
   *
   * You can use this property to define a custom title and subtitle.
   *
   * @vegaVersion 1.31.0
   */
  headerConfig: LeftNavHeaderConfig;
  /**
   * Specifies source data used to generate the links and
   *    groups structure in the left-nav.
   *
   * @vegaVersion 1.31.0
   */
  source: LeftNavSourceItem[];
  /**
   * Provides additional information or context in the form of
   *    a footnote in the left-nav footer.
   *
   * @vegaVersion 1.31.0
   */
  footnote: string;
  /**
   * Determines whether the left-nav should appear as an overlay,
   *    accompanied by a backdrop that darkens the content on the page.
   *
   * This property has no effect on breakpoints smaller than the desktop size.
   *
   * Note: To use the backdrop-free feature when the left navigation is open, ensure the `show-as-overlay`
   *    property is set to `false` within the `vega-left-nav` component. Additionally, enclose all content
   *    within an element possessing the class `vega-left-nav-content` immediately following the
   *    `vega-left-nav` component.
   *
   * @vegaVersion 1.33.0
   */
  showAsOverlay: boolean;
  watchShowAsOverlay(): void;
  /** Determines whether the left navigation automatically collapses when the left navigation link is clicked in overlay mode. *
   * @vegaVersion 2.7.0
   */
  autoCollapseOnOverlay: boolean;
  /**
   * Determines how the left navigation groups behave when clicked, controlling the automatic collapsing of open groups.
   *
   * Available options:
   * - `true`:
   *      Collapses the group when clicking either a group or a link.
   * - `false`:
   *     Collapses the group only when clicking a link; clicking a group does not collapse it.
   * - `always`:
   *     Always collapses the group when clicking a group or link (equivalent to true).
   * - `on-group-click`:
   *      Collapses the group only when clicking a group; clicking a link does not collapse it.
   * - `on-link-click`:
   *      Collapses the group only when clicking a link; clicking a group does not collapse it.
   * - `never`:
   *      Never collapses groups when clicking a group or link.
   * @vegaVersion 2.48.0
   * @VegaWarning - Boolean types are deprecated, please use "on-group-click" | "on-link-click" | "never" | "always" instead.
   */
  autoCollapseGroups: autoCollapseGroupsType;
  watchAutoCollapseGroups(): void;
  /**
   * An event emitter notifying that the left-nav's open state has changed.
   *
   * @vegaVersion 1.31.0
   */
  vegaStateUpdate: EventEmitter<string>;
  /**
   * An event emitter notifying that the left-nav's open state has changed.
   *
   * @eventSemantics namespace:native
   * @vegaVersion 2.0.0
   */
  stateUpdate: EventEmitter<string>;
  componentWillLoad(): void;
  /**
   * Invoke this method to toggle the left-nav's open state.
   *
   * @vegaVersion 1.31.0
   */
  toggle(): Promise<void>;
  render(): VegaLeftNav;
}
