import { FastifyInstance , RouteShorthandMethod } from 'fastify' ; type _Params < T > = T extends { ( ... args ) : unknown ; ( ... args ) : unknown ; ( ... args ) : unknown ; ( ... args ) : unknown ; ( ... args ) : unknown ; ( ... args ) : unknown ; ( ... args ) : unknown ; ( ... args ) : unknown ; ( ... args ) : unknown ; ( ... args ) : unknown ; ( ... args ) : unknown ; ( ... args ) : unknown ; ( ... args ) : unknown ; ( ... args ) : unknown ; } ? [ A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 ] : never ; type _23Params < T > = T extends { ( ... args ) : unknown ; ( ... args ) : unknown ; ( ... args ) : unknown ; ( ... args ) : unknown ; ( ... args ) : unknown ; ( ... args ) : unknown ; ( ... args ) : unknown ; ( ... args ) : unknown ; ( ... args ) : unknown ; ( ... args ) : unknown ; ( ... args ) : unknown ; ( ... args ) : unknown ; ( ... args ) : unknown ; ( ... args ) : unknown ; ( ... args ) : unknown ; ( ... args ) : unknown ; ( ... args ) : unknown ; ( ... args ) : unknown ; ( ... args ) : unknown ; ( ... args ) : unknown ; ( ... args ) : unknown ; ( ... args ) : unknown ; ( ... args ) : unknown ; } ? [ A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 ] : never ; type _1to5Params < T > = T extends { ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; } ? [ T1 , T2 , T3 , T4 , T5 ] : T extends { ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; } ? [ T1 , T2 , T3 , T4 ] : T extends { ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; } ? [ T1 , T2 , T3 ] : T extends { ( ... opts ) : any ; ( ... opts ) : any ; } ? [ T1 , T2 ] : T extends { ( ... opts ) : any ; } ? [ T1 ] : never ; type _6to10Params < T > = T extends { ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; } ? [ T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ] : T extends { ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; } ? [ T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ] : T extends { ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; } ? [ T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ] : T extends { ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; } ? [ T1 , T2 , T3 , T4 , T5 , T6 , T7 ] : T extends { ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; ( ... opts ) : any ; } ? [ T1 , T2 , T3 , T4 , T5 , T6 ] : never ; type RemoveUnknownsFromTuple < T > = T extends [ infer A , ... infer Rest ] ? unknown [ ] extends A ? RemoveUnknownsFromTuple < Rest > : [ A , ... RemoveUnknownsFromTuple < Rest > ] : T ; type TupleToArrayUnion < A extends readonly unknown [ ] > = A extends ( infer T ) [ ] ? T extends unknown [ ] ? T : [ ] : [ ] ; export type OverloadParameters < T extends Function > = TupleToArrayUnion < RemoveUnknownsFromTuple < _Params < T > > > ; export type OverloadParameters23 < T extends Function > = TupleToArrayUnion < _23Params < T > > ; export type OverloadParameters1to5 < T extends Function > = TupleToArrayUnion < _1to5Params < T > > ; export type OverloadParameters6to10 < T extends Function > = TupleToArrayUnion < _6to10Params < T > > ; type Z = OverloadParameters6to10 < FastifyInstance [ 'addHook' ] > ;