import type { FastifyInstance, FastifyLoggerInstance, RawReplyDefaultExpression, RawRequestDefaultExpression, RawServerDefault, } from 'fastify'; import Fastify from 'fastify'; import { expectAssignable, expectType } from 'tsd'; import z from 'zod'; import { serializerCompiler, validatorCompiler } from '../src/index'; import type { ZodTypeProvider } from '../src/index'; const fastify = Fastify().withTypeProvider(); type FastifyZodInstance = FastifyInstance< RawServerDefault, RawRequestDefaultExpression, RawReplyDefaultExpression, FastifyLoggerInstance, ZodTypeProvider >; expectType(fastify.setValidatorCompiler(validatorCompiler)); expectType(fastify.setSerializerCompiler(serializerCompiler)); expectAssignable(fastify); fastify.route({ method: 'GET', url: '/', // Define your schema schema: { querystring: z.object({ name: z.string().min(4), }), response: { 200: z.string(), }, }, handler: (req, res) => { expectType(req.query.name); res.send('string'); }, });