@gearbox-protocol/sdk 1.16.13 → 1.16.15

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.
package/lib/index.d.ts CHANGED
@@ -38,9 +38,6 @@ export * from "./parsers/txParser";
38
38
  export * from "./pathfinder/core";
39
39
  export * from "./pathfinder/pathfinder";
40
40
  export * from "./pathfinder/tradeTypes";
41
- export * from "./rewards/airdrops";
42
- export * from "./rewards/creditRewards";
43
- export * from "./rewards/poolRewards";
44
41
  export * from "./strategies/convex";
45
42
  export * from "./strategies/creditFacade";
46
43
  export * from "./strategies/curve";
package/lib/index.js CHANGED
@@ -57,9 +57,6 @@ __exportStar(require("./parsers/txParser"), exports);
57
57
  __exportStar(require("./pathfinder/core"), exports);
58
58
  __exportStar(require("./pathfinder/pathfinder"), exports);
59
59
  __exportStar(require("./pathfinder/tradeTypes"), exports);
60
- __exportStar(require("./rewards/airdrops"), exports);
61
- __exportStar(require("./rewards/creditRewards"), exports);
62
- __exportStar(require("./rewards/poolRewards"), exports);
63
60
  __exportStar(require("./strategies/convex"), exports);
64
61
  __exportStar(require("./strategies/creditFacade"), exports);
65
62
  __exportStar(require("./strategies/curve"), exports);
@@ -43,7 +43,6 @@ export declare type PriceFeedData = {
43
43
  } | {
44
44
  type: OracleType.COMPOSITE_ORACLE;
45
45
  ethPriceFeed: Record<NetworkType, string>;
46
- usdPriceFeed: Record<NetworkType, string>;
47
46
  };
