@across-protocol/sdk 4.3.113 → 4.3.114-alpha.0

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.
Files changed (158) hide show
  1. package/dist/cjs/arch/svm/SpokeUtils.d.ts +16 -23
  2. package/dist/cjs/arch/svm/SpokeUtils.js.map +1 -1
  3. package/dist/cjs/arch/svm/utils.d.ts +3 -8
  4. package/dist/cjs/arch/svm/utils.js.map +1 -1
  5. package/dist/cjs/gasPriceOracle/adapters/solana.js.map +1 -1
  6. package/dist/cjs/index.d.ts +0 -1
  7. package/dist/cjs/index.js +1 -2
  8. package/dist/cjs/index.js.map +1 -1
  9. package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.d.ts +3 -3
  10. package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.js +1 -1
  11. package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.js.map +1 -1
  12. package/dist/esm/arch/svm/SpokeUtils.d.ts +16 -23
  13. package/dist/esm/arch/svm/SpokeUtils.js.map +1 -1
  14. package/dist/esm/arch/svm/utils.d.ts +3 -8
  15. package/dist/esm/arch/svm/utils.js.map +1 -1
  16. package/dist/esm/gasPriceOracle/adapters/solana.js +1 -1
  17. package/dist/esm/gasPriceOracle/adapters/solana.js.map +1 -1
  18. package/dist/esm/index.d.ts +0 -1
  19. package/dist/esm/index.js +0 -2
  20. package/dist/esm/index.js.map +1 -1
  21. package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.d.ts +3 -3
  22. package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.js +3 -3
  23. package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.js.map +1 -1
  24. package/dist/types/arch/svm/SpokeUtils.d.ts +16 -23
  25. package/dist/types/arch/svm/SpokeUtils.d.ts.map +1 -1
  26. package/dist/types/arch/svm/utils.d.ts +3 -8
  27. package/dist/types/arch/svm/utils.d.ts.map +1 -1
  28. package/dist/types/gasPriceOracle/adapters/solana.d.ts.map +1 -1
  29. package/dist/types/index.d.ts +0 -1
  30. package/dist/types/index.d.ts.map +1 -1
  31. package/dist/types/relayFeeCalculator/chain-queries/svmQuery.d.ts +3 -3
  32. package/dist/types/relayFeeCalculator/chain-queries/svmQuery.d.ts.map +1 -1
  33. package/package.json +17 -8
  34. package/src/arch/svm/SpokeUtils.ts +25 -24
  35. package/src/arch/svm/utils.ts +6 -3
  36. package/src/gasPriceOracle/adapters/solana.ts +8 -3
  37. package/src/index.ts +0 -1
  38. package/src/relayFeeCalculator/chain-queries/svmQuery.ts +5 -5
  39. package/dist/cjs/pool/TransactionManager.d.ts +0 -12
  40. package/dist/cjs/pool/TransactionManager.js +0 -121
  41. package/dist/cjs/pool/TransactionManager.js.map +0 -1
  42. package/dist/cjs/pool/index.d.ts +0 -1
  43. package/dist/cjs/pool/index.js +0 -5
  44. package/dist/cjs/pool/index.js.map +0 -1
  45. package/dist/cjs/pool/poolClient.d.ts +0 -228
  46. package/dist/cjs/pool/poolClient.js +0 -869
  47. package/dist/cjs/pool/poolClient.js.map +0 -1
  48. package/dist/cjs/pool/uma/across/constants.d.ts +0 -2
  49. package/dist/cjs/pool/uma/across/constants.js +0 -6
  50. package/dist/cjs/pool/uma/across/constants.js.map +0 -1
  51. package/dist/cjs/pool/uma/across/index.d.ts +0 -2
  52. package/dist/cjs/pool/uma/across/index.js +0 -8
  53. package/dist/cjs/pool/uma/across/index.js.map +0 -1
  54. package/dist/cjs/pool/uma/across/transactionManager.d.ts +0 -12
  55. package/dist/cjs/pool/uma/across/transactionManager.js +0 -121
  56. package/dist/cjs/pool/uma/across/transactionManager.js.map +0 -1
  57. package/dist/cjs/pool/uma/clients/erc20/client.d.ts +0 -26
  58. package/dist/cjs/pool/uma/clients/erc20/client.js +0 -38
  59. package/dist/cjs/pool/uma/clients/erc20/client.js.map +0 -1
  60. package/dist/cjs/pool/uma/clients/erc20/index.d.ts +0 -1
  61. package/dist/cjs/pool/uma/clients/erc20/index.js +0 -5
  62. package/dist/cjs/pool/uma/clients/erc20/index.js.map +0 -1
  63. package/dist/cjs/pool/uma/clients/index.d.ts +0 -1
  64. package/dist/cjs/pool/uma/clients/index.js +0 -6
  65. package/dist/cjs/pool/uma/clients/index.js.map +0 -1
  66. package/dist/cjs/pool/uma/index.d.ts +0 -13
  67. package/dist/cjs/pool/uma/index.js +0 -9
  68. package/dist/cjs/pool/uma/index.js.map +0 -1
  69. package/dist/cjs/pool/uma/oracle/index.d.ts +0 -1
  70. package/dist/cjs/pool/uma/oracle/index.js +0 -6
  71. package/dist/cjs/pool/uma/oracle/index.js.map +0 -1
  72. package/dist/cjs/pool/uma/oracle/utils.d.ts +0 -7
  73. package/dist/cjs/pool/uma/oracle/utils.js +0 -20
  74. package/dist/cjs/pool/uma/oracle/utils.js.map +0 -1
  75. package/dist/cjs/pool/uma/utils.d.ts +0 -17
  76. package/dist/cjs/pool/uma/utils.js +0 -69
  77. package/dist/cjs/pool/uma/utils.js.map +0 -1
  78. package/dist/esm/pool/TransactionManager.d.ts +0 -12
  79. package/dist/esm/pool/TransactionManager.js +0 -122
  80. package/dist/esm/pool/TransactionManager.js.map +0 -1
  81. package/dist/esm/pool/index.d.ts +0 -1
  82. package/dist/esm/pool/index.js +0 -2
  83. package/dist/esm/pool/index.js.map +0 -1
  84. package/dist/esm/pool/poolClient.d.ts +0 -238
  85. package/dist/esm/pool/poolClient.js +0 -899
  86. package/dist/esm/pool/poolClient.js.map +0 -1
  87. package/dist/esm/pool/uma/across/constants.d.ts +0 -2
  88. package/dist/esm/pool/uma/across/constants.js +0 -3
  89. package/dist/esm/pool/uma/across/constants.js.map +0 -1
  90. package/dist/esm/pool/uma/across/index.d.ts +0 -2
  91. package/dist/esm/pool/uma/across/index.js +0 -4
  92. package/dist/esm/pool/uma/across/index.js.map +0 -1
  93. package/dist/esm/pool/uma/across/transactionManager.d.ts +0 -12
  94. package/dist/esm/pool/uma/across/transactionManager.js +0 -122
  95. package/dist/esm/pool/uma/across/transactionManager.js.map +0 -1
  96. package/dist/esm/pool/uma/clients/erc20/client.d.ts +0 -26
  97. package/dist/esm/pool/uma/clients/erc20/client.js +0 -35
  98. package/dist/esm/pool/uma/clients/erc20/client.js.map +0 -1
  99. package/dist/esm/pool/uma/clients/erc20/index.d.ts +0 -1
  100. package/dist/esm/pool/uma/clients/erc20/index.js +0 -2
  101. package/dist/esm/pool/uma/clients/erc20/index.js.map +0 -1
  102. package/dist/esm/pool/uma/clients/index.d.ts +0 -1
  103. package/dist/esm/pool/uma/clients/index.js +0 -3
  104. package/dist/esm/pool/uma/clients/index.js.map +0 -1
  105. package/dist/esm/pool/uma/index.d.ts +0 -13
  106. package/dist/esm/pool/uma/index.js +0 -9
  107. package/dist/esm/pool/uma/index.js.map +0 -1
  108. package/dist/esm/pool/uma/oracle/index.d.ts +0 -1
  109. package/dist/esm/pool/uma/oracle/index.js +0 -3
  110. package/dist/esm/pool/uma/oracle/index.js.map +0 -1
  111. package/dist/esm/pool/uma/oracle/utils.d.ts +0 -23
  112. package/dist/esm/pool/uma/oracle/utils.js +0 -33
  113. package/dist/esm/pool/uma/oracle/utils.js.map +0 -1
  114. package/dist/esm/pool/uma/utils.d.ts +0 -17
  115. package/dist/esm/pool/uma/utils.js +0 -68
  116. package/dist/esm/pool/uma/utils.js.map +0 -1
  117. package/dist/types/pool/TransactionManager.d.ts +0 -13
  118. package/dist/types/pool/TransactionManager.d.ts.map +0 -1
  119. package/dist/types/pool/index.d.ts +0 -2
  120. package/dist/types/pool/index.d.ts.map +0 -1
  121. package/dist/types/pool/poolClient.d.ts +0 -239
  122. package/dist/types/pool/poolClient.d.ts.map +0 -1
  123. package/dist/types/pool/uma/across/constants.d.ts +0 -3
  124. package/dist/types/pool/uma/across/constants.d.ts.map +0 -1
  125. package/dist/types/pool/uma/across/index.d.ts +0 -3
  126. package/dist/types/pool/uma/across/index.d.ts.map +0 -1
  127. package/dist/types/pool/uma/across/transactionManager.d.ts +0 -13
  128. package/dist/types/pool/uma/across/transactionManager.d.ts.map +0 -1
  129. package/dist/types/pool/uma/clients/erc20/client.d.ts +0 -27
  130. package/dist/types/pool/uma/clients/erc20/client.d.ts.map +0 -1
  131. package/dist/types/pool/uma/clients/erc20/index.d.ts +0 -2
  132. package/dist/types/pool/uma/clients/erc20/index.d.ts.map +0 -1
  133. package/dist/types/pool/uma/clients/index.d.ts +0 -2
  134. package/dist/types/pool/uma/clients/index.d.ts.map +0 -1
  135. package/dist/types/pool/uma/index.d.ts +0 -14
  136. package/dist/types/pool/uma/index.d.ts.map +0 -1
  137. package/dist/types/pool/uma/oracle/index.d.ts +0 -2
  138. package/dist/types/pool/uma/oracle/index.d.ts.map +0 -1
  139. package/dist/types/pool/uma/oracle/utils.d.ts +0 -24
  140. package/dist/types/pool/uma/oracle/utils.d.ts.map +0 -1
  141. package/dist/types/pool/uma/utils.d.ts +0 -18
  142. package/dist/types/pool/uma/utils.d.ts.map +0 -1
  143. package/src/pool/TransactionManager.ts +0 -73
  144. package/src/pool/index.ts +0 -1
  145. package/src/pool/poolClient.ts +0 -849
  146. package/src/pool/uma/across/constants.ts +0 -2
  147. package/src/pool/uma/across/index.ts +0 -2
  148. package/src/pool/uma/across/transactionManager.ts +0 -73
  149. package/src/pool/uma/clients/erc20/README.md +0 -29
  150. package/src/pool/uma/clients/erc20/client.e2e.ts +0 -26
  151. package/src/pool/uma/clients/erc20/client.ts +0 -67
  152. package/src/pool/uma/clients/erc20/index.ts +0 -1
  153. package/src/pool/uma/clients/index.ts +0 -1
  154. package/src/pool/uma/index.ts +0 -33
  155. package/src/pool/uma/oracle/index.ts +0 -2
  156. package/src/pool/uma/oracle/utils.ts +0 -38
  157. package/src/pool/uma/utils.test.ts +0 -24
  158. package/src/pool/uma/utils.ts +0 -53
