import type { Types } from "effect"; import { Schema } from "effect"; import type * as FormField from "./FormField.js"; type FormSchemaFields = Types.Simplify<{ [key in keyof Fields]: Fields[key] extends Any ? FormSchema : Fields[key]["schema"]; }>; type FormSchemaStruct = T extends Schema.Struct.Fields ? Schema.Struct : never; type FormSchema = FormSchemaStruct>; export declare const FormStructTypeId: unique symbol; export type FormStructTypeId = typeof FormStructTypeId; export declare const isFormStruct: (value: unknown) => value is FormStruct; interface FormStruct { [FormStructTypeId]: FormStructTypeId; fields: Fields; schema: FormSchema; defaultValue: FormSchema["Encoded"]; } export declare const FormArrayTypeId: unique symbol; export type FormArrayTypeId = typeof FormArrayTypeId; export declare const isFormArray: (value: unknown) => value is AnyArray; interface FormArray { [FormArrayTypeId]: FormArrayTypeId; field: Field; schema: Schema.Array$; defaultValue: FormArray["schema"]["Encoded"]; } export declare const FormMapTypeId: unique symbol; export type FormMapTypeId = typeof FormMapTypeId; export declare const isFormMap: (value: unknown) => value is AnyMap; interface FormMap { [FormMapTypeId]: FormMapTypeId; field: Field; keySchema: Key; schema: Schema.HashMap; defaultValue: FormMap["schema"]["Encoded"]; defaultValueFor: (keys: ReadonlyArray) => FormMap["defaultValue"]; } export declare const FormRawTypeId: unique symbol; export type FormRawTypeId = typeof FormRawTypeId; export declare const isFormRaw: (value: unknown) => value is AnyRaw; interface FormRaw { [FormRawTypeId]: FormRawTypeId; schema: S; defaultValue: S["Encoded"]; } export declare const struct: (fields: Fields) => FormStruct; export declare const array: (field: Field) => FormArray; export declare const map: ({ field, key }: { key: Schema.Schema; field: Field; }) => FormMap, Field>; export declare const raw: ({ defaultValue, schema }: { schema: S; defaultValue: S["Encoded"]; }) => FormRaw; export type AnyNonIterableField = Any | FormField.Any; export type AnyArray = FormArray; export type AnyMap = FormMap; export type AnyRaw = FormRaw; export type AnyIterable = FormArray | FormMap; export type AnyField = AnyNonIterableField | AnyIterable | AnyRaw; export type AnyFields = Record; export type Any = FormStruct; export {}; //# sourceMappingURL=FormBody.d.ts.map