import { plugins } from './validator-map.js'; import { SwitchConfig, SwitchSchema } from './schemas/switch.js'; import { InferSchemaType, SObjectProperties, InferSObjectType, ValidatorConfig, Validator } from './types.js'; import { Schema } from './schemas/schema.js'; import { ArraySchema } from './schemas/array.js'; import { ObjectSchema } from './schemas/object.js'; import { SetSchema } from './schemas/set.js'; import { UnionSchema, UnionValidatorConfig } from './schemas/union.js'; export { SwitchSchema, Schema }; export * from './types.js'; type Builder = { [P in Exclude<(typeof plugins)[number], { dataType: "switch" | "object" | "literal" | "array" | "record" | "map" | "set" | "union" | "instanceof"; }> as P["dataType"]]: (config?: ValidatorConfig

? TOutput : never>) => Schema

? TOutput : never, P extends Validator ? TInput : never>; } & { array, TOutput = InferSchemaType[], TInput = InferSchemaType[]>(itemSchema: T, config?: ValidatorConfig): ArraySchema; object

>(config: ValidatorConfig & { validate?: { properties?: P; }; }): ObjectSchema; switch(config: SwitchConfig): Schema; literal(value: T, config?: ValidatorConfig): Schema; record, V extends Schema, TOutput = Record, InferSchemaType>, TInput = Record, InferSchemaType>>(keySchema: K, valueSchema: V, config?: ValidatorConfig): Schema; map, V extends Schema, TOutput = Map, InferSchemaType>, TInput = Map, InferSchemaType>>(keySchema: K, valueSchema: V, config?: ValidatorConfig): Schema; set, TOutput = Set>, TInput = Set>>(config?: ValidatorConfig & { validate?: { ofType?: T; }; }): SetSchema; union, ...Schema[]], TOutput = InferSchemaType, TInput = InferSchemaType>(config: UnionValidatorConfig): UnionSchema; instanceof(constructor: new (...args: any[]) => T, config?: ValidatorConfig): Schema; lazy>(resolver: () => T): T; }; export declare const s: Builder; export declare namespace s { type infer> = T extends Schema ? U : never; }