export type KeyToRecord = { [K in Extract]: string; } & { [K in Exclude["K"]]: Helper3<(params: Helper1>) => Helper2>>; }; type Helper1 = Key extends { P: any; } ? Key["P"] : void; type Helper2 = Key extends { R: any; } ? Key["R"] : string; type Helper3 any> = F extends (params: infer P) => infer R ? P extends void ? R : F : never; export {};