import { ErrorValue, FormDataErrors, FormDataKeys, FormDataType, FormDataValues, Method, OptimisticCallback, Progress, UrlMethodPair, UseFormSubmitArguments, UseFormSubmitOptions, UseFormTransformCallback, UseFormWithPrecognitionArguments } from '@inertiajs/core'; import { NamedInputEvent, PrecognitionPath, ValidationConfig, Validator } from 'laravel-precognition'; export interface InertiaFormProps { isDirty: boolean; errors: FormDataErrors; hasErrors: boolean; processing: boolean; progress: Progress | null; wasSuccessful: boolean; recentlySuccessful: boolean; data(): TForm; transform(callback: UseFormTransformCallback): this; defaults(): this; defaults>(field: T, value: FormDataValues): this; defaults(fields: Partial): this; reset>(...fields: K[]): this; clearErrors>(...fields: K[]): this; resetAndClearErrors>(...fields: K[]): this; setError>(field: K, value: ErrorValue): this; setError(errors: FormDataErrors): this; submit: (...args: UseFormSubmitArguments) => void; get(url: string, options?: UseFormSubmitOptions): void; post(url: string, options?: UseFormSubmitOptions): void; put(url: string, options?: UseFormSubmitOptions): void; patch(url: string, options?: UseFormSubmitOptions): void; delete(url: string, options?: UseFormSubmitOptions): void; cancel(): void; dontRemember>(...fields: K[]): this; optimistic(callback: OptimisticCallback): this; withPrecognition(...args: UseFormWithPrecognitionArguments): InertiaPrecognitiveForm; } type PrecognitionValidationConfig = ValidationConfig & { only?: TKeys[] | Iterable | ArrayLike; }; export interface InertiaFormValidationProps { invalid>(field: K): boolean; setValidationTimeout(duration: number): this; touch>(field: K | NamedInputEvent | Array, ...fields: K[]): this; touched>(field?: K): boolean; valid>(field: K): boolean; validate | PrecognitionPath>(field?: K | NamedInputEvent | PrecognitionValidationConfig, config?: PrecognitionValidationConfig): this; validateFiles(): this; validating: boolean; validator: () => Validator; withAllErrors(): this; withoutFileValidation(): this; setErrors(errors: FormDataErrors | Record): this; forgetError | NamedInputEvent>(field: K): this; } interface InternalPrecognitionState { __touched: string[]; __valid: string[]; } export type InertiaForm = TForm & InertiaFormProps; export type InertiaPrecognitiveForm = InertiaForm & InertiaFormValidationProps & InternalPrecognitionState; type ReservedFormKeys = keyof InertiaFormProps; type ValidateFormData = { [K in keyof T]: K extends ReservedFormKeys ? ['Error: This field name is reserved by useForm:', K] : T[K]; }; export default function useForm & ValidateFormData>(method: Method | (() => Method), url: string | (() => string), data: TForm | (() => TForm)): InertiaPrecognitiveForm; export default function useForm & ValidateFormData>(urlMethodPair: UrlMethodPair | (() => UrlMethodPair), data: TForm | (() => TForm)): InertiaPrecognitiveForm; export default function useForm & ValidateFormData>(rememberKey: string, data: TForm | (() => TForm)): InertiaForm; export default function useForm & ValidateFormData>(data: TForm | (() => TForm)): InertiaForm; export default function useForm>(): InertiaForm; export {};