import * as React from 'react';
import { ISubmittable } from '../Form/Context';
import { ApiContext } from '../Api/ApiContext';
import { INotificationContext } from '../Notification/NotificationContext';
interface IViewEditPresenterPublicProps<T> {
    isEdit: boolean;
    presenterName?: string;
    domainObject: ISubmittable<T>;
    activeKey: string;
    onSubmit?: (data: T, generatedHandler: (original: T) => Promise<T>) => Promise<T>;
    onSubmitSuccess?: (data: T) => void;
    onRequestItem: (key: string) => Promise<T>;
    onReceiveItem?: (item: T) => void;
}
interface IViewEditPresenterStateProps<T> {
    values?: T;
}
interface IViewEditPresenterContextProps {
    notify: INotificationContext;
}
interface IViewEditPresenter<T> extends React.PropsWithChildren<IViewEditPresenterPublicProps<T>>, IViewEditPresenterContextProps, IViewEditPresenterStateProps<T> {
}
interface IViewEditPresenterState<T> {
    isExporting: boolean;
    isLoading: boolean;
    isLoaded: boolean;
    activeItem?: T;
}
export declare class ViewEditPresenterBare<T> extends React.PureComponent<IViewEditPresenter<T>, IViewEditPresenterState<T>> {
    static contextType: React.Context<import("../Api/ApiContext").IApiContext | undefined>;
    context: React.ContextType<typeof ApiContext>;
    state: IViewEditPresenterState<T>;
    componentDidMount(): void;
    componentDidUpdate(prevProps: IViewEditPresenter<T>): void;
    render(): JSX.Element;
    private loadItem;
    private getContext;
    private onSubmit;
    private onExport;
}
export declare class ViewEditPresenter<T> extends React.PureComponent<IViewEditPresenterPublicProps<T>> {
    render(): JSX.Element;
}
export {};
