/**
 * Copyright IBM Corp. 2019, 2026
 *
 * This source code is licensed under the Apache-2.0 license found in the
 * LICENSE file in the root directory of this source tree.
 */
import { TemplateResult } from 'lit';
import CDSContentSwitcher, { NAVIGATION_DIRECTION } from '../content-switcher/content-switcher';
import { TABS_ICON_SIZE, TABS_KEYBOARD_ACTION, TABS_TYPE } from './defs';
import CDSTab from './tab';
export { NAVIGATION_DIRECTION, TABS_ICON_SIZE, TABS_KEYBOARD_ACTION, TABS_TYPE, };
declare const CDSTabs_base: {
    new (...args: any[]): {
        _handles: Set<import("../../globals/internal/handle").default>;
        connectedCallback(): void;
        disconnectedCallback(): void;
    };
    _hostListeners: {
        [listenerName: string]: {
            [type: string]: {
                options?: boolean | AddEventListenerOptions;
            };
        };
    };
} & typeof CDSContentSwitcher;
/**
 * Tabs.
 *
 * @element cds-tabs
 * @fires cds-tabs-beingselected
 *   The custom event fired before a tab is selected upon a user gesture.
 *   Cancellation of this event stops changing the user-initiated selection.
 * @fires cds-tabs-selected - The custom event fired after a a tab is selected upon a user gesture.
 */
export default class CDSTabs extends CDSTabs_base {
    /**
     * The latest status of this dropdown, for screen reader to accounce.
     */
    private _assistiveStatusText?;
    /**
     * The currently selected index
     */
    private _currentIndex;
    /**
     * Total number of tabs in the component
     */
    private _totalTabs;
    /**
     * `true` if the tablist is scrollable
     */
    private _isScrollable;
    /**
     * The DOM element for the tablist.
     */
    private tablist;
    /**
     * The width of the overflow scroll buttons.
     */
    private BUTTON_WIDTH;
    /**
     * Navigates through tabs.
     *
     * @param direction `-1` to navigate backward, `1` to navigate forward.
     * @param [options] The options.
     * @param [options.immediate]
     *   Defaults to `true`
     *   `true` to make it "immediate selection change" mode, which does:
     *
     *   Starts with the selected item
     *   Going prev/next item immediately changes the selection
     */
    protected _navigate(direction: number): void;
    /**
     * Resets the highlighted state of all tabs, setting only the specified tab as highlighted.
     *
     * @param nextItem The tab item to be highlighted. If provided, only this item will be highlighted.
     *   If null or undefined, all tabs will have their highlighted state set to false.
     */
    protected resetHighlighted(nextItem?: CDSTab | null): void;
    protected _handleClick(event: MouseEvent): void;
    protected _handleKeydown(event: KeyboardEvent): void;
    protected _handleTabClosed(event: CustomEvent): void;
    /**
     * Handles click on overflow scroll buttons.
     *
     * @param _ Event object
     * @param [options] The options.
     * @param [options.direction] `-1` to scroll forward, `1` to scroll backward.
     */
    protected _handleScrollButtonClick(_: any, { direction }: {
        direction: any;
    }): void;
    _handleSlotchange(): void;
    protected _selectionDidChange(itemToSelect: CDSTab, interactionType?: 'mouse' | 'keyboard' | undefined): void;
    /**
     * The scrolling container.
     */
    private _contentContainerNode?;
    /**
     * The scrolling content.
     */
    private _contentNode?;
    /**
     * The current scroll position.
     */
    private _currentScrollPosition;
    /**
     * The left-hand sentinel to track intersection with the host element.
     * If they intersect, the left-hand paginator button should be hidden.
     */
    private _intersectionLeftSentinelNode?;
    /**
     * The right-hand sentinel to track intersection with the host element.
     * If they intersect, the right-hand paginator button should be hidden.
     */
    private _intersectionRightSentinelNode?;
    /**
     * An assistive text for screen reader to announce, telling the open state.
     */
    selectingItemsAssistiveText: string;
    /**
     * An assistive text for screen reader to announce, telling that an item is selected.
     */
    selectedItemAssistiveText: string;
    /**
     * The content of the trigger button for narrow mode.
     */
    triggerContent: string;
    /**
     * Tabs type.
     */
    type: TABS_TYPE;
    /**
     * Whether the rendered Tab children should be dismissable.
     */
    dismissable: any;
    /**
     * Specify the icon size used by icon-only tabs.
     */
    iconSize?: TABS_ICON_SIZE;
    /**
     * `true` if left-hand scroll intersection sentinel intersects with the host element.
     * In this condition, the left-hand paginator button should be hidden.
     */
    private _isIntersectionLeftTrackerInContent;
    /**
     * `true` if right-hand scroll intersection sentinel intersects with the host element.
     * In this condition, the right-hand paginator button should be hidden.
     */
    private _isIntersectionRightTrackerInContent;
    /**
     * The observer for the intersection of left-side content edge.
     */
    private _observerIntersection;
    /**
     * The intersection observer callback for the scrolling container.
     *
     * @param records The intersection observer records.
     */
    private _observeIntersectionContainer;
    /**
     * Cleans-up and creates the intersection observer for the scrolling container.
     *
     * @param [options] The options.
     * @param [options.create] `true` to create the new intersection observer.
     */
    private _cleanAndCreateIntersectionObserverContainer;
    disconnectedCallback(): void;
    shouldUpdate(changedProperties: any): boolean;
    firstUpdated(): void;
    updated(changedProperties: any): void;
    /**
     * Render the previous button if tablist is wider than container.
     */
    protected renderPreviousButton(): TemplateResult | null;
    /**
     * Render the next button if tablist is wider than container.
     */
    protected renderNextButton(): TemplateResult | null;
    render(): TemplateResult<1>;
    protected _updateTabsState(): void;
    protected _tabInitialLoad(): void;
    /**
     * Symbols of keys that triggers opening/closing menu and selecting/deselecting menu item.
     */
    static TRIGGER_KEYS: Set<string>;
    /**
     * A selector that will return tabs.
     */
    static get selectorItem(): string;
    /**
     * A selector that will return enabled tabs.
     */
    static get selectorItemEnabled(): string;
    /**
     * A selector that will return highlighted tabs.
     */
    static get selectorItemHighlighted(): string;
    /**
     * A selector that will return selected tabs.
     */
    static get selectorItemSelected(): string;
    /**
     * A selector that returns the tablist
     */
    static get selectorTablist(): string;
    /**
     * The name of the custom event fired before a tab is selected upon a user gesture.
     * Cancellation of this event stops changing the user-initiated selection.
     */
    static get eventBeforeSelect(): string;
    /**
     * The name of the custom event fired after a a tab is selected upon a user gesture.
     */
    static get eventSelect(): string;
    static styles: any;
    /**
     * @param key The key symbol.
     * @returns A action for dropdown for the given key symbol.
     */
    static getAction(key: string): TABS_KEYBOARD_ACTION;
}
//# sourceMappingURL=tabs.d.ts.map