import React from 'react';
import Sortable from 'sortablejs';
import type { TabsCompProps, TabsMode } from '../types';
import TabComponent from './TabComponent';
interface TabsState {
    highlightIndex: number;
    arrowRightDisabled: boolean;
    arrowLeftDisabled: boolean;
    isOverflow: boolean;
    dragIndicator: null | Record<string, any>;
    editingIndex: null | number;
    editInputText: null | string;
    editOriginText: null | string;
}
export declare class Tabs extends React.Component<TabsCompProps, TabsState> {
    static defaultProps: Partial<TabsCompProps>;
    static Tab: typeof TabComponent;
    navMain: React.RefObject<HTMLUListElement>;
    scroll: boolean;
    sortable?: Sortable;
    dragTip?: HTMLElement;
    id: string;
    draging: boolean;
    toDispose: Array<() => void>;
    resizeDom: React.RefObject<HTMLDivElement>;
    /** 组件的clientWidth集合 */
    clientWidthSet: Set<number>;
    checkArrowStatus: import("lodash").DebouncedFunc<() => void>;
    constructor(props: TabsCompProps);
    componentDidMount(): void;
    componentDidUpdate(): void;
    componentWillUnmount(): void;
    handleRootClick: (ev: MouseEvent) => void;
    /**
     * 处理内容与容器之间的位置关系
     */
    computedWidth(): void;
    /**
     * 保证选中的tab始终显示在可视区域
     */
    showSelected(key?: string | number): void;
    handleSelect(key: string | number): void;
    handleStartEdit(index: number, title: string): void;
    handleEditInputChange(e: React.ChangeEvent<HTMLInputElement>): void;
    handleEdit(): void;
    dragTipRef(ref: any): void;
    destroyDragging(): void;
    initDragging(): void;
    handleArrow(type: 'left' | 'right'): void;
    /**
     * 监听导航上的滚动事件
     */
    handleWheel(e: WheelEvent): void;
    renderNav: (child: any, index: number, childCount: number, showClose: boolean) => JSX.Element | undefined;
    renderTab(child: any, index: number): React.DetailedReactHTMLElement<any, HTMLElement> | undefined;
    renderArrow(type: 'left' | 'right'): JSX.Element | null | undefined;
    handleAddBtn: () => void | undefined;
    handleRefreshTab: (index: number) => void | undefined;
    renderNavs: (mode: Exclude<TabsMode, "">, showClose?: boolean) => any[] | null;
    render(): JSX.Element | null;
}
export default Tabs;
