import * as React from 'react';
import { Dispatch } from 'redux';
import { ConfigProps, FormErrors, InjectedFormProps } from 'redux-form';
import { FormType } from './interfaces';
interface IFormStateProps<T> {
    submitErrors?: FormErrors<T>;
    values: T;
}
export declare type SubmitHandler<T> = (value: T, dispatch?: Dispatch<any>, props?: IForm<T>) => Promise<T>;
export interface IFormPublicProps<T> {
    autoComplete?: boolean;
    disableSubmit?: boolean;
    className?: string;
    externalError?: string;
    staticButtonsOnMobile?: boolean;
    formType?: FormType;
    hideButtons?: boolean;
    submitButtonText?: string;
    submitButtonClassName?: string;
    cancelButtonText?: string;
    readOnly?: boolean;
    renderError?: (error: string) => JSX.Element | string;
    onSubmit: SubmitHandler<T>;
    onCancel?: () => void;
}
interface IForm<T> extends IFormPublicProps<T>, InjectedFormProps<T, IForm<T>, {}>, IFormStateProps<T> {
}
export declare class Form<T> extends React.PureComponent<IFormPublicProps<T> & ConfigProps<T, IFormPublicProps<T>, {}>> {
    render(): JSX.Element;
}
export {};
