@gearbox-protocol/sdk 1.16.6 → 1.16.8

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.
@@ -1,12 +1,12 @@
1
1
  import { BigNumber, providers } from "ethers";
2
- import { CreditManagerData } from "../core/creditManager";
3
- import { CloseCreditAccountEvent, DecreaseBorrowedAmountEvent, IncreaseBorrowedAmountEvent, LiquidateCreditAccountEvent, OpenCreditAccountEvent, TransferAccountEvent } from "../types/@gearbox-protocol/core-v2/contracts/interfaces/ICreditFacade.sol/ICreditFacade";
2
+ import { TypedEvent } from "../types/common";
4
3
  import { Reward } from "./poolRewards";
5
4
  import { RangedValue } from "./range";
6
5
  export declare class CreditRewards {
7
- static computeReward(creditManagerData: CreditManagerData, address: string, provider: providers.Provider, toBlock?: number): Promise<BigNumber>;
8
- static computeAllRewards(creditManagerData: CreditManagerData, provider: providers.Provider, toBlock?: number): Promise<Array<Reward>>;
6
+ static computeReward(creditManager: string, address: string, provider: providers.Provider, toBlock?: number): Promise<BigNumber>;
7
+ static computeAllRewards(creditManager: string, provider: providers.Provider, toBlock?: number): Promise<Array<Reward>>;
8
+ static parseEvents(events: Array<TypedEvent>, rewardPerBlock: RangedValue, toBlock: number): Array<Reward>;
9
9
  static computeRewardInt(toBlock: number, balance: RangedValue, totalSupply: RangedValue, rewardPerBlock: RangedValue): BigNumber;
10
- protected static query(creditFacade: string, provider: providers.Provider, toBlock: number): Promise<Array<OpenCreditAccountEvent | CloseCreditAccountEvent | LiquidateCreditAccountEvent | IncreaseBorrowedAmountEvent | DecreaseBorrowedAmountEvent | TransferAccountEvent>>;
10
+ protected static query(creditFacade: string, provider: providers.Provider, toBlock: number): Promise<Array<TypedEvent>>;
11
11
  protected static getRewardsRange(creditManager: string): RangedValue;
12
12
  }
