import React from 'react';
import { RendererProps } from '../factory';
import { SchemaNode, Schema, Action, Api } from '../types';
import { ICRUDStore } from '../store/crud';
import { IScopedContext } from '../Scoped';
interface CRUDProps extends RendererProps {
    api?: Api;
    filter?: Schema;
    store: ICRUDStore;
    defaultParams: object;
    syncLocation?: boolean;
    primaryField?: string;
    mode?: 'table' | 'grid' | 'cards' | 'list';
    toolbarInline?: boolean;
    toolbar?: SchemaNode;
    headerToolbar?: SchemaNode;
    footerToolbar?: SchemaNode;
    bulkActions?: Array<Action>;
    itemActions?: Array<Action>;
    orderField?: string;
    saveOrderApi?: Api;
    quickSaveApi?: Api;
    quickSaveItemApi?: Api;
    initFetch?: boolean;
    perPageAvailable?: Array<number | string>;
    messages: {
        fetchFailed?: string;
        fetchSuccess?: string;
        saveFailed?: string;
        saveSuccess?: string;
    };
    pickerMode?: boolean;
    pageField?: string;
    perPageField?: string;
    hideQuickSaveBtn?: boolean;
    autoJumpToTopOnPagerChange?: boolean;
    interval?: number;
    silentPolling?: boolean;
    stopAutoRefreshWhen?: string;
    stopAutoRefreshWhenModalIsOpen?: boolean;
    filterTogglable?: boolean;
    filterDefaultVisible?: boolean;
    syncResponse2Query?: boolean;
    keepItemSelectionOnPageChange?: boolean;
    loadDataOnce?: boolean;
    source?: string;
}
export default class CRUD extends React.Component<CRUDProps, any> {
    static propsList: Array<string>;
    static defaultProps: {
        toolbarInline: boolean;
        headerToolbar: string[];
        footerToolbar: string[];
        primaryField: string;
        syncLocation: boolean;
        pageField: string;
        perPageField: string;
        hideQuickSaveBtn: boolean;
        autoJumpToTopOnPagerChange: boolean;
        silentPolling: boolean;
        filterTogglable: boolean;
        filterDefaultVisible: boolean;
        loadDataOnce: boolean;
    };
    control: any;
    lastQuery: any;
    dataInvalid: boolean;
    timer: number;
    mounted: boolean;
    constructor(props: CRUDProps);
    componentWillMount(): void;
    componentDidMount(): void;
    componentWillReceiveProps(nextProps: CRUDProps): void;
    componentDidUpdate(): void;
    componentWillUnmount(): void;
    controlRef(control: any): void;
    handleAction(e: React.UIEvent<any> | undefined, action: Action, ctx: object, delegate?: boolean): any;
    handleBulkAction(selectedItems: Array<any>, unSelectedItems: Array<any>, e: React.UIEvent<any>, action: Action): any;
    handleItemAction(action: Action, ctx: any): void;
    handleFilterInit(values: object): void;
    handleFilterReset(values: object): void;
    handleFilterSubmit(values: object, jumpToFirstPage?: boolean, replaceLocation?: boolean, search?: boolean): void;
    handleBulkGo(selectedItems: Array<any>, unSelectedItems: Array<any>, e: React.MouseEvent<any>): any;
    handleDialogConfirm(values: object[], action: Action, ctx: any, components: Array<any>): any;
    handleDialogClose(): void;
    openFeedback(dialog: any, ctx: any): Promise<{}>;
    search(values?: any, silent?: boolean, clearSelection?: boolean, forceReload?: boolean): void;
    silentSearch(values?: object): void;
    handleChangePage(page: number, perPage?: number): void;
    handleSave(rows: Array<object> | object, diff: Array<object> | object, indexes: Array<number>, unModifiedItems?: Array<any>): 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;
    handlQuery(values: object): void;
    reload(subpath?: string, query?: any): void;
    receive(values: object): void;
    reloadTarget(target: string, data: any): void;
    doAction(action: Action, data: object, throwErrors?: boolean): any;
    unSelectItem(item: any, index: number): void;
    clearSelection(): void;
    hasBulkActionsToolbar(): string | number | false | Schema | import("../types").SchemaArray | ((searchElement: SchemaNode, fromIndex?: number | undefined) => number) | ((callbackfn: (value: SchemaNode, index: number, array: SchemaNode[]) => boolean, thisArg?: any) => boolean) | ((callbackfn: (value: SchemaNode, index: number, array: SchemaNode[]) => void, thisArg?: any) => void) | {
        (callbackfn: (previousValue: SchemaNode, currentValue: SchemaNode, currentIndex: number, array: SchemaNode[]) => SchemaNode): SchemaNode;
        (callbackfn: (previousValue: SchemaNode, currentValue: SchemaNode, currentIndex: number, array: SchemaNode[]) => SchemaNode, initialValue: SchemaNode): SchemaNode;
        <U>(callbackfn: (previousValue: U, currentValue: SchemaNode, currentIndex: number, array: SchemaNode[]) => U, initialValue: U): U;
    } | ((value: SchemaNode, start?: number | undefined, end?: number | undefined) => import("../types").SchemaArray) | ((searchElement: SchemaNode, fromIndex?: number | undefined) => boolean) | undefined;
    hasBulkActions(): number | false;
    renderBulkActions(childProps: any): JSX.Element | null;
    renderPagination(): JSX.Element | null;
    renderStatistics(): JSX.Element | null;
    renderSwitchPerPage(childProps: any): JSX.Element | null;
    renderLoadMore(): "" | JSX.Element;
    renderFilterToggler(): JSX.Element | null;
    renderToolbar(toolbar?: SchemaNode, index?: number, childProps?: any, toolbarRenderer?: (toolbar: SchemaNode, index: number) => React.ReactNode): {} | null;
    renderHeaderToolbar(childProps: any, toolbarRenderer?: (toolbar: SchemaNode, index: number) => React.ReactNode): {} | null;
    renderFooterToolbar(childProps: any, toolbarRenderer?: (toolbar: SchemaNode, index: number) => React.ReactNode): {} | null;
    renderSelection(): React.ReactNode;
    render(): JSX.Element;
}
export declare class CRUDRenderer extends CRUD {
    static contextType: React.Context<IScopedContext>;
    componentWillMount(): void;
    componentWillUnmount(): void;
    reloadTarget(target: string, data: any): void;
}
export {};
