import { TabPaneName, TabsPaneContext } from 'element-plus';
import { omit } from '../utils/core';
import { ElTabsProps, ElTabsInstance } from '../ele-app/el';
import { EleDropdownInstance } from '../ele-app/plus';
import { DropdownItem } from '../ele-dropdown/types';
import { TabPaneItem, TabSize, TabType } from './types';

declare const _default: import('vue').DefineComponent<{
    items: {
        type: import('vue').PropType<TabPaneItem[]>;
        required: boolean;
    };
    size: import('vue').PropType<TabSize>;
    type: import('vue').PropType<TabType>;
    center: BooleanConstructor;
    contextMenu: import('vue').PropType<boolean | import('../ele-app/plus').EleDropdownProps>;
    contextMenus: import('vue').PropType<import('./types').ContextMenus>;
    sortable: BooleanConstructor;
    mousewheel: BooleanConstructor;
    handleClick: BooleanConstructor;
    flexTable: BooleanConstructor;
    closable: BooleanConstructor;
    addable: BooleanConstructor;
    modelValue: {
        readonly type: import('vue').PropType<import('element-plus/es/utils/index').EpPropMergeType<readonly [StringConstructor, NumberConstructor], unknown, unknown>>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    };
    editable: BooleanConstructor;
    tabPosition: import('element-plus/es/utils/index').EpPropFinalized<StringConstructor, "top" | "bottom" | "left" | "right", unknown, "top", boolean>;
    beforeLeave: import('element-plus/es/utils/index').EpPropFinalized<(new (...args: any[]) => (newName: TabPaneName, oldName: TabPaneName) => import('element-plus/es/utils/typescript').Awaitable<void | boolean>) | (() => (newName: TabPaneName, oldName: TabPaneName) => import('element-plus/es/utils/typescript').Awaitable<void | boolean>) | {
        (): (newName: TabPaneName, oldName: TabPaneName) => import('element-plus/es/utils/typescript').Awaitable<void | boolean>;
        new (): any;
        readonly prototype: any;
    } | ((new (...args: any[]) => (newName: TabPaneName, oldName: TabPaneName) => import('element-plus/es/utils/typescript').Awaitable<void | boolean>) | (() => (newName: TabPaneName, oldName: TabPaneName) => import('element-plus/es/utils/typescript').Awaitable<void | boolean>) | {
        (): (newName: TabPaneName, oldName: TabPaneName) => import('element-plus/es/utils/typescript').Awaitable<void | boolean>;
        new (): any;
        readonly prototype: any;
    })[], unknown, unknown, () => true, boolean>;
    stretch: BooleanConstructor;
}, {
    omit: typeof omit;
    tabRef: import('vue').Ref<ElTabsInstance>;
    isOnlyTab: import('vue').ComputedRef<boolean>;
    tabSize: import('vue').ComputedRef<TabSize | undefined>;
    tabType: import('vue').ComputedRef<TabType | undefined>;
    tabProps: import('vue').ComputedRef<Omit<ElTabsProps, "type">>;
    ctxMenuDropdownRef: import('vue').Ref<EleDropdownInstance>;
    ctxMenuDropdownItems: import('vue').ShallowRef<DropdownItem[]>;
    ctxMenuDropdownVirtualRef: import('vue').Ref<any>;
    updateModelValue: (name: TabPaneName) => void;
    handleContextmenu: (e: MouseEvent) => void;
    handleTabClick: (pane: TabsPaneContext, e: Event) => void;
    handleTabChange: (name: TabPaneName) => void;
    handleTabRemove: (name: TabPaneName) => void;
    handleTabAdd: () => void;
    handleEdit: (name: TabPaneName | undefined, action: "remove" | "add") => void;
    handleItemClick: (item: TabPaneItem | undefined, tabName: string | number | undefined, e: MouseEvent) => void;
    handleItemCtxMenuVisible: (visible: boolean) => void;
    handleItemCtxMenuClick: (command: string) => void;
    handleItemContextmenu: (item: TabPaneItem | undefined, tabName: string | number | undefined, e: MouseEvent) => void;
    hideAllDropdown: () => void;
    updateActiveBar: () => void;
    scrollTabs: (direction: "prev" | "next", done?: () => void) => void;
}, unknown, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
    tabItemClick: (_opt: import('./types').TabEventOption) => boolean;
    tabContextMenu: (_opt: import('./types').TabEventOption) => boolean;
    tabContextOpen: (_ref: EleDropdownInstance, _item?: TabPaneItem | null, _name?: string | number | null) => boolean;
    tabSortChange: (_data: TabPaneItem[]) => boolean;
    "update:modelValue": (name: TabPaneName) => boolean;
    tabClick: (pane: TabsPaneContext, ev: Event) => boolean;
    tabChange: (name: TabPaneName) => boolean;
    edit: (paneName: TabPaneName | undefined, action: "remove" | "add") => boolean;
    tabRemove: (name: TabPaneName) => boolean;
    tabAdd: () => boolean;
}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
    items: {
        type: import('vue').PropType<TabPaneItem[]>;
        required: boolean;
    };
    size: import('vue').PropType<TabSize>;
    type: import('vue').PropType<TabType>;
    center: BooleanConstructor;
    contextMenu: import('vue').PropType<boolean | import('../ele-app/plus').EleDropdownProps>;
    contextMenus: import('vue').PropType<import('./types').ContextMenus>;
    sortable: BooleanConstructor;
    mousewheel: BooleanConstructor;
    handleClick: BooleanConstructor;
    flexTable: BooleanConstructor;
    closable: BooleanConstructor;
    addable: BooleanConstructor;
    modelValue: {
        readonly type: import('vue').PropType<import('element-plus/es/utils/index').EpPropMergeType<readonly [StringConstructor, NumberConstructor], unknown, unknown>>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    };
    editable: BooleanConstructor;
    tabPosition: import('element-plus/es/utils/index').EpPropFinalized<StringConstructor, "top" | "bottom" | "left" | "right", unknown, "top", boolean>;
    beforeLeave: import('element-plus/es/utils/index').EpPropFinalized<(new (...args: any[]) => (newName: TabPaneName, oldName: TabPaneName) => import('element-plus/es/utils/typescript').Awaitable<void | boolean>) | (() => (newName: TabPaneName, oldName: TabPaneName) => import('element-plus/es/utils/typescript').Awaitable<void | boolean>) | {
        (): (newName: TabPaneName, oldName: TabPaneName) => import('element-plus/es/utils/typescript').Awaitable<void | boolean>;
        new (): any;
        readonly prototype: any;
    } | ((new (...args: any[]) => (newName: TabPaneName, oldName: TabPaneName) => import('element-plus/es/utils/typescript').Awaitable<void | boolean>) | (() => (newName: TabPaneName, oldName: TabPaneName) => import('element-plus/es/utils/typescript').Awaitable<void | boolean>) | {
        (): (newName: TabPaneName, oldName: TabPaneName) => import('element-plus/es/utils/typescript').Awaitable<void | boolean>;
        new (): any;
        readonly prototype: any;
    })[], unknown, unknown, () => true, boolean>;
    stretch: BooleanConstructor;
}>> & {
    "onUpdate:modelValue"?: ((name: TabPaneName) => any) | undefined;
    onTabClick?: ((pane: {
        uid: number;
        slots: import('vue').Slots;
        props: {
            readonly label: string;
            readonly closable: boolean;
            readonly disabled: boolean;
            readonly lazy: boolean;
            readonly name?: import('element-plus/es/utils/index').EpPropMergeType<readonly [StringConstructor, NumberConstructor], unknown, unknown> | undefined;
        };
        paneName: string | number | undefined;
        active: boolean;
        index: string | undefined;
        isClosable: boolean;
    }, ev: Event) => any) | undefined;
    onTabRemove?: ((name: TabPaneName) => any) | undefined;
    onTabChange?: ((name: TabPaneName) => any) | undefined;
    onEdit?: ((paneName: TabPaneName | undefined, action: "add" | "remove") => any) | undefined;
    onTabAdd?: (() => any) | undefined;
    onTabItemClick?: ((_opt: import('./types').TabEventOption) => any) | undefined;
    onTabContextMenu?: ((_opt: import('./types').TabEventOption) => any) | undefined;
    onTabContextOpen?: ((_ref: EleDropdownInstance, _item?: TabPaneItem | null | undefined, _name?: string | number | null | undefined) => any) | undefined;
    onTabSortChange?: ((_data: TabPaneItem[]) => any) | undefined;
}, {
    mousewheel: boolean;
    closable: boolean;
    center: boolean;
    sortable: boolean;
    addable: boolean;
    editable: boolean;
    tabPosition: import('element-plus/es/utils/index').EpPropMergeType<StringConstructor, "top" | "bottom" | "right" | "left", unknown>;
    beforeLeave: (newName: TabPaneName, oldName: TabPaneName) => import('element-plus/es/utils/typescript').Awaitable<void | boolean>;
    stretch: boolean;
    handleClick: boolean;
    flexTable: boolean;
}, {}>;
export default _default;
