type BaseContext = { nonce?: string; }; export type RequestOptions = TRegister extends { server: { requestContext: infer TRequestContext; }; } ? TRequestContext extends undefined ? { context?: TRequestContext & BaseContext; } : { context: TRequestContext & BaseContext; } : { context?: BaseContext; }; type HasRequired = keyof T extends never ? false : { [K in keyof T]-?: undefined extends T[K] ? never : K; }[keyof T] extends never ? false : true; export type RequestHandler = HasRequired> extends true ? (request: Request, opts: RequestOptions) => Promise | Response : (request: Request, opts?: RequestOptions) => Promise | Response; export {};