import * as React from 'react';
import { WrappedFieldProps } from 'redux-form';
export interface IFormFieldWrapper {
    qa?: {
        'data-qa-element-id': string;
    };
    inline?: boolean;
    containerClassName?: string;
    tooltipClassName?: string;
    label?: string;
    hideLabel?: boolean;
    initialValidation?: boolean;
    externalLabel?: boolean;
    inverted?: boolean;
    labelClassName?: string;
    description?: string;
    autoComplete?: string;
}
export interface IBaseComponentProps<T> {
    className?: string;
    onChange?: (event: React.ChangeEvent<any> | T) => void;
    onBlur?: (event: React.FocusEvent<any> | T) => void;
    onFocus?: (event: React.FocusEvent<any> | T) => void;
}
declare type PartialWrappedFieldProps = {
    input?: Partial<WrappedFieldProps['input']>;
} & {
    meta?: Partial<WrappedFieldProps['meta']>;
};
export declare type FormFieldProps<P = {}> = WrappedFieldProps & IFormFieldWrapper & {
    id?: string;
} & P;
export declare type PartialFormFieldProps<P = {}> = Partial<PartialWrappedFieldProps & IFormFieldWrapper & {
    id?: string;
} & P>;
export declare type MakeClassName = (params: any) => {
    [key: string]: boolean;
} | string | undefined;
interface IFormFieldDecoratorProps {
    makeClassName?: MakeClassName;
    externalLabel?: boolean;
    forceInitialValidation?: boolean;
    invertable?: boolean;
    passQAObjectToChild?: boolean;
}
export declare const formField: <InnerComponentProps extends IBaseComponentProps<any>>(props?: IFormFieldDecoratorProps | undefined) => (Component: React.ComponentType<InnerComponentProps>) => React.ComponentClass<InnerComponentProps & WrappedFieldProps & IFormFieldWrapper & {
    id?: string | undefined;
}, any>;
export {};
