import { ISlottable } from '../../../Behaviors/Slottable';
import { FlowDirection } from '../../../Types/FlowDirection';
import { Orientation } from '../../../Types/Orientation';
import { TabStripPlacement } from '../../../Types/TabStripPlacement';
import { Variant } from '../../../Types/Variant';
import { CustomElement } from '../../Abstracts/CustomElement';
import { ITabStripElementProps } from './ITabStripElementProps';
import { TabStripItemElement } from './TabStripItemElement';
declare const TabStripElement_base: (abstract new (...args: Array<any>) => import("../../../Behaviors/Themeable").IThemeableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Slottable").ISlottableProps & ISlottable) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Disableable").IDisableableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Variantable").IVariantableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Appearanceable").IAppearanceableProps) & typeof CustomElement & import("../../../Behaviors/Themeable").IThemeableCtor;
/**
 * TabStrip - A navigation container for organizing and switching between related content panels.
 *
 * Provides tab-based navigation with keyboard support, visual indicators, and flexible placement options.
 * Manages tab selection states and coordinates with tab panel content. Essential for organizing
 * complex interfaces with multiple related views or data sets.
 *
 * @name TabStripElement
 * @element mosaik-tab-strip
 * @category Selectors
 *
 * @csspart tab-strip - The main tab strip container
 * @csspart tab-list - Container for the tab buttons
 * @csspart indicator - Active tab indicator element
 * @csspart overflow - Overflow controls for scrollable tabs
 *
 * @cssprop --tab-strip-background-color - Background color of the tab strip
 * @cssprop --tab-strip-border-color - Border color for tab strip edges
 * @cssprop --tab-strip-gap - Spacing between individual tabs
 * @cssprop --tab-strip-padding - Internal padding of the tab strip
 * @cssprop --tab-indicator-color - Color of the active tab indicator
 * @cssprop --tab-indicator-height - Height of the tab indicator bar
 * @cssprop --tab-selected-background - Background color of selected tabs
 * @cssprop --tab-hover-background - Background color on tab hover
 *
 * @dependency InkBarElement - Provides the active tab indicator animation
 *
 * @example
 * ```html
 * <!-- Basic horizontal tab strip -->
 * <mosaik-tab-strip>
 *   <mosaik-tab-strip-item selected>Overview</mosaik-tab-strip-item>
 *   <mosaik-tab-strip-item>Details</mosaik-tab-strip-item>
 *   <mosaik-tab-strip-item>Settings</mosaik-tab-strip-item>
 * </mosaik-tab-strip>
 *
 * <!-- Tab strip with indicator -->
 * <mosaik-tab-strip has-indicator placement="top">
 *   <mosaik-tab-strip-item>Dashboard</mosaik-tab-strip-item>
 *   <mosaik-tab-strip-item>Analytics</mosaik-tab-strip-item>
 *   <mosaik-tab-strip-item>Reports</mosaik-tab-strip-item>
 *   <mosaik-tab-strip-item disabled>Admin</mosaik-tab-strip-item>
 * </mosaik-tab-strip>
 *
 * <!-- Vertical tab navigation -->
 * <div class="app-layout">
 *   <mosaik-tab-strip placement="left" has-indicator>
 *     <mosaik-tab-strip-item selected>
 *       <mosaik-icon slot="icon" data="home"></mosaik-icon>
 *       Home
 *     </mosaik-tab-strip-item>
 *     <mosaik-tab-strip-item>
 *       <mosaik-icon slot="icon" data="user"></mosaik-icon>
 *       Profile
 *     </mosaik-tab-strip-item>
 *     <mosaik-tab-strip-item>
 *       <mosaik-icon slot="icon" data="settings"></mosaik-icon>
 *       Settings
 *     </mosaik-tab-strip-item>
 *   </mosaik-tab-strip>
 *   <div class="content-area">
 *     <!-- Tab panel content -->
 *   </div>
 * </div>
 *
 * <!-- Scrollable tab strip for many tabs -->
 * <mosaik-tab-strip variant="scrollable">
 *   <mosaik-tab-strip-item>Tab 1</mosaik-tab-strip-item>
 *   <mosaik-tab-strip-item>Tab 2</mosaik-tab-strip-item>
 *   <mosaik-tab-strip-item>Tab 3</mosaik-tab-strip-item>
 *   <!-- More tabs... -->
 * </mosaik-tab-strip>
 * ```
 *
 * @public
 */
export declare class TabStripElement extends TabStripElement_base implements ITabStripElementProps, ISlottable {
    private readonly _resizeController;
    private readonly _keyboardController;
    private _indicatorElement;
    private _placement;
    private _hasIndicator;
    /**
     * @public
     */
    constructor();
    /**
     * Returns the `{@link is}` property.
     * The `{@link is}` property represents natural name of this element.
     *
     * @public
     * @static
     * @readonly
     */
    static get is(): string;
    /**
     * Gets or sets the `placement` property.
     *
     * @public
     * @attr
     */
    get placement(): TabStripPlacement;
    set placement(value: TabStripPlacement);
    /**
     * Gets or sets the `hasIndicator` property.
     *
     * @public
     * @attr
     */
    get hasIndicator(): boolean;
    set hasIndicator(value: boolean);
    /**
     * Returns the items of the tab strip.
     *
     * @public
     * @readonly
     */
    get items(): Array<TabStripItemElement>;
    /**
     * Returns the selected tab item.
     *
     * @public
     * @readonly
     */
    get selectedItem(): TabStripItemElement | null;
    /**
     * Returns the selected index.
     *
     * @public
     * @readonly
     */
    get selectedIndex(): number;
    /**
     * Selects the specified tab item.
     *
     * @public
     * @param tabStripItem - The tab item to select.
     */
    select(tabStripItem: TabStripItemElement): void;
    /**
     * Selects the specified tab item by its index.
     *
     * @public
     * @param index - The index of the tab item to select.
     */
    selectByIndex(index: number): void;
    /**
     * Selects the specified tab item by its value.
     *
     * @public
     * @param value - The value of the tab item to select.
     */
    selectByValue(value: unknown): void;
    /**
     * @public
     * @override
     */
    onSlotChanges(slotName?: string): void;
    /**
     * @protected
     * @override
     */
    protected onApplyTemplate(): void;
    /**
     * @protected
     */
    protected onClick(event: Event): void;
    /**
     * @protected
     */
    protected onTabStripItemSelectionChanged(event: CustomEvent): void;
    /**
     * @protected
     */
    protected onDisabledPropertyChange(_prev?: boolean, next?: boolean): void;
    /**
     * @protected
     */
    protected onVariantPropertyChange(_prev?: Variant, next?: Variant): void;
    /**
     * @protected
     */
    protected onDirPropertyChange(_prev?: FlowDirection, next?: FlowDirection): void;
    /**
     * @protected
     */
    protected onOrientationPropertyChanged(_prev?: Orientation, next?: Orientation): void;
    /**
     * @protected
     */
    protected onHasIndicatorPropertyChanged(_prev?: boolean, next?: boolean): void;
    /**
     * @private
     */
    private alignIndicatorTo;
    /**
     * @private
     */
    private getCurrent;
}
/**
 * @public
 */
export declare namespace TabStripElement {
    type Props = ITabStripElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-tab-strip': TabStripElement;
    }
}
export {};
//# sourceMappingURL=TabStripElement.d.ts.map