@@ -53,12 +53,12 @@ var range_1 = require("./range");
53
53
  var CreditRewards = /** @class */ (function () {
54
54
  function CreditRewards() {
55
55
  }
56
- CreditRewards.computeReward = function (creditManagerData, address, provider, toBlock) {
56
+ CreditRewards.computeReward = function (creditManager, address, provider, toBlock) {
57
57
  return __awaiter(this, void 0, void 0, function () {
58
58
  var rewards, rewardToAddress;
59
59
  return __generator(this, function (_a) {
60
60
  switch (_a.label) {
61
- case 0: return [4 /*yield*/, CreditRewards.computeAllRewards(creditManagerData, provider, toBlock)];
61
+ case 0: return [4 /*yield*/, CreditRewards.computeAllRewards(creditManager, provider, toBlock)];
62
62
  case 1:
63
63
  rewards = _a.sent();
64
64
  rewardToAddress = rewards.filter(function (r) { return r.address === address.toLowerCase(); });
@@ -67,92 +67,115 @@ var CreditRewards = /** @class */ (function () {
67
67
  });
68
68
  });
69
69
  };
70
- CreditRewards.computeAllRewards = function (creditManagerData, provider, toBlock) {
70
+ CreditRewards.computeAllRewards = function (creditManager, provider, toBlock) {
71
71
  return __awaiter(this, void 0, void 0, function () {
72
- var toBlockQuery, _a, query, borrowedRange, totalBorrowedRange, rewardPerBlock, borrowed, totalBorrowed, cfi;
73
- return __generator(this, function (_b) {
74
- switch (_b.label) {
72
+ var toBlockQuery, _a, cm, cc, _b, _c, creditFacadesEvents, events, _i, creditFacadesEvents_1, cfe, query, rewardPerBlock;
73
+ return __generator(this, function (_d) {
74
+ switch (_d.label) {
75
75
  case 0:
76
76
  _a = toBlock;
77
77
  if (_a) return [3 /*break*/, 2];
78
78
  return [4 /*yield*/, provider.getBlockNumber()];
79
79
  case 1:
80
- _a = (_b.sent());
81
- _b.label = 2;
80
+ _a = (_d.sent());
81
+ _d.label = 2;
82
82
  case 2:
83
83
  toBlockQuery = _a;
84
- return [4 /*yield*/, CreditRewards.query(creditManagerData.creditFacade, provider, toBlockQuery)];
84
+ cm = types_1.ICreditManagerV2__factory.connect(creditManager, provider);
85
+ _c = (_b = types_1.ICreditConfigurator__factory).connect;
86
+ return [4 /*yield*/, cm.creditConfigurator()];
85
87
  case 3:
86
- query = _b.sent();
87
- borrowedRange = {};
88
- totalBorrowedRange = new range_1.RangedValue();
89
- rewardPerBlock = CreditRewards.getRewardsRange(creditManagerData.address);
90
- borrowed = {};
91
- totalBorrowed = ethers_1.BigNumber.from(0);
92
- cfi = types_1.ICreditFacade__factory.connect(creditManagerData.creditFacade, provider).interface;
93
- query.forEach(function (e) {
94
- var event = cfi.parseLog(e);
95
- switch (e.topics[0]) {
96
- case cfi.getEventTopic("OpenCreditAccount"): {
97
- var _a = event.args, onBehalfOf = _a.onBehalfOf, borrowAmount = _a.borrowAmount;
98
- totalBorrowed = totalBorrowed.add(borrowAmount);
99
- totalBorrowedRange.addValue(e.blockNumber, totalBorrowed);
100
- borrowed[onBehalfOf] = borrowAmount;
101
- if (!borrowedRange[onBehalfOf]) {
102
- borrowedRange[onBehalfOf] = new range_1.RangedValue();
103
- }
104
- borrowedRange[onBehalfOf].addValue(e.blockNumber, borrowAmount);
105
- break;
106
- }
107
- case cfi.getEventTopic("CloseCreditAccount"):
108
- case cfi.getEventTopic("LiquidateCreditAccount"):
109
- case cfi.getEventTopic("LiquidateExpiredCreditAccount"): {
110
- // We need { borrower} only so, we can use any event to get it from args
111
- var borrower = event
112
- .args.borrower;
113
- totalBorrowed = totalBorrowed.sub(borrowed[borrower]);
114
- totalBorrowedRange.addValue(e.blockNumber, totalBorrowed);
115
- borrowed[borrower] = ethers_1.BigNumber.from(0);
116
- borrowedRange[borrower].addValue(e.blockNumber, ethers_1.BigNumber.from(0));
117
- break;
118
- }
119
- case cfi.getEventTopic("IncreaseBorrowedAmount"): {
120
- var _b = event.args, borrower = _b.borrower, amount = _b.amount;
121
- totalBorrowed = totalBorrowed.add(amount);
122
- totalBorrowedRange.addValue(e.blockNumber, totalBorrowed);
123
- borrowed[borrower] = borrowed[borrower].add(amount);
124
- borrowedRange[borrower].addValue(e.blockNumber, borrowed[borrower]);
125
- break;
126
- }
127
- case cfi.getEventTopic("DecreaseBorrowedAmount"): {
128
- var _c = event.args, borrower = _c.borrower, amount = _c.amount;
129
- totalBorrowed = totalBorrowed.sub(amount);
130
- totalBorrowedRange.addValue(e.blockNumber, totalBorrowed);
131
- borrowed[borrower] = borrowed[borrower].sub(amount);
132
- borrowedRange[borrower].addValue(e.blockNumber, borrowed[borrower]);
133
- break;
134
- }
135
- case cfi.getEventTopic("TransferAccount"): {
136
- var _d = event.args, newOwner = _d.newOwner, oldOwner = _d.oldOwner;
137
- borrowed[newOwner] = borrowed[oldOwner];
138
- if (!borrowed[newOwner]) {
139
- borrowedRange[newOwner] = new range_1.RangedValue();
140
- }
141
- borrowed[oldOwner] = ethers_1.BigNumber.from(0);
142
- borrowedRange[newOwner].addValue(e.blockNumber, borrowed[newOwner]);
143
- borrowedRange[oldOwner].addValue(e.blockNumber, ethers_1.BigNumber.from(0));
144
- break;
145
- }
146
- }
147
- });
148
- return [2 /*return*/, Object.keys(borrowed).map(function (address) { return ({
149
- address: address.toLowerCase(),
150
- amount: CreditRewards.computeRewardInt(toBlockQuery, borrowedRange[address], totalBorrowedRange, rewardPerBlock),
151
- }); })];
88
+ cc = _c.apply(_b, [_d.sent(), provider]);
89
+ return [4 /*yield*/, cc.queryFilter(cc.filters.CreditFacadeUpgraded())];
90
+ case 4:
91
+ creditFacadesEvents = _d.sent();
92
+ events = [];
93
+ _i = 0, creditFacadesEvents_1 = creditFacadesEvents;
94
+ _d.label = 5;
95
+ case 5:
96
+ if (!(_i < creditFacadesEvents_1.length)) return [3 /*break*/, 8];
97
+ cfe = creditFacadesEvents_1[_i];
98
+ return [4 /*yield*/, CreditRewards.query(cfe.args.newCreditFacade, provider, toBlockQuery)];
99
+ case 6:
100
+ query = _d.sent();
101
+ events.push.apply(events, query);
102
+ _d.label = 7;
103
+ case 7:
104
+ _i++;
105
+ return [3 /*break*/, 5];
106
+ case 8:
107
+ rewardPerBlock = CreditRewards.getRewardsRange(creditManager.toLowerCase());
108
+ return [2 /*return*/, CreditRewards.parseEvents(events, rewardPerBlock, toBlockQuery)];
152
109
  }
153
110
  });
154
111
  });
155
112
  };
113
+ CreditRewards.parseEvents = function (events, rewardPerBlock, toBlock) {
114
+ var borrowedRange = {};
115
+ var totalBorrowedRange = new range_1.RangedValue();
116
+ var borrowed = {};
117
+ var totalBorrowed = ethers_1.BigNumber.from(0);
118
+ var cfi = types_1.ICreditFacade__factory.createInterface();
119
+ events.forEach(function (e) {
120
+ var event = cfi.parseLog(e);
121
+ switch (e.topics[0]) {
122
+ case cfi.getEventTopic("OpenCreditAccount"): {
123
+ var _a = event.args, onBehalfOf = _a.onBehalfOf, borrowAmount = _a.borrowAmount;
124
+ totalBorrowed = totalBorrowed.add(borrowAmount);
125
+ totalBorrowedRange.addValue(e.blockNumber, totalBorrowed);
126
+ borrowed[onBehalfOf] = borrowAmount;
127
+ if (!borrowedRange[onBehalfOf]) {
128
+ borrowedRange[onBehalfOf] = new range_1.RangedValue();
129
+ }
130
+ borrowedRange[onBehalfOf].addValue(e.blockNumber, borrowAmount);
131
+ break;
132
+ }
133
+ case cfi.getEventTopic("CloseCreditAccount"):
134
+ case cfi.getEventTopic("LiquidateCreditAccount"):
135
+ case cfi.getEventTopic("LiquidateExpiredCreditAccount"): {
136
+ // We need { borrower} only so, we can use any event to get it from args
137
+ var borrower = event
138
+ .args.borrower;
139
+ totalBorrowed = totalBorrowed.sub(borrowed[borrower]);
140
+ totalBorrowedRange.addValue(e.blockNumber, totalBorrowed);
141
+ borrowed[borrower] = ethers_1.BigNumber.from(0);
142
+ borrowedRange[borrower].addValue(e.blockNumber, ethers_1.BigNumber.from(0));
143
+ break;
144
+ }
145
+ case cfi.getEventTopic("IncreaseBorrowedAmount"): {
146
+ var _b = event.args, borrower = _b.borrower, amount = _b.amount;
147
+ totalBorrowed = totalBorrowed.add(amount);
148
+ totalBorrowedRange.addValue(e.blockNumber, totalBorrowed);
149
+ borrowed[borrower] = borrowed[borrower].add(amount);
150
+ borrowedRange[borrower].addValue(e.blockNumber, borrowed[borrower]);
151
+ break;
152
+ }
153
+ case cfi.getEventTopic("DecreaseBorrowedAmount"): {
154
+ var _c = event.args, borrower = _c.borrower, amount = _c.amount;
155
+ totalBorrowed = totalBorrowed.sub(amount);
156
+ totalBorrowedRange.addValue(e.blockNumber, totalBorrowed);
157
+ borrowed[borrower] = borrowed[borrower].sub(amount);
158
+ borrowedRange[borrower].addValue(e.blockNumber, borrowed[borrower]);
159
+ break;
160
+ }
161
+ case cfi.getEventTopic("TransferAccount"): {
162
+ var _d = event.args, newOwner = _d.newOwner, oldOwner = _d.oldOwner;
163
+ borrowed[newOwner] = borrowed[oldOwner];
164
+ if (!borrowedRange[newOwner]) {
165
+ borrowedRange[newOwner] = new range_1.RangedValue();
166
+ }
167
+ borrowed[oldOwner] = ethers_1.BigNumber.from(0);
168
+ borrowedRange[newOwner].addValue(e.blockNumber, borrowed[newOwner]);
169
+ borrowedRange[oldOwner].addValue(e.blockNumber, ethers_1.BigNumber.from(0));
170
+ break;
171
+ }
172
+ }
173
+ });
174
+ return Object.keys(borrowed).map(function (address) { return ({
175
+ address: address.toLowerCase(),
176
+ amount: CreditRewards.computeRewardInt(toBlock, borrowedRange[address], totalBorrowedRange, rewardPerBlock),
177
+ }); });
178
+ };
156
179
  CreditRewards.computeRewardInt = function (toBlock, balance, totalSupply, rewardPerBlock) {
157
180
  var keys = Array.from(new Set(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], balance.keys, true), totalSupply.keys, true), rewardPerBlock.keys, true), [
158
181
  toBlock,
@@ -2,56 +2,134 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  var chai_1 = require("chai");
4
4
  var ethers_1 = require("ethers");
5
- var poolRewards_1 = require("./poolRewards");
5
+ var constants_1 = require("../core/constants");
6
+ var creditRewards_1 = require("./creditRewards");
7
+ var creditRewardsHelper_spec_1 = require("./creditRewardsHelper.spec");
6
8
  var range_1 = require("./range");
7
9
  describe("CreditRewards test", function () {
8
- it("computeReward works correctly", function () {
9
- var balances = new range_1.RangedValue();
10
- balances.addValue(1000, ethers_1.BigNumber.from(100));
11
- balances.addValue(2000, ethers_1.BigNumber.from(200));
12
- balances.addValue(3000, ethers_1.BigNumber.from(0));
13
- var totalSupply = new range_1.RangedValue();
14
- totalSupply.addValue(500, ethers_1.BigNumber.from(100));
15
- totalSupply.addValue(1000, ethers_1.BigNumber.from(200));
16
- totalSupply.addValue(1500, ethers_1.BigNumber.from(250));
17
- totalSupply.addValue(2000, ethers_1.BigNumber.from(400));
18
- totalSupply.addValue(3000, ethers_1.BigNumber.from(100));
19
- var rewards = new range_1.RangedValue();
20
- rewards.addValue(500, ethers_1.BigNumber.from(20));
21
- // Block: ----- 500 ------ 1000 ----- 1500 ----- 2000 ------ 2500 ----- 3000
22
- //
23
- // Balances: 0 100 ---------------- 200 ------------------ 0
24
- // Total supply 100 200 -- 250 400 100
25
- // Rewards: 20
26
- // 10 ------ 8 10 -------------------- 0
27
- // Total: 10 * 500 + 8*500 + 10 * 1000 = 19000
28
- var result = poolRewards_1.PoolRewards.computeRewardInt(4000, balances, totalSupply, rewards);
29
- (0, chai_1.expect)(result.toNumber()).to.be.eq(19000);
10
+ it("one acccount only", function () {
11
+ var cfacade = constants_1.DUMB_ADDRESS;
12
+ var user = constants_1.DUMB_ADDRESS2.toLowerCase();
13
+ var events = [
14
+ (0, creditRewardsHelper_spec_1.openCreditAccountEvent)(cfacade, 1000, user, ethers_1.BigNumber.from(100)),
15
+ ];
16
+ var rewardPerBlock = new range_1.RangedValue();
17
+ rewardPerBlock.addValue(1000, ethers_1.BigNumber.from(1000));
18
+ var r = creditRewards_1.CreditRewards.parseEvents(events, rewardPerBlock, 2000);
19
+ (0, chai_1.expect)(r).to.be.eql([
20
+ {
21
+ address: user,
22
+ amount: ethers_1.BigNumber.from(1000).mul(1000),
23
+ },
24
+ ]);
30
25
  });
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);
26
+ it("one acccoun only with closure", function () {
27
+ var cfacade = constants_1.DUMB_ADDRESS;
28
+ var user = constants_1.DUMB_ADDRESS2.toLowerCase();
29
+ var events = [
30
+ (0, creditRewardsHelper_spec_1.openCreditAccountEvent)(cfacade, 1000, user, ethers_1.BigNumber.from(100)),
31
+ (0, creditRewardsHelper_spec_1.closeCreditAccountEvent)(cfacade, 1500, user),
32
+ ];
33
+ var rewardPerBlock = new range_1.RangedValue();
34
+ rewardPerBlock.addValue(1000, ethers_1.BigNumber.from(1000));
35
+ var r = creditRewards_1.CreditRewards.parseEvents(events, rewardPerBlock, 2000);
36
+ (0, chai_1.expect)(r).to.be.eql([
37
+ {
38
+ address: user,
39
+ amount: ethers_1.BigNumber.from(1000).mul(500),
40
+ },
41
+ ]);
42
+ });
43
+ it("two accounts with one liquidation", function () {
44
+ var cfacade = constants_1.DUMB_ADDRESS;
45
+ var user = constants_1.DUMB_ADDRESS2.toLowerCase();
46
+ var user2 = constants_1.DUMB_ADDRESS3.toLowerCase();
47
+ var events = [
48
+ (0, creditRewardsHelper_spec_1.openCreditAccountEvent)(cfacade, 1000, user, ethers_1.BigNumber.from(100)),
49
+ (0, creditRewardsHelper_spec_1.liquidateCreditAccountEvent)(cfacade, 1500, user),
50
+ (0, creditRewardsHelper_spec_1.openCreditAccountEvent)(cfacade, 1500, user2, ethers_1.BigNumber.from(200)),
51
+ ];
52
+ var rewardPerBlock = new range_1.RangedValue();
53
+ rewardPerBlock.addValue(1000, ethers_1.BigNumber.from(1000));
54
+ var r = creditRewards_1.CreditRewards.parseEvents(events, rewardPerBlock, 2000);
55
+ (0, chai_1.expect)(r).to.be.eql([
56
+ {
57
+ address: user,
58
+ amount: ethers_1.BigNumber.from(1000).mul(500),
59
+ },
60
+ {
61
+ address: user2,
62
+ amount: ethers_1.BigNumber.from(1000).mul(500),
63
+ },
64
+ ]);
65
+ });
66
+ it("two accounts with increase borrowed amount", function () {
67
+ var cfacade = constants_1.DUMB_ADDRESS;
68
+ var user = constants_1.DUMB_ADDRESS2.toLowerCase();
69
+ var user2 = constants_1.DUMB_ADDRESS3.toLowerCase();
70
+ var events = [
71
+ (0, creditRewardsHelper_spec_1.openCreditAccountEvent)(cfacade, 1000, user, ethers_1.BigNumber.from(100)),
72
+ (0, creditRewardsHelper_spec_1.openCreditAccountEvent)(cfacade, 1000, user2, ethers_1.BigNumber.from(100)),
73
+ (0, creditRewardsHelper_spec_1.increaseBorrowedAmountEvent)(cfacade, 1500, user2, ethers_1.BigNumber.from(200)),
74
+ ];
75
+ var rewardPerBlock = new range_1.RangedValue();
76
+ rewardPerBlock.addValue(1000, ethers_1.BigNumber.from(1000));
77
+ var r = creditRewards_1.CreditRewards.parseEvents(events, rewardPerBlock, 2000);
78
+ (0, chai_1.expect)(r).to.be.eql([
79
+ {
80
+ address: user,
81
+ amount: ethers_1.BigNumber.from(500).mul(500).add(ethers_1.BigNumber.from(250).mul(500)),
82
+ },
83
+ {
84
+ address: user2,
85
+ amount: ethers_1.BigNumber.from(500).mul(500).add(ethers_1.BigNumber.from(750).mul(500)),
86
+ },
87
+ ]);
88
+ });
89
+ it("two accounts with decrease borrowed amount", function () {
90
+ var cfacade = constants_1.DUMB_ADDRESS;
91
+ var user = constants_1.DUMB_ADDRESS2.toLowerCase();
92
+ var user2 = constants_1.DUMB_ADDRESS3.toLowerCase();
93
+ var events = [
94
+ (0, creditRewardsHelper_spec_1.openCreditAccountEvent)(cfacade, 1000, user, ethers_1.BigNumber.from(200)),
95
+ (0, creditRewardsHelper_spec_1.openCreditAccountEvent)(cfacade, 1000, user2, ethers_1.BigNumber.from(200)),
96
+ (0, creditRewardsHelper_spec_1.decreaseBorrowedAmountEvent)(cfacade, 1500, user, ethers_1.BigNumber.from(100)),
97
+ (0, creditRewardsHelper_spec_1.increaseBorrowedAmountEvent)(cfacade, 1500, user2, ethers_1.BigNumber.from(100)),
98
+ ];
99
+ var rewardPerBlock = new range_1.RangedValue();
100
+ rewardPerBlock.addValue(1000, ethers_1.BigNumber.from(1000));
101
+ var r = creditRewards_1.CreditRewards.parseEvents(events, rewardPerBlock, 2000);
102
+ (0, chai_1.expect)(r).to.be.eql([
103
+ {
104
+ address: user,
105
+ amount: ethers_1.BigNumber.from(500).mul(500).add(ethers_1.BigNumber.from(250).mul(500)),
106
+ },
107
+ {
108
+ address: user2,
109
+ amount: ethers_1.BigNumber.from(500).mul(500).add(ethers_1.BigNumber.from(750).mul(500)),
110
+ },
111
+ ]);
112
+ });
113
+ it("transfer works correctly ", function () {
114
+ var cfacade = constants_1.DUMB_ADDRESS;
115
+ var user = constants_1.DUMB_ADDRESS2.toLowerCase();
116
+ var user2 = constants_1.DUMB_ADDRESS3.toLowerCase();
117
+ var events = [
118
+ (0, creditRewardsHelper_spec_1.openCreditAccountEvent)(cfacade, 1000, user, ethers_1.BigNumber.from(200)),
119
+ (0, creditRewardsHelper_spec_1.transferAccountEvent)(cfacade, 1500, user, user2),
120
+ ];
121
+ var rewardPerBlock = new range_1.RangedValue();
122
+ rewardPerBlock.addValue(1000, ethers_1.BigNumber.from(1000));
123
+ var r = creditRewards_1.CreditRewards.parseEvents(events, rewardPerBlock, 2000);
124
+ (0, chai_1.expect)(r).to.be.eql([
125
+ {
126
+ address: user,
127
+ amount: ethers_1.BigNumber.from(500).mul(1000),
128
+ },
129
+ {
130
+ address: user2,
131
+ amount: ethers_1.BigNumber.from(500).mul(1000),
132
+ },
133
+ ]);
56
134
  });
57
135
  });
@@ -0,0 +1,67 @@
1
+ import { BigNumber } from "ethers";
2
+ export declare const openCreditAccountEvent: (address: string, blockNumber: number, onBehalf: string, borrowAmount: BigNumber) => {
3
+ blockHash: string;
4
+ transactionIndex: number;
5
+ removed: boolean;
6
+ transactionHash: string;
7
+ logIndex: number;
8
+ blockNumber: number;
9
+ address: string;
10
+ data: string;
11
+ topics: string[];
12
+ };
13
+ export declare const closeCreditAccountEvent: (address: string, blockNumber: number, borrower: string) => {
14
+ blockHash: string;
15
+ transactionIndex: number;
16
+ removed: boolean;
17
+ transactionHash: string;
18
+ logIndex: number;
19
+ blockNumber: number;
20
+ address: string;
21
+ data: string;
22
+ topics: string[];
23
+ };
24
+ export declare const liquidateCreditAccountEvent: (address: string, blockNumber: number, borrower: string, expired?: boolean) => {
25
+ blockHash: string;
26
+ transactionIndex: number;
27
+ removed: boolean;
28
+ transactionHash: string;
29
+ logIndex: number;
30
+ blockNumber: number;
31
+ address: string;
32
+ data: string;
33
+ topics: string[];
34
+ };
35
+ export declare const increaseBorrowedAmountEvent: (address: string, blockNumber: number, borrower: string, amount: BigNumber) => {
36
+ blockHash: string;
37
+ transactionIndex: number;
38
+ removed: boolean;
39
+ transactionHash: string;
40
+ logIndex: number;
41
+ blockNumber: number;
42
+ address: string;
43
+ data: string;
44
+ topics: string[];
45
+ };
46
+ export declare const decreaseBorrowedAmountEvent: (address: string, blockNumber: number, borrower: string, amount: BigNumber) => {
47
+ blockHash: string;
48
+ transactionIndex: number;
49
+ removed: boolean;
50
+ transactionHash: string;
51
+ logIndex: number;
52
+ blockNumber: number;
53
+ address: string;
54
+ data: string;
55
+ topics: string[];
56
+ };
57
+ export declare const transferAccountEvent: (address: string, blockNumber: number, oldOwner: string, newOwner: string) => {
58
+ blockHash: string;
59
+ transactionIndex: number;
60
+ removed: boolean;
61
+ transactionHash: string;
62
+ logIndex: number;
63
+ blockNumber: number;
64
+ address: string;
65
+ data: string;
66
+ topics: string[];
67
+ };
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.transferAccountEvent = exports.decreaseBorrowedAmountEvent = exports.increaseBorrowedAmountEvent = exports.liquidateCreditAccountEvent = exports.closeCreditAccountEvent = exports.openCreditAccountEvent = void 0;
15
+ var chai_1 = require("chai");
16
+ var ethers_1 = require("ethers");
17
+ var contractsRegister_1 = require("../contracts/contractsRegister");
18
+ var constants_1 = require("../core/constants");
19
+ var types_1 = require("../types");
20
+ var cfi = types_1.ICreditFacade__factory.createInterface();
21
+ var bnToU256 = function (bn) {
22
+ var hexValue = bn.toHexString().replaceAll("0x", "");
23
+ return "".concat("0".repeat(64 - hexValue.length)).concat(hexValue);
24
+ };
25
+ var addrToU256 = function (addr) {
26
+ return "0x000000000000000000000000".concat(addr.replaceAll("0x", ""));
27
+ };
28
+ var commonEventFields = {
29
+ blockHash: "0xb77353a688104b25b14a3caf018b48d601f67fd08b748206b97930a90cee45c9",
30
+ transactionIndex: 49,
31
+ removed: false,
32
+ transactionHash: "0x03f85b59b3641f863ac687e7c09e38777d42c5640ae0a74cc62f5667c74109d4",
33
+ logIndex: 114,
34
+ };
35
+ var openCreditAccountEvent = function (address, blockNumber, onBehalf, borrowAmount) {
36
+ var data = "0x".concat(bnToU256(borrowAmount)).concat(bnToU256(ethers_1.BigNumber.from(0)));
37
+ return __assign({ blockNumber: blockNumber, address: address, data: data, topics: [
38
+ cfi.getEventTopic("OpenCreditAccount"),
39
+ addrToU256(onBehalf),
40
+ addrToU256(constants_1.DUMB_ADDRESS),
41
+ ] }, commonEventFields);
42
+ };
43
+ exports.openCreditAccountEvent = openCreditAccountEvent;
44
+ var closeCreditAccountEvent = function (address, blockNumber, borrower) {
45
+ return __assign({ blockNumber: blockNumber, address: address, data: "0x", topics: [
46
+ cfi.getEventTopic("CloseCreditAccount"),
47
+ addrToU256(borrower),
48
+ addrToU256(borrower),
49
+ ] }, commonEventFields);
50
+ };
51
+ exports.closeCreditAccountEvent = closeCreditAccountEvent;
52
+ var liquidateCreditAccountEvent = function (address, blockNumber, borrower, expired) {
53
+ if (expired === void 0) { expired = false; }
54
+ return __assign({ blockNumber: blockNumber, address: address, data: "0x".concat(bnToU256(ethers_1.BigNumber.from(1))), topics: [
55
+ expired
56
+ ? cfi.getEventTopic("LiquidateExpiredCreditAccount")
57
+ : cfi.getEventTopic("LiquidateCreditAccount"),
58
+ addrToU256(borrower),
59
+ addrToU256(constants_1.DUMB_ADDRESS2),
60
+ addrToU256(borrower),
61
+ ] }, commonEventFields);
62
+ };
63
+ exports.liquidateCreditAccountEvent = liquidateCreditAccountEvent;
64
+ var increaseBorrowedAmountEvent = function (address, blockNumber, borrower, amount) {
65
+ return __assign({ blockNumber: blockNumber, address: address, data: "0x".concat(bnToU256(amount)), topics: [cfi.getEventTopic("IncreaseBorrowedAmount"), addrToU256(borrower)] }, commonEventFields);
66
+ };
67
+ exports.increaseBorrowedAmountEvent = increaseBorrowedAmountEvent;
68
+ var decreaseBorrowedAmountEvent = function (address, blockNumber, borrower, amount) {
69
+ return __assign({ blockNumber: blockNumber, address: address, data: "0x".concat(bnToU256(amount)), topics: [cfi.getEventTopic("DecreaseBorrowedAmount"), addrToU256(borrower)] }, commonEventFields);
70
+ };
71
+ exports.decreaseBorrowedAmountEvent = decreaseBorrowedAmountEvent;
72
+ var transferAccountEvent = function (address, blockNumber, oldOwner, newOwner) {
73
+ return __assign({ blockNumber: blockNumber, address: address, data: "0x", topics: [
74
+ cfi.getEventTopic("TransferAccount"),
75
+ addrToU256(oldOwner),
76
+ addrToU256(newOwner),
77
+ ] }, commonEventFields);
78
+ };
79
+ exports.transferAccountEvent = transferAccountEvent;
80
+ describe("CreditRewards helper test", function () {
81
+ it("test events generated correctly", function () {
82
+ var e = (0, exports.openCreditAccountEvent)(contractsRegister_1.CREDIT_MANAGER_DAI_V2_MAINNET, 15902535, constants_1.DUMB_ADDRESS, ethers_1.BigNumber.from(1500));
83
+ var openEvent = cfi.parseLog(e);
84
+ (0, chai_1.expect)(openEvent.args.onBehalfOf).to.be.eq(constants_1.DUMB_ADDRESS);
85
+ (0, chai_1.expect)(openEvent.args.borrowAmount.toNumber()).to.be.eq(1500);
86
+ e = (0, exports.closeCreditAccountEvent)(contractsRegister_1.CREDIT_MANAGER_DAI_V2_MAINNET, 15902535, constants_1.DUMB_ADDRESS);
87
+ var closeEvent = cfi.parseLog(e);
88
+ (0, chai_1.expect)(closeEvent.args.borrower).to.be.eq(constants_1.DUMB_ADDRESS);
89
+ for (var _i = 0, _a = [false, true]; _i < _a.length; _i++) {
90
+ var expired = _a[_i];
91
+ e = (0, exports.liquidateCreditAccountEvent)(contractsRegister_1.CREDIT_MANAGER_DAI_V2_MAINNET, 15902535, constants_1.DUMB_ADDRESS, expired);
92
+ var liquidateEvent = cfi.parseLog(e);
93
+ (0, chai_1.expect)(liquidateEvent.args.borrower).to.be.eq(constants_1.DUMB_ADDRESS);
94
+ }
95
+ e = (0, exports.increaseBorrowedAmountEvent)(contractsRegister_1.CREDIT_MANAGER_DAI_V2_MAINNET, 15902535, constants_1.DUMB_ADDRESS, ethers_1.BigNumber.from(1898));
96
+ var increaseEvent = cfi.parseLog(e);
97
+ (0, chai_1.expect)(increaseEvent.args.borrower).to.be.eq(constants_1.DUMB_ADDRESS);
98
+ (0, chai_1.expect)(increaseEvent.args.amount.toNumber()).to.be.eq(1898);
99
+ e = (0, exports.decreaseBorrowedAmountEvent)(contractsRegister_1.CREDIT_MANAGER_DAI_V2_MAINNET, 15902535, constants_1.DUMB_ADDRESS, ethers_1.BigNumber.from(1898));
100
+ var decreaseEvent = cfi.parseLog(e);
101
+ (0, chai_1.expect)(decreaseEvent.args.borrower).to.be.eq(constants_1.DUMB_ADDRESS);
102
+ (0, chai_1.expect)(decreaseEvent.args.amount.toNumber()).to.be.eq(1898);
103
+ e = (0, exports.transferAccountEvent)(contractsRegister_1.CREDIT_MANAGER_DAI_V2_MAINNET, 15902535, constants_1.DUMB_ADDRESS, constants_1.DUMB_ADDRESS2);
104
+ var transferEvent = cfi.parseLog(e);
105
+ (0, chai_1.expect)(transferEvent.args.oldOwner).to.be.eq(constants_1.DUMB_ADDRESS);
106
+ (0, chai_1.expect)(transferEvent.args.newOwner).to.be.eq(constants_1.DUMB_ADDRESS2);
107
+ });
108
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gearbox-protocol/sdk",
3
- "version": "1.16.6",
3
+ "version": "1.16.8",
4
4
  "description": "Gearbox SDK",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./lib/index.d.ts",