export type ProcedureName = keyof T; export type ProcedureInput> = T[K] extends (...args: infer A) => any ? A extends [] ? undefined : A[0] : never; export type ProcedureOutput> = T[K] extends (...args: any[]) => any ? Awaited> : never;