import { Brand, Validation } from "@fncts/base/data/Branded"; import { Check } from "@fncts/typelevel"; import { Schema } from "@fncts/schema/Schema/definition"; import { LiteralValue, AST } from "@fncts/schema/AST"; import { Maybe } from "@fncts/base/data/Maybe/definition"; import { Vector } from "@fncts/base/collection/immutable/Vector"; import type { Union } from "@fncts/typelevel"; import type { OptionalKeys, RequiredKeys } from "@fncts/typelevel/Object"; /** * @tsplus derive fncts.schema.Schema<_> 10 * @tsplus location "@fncts/schema/Schema/derivations" */ export declare function deriveValidation>(...[base, brands]: Check> extends Check.True ? [ base: Schema>, brands: { [K in keyof A[Brand.valid] & string]: Validation; } ] : never): Schema; /** * @tsplus derive fncts.schema.Schema<_> 20 * @tsplus location "@fncts/schema/Schema/derivations" */ export declare function deriveLiteral(...[value]: Check & Check.Not>> extends Check.True ? [value: A] : never): Schema; type MaybeKeys = { [K in keyof A]: A[K] extends Maybe ? K : never; }[keyof A]; type IndexSignatures> = Union.ListOf<{ [K in keyof A]: Check> extends Check.True ? never : { key: Schema; value: Schema; }; }[keyof A]>; /** * @tsplus derive fncts.schema.Schema<_> 20 * @tsplus location "@fncts/schema/Schema/derivations" */ export declare function deriveStruct>(...[requiredFields, optionalFields, maybeFields, indexSchema]: Check> extends Check.True ? [ ...[ requiredFields: { [k in Exclude, MaybeKeys>]: Schema; } ], ...([OptionalKeys] extends [never] ? [optionalFields: {}] : [ optionalFields: { [k in OptionalKeys]: Schema; } ]), ...([MaybeKeys] extends [never] ? [maybeFields: {}] : [ maybeFields: { [k in MaybeKeys]: [A[k]] extends [Maybe] ? Schema<_A> : never; } ]), ...[indexSchema: IndexSignatures] ] : never): Schema; /** * @tsplus derive fncts.schema.Schema<_> 10 * @tsplus location "@fncts/schema/Schema/derivations" */ export declare function deriveTuple>(...[components]: Check> extends Check.True ? [components: { [K in keyof A]: Schema; }] : never): Schema; /** * @tsplus derive fncts.schema.Schema lazy * @tsplus location "@fncts/schema/Schema/derivations" */ export declare function deriveLazy(f: (_: Schema) => Schema): Schema; /** * @tsplus derive fncts.schema.Schema[fncts.ReadonlyArray]<_> 10 * @tsplus location "@fncts/schema/Schema/derivations" */ export declare function deriveReadonlyArray>(...[element]: [A] extends [ReadonlyArray] ? Check>> extends Check.True ? [element: Schema<_A>] : never : never): Schema; /** * @tsplus derive fncts.schema.Schema[fncts.Array]<_> 10 * @tsplus location "@fncts/schema/Schema/derivations" */ export declare function deriveArray>(...[element]: [A] extends [Array] ? Check>> extends Check.True ? [element: Schema<_A>] : never : never): Schema; /** * @tsplus derive fncts.schema.Schema<_> 15 * @tsplus location "@fncts/schema/Schema/derivations" */ export declare function deriveRecord>(...[keySchema, valueSchema]: [A] extends [Record] ? Check> & Check.IsEqual>> extends Check.True ? [keySchema: Schema, valueSchema: Schema] : never : never): Schema; export {};