///
import Control from './control';
import { FieldError, FormProps, KeyType, FormValidateFn } from './interface';
declare type DeepPartial = T extends string | number | bigint | boolean | null | undefined | symbol | Date ? T | undefined : T extends Array ? Array> : T extends ReadonlyArray ? ReadonlyArray> : {
[K in keyof T]?: DeepPartial;
};
/**
* setFieldValue: setFieldsValue, setFieldValue, setFields
* innerSetValue: such as Input change
* reset: 重置
*/
export declare type NotifyType = 'setFieldValue' | 'reset' | 'innerSetValue';
export declare type innerCallbackType = 'onValuesChange' | 'onSubmit' | 'onChange' | 'onSubmitFailed';
export declare type StoreChangeInfo = {
prev: any;
field?: T | T[];
isFormList?: boolean;
ignore?: boolean;
changeValues?: {
[key in KeyType]: unknown;
};
data?: {
errors?: FieldError;
warnings?: React.ReactNode;
touched?: boolean;
};
};
declare class Store {
private registerFields;
private touchedFields;
private store;
private initialValues;
private callbacks;
private triggerValuesChange;
private triggerTouchChange;
innerSetCallbacks: (values: Pick, innerCallbackType> & {
onValidateFail?: (errors: { [key in FieldKey]: FieldError; }) => void;
}) => void;
registerField: (item: Control) => () => void;
private getRegistedFields;
getRegistedField: (field?: FieldKey) => Control;
private notify;
innerSetInitialValues: (values: Partial) => void;
innerSetInitialValue: (field: FieldKey, value: FieldValue) => void;
private _getIterativelyKeysByField;
private _inTouchFields;
private _popTouchField;
private _pushTouchField;
/**
*
* 内部使用,更新value,会同时触发onChange 和 onValuesChange
* @options.isFormList 强制更新field对应的组件包括其子组件,form
*/
innerSetFieldValue: (field: FieldKey, value: FieldValue, options?: {
isFormList?: boolean;
ignore?: boolean;
}) => void;
innerGetStore: () => Partial;
getTouchedFields: () => FieldKey[];
setFieldValue: (field: FieldKey, value: FieldValue) => void;
setFieldsValue: (values: DeepPartial) => void;
setFields: (obj: { [field in FieldKey]?: {
value?: FieldValue;
error?: FieldError;
touched?: boolean;
warning?: React.ReactNode;
}; }) => void;
getFieldValue: (field: FieldKey) => FieldValue;
getFieldError: (field: FieldKey) => FieldError | null;
getFieldsError: (fields?: FieldKey[]) => { [key in FieldKey]?: FieldError; };
getFields: () => Partial;
getFieldsValue: (fields?: FieldKey[]) => Partial;
resetFields: (fieldKeys?: FieldKey | FieldKey[]) => void;
validate: FormValidateFn;
submit: () => void;
}
export default Store;