import { Opt } from "@effect-ts-app/core/Option"; import { Some, None } from "@fp-ts/data/Option"; import * as HashMap from "@effect-ts/core/Collections/Immutable/HashMap"; import type { Compute, UnionToIntersection } from "@effect-ts/core/Utils"; import * as S from "../_schema.js"; import type { Annotation } from "../_schema/annotation.js"; import type { LiteralApi } from "./literal.js"; import type { DefaultSchema } from "./withDefaults.js"; /** * @tsplus type ets/Schema/Property * @tsplus companion ets/Schema/PropertyOps */ export declare class Property, Def extends Opt<["parser" | "constructor" | "both", () => S.ParsedShapeOf]>> { readonly _as: As; readonly _schema: Self; readonly _optional: Optional; readonly _def: Def; readonly _map: HashMap.HashMap, any>; constructor(_as: As, _schema: Self, _optional: Optional, _def: Def, _map: HashMap.HashMap, any>); } export declare function propDef, Def extends Opt<["parser" | "constructor" | "both", () => S.ParsedShapeOf]>>(prop: Property, _: Optional extends "required" ? () => S.ParsedShapeOf : ["default can be set only for required properties", never]): Property S.ParsedShapeOf]>>; export declare function propDef, Def extends Opt<["parser" | "constructor" | "both", () => S.ParsedShapeOf]>>(prop: Property, _: Optional extends "required" ? () => S.ParsedShapeOf : ["default can be set only for required properties", never], k: K): Property S.ParsedShapeOf]>>; export declare function propOpt, Def extends Opt<["parser" | "constructor" | "both", () => S.ParsedShapeOf]>>(prop: Property): Property; export declare function propReq, Def extends Opt<["parser" | "constructor" | "both", () => S.ParsedShapeOf]>>(prop: Property): Property; export declare function propFrom, Def extends Opt<["parser" | "constructor" | "both", () => S.ParsedShapeOf]>, As1 extends PropertyKey>(prop: Property, as: As1): Property, Def>; export declare function prop(schema: Self): Property; export type AnyProperty = Property; export type PropertyRecord = Record; export type ShapeFromProperties = Compute; } : { readonly [h in k]: S.ParsedShapeOf; } : never; }[keyof Props]>, "flat">; export type ConstructorFromProperties = Compute ? never : Props[k] extends AnyProperty ? Props[k]["_optional"] extends "optional" ? { readonly [h in k]?: S.ParsedShapeOf; } : Props[k]["_def"] extends Some<["constructor" | "both", any]> ? { readonly [h in k]?: S.ParsedShapeOf; } : { readonly [h in k]: S.ParsedShapeOf; } : never; }[keyof Props]>, "flat">; export type EncodedFromProperties = Compute ? Props[k]["_as"]["value"] : k]?: S.EncodedOf; } : { readonly [h in Props[k]["_as"] extends Some ? Props[k]["_as"]["value"] : k]: S.EncodedOf; } : never; }[keyof Props]>, "flat">; export type HasRequiredProperty = unknown extends { [k in keyof Props]: Props[k] extends AnyProperty ? Props[k]["_optional"] extends "required" ? unknown : never : never; }[keyof Props] ? true : false; export type ParserErrorFromProperties = S.CompositionE> | S.NextE extends true ? S.CompositionE ? never : Props[k]["_as"] extends Some ? Props[k]["_as"]["value"] : k : never; }[keyof Props]>> | S.NextE ? Props[k]["_as"]["value"] : k, S.ParserErrorOf> : Props[k]["_def"] extends Some<["parser" | "both", any]> ? S.OptionalKeyE ? Props[k]["_as"]["value"] : k, S.ParserErrorOf> : S.RequiredKeyE ? Props[k]["_as"]["value"] : k, S.ParserErrorOf> : never; }[keyof Props]>>> : S.StructE<{ [k in keyof Props]: Props[k] extends AnyProperty ? Props[k]["_optional"] extends "optional" ? S.OptionalKeyE ? Props[k]["_as"]["value"] : k, S.ParserErrorOf> : Props[k]["_def"] extends Some<["parser" | "both", any]> ? S.OptionalKeyE ? Props[k]["_as"]["value"] : k, S.ParserErrorOf> : S.RequiredKeyE ? Props[k]["_as"]["value"] : k, S.ParserErrorOf> : never; }[keyof Props]>>>; export declare const propertiesIdentifier: S.Annotation<{ props: PropertyRecord; }>; export type SchemaProperties = DefaultSchema, ConstructorFromProperties, EncodedFromProperties, { props: Props; }>; export type TagsFromProps = { [k in keyof Props]: Props[k]["_as"] extends None ? Props[k]["_optional"] extends "required" ? S.ApiOf extends LiteralApi ? KS extends [string] ? k : never : never : never : never; }[keyof Props]; export declare function isPropertyRecord(u: unknown): u is PropertyRecord; export declare function tagsFromProps(props: Props): Record; export declare function props(props: Props): SchemaProperties; export declare function propsPick(...ks: KS): (self: Props) => import("@effect-ts/core/Utils").ComputeFlat>; export declare function propsOmit(...ks: KS): (self: Props) => import("@effect-ts/core/Utils").ComputeFlat>; export type ParserInputFromProperties = Compute ? Props[k]["_as"]["value"] : k]?: S.EncodedOf; } : Props[k]["_def"] extends Some<["parser" | "both", any]> ? { readonly [h in Props[k]["_as"] extends Some ? Props[k]["_as"]["value"] : k]?: S.EncodedOf; } : { readonly [h in Props[k]["_as"] extends Some ? Props[k]["_as"]["value"] : k]: S.EncodedOf; } : never; }[keyof Props]>, "flat">; //# sourceMappingURL=properties.d.ts.map