import * as z from "zod/mini"; export declare const FORM_FIELDS_SCHEMA: z.ZodMiniArray>; maxLength: z.ZodMiniOptional; minLength: z.ZodMiniOptional; placeholder: z.ZodMiniOptional>; required: z.ZodMiniPrefault>; type: z.ZodMiniEnum<{ email: "email"; text: "text"; url: "url"; phone: "phone"; textarea: "textarea"; }>; description: z.ZodMiniOptional>; label: z.ZodMiniOptional>; name: z.ZodMiniString; }, z.core.$strip>, z.ZodMiniObject<{ defaultValue: z.ZodMiniOptional>; max: z.ZodMiniOptional>; min: z.ZodMiniOptional>; placeholder: z.ZodMiniOptional>; required: z.ZodMiniPrefault>; step: z.ZodMiniPrefault>; type: z.ZodMiniLiteral<"number">; description: z.ZodMiniOptional>; label: z.ZodMiniOptional>; name: z.ZodMiniString; }, z.core.$strip>, z.ZodMiniObject<{ defaultValue: z.ZodMiniOptional; max: z.ZodMiniOptional; min: z.ZodMiniOptional; required: z.ZodMiniPrefault>; step: z.ZodMiniPrefault; type: z.ZodMiniLiteral<"date">; description: z.ZodMiniOptional>; label: z.ZodMiniOptional>; name: z.ZodMiniString; }, z.core.$strip>, z.ZodMiniObject<{ defaultValue: z.ZodMiniOptional; max: z.ZodMiniOptional; min: z.ZodMiniOptional; required: z.ZodMiniPrefault>; step: z.ZodMiniPrefault>; type: z.ZodMiniLiteral<"datetime">; description: z.ZodMiniOptional>; label: z.ZodMiniOptional>; name: z.ZodMiniString; }, z.core.$strip>, z.ZodMiniObject<{ type: z.ZodMiniLiteral<"select">; defaultValue: z.ZodMiniOptional>; options: z.ZodMiniArray; value: z.ZodMiniString; }, z.core.$strip>>; placeholder: z.ZodMiniOptional>; required: z.ZodMiniPrefault>; description: z.ZodMiniOptional>; label: z.ZodMiniOptional>; name: z.ZodMiniString; }, z.core.$strip>, z.ZodMiniObject<{ type: z.ZodMiniLiteral<"radio">; defaultValue: z.ZodMiniOptional>; options: z.ZodMiniArray; value: z.ZodMiniString; }, z.core.$strip>>; placeholder: z.ZodMiniOptional>; required: z.ZodMiniPrefault>; description: z.ZodMiniOptional>; label: z.ZodMiniOptional>; name: z.ZodMiniString; }, z.core.$strip>, z.ZodMiniObject<{ defaultValue: z.ZodMiniOptional>>; options: z.ZodMiniArray; value: z.ZodMiniString; }, z.core.$strip>>; placeholder: z.ZodMiniOptional>; required: z.ZodMiniPrefault>; type: z.ZodMiniLiteral<"multi-select">; description: z.ZodMiniOptional>; label: z.ZodMiniOptional>; name: z.ZodMiniString; }, z.core.$strip>, z.ZodMiniObject<{ defaultValue: z.ZodMiniPrefault>; required: z.ZodMiniPrefault>; type: z.ZodMiniLiteral<"checkbox">; description: z.ZodMiniOptional>; label: z.ZodMiniOptional>; name: z.ZodMiniString; }, z.core.$strip>, z.ZodMiniObject<{ required: z.ZodMiniPrefault>; type: z.ZodMiniLiteral<"file">; description: z.ZodMiniOptional>; label: z.ZodMiniOptional>; name: z.ZodMiniString; }, z.core.$strip>], "type">, z.ZodMiniTransform<{ label: string; required: boolean; type: "email" | "text" | "url" | "phone" | "textarea"; name: string; defaultValue?: string | undefined; maxLength?: number | undefined; minLength?: number | undefined; placeholder?: string | undefined; description?: string | undefined; } | { label: string; required: boolean; step: number; type: "number"; name: string; defaultValue?: number | undefined; max?: number | undefined; min?: number | undefined; placeholder?: string | undefined; description?: string | undefined; } | { label: string; required: boolean; step: number; type: "date"; name: string; defaultValue?: string | undefined; max?: string | undefined; min?: string | undefined; description?: string | undefined; } | { label: string; required: boolean; step: number; type: "datetime"; name: string; defaultValue?: string | undefined; max?: string | undefined; min?: string | undefined; description?: string | undefined; } | { label: string; type: "select"; options: { label: string; value: string; }[]; required: boolean; name: string; defaultValue?: string | undefined; placeholder?: string | undefined; description?: string | undefined; } | { label: string; type: "radio"; options: { label: string; value: string; }[]; required: boolean; name: string; defaultValue?: string | undefined; placeholder?: string | undefined; description?: string | undefined; } | { label: string; options: { label: string; value: string; }[]; required: boolean; type: "multi-select"; name: string; defaultValue?: string[] | undefined; placeholder?: string | undefined; description?: string | undefined; } | { label: string; defaultValue: boolean; required: boolean; type: "checkbox"; name: string; description?: string | undefined; } | { label: string; required: boolean; type: "file"; name: string; description?: string | undefined; }, { required: boolean; type: "email" | "text" | "url" | "phone" | "textarea"; name: string; defaultValue?: string | undefined; maxLength?: number | undefined; minLength?: number | undefined; placeholder?: string | undefined; description?: string | undefined; label?: string | undefined; } | { required: boolean; step: number; type: "number"; name: string; defaultValue?: number | undefined; max?: number | undefined; min?: number | undefined; placeholder?: string | undefined; description?: string | undefined; label?: string | undefined; } | { required: boolean; step: number; type: "date"; name: string; defaultValue?: string | undefined; max?: string | undefined; min?: string | undefined; description?: string | undefined; label?: string | undefined; } | { required: boolean; step: number; type: "datetime"; name: string; defaultValue?: string | undefined; max?: string | undefined; min?: string | undefined; description?: string | undefined; label?: string | undefined; } | { type: "select"; options: { label: string; value: string; }[]; required: boolean; name: string; defaultValue?: string | undefined; placeholder?: string | undefined; description?: string | undefined; label?: string | undefined; } | { type: "radio"; options: { label: string; value: string; }[]; required: boolean; name: string; defaultValue?: string | undefined; placeholder?: string | undefined; description?: string | undefined; label?: string | undefined; } | { options: { label: string; value: string; }[]; required: boolean; type: "multi-select"; name: string; defaultValue?: string[] | undefined; placeholder?: string | undefined; description?: string | undefined; label?: string | undefined; } | { defaultValue: boolean; required: boolean; type: "checkbox"; name: string; description?: string | undefined; label?: string | undefined; } | { required: boolean; type: "file"; name: string; description?: string | undefined; label?: string | undefined; }>>>; export type FormFieldValue = File | boolean | number | string | string[] | null; /** * Returns the configured fallback for a field without an assigned value. * * @param field - Field whose fallback should be resolved. */ export declare function getFormFieldDefaultValue(field: FormField): string | number | boolean | readonly string[] | null | undefined; /** * Checks one decoded value against a dashboard field declaration. * * @param field - Field declaration whose constraints apply. * @param value - Decoded value to validate. */ export declare function isFormFieldValueValid(field: FormField, value: unknown): value is FormFieldValue; /** * Builds the shared validator for decoded field values. * * @param field - Field declaration whose constraints apply. */ export declare function getFormFieldValueSchema(field: FormField): z.ZodMiniCustom; /** * Normalizes controlled or prompted values before validation. * * @param field - Field declaration. * @param value - Raw control value. */ export declare function normalizeFormFieldValue(field: FormField, value: unknown): unknown; /** * Reads and validates one submitted field, preserving uploaded File values. * * @param field - Field declaration. * @param data - Submitted form data. * @param name - Form name, including any UI namespace. */ export declare function readFormFieldValue(field: FormField, data: FormData, name?: string): z.core.util.SafeParseResult; /** * Validates configured form fields and ignores unconfigured entries. * * @param fields - Ordered field declarations. * @param data - Submitted form data. */ export declare function parseFormFields(fields: readonly FormField[], data: FormData): { issues: { field: string; message: string; }[]; success: false; data?: undefined; } | { data: { [k: string]: FormFieldValue; }; success: true; issues?: undefined; }; interface FormFieldBase { /** Supporting text shown below the field. */ description?: string; /** Visible field label. Inferred from `name` when omitted. */ label?: string; /** Property name used in submitted trigger data. */ name: string; /** Whether the form must contain a value. Defaults to true. */ required?: boolean; } export type FormField = (FormFieldBase & { type: "file"; }) | (FormFieldBase & { defaultValue?: string; maxLength?: number; minLength?: number; placeholder?: string; type: "email" | "phone" | "text" | "textarea" | "url"; }) | (FormFieldBase & { defaultValue?: number; max?: number; min?: number; placeholder?: string; /** Increment used by the number input. Defaults to 1. */ step?: number; type: "number"; }) | (FormFieldBase & { /** Initial local date in `YYYY-MM-DD` format. */ defaultValue?: string; max?: string; min?: string; /** Allowed increment in days. Defaults to 1. */ step?: number; type: "date"; }) | (FormFieldBase & { /** Initial local date and time in `YYYY-MM-DDTHH:mm` format. */ defaultValue?: string; max?: string; min?: string; /** Allowed increment in seconds. Defaults to 60. */ step?: number; type: "datetime"; }) | (FormFieldBase & { defaultValue?: string; options: readonly { label: string; value: string; }[]; placeholder?: string; type: "select"; }) | (FormFieldBase & { defaultValue?: string; options: readonly { label: string; value: string; }[]; type: "radio"; }) | (FormFieldBase & { defaultValue?: readonly string[]; options: readonly { label: string; value: string; }[]; placeholder?: string; type: "multi-select"; }) | (FormFieldBase & { /** Initial checked state. Defaults to false. */ defaultValue?: boolean; /** Whether the checkbox must be checked. Defaults to false. */ required?: boolean; type: "checkbox"; }); /** Resolves one field declaration to its author-facing value type. */ type FormFieldValueFor = TField extends { type: "file"; } ? TField extends { required: false; } ? File | null : File : TField extends { type: "checkbox"; } ? boolean : TField extends { options: readonly (infer TOption)[]; type: "multi-select"; } ? [TOption] extends [{ value: infer TValue extends string; }] ? TValue[] : string[] : TField extends { required: false; type: "number"; } ? number | null : TField extends { type: "number"; } ? number : TField extends { options: readonly (infer TOption)[]; type: "radio" | "select"; } ? TOption extends { value: infer TValue extends string; } ? TField extends { required: false; } ? TValue | "" : TValue : string : string; export type FormFieldValues = { readonly [TField in TFields[number] as TField["name"]]: FormFieldValueFor; }; export {};