import { AfterContentInit, AfterViewInit, Injector, OnInit, QueryList } from '@angular/core';
import { DynamicComponentRefProvider, StatePersistence } from '@wm/core';
import { StylableComponent } from '@wm/components/base';
import { TabPaneComponent } from './tab-pane/tab-pane.component';
import * as i0 from "@angular/core";
export declare class TabsComponent extends StylableComponent implements AfterContentInit, OnInit, AfterViewInit {
    static initializeProps: void;
    defaultpaneindex: number;
    transition: string;
    tabsposition: string;
    statehandler: any;
    private statePersistence;
    vertical: boolean;
    justified: boolean;
    private activeTab;
    private readonly promiseResolverFn;
    private tabsAnimator;
    private _oldPaneIndex;
    private isPageLoadCall;
    private dynamicComponentProvider;
    private _dynamicContext;
    private dynamicPaneIndex;
    dynamicTabs: any;
    fieldDefs: any;
    type: any;
    nodatamessage: any;
    panes: QueryList<TabPaneComponent>;
    constructor(inj: Injector, dynamicComponentProvider: DynamicComponentRefProvider, _transition: string, _tabsPosition: string, statePersistence: StatePersistence, explicitContext: any);
    animateIn(element: HTMLElement): void;
    /**
     * This method is used to register the dynamic panes.
     * After all panes are initialzed, update the querylist manually based on index.
     * @param paneRef - refrence of the tabpane
     */
    registerDynamicTab(paneRef: any): void;
    /**
     * This method is to add the tabpane dynamically
     * @param tabpanes - list of tabpanes
     */
    addPane(tabpanes: any): any[];
    /**
     * This method is to remove the tabpane
     * @param paneIndex - index of the pane
     */
    removePane(paneName: any): void;
    /**
     * TabPane children components invoke this method to communicate with the parent
     * if the evt argument is defined on-change callback will be invoked.
     */
    notifyChange(paneRef: TabPaneComponent, evt: Event, isKeyBoardEvent: boolean): void;
    goToTab(tabIndex: any): void;
    private getPaneIndexByRef;
    getActiveTabIndex(): number;
    private isValidPaneIndex;
    private getPaneRefByIndex;
    private getPaneRefByName;
    private isSelectableTab;
    private canSlide;
    private getSelectableTabAfterIndex;
    private getSelectableTabBeforeIndex;
    next($event?: Event, isKeyBoardEvent?: boolean): void;
    prev($event?: Event, isKeyBoardEvent?: boolean): void;
    /**
     * this method will be invoked during the initialization of the component and on defaultpaneindex property change,
     * if the provided defaultpaneindex is not valid, find the first pane index which can be shown and select it
     */
    private selectDefaultPaneByIndex;
    private setTabsPosition;
    private onDataChange;
    onPropertyChange(key: string, nv: any, ov: any): void;
    registerTabsScroll(): void;
    onkeydown(event: any): void;
    ngAfterContentInit(): void;
    ngAfterViewInit(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TabsComponent, [null, null, { attribute: "transition"; }, { attribute: "tabsposition"; }, null, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TabsComponent, "div[wmTabs]", ["wmTabs"], {}, {}, ["panes"], ["*", "div[wmRepeatTemplate]"], false, never>;
}
