import * as React from 'react';
import { IExternalFormField } from '../Form/FormField';
import { Validator } from '../validation';
export interface IFields {
    Checkbox: React.ComponentType<IExternalFormField<any, any, boolean>>;
    Currency: React.ComponentType<IExternalFormField<any, any, MoneyStr>>;
    DatePicker: React.ComponentType<IExternalFormField<any, any, DateStr>>;
    DateTimePicker: React.ComponentType<IExternalFormField<any, any, TimestampStr>>;
    Decimal: React.ComponentType<IExternalFormField<any, any, DecimalStr>>;
    Double: React.ComponentType<IExternalFormField<any, any, Double>>;
    EnumSelect: React.ComponentType<IExternalFormField<any, any, any>>;
    Float: React.ComponentType<IExternalFormField<any, any, Double>>;
    Integer: React.ComponentType<IExternalFormField<any, any, Int>>;
    Link: React.ComponentType<IExternalFormField<any, any, string>>;
    Long: React.ComponentType<IExternalFormField<any, any, Long>>;
    Select: React.ComponentType<IExternalFormField<any, any, any>>;
    Multiselect: React.ComponentType<IExternalFormField<any, any, any[]>>;
    S3FileInput: React.ComponentType<IExternalFormField<any, any, S3>>;
    Text: React.ComponentType<IExternalFormField<any, any, string>>;
    Short: React.ComponentType<IExternalFormField<any, any, Short>>;
    LongText: React.ComponentType<IExternalFormField<any, any, TextStr>>;
    StringMap: React.ComponentType<IExternalFormField<any, any, StringMap>>;
    [key: string]: React.ComponentType<IExternalFormField<any, any, any>>;
}
export interface IVisibilityFunctions {
    [key: string]: (...args: any[]) => boolean;
}
export interface IFieldRegistryContext {
    Fields: IFields;
    validators: {
        [key: string]: Validator<any, any, any> | ((...args: any[]) => Validator<any, any, any>);
    };
    defaults: {
        [key: string]: any;
    };
    visibility: IVisibilityFunctions;
}
export declare const FieldRegistryContext: React.Context<IFieldRegistryContext>;
