import { ISlottable } from '../../../Behaviors/Slottable';
import { TabPanelAlignment } from '../../../Types/TabPanelAlignment';
import { TabStripPlacement } from '../../../Types/TabStripPlacement';
import { CustomElement } from '../../Abstracts/CustomElement';
import type { ITabPanelElementProps } from './ITabPanelElementProps';
declare const TabPanelElement_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/Appearanceable").IAppearanceableProps) & typeof CustomElement & import("../../../Behaviors/Themeable").IThemeableCtor;
/**
 * Tab Panel - A scrollable container for tab strip items with optional navigation buttons.
 *
 * @description
 * The Tab Panel component serves as a container for the tab strip, providing horizontal scrolling
 * when the total width of tab items exceeds the available space. It automatically detects scrollable
 * content and displays navigation buttons (start/end) to allow users to scroll through tabs that
 * extend beyond the visible area. The component supports different alignments and placements,
 * integrates with the parent tab's indicator settings, and can enable swipe gestures for touch
 * devices.
 *
 * @name Tab Panel
 * @element mosaik-tab-panel
 * @category Selectors
 *
 * @slot - The default slot for the tab strip element
 *
 * @csspart startScrollButton - The navigation button for scrolling to start
 * @csspart content - The scrollable content container
 * @csspart endScrollButton - The navigation button for scrolling to end
 *
 * @cssprop {String} --tab-panel-background-color - The background fill color of the panel
 *
 * @dependency {ButtonElement} - Navigation button components for scrolling
 *
 * @fires connected {ConnectedEvent} - Fired when connected to the DOM
 * @fires changed {PropertyChangedEvent} - Fired when properties change
 *
 * @example
 * Tab panel with scrollable content:
 * ```html
 * <mosaik-tab-panel>
 *   <mosaik-tab-strip>
 *     <mosaik-tab-strip-item label="Tab 1"></mosaik-tab-strip-item>
 *     <mosaik-tab-strip-item label="Tab 2"></mosaik-tab-strip-item>
 *     <!-- Many more tabs... -->
 *   </mosaik-tab-strip>
 * </mosaik-tab-panel>
 * ```
 *
 * @example
 * Tab panel with alignment:
 * ```html
 * <mosaik-tab-panel alignment="center" placement="bottom">
 *   <mosaik-tab-strip>
 *     <mosaik-tab-strip-item label="Overview"></mosaik-tab-strip-item>
 *     <mosaik-tab-strip-item label="Details"></mosaik-tab-strip-item>
 *   </mosaik-tab-strip>
 * </mosaik-tab-panel>
 * ```
 *
 * @public
 */
export declare class TabPanelElement extends TabPanelElement_base implements ITabPanelElementProps, ISlottable {
    private _containerElement;
    private _hasScrollableContent;
    private _canScrollToStart;
    private _canScrollToEnd;
    private _alignment;
    private _placement;
    private _hasIndicator;
    private _enableGestures;
    /**
     * @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 `alignment` property.
     *
     * @public
     * @attr
     */
    get alignment(): TabPanelAlignment;
    set alignment(value: TabPanelAlignment);
    /**
     * 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);
    /**
     * Gets or sets the `enableGestures` property.
     *
     * @public
     * @attr
     */
    get enableGestures(): boolean;
    set enableGestures(value: boolean);
    /**
     * Gets the `hasScrollableContent` property.
     *
     * @public
     * @readonly
     */
    get hasScrollableContent(): boolean;
    private set hasScrollableContent(value);
    /**
     * Gets the `canScrollToStart` property.
     *
     * @public
     * @readonly
     */
    get canScrollToStart(): boolean;
    private set canScrollToStart(value);
    /**
     * Gets or sets the `canScrollToEnd` property.
     *
     * @public
     * @readonly
     */
    get canScrollToEnd(): boolean;
    private set canScrollToEnd(value);
    render(): unknown;
    /**
     * @protected
     * @override
     */
    protected onApplyTemplate(): void;
    /**
     * @private
     * @template
     */
    scrollByTabOffset(direction: 'before' | 'after'): void;
    /**
     * @private
     * @template
     */
    onScroll(e: Event): void;
}
/**
 * @public
 */
export declare namespace TabPanelElement {
    type Props = ITabPanelElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-tab-panel': TabPanelElement;
    }
}
export {};
//# sourceMappingURL=TabPanelElement.d.ts.map