import { ButtonProps, MenuItemProps } from '@aplus-frontend/antdv';
import { DropdownButtonProps } from '@aplus-frontend/antdv/es/dropdown';
import { ColumnType } from '@aplus-frontend/antdv/es/table';
import { VNodeChild } from 'vue';
import { ApButtonProps } from '../../ap-button/interface';
type ApBatchActionGroupButtonType = ButtonProps['type'] | 'borderLink';
type MixinButton<T> = Omit<T, 'type'> & {
    type?: ApBatchActionGroupButtonType;
    content?: VNodeChild;
};
interface ApBatchActionGroupTypeProps {
    default: ApButtonProps & {
        content?: VNodeChild;
    };
    dropdown: MixinButton<DropdownButtonProps>;
}
export type ApBatchActionGroupPropsKeys = keyof ApBatchActionGroupTypeProps;
export type ApBatchActionGroupButtonProps<T extends ApBatchActionGroupPropsKeys = ApBatchActionGroupPropsKeys> = T extends ApBatchActionGroupPropsKeys ? {
    dropdownType?: T;
} & ApBatchActionGroupTypeProps[T] : never;
export type ApBatchActionGroupMenuProps<RecordType = any> = Omit<MenuItemProps, 'title' | 'icon' | 'role' | 'originItemValue' | 'onClick' | 'disabled'> & {
    content?: VNodeChild;
    onClick?: (item?: {
        selectedRows?: RecordType[];
    }) => Promise<any> | any;
    auth?: string;
    ifShow?: (item?: {
        selectedRows?: RecordType[];
    }) => boolean;
    disabled?: boolean | ((item?: {
        selectedRows?: RecordType[];
    }) => boolean);
};
export type ApBatchActionGroupProps<RecordType = any> = {
    /**
     * 选中行的列表
     */
    selectedRows?: RecordType[];
    /**
     * 按钮配置
     */
    buttonProps?: ApBatchActionGroupButtonProps;
    /**
     * 下拉列表配置
     */
    menuList?: (ApBatchActionGroupMenuProps<RecordType> | 'divider')[];
};
export type ApBatchActionGroupExpose<RecordType = any> = {
    columns?: ColumnType<any>[];
    dataSource?: RecordType[];
};
export {};
