import type * as z4 from "zod/v4/core";
import type { DeepPartial } from "./deep-partial";
import type { FlattenedFormErrors } from "./schema-paths";
export type NestedFieldErrors<T extends z4.$ZodType> = T extends z4.$ZodObject<infer Shape> ? {
    [K in keyof Shape]: NestedFieldErrors<Shape[K] & z4.$ZodType>;
} : T extends z4.$ZodRecord<any, infer Value> ? Record<string, NestedFieldErrors<Value & z4.$ZodType>> : T extends z4.$ZodMap<any, infer Value> ? Map<string, NestedFieldErrors<Value & z4.$ZodType>> : T extends z4.$ZodArray<infer Item> ? NestedFieldErrors<Item & z4.$ZodType>[] : T extends z4.$ZodSet<infer Item> ? Set<NestedFieldErrors<Item & z4.$ZodType>> : T extends z4.$ZodTuple<infer Items> ? {
    [K in keyof Items]: NestedFieldErrors<Items[K] & z4.$ZodType>;
} : T extends z4.$ZodOptional<infer Inner> ? NestedFieldErrors<Inner & z4.$ZodType> : T extends z4.$ZodDefault<infer Inner> ? NestedFieldErrors<Inner & z4.$ZodType> : T extends z4.$ZodNullable<infer Inner> ? NestedFieldErrors<Inner & z4.$ZodType> : T extends z4.$ZodUnion<infer Options> ? Options extends readonly z4.$ZodType[] ? NestedFieldErrors<Options[number] & z4.$ZodType> : string : T extends z4.$ZodIntersection<infer Left, infer Right> ? NestedFieldErrors<Left & z4.$ZodType> & NestedFieldErrors<Right & z4.$ZodType> : T extends z4.$ZodLazy<infer LazyType> ? LazyType extends z4.$ZodType ? NestedFieldErrors<LazyType> : string : T extends z4.$ZodPipe<infer Input, z4.$ZodType> ? NestedFieldErrors<Input & z4.$ZodType> : T extends z4.$ZodCatch<infer Inner> ? NestedFieldErrors<Inner & z4.$ZodType> : T extends z4.$ZodPromise<infer Unwrapped> ? Unwrapped extends z4.$ZodType ? NestedFieldErrors<Unwrapped> : string : string;
export declare function flattenZodFormErrors<T extends z4.$ZodType>(errors?: DeepPartial<NestedFieldErrors<T>> | null): FlattenedFormErrors<T>;
//# sourceMappingURL=flatten-zod-form-errors.d.ts.map