import * as React from 'react';
import { ISubmittable } from '../Form/Context';
interface IListPresenterPagination<T> {
    offsetKey: DeepKeyOf<T>;
    limitKey: DeepKeyOf<T>;
    totalCountKey: DeepKeyOf<T>;
}
export interface IListPresenterPublicProps<T, R extends DeepKeyOf<T>> {
    presenterName?: string;
    domainObject: ISubmittable<T>;
    onSubmit?: (data: T, generatedHandler: ISubmittable<T>['submit']) => Promise<T>;
    onExportError?: (error: any) => void;
    requestOnMountWith?: T;
    resultField?: R;
    pagination?: IListPresenterPagination<T>;
}
export interface IListPresenterState<T, R extends DeepKeyOf<T>> {
    isLoaded: boolean;
    isLoading: boolean;
    isExporting: boolean;
    formData?: T;
    items: DeepTypeOf<T, R>;
    page: number;
    perPage: number;
    totalCount?: number;
    values: T;
}
export declare class ListPresenter<T, R extends DeepKeyOf<T>> extends React.PureComponent<IListPresenterPublicProps<T, R>> {
    render(): JSX.Element;
}
export {};
