import * as React from "react"; import { IFormProps } from "./form"; import { FormBinder } from "./formBinders"; import { IDataBinder } from "./formCore"; import { IArrayProp, IObjectProp, PropType } from "./propertyPathBuilder"; export interface IUseParentForm { bind: FormBinder; DataForm: React.FunctionComponent<{}>; } export declare function createFormContext(): { Form: (props: { initialData: TDataBinder; withoutClone?: boolean; children: (value: IUseFormProps) => React.ReactNode; }) => JSX.Element; ChildForm: (props: { children: (value: IUseFormProps) => React.ReactNode; }) => JSX.Element; }; declare type IHookFormProps = Pick> & { onDataChanged?: (data?: T) => void; }; export interface IUseFormProps { dataBinder: IDataBinder; bind: FormBinder; notifyChange: () => void; } export interface IUseForm extends IUseFormProps { DataForm: React.FunctionComponent>; context: UseFormContext; } export declare class UseFormContext { useForm(dataName: (builder: PropType) => IObjectProp): IUseParentForm; useForm(dataName: (builder: PropType) => IArrayProp): IUseParentForm; useForm>(dataName: TKey): IUseParentForm; useForm(): IUseParentForm; } export declare function useForm(initialData: T, withoutClone?: boolean): IUseForm; export {};