@aurigami/sdk 1.5.10 → 1.6.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.
- package/dist/SDK.d.ts +23 -16
- package/dist/consts/deployments.d.ts +3 -0
- package/dist/{dummy.d.ts → consts/dummy.d.ts} +3 -3
- package/dist/consts/index.d.ts +4 -0
- package/dist/{MoneyMarket.d.ts → contracts/MoneyMarket.d.ts} +3 -5
- package/dist/{Papermill.d.ts → contracts/Papermill.d.ts} +25 -4
- package/dist/{Staking.d.ts → contracts/Staking.d.ts} +8 -3
- package/dist/{airdrop-lottery.d.ts → contracts/airdrop-lottery.d.ts} +12 -4
- package/dist/contracts/index.d.ts +4 -0
- package/dist/{BlockchainEntity.d.ts → entities/BlockchainEntity.d.ts} +1 -1
- package/dist/entities/index.d.ts +3 -0
- package/dist/{tokenAmount.d.ts → entities/tokenAmount.d.ts} +1 -1
- package/dist/{helpers.d.ts → helpers/helpers.d.ts} +10 -1
- package/dist/helpers/index.d.ts +4 -0
- package/dist/{priceFetcher.d.ts → helpers/priceFetcher.d.ts} +2 -2
- package/dist/{transfer-event-query.d.ts → helpers/transfer-event-query.d.ts} +11 -2
- package/dist/index.d.ts +4 -11
- package/dist/sdk.cjs.development.js +2511 -2271
- 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 +2508 -2275
- package/dist/sdk.esm.js.map +1 -1
- package/dist/{types.d.ts → types/index.d.ts} +15 -1
- package/package.json +11 -11
- package/src/SDK.ts +63 -65
- package/src/{constants.ts → consts/constants.ts} +19 -19
- package/src/consts/deployments.ts +4 -0
- package/src/{dummy.ts → consts/dummy.ts} +3 -3
- package/src/consts/index.ts +4 -0
- package/src/{MoneyMarket.ts → contracts/MoneyMarket.ts} +66 -66
- package/src/{Papermill.ts → contracts/Papermill.ts} +26 -30
- package/src/{Staking.ts → contracts/Staking.ts} +29 -29
- package/src/{airdrop-lottery.ts → contracts/airdrop-lottery.ts} +30 -37
- package/src/contracts/index.ts +4 -0
- package/src/{BlockchainEntity.ts → entities/BlockchainEntity.ts} +1 -1
- package/src/entities/index.ts +3 -0
- package/src/{token.ts → entities/token.ts} +2 -2
- package/src/{tokenAmount.ts → entities/tokenAmount.ts} +2 -2
- package/src/{helpers.ts → helpers/helpers.ts} +8 -2
- package/src/helpers/index.ts +4 -0
- package/src/{priceFetcher.ts → helpers/priceFetcher.ts} +16 -8
- package/src/{transfer-event-query.ts → helpers/transfer-event-query.ts} +2 -2
- package/src/index.ts +4 -11
- package/src/{types.ts → types/index.ts} +1 -1
- package/src/airdrop_misc/whitelist.example.txt +0 -4
- package/src/deployments/aurora_mainnet.json +0 -31
- package/src/deployments/aurora_testnet.json +0 -31
- /package/dist/{constants.d.ts → consts/constants.d.ts} +0 -0
- /package/dist/{decimals.d.ts → consts/decimals.d.ts} +0 -0
- /package/dist/{token.d.ts → entities/token.d.ts} +0 -0
- /package/dist/{aurora-api-helpers.d.ts → helpers/aurora-api-helpers.d.ts} +0 -0
- /package/src/{decimals.ts → consts/decimals.ts} +0 -0
- /package/src/{aurora-api-helpers.ts → helpers/aurora-api-helpers.ts} +0 -0
- /package/src/{airdrop_misc → misc/airdrop_misc}/auTokensInfo.json +0 -0
- /package/src/{airdrop_misc → misc/airdrop_misc}/whitelist.json +0 -0
|
@@ -1,15 +1,7 @@
|
|
|
1
|
-
import { BlockchainEntity, BlockchainEntityRead } from './BlockchainEntity';
|
|
2
|
-
import {
|
|
3
|
-
MoneyMarketDetails,
|
|
4
|
-
NetworkConnection,
|
|
5
|
-
Address,
|
|
6
|
-
ComptrollerRewardType,
|
|
7
|
-
} from './types';
|
|
8
|
-
import { Contract, BigNumber as BN } from 'ethers';
|
|
9
1
|
import AuErc20ABI from '@aurigami/contracts/artifacts/contracts/AuErc20.sol/AuErc20.json';
|
|
10
2
|
import AuETHABI from '@aurigami/contracts/artifacts/contracts/AuETH.sol/AuETH.json';
|
|
11
|
-
import ComptrollerABI from '@aurigami/contracts/artifacts/contracts/Comptroller.sol/Comptroller.json';
|
|
12
3
|
import AuriLensABI from '@aurigami/contracts/artifacts/contracts/AuriLens.sol/AuriLens.json';
|
|
4
|
+
import ComptrollerABI from '@aurigami/contracts/artifacts/contracts/Comptroller.sol/Comptroller.json';
|
|
13
5
|
import EthRepayHelperABI from '@aurigami/contracts/artifacts/contracts/EthRepayHelper.sol/EthRepayHelper.json';
|
|
14
6
|
import {
|
|
15
7
|
AuErc20,
|
|
@@ -19,26 +11,28 @@ import {
|
|
|
19
11
|
EthRepayHelper,
|
|
20
12
|
} from '@aurigami/contracts/typechain';
|
|
21
13
|
import { TransactionResponse } from '@ethersproject/abstract-provider';
|
|
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
14
|
import BigNumber from 'bignumber.js';
|
|
15
|
+
import { BigNumber as BN, Contract } from 'ethers';
|
|
16
|
+
import * as consts from '../consts';
|
|
32
17
|
import {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
import
|
|
40
|
-
import {
|
|
41
|
-
|
|
18
|
+
BlockchainEntity,
|
|
19
|
+
BlockchainEntityRead,
|
|
20
|
+
PLYToken,
|
|
21
|
+
Token,
|
|
22
|
+
TokenAmount,
|
|
23
|
+
} from '../entities';
|
|
24
|
+
import * as helpers from '../helpers/';
|
|
25
|
+
import {
|
|
26
|
+
calcValuation,
|
|
27
|
+
fetchPrice,
|
|
28
|
+
fetchValuation,
|
|
29
|
+
} from '../helpers/priceFetcher';
|
|
30
|
+
import {
|
|
31
|
+
Address,
|
|
32
|
+
ComptrollerRewardType,
|
|
33
|
+
MoneyMarketDetails,
|
|
34
|
+
NetworkConnection,
|
|
35
|
+
} from '../types';
|
|
42
36
|
|
|
43
37
|
type RewardSpeeds = {
|
|
44
38
|
plyRewardSupplySpeed: BN;
|
|
@@ -59,7 +53,7 @@ export class MoneyMarketRead extends BlockchainEntityRead {
|
|
|
59
53
|
underlyingAsset: Address
|
|
60
54
|
) {
|
|
61
55
|
super(networkConnection);
|
|
62
|
-
if (isSameAddress(underlyingAsset, ETHAddress)) {
|
|
56
|
+
if (helpers.isSameAddress(underlyingAsset, consts.ETHAddress)) {
|
|
63
57
|
this.auToken = new Contract(
|
|
64
58
|
auToken,
|
|
65
59
|
AuETHABI.abi,
|
|
@@ -72,14 +66,17 @@ export class MoneyMarketRead extends BlockchainEntityRead {
|
|
|
72
66
|
networkConnection.provider
|
|
73
67
|
) as AuErc20;
|
|
74
68
|
}
|
|
75
|
-
this.underlying = new Token(
|
|
69
|
+
this.underlying = new Token(
|
|
70
|
+
underlyingAsset,
|
|
71
|
+
helpers.getDecimal(underlyingAsset)
|
|
72
|
+
);
|
|
76
73
|
this._comptroller = new Contract(
|
|
77
|
-
networkAddresses.misc.COMPTROLLER,
|
|
74
|
+
consts.networkAddresses.misc.COMPTROLLER,
|
|
78
75
|
ComptrollerABI.abi,
|
|
79
76
|
networkConnection.provider
|
|
80
77
|
) as Comptroller;
|
|
81
78
|
this._auriLens = new Contract(
|
|
82
|
-
networkAddresses.misc.AURILENS,
|
|
79
|
+
consts.networkAddresses.misc.AURILENS,
|
|
83
80
|
AuriLensABI.abi,
|
|
84
81
|
networkConnection.provider
|
|
85
82
|
) as AuriLens;
|
|
@@ -122,20 +119,20 @@ export class MoneyMarketRead extends BlockchainEntityRead {
|
|
|
122
119
|
const supplyRatePerTimestamp = await this.auToken.supplyRatePerTimestamp();
|
|
123
120
|
return new BigNumber(supplyRatePerTimestamp.toString())
|
|
124
121
|
.multipliedBy(60 * 60 * 24 * 365)
|
|
125
|
-
.div(decimalFactor(18));
|
|
122
|
+
.div(helpers.decimalFactor(18));
|
|
126
123
|
}
|
|
127
124
|
|
|
128
125
|
public async getBorrowAPY(): Promise<BigNumber> {
|
|
129
126
|
const borrowRatePerTimestamp = await this.auToken.borrowRatePerTimestamp();
|
|
130
127
|
return new BigNumber(borrowRatePerTimestamp.toString())
|
|
131
128
|
.multipliedBy(60 * 60 * 24 * 365)
|
|
132
|
-
.div(decimalFactor(18));
|
|
129
|
+
.div(helpers.decimalFactor(18));
|
|
133
130
|
}
|
|
134
131
|
|
|
135
132
|
public async getCollateralRatio(): Promise<BigNumber> {
|
|
136
133
|
return this._comptroller.markets(this.auToken.address).then((res: any) => {
|
|
137
134
|
return new BigNumber(res.collateralFactorMantissa.toString()).div(
|
|
138
|
-
decimalFactor(18)
|
|
135
|
+
helpers.decimalFactor(18)
|
|
139
136
|
);
|
|
140
137
|
});
|
|
141
138
|
}
|
|
@@ -160,7 +157,7 @@ export class MoneyMarketRead extends BlockchainEntityRead {
|
|
|
160
157
|
);
|
|
161
158
|
promises.push(
|
|
162
159
|
fetchPrice(
|
|
163
|
-
networkAddresses.tokens.PLY,
|
|
160
|
+
consts.networkAddresses.tokens.PLY,
|
|
164
161
|
this._networkConnection.provider
|
|
165
162
|
).then((res) => {
|
|
166
163
|
plyPrice = res;
|
|
@@ -175,10 +172,10 @@ export class MoneyMarketRead extends BlockchainEntityRead {
|
|
|
175
172
|
})
|
|
176
173
|
);
|
|
177
174
|
await Promise.all(promises);
|
|
178
|
-
return calcLMRewardApr(
|
|
175
|
+
return helpers.calcLMRewardApr(
|
|
179
176
|
plyPrice!.multipliedBy(rewardSpeed!.formattedAmount()),
|
|
180
177
|
underlyingPrice!.multipliedBy(totalBorrowed!.formattedAmount()),
|
|
181
|
-
ONE_YEAR
|
|
178
|
+
consts.ONE_YEAR
|
|
182
179
|
);
|
|
183
180
|
}
|
|
184
181
|
|
|
@@ -202,7 +199,7 @@ export class MoneyMarketRead extends BlockchainEntityRead {
|
|
|
202
199
|
);
|
|
203
200
|
promises.push(
|
|
204
201
|
fetchPrice(
|
|
205
|
-
networkAddresses.tokens.PLY,
|
|
202
|
+
consts.networkAddresses.tokens.PLY,
|
|
206
203
|
this._networkConnection.provider
|
|
207
204
|
).then((res) => {
|
|
208
205
|
plyPrice = res;
|
|
@@ -217,10 +214,10 @@ export class MoneyMarketRead extends BlockchainEntityRead {
|
|
|
217
214
|
})
|
|
218
215
|
);
|
|
219
216
|
await Promise.all(promises);
|
|
220
|
-
return calcLMRewardApr(
|
|
217
|
+
return helpers.calcLMRewardApr(
|
|
221
218
|
plyPrice!.multipliedBy(rewardSpeed!.formattedAmount()),
|
|
222
219
|
underlyingPrice!.multipliedBy(totalDeposited!.formattedAmount()),
|
|
223
|
-
ONE_YEAR
|
|
220
|
+
consts.ONE_YEAR
|
|
224
221
|
);
|
|
225
222
|
}
|
|
226
223
|
public async getDetails(): Promise<MoneyMarketDetails> {
|
|
@@ -266,7 +263,7 @@ export class MoneyMarketRead extends BlockchainEntityRead {
|
|
|
266
263
|
);
|
|
267
264
|
promises.push(
|
|
268
265
|
fetchPrice(
|
|
269
|
-
networkAddresses.tokens.PLY,
|
|
266
|
+
consts.networkAddresses.tokens.PLY,
|
|
270
267
|
this._networkConnection.provider
|
|
271
268
|
).then((res) => {
|
|
272
269
|
plyPrice = res;
|
|
@@ -283,7 +280,7 @@ export class MoneyMarketRead extends BlockchainEntityRead {
|
|
|
283
280
|
|
|
284
281
|
await Promise.all(promises);
|
|
285
282
|
|
|
286
|
-
var borrowPlyApy = calcLMRewardApr(
|
|
283
|
+
var borrowPlyApy = helpers.calcLMRewardApr(
|
|
287
284
|
calcValuation(
|
|
288
285
|
new TokenAmount(
|
|
289
286
|
PLYToken,
|
|
@@ -292,9 +289,9 @@ export class MoneyMarketRead extends BlockchainEntityRead {
|
|
|
292
289
|
plyPrice!
|
|
293
290
|
),
|
|
294
291
|
underlyingPrice!.multipliedBy(totalBorrowed!.formattedAmount()),
|
|
295
|
-
ONE_YEAR
|
|
292
|
+
consts.ONE_YEAR
|
|
296
293
|
);
|
|
297
|
-
var depositPlyApy = calcLMRewardApr(
|
|
294
|
+
var depositPlyApy = helpers.calcLMRewardApr(
|
|
298
295
|
calcValuation(
|
|
299
296
|
new TokenAmount(
|
|
300
297
|
PLYToken,
|
|
@@ -303,10 +300,10 @@ export class MoneyMarketRead extends BlockchainEntityRead {
|
|
|
303
300
|
plyPrice!
|
|
304
301
|
),
|
|
305
302
|
underlyingPrice!.multipliedBy(totalDeposited!.formattedAmount()),
|
|
306
|
-
ONE_YEAR
|
|
303
|
+
consts.ONE_YEAR
|
|
307
304
|
);
|
|
308
305
|
|
|
309
|
-
var depositNEARApy = calcLMRewardApr(
|
|
306
|
+
var depositNEARApy = helpers.calcLMRewardApr(
|
|
310
307
|
await fetchValuation(
|
|
311
308
|
this.getDepositNEARRewardPerWeek(),
|
|
312
309
|
this._networkConnection.provider
|
|
@@ -314,7 +311,7 @@ export class MoneyMarketRead extends BlockchainEntityRead {
|
|
|
314
311
|
underlyingPrice!.multipliedBy(totalDeposited!.formattedAmount()),
|
|
315
312
|
52
|
|
316
313
|
);
|
|
317
|
-
var borrowNEARApy = calcLMRewardApr(
|
|
314
|
+
var borrowNEARApy = helpers.calcLMRewardApr(
|
|
318
315
|
await fetchValuation(
|
|
319
316
|
this.getBorrowNEARRewardPerWeek(),
|
|
320
317
|
this._networkConnection.provider
|
|
@@ -324,9 +321,12 @@ export class MoneyMarketRead extends BlockchainEntityRead {
|
|
|
324
321
|
);
|
|
325
322
|
var depositMETAApy;
|
|
326
323
|
if (
|
|
327
|
-
isSameAddress(
|
|
324
|
+
helpers.isSameAddress(
|
|
325
|
+
this.underlying.address,
|
|
326
|
+
consts.networkAddresses.tokens.stNEAR
|
|
327
|
+
)
|
|
328
328
|
) {
|
|
329
|
-
depositMETAApy = calcLMRewardApr(
|
|
329
|
+
depositMETAApy = helpers.calcLMRewardApr(
|
|
330
330
|
new BigNumber(50000),
|
|
331
331
|
underlyingPrice!.multipliedBy(totalDeposited!.formattedAmount()),
|
|
332
332
|
12
|
|
@@ -346,11 +346,11 @@ export class MoneyMarketRead extends BlockchainEntityRead {
|
|
|
346
346
|
collateralRatio: collateralRatio!,
|
|
347
347
|
depositPlyPerWeek: new TokenAmount(
|
|
348
348
|
PLYToken,
|
|
349
|
-
rewardSpeeds!.plyRewardSupplySpeed.mul(ONE_DAY).mul(7).toString()
|
|
349
|
+
rewardSpeeds!.plyRewardSupplySpeed.mul(consts.ONE_DAY).mul(7).toString()
|
|
350
350
|
),
|
|
351
351
|
borrowPlyPerWeek: new TokenAmount(
|
|
352
352
|
PLYToken,
|
|
353
|
-
rewardSpeeds!.plyRewardBorrowSpeed.mul(ONE_DAY).mul(7).toString()
|
|
353
|
+
rewardSpeeds!.plyRewardBorrowSpeed.mul(consts.ONE_DAY).mul(7).toString()
|
|
354
354
|
),
|
|
355
355
|
depositNEARApy: depositNEARApy.toNumber(),
|
|
356
356
|
borrowNEARApy: borrowNEARApy.toNumber() * -1,
|
|
@@ -376,15 +376,15 @@ export class MoneyMarketRead extends BlockchainEntityRead {
|
|
|
376
376
|
|
|
377
377
|
private getDepositNEARRewardPerWeek(): TokenAmount {
|
|
378
378
|
const NEARToken = new Token(
|
|
379
|
-
networkAddresses.tokens.WNEAR,
|
|
380
|
-
getDecimal(networkAddresses.tokens.WNEAR)
|
|
379
|
+
consts.networkAddresses.tokens.WNEAR,
|
|
380
|
+
helpers.getDecimal(consts.networkAddresses.tokens.WNEAR)
|
|
381
381
|
);
|
|
382
382
|
const rewardStartTime = 1650636000;
|
|
383
383
|
const rewardStopTime = 1651845600; // May 06, 2022 2 PM GMT
|
|
384
|
-
const currentTime = getCurrentTimestamp();
|
|
384
|
+
const currentTime = helpers.getCurrentTimestamp();
|
|
385
385
|
if (currentTime <= rewardStopTime && currentTime > rewardStartTime) {
|
|
386
386
|
const reward =
|
|
387
|
-
DEPOSIT_NEAR_REWARDS_PER_WEEK[
|
|
387
|
+
consts.DEPOSIT_NEAR_REWARDS_PER_WEEK[
|
|
388
388
|
this.underlying.address.toLocaleLowerCase()
|
|
389
389
|
] ?? '0';
|
|
390
390
|
return new TokenAmount(NEARToken, reward, false);
|
|
@@ -395,15 +395,15 @@ export class MoneyMarketRead extends BlockchainEntityRead {
|
|
|
395
395
|
|
|
396
396
|
private getBorrowNEARRewardPerWeek(): TokenAmount {
|
|
397
397
|
const NEARToken = new Token(
|
|
398
|
-
networkAddresses.tokens.WNEAR,
|
|
399
|
-
getDecimal(networkAddresses.tokens.WNEAR)
|
|
398
|
+
consts.networkAddresses.tokens.WNEAR,
|
|
399
|
+
helpers.getDecimal(consts.networkAddresses.tokens.WNEAR)
|
|
400
400
|
);
|
|
401
401
|
const rewardStartTime = 1650636000;
|
|
402
402
|
const rewardStopTime = 1651845600; // May 06, 2022 2 PM GMT
|
|
403
|
-
const currentTime = getCurrentTimestamp();
|
|
403
|
+
const currentTime = helpers.getCurrentTimestamp();
|
|
404
404
|
if (currentTime <= rewardStopTime && currentTime > rewardStartTime) {
|
|
405
405
|
const reward =
|
|
406
|
-
BORROW_NEAR_REWARDS_PER_WEEK[
|
|
406
|
+
consts.BORROW_NEAR_REWARDS_PER_WEEK[
|
|
407
407
|
this.underlying.address.toLocaleLowerCase()
|
|
408
408
|
] ?? '0';
|
|
409
409
|
return new TokenAmount(NEARToken, reward, false);
|
|
@@ -422,14 +422,14 @@ export class MoneyMarketReadWrite extends MoneyMarketRead {
|
|
|
422
422
|
) {
|
|
423
423
|
super(networkConnection, auToken, underlyingAsset);
|
|
424
424
|
this._EthRepayHelper = new Contract(
|
|
425
|
-
networkAddresses.misc.ETHREPAYHELPER,
|
|
425
|
+
consts.networkAddresses.misc.ETHREPAYHELPER,
|
|
426
426
|
EthRepayHelperABI.abi,
|
|
427
427
|
networkConnection.provider
|
|
428
428
|
) as EthRepayHelper;
|
|
429
429
|
}
|
|
430
430
|
|
|
431
431
|
public async deposit(amount: TokenAmount): Promise<TransactionResponse> {
|
|
432
|
-
if (isSameAddress(amount.token.address, ETHAddress)) {
|
|
432
|
+
if (helpers.isSameAddress(amount.token.address, consts.ETHAddress)) {
|
|
433
433
|
return (this.auToken as AuETH)
|
|
434
434
|
.connect(this._networkConnection.signer!)
|
|
435
435
|
.mint({ value: amount.rawAmount() });
|
|
@@ -448,14 +448,14 @@ export class MoneyMarketReadWrite extends MoneyMarketRead {
|
|
|
448
448
|
if (new BigNumber(amount.rawAmount()).lt(0)) {
|
|
449
449
|
return this.auToken
|
|
450
450
|
.connect(this._networkConnection.signer!)
|
|
451
|
-
.redeemUnderlying(INF);
|
|
451
|
+
.redeemUnderlying(consts.INF);
|
|
452
452
|
}
|
|
453
453
|
return this.auToken
|
|
454
454
|
.connect(this._networkConnection.signer!)
|
|
455
455
|
.redeemUnderlying(amount.rawAmount());
|
|
456
456
|
}
|
|
457
457
|
public async repay(amount: TokenAmount): Promise<TransactionResponse> {
|
|
458
|
-
if (isSameAddress(amount.token.address, ETHAddress)) {
|
|
458
|
+
if (helpers.isSameAddress(amount.token.address, consts.ETHAddress)) {
|
|
459
459
|
return this._EthRepayHelper
|
|
460
460
|
.connect(this._networkConnection.signer!)
|
|
461
461
|
.repayBorrow({ value: amount.rawAmount() });
|
|
@@ -463,7 +463,7 @@ export class MoneyMarketReadWrite extends MoneyMarketRead {
|
|
|
463
463
|
if (new BigNumber(amount.rawAmount()).lt(0)) {
|
|
464
464
|
return this.auToken
|
|
465
465
|
.connect(this._networkConnection.signer!)
|
|
466
|
-
.repayBorrow(INF);
|
|
466
|
+
.repayBorrow(consts.INF);
|
|
467
467
|
} else {
|
|
468
468
|
return this.auToken
|
|
469
469
|
.connect(this._networkConnection.signer!)
|
|
@@ -489,8 +489,8 @@ export class MoneyMarket extends BlockchainEntity {
|
|
|
489
489
|
protected underlying: Address;
|
|
490
490
|
constructor(address: string, underlying: string) {
|
|
491
491
|
super();
|
|
492
|
-
this.address = validateAndParseAddress(address);
|
|
493
|
-
this.underlying = validateAndParseAddress(underlying);
|
|
492
|
+
this.address = helpers.validateAndParseAddress(address);
|
|
493
|
+
this.underlying = helpers.validateAndParseAddress(underlying);
|
|
494
494
|
}
|
|
495
495
|
public read(networkConnection: NetworkConnection): MoneyMarketRead {
|
|
496
496
|
return new MoneyMarketRead(
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import { BlockchainEntity, BlockchainEntityRead } from './BlockchainEntity';
|
|
2
|
-
import { NetworkConnection, Address, UserLockingDetails } from './types';
|
|
3
|
-
import { Contract, BigNumber as BN } from 'ethers';
|
|
4
1
|
import AuriFairLaunchABI from '@aurigami/contracts/artifacts/contracts/AuriFairLaunch.sol/AuriFairLaunch.json';
|
|
5
|
-
import PulpABI from '@aurigami/contracts/artifacts/contracts/PULP.sol/PULP.json';
|
|
6
|
-
import EIP20InterfaceABI from '@aurigami/contracts/artifacts/contracts/interfaces/EIP20Interface.sol/EIP20Interface.json';
|
|
7
|
-
import ComptrollerABI from '@aurigami/contracts/artifacts/contracts/Comptroller.sol/Comptroller.json';
|
|
8
2
|
import AuriLensABI from '@aurigami/contracts/artifacts/contracts/AuriLens.sol/AuriLens.json';
|
|
3
|
+
import ComptrollerABI from '@aurigami/contracts/artifacts/contracts/Comptroller.sol/Comptroller.json';
|
|
4
|
+
import EIP20InterfaceABI from '@aurigami/contracts/artifacts/contracts/interfaces/EIP20Interface.sol/EIP20Interface.json';
|
|
5
|
+
import PulpABI from '@aurigami/contracts/artifacts/contracts/PULP.sol/PULP.json';
|
|
9
6
|
import {
|
|
10
7
|
AuriFairLaunch,
|
|
11
8
|
AuriLens,
|
|
@@ -14,18 +11,17 @@ import {
|
|
|
14
11
|
PULP,
|
|
15
12
|
} from '@aurigami/contracts/typechain';
|
|
16
13
|
import { TransactionResponse } from '@ethersproject/abstract-provider';
|
|
17
|
-
import {
|
|
18
|
-
networkAddresses,
|
|
19
|
-
ONE_DAY,
|
|
20
|
-
ALL_STAKING_POOLS,
|
|
21
|
-
REWARD_CLAIM_START,
|
|
22
|
-
ONE_WEEK,
|
|
23
|
-
} from './constants';
|
|
24
|
-
import { getCurrentTimestamp } from './helpers';
|
|
25
|
-
import { Token } from './token';
|
|
26
|
-
import { TokenAmount } from './tokenAmount';
|
|
27
|
-
import { getDecimal } from './helpers';
|
|
28
14
|
import BigNumber from 'bignumber.js';
|
|
15
|
+
import { BigNumber as BN, Contract } from 'ethers';
|
|
16
|
+
import * as consts from '../consts';
|
|
17
|
+
import {
|
|
18
|
+
BlockchainEntity,
|
|
19
|
+
BlockchainEntityRead,
|
|
20
|
+
Token,
|
|
21
|
+
TokenAmount,
|
|
22
|
+
} from '../entities';
|
|
23
|
+
import * as helpers from '../helpers';
|
|
24
|
+
import { Address, NetworkConnection, UserLockingDetails } from '../types';
|
|
29
25
|
|
|
30
26
|
const LOCKING_DENOMINATOR = BN.from(10000);
|
|
31
27
|
export class PapermillRead extends BlockchainEntityRead {
|
|
@@ -41,24 +37,24 @@ export class PapermillRead extends BlockchainEntityRead {
|
|
|
41
37
|
constructor(networkConnection: NetworkConnection) {
|
|
42
38
|
super(networkConnection);
|
|
43
39
|
|
|
44
|
-
let plyAddress = networkAddresses.tokens.PLY;
|
|
45
|
-
let pulpAddress = networkAddresses.tokens.PULP;
|
|
40
|
+
let plyAddress = consts.networkAddresses.tokens.PLY;
|
|
41
|
+
let pulpAddress = consts.networkAddresses.tokens.PULP;
|
|
46
42
|
|
|
47
|
-
this.plyToken = new Token(plyAddress, getDecimal(plyAddress));
|
|
48
|
-
this.pulpToken = new Token(pulpAddress, getDecimal(pulpAddress));
|
|
43
|
+
this.plyToken = new Token(plyAddress, helpers.getDecimal(plyAddress));
|
|
44
|
+
this.pulpToken = new Token(pulpAddress, helpers.getDecimal(pulpAddress));
|
|
49
45
|
|
|
50
46
|
this._comptroller = new Contract(
|
|
51
|
-
networkAddresses.misc.COMPTROLLER,
|
|
47
|
+
consts.networkAddresses.misc.COMPTROLLER,
|
|
52
48
|
ComptrollerABI.abi,
|
|
53
49
|
networkConnection.provider
|
|
54
50
|
) as Comptroller;
|
|
55
51
|
this._auriFairLaunch = new Contract(
|
|
56
|
-
networkAddresses.misc.AURIFAIRLAUNCH,
|
|
52
|
+
consts.networkAddresses.misc.AURIFAIRLAUNCH,
|
|
57
53
|
AuriFairLaunchABI.abi,
|
|
58
54
|
networkConnection.provider
|
|
59
55
|
) as AuriFairLaunch;
|
|
60
56
|
this._auriLens = new Contract(
|
|
61
|
-
networkAddresses.misc.AURILENS,
|
|
57
|
+
consts.networkAddresses.misc.AURILENS,
|
|
62
58
|
AuriLensABI.abi,
|
|
63
59
|
networkConnection.provider
|
|
64
60
|
) as AuriLens;
|
|
@@ -93,7 +89,7 @@ export class PapermillRead extends BlockchainEntityRead {
|
|
|
93
89
|
let rewardBalancesMetadata = await this._auriLens.callStatic.claimRewards(
|
|
94
90
|
this._comptroller.address,
|
|
95
91
|
this._auriFairLaunch.address,
|
|
96
|
-
ALL_STAKING_POOLS,
|
|
92
|
+
consts.ALL_STAKING_POOLS,
|
|
97
93
|
{ from: userAddress }
|
|
98
94
|
);
|
|
99
95
|
|
|
@@ -104,8 +100,8 @@ export class PapermillRead extends BlockchainEntityRead {
|
|
|
104
100
|
}
|
|
105
101
|
|
|
106
102
|
private getWeek(timestamp: number): number {
|
|
107
|
-
return BN.from(timestamp - REWARD_CLAIM_START)
|
|
108
|
-
.div(ONE_WEEK)
|
|
103
|
+
return BN.from(timestamp - consts.REWARD_CLAIM_START)
|
|
104
|
+
.div(consts.ONE_WEEK)
|
|
109
105
|
.toNumber();
|
|
110
106
|
}
|
|
111
107
|
/**
|
|
@@ -114,7 +110,7 @@ export class PapermillRead extends BlockchainEntityRead {
|
|
|
114
110
|
public async getLockingDetails(
|
|
115
111
|
userAddress: Address
|
|
116
112
|
): Promise<UserLockingDetails> {
|
|
117
|
-
const currentWeek = this.getWeek(getCurrentTimestamp());
|
|
113
|
+
const currentWeek = this.getWeek(helpers.getCurrentTimestamp());
|
|
118
114
|
var promises: any[] = [];
|
|
119
115
|
|
|
120
116
|
promises.push(
|
|
@@ -160,7 +156,7 @@ export class PapermillRead extends BlockchainEntityRead {
|
|
|
160
156
|
LOCKING_DENOMINATOR.sub(percentLockNextWeek).toString();
|
|
161
157
|
|
|
162
158
|
return {
|
|
163
|
-
vestingStart: REWARD_CLAIM_START,
|
|
159
|
+
vestingStart: consts.REWARD_CLAIM_START,
|
|
164
160
|
currentUnlockPortion: new BigNumber(currentUnlockPortion)
|
|
165
161
|
.dividedBy(100)
|
|
166
162
|
.toNumber(),
|
|
@@ -198,7 +194,7 @@ export class PapermillRead extends BlockchainEntityRead {
|
|
|
198
194
|
targetUnlockPortion * 100
|
|
199
195
|
);
|
|
200
196
|
|
|
201
|
-
return REWARD_CLAIM_START + ONE_WEEK * weekId.toNumber();
|
|
197
|
+
return consts.REWARD_CLAIM_START + consts.ONE_WEEK * weekId.toNumber();
|
|
202
198
|
}
|
|
203
199
|
|
|
204
200
|
public async getUnlockPortionAt(
|
|
@@ -11,19 +11,17 @@ import {
|
|
|
11
11
|
import { TransactionResponse } from '@ethersproject/abstract-provider';
|
|
12
12
|
import BigNumber from 'bignumber.js';
|
|
13
13
|
import { BigNumber as BN, Contract } from 'ethers';
|
|
14
|
-
import
|
|
14
|
+
import * as consts from '../consts';
|
|
15
15
|
import {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
} from '
|
|
22
|
-
import { calcLMRewardApr, getDecimal } from '
|
|
23
|
-
import { fetchValuation } from '
|
|
24
|
-
import {
|
|
25
|
-
import { TokenAmount } from './tokenAmount';
|
|
26
|
-
import { NetworkConnection, PLYWNEARPoolDetails, TokenAPY } from './types';
|
|
16
|
+
BlockchainEntity,
|
|
17
|
+
BlockchainEntityRead,
|
|
18
|
+
PLYWNEARToken,
|
|
19
|
+
Token,
|
|
20
|
+
TokenAmount,
|
|
21
|
+
} from '../entities';
|
|
22
|
+
import { calcLMRewardApr, getDecimal } from '../helpers';
|
|
23
|
+
import { fetchValuation } from '../helpers/priceFetcher';
|
|
24
|
+
import { NetworkConnection, PLYWNEARPoolDetails, TokenAPY } from '../types';
|
|
27
25
|
|
|
28
26
|
export class StakingRead extends BlockchainEntityRead {
|
|
29
27
|
protected _comptroller: Comptroller;
|
|
@@ -32,17 +30,17 @@ export class StakingRead extends BlockchainEntityRead {
|
|
|
32
30
|
constructor(networkConnection: NetworkConnection) {
|
|
33
31
|
super(networkConnection);
|
|
34
32
|
this._comptroller = new Contract(
|
|
35
|
-
networkAddresses.misc.COMPTROLLER,
|
|
33
|
+
consts.networkAddresses.misc.COMPTROLLER,
|
|
36
34
|
ComptrollerABI.abi,
|
|
37
35
|
networkConnection.provider
|
|
38
36
|
) as Comptroller;
|
|
39
37
|
this._auriFairLaunch = new Contract(
|
|
40
|
-
networkAddresses.misc.AURIFAIRLAUNCH,
|
|
38
|
+
consts.networkAddresses.misc.AURIFAIRLAUNCH,
|
|
41
39
|
AuriFairLaunchABI.abi,
|
|
42
40
|
networkConnection.provider
|
|
43
41
|
) as AuriFairLaunch;
|
|
44
42
|
this._auriLens = new Contract(
|
|
45
|
-
networkAddresses.misc.AURILENS,
|
|
43
|
+
consts.networkAddresses.misc.AURILENS,
|
|
46
44
|
AuriLensABI.abi,
|
|
47
45
|
networkConnection.provider
|
|
48
46
|
) as AuriLens;
|
|
@@ -50,10 +48,12 @@ export class StakingRead extends BlockchainEntityRead {
|
|
|
50
48
|
|
|
51
49
|
public async getPLYWNEARPoolDetails(): Promise<PLYWNEARPoolDetails> {
|
|
52
50
|
var stakedLiquidity: BN, rewardPerSeconds: BN[];
|
|
53
|
-
await this._auriFairLaunch
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
51
|
+
await this._auriFairLaunch
|
|
52
|
+
.getPoolInfo(consts.PLYWNEAR_POOL_ID)
|
|
53
|
+
.then((res) => {
|
|
54
|
+
stakedLiquidity = res.totalStake;
|
|
55
|
+
rewardPerSeconds = res.rewardPerSeconds;
|
|
56
|
+
});
|
|
57
57
|
|
|
58
58
|
let stakedLiquidityAmount = new TokenAmount(
|
|
59
59
|
PLYWNEARToken,
|
|
@@ -69,7 +69,7 @@ export class StakingRead extends BlockchainEntityRead {
|
|
|
69
69
|
|
|
70
70
|
// Calculate the reward per second in USD
|
|
71
71
|
for (let i = 0; i < rewardPerSeconds!.length; i++) {
|
|
72
|
-
let rewardTokenAddress = PLYWNEAR_REWARD_TOKENS[i];
|
|
72
|
+
let rewardTokenAddress = consts.PLYWNEAR_REWARD_TOKENS[i];
|
|
73
73
|
let rewardToken = new Token(
|
|
74
74
|
rewardTokenAddress,
|
|
75
75
|
getDecimal(rewardTokenAddress)
|
|
@@ -85,12 +85,12 @@ export class StakingRead extends BlockchainEntityRead {
|
|
|
85
85
|
|
|
86
86
|
let APYs: TokenAPY[] = [];
|
|
87
87
|
(await Promise.all(promises)).forEach((rewardPerSecondValuation, i) => {
|
|
88
|
-
let rewardTokenAddress = PLYWNEAR_REWARD_TOKENS[i];
|
|
88
|
+
let rewardTokenAddress = consts.PLYWNEAR_REWARD_TOKENS[i];
|
|
89
89
|
let apy = calcLMRewardApr(
|
|
90
90
|
rewardPerSecondValuation,
|
|
91
91
|
totalStakeValuation,
|
|
92
|
-
ONE_DAY * 365
|
|
93
|
-
).toFixed(DECIMAL_PRECISION);
|
|
92
|
+
consts.ONE_DAY * 365
|
|
93
|
+
).toFixed(consts.DECIMAL_PRECISION);
|
|
94
94
|
|
|
95
95
|
APYs.push({
|
|
96
96
|
address: rewardTokenAddress,
|
|
@@ -109,7 +109,7 @@ export class StakingRead extends BlockchainEntityRead {
|
|
|
109
109
|
*/
|
|
110
110
|
public async stakeBalanceOf(user: string): Promise<TokenAmount> {
|
|
111
111
|
const userInfo = await this._auriFairLaunch.getUserInfo(
|
|
112
|
-
PLYWNEAR_POOL_ID,
|
|
112
|
+
consts.PLYWNEAR_POOL_ID,
|
|
113
113
|
user
|
|
114
114
|
);
|
|
115
115
|
return new TokenAmount(PLYWNEARToken, userInfo.amount.toString());
|
|
@@ -120,7 +120,7 @@ export class StakingRead extends BlockchainEntityRead {
|
|
|
120
120
|
*/
|
|
121
121
|
public async LpBalanceOf(user: string): Promise<TokenAmount> {
|
|
122
122
|
let lpContract = new Contract(
|
|
123
|
-
networkAddresses.tokens.PLYWNEAR,
|
|
123
|
+
consts.networkAddresses.tokens.PLYWNEAR,
|
|
124
124
|
EIP20InterfaceABI.abi,
|
|
125
125
|
this._networkConnection.provider
|
|
126
126
|
) as IERC20;
|
|
@@ -131,7 +131,7 @@ export class StakingRead extends BlockchainEntityRead {
|
|
|
131
131
|
|
|
132
132
|
public async unclaimedRewardsOf(user: string): Promise<TokenAmount[]> {
|
|
133
133
|
let userInfo = await this._auriFairLaunch.callStatic.updateAndGetUserInfo(
|
|
134
|
-
PLYWNEAR_POOL_ID,
|
|
134
|
+
consts.PLYWNEAR_POOL_ID,
|
|
135
135
|
user,
|
|
136
136
|
{ from: user }
|
|
137
137
|
);
|
|
@@ -139,7 +139,7 @@ export class StakingRead extends BlockchainEntityRead {
|
|
|
139
139
|
let rewards = userInfo.unclaimedRewards;
|
|
140
140
|
return rewards.map((reward, i) =>
|
|
141
141
|
TokenAmount.fromAddressAndAmount(
|
|
142
|
-
PLYWNEAR_REWARD_TOKENS[i],
|
|
142
|
+
consts.PLYWNEAR_REWARD_TOKENS[i],
|
|
143
143
|
reward.toString()
|
|
144
144
|
)
|
|
145
145
|
);
|
|
@@ -150,7 +150,7 @@ export class StakingReadWrite extends StakingRead {
|
|
|
150
150
|
public async stake(amount: TokenAmount): Promise<TransactionResponse> {
|
|
151
151
|
return this._auriFairLaunch
|
|
152
152
|
.connect(this._networkConnection.signer!)
|
|
153
|
-
.deposit(PLYWNEAR_POOL_ID, amount.rawAmount());
|
|
153
|
+
.deposit(consts.PLYWNEAR_POOL_ID, amount.rawAmount());
|
|
154
154
|
}
|
|
155
155
|
|
|
156
156
|
public async unstake(amount: TokenAmount): Promise<TransactionResponse> {
|
|
@@ -165,7 +165,7 @@ export class StakingReadWrite extends StakingRead {
|
|
|
165
165
|
: stakedAmount.sub(1);
|
|
166
166
|
return this._auriFairLaunch
|
|
167
167
|
.connect(this._networkConnection.signer!)
|
|
168
|
-
.withdraw(PLYWNEAR_POOL_ID, unstakeAmount);
|
|
168
|
+
.withdraw(consts.PLYWNEAR_POOL_ID, unstakeAmount);
|
|
169
169
|
}
|
|
170
170
|
}
|
|
171
171
|
|