import type { Ref } from 'vue';
import type { Props, Emits, operationType } from '../type';
export declare const useOperation: (props: Props, emit: Emits, rowKey: Ref<string>, $table: Ref) => {
    $oprationsDropdown: Ref<any[], any[]>;
    $oprationsChildDropdown: Ref<any[], any[]>;
    getOperations: (row: any, column: any, index: number) => {
        btnOperates: operationType[];
        moreOperates: operationType[];
    };
    operationItemDisabled: (item: any, row: any, column: any, index: number) => boolean;
    operationItemTip: (item: any, row: any, column: any, index: number) => string;
    getItemChildren: (item: any, row: any) => Promise<any>;
    oprationsClick: (type: "btnOperates" | "moreOperates", command: any, row: any, column: any, index: number) => Promise<void>;
    btnOperationsVisible: Ref<any, any>;
    operationsVisible: Ref<boolean[], boolean[]>;
    operationLazyData: Ref<{
        btnOperates: any;
        moreOperates: any;
    }, Record<"btnOperates" | "moreOperates", any> | {
        btnOperates: any;
        moreOperates: any;
    }>;
    operationClass: import("vue").ComputedRef<string>;
    lazyLoadingMap: Ref<Record<any, any>, Record<any, any>>;
    btnVisibleChange: (visible: boolean, tableIndex: number, index: any) => void;
    visibleChange: (visible: boolean, index: number) => void;
    childDropdownPlacement: Ref<string, string>;
    currentParentOprationVal: Ref<string, string>;
    realOperationOptions: import("vue").ComputedRef<{
        width: any;
        minWidth: any;
        type?: string | undefined;
        showOverflowTooltip?: boolean | Partial<Pick<import("element-plus").ElTooltipProps, "offset" | "effect" | "placement" | "popperClass" | "showAfter" | "hideAfter" | "popperOptions" | "enterable" | "showArrow">> | undefined;
        sortOrders?: ("ascending" | "descending" | null)[] | undefined;
        sortable?: string | boolean | undefined;
        resizable?: boolean | undefined;
        reserveSelection?: boolean | undefined;
        filterMultiple?: boolean | undefined;
        key?: PropertyKey;
        fixed?: string | boolean | undefined;
        style?: unknown;
        label?: string | undefined;
        ref?: import("vue").VNodeRef;
        ref_for?: boolean;
        ref_key?: string;
        onVnodeBeforeMount?: ((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[];
        onVnodeMounted?: ((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[];
        onVnodeBeforeUpdate?: ((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void) | ((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void)[];
        onVnodeUpdated?: ((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void) | ((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void)[];
        onVnodeBeforeUnmount?: ((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[];
        onVnodeUnmounted?: ((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[];
        class?: unknown;
        className?: string | undefined;
        selectable?: ((row: any, index: number) => boolean) | undefined;
        filters?: import("element-plus/es/components/table/src/table-column/defaults.mjs").Filters | undefined;
        formatter?: ((row: any, column: import("element-plus").TableColumnCtx<any>, cellValue: any, index: number) => string | import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
            [key: string]: any;
        }>) | undefined;
        align?: string | undefined;
        index?: number | ((index: number) => number) | undefined;
        filterMethod?: import("element-plus/es/components/table/src/table-column/defaults.mjs").FilterMethods<any> | undefined;
        labelClassName?: string | undefined;
        property?: string | undefined;
        prop?: string | undefined;
        renderHeader?: ((data: {
            column: import("element-plus").TableColumnCtx<any>;
            $index: number;
        }) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
            [key: string]: any;
        }>) | undefined;
        sortMethod?: ((a: any, b: any) => number) | undefined;
        sortBy?: string | string[] | ((row: any, index: number) => string) | undefined;
        columnKey?: string | undefined;
        headerAlign?: string | undefined;
        filteredValue?: string[] | undefined;
        filterPlacement?: string | undefined;
    }>;
};
