import type { Context, Types } from "effect"; import { Effect } from "effect"; import * as FormBody from "./FormBody.js"; import type * as FormField from "./FormField.js"; import * as FormFramework from "./FormFramework.js"; interface ArrayDisplay extends FormFramework.MakeIterable { Element: AnyFieldDisplay; } interface MapDisplay extends FormFramework.MakeIterable { Element: AnyFieldDisplay & FormFramework.MakeMapKey; } type RawDisplay = FormFramework.MakeRaw; type FieldDisplay = ReturnType> & { useControls: () => FormFramework.FieldControls; }; type FormDisplay = { [key in keyof Body["fields"]]: AnyFieldDisplay; } & { useControls: () => FormFramework.FieldControls; }; type AnyFieldDependencies = Field extends FormField.Any ? Field["tag"] : Field extends FormBody.Any ? FormDisplayDependenciesTag : Field extends FormBody.AnyIterable ? AnyFieldDependencies : never; type FormDisplayDependenciesTag = { [key in keyof Body["fields"]]: AnyFieldDependencies; }[keyof Body["fields"]]; export type AnyFieldDisplay = Field extends FormField.Any ? FieldDisplay : Field extends FormBody.Any ? Types.Simplify> : Field extends FormBody.AnyArray ? ArrayDisplay : Field extends FormBody.AnyMap ? MapDisplay : Field extends FormBody.AnyRaw ? RawDisplay : never; export declare const make: (body: Body) => Effect.Effect> & { Form: FormFramework.FormComponent; Submit: FormFramework.Button; Clear: FormFramework.Button; }, never, FormFramework.FormFramework | Context.Tag.Identifier>>; export {}; //# sourceMappingURL=FormDisplay.d.ts.map