@aurigami/sdk 1.4.8 → 1.5.0-dummy-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/MoneyMarket.d.ts +2 -2
- package/dist/Papermill.d.ts +31 -0
- package/dist/SDK.d.ts +6 -7
- package/dist/airdrop-lottery.d.ts +4 -4
- package/dist/constants.d.ts +6 -2
- package/dist/helpers.d.ts +3 -3
- package/dist/index.d.ts +1 -0
- package/dist/priceFetcher.d.ts +6 -4
- package/dist/sdk.cjs.development.js +700 -270
- package/dist/sdk.cjs.development.js.map +1 -1
- package/dist/sdk.cjs.production.min.js +1 -1
- package/dist/sdk.cjs.production.min.js.map +1 -1
- package/dist/sdk.esm.js +690 -268
- package/dist/sdk.esm.js.map +1 -1
- package/dist/token.d.ts +1 -1
- package/dist/tokenAmount.d.ts +1 -1
- package/dist/transfer-event-query.d.ts +4 -4
- package/dist/types.d.ts +13 -9
- package/package.json +5 -11
- package/src/BlockchainEntity.ts +6 -2
- package/src/MoneyMarket.ts +317 -105
- package/src/Papermill.ts +243 -0
- package/src/SDK.ts +307 -147
- package/src/airdrop-lottery.ts +293 -248
- package/src/aurora-api-helpers.ts +11 -6
- package/src/constants.ts +82 -60
- package/src/decimals.ts +5 -3
- package/src/dummy.ts +17 -23
- package/src/helpers.ts +45 -26
- package/src/index.ts +2 -1
- package/src/priceFetcher.ts +256 -103
- package/src/token.ts +16 -16
- package/src/tokenAmount.ts +21 -21
- package/src/transfer-event-query.ts +64 -54
- package/src/types.ts +39 -19
package/src/MoneyMarket.ts
CHANGED
|
@@ -1,28 +1,51 @@
|
|
|
1
1
|
import { BlockchainEntity, BlockchainEntityRead } from './BlockchainEntity';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
MoneyMarketDetails,
|
|
4
|
+
NetworkConnection,
|
|
5
|
+
Address,
|
|
6
|
+
ComptrollerRewardType,
|
|
7
|
+
} from './types';
|
|
3
8
|
import { Contract, BigNumber as BN } from 'ethers';
|
|
4
9
|
import AuErc20ABI from '@aurigami/contracts/artifacts/contracts/AuErc20.sol/AuErc20.json';
|
|
5
10
|
import AuETHABI from '@aurigami/contracts/artifacts/contracts/AuETH.sol/AuETH.json';
|
|
6
11
|
import ComptrollerABI from '@aurigami/contracts/artifacts/contracts/Comptroller.sol/Comptroller.json';
|
|
7
12
|
import AuriLensABI from '@aurigami/contracts/artifacts/contracts/AuriLens.sol/AuriLens.json';
|
|
8
|
-
import EthRepayHelperABI from
|
|
9
|
-
import {
|
|
13
|
+
import EthRepayHelperABI from '@aurigami/contracts/artifacts/contracts/EthRepayHelper.sol/EthRepayHelper.json';
|
|
14
|
+
import {
|
|
15
|
+
AuErc20,
|
|
16
|
+
AuETH,
|
|
17
|
+
AuriLens,
|
|
18
|
+
Comptroller,
|
|
19
|
+
EthRepayHelper,
|
|
20
|
+
} from '@aurigami/contracts/typechain';
|
|
10
21
|
import { TransactionResponse } from '@ethersproject/abstract-provider';
|
|
11
|
-
import {
|
|
12
|
-
|
|
13
|
-
|
|
22
|
+
import {
|
|
23
|
+
networkAddresses,
|
|
24
|
+
ETHAddress,
|
|
25
|
+
ONE_YEAR,
|
|
26
|
+
INF,
|
|
27
|
+
ONE_DAY,
|
|
28
|
+
DEPOSIT_NEAR_REWARDS_PER_WEEK,
|
|
29
|
+
BORROW_NEAR_REWARDS_PER_WEEK,
|
|
30
|
+
} from './constants';
|
|
31
|
+
import BigNumber from 'bignumber.js';
|
|
32
|
+
import {
|
|
33
|
+
decimalFactor,
|
|
34
|
+
isSameAddress,
|
|
35
|
+
calcLMRewardApr,
|
|
36
|
+
getCurrentTimestamp,
|
|
37
|
+
} from './helpers';
|
|
14
38
|
import { Token, PLYToken } from './token';
|
|
15
39
|
import { TokenAmount } from './tokenAmount';
|
|
16
40
|
import { getDecimal, validateAndParseAddress } from './helpers';
|
|
17
|
-
import { fetchPrice, calcValuation, fetchValuation } from
|
|
18
|
-
|
|
41
|
+
import { fetchPrice, calcValuation, fetchValuation } from './priceFetcher';
|
|
19
42
|
|
|
20
43
|
type RewardSpeeds = {
|
|
21
44
|
plyRewardSupplySpeed: BN;
|
|
22
45
|
plyRewardBorrowSpeed: BN;
|
|
23
46
|
auroraRewardSupplySpeed: BN;
|
|
24
47
|
auroraRewardBorrowSpeed: BN;
|
|
25
|
-
}
|
|
48
|
+
};
|
|
26
49
|
|
|
27
50
|
export class MoneyMarketRead extends BlockchainEntityRead {
|
|
28
51
|
public underlying: Token;
|
|
@@ -30,111 +53,233 @@ export class MoneyMarketRead extends BlockchainEntityRead {
|
|
|
30
53
|
protected _comptroller: Comptroller;
|
|
31
54
|
|
|
32
55
|
protected _auriLens: AuriLens;
|
|
33
|
-
constructor(
|
|
56
|
+
constructor(
|
|
57
|
+
networkConnection: NetworkConnection,
|
|
58
|
+
auToken: Address,
|
|
59
|
+
underlyingAsset: Address
|
|
60
|
+
) {
|
|
34
61
|
super(networkConnection);
|
|
35
62
|
if (isSameAddress(underlyingAsset, ETHAddress)) {
|
|
36
|
-
this.auToken = new Contract(
|
|
63
|
+
this.auToken = new Contract(
|
|
64
|
+
auToken,
|
|
65
|
+
AuETHABI.abi,
|
|
66
|
+
networkConnection.provider
|
|
67
|
+
) as AuETH;
|
|
37
68
|
} else {
|
|
38
|
-
this.auToken = new Contract(
|
|
69
|
+
this.auToken = new Contract(
|
|
70
|
+
auToken,
|
|
71
|
+
AuErc20ABI.abi,
|
|
72
|
+
networkConnection.provider
|
|
73
|
+
) as AuErc20;
|
|
39
74
|
}
|
|
40
|
-
this.underlying = new Token(
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
75
|
+
this.underlying = new Token(underlyingAsset, getDecimal(underlyingAsset));
|
|
76
|
+
this._comptroller = new Contract(
|
|
77
|
+
networkAddresses.misc.COMPTROLLER,
|
|
78
|
+
ComptrollerABI.abi,
|
|
79
|
+
networkConnection.provider
|
|
80
|
+
) as Comptroller;
|
|
81
|
+
this._auriLens = new Contract(
|
|
82
|
+
networkAddresses.misc.AURILENS,
|
|
83
|
+
AuriLensABI.abi,
|
|
84
|
+
networkConnection.provider
|
|
85
|
+
) as AuriLens;
|
|
46
86
|
}
|
|
47
87
|
|
|
48
88
|
protected async getRewardSpeeds(): Promise<RewardSpeeds> {
|
|
49
|
-
var speeds = await this._auriLens.getRewardSpeeds(
|
|
89
|
+
var speeds = await this._auriLens.getRewardSpeeds(
|
|
90
|
+
this._comptroller.address,
|
|
91
|
+
this.auToken.address
|
|
92
|
+
);
|
|
50
93
|
return speeds;
|
|
51
94
|
}
|
|
52
95
|
public async getTotalTokenBorrowed(): Promise<TokenAmount> {
|
|
53
96
|
return new TokenAmount(
|
|
54
97
|
this.underlying,
|
|
55
98
|
(await this.auToken.totalBorrows()).toString()
|
|
56
|
-
)
|
|
99
|
+
);
|
|
57
100
|
}
|
|
58
101
|
public async getTotalTokenDeposited(): Promise<TokenAmount> {
|
|
59
102
|
var promises = [];
|
|
60
103
|
var totalBorrow: TokenAmount, totalCash: TokenAmount;
|
|
61
|
-
promises.push(
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
104
|
+
promises.push(
|
|
105
|
+
this.getTotalTokenBorrowed().then((res: TokenAmount) => {
|
|
106
|
+
totalBorrow = res;
|
|
107
|
+
})
|
|
108
|
+
);
|
|
109
|
+
promises.push(
|
|
110
|
+
this.auToken.getCash().then((res: BN) => {
|
|
111
|
+
totalCash = new TokenAmount(this.underlying, res.toString());
|
|
112
|
+
})
|
|
113
|
+
);
|
|
70
114
|
await Promise.all(promises);
|
|
71
115
|
return new TokenAmount(
|
|
72
116
|
this.underlying,
|
|
73
117
|
BN.from(totalCash!.rawAmount()).add(totalBorrow!.rawAmount()).toString()
|
|
74
|
-
)
|
|
118
|
+
);
|
|
75
119
|
}
|
|
76
120
|
|
|
77
121
|
public async getDepositAPY(): Promise<BigNumber> {
|
|
78
122
|
const supplyRatePerTimestamp = await this.auToken.supplyRatePerTimestamp();
|
|
79
|
-
return new BigNumber(supplyRatePerTimestamp.toString())
|
|
123
|
+
return new BigNumber(supplyRatePerTimestamp.toString())
|
|
124
|
+
.multipliedBy(60 * 60 * 24 * 365)
|
|
125
|
+
.div(decimalFactor(18));
|
|
80
126
|
}
|
|
81
127
|
|
|
82
128
|
public async getBorrowAPY(): Promise<BigNumber> {
|
|
83
129
|
const borrowRatePerTimestamp = await this.auToken.borrowRatePerTimestamp();
|
|
84
|
-
return new BigNumber(borrowRatePerTimestamp.toString())
|
|
130
|
+
return new BigNumber(borrowRatePerTimestamp.toString())
|
|
131
|
+
.multipliedBy(60 * 60 * 24 * 365)
|
|
132
|
+
.div(decimalFactor(18));
|
|
85
133
|
}
|
|
86
134
|
|
|
87
135
|
public async getCollateralRatio(): Promise<BigNumber> {
|
|
88
136
|
return this._comptroller.markets(this.auToken.address).then((res: any) => {
|
|
89
|
-
return new BigNumber(res.collateralFactorMantissa.toString()).div(
|
|
90
|
-
|
|
137
|
+
return new BigNumber(res.collateralFactorMantissa.toString()).div(
|
|
138
|
+
decimalFactor(18)
|
|
139
|
+
);
|
|
140
|
+
});
|
|
91
141
|
}
|
|
92
142
|
|
|
93
143
|
public async getBorrowPlyAPY(): Promise<BigNumber> {
|
|
94
144
|
var promises = [];
|
|
95
|
-
var totalBorrowed: TokenAmount,
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
promises.push(
|
|
145
|
+
var totalBorrowed: TokenAmount,
|
|
146
|
+
rewardSpeed: TokenAmount,
|
|
147
|
+
plyPrice: BigNumber,
|
|
148
|
+
underlyingPrice: BigNumber;
|
|
149
|
+
promises.push(
|
|
150
|
+
this.getTotalTokenBorrowed().then((res: TokenAmount) => {
|
|
151
|
+
totalBorrowed = res;
|
|
152
|
+
})
|
|
153
|
+
);
|
|
154
|
+
promises.push(
|
|
155
|
+
this._comptroller
|
|
156
|
+
.rewardSpeeds(ComptrollerRewardType.PLY, this.auToken.address, false)
|
|
157
|
+
.then((res) => {
|
|
158
|
+
rewardSpeed = new TokenAmount(PLYToken, res.toString());
|
|
159
|
+
})
|
|
160
|
+
);
|
|
161
|
+
promises.push(
|
|
162
|
+
fetchPrice(
|
|
163
|
+
networkAddresses.tokens.PLY,
|
|
164
|
+
this._networkConnection.provider
|
|
165
|
+
).then((res) => {
|
|
166
|
+
plyPrice = res;
|
|
167
|
+
})
|
|
168
|
+
);
|
|
169
|
+
promises.push(
|
|
170
|
+
fetchPrice(
|
|
171
|
+
this.underlying.address,
|
|
172
|
+
this._networkConnection.provider
|
|
173
|
+
).then((res) => {
|
|
174
|
+
underlyingPrice = res;
|
|
175
|
+
})
|
|
176
|
+
);
|
|
105
177
|
await Promise.all(promises);
|
|
106
|
-
return calcLMRewardApr(
|
|
107
|
-
|
|
178
|
+
return calcLMRewardApr(
|
|
179
|
+
plyPrice!.multipliedBy(rewardSpeed!.formattedAmount()),
|
|
180
|
+
underlyingPrice!.multipliedBy(totalBorrowed!.formattedAmount()),
|
|
181
|
+
ONE_YEAR
|
|
182
|
+
);
|
|
108
183
|
}
|
|
109
184
|
|
|
110
185
|
public async getDepositPlyAPY(): Promise<BigNumber> {
|
|
111
186
|
var promises = [];
|
|
112
|
-
var totalDeposited: TokenAmount,
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
promises.push(
|
|
187
|
+
var totalDeposited: TokenAmount,
|
|
188
|
+
rewardSpeed: TokenAmount,
|
|
189
|
+
plyPrice: BigNumber,
|
|
190
|
+
underlyingPrice: BigNumber;
|
|
191
|
+
promises.push(
|
|
192
|
+
this.getTotalTokenDeposited().then((res: TokenAmount) => {
|
|
193
|
+
totalDeposited = res;
|
|
194
|
+
})
|
|
195
|
+
);
|
|
196
|
+
promises.push(
|
|
197
|
+
this._comptroller
|
|
198
|
+
.rewardSpeeds(ComptrollerRewardType.PLY, this.auToken.address, true)
|
|
199
|
+
.then((res) => {
|
|
200
|
+
rewardSpeed = new TokenAmount(PLYToken, res.toString());
|
|
201
|
+
})
|
|
202
|
+
);
|
|
203
|
+
promises.push(
|
|
204
|
+
fetchPrice(
|
|
205
|
+
networkAddresses.tokens.PLY,
|
|
206
|
+
this._networkConnection.provider
|
|
207
|
+
).then((res) => {
|
|
208
|
+
plyPrice = res;
|
|
209
|
+
})
|
|
210
|
+
);
|
|
211
|
+
promises.push(
|
|
212
|
+
fetchPrice(
|
|
213
|
+
this.underlying.address,
|
|
214
|
+
this._networkConnection.provider
|
|
215
|
+
).then((res) => {
|
|
216
|
+
underlyingPrice = res;
|
|
217
|
+
})
|
|
218
|
+
);
|
|
122
219
|
await Promise.all(promises);
|
|
123
|
-
return calcLMRewardApr(
|
|
124
|
-
|
|
220
|
+
return calcLMRewardApr(
|
|
221
|
+
plyPrice!.multipliedBy(rewardSpeed!.formattedAmount()),
|
|
222
|
+
underlyingPrice!.multipliedBy(totalDeposited!.formattedAmount()),
|
|
223
|
+
ONE_YEAR
|
|
224
|
+
);
|
|
125
225
|
}
|
|
126
226
|
public async getDetails(): Promise<MoneyMarketDetails> {
|
|
127
|
-
var promises = [],
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
227
|
+
var promises = [],
|
|
228
|
+
totalDeposited: TokenAmount,
|
|
229
|
+
totalBorrowed: TokenAmount,
|
|
230
|
+
depositAPY: number,
|
|
231
|
+
borrowAPY: number,
|
|
232
|
+
collateralRatio: number;
|
|
233
|
+
promises.push(
|
|
234
|
+
this.getTotalTokenDeposited().then((res: TokenAmount) => {
|
|
235
|
+
totalDeposited = res;
|
|
236
|
+
})
|
|
237
|
+
);
|
|
238
|
+
promises.push(
|
|
239
|
+
this.getTotalTokenBorrowed().then((res: TokenAmount) => {
|
|
240
|
+
totalBorrowed = res;
|
|
241
|
+
})
|
|
242
|
+
);
|
|
243
|
+
promises.push(
|
|
244
|
+
this.getDepositAPY().then((res: BigNumber) => {
|
|
245
|
+
depositAPY = res.toNumber();
|
|
246
|
+
})
|
|
247
|
+
);
|
|
248
|
+
promises.push(
|
|
249
|
+
this.getBorrowAPY().then((res: BigNumber) => {
|
|
250
|
+
borrowAPY = res.toNumber();
|
|
251
|
+
})
|
|
252
|
+
);
|
|
253
|
+
promises.push(
|
|
254
|
+
this.getCollateralRatio().then((res: BigNumber) => {
|
|
255
|
+
collateralRatio = res.toNumber();
|
|
256
|
+
})
|
|
257
|
+
);
|
|
133
258
|
|
|
134
|
-
var plyPrice: BigNumber,
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
promises.push(
|
|
259
|
+
var plyPrice: BigNumber,
|
|
260
|
+
underlyingPrice: BigNumber,
|
|
261
|
+
rewardSpeeds: RewardSpeeds;
|
|
262
|
+
promises.push(
|
|
263
|
+
this.getRewardSpeeds().then((res) => {
|
|
264
|
+
rewardSpeeds = res;
|
|
265
|
+
})
|
|
266
|
+
);
|
|
267
|
+
promises.push(
|
|
268
|
+
fetchPrice(
|
|
269
|
+
networkAddresses.tokens.PLY,
|
|
270
|
+
this._networkConnection.provider
|
|
271
|
+
).then((res) => {
|
|
272
|
+
plyPrice = res;
|
|
273
|
+
})
|
|
274
|
+
);
|
|
275
|
+
promises.push(
|
|
276
|
+
fetchPrice(
|
|
277
|
+
this.underlying.address,
|
|
278
|
+
this._networkConnection.provider
|
|
279
|
+
).then((res) => {
|
|
280
|
+
underlyingPrice = res;
|
|
281
|
+
})
|
|
282
|
+
);
|
|
138
283
|
|
|
139
284
|
await Promise.all(promises);
|
|
140
285
|
|
|
@@ -161,11 +306,31 @@ export class MoneyMarketRead extends BlockchainEntityRead {
|
|
|
161
306
|
ONE_YEAR
|
|
162
307
|
);
|
|
163
308
|
|
|
164
|
-
var depositNEARApy = calcLMRewardApr(
|
|
165
|
-
|
|
309
|
+
var depositNEARApy = calcLMRewardApr(
|
|
310
|
+
await fetchValuation(
|
|
311
|
+
this.getDepositNEARRewardPerWeek(),
|
|
312
|
+
this._networkConnection.provider
|
|
313
|
+
),
|
|
314
|
+
underlyingPrice!.multipliedBy(totalDeposited!.formattedAmount()),
|
|
315
|
+
52
|
|
316
|
+
);
|
|
317
|
+
var borrowNEARApy = calcLMRewardApr(
|
|
318
|
+
await fetchValuation(
|
|
319
|
+
this.getBorrowNEARRewardPerWeek(),
|
|
320
|
+
this._networkConnection.provider
|
|
321
|
+
),
|
|
322
|
+
underlyingPrice!.multipliedBy(totalBorrowed!.formattedAmount()),
|
|
323
|
+
52
|
|
324
|
+
);
|
|
166
325
|
var depositMETAApy;
|
|
167
|
-
if (
|
|
168
|
-
|
|
326
|
+
if (
|
|
327
|
+
isSameAddress(this.underlying.address, networkAddresses.tokens.stNEAR)
|
|
328
|
+
) {
|
|
329
|
+
depositMETAApy = calcLMRewardApr(
|
|
330
|
+
new BigNumber(50000),
|
|
331
|
+
underlyingPrice!.multipliedBy(totalDeposited!.formattedAmount()),
|
|
332
|
+
12
|
|
333
|
+
);
|
|
169
334
|
} else {
|
|
170
335
|
depositMETAApy = new BigNumber(0);
|
|
171
336
|
}
|
|
@@ -189,93 +354,132 @@ export class MoneyMarketRead extends BlockchainEntityRead {
|
|
|
189
354
|
),
|
|
190
355
|
depositNEARApy: depositNEARApy.toNumber(),
|
|
191
356
|
borrowNEARApy: borrowNEARApy.toNumber() * -1,
|
|
192
|
-
depositMETAApy: depositMETAApy.toNumber()
|
|
357
|
+
depositMETAApy: depositMETAApy.toNumber(),
|
|
193
358
|
};
|
|
194
359
|
}
|
|
195
360
|
|
|
196
361
|
public async getUserBorrowBalance(userAddress: string): Promise<TokenAmount> {
|
|
197
|
-
const totalBorrow: BN = await this.auToken.callStatic.borrowBalanceCurrent(
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
)
|
|
362
|
+
const totalBorrow: BN = await this.auToken.callStatic.borrowBalanceCurrent(
|
|
363
|
+
userAddress
|
|
364
|
+
);
|
|
365
|
+
return new TokenAmount(this.underlying, totalBorrow.toString());
|
|
202
366
|
}
|
|
203
367
|
|
|
204
|
-
public async getUserDepositBalance(
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
)
|
|
368
|
+
public async getUserDepositBalance(
|
|
369
|
+
userAddress: string
|
|
370
|
+
): Promise<TokenAmount> {
|
|
371
|
+
const totalDeposit: BN = await this.auToken.callStatic.balanceOfUnderlying(
|
|
372
|
+
userAddress
|
|
373
|
+
);
|
|
374
|
+
return new TokenAmount(this.underlying, totalDeposit.toString());
|
|
210
375
|
}
|
|
211
376
|
|
|
212
377
|
private getDepositNEARRewardPerWeek(): TokenAmount {
|
|
213
|
-
const NEARToken = new Token(
|
|
378
|
+
const NEARToken = new Token(
|
|
379
|
+
networkAddresses.tokens.WNEAR,
|
|
380
|
+
getDecimal(networkAddresses.tokens.WNEAR)
|
|
381
|
+
);
|
|
214
382
|
const rewardStartTime = 1650636000;
|
|
215
383
|
const rewardStopTime = 1651845600; // May 06, 2022 2 PM GMT
|
|
216
384
|
const currentTime = getCurrentTimestamp();
|
|
217
385
|
if (currentTime <= rewardStopTime && currentTime > rewardStartTime) {
|
|
218
|
-
const reward =
|
|
386
|
+
const reward =
|
|
387
|
+
DEPOSIT_NEAR_REWARDS_PER_WEEK[
|
|
388
|
+
this.underlying.address.toLocaleLowerCase()
|
|
389
|
+
] ?? '0';
|
|
219
390
|
return new TokenAmount(NEARToken, reward, false);
|
|
220
391
|
} else {
|
|
221
|
-
return new TokenAmount(NEARToken,
|
|
392
|
+
return new TokenAmount(NEARToken, '0');
|
|
222
393
|
}
|
|
223
394
|
}
|
|
224
395
|
|
|
225
396
|
private getBorrowNEARRewardPerWeek(): TokenAmount {
|
|
226
|
-
const NEARToken = new Token(
|
|
397
|
+
const NEARToken = new Token(
|
|
398
|
+
networkAddresses.tokens.WNEAR,
|
|
399
|
+
getDecimal(networkAddresses.tokens.WNEAR)
|
|
400
|
+
);
|
|
227
401
|
const rewardStartTime = 1650636000;
|
|
228
402
|
const rewardStopTime = 1651845600; // May 06, 2022 2 PM GMT
|
|
229
403
|
const currentTime = getCurrentTimestamp();
|
|
230
404
|
if (currentTime <= rewardStopTime && currentTime > rewardStartTime) {
|
|
231
|
-
const reward =
|
|
405
|
+
const reward =
|
|
406
|
+
BORROW_NEAR_REWARDS_PER_WEEK[
|
|
407
|
+
this.underlying.address.toLocaleLowerCase()
|
|
408
|
+
] ?? '0';
|
|
232
409
|
return new TokenAmount(NEARToken, reward, false);
|
|
233
410
|
} else {
|
|
234
|
-
return new TokenAmount(NEARToken,
|
|
411
|
+
return new TokenAmount(NEARToken, '0');
|
|
235
412
|
}
|
|
236
413
|
}
|
|
237
414
|
}
|
|
238
415
|
|
|
239
416
|
export class MoneyMarketReadWrite extends MoneyMarketRead {
|
|
240
|
-
|
|
241
417
|
protected _EthRepayHelper: EthRepayHelper;
|
|
242
|
-
constructor(
|
|
418
|
+
constructor(
|
|
419
|
+
networkConnection: NetworkConnection,
|
|
420
|
+
auToken: Address,
|
|
421
|
+
underlyingAsset: Address
|
|
422
|
+
) {
|
|
243
423
|
super(networkConnection, auToken, underlyingAsset);
|
|
244
|
-
this._EthRepayHelper = new Contract(
|
|
424
|
+
this._EthRepayHelper = new Contract(
|
|
425
|
+
networkAddresses.misc.ETHREPAYHELPER,
|
|
426
|
+
EthRepayHelperABI.abi,
|
|
427
|
+
networkConnection.provider
|
|
428
|
+
) as EthRepayHelper;
|
|
245
429
|
}
|
|
246
430
|
|
|
247
431
|
public async deposit(amount: TokenAmount): Promise<TransactionResponse> {
|
|
248
432
|
if (isSameAddress(amount.token.address, ETHAddress)) {
|
|
249
|
-
return (this.auToken as AuETH)
|
|
433
|
+
return (this.auToken as AuETH)
|
|
434
|
+
.connect(this._networkConnection.signer!)
|
|
435
|
+
.mint({ value: amount.rawAmount() });
|
|
250
436
|
} else {
|
|
251
|
-
return (this.auToken as AuErc20)
|
|
437
|
+
return (this.auToken as AuErc20)
|
|
438
|
+
.connect(this._networkConnection.signer!)
|
|
439
|
+
.mint(amount.rawAmount());
|
|
252
440
|
}
|
|
253
441
|
}
|
|
254
442
|
public async borrow(amount: TokenAmount): Promise<TransactionResponse> {
|
|
255
|
-
return this.auToken
|
|
443
|
+
return this.auToken
|
|
444
|
+
.connect(this._networkConnection.signer!)
|
|
445
|
+
.borrow(amount.rawAmount());
|
|
256
446
|
}
|
|
257
447
|
public async withdraw(amount: TokenAmount): Promise<TransactionResponse> {
|
|
258
448
|
if (new BigNumber(amount.rawAmount()).lt(0)) {
|
|
259
|
-
return this.auToken
|
|
449
|
+
return this.auToken
|
|
450
|
+
.connect(this._networkConnection.signer!)
|
|
451
|
+
.redeemUnderlying(INF);
|
|
260
452
|
}
|
|
261
|
-
return this.auToken
|
|
453
|
+
return this.auToken
|
|
454
|
+
.connect(this._networkConnection.signer!)
|
|
455
|
+
.redeemUnderlying(amount.rawAmount());
|
|
262
456
|
}
|
|
263
457
|
public async repay(amount: TokenAmount): Promise<TransactionResponse> {
|
|
264
458
|
if (isSameAddress(amount.token.address, ETHAddress)) {
|
|
265
|
-
return this._EthRepayHelper
|
|
459
|
+
return this._EthRepayHelper
|
|
460
|
+
.connect(this._networkConnection.signer!)
|
|
461
|
+
.repayBorrow({ value: amount.rawAmount() });
|
|
266
462
|
} else {
|
|
267
463
|
if (new BigNumber(amount.rawAmount()).lt(0)) {
|
|
268
|
-
return this.auToken
|
|
464
|
+
return this.auToken
|
|
465
|
+
.connect(this._networkConnection.signer!)
|
|
466
|
+
.repayBorrow(INF);
|
|
269
467
|
} else {
|
|
270
|
-
return this.auToken
|
|
468
|
+
return this.auToken
|
|
469
|
+
.connect(this._networkConnection.signer!)
|
|
470
|
+
.repayBorrow(amount.rawAmount());
|
|
271
471
|
}
|
|
272
472
|
}
|
|
273
473
|
}
|
|
274
474
|
public async enableCollateral(): Promise<TransactionResponse> {
|
|
275
|
-
return this._comptroller
|
|
475
|
+
return this._comptroller
|
|
476
|
+
.connect(this._networkConnection.signer!)
|
|
477
|
+
.enterMarkets([this.auToken.address]);
|
|
276
478
|
}
|
|
277
479
|
public async disableCollateral(): Promise<TransactionResponse> {
|
|
278
|
-
return this._comptroller
|
|
480
|
+
return this._comptroller
|
|
481
|
+
.connect(this._networkConnection.signer!)
|
|
482
|
+
.exitMarket(this.auToken.address);
|
|
279
483
|
}
|
|
280
484
|
}
|
|
281
485
|
|
|
@@ -289,10 +493,18 @@ export class MoneyMarket extends BlockchainEntity {
|
|
|
289
493
|
this.underlying = validateAndParseAddress(underlying);
|
|
290
494
|
}
|
|
291
495
|
public read(networkConnection: NetworkConnection): MoneyMarketRead {
|
|
292
|
-
return new MoneyMarketRead(
|
|
496
|
+
return new MoneyMarketRead(
|
|
497
|
+
networkConnection,
|
|
498
|
+
this.address,
|
|
499
|
+
this.underlying
|
|
500
|
+
);
|
|
293
501
|
}
|
|
294
502
|
|
|
295
503
|
public readWrite(networkConnection: NetworkConnection): MoneyMarketReadWrite {
|
|
296
|
-
return new MoneyMarketReadWrite(
|
|
504
|
+
return new MoneyMarketReadWrite(
|
|
505
|
+
networkConnection,
|
|
506
|
+
this.address,
|
|
507
|
+
this.underlying
|
|
508
|
+
);
|
|
297
509
|
}
|
|
298
510
|
}
|