/// <reference types="react" />
import { BasicModel, IModel } from '../models';
export interface IFieldListenerCommonProps<T> {
    children?: (value: T | null) => React.ReactElement | null;
}
export interface IFieldValueViewDrivenProps<T> extends IFieldListenerCommonProps<T> {
    name: string;
}
export interface IFieldValueModelDrivenProps<T> extends IFieldListenerCommonProps<T> {
    model: BasicModel<T>;
}
export declare type IFieldValueProps<T> = IFieldValueModelDrivenProps<T> | IFieldValueViewDrivenProps<T>;
export interface IFieldValidViewDrivenProps extends IFieldListenerCommonProps<boolean> {
    name: string;
}
export interface IFieldValidModelDrivenProps<T> extends IFieldListenerCommonProps<boolean> {
    model: BasicModel<T>;
}
export declare type IFieldValidProps<T> = IFieldValidModelDrivenProps<T> | IFieldValidViewDrivenProps;
export declare function useModelValue<T>(model: IModel<T>): T | null;
export declare function useModelValid<T>(model: IModel<T>): boolean | null;
export declare function useFieldValue<T>(field: string | IModel<T>): T | null;
export declare function FieldValue<T>(props: IFieldValueProps<T>): React.ReactElement | null;
export declare function useFieldValid<T>(field: string | IModel<T>): boolean | null;
export declare function FieldValid<T>(props: IFieldValidProps<T>): React.ReactElement | null;
