import * as Schema from "effect/Schema"; export declare const TypeId: unique symbol; export type TypeId = typeof TypeId; export interface FieldDef { readonly _tag: "field"; readonly key: K; readonly schema: S; } export interface ArrayFieldDef { readonly _tag: "array"; readonly key: K; readonly itemSchema: S; } export type AnyFieldDef = FieldDef | ArrayFieldDef; export type FieldsRecord = Record; export declare const isArrayFieldDef: (def: AnyFieldDef) => def is ArrayFieldDef; export declare const isFieldDef: (def: AnyFieldDef) => def is FieldDef; export declare const makeField: (key: K, schema: S) => FieldDef; export declare const makeArrayField: (key: K, itemSchema: S) => ArrayFieldDef; export type EncodedFromFields = { readonly [K in keyof T]: T[K] extends FieldDef ? Schema.Schema.Encoded : T[K] extends ArrayFieldDef ? ReadonlyArray> : never; }; export type DecodedFromFields = { readonly [K in keyof T]: T[K] extends FieldDef ? Schema.Schema.Type : T[K] extends ArrayFieldDef ? ReadonlyArray> : never; }; export declare const getDefaultFromSchema: (schema: Schema.Schema.Any) => unknown; export declare const getDefaultEncodedValues: (fields: FieldsRecord) => Record; export declare const createTouchedRecord: (fields: FieldsRecord, value: boolean) => Record; export declare const extractStructFieldDefs: (schema: Schema.Schema.Any) => ReadonlyArray> | undefined; //# sourceMappingURL=Field.d.ts.map