type ParserZodEsque = { _input: TInput; _output: TParsedInput; }; type ParserValibotEsque = { types?: { input: TInput; output: TParsedInput; }; }; type ParserMyZodEsque = { parse: (input: any) => TInput; }; type ParserSuperstructEsque = { create: (input: unknown) => TInput; }; type ParserCustomValidatorEsque = (input: unknown) => Promise | TInput; type ParserYupEsque = { validateSync: (input: unknown) => TInput; }; type ParserScaleEsque = { assert(value: unknown): asserts value is TInput; }; type ParserWithoutInput = ParserCustomValidatorEsque | ParserMyZodEsque | ParserScaleEsque | ParserSuperstructEsque | ParserYupEsque; type ParserWithInputOutput = ParserZodEsque | ParserValibotEsque; type Parser = ParserWithInputOutput | ParserWithoutInput; type InferParser = TParser extends ParserWithInputOutput ? { in: $TIn; out: $TOut; } : TParser extends ParserWithoutInput ? { in: $InOut; out: $InOut; } : never; type Infer = InferParser["out"]; type InferIn = InferParser["in"]; type ParseFn = (value: unknown) => Promise | TType; declare function getParseFn(procedureParser: Parser): ParseFn; declare const parse: (parser: T, value: unknown) => Infer; export { type Infer, type InferIn, type ParseFn, type Parser, getParseFn, parse };