@@ -1,869 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Client = exports.ReadPoolClient = exports.PoolEventState = void 0;
4
- exports.calculateRemoval = calculateRemoval;
5
- exports.previewRemoval = previewRemoval;
6
- exports.validateWithdraw = validateWithdraw;
7
- var tslib_1 = require("tslib");
8
- var assert_1 = tslib_1.__importDefault(require("assert"));
9
- var uma = tslib_1.__importStar(require("./uma"));
10
- var utils_1 = require("../utils");
11
- var ethers_1 = require("ethers");
12
- var set_1 = tslib_1.__importDefault(require("lodash/set"));
13
- var get_1 = tslib_1.__importDefault(require("lodash/get"));
14
- var has_1 = tslib_1.__importDefault(require("lodash/has"));
15
- var lpFeeCalculator_1 = require("../lpFeeCalculator");
16
- var contracts_1 = require("../contracts");
17
- var typechain_1 = require("../typechain");
18
- var erc20 = uma.clients.erc20;
19
- var loop = uma.utils.loop;
20
- var TransactionManager = uma.across.TransactionManager;
21
- var _a = uma.across.constants, SECONDS_PER_YEAR = _a.SECONDS_PER_YEAR, DEFAULT_BLOCK_DELTA = _a.DEFAULT_BLOCK_DELTA;
22
- var AddressZero = ethers_1.ethers.constants.AddressZero;
23
- var PoolState = (function () {
24
- function PoolState(contract, address) {
25
- this.contract = contract;
26
- this.address = address;
27
- }
28
- PoolState.prototype.read = function (l1Token, latestBlock, previousBlock) {
29
- return tslib_1.__awaiter(this, void 0, void 0, function () {
30
- var exchangeRatePrevious, exchangeRateCurrent, pooledToken, liquidityUtilizationCurrent;
31
- return tslib_1.__generator(this, function (_a) {
32
- switch (_a.label) {
33
- case 0: return [4, this.exchangeRateAtBlock(l1Token, previousBlock || latestBlock - 1)];
34
- case 1:
35
- exchangeRatePrevious = _a.sent();
36
- return [4, this.contract.callStatic.exchangeRateCurrent(l1Token)];
37
- case 2:
38
- exchangeRateCurrent = _a.sent();
39
- return [4, this.contract.pooledTokens(l1Token)];
40
- case 3:
41
- pooledToken = _a.sent();
42
- return [4, this.contract.callStatic.liquidityUtilizationCurrent(l1Token)];
43
- case 4:
44
- liquidityUtilizationCurrent = _a.sent();
45
- return [2, tslib_1.__assign({ address: this.address, l1Token: l1Token, latestBlock: latestBlock, previousBlock: previousBlock, exchangeRatePrevious: exchangeRatePrevious, exchangeRateCurrent: exchangeRateCurrent, liquidityUtilizationCurrent: liquidityUtilizationCurrent }, pooledToken)];
46
- }
47
- });
48
- });
49
- };
50
- PoolState.prototype.exchangeRateAtBlock = function (l1Token, blockTag) {
51
- return this.contract.callStatic.exchangeRateCurrent(l1Token, { blockTag: blockTag });
52
- };
53
- return PoolState;
54
- }());
55
- var PoolEventState = (function () {
56
- function PoolEventState(contract, startBlock) {
57
- if (startBlock === void 0) { startBlock = 0; }
58
- var _this = this;
59
- this.contract = contract;
60
- this.startBlock = startBlock;
61
- this.seen = new Set();
62
- this.events = [];
63
- this.makeId = function (params) {
64
- return uma.oracle.utils.eventKey(params);
65
- };
66
- this.filterSeen = function (params) {
67
- var seen = _this.hasEvent(params);
68
- if (!seen)
69
- _this.addEvent(params);
70
- return !seen;
71
- };
72
- this.processEvent = function (event) {
73
- if (!_this.filterSeen(event))
74
- return;
75
- _this.events = uma.oracle.utils.insertOrderedAscending(_this.events, event, _this.makeId);
76
- };
77
- this.processEvents = function (events) {
78
- events.forEach(_this.processEvent);
79
- };
80
- this.makeEventFromLog = function (log) {
81
- var description = _this.iface.parseLog(log);
82
- return tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, log), description), { event: description.name, eventSignature: description.signature });
83
- };
84
- this.iface = new ethers_1.ethers.utils.Interface(contracts_1.hubPool.Factory.abi);
85
- }
86
- PoolEventState.prototype.hasEvent = function (params) {
87
- return this.seen.has(this.makeId(params));
88
- };
89
- PoolEventState.prototype.addEvent = function (params) {
90
- this.seen.add(this.makeId(params));
91
- };
92
- PoolEventState.prototype.read = function (endBlock, l1TokenAddress, userAddress) {
93
- return tslib_1.__awaiter(this, void 0, void 0, function () {
94
- var events, _a, _b, _c, _d;
95
- return tslib_1.__generator(this, function (_e) {
96
- switch (_e.label) {
97
- case 0:
98
- _b = (_a = Promise).all;
99
- _c = [[]];
100
- return [4, this.contract.queryFilter(this.contract.filters.LiquidityAdded(l1TokenAddress, undefined, undefined, userAddress), this.startBlock, endBlock)];
101
- case 1:
102
- _d = [tslib_1.__spreadArray.apply(void 0, _c.concat([(_e.sent()), true]))];
103
- return [4, this.contract.queryFilter(this.contract.filters.LiquidityRemoved(l1TokenAddress, undefined, undefined, userAddress), this.startBlock, endBlock)];
104
- case 2: return [4, _b.apply(_a, [tslib_1.__spreadArray.apply(void 0, _d.concat([(_e.sent()), true]))])];
105
- case 3:
106
- events = _e.sent();
107
- this.processEvents(events);
108
- return [2, contracts_1.hubPool.getEventState(this.events)];
109
- }
110
- });
111
- });
112
- };
113
- PoolEventState.prototype.getL1TokenFromReceipt = function (receipt) {
114
- var _this = this;
115
- var events = receipt.logs
116
- .filter(function (log) { return ethers_1.ethers.utils.getAddress(log.address) === ethers_1.ethers.utils.getAddress(_this.contract.address); })
117
- .map(this.makeEventFromLog);
118
- this.processEvents(events);
119
- var eventState = contracts_1.hubPool.getEventState(events);
120
- var l1Tokens = Object.keys(eventState);
121
- (0, assert_1.default)(l1Tokens.length, "Token not found from events");
122
- (0, assert_1.default)(l1Tokens.length === 1, "Multiple tokens found from events");
123
- return l1Tokens[0];
124
- };
125
- PoolEventState.prototype.readTxReceipt = function (receipt) {
126
- var _this = this;
127
- var events = receipt.logs
128
- .filter(function (log) { return ethers_1.ethers.utils.getAddress(log.address) === ethers_1.ethers.utils.getAddress(_this.contract.address); })
129
- .map(this.makeEventFromLog);
130
- this.processEvents(events);
131
- return contracts_1.hubPool.getEventState(this.events);
132
- };
133
- return PoolEventState;
134
- }());
135
- exports.PoolEventState = PoolEventState;
136
- var UserState = (function () {
137
- function UserState(contract, userAddress, startBlock, acceleratingDistributorContractAddress) {
138
- if (startBlock === void 0) { startBlock = 0; }
139
- if (acceleratingDistributorContractAddress === void 0) { acceleratingDistributorContractAddress = ""; }
140
- var _this = this;
141
- this.contract = contract;
142
- this.userAddress = userAddress;
143
- this.startBlock = startBlock;
144
- this.acceleratingDistributorContractAddress = acceleratingDistributorContractAddress;
145
- this.seen = new Set();
146
- this.events = [];
147
- this.filterSeen = function (params) {
148
- var seen = _this.hasEvent(params);
149
- if (!seen)
150
- _this.addEvent(params);
151
- return !seen;
152
- };
153
- }
154
- UserState.prototype.makeId = function (params) {
155
- return uma.oracle.utils.eventKey(params);
156
- };
157
- UserState.prototype.hasEvent = function (params) {
158
- return this.seen.has(this.makeId(params));
159
- };
160
- UserState.prototype.addEvent = function (params) {
161
- this.seen.add(this.makeId(params));
162
- };
163
- UserState.prototype.readEvents = function (endBlock) {
164
- return tslib_1.__awaiter(this, void 0, void 0, function () {
165
- var userAddress, events, _a, _b, _c, _d;
166
- var _this = this;
167
- return tslib_1.__generator(this, function (_e) {
168
- switch (_e.label) {
169
- case 0:
170
- if (endBlock <= this.startBlock)
171
- return [2, []];
172
- userAddress = this.userAddress;
173
- _b = (_a = Promise).all;
174
- _c = [[]];
175
- return [4, this.contract.queryFilter(this.contract.filters.Transfer(userAddress, undefined), this.startBlock, endBlock)];
176
- case 1:
177
- _d = [tslib_1.__spreadArray.apply(void 0, _c.concat([(_e.sent()), true]))];
178
- return [4, this.contract.queryFilter(this.contract.filters.Transfer(undefined, userAddress), this.startBlock, endBlock)];
179
- case 2: return [4, _b.apply(_a, [tslib_1.__spreadArray.apply(void 0, _d.concat([(_e.sent()), true]))])];
180
- case 3:
181
- events = (_e.sent())
182
- .filter(this.filterSeen)
183
- .filter(function (event) {
184
- return event.args.from !== AddressZero &&
185
- event.args.to !== AddressZero &&
186
- event.args.to !== _this.acceleratingDistributorContractAddress &&
187
- event.args.from !== _this.acceleratingDistributorContractAddress &&
188
- event.args.from !== event.args.to;
189
- })
190
- .flat();
191
- this.events = this.events.concat(events).sort(function (a, b) {
192
- if (a.blockNumber !== b.blockNumber)
193
- return a.blockNumber - b.blockNumber;
194
- if (a.transactionIndex !== b.transactionIndex)
195
- return a.transactionIndex - b.transactionIndex;
196
- if (a.logIndex !== b.logIndex)
197
- return a.logIndex - b.logIndex;
198
- throw new Error("Duplicate events at tx hash: " + a.transactionHash);
199
- });
200
- this.startBlock = endBlock + 1;
201
- return [2, this.events];
202
- }
203
- });
204
- });
205
- };
206
- UserState.prototype.read = function (endBlock) {
207
- return tslib_1.__awaiter(this, void 0, void 0, function () {
208
- var userAddress, transferEvents, state, balanceTransferred;
209
- var _a;
210
- var _b;
211
- return tslib_1.__generator(this, function (_c) {
212
- switch (_c.label) {
213
- case 0:
214
- userAddress = this.userAddress;
215
- return [4, this.readEvents(endBlock)];
216
- case 1:
217
- transferEvents = _c.sent();
218
- state = uma.clients.erc20.getEventState(transferEvents);
219
- balanceTransferred = ((_b = state === null || state === void 0 ? void 0 : state.balances) === null || _b === void 0 ? void 0 : _b[userAddress]) || "0";
220
- _a = {
221
- transferEvents: transferEvents,
222
- balanceTransferred: balanceTransferred,
223
- address: userAddress
224
- };
225
- return [4, this.contract.balanceOf(userAddress)];
226
- case 2: return [2, (_a.balanceOf = _c.sent(),
227
- _a)];
228
- }
229
- });
230
- });
231
- };
232
- return UserState;
233
- }());
234
- function calculateRemoval(amountWei, percentWei) {
235
- var receive = amountWei.mul(percentWei).div(utils_1.fixedPointAdjustment);
236
- var remain = amountWei.sub(receive);
237
- return {
238
- receive: receive.toString(),
239
- remain: remain.toString(),
240
- };
241
- }
242
- function previewRemoval(values, percentFloat) {
243
- var percentWei = (0, utils_1.toBNWei)(percentFloat);
244
- return {
245
- position: tslib_1.__assign({}, calculateRemoval(utils_1.BigNumber.from(values.totalDeposited), percentWei)),
246
- fees: tslib_1.__assign({}, calculateRemoval(utils_1.BigNumber.from(values.feesEarned), percentWei)),
247
- total: tslib_1.__assign({}, calculateRemoval(utils_1.BigNumber.from(values.positionValue), percentWei)),
248
- };
249
- }
250
- function joinUserState(poolState, tokenEventState, userState, transferValue, cumulativeStakeBalance, cumulativeStakeClaimBalance) {
251
- if (transferValue === void 0) { transferValue = utils_1.bnZero; }
252
- if (cumulativeStakeBalance === void 0) { cumulativeStakeBalance = utils_1.bnZero; }
253
- if (cumulativeStakeClaimBalance === void 0) { cumulativeStakeClaimBalance = utils_1.bnZero; }
254
- var positionValue = utils_1.BigNumber.from(poolState.exchangeRateCurrent)
255
- .mul(userState.balanceOf.add(cumulativeStakeBalance))
256
- .div(utils_1.fixedPointAdjustment);
257
- var totalDeposited = utils_1.BigNumber.from((tokenEventState === null || tokenEventState === void 0 ? void 0 : tokenEventState.tokenBalances[userState.address]) || "0").add(cumulativeStakeClaimBalance);
258
- var feesEarned = positionValue.sub(totalDeposited.add(transferValue));
259
- return {
260
- address: userState.address,
261
- poolAddress: poolState.address,
262
- lpTokens: userState.balanceOf.toString(),
263
- positionValue: positionValue.toString(),
264
- totalDeposited: totalDeposited.toString(),
265
- feesEarned: feesEarned.toString(),
266
- };
267
- }
268
- function joinPoolState(poolState, latestBlock, previousBlock, rateModel) {
269
- var totalPoolSize = poolState.liquidReserves.add(poolState.utilizedReserves);
270
- var secondsElapsed = latestBlock.timestamp - previousBlock.timestamp;
271
- var blocksElapsed = latestBlock.number - previousBlock.number;
272
- var exchangeRatePrevious = poolState.exchangeRatePrevious.toString();
273
- var exchangeRateCurrent = poolState.exchangeRateCurrent.toString();
274
- var liquidityUtilizationCurrent = poolState.liquidityUtilizationCurrent.toString();
275
- var estimatedApy = (0, utils_1.calcPeriodicCompoundInterest)(exchangeRatePrevious, exchangeRateCurrent, secondsElapsed, SECONDS_PER_YEAR);
276
- var estimatedApr = (0, utils_1.calcApr)(exchangeRatePrevious, exchangeRateCurrent, secondsElapsed, SECONDS_PER_YEAR);
277
- var projectedApr = "";
278
- if (rateModel) {
279
- projectedApr = (0, utils_1.fromWei)((0, lpFeeCalculator_1.calculateInstantaneousRate)(rateModel, liquidityUtilizationCurrent)
280
- .mul(liquidityUtilizationCurrent)
281
- .div(utils_1.fixedPointAdjustment));
282
- }
283
- return {
284
- address: poolState.address,
285
- totalPoolSize: totalPoolSize.toString(),
286
- l1Token: poolState.l1Token,
287
- lpToken: poolState.lpToken,
288
- liquidReserves: poolState.liquidReserves.toString(),
289
- exchangeRateCurrent: poolState.exchangeRateCurrent.toString(),
290
- exchangeRatePrevious: poolState.exchangeRatePrevious.toString(),
291
- estimatedApy: estimatedApy,
292
- estimatedApr: estimatedApr,
293
- blocksElapsed: blocksElapsed,
294
- secondsElapsed: secondsElapsed,
295
- projectedApr: projectedApr,
296
- utilizedReserves: poolState.utilizedReserves.toString(),
297
- liquidityUtilizationCurrent: liquidityUtilizationCurrent,
298
- };
299
- }
300
- var ReadPoolClient = (function () {
301
- function ReadPoolClient(address, provider) {
302
- this.address = address;
303
- this.provider = provider;
304
- this.contract = contracts_1.hubPool.connect(address, this.provider);
305
- this.poolState = new PoolState(this.contract, this.address);
306
- }
307
- ReadPoolClient.prototype.read = function (tokenAddress, latestBlock) {
308
- return this.poolState.read(tokenAddress, latestBlock);
309
- };
310
- return ReadPoolClient;
311
- }());
312
- exports.ReadPoolClient = ReadPoolClient;
313
- function validateWithdraw(pool, user, lpTokenAmount) {
314
- var l1TokensToReturn = utils_1.BigNumber.from(lpTokenAmount).mul(pool.exchangeRateCurrent).div(utils_1.fixedPointAdjustment);
315
- (0, assert_1.default)(utils_1.BigNumber.from(l1TokensToReturn).gt("0"), "Must withdraw amount greater than 0");
316
- (0, assert_1.default)(utils_1.BigNumber.from(lpTokenAmount).lte(user.lpTokens), "You cannot withdraw more than you have");
317
- return { lpTokenAmount: lpTokenAmount, l1TokensToReturn: l1TokensToReturn.toString() };
318
- }
319
- var Client = (function () {
320
- function Client(config, deps, emit) {
321
- this.config = config;
322
- this.deps = deps;
323
- this.emit = emit;
324
- this.transactionManagers = {};
325
- this.state = { pools: {}, users: {}, transactions: {} };
326
- this.erc20s = {};
327
- this.intervalStarted = false;
328
- this.exchangeRateTable = {};
329
- this.userServices = {};
330
- config.chainId = config.chainId || 1;
331
- this.hubPool = this.createHubPoolContract(deps.provider);
332
- this.acceleratingDistributor = this.createAcceleratingDistributorContract(deps.provider);
333
- this.merkleDistributor = this.createMerkleDistributorContract(deps.provider);
334
- this.poolEvents = new PoolEventState(this.hubPool, this.config.hubPoolStartBlock);
335
- this.configStoreClient = new contracts_1.acrossConfigStore.Client(config.configStoreAddress, deps.provider);
336
- }
337
- Client.prototype.getOrCreateErc20Contract = function (address) {
338
- if (this.erc20s[address])
339
- return this.erc20s[address];
340
- this.erc20s[address] = erc20.connect(address, this.deps.provider);
341
- return this.erc20s[address];
342
- };
343
- Client.prototype.getOrCreatePoolContract = function () {
344
- return this.hubPool;
345
- };
346
- Client.prototype.createHubPoolContract = function (signerOrProvider) {
347
- return contracts_1.hubPool.connect(this.config.hubPoolAddress, signerOrProvider);
348
- };
349
- Client.prototype.getOrCreatePoolEvents = function () {
350
- return this.poolEvents;
351
- };
352
- Client.prototype.createAcceleratingDistributorContract = function (signerOrProvider) {
353
- return typechain_1.AcceleratingDistributor__factory.connect(this.config.acceleratingDistributorAddress, signerOrProvider);
354
- };
355
- Client.prototype.createMerkleDistributorContract = function (signerOrProvider) {
356
- return typechain_1.MerkleDistributor__factory.connect(this.config.merkleDistributorAddress, signerOrProvider);
357
- };
358
- Client.prototype.getOrCreateAcceleratingDistributorContract = function () {
359
- return this.acceleratingDistributor;
360
- };
361
- Client.prototype.getOrCreateMerkleDistributorContract = function () {
362
- return this.merkleDistributor;
363
- };
364
- Client.prototype.getOrCreateUserService = function (userAddress, tokenAddress) {
365
- if ((0, has_1.default)(this.userServices, [tokenAddress, userAddress]))
366
- return (0, get_1.default)(this.userServices, [tokenAddress, userAddress]);
367
- var erc20Contract = this.getOrCreateErc20Contract(tokenAddress);
368
- var userService = new UserState(erc20Contract, userAddress);
369
- (0, set_1.default)(this.userServices, [tokenAddress, userAddress], userService);
370
- return userService;
371
- };
372
- Client.prototype.updateExchangeRateTable = function (l1TokenAddress, exchangeRateTable) {
373
- if (!this.exchangeRateTable[l1TokenAddress])
374
- this.exchangeRateTable[l1TokenAddress] = {};
375
- this.exchangeRateTable[l1TokenAddress] = tslib_1.__assign(tslib_1.__assign({}, this.exchangeRateTable[l1TokenAddress]), exchangeRateTable);
376
- return this.exchangeRateTable[l1TokenAddress];
377
- };
378
- Client.prototype.resolveStakingData = function (lpToken, l1TokenAddress, userState) {
379
- return tslib_1.__awaiter(this, void 0, void 0, function () {
380
- var acceleratingDistributorContract, merkleDistributorContract, poolContract, claimList, amountOfLPClaimed, cumulativeBalance;
381
- var _this = this;
382
- return tslib_1.__generator(this, function (_a) {
383
- switch (_a.label) {
384
- case 0:
385
- (0, assert_1.default)(this.config.acceleratingDistributorAddress, "Must have the accelerating distributor address");
386
- (0, assert_1.default)(this.config.merkleDistributorAddress, "Must have the merkle distributor address");
387
- acceleratingDistributorContract = this.getOrCreateAcceleratingDistributorContract();
388
- merkleDistributorContract = this.getOrCreateMerkleDistributorContract();
389
- poolContract = this.getOrCreatePoolContract();
390
- return [4, merkleDistributorContract.queryFilter(merkleDistributorContract.filters.Claimed(undefined, undefined, userState.address, undefined, undefined, lpToken))];
391
- case 1:
392
- claimList = _a.sent();
393
- return [4, Promise.all(claimList.map(function (claim) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
394
- var _a, _b;
395
- return tslib_1.__generator(this, function (_c) {
396
- switch (_c.label) {
397
- case 0:
398
- _b = (_a = claim.args.amount).mul;
399
- return [4, poolContract.callStatic.exchangeRateCurrent(l1TokenAddress, { blockTag: claim.blockNumber })];
400
- case 1: return [2, _b.apply(_a, [_c.sent()])];
401
- }
402
- });
403
- }); }))];
404
- case 2:
405
- amountOfLPClaimed = (_a.sent()).reduce(function (prev, acc) { return acc.add(prev); }, utils_1.bnZero);
406
- return [4, acceleratingDistributorContract.getUserStake(lpToken, userState.address)];
407
- case 3:
408
- cumulativeBalance = (_a.sent()).cumulativeBalance;
409
- return [2, {
410
- cumulativeBalance: cumulativeBalance,
411
- amountAirdropped: amountOfLPClaimed,
412
- }];
413
- }
414
- });
415
- });
416
- };
417
- Client.prototype.calculateLpTransferValue = function (l1TokenAddress, userState) {
418
- return tslib_1.__awaiter(this, void 0, void 0, function () {
419
- var contract, pool, blockNumbers, exchangeRateTable, _a, _b, _c, _d;
420
- var _this = this;
421
- return tslib_1.__generator(this, function (_e) {
422
- switch (_e.label) {
423
- case 0:
424
- (0, assert_1.default)(this.config.hasArchive, "Can only calculate historical lp values with archive node");
425
- contract = this.getOrCreatePoolContract();
426
- pool = new PoolState(contract, this.config.hubPoolAddress);
427
- blockNumbers = userState.transferEvents
428
- .map(function (x) { return x.blockNumber; })
429
- .filter(function (blockNumber) { var _a, _b; return !((_b = (_a = _this.exchangeRateTable) === null || _a === void 0 ? void 0 : _a[l1TokenAddress]) === null || _b === void 0 ? void 0 : _b[blockNumber]); });
430
- _a = this.updateExchangeRateTable;
431
- _b = [l1TokenAddress];
432
- _d = (_c = Object).fromEntries;
433
- return [4, Promise.all(blockNumbers.map(function (blockNumber) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
434
- var _a;
435
- return tslib_1.__generator(this, function (_b) {
436
- switch (_b.label) {
437
- case 0:
438
- _a = [blockNumber];
439
- return [4, pool.exchangeRateAtBlock(l1TokenAddress, blockNumber)];
440
- case 1: return [2, _a.concat([_b.sent()])];
441
- }
442
- });
443
- }); }))];
444
- case 1:
445
- exchangeRateTable = _a.apply(this, _b.concat([_d.apply(_c, [_e.sent()])]));
446
- return [2, userState.transferEvents.reduce(function (result, transfer) {
447
- var exchangeRate = exchangeRateTable[transfer.blockNumber];
448
- if (transfer.args.to === userState.address) {
449
- return result.add(transfer.args.value.mul(exchangeRate).div(utils_1.fixedPointAdjustment));
450
- }
451
- if (transfer.args.from === userState.address) {
452
- return result.sub(transfer.args.value.mul(exchangeRate).div(utils_1.fixedPointAdjustment));
453
- }
454
- return result;
455
- }, utils_1.bnZero)];
456
- }
457
- });
458
- });
459
- };
460
- Client.prototype.getOrCreateTransactionManager = function (signer, address) {
461
- var _this = this;
462
- if (this.transactionManagers[address])
463
- return this.transactionManagers[address];
464
- var txman = TransactionManager({ confirmations: this.config.confirmations }, signer, function (event, id, data) {
465
- if (event === "submitted") {
466
- _this.state.transactions[id].state = event;
467
- _this.state.transactions[id].hash = data;
468
- _this.emit(["transactions", id], tslib_1.__assign({}, _this.state.transactions[id]));
469
- }
470
- if (event === "mined") {
471
- var txReceipt = data;
472
- _this.state.transactions[id].state = event;
473
- _this.state.transactions[id].receipt = txReceipt;
474
- _this.emit(["transactions", id], tslib_1.__assign({}, _this.state.transactions[id]));
475
- var tx = _this.state.transactions[id];
476
- _this.updateUserWithTransaction(tx.fromAddress, txReceipt).catch(function (err) {
477
- _this.emit(["error"], err);
478
- });
479
- }
480
- if (event === "error") {
481
- _this.state.transactions[id].state = event;
482
- _this.state.transactions[id].error = data;
483
- _this.emit(["transactions", id], tslib_1.__assign({}, _this.state.transactions[id]));
484
- }
485
- });
486
- this.transactionManagers[address] = txman;
487
- return txman;
488
- };
489
- Client.prototype.addEthLiquidity = function (signer_1, l1TokenAmount_1) {
490
- return tslib_1.__awaiter(this, arguments, void 0, function (signer, l1TokenAmount, overrides) {
491
- var _a, hubPoolAddress, l1Token, userAddress, contract, txman, request, id;
492
- if (overrides === void 0) { overrides = {}; }
493
- return tslib_1.__generator(this, function (_b) {
494
- switch (_b.label) {
495
- case 0:
496
- _a = this.config, hubPoolAddress = _a.hubPoolAddress, l1Token = _a.wethAddress;
497
- return [4, signer.getAddress()];
498
- case 1:
499
- userAddress = _b.sent();
500
- contract = this.getOrCreatePoolContract();
501
- txman = this.getOrCreateTransactionManager(signer, userAddress);
502
- return [4, contract.populateTransaction.addLiquidity(l1Token, l1TokenAmount, tslib_1.__assign(tslib_1.__assign({}, overrides), { value: l1TokenAmount }))];
503
- case 2:
504
- request = _b.sent();
505
- id = txman.request(request);
506
- this.state.transactions[id] = {
507
- id: id,
508
- state: "requested",
509
- toAddress: hubPoolAddress,
510
- fromAddress: userAddress,
511
- type: "Add Liquidity",
512
- description: "Adding ETH to pool",
513
- request: request,
514
- };
515
- this.emit(["transactions", id], tslib_1.__assign({}, this.state.transactions[id]));
516
- return [4, txman.update()];
517
- case 3:
518
- _b.sent();
519
- return [2, id];
520
- }
521
- });
522
- });
523
- };
524
- Client.prototype.addTokenLiquidity = function (signer_1, l1Token_1, l1TokenAmount_1) {
525
- return tslib_1.__awaiter(this, arguments, void 0, function (signer, l1Token, l1TokenAmount, overrides) {
526
- var hubPoolAddress, userAddress, contract, txman, request, id;
527
- if (overrides === void 0) { overrides = {}; }
528
- return tslib_1.__generator(this, function (_a) {
529
- switch (_a.label) {
530
- case 0:
531
- hubPoolAddress = this.config.hubPoolAddress;
532
- return [4, signer.getAddress()];
533
- case 1:
534
- userAddress = _a.sent();
535
- contract = this.getOrCreatePoolContract();
536
- txman = this.getOrCreateTransactionManager(signer, userAddress);
537
- return [4, contract.populateTransaction.addLiquidity(l1Token, l1TokenAmount, overrides)];
538
- case 2:
539
- request = _a.sent();
540
- return [4, txman.request(request)];
541
- case 3:
542
- id = _a.sent();
543
- this.state.transactions[id] = {
544
- id: id,
545
- state: "requested",
546
- toAddress: hubPoolAddress,
547
- fromAddress: userAddress,
548
- type: "Add Liquidity",
549
- description: "Adding Tokens to pool",
550
- request: request,
551
- };
552
- this.emit(["transactions", id], tslib_1.__assign({}, this.state.transactions[id]));
553
- return [4, txman.update()];
554
- case 4:
555
- _a.sent();
556
- return [2, id];
557
- }
558
- });
559
- });
560
- };
561
- Client.prototype.validateWithdraw = function (l1Token, userAddress, lpAmount) {
562
- return tslib_1.__awaiter(this, void 0, void 0, function () {
563
- var poolState, userState;
564
- return tslib_1.__generator(this, function (_a) {
565
- switch (_a.label) {
566
- case 0: return [4, this.updatePool(l1Token)];
567
- case 1:
568
- _a.sent();
569
- poolState = this.getPoolState(l1Token);
570
- if (!!this.hasUserState(l1Token, userAddress)) return [3, 3];
571
- return [4, this.updateUser(l1Token, userAddress)];
572
- case 2:
573
- _a.sent();
574
- _a.label = 3;
575
- case 3:
576
- userState = this.getUserState(poolState.l1Token, userAddress);
577
- return [2, validateWithdraw(poolState, userState, lpAmount)];
578
- }
579
- });
580
- });
581
- };
582
- Client.prototype.removeTokenLiquidity = function (signer_1, l1Token_1, lpTokenAmount_1) {
583
- return tslib_1.__awaiter(this, arguments, void 0, function (signer, l1Token, lpTokenAmount, overrides) {
584
- var hubPoolAddress, userAddress, contract, txman, request, id;
585
- if (overrides === void 0) { overrides = {}; }
586
- return tslib_1.__generator(this, function (_a) {
587
- switch (_a.label) {
588
- case 0:
589
- hubPoolAddress = this.config.hubPoolAddress;
590
- return [4, signer.getAddress()];
591
- case 1:
592
- userAddress = _a.sent();
593
- return [4, this.validateWithdraw(l1Token, userAddress, lpTokenAmount)];
594
- case 2:
595
- _a.sent();
596
- contract = this.getOrCreatePoolContract();
597
- txman = this.getOrCreateTransactionManager(signer, userAddress);
598
- return [4, contract.populateTransaction.removeLiquidity(l1Token, lpTokenAmount, false, overrides)];
599
- case 3:
600
- request = _a.sent();
601
- return [4, txman.request(request)];
602
- case 4:
603
- id = _a.sent();
604
- this.state.transactions[id] = {
605
- id: id,
606
- state: "requested",
607
- toAddress: hubPoolAddress,
608
- fromAddress: userAddress,
609
- type: "Remove Liquidity",
610
- description: "Withdrawing Tokens from pool",
611
- request: request,
612
- };
613
- this.emit(["transactions", id], tslib_1.__assign({}, this.state.transactions[id]));
614
- return [4, txman.update()];
615
- case 5:
616
- _a.sent();
617
- return [2, id];
618
- }
619
- });
620
- });
621
- };
622
- Client.prototype.removeEthliquidity = function (signer_1, lpTokenAmount_1) {
623
- return tslib_1.__awaiter(this, arguments, void 0, function (signer, lpTokenAmount, overrides) {
624
- var _a, hubPoolAddress, l1Token, userAddress, contract, txman, request, id;
625
- if (overrides === void 0) { overrides = {}; }
626
- return tslib_1.__generator(this, function (_b) {
627
- switch (_b.label) {
628
- case 0:
629
- _a = this.config, hubPoolAddress = _a.hubPoolAddress, l1Token = _a.wethAddress;
630
- return [4, signer.getAddress()];
631
- case 1:
632
- userAddress = _b.sent();
633
- return [4, this.validateWithdraw(l1Token, userAddress, lpTokenAmount)];
634
- case 2:
635
- _b.sent();
636
- contract = this.getOrCreatePoolContract();
637
- txman = this.getOrCreateTransactionManager(signer, userAddress);
638
- return [4, contract.populateTransaction.removeLiquidity(l1Token, lpTokenAmount, true, overrides)];
639
- case 3:
640
- request = _b.sent();
641
- return [4, txman.request(request)];
642
- case 4:
643
- id = _b.sent();
644
- this.state.transactions[id] = {
645
- id: id,
646
- state: "requested",
647
- toAddress: hubPoolAddress,
648
- fromAddress: userAddress,
649
- type: "Remove Liquidity",
650
- description: "Withdrawing Eth from pool",
651
- request: request,
652
- };
653
- this.emit(["transactions", id], tslib_1.__assign({}, this.state.transactions[id]));
654
- return [4, txman.update()];
655
- case 5:
656
- _b.sent();
657
- return [2, id];
658
- }
659
- });
660
- });
661
- };
662
- Client.prototype.getPoolState = function (l1TokenAddress) {
663
- return this.state.pools[l1TokenAddress];
664
- };
665
- Client.prototype.hasPoolState = function (l1TokenAddress) {
666
- return Boolean(this.state.pools[l1TokenAddress]);
667
- };
668
- Client.prototype.setUserState = function (l1TokenAddress, userAddress, state) {
669
- (0, set_1.default)(this.state, ["users", userAddress, l1TokenAddress], state);
670
- return state;
671
- };
672
- Client.prototype.getUserState = function (l1TokenAddress, userAddress) {
673
- return (0, get_1.default)(this.state, ["users", userAddress, l1TokenAddress]);
674
- };
675
- Client.prototype.hasUserState = function (l1TokenAddress, userAddress) {
676
- return (0, has_1.default)(this.state, ["users", userAddress, l1TokenAddress]);
677
- };
678
- Client.prototype.hasTxState = function (id) {
679
- return (0, has_1.default)(this.state, ["transactions", id]);
680
- };
681
- Client.prototype.getTxState = function (id) {
682
- return (0, get_1.default)(this.state, ["transactions", id]);
683
- };
684
- Client.prototype.updateAndEmitUser = function (userState, poolState, poolEventState) {
685
- return tslib_1.__awaiter(this, void 0, void 0, function () {
686
- var l1TokenAddress, lpToken, userAddress, transferValue, _a, stakeData, tokenEventState, newUserState;
687
- return tslib_1.__generator(this, function (_b) {
688
- switch (_b.label) {
689
- case 0:
690
- l1TokenAddress = poolState.l1Token, lpToken = poolState.lpToken;
691
- userAddress = userState.address;
692
- if (!this.config.hasArchive) return [3, 2];
693
- return [4, this.calculateLpTransferValue(l1TokenAddress, userState)];
694
- case 1:
695
- _a = _b.sent();
696
- return [3, 3];
697
- case 2:
698
- _a = utils_1.bnZero;
699
- _b.label = 3;
700
- case 3:
701
- transferValue = _a;
702
- return [4, this.resolveStakingData(lpToken, l1TokenAddress, userState)];
703
- case 4:
704
- stakeData = _b.sent();
705
- tokenEventState = poolEventState[l1TokenAddress];
706
- newUserState = this.setUserState(l1TokenAddress, userAddress, joinUserState(poolState, tokenEventState, userState, transferValue, stakeData.cumulativeBalance, stakeData.amountAirdropped));
707
- this.emit(["users", userAddress, l1TokenAddress], newUserState);
708
- return [2];
709
- }
710
- });
711
- });
712
- };
713
- Client.prototype.updateUserWithTransaction = function (userAddress, txReceipt) {
714
- return tslib_1.__awaiter(this, void 0, void 0, function () {
715
- var latestBlock, getPoolEventState, l1TokenAddress, poolState, poolEventState, lpToken, getUserState, userState;
716
- return tslib_1.__generator(this, function (_a) {
717
- switch (_a.label) {
718
- case 0: return [4, this.deps.provider.getBlock("latest")];
719
- case 1:
720
- latestBlock = _a.sent();
721
- getPoolEventState = this.getOrCreatePoolEvents();
722
- l1TokenAddress = getPoolEventState.getL1TokenFromReceipt(txReceipt);
723
- return [4, this.updatePool(l1TokenAddress, latestBlock)];
724
- case 2:
725
- _a.sent();
726
- poolState = this.getPoolState(l1TokenAddress);
727
- poolEventState = getPoolEventState.readTxReceipt(txReceipt);
728
- lpToken = poolState.lpToken;
729
- getUserState = this.getOrCreateUserService(userAddress, lpToken);
730
- return [4, getUserState.read(latestBlock.number)];
731
- case 3:
732
- userState = _a.sent();
733
- return [4, this.updateAndEmitUser(userState, poolState, poolEventState)];
734
- case 4:
735
- _a.sent();
736
- return [2];
737
- }
738
- });
739
- });
740
- };
741
- Client.prototype.updateUser = function (userAddress, l1TokenAddress) {
742
- return tslib_1.__awaiter(this, void 0, void 0, function () {
743
- var latestBlock, poolState, lpToken, getPoolEventState, poolEventState, getUserState, userState;
744
- return tslib_1.__generator(this, function (_a) {
745
- switch (_a.label) {
746
- case 0: return [4, this.deps.provider.getBlock("latest")];
747
- case 1:
748
- latestBlock = _a.sent();
749
- return [4, this.updatePool(l1TokenAddress, latestBlock)];
750
- case 2:
751
- _a.sent();
752
- poolState = this.getPoolState(l1TokenAddress);
753
- lpToken = poolState.lpToken;
754
- getPoolEventState = this.getOrCreatePoolEvents();
755
- return [4, getPoolEventState.read(latestBlock.number, l1TokenAddress, userAddress)];
756
- case 3:
757
- poolEventState = _a.sent();
758
- getUserState = this.getOrCreateUserService(userAddress, lpToken);
759
- return [4, getUserState.read(latestBlock.number)];
760
- case 4:
761
- userState = _a.sent();
762
- return [4, this.updateAndEmitUser(userState, poolState, poolEventState)];
763
- case 5:
764
- _a.sent();
765
- return [2];
766
- }
767
- });
768
- });
769
- };
770
- Client.prototype.updatePool = function (l1TokenAddress, overrideLatestBlock) {
771
- return tslib_1.__awaiter(this, void 0, void 0, function () {
772
- var _a, blockDelta, contract, pool, latestBlock, _b, previousBlock, state, rateModel, err_1;
773
- return tslib_1.__generator(this, function (_c) {
774
- switch (_c.label) {
775
- case 0:
776
- _a = this.config.blockDelta, blockDelta = _a === void 0 ? DEFAULT_BLOCK_DELTA : _a;
777
- contract = this.getOrCreatePoolContract();
778
- pool = new PoolState(contract, this.config.hubPoolAddress);
779
- _b = overrideLatestBlock;
780
- if (_b) return [3, 2];
781
- return [4, this.deps.provider.getBlock("latest")];
782
- case 1:
783
- _b = (_c.sent());
784
- _c.label = 2;
785
- case 2:
786
- latestBlock = _b;
787
- return [4, this.deps.provider.getBlock(latestBlock.number - blockDelta)];
788
- case 3:
789
- previousBlock = _c.sent();
790
- return [4, pool.read(l1TokenAddress, latestBlock.number, previousBlock.number)];
791
- case 4:
792
- state = _c.sent();
793
- rateModel = undefined;
794
- _c.label = 5;
795
- case 5:
796
- _c.trys.push([5, 7, , 8]);
797
- return [4, this.configStoreClient.getRateModel(l1TokenAddress)];
798
- case 6:
799
- rateModel = _c.sent();
800
- return [3, 8];
801
- case 7:
802
- err_1 = _c.sent();
803
- this.emit(["error"], err_1);
804
- return [3, 8];
805
- case 8:
806
- this.state.pools[l1TokenAddress] = joinPoolState(state, latestBlock, previousBlock, rateModel);
807
- this.emit(["pools", l1TokenAddress], this.state.pools[l1TokenAddress]);
808
- return [2];
809
- }
810
- });
811
- });
812
- };
813
- Client.prototype.updateTransactions = function () {
814
- return tslib_1.__awaiter(this, void 0, void 0, function () {
815
- var _i, _a, txMan, err_2;
816
- return tslib_1.__generator(this, function (_b) {
817
- switch (_b.label) {
818
- case 0:
819
- _i = 0, _a = Object.values(this.transactionManagers);
820
- _b.label = 1;
821
- case 1:
822
- if (!(_i < _a.length)) return [3, 6];
823
- txMan = _a[_i];
824
- _b.label = 2;
825
- case 2:
826
- _b.trys.push([2, 4, , 5]);
827
- return [4, txMan.update()];
828
- case 3:
829
- _b.sent();
830
- return [3, 5];
831
- case 4:
832
- err_2 = _b.sent();
833
- this.emit(["error"], err_2);
834
- return [3, 5];
835
- case 5:
836
- _i++;
837
- return [3, 1];
838
- case 6: return [2];
839
- }
840
- });
841
- });
842
- };
843
- Client.prototype.startInterval = function (delayMs) {
844
- var _this = this;
845
- if (delayMs === void 0) { delayMs = 30000; }
846
- (0, assert_1.default)(!this.intervalStarted, "Interval already started, try stopping first");
847
- this.intervalStarted = true;
848
- loop(function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
849
- return tslib_1.__generator(this, function (_a) {
850
- switch (_a.label) {
851
- case 0:
852
- (0, assert_1.default)(this.intervalStarted, "HubPool Interval Stopped");
853
- return [4, this.updateTransactions()];
854
- case 1:
855
- _a.sent();
856
- return [2];
857
- }
858
- });
859
- }); }, delayMs).catch(function (err) {
860
- _this.emit(["error"], err);
861
- });
862
- };
863
- Client.prototype.stopInterval = function () {
864
- this.intervalStarted = false;
865
- };
866
- return Client;
867
- }());
868
- exports.Client = Client;
869
- //# sourceMappingURL=poolClient.js.map