/**
 * @license
 * Copyright 2023 Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
import { ICustomElementFoundation } from '@tylertech/forge-core';
import { ITabBarAdapter } from './tab-bar-adapter';
import { TabBarLayoutMode, TabBarLayoutAlign } from './tab-bar-constants';
export interface ITabBarFoundation extends ICustomElementFoundation {
    activeTab: number;
    layoutMode: TabBarLayoutMode;
    layoutAlign: TabBarLayoutAlign;
    underline: boolean;
    autoActivate: boolean;
    stacked: boolean;
    scrollButtons: boolean;
    forceScrollButtons: boolean;
    activateTab(index: number): void;
    scrollIntoView(index: number): void;
}
export declare class TabBarFoundation implements ITabBarFoundation {
    private _adapter;
    private _isInitialized;
    private _activeTab;
    private _layoutMode;
    private _layoutAlign;
    private _underline;
    private _autoActivate;
    private _stacked;
    private _scrollButtons;
    private _forceScrollButtons;
    private _tabsChangedListener;
    private _tabInteractedListener;
    private _keydownListener;
    private _scrollPrevClickListener;
    private _scrollPrevMousedownListener;
    private _scrollNextClickListener;
    private _scrollNextMousedownListener;
    private _scrollListener;
    constructor(_adapter: ITabBarAdapter);
    initialize(): void;
    disconnect(): void;
    private _onTabsChanged;
    private _onTabInteracted;
    private _onKeydown;
    private _onScrollPrevious;
    private _onScrollNext;
    private _onScroll;
    private _syncScrollButtons;
    /**
     * Determines the index of the adjacent tab closest to either edge of the Tab Bar
     * @param index The index of the tab
     * @param tabDimensions The dimensions of the tab
     * @param scrollPosition The current scroll position
     * @param barWidth The width of the tab bar
     */
    private _findAdjacentTabIndexClosestToEdge;
    /**
     * Calculates the scroll increment that will make the tab at the given index visible
     * @param index The index of the tab
     * @param nextIndex The index of the next tab
     * @param scrollPosition The current scroll position
     * @param barWidth The width of the tab-bar
     */
    private _calculateScrollIncrement;
    /**
     * Private method for determining the index of the destination tab based on what key was pressed
     * @param origin The original index from which to determine the destination
     * @param key The name of the key
     */
    private _determineTargetFromKey;
    private _isScrollable;
    private _getKeyFromEvent;
    private _isActivationKey;
    private _indexIsInRange;
    activateTab(index: number): void;
    scrollIntoView(index: number): void;
    /** Gets and sets the active tab index. */
    get activeTab(): number;
    set activeTab(value: number);
    private get _isFixed();
    get layoutMode(): TabBarLayoutMode;
    set layoutMode(value: TabBarLayoutMode);
    get layoutAlign(): TabBarLayoutAlign;
    set layoutAlign(value: TabBarLayoutAlign);
    get underline(): boolean;
    set underline(value: boolean);
    get stacked(): boolean;
    set stacked(value: boolean);
    get scrollButtons(): boolean;
    set scrollButtons(value: boolean);
    get forceScrollButtons(): boolean;
    set forceScrollButtons(value: boolean);
    get autoActivate(): boolean;
    set autoActivate(value: boolean);
}
