import { ComponentInterface, EventEmitter } from '../../stencil-public-runtime';
import { HTMLStencilElement } from '../../stencil-public-runtime';
import { BalBreakpointObserver, BalBreakpoints } from '../../utils/breakpoints';
import { BalConfigObserver, BalConfigState, BalLanguage, BalRegion } from '../../utils/config';
import { LogInstance, Loggable } from '../../utils/log';
import { BalMutationObserver } from '../../utils/mutation';
import { NavLinkItemObserver } from './bal-nav.types';
import { NavLinkItem } from './models/bal-nav-link-item';
import { NavMenuLinkItem } from './models/bal-nav-menu-link-item';
import { NavMetaButton } from './models/bal-nav-meta-button';
import { NavMetaLinkItem } from './models/bal-nav-meta-link-item';
export declare class Nav implements ComponentInterface, Loggable, BalBreakpointObserver, BalMutationObserver, NavLinkItemObserver, BalConfigObserver {
    private navId;
    private bodyScrollHandler;
    private menuBarEl;
    private metaBarEl;
    el: HTMLStencilElement;
    log: LogInstance;
    isTouch: boolean;
    isDesktop: boolean;
    language: BalLanguage;
    region: BalRegion;
    isFlyoutActive: boolean;
    private hasRenderedWithFlyoutActive;
    activeMetaLinkValue?: string;
    activeMenuLinkValue?: string;
    createLogger(log: LogInstance): void;
    /**
     * PUBLIC PROPERTY API
     * ------------------------------------------------------
     */
    /**
     * Link level structure.
     */
    logo?: BalProps.BalNavLogoLink;
    /**
     * Link level structure.
     */
    options: BalProps.BalNavOptions;
    linkItems: NavMetaLinkItem[];
    protected optionChanged(): Promise<void>;
    /**
     * Link level structure.
     */
    buttons: BalProps.BalNavMetaButtons;
    metaButtons: NavMetaButton[];
    protected buttonChanged(): Promise<void>;
    /**
     * Emitted when a nav link item is clicked. This event can be used to
     * add data tracking
     */
    balNavItemClick: EventEmitter<BalEvents.BalNavItemClickDetail>;
    /**
     * LIFECYCLE
     * ------------------------------------------------------
     */
    connectedCallback(): void;
    componentWillLoad(): void;
    disconnectedCallback(): void;
    /**
     * LISTENERS
     * ------------------------------------------------------
     */
    listenToPopupChanges(event: BalEvents.BalPopupChange): void;
    clickOnOutside(ev: UIEvent): Promise<void>;
    mutationObserverActive: boolean;
    mutationListener(): void;
    breakpointListener(breakpoints: BalBreakpoints): void;
    linkItemClickListener(item?: NavLinkItem): void;
    accordionClickListener(item?: NavLinkItem): void;
    /**
     * @internal define config for the component
     */
    configChanged(state: BalConfigState): Promise<void>;
    /**
     * GETTERS
     * ------------------------------------------------------
     */
    private get activeMenuLinkItems();
    private get activeMenuLinkItem();
    /**
     * PRIVATE METHODS
     * ------------------------------------------------------
     */
    private toggleFlyout;
    private closeFlyout;
    private openFlyout;
    private updateActiveItem;
    private updateTabs;
    private closeAllPopups;
    /**
     * EVENT BINDING
     * ------------------------------------------------------
     */
    private onOptionChange;
    private onMetaButtonChange;
    private onTouchToggleFlyout;
    private onPopupOpen;
    private onPopupClose;
    private onMetaBarTabChange;
    private onMenuBarTabChange;
    /**
     * RENDER
     * ------------------------------------------------------
     */
    render(): any;
    renderGridLinks(linkItem?: NavMenuLinkItem): any;
    renderTouchMenuAccordions(metaItem: NavMetaLinkItem): any;
    renderLogo(): any;
}
