@gearbox-protocol/sdk 1.14.5 → 1.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -21,11 +21,37 @@ describe("PoolRewards test", function () {
|
|
|
21
21
|
// Block: ----- 500 ------ 1000 ----- 1500 ----- 2000 ------ 2500 ----- 3000
|
|
22
22
|
//
|
|
23
23
|
// Balances: 0 100 ---------------- 200 ------------------ 0
|
|
24
|
-
// Total supply 100 200 -- 250
|
|
24
|
+
// Total supply 100 200 -- 250 400 100
|
|
25
25
|
// Rewards: 20
|
|
26
26
|
// 10 ------ 8 10 -------------------- 0
|
|
27
27
|
// Total: 10 * 500 + 8*500 + 10 * 1000 = 19000
|
|
28
|
-
var result = poolRewards_1.PoolRewards.computeRewardInt(
|
|
28
|
+
var result = poolRewards_1.PoolRewards.computeRewardInt(4000, balances, totalSupply, rewards);
|
|
29
29
|
(0, chai_1.expect)(result.toNumber()).to.be.eq(19000);
|
|
30
30
|
});
|
|
31
|
+
it("sum of rewards is equal to total distributed", function () {
|
|
32
|
+
var balances0 = new range_1.RangedValue();
|
|
33
|
+
var balances1 = new range_1.RangedValue();
|
|
34
|
+
balances0.addValue(1000, ethers_1.BigNumber.from(100));
|
|
35
|
+
balances0.addValue(2000, ethers_1.BigNumber.from(200));
|
|
36
|
+
balances0.addValue(3000, ethers_1.BigNumber.from(0));
|
|
37
|
+
balances1.addValue(500, ethers_1.BigNumber.from(100));
|
|
38
|
+
balances1.addValue(1500, ethers_1.BigNumber.from(300));
|
|
39
|
+
balances1.addValue(2500, ethers_1.BigNumber.from(200));
|
|
40
|
+
balances1.addValue(3000, ethers_1.BigNumber.from(100));
|
|
41
|
+
var totalSupply = new range_1.RangedValue();
|
|
42
|
+
totalSupply.addValue(500, ethers_1.BigNumber.from(100));
|
|
43
|
+
totalSupply.addValue(1000, ethers_1.BigNumber.from(200));
|
|
44
|
+
totalSupply.addValue(1500, ethers_1.BigNumber.from(400));
|
|
45
|
+
totalSupply.addValue(2000, ethers_1.BigNumber.from(500));
|
|
46
|
+
totalSupply.addValue(2500, ethers_1.BigNumber.from(400));
|
|
47
|
+
totalSupply.addValue(3000, ethers_1.BigNumber.from(100));
|
|
48
|
+
var rewards = new range_1.RangedValue();
|
|
49
|
+
rewards.addValue(500, ethers_1.BigNumber.from(20));
|
|
50
|
+
rewards.addValue(1500, ethers_1.BigNumber.from(10));
|
|
51
|
+
rewards.addValue(2000, ethers_1.BigNumber.from(0));
|
|
52
|
+
rewards.addValue(2500, ethers_1.BigNumber.from(5));
|
|
53
|
+
var result0 = poolRewards_1.PoolRewards.computeRewardInt(3000, balances0, totalSupply, rewards);
|
|
54
|
+
var result1 = poolRewards_1.PoolRewards.computeRewardInt(3000, balances1, totalSupply, rewards);
|
|
55
|
+
(0, chai_1.expect)(result0.toNumber() + result1.toNumber()).to.be.eq(20 * 1000 + 10 * 500 + 5 * 500);
|
|
56
|
+
});
|
|
31
57
|
});
|
package/lib/rewards/range.js
CHANGED
|
@@ -59,8 +59,14 @@ var RangedValue = /** @class */ (function () {
|
|
|
59
59
|
};
|
|
60
60
|
RangedValue.prototype.getMapValue = function (index) {
|
|
61
61
|
var value = this.data.get(index);
|
|
62
|
-
if (!value)
|
|
63
|
-
|
|
62
|
+
if (!value) {
|
|
63
|
+
if (this.data.size > 0) {
|
|
64
|
+
throw new Error("Can get value for ".concat(index));
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
return this.initialValue;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
64
70
|
return value;
|
|
65
71
|
};
|
|
66
72
|
Object.defineProperty(RangedValue.prototype, "keys", {
|