/// <reference types="react" />
import * as React from 'react';
import { FormInputProps, FormSelectProps, FormRadioProps, FormTextAreaProps, FormFieldProps } from 'semantic-ui-react';
export interface FormEvent {
    checked?: boolean;
    label: string;
    name: string;
    required: boolean;
    type: string;
    value: any;
}
export interface FormElement {
    owner: any;
    name: string;
    value: any;
}
export declare class FormControl<P, S> extends React.PureComponent<P & FormElement, S> {
    update: (_e: React.SyntheticEvent<any>, formEvent: FormEvent) => void;
    updateValue: (value: any) => void;
    readonly value: any;
}
export declare class Input extends FormControl<FormInputProps, {}> {
    render(): JSX.Element;
}
export interface Props {
    format?: string;
    onChange?(date: Date): void;
}
export interface DateProps {
    format?: string;
}
export declare class DatePicker extends FormControl<FormInputProps & DateProps, {}> {
    static defaultProps: {
        format: string;
    };
    prohibit(): boolean;
    clear(): 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 class TextArea extends FormControl<FormTextAreaProps, {}> {
    render(): JSX.Element;
}
