/// <reference types="react" />
import * as React from 'react';
import { FieldState } from 'formstate';
import { FormInputProps, FormSelectProps, FormRadioProps, FormTextAreaProps, FormFieldProps } from 'semantic-ui-react';
import 'react-datepicker/dist/react-datepicker.css';
export declare const Form: _semanticUIReact.FormClass;
export declare const Field: React.ComponentClass<FormFieldProps>;
export declare const Group: React.ComponentClass<_semanticUIReact.FormGroupProps>;
export interface FormEvent {
    checked?: boolean;
    label: string;
    name: string;
    required: boolean;
    type: string;
    value: any;
}
export interface FormElement<T> {
    owner: FieldState<T>;
}
export declare class FormControl<P, T> extends React.PureComponent<P & FormElement<T>, {}> {
    update: any;
    readonly value: T;
}
export declare class Input extends FormControl<FormInputProps, any> {
    render(): JSX.Element;
}
export declare class TextArea extends FormControl<FormTextAreaProps, {}> {
    render(): JSX.Element;
}
export interface Props {
    format?: string;
    onChange?(date: Date): void;
}
export interface DateProps {
    [param: string]: any;
    format?: string;
}
export declare class DatePicker extends FormControl<FormInputProps & DateProps, {}> {
    static defaultProps: {
        format: string;
    };
    prohibit(): boolean;
    clear(): void;
    updateDate: (moment: any) => void;
    render(): JSX.Element;
}
export interface LabelProps {
    label: string;
}
export declare const Label: (props: FormFieldProps & LabelProps) => JSX.Element;
export declare class Select extends FormControl<FormSelectProps, {}> {
    updateSelect: (_e: any, selectValue: {
        name: string;
        value: any;
    }) => void;
    render(): JSX.Element;
}
export declare class Radio extends FormControl<FormRadioProps, {}> {
    update: (_e: React.SyntheticEvent<any>, formEvent: FormEvent) => void;
    render(): JSX.Element;
}
export declare class Checkbox extends FormControl<FormRadioProps, {}> {
    update: (_e: React.SyntheticEvent<any>, formEvent: FormEvent) => void;
    render(): JSX.Element;
}
export declare function requiredValidator(value: string): string;
export declare function regExValidator(reg: RegExp, format?: string): (value: string) => string;
export declare function intPositiveValidator(value: number): string;
export declare function intValidator(value: number): string;
export declare function intNonZeroValidator(value: number): string;
export declare function floatValidator(value: number): string;
export declare function floatPositiveValidator(value: number): string;
export declare function floatNonZeroValidator(value: number): string;
export declare function requiredField(value: any, validators?: any[]): FieldState<any>;
export declare function simpleField(value: any, validators?: any[]): FieldState<any>;
