import { ListAtom, ListAtomConfig } from "@form-atoms/list-atom"; import type { FormFieldValues, FormFields } from "form-atoms"; import type { Atom } from "jotai"; import { type ZodArray, ZodObject } from "zod"; import type { FormFieldSubmitValues } from "../../components"; import { UserValidateConfig } from "../../utils"; import { DefaultRequiredAtom, ReadRequired, WritableRequiredAtom } from "../../utils/schemaValidate"; import { ZodParams } from "../zod-field"; export type ExtendListAtom = ListAtom extends Atom ? Atom : never; export type ListField = ExtendListAtom & { optional: (readRequired?: ReadRequired) => OptionalListField; }; export type ListFieldSubmitValue = Required extends WritableRequiredAtom ? FormFieldSubmitValues[] : Required extends DefaultRequiredAtom ? [FormFieldSubmitValues, ...FormFieldSubmitValues[]] : never; /** * This is an alias to ListField, it hides the 2nd and 3rd argument from type tooltip. */ type RequiredListField = ListField>; export type OptionalListField = ListField; type ListFieldConfig = ListAtomConfig & ZodParams & UserValidateConfig, ZodArray>; export declare const listField: ({ required_error, schema, optionalSchema, ...config }: ListFieldConfig) => RequiredListField; export {};