import type { StringPluginArgChoices } from './types';
import { type BaseElem, type SelectorRoot } from "base-elem-js";
type SubmenuBtnSkipFn = (elem: HTMLElement) => boolean;
interface NavMobileCssList {
    outerOpen: string;
    hasUl: string;
    noUl: string;
    open: string;
    opening: string;
    closing: string;
    toggling: string;
    btn: string;
}
export interface INavMobileDefaults {
    enableBtn: HTMLElement | string;
    ariaLabel: string;
    tgBtnText: string;
    insertBtnAfter: string;
    slideDuration: number;
    outerElement: HTMLElement | string;
    outsideClickClose: boolean;
    cssPrefix: string;
    menuBtnCss: string;
    menuBtnSkip: SubmenuBtnSkipFn | boolean;
    doTrapFocus: boolean;
    trapFocusElem: SelectorRoot | null;
    stopPropagation: boolean;
    bkptEnable: number | null;
    animateHeight: boolean;
    afterNavItemOpen: (li: HTMLLIElement[]) => void;
    afterNavItemClose: (li: HTMLLIElement[]) => void;
    afterOpen(element: HTMLElement, outerElement: HTMLElement[], enableBtn: HTMLElement): any;
    afterClose(element: HTMLElement, outerElement: HTMLElement[], enableBtn: HTMLElement): any;
}
export interface INavMobileOptions extends Partial<INavMobileDefaults> {
    enableBtn: HTMLElement | string;
}
export default class NavMobile {
    #private;
    $element: BaseElem;
    element: HTMLElement;
    params: INavMobileDefaults;
    menuOpened: boolean;
    allowClick: boolean;
    cssList: NavMobileCssList;
    $enableBtn: BaseElem;
    enableBtn: HTMLElement;
    static defaults: INavMobileDefaults;
    static version: string;
    static pluginName: string;
    constructor(element: HTMLElement, options: INavMobileOptions | StringPluginArgChoices);
    static remove(element: BaseElem, plugin?: NavMobile): void;
}
export interface NavMobilePlugin {
    navMobile(options: INavMobileOptions | StringPluginArgChoices): BaseElem;
}
declare module 'base-elem-js' {
    interface BaseElem extends NavMobilePlugin {
    }
}
export {};
