/**
 * @license
 * Copyright 2023 Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
import { IBaseAdapter, BaseAdapter } from '../../core/base/base-adapter';
import { ITabBarComponent } from './tab-bar';
import { TabBarLayoutMode, TabBarLayoutAlign } from './tab-bar-constants';
import { ITabComponent } from '../tab/tab';
import { ITabDimensions } from '../tab/tab-constants';
export interface ITabBarAdapter extends IBaseAdapter {
    initializeTabs(activeTabIndex: number, stretch: boolean): void;
    initializeTabScroller(): void;
    initializeAccessibility(): void;
    destroyTabScroller(): void;
    addTabChangeListener(listener: (evt: Event) => void): void;
    removeTabChangeListener(listener: (evt: Event) => void): void;
    addScrollListener(listener: (evt: Event) => void): void;
    getTabIndex(tab: ITabComponent): number;
    getTabCount(): number;
    activateTab(index: number, previousTabBounds?: DOMRect): void;
    deactivateTab(index: number): void;
    syncTabIndex(index: number): void;
    getTabBounds(index: number): DOMRect | undefined;
    setUnderline(value: boolean): void;
    setStacked(value: boolean): void;
    scrollTo(scrollX: number): void;
    getScrollContentWidth(): number;
    getScrollPosition(): number;
    getOffsetWidth(): number;
    getTabDimensionsAtIndex(index: number): ITabDimensions;
    incrementScroll(scrollXIncrement: number): void;
    isScrolled(): boolean;
    isScrolledEnd(): boolean;
    getFocusedTabIndex(): number;
    focusTabAtIndex(index: number): void;
    setLayoutMode(value: TabBarLayoutMode): void;
    setLayoutAlign(value: TabBarLayoutAlign): void;
    setPreviousButtonVisibility(value: boolean): void;
    setPreviousButtonEnabled(value: boolean): void;
    setNextButtonVisibility(value: boolean): void;
    setNextButtonEnabled(value: boolean): void;
    addScrollPreviousListener(type: string, listener: (evt: MouseEvent) => void): void;
    addScrollNextListener(type: string, listener: (evt: MouseEvent) => void): void;
    isTabDisabled(index: number): boolean;
    ensureFocusableTab(): void;
}
export declare class TabBarAdapter extends BaseAdapter<ITabBarComponent> implements ITabBarAdapter {
    private _rootElement;
    private _defaultSlotElement;
    private _tabScrollElement;
    private _tabScrollAreaElement;
    private _tabScrollContentElement;
    private _tabScroller;
    private _tabs;
    private _prevButtonContainerElement;
    private _nextButtonContainerElement;
    private _prevButtonElement;
    private _nextButtonElement;
    constructor(component: ITabBarComponent);
    initializeTabs(activeTabIndex: number, stretch: boolean): void;
    initializeTabScroller(): void;
    initializeAccessibility(): void;
    destroyTabScroller(): void;
    addTabChangeListener(listener: (evt: Event) => void): void;
    removeTabChangeListener(listener: (evt: Event) => void): void;
    addScrollListener(listener: (evt: Event) => void): void;
    getTabIndex(tab: ITabComponent): number;
    getTabCount(): number;
    activateTab(index: number, previousTabBounds?: DOMRect): void;
    deactivateTab(index: number): void;
    syncTabIndex(index: number): void;
    getTabBounds(index: number): DOMRect | undefined;
    setUnderline(value: boolean): void;
    setStacked(value: boolean): void;
    scrollTo(scrollX: number): void;
    getScrollContentWidth(): number;
    getScrollPosition(): number;
    getOffsetWidth(): number;
    getTabDimensionsAtIndex(index: number): ITabDimensions;
    incrementScroll(scrollXIncrement: number): void;
    isScrolled(): boolean;
    isScrolledEnd(): boolean;
    getFocusedTabIndex(): number;
    focusTabAtIndex(index: number): void;
    setLayoutMode(value: TabBarLayoutMode): void;
    setLayoutAlign(value: TabBarLayoutAlign): void;
    setPreviousButtonVisibility(value: boolean): void;
    setPreviousButtonEnabled(value: boolean): void;
    setNextButtonVisibility(value: boolean): void;
    setNextButtonEnabled(value: boolean): void;
    addScrollPreviousListener(type: string, listener: (evt: MouseEvent) => void): void;
    addScrollNextListener(type: string, listener: (evt: MouseEvent) => void): void;
    isTabDisabled(index: number): boolean;
    ensureFocusableTab(): void;
    private _getTabs;
    private _getTabByIndex;
}
