import { PropType } from 'vue';

declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<import('vue').ExtractPropTypes<{
    /**
     * @description 组件的主题风格
     * @type {'default' | 'large-screen'}
     */
    theme: {
        type: PropType<"default" | "large-screen">;
        default: string;
    };
    apiUrlQuery: {
        type: StringConstructor;
        required: true;
    };
    apiUrlDetail: {
        type: StringConstructor;
        required: true;
    };
    apiUrlCreate: {
        type: StringConstructor;
        required: true;
    };
    apiUrlUpdate: {
        type: StringConstructor;
        required: true;
    };
    apiUrlDelete: {
        type: StringConstructor;
        required: true;
    };
    columns: {
        type: PropType<any[]>;
        default: () => never[];
    };
    onBeforeQuery: {
        type: PropType<(params: any) => any>;
    };
    onAfterQuery: {
        type: PropType<(data: any[]) => any[] | Promise<any[]>>;
    };
    onBeforeOpenDialog: {
        type: PropType<(mode: string, data?: any) => any>;
    };
    onAfterOpenDialog: {
        type: PropType<(mode: string, data: any) => void>;
    };
    onBeforeSubmit: {
        type: PropType<(data: any) => any>;
    };
    onAfterSubmit: {
        type: PropType<(mode: string, data: any) => void>;
    };
    onBeforeDelete: {
        type: PropType<(ids: number[]) => boolean | Promise<boolean>>;
    };
    onAfterDelete: {
        type: PropType<(ids: number[]) => void>;
    };
    showSelectionColumn: {
        type: BooleanConstructor;
        default: boolean;
    };
    showIndexColumn: {
        type: BooleanConstructor;
        default: boolean;
    };
    showActionsColumn: {
        type: BooleanConstructor;
        default: boolean;
    };
    showEditButton: {
        type: BooleanConstructor;
        default: boolean;
    };
    showDeleteButton: {
        type: BooleanConstructor;
        default: boolean;
    };
    actionsColumnWidth: {
        type: (StringConstructor | NumberConstructor)[];
        default: number;
    };
    dialogWidth: {
        type: StringConstructor;
        default: string;
    };
    initialSearchForm: {
        type: ObjectConstructor;
        default: () => {
            pageNum: number;
            pageSize: number;
        };
    };
    showPagination: {
        type: BooleanConstructor;
        default: boolean;
    };
    pageSizes: {
        type: ArrayConstructor;
        default: () => number[];
    };
    paginationLayout: {
        type: StringConstructor;
        default: string;
    };
    paginationBackground: {
        type: BooleanConstructor;
        default: boolean;
    };
    paginationSmall: {
        type: BooleanConstructor;
        default: boolean;
    };
    paginationHideOnSinglePage: {
        type: BooleanConstructor;
        default: boolean;
    };
    dialogFormConfig: {
        type: () => any[];
        default: () => never[];
    };
    dialogFormRules: {
        type: ObjectConstructor;
        default: () => {};
    };
}>, {
    refresh: () => Promise<void>;
    search: () => void;
    handleDelete: (ids: number[]) => Promise<void>;
    openDialog: (mode: "add" | "edit", rowData?: any) => Promise<void>;
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
    submit: (...args: any[]) => void;
    delete: (...args: any[]) => void;
    "open-dialog": (...args: any[]) => void;
}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
    /**
     * @description 组件的主题风格
     * @type {'default' | 'large-screen'}
     */
    theme: {
        type: PropType<"default" | "large-screen">;
        default: string;
    };
    apiUrlQuery: {
        type: StringConstructor;
        required: true;
    };
    apiUrlDetail: {
        type: StringConstructor;
        required: true;
    };
    apiUrlCreate: {
        type: StringConstructor;
        required: true;
    };
    apiUrlUpdate: {
        type: StringConstructor;
        required: true;
    };
    apiUrlDelete: {
        type: StringConstructor;
        required: true;
    };
    columns: {
        type: PropType<any[]>;
        default: () => never[];
    };
    onBeforeQuery: {
        type: PropType<(params: any) => any>;
    };
    onAfterQuery: {
        type: PropType<(data: any[]) => any[] | Promise<any[]>>;
    };
    onBeforeOpenDialog: {
        type: PropType<(mode: string, data?: any) => any>;
    };
    onAfterOpenDialog: {
        type: PropType<(mode: string, data: any) => void>;
    };
    onBeforeSubmit: {
        type: PropType<(data: any) => any>;
    };
    onAfterSubmit: {
        type: PropType<(mode: string, data: any) => void>;
    };
    onBeforeDelete: {
        type: PropType<(ids: number[]) => boolean | Promise<boolean>>;
    };
    onAfterDelete: {
        type: PropType<(ids: number[]) => void>;
    };
    showSelectionColumn: {
        type: BooleanConstructor;
        default: boolean;
    };
    showIndexColumn: {
        type: BooleanConstructor;
        default: boolean;
    };
    showActionsColumn: {
        type: BooleanConstructor;
        default: boolean;
    };
    showEditButton: {
        type: BooleanConstructor;
        default: boolean;
    };
    showDeleteButton: {
        type: BooleanConstructor;
        default: boolean;
    };
    actionsColumnWidth: {
        type: (StringConstructor | NumberConstructor)[];
        default: number;
    };
    dialogWidth: {
        type: StringConstructor;
        default: string;
    };
    initialSearchForm: {
        type: ObjectConstructor;
        default: () => {
            pageNum: number;
            pageSize: number;
        };
    };
    showPagination: {
        type: BooleanConstructor;
        default: boolean;
    };
    pageSizes: {
        type: ArrayConstructor;
        default: () => number[];
    };
    paginationLayout: {
        type: StringConstructor;
        default: string;
    };
    paginationBackground: {
        type: BooleanConstructor;
        default: boolean;
    };
    paginationSmall: {
        type: BooleanConstructor;
        default: boolean;
    };
    paginationHideOnSinglePage: {
        type: BooleanConstructor;
        default: boolean;
    };
    dialogFormConfig: {
        type: () => any[];
        default: () => never[];
    };
    dialogFormRules: {
        type: ObjectConstructor;
        default: () => {};
    };
}>> & Readonly<{
    onSubmit?: ((...args: any[]) => any) | undefined;
    onDelete?: ((...args: any[]) => any) | undefined;
    "onOpen-dialog"?: ((...args: any[]) => any) | undefined;
}>, {
    theme: "default" | "large-screen";
    columns: any[];
    showSelectionColumn: boolean;
    showIndexColumn: boolean;
    showActionsColumn: boolean;
    showEditButton: boolean;
    showDeleteButton: boolean;
    actionsColumnWidth: string | number;
    dialogWidth: string;
    initialSearchForm: Record<string, any>;
    showPagination: boolean;
    pageSizes: unknown[];
    paginationLayout: string;
    paginationBackground: boolean;
    paginationSmall: boolean;
    paginationHideOnSinglePage: boolean;
    dialogFormConfig: any[];
    dialogFormRules: Record<string, any>;
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>, Partial<Record<any, (_: {
    row: any;
}) => any>> & {
    header?(_: {}): any;
    "query-conditions"?(_: {
        searchForm: {
            pageNum: number;
            pageSize: number;
        };
    }): any;
    "query-left"?(_: {}): any;
    "query-right"?(_: {}): any;
    "action-left"?(_: {
        selections: any[];
    }): any;
    "add-button-content"?(_: {}): any;
    "action-right"?(_: {}): any;
    actions?(_: {
        row: any;
    }): any;
    "dialog-form-content"?(_: {
        formData: Record<string, any>;
        mode: "add" | "edit";
    }): any;
}>;
export default _default;
type __VLS_WithTemplateSlots<T, S> = T & {
    new (): {
        $slots: S;
    };
};