48
47
  export interface TokenPriceFeedData {
49
48
  priceFeedETH?: PriceFeedData;
@@ -253,18 +253,14 @@ exports.priceFeedsByNetwork = {
253
253
  type: oracles_1.OracleType.CHAINLINK_ORACLE,
254
254
  address: {
255
255
  Mainnet: "0x86392dC19c0b719886221c78AB11eb8Cf5c52812",
256
- Goerli: "0x94bE0b4383b9a309018C815E9e5411935414a0f3",
256
+ Goerli: "0x78622A939324C5dC1B646D113358f54f0BA4353B",
257
257
  },
258
258
  },
259
259
  priceFeedUSD: {
260
260
  type: oracles_1.OracleType.COMPOSITE_ORACLE,
261
- usdPriceFeed: {
262
- Mainnet: "0xCfE54B5cD566aB89272946F602D76Ea879CAb4a8",
263
- Goerli: "0xf4f054C2E3269730c781dc7e1Fe2a3ca745784bd",
264
- },
265
261
  ethPriceFeed: {
266
262
  Mainnet: "0x86392dC19c0b719886221c78AB11eb8Cf5c52812",
267
- Goerli: "0x94bE0b4383b9a309018C815E9e5411935414a0f3",
263
+ Goerli: "0x78622A939324C5dC1B646D113358f54f0BA4353B",
268
264
  },
269
265
  },
270
266
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gearbox-protocol/sdk",
3
- "version": "1.16.13",
3
+ "version": "1.16.15",
4
4
  "description": "Gearbox SDK",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./lib/index.d.ts",
@@ -1,6 +0,0 @@
1
- export declare enum AirdropСampaigns {
2
- CREDIT_ACCOUNT_MINER = 0,
3
- EARLY_COMMUNITY_MEMBER = 1,
4
- EARLY_LIQUIDITY_PROVIDER = 2,
5
- EARLY_CREDIT_ACCOUNT_USER = 3
6
- }
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AirdropСampaigns = void 0;
4
- var AirdropСampaigns;
5
- (function (AirdropСampaigns) {
6
- AirdropСampaigns[AirdropСampaigns["CREDIT_ACCOUNT_MINER"] = 0] = "CREDIT_ACCOUNT_MINER";
7
- AirdropСampaigns[AirdropСampaigns["EARLY_COMMUNITY_MEMBER"] = 1] = "EARLY_COMMUNITY_MEMBER";
8
- AirdropСampaigns[AirdropСampaigns["EARLY_LIQUIDITY_PROVIDER"] = 2] = "EARLY_LIQUIDITY_PROVIDER";
9
- AirdropСampaigns[AirdropСampaigns["EARLY_CREDIT_ACCOUNT_USER"] = 3] = "EARLY_CREDIT_ACCOUNT_USER";
10
- })(AirdropСampaigns = exports.AirdropСampaigns || (exports.AirdropСampaigns = {}));
@@ -1,7 +0,0 @@
1
- import { CreditManagersV2 } from "../contracts/contractsRegister";
2
- import { DieselTokenTypes } from "../tokens/gear";
3
- import { RangedValue } from "./range";
4
- export declare const creditRewardsPerBlock: Record<CreditManagersV2, RangedValue>;
5
- export declare const GEAR_PER_BLOCK: Record<DieselTokenTypes, number>;
6
- export declare const GOERLI_BLOCK = 7694030;
7
- export declare const MAINNET_BLOCK = 15724000;
@@ -1,39 +0,0 @@
1
- "use strict";
2
- var _a;
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.MAINNET_BLOCK = exports.GOERLI_BLOCK = exports.GEAR_PER_BLOCK = exports.creditRewardsPerBlock = void 0;
5
- var ethers_1 = require("ethers");
6
- var contractsRegister_1 = require("../contracts/contractsRegister");
7
- var range_1 = require("./range");
8
- exports.creditRewardsPerBlock = (_a = {},
9
- _a[contractsRegister_1.CREDIT_MANAGER_DAI_V2_MAINNET] = new range_1.RangedValue(),
10
- _a[contractsRegister_1.CREDIT_MANAGER_USDC_V2_MAINNET] = new range_1.RangedValue(),
11
- _a[contractsRegister_1.CREDIT_MANAGER_WETH_V2_MAINNET] = new range_1.RangedValue(),
12
- _a[contractsRegister_1.CREDIT_MANAGER_WSTETH_V2_MAINNET] = new range_1.RangedValue(),
13
- _a[contractsRegister_1.CREDIT_MANAGER_WBTC_V2_MAINNET] = new range_1.RangedValue(),
14
- // GOERLI CM
15
- _a[contractsRegister_1.CREDIT_MANAGER_DAI_V2_GOERLI] = new range_1.RangedValue(),
16
- _a[contractsRegister_1.CREDIT_MANAGER_USDC_V2_GOERLI] = new range_1.RangedValue(),
17
- _a[contractsRegister_1.CREDIT_MANAGER_WETH_V2_GOERLI] = new range_1.RangedValue(),
18
- _a[contractsRegister_1.CREDIT_MANAGER_WSTETH_V2_GOERLI] = new range_1.RangedValue(),
19
- _a[contractsRegister_1.CREDIT_MANAGER_WBTC_V2_GOERLI] = new range_1.RangedValue(),
20
- _a);
21
- exports.GEAR_PER_BLOCK = {
22
- dDAI: 166,
23
- dUSDC: 166,
24
- dWETH: 230,
25
- dWBTC: 66,
26
- dwstETH: 118,
27
- };
28
- exports.GOERLI_BLOCK = 7694030;
29
- exports.creditRewardsPerBlock[contractsRegister_1.CREDIT_MANAGER_DAI_V2_GOERLI].addValue(exports.GOERLI_BLOCK, ethers_1.BigNumber.from(10).pow(18).mul(exports.GEAR_PER_BLOCK.dDAI).div(100));
30
- exports.creditRewardsPerBlock[contractsRegister_1.CREDIT_MANAGER_USDC_V2_GOERLI].addValue(exports.GOERLI_BLOCK, ethers_1.BigNumber.from(10).pow(18).mul(exports.GEAR_PER_BLOCK.dUSDC).div(100));
31
- exports.creditRewardsPerBlock[contractsRegister_1.CREDIT_MANAGER_WETH_V2_GOERLI].addValue(exports.GOERLI_BLOCK, ethers_1.BigNumber.from(10).pow(18).mul(exports.GEAR_PER_BLOCK.dWETH).div(100));
32
- exports.creditRewardsPerBlock[contractsRegister_1.CREDIT_MANAGER_WSTETH_V2_GOERLI].addValue(exports.GOERLI_BLOCK, ethers_1.BigNumber.from(10).pow(18).mul(exports.GEAR_PER_BLOCK.dwstETH).div(100));
33
- exports.creditRewardsPerBlock[contractsRegister_1.CREDIT_MANAGER_WBTC_V2_GOERLI].addValue(exports.GOERLI_BLOCK, ethers_1.BigNumber.from(10).pow(18).mul(exports.GEAR_PER_BLOCK.dWBTC).div(100));
34
- exports.MAINNET_BLOCK = 15724000;
35
- exports.creditRewardsPerBlock[contractsRegister_1.CREDIT_MANAGER_DAI_V2_MAINNET].addValue(exports.MAINNET_BLOCK, ethers_1.BigNumber.from(10).pow(18).mul(exports.GEAR_PER_BLOCK.dDAI).div(100));
36
- exports.creditRewardsPerBlock[contractsRegister_1.CREDIT_MANAGER_USDC_V2_MAINNET].addValue(exports.MAINNET_BLOCK, ethers_1.BigNumber.from(10).pow(18).mul(exports.GEAR_PER_BLOCK.dUSDC).div(100));
37
- exports.creditRewardsPerBlock[contractsRegister_1.CREDIT_MANAGER_WETH_V2_MAINNET].addValue(exports.MAINNET_BLOCK, ethers_1.BigNumber.from(10).pow(18).mul(exports.GEAR_PER_BLOCK.dWETH).div(100));
38
- exports.creditRewardsPerBlock[contractsRegister_1.CREDIT_MANAGER_WSTETH_V2_MAINNET].addValue(exports.MAINNET_BLOCK, ethers_1.BigNumber.from(10).pow(18).mul(exports.GEAR_PER_BLOCK.dwstETH).div(100));
39
- exports.creditRewardsPerBlock[contractsRegister_1.CREDIT_MANAGER_WBTC_V2_MAINNET].addValue(exports.MAINNET_BLOCK, ethers_1.BigNumber.from(10).pow(18).mul(exports.GEAR_PER_BLOCK.dWBTC).div(100));
@@ -1,24 +0,0 @@
1
- import { BigNumber, providers } from "ethers";
2
- import { TypedEvent } from "../types/common";
3
- import { Reward } from "./poolRewards";
4
- import { RangedValue } from "./range";
5
- export declare class CreditRewards {
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
- static parseCMEvents(events: Array<TypedEvent>): {
10
- borrowedRange: Record<string, RangedValue>;
11
- totalBorrowedRange: RangedValue;
12
- borrowed: Record<string, BigNumber>;
13
- totalBorrowed: BigNumber;
14
- };
15
- static computeCMStats(creditManager: string, provider: providers.Provider, toBlock?: number): Promise<{
16
- borrowedRange: Record<string, RangedValue>;
17
- totalBorrowedRange: RangedValue;
18
- borrowed: Record<string, BigNumber>;
19
- totalBorrowed: BigNumber;
20
- }>;
21
- static computeRewardInt(toBlock: number, balance: RangedValue, totalSupply: RangedValue, rewardPerBlock: RangedValue): BigNumber;
22
- protected static query(creditFacade: string, provider: providers.Provider, toBlock: number): Promise<Array<TypedEvent>>;
23
- protected static getRewardsRange(creditManager: string): RangedValue;
24
- }
@@ -1,286 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (_) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
39
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
40
- if (ar || !(i in from)) {
41
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
42
- ar[i] = from[i];
43
- }
44
- }
45
- return to.concat(ar || Array.prototype.slice.call(from));
46
- };
47
- Object.defineProperty(exports, "__esModule", { value: true });
48
- exports.CreditRewards = void 0;
49
- var ethers_1 = require("ethers");
50
- var types_1 = require("../types");
51
- var creditRewardParams_1 = require("./creditRewardParams");
52
- var range_1 = require("./range");
53
- var CreditRewards = /** @class */ (function () {
54
- function CreditRewards() {
55
- }
56
- CreditRewards.computeReward = function (creditManager, address, provider, toBlock) {
57
- return __awaiter(this, void 0, void 0, function () {
58
- var rewards, rewardToAddress;
59
- return __generator(this, function (_a) {
60
- switch (_a.label) {
61
- case 0: return [4 /*yield*/, CreditRewards.computeAllRewards(creditManager, provider, toBlock)];
62
- case 1:
63
- rewards = _a.sent();
64
- rewardToAddress = rewards.filter(function (r) { return r.address === address.toLowerCase(); });
65
- return [2 /*return*/, rewardToAddress.length === 0
66
- ? ethers_1.BigNumber.from(0)
67
- : rewardToAddress[0].amount];
68
- }
69
- });
70
- });
71
- };
72
- CreditRewards.computeAllRewards = function (creditManager, provider, toBlock) {
73
- return __awaiter(this, void 0, void 0, function () {
74
- var toBlockQuery, _a, cm, cc, _b, _c, creditFacadesEvents, events, _i, creditFacadesEvents_1, cfe, query, rewardPerBlock;
75
- return __generator(this, function (_d) {
76
- switch (_d.label) {
77
- case 0:
78
- _a = toBlock;
79
- if (_a) return [3 /*break*/, 2];
80
- return [4 /*yield*/, provider.getBlockNumber()];
81
- case 1:
82
- _a = (_d.sent());
83
- _d.label = 2;
84
- case 2:
85
- toBlockQuery = _a;
86
- cm = types_1.ICreditManagerV2__factory.connect(creditManager, provider);
87
- _c = (_b = types_1.ICreditConfigurator__factory).connect;
88
- return [4 /*yield*/, cm.creditConfigurator()];
89
- case 3:
90
- cc = _c.apply(_b, [_d.sent(), provider]);
91
- return [4 /*yield*/, cc.queryFilter(cc.filters.CreditFacadeUpgraded())];
92
- case 4:
93
- creditFacadesEvents = _d.sent();
94
- events = [];
95
- _i = 0, creditFacadesEvents_1 = creditFacadesEvents;
96
- _d.label = 5;
97
- case 5:
98
- if (!(_i < creditFacadesEvents_1.length)) return [3 /*break*/, 8];
99
- cfe = creditFacadesEvents_1[_i];
100
- return [4 /*yield*/, CreditRewards.query(cfe.args.newCreditFacade, provider, toBlockQuery)];
101
- case 6:
102
- query = _d.sent();
103
- events.push.apply(events, query);
104
- _d.label = 7;
105
- case 7:
106
- _i++;
107
- return [3 /*break*/, 5];
108
- case 8:
109
- rewardPerBlock = CreditRewards.getRewardsRange(creditManager.toLowerCase());
110
- return [2 /*return*/, CreditRewards.parseEvents(events, rewardPerBlock, toBlockQuery)];
111
- }
112
- });
113
- });
114
- };
115
- CreditRewards.parseEvents = function (events, rewardPerBlock, toBlock) {
116
- var _a = CreditRewards.parseCMEvents(events), borrowedRange = _a.borrowedRange, totalBorrowedRange = _a.totalBorrowedRange, borrowed = _a.borrowed;
117
- return Object.keys(borrowed).map(function (address) { return ({
118
- address: address.toLowerCase(),
119
- amount: CreditRewards.computeRewardInt(toBlock, borrowedRange[address], totalBorrowedRange, rewardPerBlock),
120
- }); });
121
- };
122
- CreditRewards.parseCMEvents = function (events) {
123
- var borrowedRange = {};
124
- var totalBorrowedRange = new range_1.RangedValue();
125
- var borrowed = {};
126
- var totalBorrowed = ethers_1.BigNumber.from(0);
127
- var cfi = types_1.ICreditFacade__factory.createInterface();
128
- events.forEach(function (e) {
129
- var event = cfi.parseLog(e);
130
- switch (e.topics[0]) {
131
- case cfi.getEventTopic("OpenCreditAccount"): {
132
- var _a = event.args, onBehalfOf = _a.onBehalfOf, borrowAmount = _a.borrowAmount;
133
- totalBorrowed = totalBorrowed.add(borrowAmount);
134
- totalBorrowedRange.addValue(e.blockNumber, totalBorrowed);
135
- borrowed[onBehalfOf] = borrowAmount;
136
- if (!borrowedRange[onBehalfOf]) {
137
- borrowedRange[onBehalfOf] = new range_1.RangedValue();
138
- }
139
- borrowedRange[onBehalfOf].addValue(e.blockNumber, borrowAmount);
140
- break;
141
- }
142
- case cfi.getEventTopic("CloseCreditAccount"):
143
- case cfi.getEventTopic("LiquidateCreditAccount"):
144
- case cfi.getEventTopic("LiquidateExpiredCreditAccount"): {
145
- // We need { borrower} only so, we can use any event to get it from args
146
- var borrower = event
147
- .args.borrower;
148
- totalBorrowed = totalBorrowed.sub(borrowed[borrower]);
149
- totalBorrowedRange.addValue(e.blockNumber, totalBorrowed);
150
- borrowed[borrower] = ethers_1.BigNumber.from(0);
151
- borrowedRange[borrower].addValue(e.blockNumber, ethers_1.BigNumber.from(0));
152
- break;
153
- }
154
- case cfi.getEventTopic("IncreaseBorrowedAmount"): {
155
- var _b = event.args, borrower = _b.borrower, amount = _b.amount;
156
- totalBorrowed = totalBorrowed.add(amount);
157
- totalBorrowedRange.addValue(e.blockNumber, totalBorrowed);
158
- borrowed[borrower] = borrowed[borrower].add(amount);
159
- borrowedRange[borrower].addValue(e.blockNumber, borrowed[borrower]);
160
- break;
161
- }
162
- case cfi.getEventTopic("DecreaseBorrowedAmount"): {
163
- var _c = event.args, borrower = _c.borrower, amount = _c.amount;
164
- totalBorrowed = totalBorrowed.sub(amount);
165
- totalBorrowedRange.addValue(e.blockNumber, totalBorrowed);
166
- borrowed[borrower] = borrowed[borrower].sub(amount);
167
- borrowedRange[borrower].addValue(e.blockNumber, borrowed[borrower]);
168
- break;
169
- }
170
- case cfi.getEventTopic("TransferAccount"): {
171
- var _d = event.args, newOwner = _d.newOwner, oldOwner = _d.oldOwner;
172
- borrowed[newOwner] = borrowed[oldOwner];
173
- if (!borrowedRange[newOwner]) {
174
- borrowedRange[newOwner] = new range_1.RangedValue();
175
- }
176
- borrowed[oldOwner] = ethers_1.BigNumber.from(0);
177
- borrowedRange[newOwner].addValue(e.blockNumber, borrowed[newOwner]);
178
- borrowedRange[oldOwner].addValue(e.blockNumber, ethers_1.BigNumber.from(0));
179
- break;
180
- }
181
- }
182
- });
183
- return {
184
- borrowedRange: borrowedRange,
185
- totalBorrowedRange: totalBorrowedRange,
186
- borrowed: borrowed,
187
- totalBorrowed: totalBorrowed,
188
- };
189
- };
190
- CreditRewards.computeCMStats = function (creditManager, provider, toBlock) {
191
- return __awaiter(this, void 0, void 0, function () {
192
- var toBlockQuery, _a, cm, cc, _b, _c, creditFacadesEvents, events, _i, creditFacadesEvents_2, cfe, query;
193
- return __generator(this, function (_d) {
194
- switch (_d.label) {
195
- case 0:
196
- _a = toBlock;
197
- if (_a) return [3 /*break*/, 2];
198
- return [4 /*yield*/, provider.getBlockNumber()];
199
- case 1:
200
- _a = (_d.sent());
201
- _d.label = 2;
202
- case 2:
203
- toBlockQuery = _a;
204
- cm = types_1.ICreditManagerV2__factory.connect(creditManager, provider);
205
- _c = (_b = types_1.ICreditConfigurator__factory).connect;
206
- return [4 /*yield*/, cm.creditConfigurator()];
207
- case 3:
208
- cc = _c.apply(_b, [_d.sent(), provider]);
209
- return [4 /*yield*/, cc.queryFilter(cc.filters.CreditFacadeUpgraded())];
210
- case 4:
211
- creditFacadesEvents = _d.sent();
212
- events = [];
213
- _i = 0, creditFacadesEvents_2 = creditFacadesEvents;
214
- _d.label = 5;
215
- case 5:
216
- if (!(_i < creditFacadesEvents_2.length)) return [3 /*break*/, 8];
217
- cfe = creditFacadesEvents_2[_i];
218
- return [4 /*yield*/, CreditRewards.query(cfe.args.newCreditFacade, provider, toBlockQuery)];
219
- case 6:
220
- query = _d.sent();
221
- events.push.apply(events, query);
222
- _d.label = 7;
223
- case 7:
224
- _i++;
225
- return [3 /*break*/, 5];
226
- case 8: return [2 /*return*/, CreditRewards.parseCMEvents(events)];
227
- }
228
- });
229
- });
230
- };
231
- CreditRewards.computeRewardInt = function (toBlock, balance, totalSupply, rewardPerBlock) {
232
- var keys = Array.from(new Set(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], balance.keys, true), totalSupply.keys, true), rewardPerBlock.keys, true), [
233
- toBlock,
234
- ], false))).sort(function (a, b) { return (a > b ? 1 : -1); });
235
- var total = ethers_1.BigNumber.from(0);
236
- var balancesArr = balance.getValues(keys);
237
- var totalSupplyArr = totalSupply.getValues(keys);
238
- var rewardsArr = rewardPerBlock.getValues(keys);
239
- for (var i = 0; i < keys.length; i++) {
240
- var curBlock = keys[i];
241
- var nextBlock = i === keys.length - 1 ? toBlock : keys[i + 1];
242
- if (!totalSupplyArr[i].isZero()) {
243
- total = total.add(balancesArr[i]
244
- .mul(nextBlock - curBlock)
245
- .mul(rewardsArr[i])
246
- .div(totalSupplyArr[i]));
247
- }
248
- }
249
- return total;
250
- };
251
- CreditRewards.query = function (creditFacade, provider, toBlock) {
252
- return __awaiter(this, void 0, void 0, function () {
253
- var cf, topics, logs;
254
- return __generator(this, function (_a) {
255
- switch (_a.label) {
256
- case 0:
257
- cf = types_1.ICreditFacade__factory.connect(creditFacade, provider);
258
- topics = {
259
- OpenCreditAccount: cf.interface.getEventTopic("OpenCreditAccount"),
260
- CloseCreditAccount: cf.interface.getEventTopic("CloseCreditAccount"),
261
- LiquidateCreditAccount: cf.interface.getEventTopic("LiquidateCreditAccount"),
262
- LiquidateExpiredCreditAccount: cf.interface.getEventTopic("LiquidateExpiredCreditAccount"),
263
- TransferAccount: cf.interface.getEventTopic("TransferAccount"),
264
- IncreaseBorrowedAmount: cf.interface.getEventTopic("IncreaseBorrowedAmount"),
265
- DecreaseBorrowedAmount: cf.interface.getEventTopic("DecreaseBorrowedAmount"),
266
- };
267
- return [4 /*yield*/, cf.queryFilter({
268
- address: cf.address,
269
- topics: [Object.values(topics)],
270
- }, undefined, toBlock)];
271
- case 1:
272
- logs = _a.sent();
273
- return [2 /*return*/, logs];
274
- }
275
- });
276
- });
277
- };
278
- CreditRewards.getRewardsRange = function (creditManager) {
279
- var rewardPerBlock = creditRewardParams_1.creditRewardsPerBlock[creditManager];
280
- if (!rewardPerBlock)
281
- throw new Error("Unknown credit manager token ".concat(creditManager));
282
- return rewardPerBlock;
283
- };
284
- return CreditRewards;
285
- }());
286
- exports.CreditRewards = CreditRewards;
@@ -1 +0,0 @@
1
- export {};
@@ -1,135 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var chai_1 = require("chai");
4
- var ethers_1 = require("ethers");
5
- var constants_1 = require("../core/constants");
6
- var creditRewards_1 = require("./creditRewards");
7
- var creditRewardsHelper_spec_1 = require("./creditRewardsHelper.spec");
8
- var range_1 = require("./range");
9
- describe("CreditRewards test", function () {
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
- ]);
25
- });
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
- ]);
134
- });
135
- });
@@ -1,67 +0,0 @@
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
- };
@@ -1,108 +0,0 @@
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
- });
@@ -1,9 +0,0 @@
1
- import { NetworkType } from "../core/constants";
2
- import { DieselTokenTypes } from "../tokens/gear";
3
- import { RangedValue } from "./range";
4
- export declare const poolRewardsPerBlock: Record<NetworkType, Record<DieselTokenTypes, RangedValue>>;
5
- export declare const GEAR_PER_BLOCK: Record<DieselTokenTypes, number>;
6
- export declare const GEAR_PER_BLOCK_GIP30: Record<DieselTokenTypes, number>;
7
- export declare const GOERLI_BLOCK = 7694030;
8
- export declare const MAINNET_BLOCK = 15820000;
9
- export declare const MAINNET_BLOCK_GIP30 = 15977000;
@@ -1,54 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MAINNET_BLOCK_GIP30 = exports.MAINNET_BLOCK = exports.GOERLI_BLOCK = exports.GEAR_PER_BLOCK_GIP30 = exports.GEAR_PER_BLOCK = exports.poolRewardsPerBlock = void 0;
4
- var ethers_1 = require("ethers");
5
- var range_1 = require("./range");
6
- exports.poolRewardsPerBlock = {
7
- Mainnet: {
8
- dDAI: new range_1.RangedValue(),
9
- dUSDC: new range_1.RangedValue(),
10
- dWETH: new range_1.RangedValue(),
11
- dWBTC: new range_1.RangedValue(),
12
- dwstETH: new range_1.RangedValue(),
13
- },
14
- Goerli: {
15
- dDAI: new range_1.RangedValue(),
16
- dUSDC: new range_1.RangedValue(),
17
- dWETH: new range_1.RangedValue(),
18
- dWBTC: new range_1.RangedValue(),
19
- dwstETH: new range_1.RangedValue(),
20
- },
21
- };
22
- exports.GEAR_PER_BLOCK = {
23
- dDAI: 2283,
24
- dUSDC: 2283,
25
- dWETH: 3196,
26
- dWBTC: 913,
27
- dwstETH: 1636,
28
- };
29
- exports.GEAR_PER_BLOCK_GIP30 = {
30
- dDAI: 2283,
31
- dUSDC: 3101,
32
- dWETH: 4014,
33
- dWBTC: 457,
34
- dwstETH: 0,
35
- };
36
- exports.GOERLI_BLOCK = 7694030;
37
- exports.poolRewardsPerBlock.Goerli.dDAI.addValue(exports.GOERLI_BLOCK, ethers_1.BigNumber.from(10).pow(18).mul(exports.GEAR_PER_BLOCK.dDAI).div(100));
38
- exports.poolRewardsPerBlock.Goerli.dUSDC.addValue(exports.GOERLI_BLOCK, ethers_1.BigNumber.from(10).pow(18).mul(exports.GEAR_PER_BLOCK.dUSDC).div(100));
39
- exports.poolRewardsPerBlock.Goerli.dWETH.addValue(exports.GOERLI_BLOCK, ethers_1.BigNumber.from(10).pow(18).mul(exports.GEAR_PER_BLOCK.dWETH).div(100));
40
- exports.poolRewardsPerBlock.Goerli.dWBTC.addValue(exports.GOERLI_BLOCK, ethers_1.BigNumber.from(10).pow(18).mul(exports.GEAR_PER_BLOCK.dWBTC).div(100));
41
- exports.poolRewardsPerBlock.Goerli.dwstETH.addValue(exports.GOERLI_BLOCK, ethers_1.BigNumber.from(10).pow(18).mul(exports.GEAR_PER_BLOCK.dwstETH).div(100));
42
- exports.MAINNET_BLOCK = 15820000;
43
- exports.poolRewardsPerBlock.Mainnet.dDAI.addValue(exports.MAINNET_BLOCK, ethers_1.BigNumber.from(10).pow(18).mul(exports.GEAR_PER_BLOCK.dDAI).div(100));
44
- exports.poolRewardsPerBlock.Mainnet.dUSDC.addValue(exports.MAINNET_BLOCK, ethers_1.BigNumber.from(10).pow(18).mul(exports.GEAR_PER_BLOCK.dUSDC).div(100));
45
- exports.poolRewardsPerBlock.Mainnet.dWETH.addValue(exports.MAINNET_BLOCK, ethers_1.BigNumber.from(10).pow(18).mul(exports.GEAR_PER_BLOCK.dWETH).div(100));
46
- exports.poolRewardsPerBlock.Mainnet.dWBTC.addValue(exports.MAINNET_BLOCK, ethers_1.BigNumber.from(10).pow(18).mul(exports.GEAR_PER_BLOCK.dWBTC).div(100));
47
- exports.poolRewardsPerBlock.Mainnet.dwstETH.addValue(exports.MAINNET_BLOCK, ethers_1.BigNumber.from(10).pow(18).mul(exports.GEAR_PER_BLOCK.dwstETH).div(100));
48
- // poolRewardsPerBlock.Goerli.dDAI.addValue(90000, BigNumber.from(0));
49
- exports.MAINNET_BLOCK_GIP30 = 15977000;
50
- exports.poolRewardsPerBlock.Mainnet.dDAI.addValue(exports.MAINNET_BLOCK_GIP30, ethers_1.BigNumber.from(10).pow(18).mul(exports.GEAR_PER_BLOCK_GIP30.dDAI).div(100));
51
- exports.poolRewardsPerBlock.Mainnet.dUSDC.addValue(exports.MAINNET_BLOCK_GIP30, ethers_1.BigNumber.from(10).pow(18).mul(exports.GEAR_PER_BLOCK_GIP30.dUSDC).div(100));
52
- exports.poolRewardsPerBlock.Mainnet.dWETH.addValue(exports.MAINNET_BLOCK_GIP30, ethers_1.BigNumber.from(10).pow(18).mul(exports.GEAR_PER_BLOCK_GIP30.dWETH).div(100));
53
- exports.poolRewardsPerBlock.Mainnet.dWBTC.addValue(exports.MAINNET_BLOCK_GIP30, ethers_1.BigNumber.from(10).pow(18).mul(exports.GEAR_PER_BLOCK_GIP30.dWBTC).div(100));
54
- exports.poolRewardsPerBlock.Mainnet.dwstETH.addValue(exports.MAINNET_BLOCK_GIP30, ethers_1.BigNumber.from(10).pow(18).mul(exports.GEAR_PER_BLOCK_GIP30.dwstETH).div(100));
@@ -1,15 +0,0 @@
1
- import { BigNumber, providers } from "ethers";
2
- import { NetworkType } from "../core/constants";
3
- import { TransferEvent } from "../types/@gearbox-protocol/core-v2/contracts/interfaces/IPhantomERC20";
4
- import { RangedValue } from "./range";
5
- export interface Reward {
6
- address: string;
7
- amount: BigNumber;
8
- }
9
- export declare class PoolRewards {
10
- static computeReward(dieselToken: string, address: string, provider: providers.Provider, networkType: NetworkType, toBlock?: number): Promise<BigNumber>;
11
- static computeAllRewards(dieselToken: string, provider: providers.Provider, networkType: NetworkType, toBlock?: number): Promise<Array<Reward>>;
12
- static computeRewardInt(toBlock: number, balance: RangedValue, totalSupply: RangedValue, rewardPerBlock: RangedValue): BigNumber;
13
- protected static query(dieselToken: string, provider: providers.Provider, toBlock: number): Promise<Array<TransferEvent>>;
14
- protected static getRewardsRange(dieselToken: string, networkType: NetworkType): RangedValue;
15
- }
@@ -1,203 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (_) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
39
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
40
- if (ar || !(i in from)) {
41
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
42
- ar[i] = from[i];
43
- }
44
- }
45
- return to.concat(ar || Array.prototype.slice.call(from));
46
- };
47
- Object.defineProperty(exports, "__esModule", { value: true });
48
- exports.PoolRewards = void 0;
49
- var ethers_1 = require("ethers");
50
- var constants_1 = require("../core/constants");
51
- var token_1 = require("../tokens/token");
52
- var types_1 = require("../types");
53
- var poolRewardParams_1 = require("./poolRewardParams");
54
- var range_1 = require("./range");
55
- var PoolRewards = /** @class */ (function () {
56
- function PoolRewards() {
57
- }
58
- PoolRewards.computeReward = function (dieselToken, address, provider, networkType, toBlock) {
59
- return __awaiter(this, void 0, void 0, function () {
60
- var toBlockQuery, _a, query, balanceRange, totalSupplyRange, rewardPerBlock, addrLC, totalSupply, balance;
61
- return __generator(this, function (_b) {
62
- switch (_b.label) {
63
- case 0:
64
- _a = toBlock;
65
- if (_a) return [3 /*break*/, 2];
66
- return [4 /*yield*/, provider.getBlockNumber()];
67
- case 1:
68
- _a = (_b.sent());
69
- _b.label = 2;
70
- case 2:
71
- toBlockQuery = _a;
72
- return [4 /*yield*/, PoolRewards.query(dieselToken, provider, toBlockQuery)];
73
- case 3:
74
- query = _b.sent();
75
- balanceRange = new range_1.RangedValue();
76
- totalSupplyRange = new range_1.RangedValue();
77
- rewardPerBlock = PoolRewards.getRewardsRange(dieselToken, networkType);
78
- addrLC = address.toLowerCase();
79
- totalSupply = ethers_1.BigNumber.from(0);
80
- balance = ethers_1.BigNumber.from(0);
81
- query.forEach(function (e) {
82
- var from = e.args.from.toLowerCase();
83
- if (from === constants_1.ADDRESS_0X0) {
84
- totalSupply = totalSupply.add(e.args.value);
85
- totalSupplyRange.addValue(e.blockNumber, totalSupply);
86
- }
87
- else if (from === addrLC) {
88
- balance = balance.sub(e.args.value);
89
- balanceRange.addValue(e.blockNumber, balance);
90
- }
91
- var to = e.args.to.toLowerCase();
92
- if (to === constants_1.ADDRESS_0X0) {
93
- totalSupply = totalSupply.sub(e.args.value);
94
- totalSupplyRange.addValue(e.blockNumber, totalSupply);
95
- }
96
- else if (to === addrLC) {
97
- balance = balance.add(e.args.value);
98
- balanceRange.addValue(e.blockNumber, balance);
99
- }
100
- });
101
- return [2 /*return*/, PoolRewards.computeRewardInt(toBlockQuery, balanceRange, totalSupplyRange, rewardPerBlock)];
102
- }
103
- });
104
- });
105
- };
106
- PoolRewards.computeAllRewards = function (dieselToken, provider, networkType, toBlock) {
107
- return __awaiter(this, void 0, void 0, function () {
108
- var toBlockQuery, _a, query, totalSupplyRange, rewardPerBlock, balancesRange, totalSupply, balances;
109
- return __generator(this, function (_b) {
110
- switch (_b.label) {
111
- case 0:
112
- _a = toBlock;
113
- if (_a) return [3 /*break*/, 2];
114
- return [4 /*yield*/, provider.getBlockNumber()];
115
- case 1:
116
- _a = (_b.sent());
117
- _b.label = 2;
118
- case 2:
119
- toBlockQuery = _a;
120
- return [4 /*yield*/, PoolRewards.query(dieselToken, provider, toBlockQuery)];
121
- case 3:
122
- query = _b.sent();
123
- totalSupplyRange = new range_1.RangedValue();
124
- rewardPerBlock = PoolRewards.getRewardsRange(dieselToken, networkType);
125
- balancesRange = {};
126
- totalSupply = ethers_1.BigNumber.from(0);
127
- balances = {};
128
- query
129
- .filter(function (e) { return !e.args.value.isZero(); })
130
- .forEach(function (e) {
131
- var from = e.args.from.toLowerCase();
132
- if (from === constants_1.ADDRESS_0X0) {
133
- totalSupply = totalSupply.add(e.args.value);
134
- totalSupplyRange.addValue(e.blockNumber, totalSupply);
135
- }
136
- else {
137
- balances[from] = balances[from].sub(e.args.value);
138
- balancesRange[from].addValue(e.blockNumber, balances[from]);
139
- }
140
- var to = e.args.to.toLowerCase();
141
- if (to === constants_1.ADDRESS_0X0) {
142
- totalSupply = totalSupply.sub(e.args.value);
143
- totalSupplyRange.addValue(e.blockNumber, totalSupply);
144
- }
145
- else {
146
- if (!balances[to]) {
147
- balances[to] = ethers_1.BigNumber.from(0);
148
- balancesRange[to] = new range_1.RangedValue();
149
- }
150
- balances[to] = balances[to].add(e.args.value);
151
- balancesRange[to].addValue(e.blockNumber, balances[to]);
152
- }
153
- });
154
- return [2 /*return*/, Object.keys(balances).map(function (address) { return ({
155
- address: address,
156
- amount: PoolRewards.computeRewardInt(toBlockQuery, balancesRange[address], totalSupplyRange, rewardPerBlock),
157
- }); })];
158
- }
159
- });
160
- });
161
- };
162
- PoolRewards.computeRewardInt = function (toBlock, balance, totalSupply, rewardPerBlock) {
163
- var keys = Array.from(new Set(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], balance.keys, true), totalSupply.keys, true), rewardPerBlock.keys, true), [
164
- toBlock,
165
- ], false))).sort(function (a, b) { return (a > b ? 1 : -1); });
166
- var total = ethers_1.BigNumber.from(0);
167
- var balancesArr = balance.getValues(keys);
168
- var totalSupplyArr = totalSupply.getValues(keys);
169
- var rewardsArr = rewardPerBlock.getValues(keys);
170
- for (var i = 0; i < keys.length; i++) {
171
- var curBlock = keys[i];
172
- var nextBlock = i === keys.length - 1 ? toBlock : keys[i + 1];
173
- if (!totalSupplyArr[i].isZero()) {
174
- total = total.add(balancesArr[i]
175
- .mul(nextBlock - curBlock)
176
- .mul(rewardsArr[i])
177
- .div(totalSupplyArr[i]));
178
- }
179
- }
180
- return total;
181
- };
182
- PoolRewards.query = function (dieselToken, provider, toBlock) {
183
- return __awaiter(this, void 0, void 0, function () {
184
- var token;
185
- return __generator(this, function (_a) {
186
- switch (_a.label) {
187
- case 0:
188
- token = types_1.IERC20__factory.connect(dieselToken, provider);
189
- return [4 /*yield*/, token.queryFilter(token.filters.Transfer(), 0, toBlock)];
190
- case 1: return [2 /*return*/, _a.sent()];
191
- }
192
- });
193
- });
194
- };
195
- PoolRewards.getRewardsRange = function (dieselToken, networkType) {
196
- var rewardPerBlock = poolRewardParams_1.poolRewardsPerBlock[networkType][token_1.tokenSymbolByAddress[dieselToken.toLowerCase()]];
197
- if (!rewardPerBlock)
198
- throw new Error("Unknown diesel token ".concat(dieselToken));
199
- return rewardPerBlock;
200
- };
201
- return PoolRewards;
202
- }());
203
- exports.PoolRewards = PoolRewards;
@@ -1 +0,0 @@
1
- export {};
@@ -1,57 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var chai_1 = require("chai");
4
- var ethers_1 = require("ethers");
5
- var poolRewards_1 = require("./poolRewards");
6
- var range_1 = require("./range");
7
- describe("PoolRewards 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);
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
- });
57
- });
@@ -1,12 +0,0 @@
1
- import { BigNumber } from "ethers";
2
- export declare class RangedValue {
3
- protected initialValue: BigNumber;
4
- protected data: Map<number, BigNumber>;
5
- protected _keys: Array<number>;
6
- constructor(initialValue?: BigNumber);
7
- addValue(from: number, value: BigNumber): void;
8
- getValue(at: number): BigNumber;
9
- getValues(sortedKeys: Array<number>): Array<BigNumber>;
10
- protected getMapValue(index: number): BigNumber;
11
- get keys(): Array<number>;
12
- }
@@ -1,81 +0,0 @@
1
- "use strict";
2
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
- if (ar || !(i in from)) {
5
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
- ar[i] = from[i];
7
- }
8
- }
9
- return to.concat(ar || Array.prototype.slice.call(from));
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.RangedValue = void 0;
13
- var ethers_1 = require("ethers");
14
- var RangedValue = /** @class */ (function () {
15
- function RangedValue(initialValue) {
16
- this.data = new Map();
17
- this._keys = [];
18
- this.initialValue = initialValue || ethers_1.BigNumber.from(0);
19
- }
20
- RangedValue.prototype.addValue = function (from, value) {
21
- this.data.set(from, value);
22
- this._keys = __spreadArray(__spreadArray([], this._keys, true), [from], false).sort(function (a, b) { return (a > b ? 1 : -1); });
23
- };
24
- RangedValue.prototype.getValue = function (at) {
25
- for (var _i = 0, _a = __spreadArray([], this._keys, true).reverse(); _i < _a.length; _i++) {
26
- var index = _a[_i];
27
- if (at >= index) {
28
- var value = this.data.get(index);
29
- if (!value)
30
- throw new Error("Unexpectedly cant find a value with index ".concat(index));
31
- return value;
32
- }
33
- }
34
- return this.initialValue;
35
- };
36
- RangedValue.prototype.getValues = function (sortedKeys) {
37
- var lastElm = this._keys.length - 1;
38
- var ownKeyIndex = lastElm;
39
- var result = [];
40
- for (var _i = 0, _a = __spreadArray([], sortedKeys, true).reverse(); _i < _a.length; _i++) {
41
- var sk = _a[_i];
42
- if (sk < this._keys[0]) {
43
- result.push(this.initialValue);
44
- }
45
- else if (sk > this._keys[lastElm]) {
46
- result.push(this.getMapValue(this._keys[lastElm]));
47
- }
48
- else {
49
- if (sk < this._keys[ownKeyIndex]) {
50
- for (; ownKeyIndex >= 0; ownKeyIndex--) {
51
- if (sk >= this._keys[ownKeyIndex])
52
- break;
53
- }
54
- }
55
- result.push(this.getMapValue(this._keys[ownKeyIndex]));
56
- }
57
- }
58
- return result.reverse();
59
- };
60
- RangedValue.prototype.getMapValue = function (index) {
61
- var value = this.data.get(index);
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
- }
70
- return value;
71
- };
72
- Object.defineProperty(RangedValue.prototype, "keys", {
73
- get: function () {
74
- return this._keys;
75
- },
76
- enumerable: false,
77
- configurable: true
78
- });
79
- return RangedValue;
80
- }());
81
- exports.RangedValue = RangedValue;
@@ -1 +0,0 @@
1
- export {};
@@ -1,29 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var chai_1 = require("chai");
4
- var ethers_1 = require("ethers");
5
- var range_1 = require("./range");
6
- describe("RangedValue test", function () {
7
- it("addValue and getValue works correctly", function () {
8
- var r = new range_1.RangedValue(ethers_1.BigNumber.from(5));
9
- (0, chai_1.expect)(r.getValue(5).toNumber()).to.be.eq(5);
10
- r.addValue(100, ethers_1.BigNumber.from(8));
11
- r.addValue(10, ethers_1.BigNumber.from(18));
12
- (0, chai_1.expect)(r.getValue(9).toNumber()).to.be.eq(5);
13
- (0, chai_1.expect)(r.getValue(10).toNumber()).to.be.eq(18);
14
- (0, chai_1.expect)(r.getValue(1000).toNumber()).to.be.eq(8);
15
- (0, chai_1.expect)(r.keys).to.be.eql([10, 100]);
16
- });
17
- it("getValues works correctly", function () {
18
- var r = new range_1.RangedValue();
19
- r.addValue(4, ethers_1.BigNumber.from(3));
20
- r.addValue(2, ethers_1.BigNumber.from(5));
21
- r.addValue(10, ethers_1.BigNumber.from(1));
22
- r.addValue(6, ethers_1.BigNumber.from(8));
23
- r.addValue(8, ethers_1.BigNumber.from(7));
24
- var keys = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
25
- var expected = [0, 0, 5, 5, 3, 3, 8, 8, 7, 7, 1, 1];
26
- var result = r.getValues(keys).map(function (e) { return e.toNumber(); });
27
- (0, chai_1.expect)(result).to.be.eql(expected);
28
- });
29
- });