/// <reference types="react" />
export interface StringTMap<T> {
    [key: string]: T;
}
export declare type VisibleIf = (values: object) => boolean;
export declare type StateSetterCallback = (keyName: string, val: any) => void;
export declare type Track = (keyName: string, val: any, index: number | string) => void;
export declare type ValidateField = (values: any, index: number) => void;
export declare type OnBlurEvent = (e: React.ChangeEvent<HTMLInputElement>, keyName: string, index: number) => void;
export declare type OnChangeEvent = (e: React.ChangeEvent<HTMLInputElement>, keyName: string, index: number) => void;
export interface SelectOptions {
    label: string;
    value: any;
}
export interface SchemaValues {
    visibleIf?: VisibleIf;
    track?: Track;
    validate?: ValidateField;
    customComponent?: any;
    type?: string;
    options?: SelectOptions[];
    groupClassName?: string;
    label?: string;
    initialValue?: string;
    placeholder?: string;
    tracked?: boolean;
    prependHtml?: any;
    appendHtml?: any;
    required?: boolean | Function;
    functionalComponent?: any;
    viewModeClass?: string;
    viewModeComponent?: Function;
    featureFlag?: string;
    onChange?: (e: React.ChangeEvent<HTMLInputElement>, value: any, values: object) => void;
    onBlur?: (e: React.ChangeEvent<HTMLInputElement>, value: any, values: object) => void;
    onSubmit?: (value: any, values: object) => void;
    [key: string]: any;
}
export declare type EzFormSchema = {
    [key: string]: SchemaValues;
};
export declare type EzFormProps = {
    children: any;
    schema: any;
    schemaModifier?: any;
    onSubmit?: (values: object) => void;
    onBlur?: (values: object) => void;
    onChange?: (values: object) => void;
    initialValues?: object;
    validateInitialValues?: boolean;
    inputsOnly?: boolean;
    showSubmitButton?: boolean;
    disabled?: boolean;
    viewMode?: boolean;
    className?: string;
    multiForm?: boolean;
    formComponent?: any;
    errorClass?: string;
    featureFlags?: object;
    viewModeDefaultText?: string;
};
export declare type EzFormState = {
    formInited: boolean;
    schema: any;
    fieldValues: any;
    errors: any;
    hasErrors: boolean;
};
