export type Arguments = T extends (...args: infer U) => any ? U : never; export type DeepRequired = { [K in keyof T]-?: Required; }; export type FirstArgument = T extends (firstArg: infer U, ...args: Array) => any ? U : never; export type Without = Pick>;