import { FDatePicker, FInput, FSelect } from '../../filter';
import { PropType } from 'vue';
import { ComponentEvent, EmitEventType, EmitType, EventType, InjectProps, PowerfulTableData, PowerfulTableHeader, PowerfulTableHeaderProps, PowerfulTableProps, PowerfulTableStatesReturn, SetDataType, StateData } from '../../index';

export declare enum EmitEnum {
    BtnPlusChange = "btn-plus-change",
    BtnPlusRefresh = "btn-plus-refresh",
    BtnClick = "btn-click",
    SizeChange = "size-change",
    ComponentEvent = "component-event",
    SortCustom = "sort-custom",
    BatchOperate = "batch-operate",
    Select = "select",
    SelectionChange = "selection-change",
    SelectAll = "select-all",
    CellMouseEnter = "cell-mouse-enter",
    CellMouseLeave = "cell-mouse-leave",
    CellClick = "cell-click",
    CellDblclick = "cell-dblclick",
    CellContextmenu = "cell-contextmenu",
    RowClick = "row-click",
    RowContextmenu = "row-contextmenu",
    RowDblclick = "row-dblclick",
    HeaderClick = "header-click",
    HeaderContextmenu = "header-contextmenu",
    FilterChange = "filter-change",
    CurrentChange = "current-change",
    HeaderDragend = "header-dragend",
    ExpandChange = "expand-change"
}
type DefaultRow = any;
type TranslatePair = {
    [key: string]: string | string[] | TranslatePair;
};
export type FilterComponents = import('vue').Ref<InstanceType<typeof FSelect | typeof FInput | typeof FDatePicker>[] | null>;
export declare const powerfulTableProps: {
    btnConfig: {
        type: PropType<PowerfulTableProps<DefaultRow>["btnConfig"]>;
        default: undefined;
    };
    size: {
        type: PropType<PowerfulTableProps<DefaultRow>["size"]>;
        default: string;
        validator: (val: string) => boolean;
    };
    list: {
        type: PropType<PowerfulTableProps<DefaultRow>["list"]>;
        default: () => never[];
    };
    selectData: {
        type: PropType<PowerfulTableProps<DefaultRow>["list"]>;
        default: () => never[];
    };
    isSelect: {
        type: PropType<PowerfulTableProps<DefaultRow>["isSelect"]>;
        default: boolean;
    };
    selectable: {
        type: PropType<PowerfulTableProps<DefaultRow>["selectable"]>;
        default: undefined;
    };
    selectCompare: {
        type: PropType<PowerfulTableProps<DefaultRow>["selectCompare"]>;
        default: () => string[];
    };
    header: {
        type: PropType<PowerfulTableProps<DefaultRow>["header"]>;
        default: () => never[];
    };
    paginationProperty: {
        type: PropType<PowerfulTableProps<DefaultRow>["paginationProperty"]>;
        default: () => {};
    };
    operateData: {
        type: PropType<PowerfulTableProps<DefaultRow>["operateData"]>;
        default: () => {}[];
    };
    isPagination: {
        type: BooleanConstructor;
        default: boolean;
    };
    tree: {
        type: PropType<PowerfulTableProps<DefaultRow>["tree"]>;
        default: () => {
            props: {
                children: string;
                hasChildren: string;
            };
        };
    };
    property: {
        type: PropType<PowerfulTableProps<DefaultRow>["property"]>;
        default: () => {};
    };
    listRequest: {
        type: PropType<PowerfulTableProps<DefaultRow>["listRequest"]>;
        default: undefined;
    };
};
export declare const powerfulTableComponentProp: {
    row: {
        type: PropType<DefaultRow>;
        default: () => {}[];
    };
    index: {
        type: PropType<number>;
    };
    aligning: {
        type: PropType<"left" | "center" | "right">;
        default: string;
    };
};
export declare const isProperty: <T, R>(e: T, property?: R | ((e: T) => R)) => R;
export declare const useREmit: <T extends EventType>(emit: (s: "component-emit", event: ComponentEvent, ...arg: any) => void, componentName: EventType | "filter", props: {
    row: any;
    index: number;
    props: PowerfulTableHeaderProps;
}) => {
    REmit: (eventType: string, ...arg: any) => void;
    event: (eventType: keyof NonNullable<SetDataType<T>["on"]>, ...arg: any) => void;
};
export declare const usePowerfulTableStates: <L>(props: PowerfulTableProps<L>) => PowerfulTableStatesReturn<L>;
export declare const useFunction: <L>(emit: EmitEventType<L>, powerfulTableData: PowerfulTableData<L>) => {
    handleSelectionChange: (e: L[]) => void;
    returnEmit: (emitName: Extract<EmitType, "btn-click">, arg: any) => void;
    componentEmit: (e: ComponentEvent, ...arg: any) => void;
    sortChange: (obj: {
        column: any;
        prop: string;
        order: string;
    }) => void;
    batchOperate: () => void;
    get: () => void;
    matchComponents: (type: string) => string | undefined;
    bindAttr(prop: PowerfulTableHeaderProps<L>, scope: {
        $index: number;
        row: L;
    }, item: PowerfulTableHeader<L>): {
        row: L;
        index: number;
        prop: PowerfulTableHeaderProps<L>;
        aligning: "left" | "center" | "right";
    };
};
export declare const useInitiateListRequest: <L>(powerfulTableData: PowerfulTableData<L>, props: PowerfulTableProps<L>, injectProps: InjectProps, stateData: StateData<L>) => {
    resetList: (params?: object) => void;
    getListData: (params?: object) => void;
} | {
    resetList: undefined;
    getListData: undefined;
};
export type { StateData, PowerfulTableData, PowerfulTableProps, TranslatePair };
