import { LitElement, PropertyValues, TemplateResult } from 'lit';
import UiTab from './Tab.js';
import '../../icon-button/ui-icon-button.js';
import '../../divider/ui-divider.js';
import '../../icons/ui-icon.js';
export type TabsPriority = 'primary' | 'secondary';
export interface TabSelectionDetail {
    /**
     * The selected tab.
     */
    item: UiTab;
    /**
     * The index of the selected tab.
     */
    index: number;
}
export interface SizingInfo {
    left: number;
    width: number;
}
/**
 * Calculates value in percentages
 * @param w Element width
 * @param w0 Parent width
 * @return The percentage of element's width relative to parent.
 */
export declare function calcPercent(w: number, w0: number): number;
/**
 * A container for tabs.
 *
 * @fires change - A non bubbling event when selection change through user interaction.
 */
export default class UiTabs extends LitElement {
    activeItem: UiTab | null;
    previousItem: UiTab | null;
    /**
     * The currently selected tab, `null` only when there are no tab children.
     */
    get activeTab(): UiTab | null;
    set activeTab(tab: UiTab | null);
    /**
     * The index of the currently selected tab.
     */
    get activeTabIndex(): number;
    /**
     * Sets the active tab by index.
     */
    set activeTabIndex(index: number);
    get focusedTab(): UiTab | undefined;
    private accessor tabs;
    private accessor tabsScrollerElement;
    private accessor slotElement;
    private accessor pointer;
    /**
     * The priority of the tabs.
     *
     * @default primary
     * @attribute
     */
    accessor priority: TabsPriority;
    private accessor pointerStyles;
    private accessor indicated;
    private observer;
    /**
     * This is set by the intersection observer. Once the tabs are in the view it turns to `true`.
     * This we can properly visualize selection.
     */
    accessor isVisible: boolean | undefined;
    /**
     * Whether or not to automatically select a tab when it is focused.
     */
    accessor autoActivate: boolean;
    private readonly internals;
    constructor();
    protected willUpdate(cp: PropertyValues<this>): void;
    connectedCallback(): void;
    disconnectedCallback(): void;
    protected intersectionCallback(entries: IntersectionObserverEntry[]): void;
    /**
     * Scrolls the toolbar, if overflowing, to the active tab, or the provided
     * tab.
     *
     * @param tabToScrollTo The tab that should be scrolled to. Defaults to the
     *     active tab.
     * @return A Promise that resolves after the tab has been scrolled to.
     */
    scrollToTab(tabToScrollTo?: UiTab | null): Promise<void>;
    protected handleVisibility(): void;
    protected positionPointer(tab: UiTab, old?: UiTab | null): Promise<void>;
    protected moveAnimation?: Animation;
    protected getTabSizing(tab: UiTab): SizingInfo;
    protected getPrimaryKeyframes(start: SizingInfo, final: SizingInfo): Keyframe[];
    protected getSecondaryKeyframes(start: SizingInfo, final: SizingInfo): Keyframe[];
    protected handleTabClick(e: PointerEvent): Promise<void>;
    private activateTab;
    private updateFocusableTab;
    private handleKeydown;
    private handleKeyup;
    private handleFocusout;
    private handleSlotChange;
    render(): TemplateResult;
    protected renderSlot(): TemplateResult;
    protected renderIndicator(): TemplateResult;
}
//# sourceMappingURL=Tabs.d.ts.map