import { RenderResult } from '@dojo/framework/core/interfaces';
import { FormMiddleware, FormValue } from './middleware';
declare type Omit<T, E> = Pick<T, Exclude<keyof T, E>>;
interface BaseFormProperties {
    /** The initial form value */
    initialValue?: FormValue;
    /** Controlled form value component */
    value?: FormValue;
    /** Callback called when a form value changes */
    onValue?(values: FormValue): void;
    /** The name property of the form */
    name?: string;
    onSubmit?: never;
    action?: never;
}
interface SubmitFormProperties extends Omit<BaseFormProperties, 'onSubmit'> {
    /** Callback for when the form is submitted with valid values */
    onSubmit(values: FormValue): void;
}
interface ActionFormProperties extends Omit<BaseFormProperties, 'action'> {
    /** Action url for the form on submit */
    action: string;
    /** method of submit, defaults to `post` */
    method?: 'post' | 'get';
}
export declare type FormProperties = BaseFormProperties | SubmitFormProperties | ActionFormProperties;
export declare type FormChildRenderer<S extends FormValue = any> = (properties: FormMiddleware<S>) => RenderResult;
declare const _default: import("@dojo/framework/core/interfaces").WNodeFactory<{
    properties: (BaseFormProperties & import("@dojo/framework/core/interfaces").WidgetProperties & {
        variant?: "default" | "inherit" | undefined;
    } & import("@dojo/framework/core/middleware/theme").ThemeProperties) | (SubmitFormProperties & import("@dojo/framework/core/interfaces").WidgetProperties & {
        variant?: "default" | "inherit" | undefined;
    } & import("@dojo/framework/core/middleware/theme").ThemeProperties) | (ActionFormProperties & import("@dojo/framework/core/interfaces").WidgetProperties & {
        variant?: "default" | "inherit" | undefined;
    } & import("@dojo/framework/core/middleware/theme").ThemeProperties);
    children: FormChildRenderer<any>;
}>;
export default _default;
export interface FormGroupProperties {
    /** Render this grouping in a vertical column */
    column?: boolean;
}
export declare const FormGroup: import("@dojo/framework/core/interfaces").WNodeFactory<{
    properties: FormGroupProperties & import("@dojo/framework/core/interfaces").WidgetProperties & {
        variant?: "default" | "inherit" | undefined;
    } & import("@dojo/framework/core/middleware/theme").ThemeProperties;
    children: unknown;
}>;
export declare const FormField: import("@dojo/framework/core/interfaces").DefaultChildrenWNodeFactory<{
    properties: import("@dojo/framework/core/interfaces").WidgetProperties & {
        variant?: "default" | "inherit" | undefined;
    } & import("@dojo/framework/core/middleware/theme").ThemeProperties;
    children: import("@dojo/framework/core/interfaces").DNode<any>[];
}>;
