import * as Immutable from "immutable"; import { C, Mode } from './core'; import * as Moment from 'moment'; export declare type FormErrors = { errors: Immutable.Map>; }; export declare type FormData = { model: M; } & FormErrors; export declare type FormEntry = { kind: "string"; field_name: string; in: (_: M) => string; out: (_: M) => (_: string) => M; get_errors: (_: M) => Array; } | { kind: "number"; field_name: string; in: (_: M) => number; out: (_: M) => (_: number) => M; get_errors: (_: M) => Array; } | { kind: "date"; field_name: string; in: (_: M) => Moment.Moment; out: (_: M) => (_: Moment.Moment) => M; get_errors: (_: M) => Array; } | { kind: "time"; field_name: string; in: (_: M) => Moment.Moment; out: (_: M) => (_: Moment.Moment) => M; get_errors: (_: M) => Array; } | { kind: "datetime"; field_name: string; in: (_: M) => Moment.Moment; out: (_: M) => (_: Moment.Moment) => M; get_errors: (_: M) => Array; } | { kind: "image"; field_name: string; in: (_: M) => string; out: (_: M) => (_: string) => M; get_errors: (_: M) => Array; } | { kind: "file"; field_name: string; filename: (_: M) => string; url: (_: M) => string; in: (_: M) => File; out: (_: M) => (_: File) => M; get_errors: (_: M) => Array; } | { kind: "lazy image"; field_name: string; download: (c: M) => C; upload: (c: M) => (src: string) => C; } | { kind: "lazy file"; field_name: string; filename: (_: M) => string; out: (_: M) => (_: File) => M; url: (_: M) => string; upload: (_: M) => (_: File) => C; }; export declare let simple_inner_form: (mode: Mode, model_name: (_: M) => string, entries: FormEntry[]) => (_: FormData) => C>; export declare let form_errors: (model_name: (_: M) => string, entries: FormEntry[]) => (fd: FormData) => C>; export declare let simple_form_with_autosave: (mode: Mode, model_name: (_: M) => string, entries: FormEntry[], download_M: C, upload_M: (_: M) => C) => C; export declare let simple_form_with_save_button: (mode: Mode, model_name: (_: M) => string, entries: FormEntry[], download_M: C, upload_M: (_: M) => C) => C; export declare let simple_form_with_prev_and_next_buttons: (mode: Mode, model_name: (_: M) => string, entries: FormEntry[], prev_enabled: (_: FormData) => boolean, next_enabled: (_: FormData) => boolean, prev_visible: (_: FormData) => boolean, next_visible: (_: FormData) => boolean, on_prev: (_: M) => M, on_next: (_: M) => M) => (_: FormData) => C>;