import { Store, Event } from "effector"; import { Dict } from "../commonTypes"; import { Validator, ValidatorTupleConsts } from "./validator"; import { InvalidInputField } from "../mapInvalidInput"; import { InvalidInputProblem } from "../generated/codes"; export interface BooleanField { reset: Event; touch: Event; change: Event; changeUntouched: Event; value: Store; invalid: Store; setAPIError: Event>; apiError: Store; visibleError: Store; setInitialValue: Event; initialValue: Store; } export declare function createBooleanField(name: string, initialValueArg: boolean): BooleanField; export declare function createStringField[]>(name: string, initialValueArg: string, validators: [...T]): StringField; export declare function createEnumField[]>(name: string, initialValueArg: U, validators: [...T]): StringField; export interface StringField[], U extends string = string> { reset: Event; change: Event; changeUntouched: Event; touch: Event; touched: Store; value: Store; invalid: Store | null>; setAPIError: Event>; apiError: Store; visibleError: Store | InvalidInputProblem | null>; setInitialValue: Event; initialValue: Store; } declare type StoreType = T extends Store ? K : unknown; declare type FormValueTypes; }; }> = { [Key in K]: StoreType; }; export interface FormSpecLike { [key: string]: { setInitialValue: Event; initialValue: Store; reset: Event; value: Store; touch: Event; invalid: Store; setAPIError: Event>; apiError: Store; }; } export declare type Form = { init: Event, T>>>; reset: Event; submit: Event; submitted: Event, T>>; valid: Store; propagateErrors: Event>; propagateInitialValues: Event, T>>>; errorPropagationFailed: Event; } & { [Key in keyof T]: T[Key]; }; export declare function createForm(obj: T): Form; export interface CustomFormError { error: Store; setError: Event; } export declare function createFormWithCustomError(obj: T, err: U): Form & CustomFormError; export {};