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;
/**
 * Tab Strip - A navigation element used to switch between different sections of content.
 *
 * @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