type ParamsArgs = [] | [Partial] type NewEntityArgs = HasRequiredKeys extends true ? [Input, ...ParamsArgs] : [] | [Input, ...ParamsArgs] export const newEntity = < $Config extends EntityConfig, Static extends EntityClassStatic<$Config>, T extends Entity<$Config>, >( class_: EntityClass<$Config, Static, T>, ...[values, params]: NewEntityArgs<$Config["input"]> ) => new class_(class_.schemaWithDefaultValues.parse(values || {}, params))