import { FieldValues, FieldErrors, UseFormTrigger } from 'react-hook-form'; type SavePayload = Record; type SaveResult = { ok: true; version?: string; metadata?: Record; } | { ok: false; error: Error; code?: string; } | { ok: true; } | { ok: false; error: Error; code?: string; }; interface SaveContext { signal?: AbortSignal; timestamp?: number; retryCount?: number; } type Transport = (payload: SavePayload, ctx?: SaveContext) => Promise; interface Timer { setTimeout: typeof setTimeout; clearTimeout: typeof clearTimeout; } interface AutosaveConfig { debounceMs: number; maxRetries: number; enableMetrics: boolean; enableCache: boolean; cacheSize: number; cacheTtlMs: number; } /** * A subset of UseFormReturn that contains the methods and properties * needed by the autosave hook. This uses flexible typing to support * different versions of react-hook-form (>=7). */ interface FormSubset { watch: (...args: any[]) => any; formState: { isDirty: boolean; isValid: boolean; dirtyFields: any; isValidating: boolean; errors?: FieldErrors; }; reset: (...args: any[]) => void; getValues: (...args: any[]) => any; setValue: (...args: any[]) => void; register: (...args: any[]) => any; trigger: UseFormTrigger; } interface ValidationStrategy { validate(form: FormSubset, payload: SavePayload): Promise; } export type { AutosaveConfig as A, FormSubset as F, SavePayload as S, Transport as T, ValidationStrategy as V, SaveResult as a, SaveContext as b, Timer as c };