import React from 'react';
import type { ActionObject, IScopedContext, RendererProps, Schema, SchemaNode } from 'jamis-core';
import { ScopedContext } from 'jamis-core';
import type { CRUDProps, ScrollEventParam } from '../types';
export default class CRUD extends React.Component<CRUDProps, any> {
    static propsList: Array<keyof CRUDProps>;
    static defaultProps: Partial<CRUDProps>;
    control: any;
    lastQuery: any;
    lastData: any;
    timer: ReturnType<typeof setTimeout>;
    mounted: boolean;
    /** 父容器, 主要用于定位CRUD内部popover的挂载点 */
    parentContainer: Element | null;
    filterOnEvent: ((onEvent: RendererProps["onEvent"]) => import("lodash").Dictionary<import("jamis-core").EventListenerAction | undefined>) & import("lodash").MemoizedFunction;
    /** 正在加载下一页中 */
    loadMoreSearch: Promise<void> | null;
    disposers: (() => void)[];
    constructor(props: CRUDProps);
    componentDidMount(): void;
    componentDidUpdate(prevProps: CRUDProps): void;
    componentWillUnmount(): void;
    /**
     * 防抖解析source关联的数据域里的items, 兼容可能通过source使用了ARRAYFILTER等表达式的场景, 避免死循环
     */
    resolveSourceItemsLazy: import("lodash").DebouncedFunc<() => void>;
    /** 查找CRUD最近层级的父窗口 */
    getClosestParentContainer: () => Element | null;
    controlRef(control: any): void;
    handleAction(e: React.UIEvent<any> | undefined, action: ActionObject, ctx: Record<string, any>, throwErrors?: boolean, delegate?: IScopedContext): any;
    handleScroll: (param: ScrollEventParam) => void;
    handleBulkAction(selectedItems: Array<any>, unSelectedItems: Array<any>, e: React.UIEvent<any>, action: ActionObject): void;
    handleItemAction(action: ActionObject, ctx: any): void;
    handleFilterInit(values: object): void;
    handleFilterReset(values: object, action: any): void;
    handleFilterSubmit(values: object, jumpToFirstPage?: boolean, replaceLocation?: boolean, search?: boolean): void;
    handleBulkGo(selectedItems: Array<any>, unSelectedItems: Array<any>, e: React.MouseEvent<any>): void | Promise<false | void>;
    handleDialogConfirm(values: object[], action: ActionObject, ctx: any, components: Array<any>): any;
    handleDialogClose(confirmed?: boolean): void;
    openFeedback(dialog: any, ctx: any): Promise<unknown>;
    /**
     * 执行加载
     *
     * @param values 搜索条件
     */
    search: (values?: any, silent?: boolean, clearSelection?: boolean, forceReload?: boolean) => Promise<void>;
    silentSearch: (values?: object, clearSelection?: boolean, forceReload?: boolean) => Promise<void>;
    handleChangePage(page: number, perPage?: number): void;
    handleSave(rows: Array<object> | object, diff: Array<object> | object, indexes: Array<string>, unModifiedItems?: Array<any>, rowsOrigin?: Array<object> | object, options?: {
        resetOnFailed?: boolean;
        reload?: string;
    }): void;
    handleSaveOrder(moved: Array<object>, rows: Array<object>): void;
    handleSelect(items: Array<any>, unSelectedItems: Array<any>): void;
    handleChildPopOverOpen(popOver: any): void;
    handleChildPopOverClose(popOver: any): void;
    handleQuery(values: Record<string, any>, forceReload?: boolean): void;
    reload(subpath?: string, query?: any): void;
    receive(values: object): void;
    reloadTarget(target: string, data: any): void;
    closeTarget(target: string, data: any): void;
    doAction(action: ActionObject, data: object, throwErrors?: boolean): any;
    unSelectItem(item: any, index: number): void;
    clearSelection(): void;
    hasBulkActionsToolbar(): any;
    hasBulkActions(): number | false;
    renderBulkActions(childProps: any): JSX.Element | null;
    renderPagination(toolbar: SchemaNode, showPerPage?: boolean, showStatistics?: boolean): JSX.Element | null;
    renderStatistics(): JSX.Element | null;
    renderLoadMore(): JSX.Element;
    renderFilterToggler(): JSX.Element | null;
    renderExportCSV(toolbar: Schema): JSX.Element;
    renderToolbar(toolbar?: SchemaNode, index?: number, childProps?: any, restArgs?: {
        toolbarRenderer?: (toolbar: SchemaNode, index: number) => React.ReactNode;
        showPerPage?: boolean;
        showStatistics?: boolean;
    }): string | number | boolean | JSX.Element | React.ReactFragment | null;
    renderHeaderToolbar: (childProps: any, toolbarRenderer?: (toolbar: SchemaNode, index: number) => React.ReactNode) => string | number | boolean | JSX.Element | React.ReactFragment | null;
    renderFooterToolbar(childProps: Record<string, any>, toolbarRenderer?: (toolbar: SchemaNode, index: number) => React.ReactNode): string | number | boolean | JSX.Element | React.ReactFragment | null;
    renderSelection(): React.ReactNode;
    render(): JSX.Element;
}
export declare class CRUDRenderer extends CRUD {
    static contextType: React.Context<IScopedContext<import("jamis-core").ScopedComponentType>>;
    context: React.ContextType<typeof ScopedContext>;
    constructor(props: CRUDProps, context: IScopedContext);
    componentWillUnmount(): void;
    reload(subpath?: string, query?: any, ctx?: any): void;
    receive(values: any, subPath?: string): void;
    reloadTarget(target: string, data: any): void;
    closeTarget(target: string, data: any): void;
    setData(values: Record<string, any>): void;
}
