import { Component } from 'react';
import { Size, Width } from '../common';
import { Swipe } from './utils';
export interface TabItem {
    title: string;
    content: React.ReactNode;
    disabled: boolean;
}
type TabsTransitionSpacing = 'default' | `${Size.EXTRA_SMALL | Size.SMALL | Size.MEDIUM | Size.LARGE}`;
export interface TabsProps {
    tabs: TabItem[];
    selected: number;
    name: string;
    animatePanelsOnClick?: boolean;
    changeTabOnSwipe?: boolean;
    className?: string;
    transitionSpacing?: TabsTransitionSpacing;
    headerWidth?: `${Width}`;
    id?: string;
    onTabSelect: (index: number) => void;
}
interface TabsState {
    start: Swipe | null;
    translateX: number;
    translateFrom: number;
    translateTo: number;
    translateLineX: string | null;
    isAnimating: boolean;
    isSwiping: boolean;
    isScrolling: boolean;
    lastSwipeVelocity: number;
    fullWidthTabs: boolean;
    currentSwipe: Swipe[];
    selectedTabIndex: number;
}
export default class Tabs extends Component<TabsProps, TabsState> {
    props: TabsProps & Required<Pick<TabsProps, keyof typeof Tabs.defaultProps>>;
    static defaultProps: {
        changeTabOnSwipe: true;
        transitionSpacing: "default";
        headerWidth: Width.BLOCK;
    };
    containerReference: import("react").RefObject<HTMLDivElement>;
    constructor(props: Tabs['props']);
    container: HTMLDivElement | null;
    containerWidth: number;
    tabRefs: (HTMLLIElement | null)[];
    get filteredTabsLength(): number;
    get MAX_INDEX(): number;
    componentDidMount(): void;
    componentDidUpdate(previousProps: TabsProps, previousState: TabsState): void;
    componentWillUnmount(): void;
    handleResize: () => void;
    setContainerRefAndWidth: (node: HTMLDivElement | null) => void;
    setContainerWidth: (node: HTMLDivElement | null) => void;
    isTabDisabled: (index: number) => boolean;
    getAllTabsWidth: () => number;
    getDistanceToSelectedTab: (selectedTabIndex: number) => number;
    setTabWidth: () => void;
    getTabLineWidth: () => string;
    getTabToSelect: (selected: number, start: Swipe, end: Swipe) => number;
    swipedOverHalfOfContainer: (difference: number) => boolean;
    calculateApplicableDragDifference: ({ currentSelected, nextSelected, start, end, }: {
        currentSelected: number;
        nextSelected: number;
        start: Swipe;
        end: Swipe;
    }) => number | false;
    switchTab: (index: number) => void;
    getTabIndexWithoutDisabledTabs(index: number): number;
    animateToTab: (index: number, instant?: boolean) => void;
    animateLine: (index: number) => void;
    animatePanel: (index: number, instant?: boolean) => void;
    disableScroll: (event: Event) => void;
    handleTabClick: (index: number) => () => void;
    onKeyDown: (index: number) => (event: React.KeyboardEvent<HTMLLIElement>) => void;
    handleTouchStart: React.TouchEventHandler<HTMLDivElement>;
    handleTouchMove: React.TouchEventHandler<HTMLDivElement>;
    handleTouchEnd: React.TouchEventHandler<HTMLDivElement>;
    render(): import("react").JSX.Element;
}
export {};
//# sourceMappingURL=Tabs.d.ts.map