import { type FieldAtom, type FieldAtomConfig } from "form-atoms"; import { type ZodAny, type ZodUndefined, z } from "zod"; import type { ExtendFieldAtom } from "../../atoms/types"; import { type DefaultRequiredAtom, type ReadRequired, type ValidateConfig, type WritableRequiredAtom } from "../../utils"; type ZodFieldConfig = FieldAtomConfig | z.output> & ValidateConfig; export type ZodFieldValue = Field extends FieldAtom ? Value : never; export type ZodFieldSubmitValue = Field extends ZodField ? Required extends WritableRequiredAtom ? z.output | z.output : Required extends DefaultRequiredAtom ? z.output : never : never; export type OptionalZodField = ZodField; /** * This is an alias to ZodField, it hides the 3rd argument from type tooltip. */ export type RequiredZodField = ZodField; export type ZodField = ExtendFieldAtom | z.output, { required: RequiredAtom; }> & { optional: (readRequired?: ReadRequired) => OptionalZodField; }; export declare function zodField({ schema, optionalSchema, ...config }: ZodFieldConfig): RequiredZodField; export {};