import type { AnyMutationProcedure, AnyQueryProcedure, AnyRootTypes, AnyRouter, RouterRecord, } from '@trpc/server/unstable-core-do-not-import'; import type { MutationLike } from './mutationLike'; import type { QueryLike } from './queryLike'; /** * Use to describe a route path which matches a given route's interface */ export type RouterLike = RouterLikeInner< TRouter['_def']['_config']['$types'], TRouter['_def']['record'] >; export type RouterLikeInner< TRoot extends AnyRootTypes, TRecord extends RouterRecord, > = { [TKey in keyof TRecord]: TRecord[TKey] extends infer $Value ? $Value extends AnyQueryProcedure ? QueryLike : $Value extends AnyMutationProcedure ? MutationLike : $Value extends RouterRecord ? RouterLikeInner : never : never; }; // /** // * Use to describe a route path which matches a given route's interface // */ // export type RouterLike = RouterLikeInner< // TRouter['_def']['_config']['$types'], // TRouter['_def']['procedures'] // >; // export type RouterLikeInner< // TRoot extends AnyRootTypes, // TRecord extends RouterRecord, // > = DecorateRouterRecord;