type Identity> = (...args: Args) => T; type Singleton = T extends Array ? T[0] : T; type Identities> = { [K in keyof T]: Identity; }; type IdentityRecords, Features> = { [K in keyof T]: Record, Args> | null : Identity, Args>>; }; export type PartialBy = Omit & Partial>; export type IdentityBy> = Omit & Identities, ARGS>; type IdentityFeatures = 'nullable' | ''; export type IdentityRecordBy, Features extends IdentityFeatures = ''> = Omit & IdentityRecords, Args, Features>; export {};