export type MemoryCollectionEffect = { count: number; permil: number; }; export function memoryParameterPermil( count: number, effects: readonly MemoryCollectionEffect[] ): number { const owned = Math.max(0, Math.floor(Number.isFinite(count) ? count : 0)); return effects.reduce( (rate, effect) => effect.count <= owned && effect.permil > rate ? effect.permil : rate, 0 ); }