@aurigami/sdk 1.23.1 → 1.24.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 (101) hide show
  1. package/dist/SDK.d.ts +48 -65
  2. package/dist/SDK.js +165 -0
  3. package/dist/abis/index.d.ts +18 -18
  4. package/dist/abis/index.js +39 -0
  5. package/dist/consts/constants.d.ts +139 -139
  6. package/dist/consts/constants.js +185 -0
  7. package/dist/consts/decimals.d.ts +1 -1
  8. package/dist/consts/decimals.js +35 -0
  9. package/dist/consts/deployments.d.ts +3 -3
  10. package/dist/consts/deployments.js +9 -0
  11. package/dist/consts/dummy.d.ts +13 -13
  12. package/dist/consts/dummy.js +43 -0
  13. package/dist/consts/index.d.ts +5 -5
  14. package/dist/consts/index.js +9 -0
  15. package/dist/consts/symbols.d.ts +1 -1
  16. package/dist/consts/symbols.js +10 -0
  17. package/dist/entities/BlockchainEntity.d.ts +13 -13
  18. package/dist/entities/BlockchainEntity.js +36 -0
  19. package/dist/entities/auriEnv.d.ts +34 -40
  20. package/dist/entities/auriEnv.js +166 -0
  21. package/dist/entities/index.d.ts +4 -4
  22. package/dist/entities/index.js +8 -0
  23. package/dist/entities/token.d.ts +7 -7
  24. package/dist/entities/token.js +27 -0
  25. package/dist/entities/tokenAmount.d.ts +13 -13
  26. package/dist/entities/tokenAmount.js +52 -0
  27. package/dist/helpers/aurigami-api.d.ts +13 -13
  28. package/dist/helpers/aurigami-api.js +26 -0
  29. package/dist/helpers/aurora-api-helpers.d.ts +1 -1
  30. package/dist/helpers/aurora-api-helpers.js +15 -0
  31. package/dist/helpers/graphql-helpers.d.ts +1 -1
  32. package/dist/helpers/graphql-helpers.js +13 -0
  33. package/dist/helpers/helpers.d.ts +23 -40
  34. package/dist/helpers/helpers.js +148 -0
  35. package/dist/helpers/historicalPriceFetcher.d.ts +15 -15
  36. package/dist/helpers/historicalPriceFetcher.js +142 -0
  37. package/dist/helpers/index.d.ts +7 -7
  38. package/dist/helpers/index.js +11 -0
  39. package/dist/helpers/kyber-aggregator-api.d.ts +5 -5
  40. package/dist/helpers/kyber-aggregator-api.js +27 -0
  41. package/dist/helpers/multicall.d.ts +40 -0
  42. package/dist/helpers/multicall.js +203 -0
  43. package/dist/helpers/notification-api.d.ts +2 -2
  44. package/dist/helpers/notification-api.js +21 -0
  45. package/dist/helpers/one-inch-aggregator-api.d.ts +21 -21
  46. package/dist/helpers/one-inch-aggregator-api.js +19 -0
  47. package/dist/helpers/priceFetcher.d.ts +36 -36
  48. package/dist/helpers/priceFetcher.js +296 -0
  49. package/dist/helpers/subgraphQuery.d.ts +1 -1
  50. package/dist/helpers/subgraphQuery.js +22 -0
  51. package/dist/helpers/transfer-event-query.d.ts +17 -26
  52. package/dist/helpers/transfer-event-query.js +41 -0
  53. package/dist/index.d.ts +7 -7
  54. package/dist/index.js +17 -8
  55. package/dist/interactors/Airdrop.d.ts +17 -26
  56. package/dist/interactors/Airdrop.js +48 -0
  57. package/dist/interactors/MoneyMarket.d.ts +63 -63
  58. package/dist/interactors/MoneyMarket.js +392 -0
  59. package/dist/interactors/Multicall.d.ts +15 -18
  60. package/dist/interactors/Multicall.js +36 -0
  61. package/dist/interactors/Papermill.d.ts +27 -57
  62. package/dist/interactors/Papermill.js +125 -0
  63. package/dist/interactors/PlyGame.d.ts +30 -42
  64. package/dist/interactors/PlyGame.js +146 -0
  65. package/dist/interactors/PlyTokenLock.d.ts +16 -16
  66. package/dist/interactors/PlyTokenLock.js +44 -0
  67. package/dist/interactors/Pulp.d.ts +17 -17
  68. package/dist/interactors/Pulp.js +43 -0
  69. package/dist/interactors/Referral.d.ts +35 -78
  70. package/dist/interactors/Referral.js +158 -0
  71. package/dist/interactors/Staking.d.ts +20 -26
  72. package/dist/interactors/Staking.js +106 -0
  73. package/dist/interactors/index.d.ts +9 -9
  74. package/dist/interactors/index.js +13 -0
  75. package/dist/interactors/misc.d.ts +31 -39
  76. package/dist/interactors/misc.js +318 -0
  77. package/dist/types/index.d.ts +175 -197
  78. package/dist/types/index.js +18 -0
  79. package/package.json +3 -3
  80. package/src/SDK.ts +1 -1
  81. package/src/entities/auriEnv.ts +29 -27
  82. package/src/helpers/historicalPriceFetcher.ts +9 -12
  83. package/src/helpers/multicall.ts +251 -0
  84. package/src/helpers/priceFetcher.ts +19 -20
  85. package/src/interactors/Airdrop.ts +2 -2
  86. package/src/interactors/MoneyMarket.ts +31 -27
  87. package/src/interactors/Multicall.ts +3 -3
  88. package/src/interactors/Papermill.ts +9 -9
  89. package/src/interactors/PlyGame.ts +10 -10
  90. package/src/interactors/PlyTokenLock.ts +2 -3
  91. package/src/interactors/Pulp.ts +4 -2
  92. package/src/interactors/Referral.ts +6 -6
  93. package/src/interactors/Staking.ts +13 -9
  94. package/src/interactors/misc.ts +7 -5
  95. package/src/types/index.ts +32 -2
  96. package/dist/sdk.cjs.development.js +0 -6325
  97. package/dist/sdk.cjs.development.js.map +0 -1
  98. package/dist/sdk.cjs.production.min.js +0 -2
  99. package/dist/sdk.cjs.production.min.js.map +0 -1
  100. package/dist/sdk.esm.js +0 -6193
  101. package/dist/sdk.esm.js.map +0 -1
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Pulp = exports.PulpReadWrite = exports.PulpRead = void 0;
4
+ const ethers_1 = require("ethers");
5
+ const entities_1 = require("../entities");
6
+ class PulpRead extends entities_1.BlockchainEntityRead {
7
+ constructor(networkConnection) {
8
+ super(networkConnection);
9
+ Object.defineProperty(this, "env", {
10
+ enumerable: true,
11
+ configurable: true,
12
+ writable: true,
13
+ value: void 0
14
+ });
15
+ this.env = new entities_1.AuriEnv(networkConnection);
16
+ }
17
+ async remainingEarlyUnlockPulp(user) {
18
+ return this.env.pulp.callStatic.earlyRedeems(user);
19
+ }
20
+ }
21
+ exports.PulpRead = PulpRead;
22
+ class PulpReadWrite extends PulpRead {
23
+ async convertEarlyPulp(recipient, amount) {
24
+ const amountToRedeem = ethers_1.BigNumber.from(amount.rawAmount());
25
+ return this.env.pulp.raw
26
+ .connect(this._networkConnection.signer)
27
+ .redeem(recipient, amountToRedeem);
28
+ }
29
+ }
30
+ exports.PulpReadWrite = PulpReadWrite;
31
+ class Pulp extends entities_1.BlockchainEntity {
32
+ constructor() {
33
+ super();
34
+ }
35
+ read(networkConnection) {
36
+ return new PulpRead(networkConnection);
37
+ }
38
+ readWrite(networkConnection) {
39
+ return new PulpReadWrite(networkConnection);
40
+ }
41
+ }
42
+ exports.Pulp = Pulp;
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHVscC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnRlcmFjdG9ycy9QdWxwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLG1DQUF5QztBQUN6QywwQ0FBMkY7QUFHM0YsTUFBYSxRQUFTLFNBQVEsK0JBQW9CO0lBR2hELFlBQW1CLGlCQUFvQztRQUNyRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUhYOzs7OztXQUFhO1FBSTNCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxrQkFBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVNLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxJQUFhO1FBQ2pELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyRCxDQUFDO0NBQ0Y7QUFYRCw0QkFXQztBQUVELE1BQWEsYUFBYyxTQUFRLFFBQVE7SUFDbEMsS0FBSyxDQUFDLGdCQUFnQixDQUMzQixTQUFrQixFQUNsQixNQUFtQjtRQUVuQixNQUFNLGNBQWMsR0FBRyxrQkFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUNuRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUc7YUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFPLENBQUM7YUFDeEMsTUFBTSxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUN2QyxDQUFDO0NBQ0Y7QUFWRCxzQ0FVQztBQUVELE1BQWEsSUFBSyxTQUFRLDJCQUFnQjtJQUN4QztRQUNFLEtBQUssRUFBRSxDQUFDO0lBQ1YsQ0FBQztJQUNNLElBQUksQ0FBQyxpQkFBb0M7UUFDOUMsT0FBTyxJQUFJLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFDTSxTQUFTLENBQUMsaUJBQW9DO1FBQ25ELE9BQU8sSUFBSSxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUM5QyxDQUFDO0NBQ0Y7QUFWRCxvQkFVQyJ9
@@ -1,78 +1,35 @@
1
- import { TransactionResponse } from '@ethersproject/abstract-provider';
2
- import { AuriEnv, BlockchainEntity, BlockchainEntityRead } from '../entities';
3
- import { Address, NetworkConnection, ReferralReward } from '../types';
4
- export declare class ReferralRead extends BlockchainEntityRead {
5
- readonly env: AuriEnv;
6
- constructor(networkConnection: NetworkConnection);
7
- /**
8
- * Generate a 10-character referral code
9
- * containing alphanumeric characters.
10
- */
11
- protected generateReferralCode(): string;
12
- /**
13
- * Get the referral code for a given address, returns empty string if not found.
14
- *
15
- * Called to check if a user has a referral code.
16
- */
17
- getUserReferralCode(userAddr: Address): Promise<string>;
18
- /**
19
- * Get referral code that a user was referred by, returns empty string if not found.
20
- */
21
- getReferralCodeUsed(userAddr: Address): Promise<string>;
22
- /**
23
- * Get owner of a referral code, returns zero address if not found.
24
- */
25
- getReferralCodeOwner(code: string): Promise<Address>;
26
- /**
27
- * Get referrals of a user, sorted descending by timestamp.
28
- */
29
- getReferralsList(userAddr: Address): Promise<{
30
- user: string;
31
- timestamp: number;
32
- }[]>;
33
- /**
34
- * Array of rewards, sorted by time of the referral period (from latest to oldest)
35
- */
36
- referralRewards(userAddr: Address): Promise<ReferralReward[]>;
37
- /**
38
- * Top 50 reward earners from the last round, sorted by token amount
39
- */
40
- leaderboard(campaign: string): Promise<ReferralReward[]>;
41
- /**
42
- * current number of slots under a referral code being used that exceed minimum deposit amount
43
- */
44
- slotsInUse(): Promise<number>;
45
- totalReferralSlots(): number;
46
- queuePosition(address: Address): Promise<number>;
47
- /**
48
- * a way to determine qualification status of a user. null if not referred yet,
49
- * qualified if referred + min deposit, notQualified if referred + min deposit
50
- * not reached or withdrew too early
51
- */
52
- userReferralStatus(userAddr: Address): Promise<string>;
53
- isWhitelistedAddress(address: Address): Promise<boolean>;
54
- isOnAuroraPlus(address: Address): Promise<boolean>;
55
- isNewUserAtReferralTime(address: Address): Promise<boolean>;
56
- depositedMoreThanMinimumAmount(address: Address): Promise<boolean>;
57
- }
58
- export declare class ReferralReadWrite extends ReferralRead {
59
- /**
60
- * Generate a referral code for a given address.
61
- *
62
- * Called when an user want to creates his own referral code
63
- */
64
- registerNewReferralCode(): Promise<TransactionResponse>;
65
- /**
66
- * Called when an user confirms he is referred by a specified code
67
- */
68
- useReferralCode(code: string): Promise<TransactionResponse>;
69
- /**
70
- * Claim all unclaimed rewards for a given user
71
- */
72
- claimReferralRewards(): Promise<TransactionResponse>;
73
- }
74
- export declare class Referral extends BlockchainEntity {
75
- constructor();
76
- read(networkConnection: NetworkConnection): ReferralRead;
77
- readWrite(networkConnection: NetworkConnection): ReferralReadWrite;
78
- }
1
+ import { TransactionResponse } from '@ethersproject/abstract-provider';
2
+ import { AuriEnv, BlockchainEntity, BlockchainEntityRead } from '../entities';
3
+ import { Address, NetworkConnection, ReferralReward } from '../types';
4
+ export declare class ReferralRead extends BlockchainEntityRead {
5
+ readonly env: AuriEnv;
6
+ constructor(networkConnection: NetworkConnection);
7
+ protected generateReferralCode(): string;
8
+ getUserReferralCode(userAddr: Address): Promise<string>;
9
+ getReferralCodeUsed(userAddr: Address): Promise<string>;
10
+ getReferralCodeOwner(code: string): Promise<Address>;
11
+ getReferralsList(userAddr: Address): Promise<{
12
+ user: string;
13
+ timestamp: number;
14
+ }[]>;
15
+ referralRewards(userAddr: Address): Promise<ReferralReward[]>;
16
+ leaderboard(campaign: string): Promise<ReferralReward[]>;
17
+ slotsInUse(): Promise<number>;
18
+ totalReferralSlots(): number;
19
+ queuePosition(address: Address): Promise<number>;
20
+ userReferralStatus(userAddr: Address): Promise<string>;
21
+ isWhitelistedAddress(address: Address): Promise<boolean>;
22
+ isOnAuroraPlus(address: Address): Promise<boolean>;
23
+ isNewUserAtReferralTime(address: Address): Promise<boolean>;
24
+ depositedMoreThanMinimumAmount(address: Address): Promise<boolean>;
25
+ }
26
+ export declare class ReferralReadWrite extends ReferralRead {
27
+ registerNewReferralCode(): Promise<TransactionResponse>;
28
+ useReferralCode(code: string): Promise<TransactionResponse>;
29
+ claimReferralRewards(): Promise<TransactionResponse>;
30
+ }
31
+ export declare class Referral extends BlockchainEntity {
32
+ constructor();
33
+ read(networkConnection: NetworkConnection): ReferralRead;
34
+ readWrite(networkConnection: NetworkConnection): ReferralReadWrite;
35
+ }
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Referral = exports.ReferralReadWrite = exports.ReferralRead = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const axios_1 = tslib_1.__importDefault(require("axios"));
6
+ const ethers_1 = require("ethers");
7
+ const consts_1 = require("../consts");
8
+ const entities_1 = require("../entities");
9
+ const helpers_1 = require("../helpers");
10
+ const AuriAPI = tslib_1.__importStar(require("../helpers/aurigami-api"));
11
+ const Airdrop_1 = require("./Airdrop");
12
+ class ReferralRead extends entities_1.BlockchainEntityRead {
13
+ constructor(networkConnection) {
14
+ super(networkConnection);
15
+ Object.defineProperty(this, "env", {
16
+ enumerable: true,
17
+ configurable: true,
18
+ writable: true,
19
+ value: void 0
20
+ });
21
+ this.env = new entities_1.AuriEnv(networkConnection);
22
+ }
23
+ generateReferralCode() {
24
+ let letters = 'abcdefghijklmnopqrstuvwxyz';
25
+ let numbers = '1234567890';
26
+ let charset = letters + letters.toUpperCase() + numbers;
27
+ let R = '';
28
+ for (var i = 0; i < 10; i++)
29
+ R += charset[Math.floor(Math.random() * charset.length)];
30
+ return R;
31
+ }
32
+ async getUserReferralCode(userAddr) {
33
+ const result = await this.env.referralDirectoryV2.raw.userReferralCode(userAddr);
34
+ return ethers_1.ethers.utils.parseBytes32String(result);
35
+ }
36
+ async getReferralCodeUsed(userAddr) {
37
+ const result = await this.env.referralDirectoryV2.raw.referralCodeUsed(userAddr);
38
+ return ethers_1.ethers.utils.parseBytes32String(result);
39
+ }
40
+ async getReferralCodeOwner(code) {
41
+ const referralCode = ethers_1.ethers.utils.formatBytes32String(code);
42
+ return this.env.referralDirectoryV2.raw.referralCodeOwner(referralCode);
43
+ }
44
+ async getReferralsList(userAddr) {
45
+ const result = await AuriAPI.getPaginatedApi('/referral/list', { address: userAddr });
46
+ const blocks = result.items.map((item) => item.blockNumber);
47
+ const blocksTimestamp = await (0, helpers_1.getBlocksTimestamp)(this._networkConnection.provider, blocks);
48
+ const items = result.items.map((item, i) => ({
49
+ user: item.user,
50
+ timestamp: blocksTimestamp[i],
51
+ }));
52
+ return items;
53
+ }
54
+ async referralRewards(userAddr) {
55
+ const result = await AuriAPI.getPaginatedApi('/referral/rewards', { address: userAddr });
56
+ let items = result.items.map((item, i) => ({
57
+ campaign: item.campaign,
58
+ userAddr: userAddr,
59
+ isReferrer: item.campaign.includes('referrer'),
60
+ rewardTokenAmount: entities_1.TokenAmount.fromAddressAndAmount(item.token, item.amount),
61
+ startTime: consts_1.REFERRAL_CAMPAIGNS[item.campaign].start,
62
+ endTime: consts_1.REFERRAL_CAMPAIGNS[item.campaign].end,
63
+ transactionHash: item.transactionHash ?? null,
64
+ refereeAddress: null,
65
+ }));
66
+ return items;
67
+ }
68
+ async leaderboard(campaign) {
69
+ const result = await AuriAPI.getPaginatedApi('/referral/leaderboard', { campaign: campaign });
70
+ const items = result.items.map((item, i) => ({
71
+ campaign: campaign,
72
+ userAddr: item.user,
73
+ isReferrer: item.campaign.includes('referrer'),
74
+ rewardTokenAmount: entities_1.TokenAmount.fromAddressAndAmount(item.token, item.amount),
75
+ startTime: consts_1.REFERRAL_CAMPAIGNS[item.campaign].start,
76
+ endTime: consts_1.REFERRAL_CAMPAIGNS[item.campaign].end,
77
+ transactionHash: null,
78
+ refereeAddress: null,
79
+ }));
80
+ items.sort((a, b) => b.rewardTokenAmount.compare(a.rewardTokenAmount));
81
+ return items;
82
+ }
83
+ async slotsInUse() {
84
+ let result = await AuriAPI.getApi('/referral/slotsInUse');
85
+ return result;
86
+ }
87
+ totalReferralSlots() {
88
+ return 500;
89
+ }
90
+ async queuePosition(address) {
91
+ let result = await AuriAPI.getApi('/referral/queuePosition', { address: address });
92
+ return result;
93
+ }
94
+ async userReferralStatus(userAddr) {
95
+ let result = await AuriAPI.getApi('/referral/referralStatus', { address: userAddr });
96
+ switch (result) {
97
+ case -1:
98
+ return 'notReferred';
99
+ case 0:
100
+ return 'notQualified';
101
+ case 1:
102
+ return 'Qualified';
103
+ default:
104
+ return 'Withdrawn';
105
+ }
106
+ }
107
+ async isWhitelistedAddress(address) {
108
+ let result = await this.env.referralDirectoryV2.raw.isUserWhitelisted(address);
109
+ return result.eq(1);
110
+ }
111
+ async isOnAuroraPlus(address) {
112
+ let resp = await axios_1.default.get(consts_1.AURORA_PLUS_API_PREFIX + address);
113
+ return resp.data.status == 'active';
114
+ }
115
+ async isNewUserAtReferralTime(address) {
116
+ let result = await AuriAPI.getApi('/referral/isNewUser', { address: address });
117
+ return result;
118
+ }
119
+ async depositedMoreThanMinimumAmount(address) {
120
+ let result = await AuriAPI.getApi('/referral/depositedEnough', { address: address });
121
+ return result;
122
+ }
123
+ }
124
+ exports.ReferralRead = ReferralRead;
125
+ class ReferralReadWrite extends ReferralRead {
126
+ async registerNewReferralCode() {
127
+ const referralCode = ethers_1.ethers.utils.formatBytes32String(this.generateReferralCode());
128
+ return this.env.referralDirectoryV2.raw
129
+ .connect(this._networkConnection.signer)
130
+ .registerNewUserReferralCode(referralCode);
131
+ }
132
+ async useReferralCode(code) {
133
+ const referralCode = ethers_1.ethers.utils.formatBytes32String(code);
134
+ return this.env.referralDirectoryV2.raw
135
+ .connect(this._networkConnection.signer)
136
+ .registerReferralCodeUsed(referralCode);
137
+ }
138
+ async claimReferralRewards() {
139
+ const unclaimedRewards = (await this.referralRewards(await this._networkConnection.signer.getAddress())).filter((reward) => reward.transactionHash == null);
140
+ const campaigns = unclaimedRewards.map((reward) => reward.campaign);
141
+ const tokens = unclaimedRewards.map((reward) => reward.rewardTokenAmount.token.address);
142
+ return new Airdrop_1.AirdropReadWrite(this._networkConnection).redeemMultiple(campaigns, tokens);
143
+ }
144
+ }
145
+ exports.ReferralReadWrite = ReferralReadWrite;
146
+ class Referral extends entities_1.BlockchainEntity {
147
+ constructor() {
148
+ super();
149
+ }
150
+ read(networkConnection) {
151
+ return new ReferralRead(networkConnection);
152
+ }
153
+ readWrite(networkConnection) {
154
+ return new ReferralReadWrite(networkConnection);
155
+ }
156
+ }
157
+ exports.Referral = Referral;
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVmZXJyYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJhY3RvcnMvUmVmZXJyYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLDBEQUEwQjtBQUMxQixtQ0FBZ0M7QUFDaEMsc0NBQXVFO0FBQ3ZFLDBDQUEyRjtBQUMzRix3Q0FBZ0Q7QUFDaEQseUVBQW1EO0FBRW5ELHVDQUE2QztBQUU3QyxNQUFhLFlBQWEsU0FBUSwrQkFBb0I7SUFFcEQsWUFBWSxpQkFBb0M7UUFDOUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFGWDs7Ozs7V0FBYTtRQUczQixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksa0JBQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFNUyxvQkFBb0I7UUFDNUIsSUFBSSxPQUFPLEdBQUcsNEJBQTRCLENBQUM7UUFDM0MsSUFBSSxPQUFPLEdBQUcsWUFBWSxDQUFDO1FBQzNCLElBQUksT0FBTyxHQUFHLE9BQU8sR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQ3hELElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNYLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN0RixPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFPTSxLQUFLLENBQUMsbUJBQW1CLENBQUMsUUFBaUI7UUFDaEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqRixPQUFPLGVBQU0sQ0FBQyxLQUFL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
@@ -1,26 +1,20 @@
1
- import { TransactionResponse } from '@ethersproject/abstract-provider';
2
- import { AuriEnv, BlockchainEntity, BlockchainEntityRead, TokenAmount } from '../entities';
3
- import { NetworkConnection, PLYWNEARPoolDetails } from '../types';
4
- export declare class StakingRead extends BlockchainEntityRead {
5
- readonly env: AuriEnv;
6
- constructor(networkConnection: NetworkConnection);
7
- getPLYWNEARPoolDetails(): Promise<PLYWNEARPoolDetails>;
8
- /**
9
- * Get amount of staked LP tokens
10
- */
11
- stakeBalanceOf(user: string): Promise<TokenAmount>;
12
- /**
13
- * Get amount of LP token in user wallet
14
- */
15
- LpBalanceOf(user: string): Promise<TokenAmount>;
16
- unclaimedRewardsOf(user: string): Promise<TokenAmount[]>;
17
- }
18
- export declare class StakingReadWrite extends StakingRead {
19
- stake(amount: TokenAmount): Promise<TransactionResponse>;
20
- unstake(amount: TokenAmount): Promise<TransactionResponse>;
21
- }
22
- export declare class Staking extends BlockchainEntity {
23
- constructor();
24
- read(networkConnection: NetworkConnection): StakingRead;
25
- readWrite(networkConnection: NetworkConnection): StakingReadWrite;
26
- }
1
+ import { TransactionResponse } from '@ethersproject/abstract-provider';
2
+ import { AuriEnv, BlockchainEntity, BlockchainEntityRead, TokenAmount } from '../entities';
3
+ import { NetworkConnection, PLYWNEARPoolDetails } from '../types';
4
+ export declare class StakingRead extends BlockchainEntityRead {
5
+ readonly env: AuriEnv;
6
+ constructor(networkConnection: NetworkConnection);
7
+ getPLYWNEARPoolDetails(): Promise<PLYWNEARPoolDetails>;
8
+ stakeBalanceOf(user: string): Promise<TokenAmount>;
9
+ LpBalanceOf(user: string): Promise<TokenAmount>;
10
+ unclaimedRewardsOf(user: string): Promise<TokenAmount[]>;
11
+ }
12
+ export declare class StakingReadWrite extends StakingRead {
13
+ stake(amount: TokenAmount): Promise<TransactionResponse>;
14
+ unstake(amount: TokenAmount): Promise<TransactionResponse>;
15
+ }
16
+ export declare class Staking extends BlockchainEntity {
17
+ constructor();
18
+ read(networkConnection: NetworkConnection): StakingRead;
19
+ readWrite(networkConnection: NetworkConnection): StakingReadWrite;
20
+ }
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Staking = exports.StakingReadWrite = exports.StakingRead = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const ethers_1 = require("ethers");
6
+ const abis_1 = require("../abis");
7
+ const consts = tslib_1.__importStar(require("../consts"));
8
+ const entities_1 = require("../entities");
9
+ const helpers_1 = require("../helpers");
10
+ const multicall_1 = require("../helpers/multicall");
11
+ const priceFetcher_1 = require("../helpers/priceFetcher");
12
+ class StakingRead extends entities_1.BlockchainEntityRead {
13
+ constructor(networkConnection) {
14
+ super(networkConnection);
15
+ Object.defineProperty(this, "env", {
16
+ enumerable: true,
17
+ configurable: true,
18
+ writable: true,
19
+ value: void 0
20
+ });
21
+ this.env = new entities_1.AuriEnv(networkConnection);
22
+ }
23
+ async getPLYWNEARPoolDetails() {
24
+ const { stakedLiquidity, rewardPerSeconds } = await this.env.auriFairLaunch.callStatic
25
+ .getPoolInfo(consts.PLYWNEAR_POOL_ID)
26
+ .then((res) => {
27
+ const endedTime = res.endTime;
28
+ const startTime = res.startTime;
29
+ const now = Date.now() / 1000;
30
+ if (endedTime < now || startTime > now) {
31
+ return {
32
+ stakedLiquidity: res.totalStake,
33
+ rewardPerSeconds: res.rewardPerSeconds.map((_) => ethers_1.BigNumber.from(0)),
34
+ };
35
+ }
36
+ return { stakedLiquidity: res.totalStake, rewardPerSeconds: res.rewardPerSeconds };
37
+ });
38
+ let stakedLiquidityAmount = new entities_1.TokenAmount(entities_1.PLYWNEARToken, stakedLiquidity.toString());
39
+ var totalStakeValuation = await (0, priceFetcher_1.fetchValuation)(stakedLiquidityAmount, this._networkConnection.provider);
40
+ var promises = [];
41
+ for (let i = 0; i < rewardPerSeconds.length; i++) {
42
+ let rewardTokenAddress = consts.PLYWNEAR_REWARD_TOKENS[i];
43
+ let rewardToken = new entities_1.Token(rewardTokenAddress, (0, helpers_1.getDecimal)(rewardTokenAddress));
44
+ let rewardPerSecond = rewardPerSeconds[i];
45
+ promises.push((0, priceFetcher_1.fetchValuation)(new entities_1.TokenAmount(rewardToken, rewardPerSecond.toString()), this._networkConnection.provider));
46
+ }
47
+ let APYs = [];
48
+ (await Promise.all(promises)).forEach((rewardPerSecondValuation, i) => {
49
+ let rewardTokenAddress = consts.PLYWNEAR_REWARD_TOKENS[i];
50
+ let apy = (0, helpers_1.calcLMRewardApr)(rewardPerSecondValuation, totalStakeValuation, consts.ONE_DAY * 365).toFixed(consts.DECIMAL_PRECISION);
51
+ APYs.push({
52
+ address: rewardTokenAddress,
53
+ apy: apy,
54
+ });
55
+ });
56
+ return {
57
+ totalStakedLiquidity: stakedLiquidityAmount,
58
+ APYs: APYs,
59
+ };
60
+ }
61
+ async stakeBalanceOf(user) {
62
+ const userInfo = await this.env.auriFairLaunch.callStatic.getUserInfo(consts.PLYWNEAR_POOL_ID, user);
63
+ return new entities_1.TokenAmount(entities_1.PLYWNEARToken, userInfo.amount.toString());
64
+ }
65
+ async LpBalanceOf(user) {
66
+ let lpContract = (0, multicall_1.createContract)(consts.networkAddresses.tokens.PLYWNEAR, abis_1.EIP20InterfaceABI.abi, this._networkConnection.provider);
67
+ let balance = await lpContract.callStatic.balanceOf(user);
68
+ return new entities_1.TokenAmount(entities_1.PLYWNEARToken, balance.toString());
69
+ }
70
+ async unclaimedRewardsOf(user) {
71
+ let userInfo = await this.env.auriFairLaunch.raw.callStatic.updateAndGetUserInfo(consts.PLYWNEAR_POOL_ID, user, { from: user });
72
+ let rewards = userInfo.unclaimedRewards;
73
+ return rewards.map((reward, i) => entities_1.TokenAmount.fromAddressAndAmount(consts.PLYWNEAR_REWARD_TOKENS[i], reward.toString()));
74
+ }
75
+ }
76
+ exports.StakingRead = StakingRead;
77
+ class StakingReadWrite extends StakingRead {
78
+ async stake(amount) {
79
+ return this.env.auriFairLaunch.raw
80
+ .connect(this._networkConnection.signer)
81
+ .deposit(consts.PLYWNEAR_POOL_ID, amount.rawAmount());
82
+ }
83
+ async unstake(amount) {
84
+ const msgSender = await this._networkConnection.signer.getAddress();
85
+ const amountInput = ethers_1.BigNumber.from(amount.rawAmount());
86
+ const stakedAmount = ethers_1.BigNumber.from((await this.stakeBalanceOf(msgSender)).rawAmount());
87
+ const unstakeAmount = amountInput.lt(stakedAmount) ? amountInput : stakedAmount.sub(1);
88
+ return this.env.auriFairLaunch.raw
89
+ .connect(this._networkConnection.signer)
90
+ .withdraw(consts.PLYWNEAR_POOL_ID, unstakeAmount);
91
+ }
92
+ }
93
+ exports.StakingReadWrite = StakingReadWrite;
94
+ class Staking extends entities_1.BlockchainEntity {
95
+ constructor() {
96
+ super();
97
+ }
98
+ read(networkConnection) {
99
+ return new StakingRead(networkConnection);
100
+ }
101
+ readWrite(networkConnection) {
102
+ return new StakingReadWrite(networkConnection);
103
+ }
104
+ }
105
+ exports.Staking = Staking;
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3Rha2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnRlcmFjdG9ycy9TdGFraW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFHQSxtQ0FBeUM7QUFDekMsa0NBQTRDO0FBQzVDLDBEQUFvQztBQUNwQywwQ0FPcUI7QUFDckIsd0NBQXlEO0FBQ3pELG9EQUFzRDtBQUN0RCwwREFBeUQ7QUFHekQsTUFBYSxXQUFZLFNBQVEsK0JBQW9CO0lBRW5ELFlBQVksaUJBQW9DO1FBQzlDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRlg7Ozs7O1dBQWE7UUFHM0IsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLGtCQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU0sS0FBSyxDQUFDLHNCQUFzQjtRQUNqQyxNQUFNLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxVQUFVO2FBQ25GLFdBQVcsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7YUFDcEMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDWixNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO1lBQzlCLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUM7WUFDaEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztZQUU5QixJQUFJLFNBQVMsR0FBRyxHQUFHLElBQUksU0FBUyxHQUFHLEdBQUcsRUFBRSxDQUFDO2dCQUN2QyxPQUFPO29CQUNMLGVBQWUsRUFBRSxHQUFHLENBQUMsVUFBVTtvQkFDL0IsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsa0JBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENB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
@@ -1,9 +1,9 @@
1
- export * from './Airdrop';
2
- export * from './MoneyMarket';
3
- export * from './Papermill';
4
- export * from './PlyGame';
5
- export * from './Pulp';
6
- export * from './Referral';
7
- export * from './Staking';
8
- export * from './misc';
9
- export * from './PlyTokenLock';
1
+ export * from './Airdrop';
2
+ export * from './MoneyMarket';
3
+ export * from './Papermill';
4
+ export * from './PlyGame';
5
+ export * from './Pulp';
6
+ export * from './Referral';
7
+ export * from './Staking';
8
+ export * from './misc';
9
+ export * from './PlyTokenLock';
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./Airdrop"), exports);
5
+ tslib_1.__exportStar(require("./MoneyMarket"), exports);
6
+ tslib_1.__exportStar(require("./Papermill"), exports);
7
+ tslib_1.__exportStar(require("./PlyGame"), exports);
8
+ tslib_1.__exportStar(require("./Pulp"), exports);
9
+ tslib_1.__exportStar(require("./Referral"), exports);
10
+ tslib_1.__exportStar(require("./Staking"), exports);
11
+ tslib_1.__exportStar(require("./misc"), exports);
12
+ tslib_1.__exportStar(require("./PlyTokenLock"), exports);
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJhY3RvcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsb0RBQTBCO0FBQzFCLHdEQUE4QjtBQUM5QixzREFBNEI7QUFDNUIsb0RBQTBCO0FBQzFCLGlEQUF1QjtBQUN2QixxREFBMkI7QUFDM0Isb0RBQTBCO0FBQzFCLGlEQUF1QjtBQUN2Qix5REFBK0IifQ==
@@ -1,39 +1,31 @@
1
- import BigNumber from 'bignumber.js';
2
- import { AuriEnv, BlockchainEntityRead, Token, TokenAmount } from '../entities';
3
- import * as types from '../types';
4
- import { StakingRead } from './Staking';
5
- export declare class MiscRead extends BlockchainEntityRead {
6
- readonly env: AuriEnv;
7
- readonly stakingRead: StakingRead;
8
- constructor(networkConnection: types.NetworkConnection);
9
- getUserDetails(userAddress: string): Promise<types.UserDetails>;
10
- getTokenPrice(token: Token): Promise<types.CurrencyAmount>;
11
- calcBorrowPower(tokenAmount: TokenAmount): Promise<{
12
- currency: string;
13
- amount: string;
14
- }>;
15
- calcHypotheticalStats({ userMarketDetail, currentBorrowLimit, currentBorrowValuation, action, tokenAmount, }: {
16
- userMarketDetail: types.UserMarketDetails;
17
- currentBorrowLimit: types.CurrencyAmount;
18
- currentBorrowValuation: types.CurrencyAmount;
19
- action: types.MarketAction;
20
- tokenAmount?: TokenAmount;
21
- }): types.HypotheticalStats;
22
- /**
23
- * Get ply circulating supply.
24
- * It is calculated by the total supply, minus:
25
- * - Ply in team multisig contract
26
- * - Ply in comptroller contract
27
- * - Ply in fairlaunch contract
28
- * - Ply in vesting contract
29
- */
30
- getPlyCirculatingSupply(): Promise<TokenAmount>;
31
- getUtilisation(userAddr: types.Address): Promise<BigNumber>;
32
- sneakAccounts(accounts: string[], tokenAddresses: string[], dust?: BigNumber): Promise<types.AccountAuTokensInfo[]>;
33
- getLTVAndLiquidationThreshold(userAddr: types.Address): Promise<{
34
- ltv: BigNumber;
35
- liquidationThreshold: BigNumber;
36
- }>;
37
- getNetApyWithoutIncentive(userAddress: types.Address): Promise<BigNumber>;
38
- getNetApyWithIncentive(userAddress: types.Address): Promise<BigNumber>;
39
- }
1
+ import BigNumber from 'bignumber.js';
2
+ import { AuriEnv, BlockchainEntityRead, Token, TokenAmount } from '../entities';
3
+ import * as types from '../types';
4
+ import { StakingRead } from './Staking';
5
+ export declare class MiscRead extends BlockchainEntityRead {
6
+ readonly env: AuriEnv;
7
+ readonly stakingRead: StakingRead;
8
+ constructor(networkConnection: types.NetworkConnection);
9
+ getUserDetails(userAddress: string): Promise<types.UserDetails>;
10
+ getTokenPrice(token: Token): Promise<types.CurrencyAmount>;
11
+ calcBorrowPower(tokenAmount: TokenAmount): Promise<{
12
+ currency: string;
13
+ amount: string;
14
+ }>;
15
+ calcHypotheticalStats({ userMarketDetail, currentBorrowLimit, currentBorrowValuation, action, tokenAmount, }: {
16
+ userMarketDetail: types.UserMarketDetails;
17
+ currentBorrowLimit: types.CurrencyAmount;
18
+ currentBorrowValuation: types.CurrencyAmount;
19
+ action: types.MarketAction;
20
+ tokenAmount?: TokenAmount;
21
+ }): types.HypotheticalStats;
22
+ getPlyCirculatingSupply(): Promise<TokenAmount>;
23
+ getUtilisation(userAddr: types.Address): Promise<BigNumber>;
24
+ sneakAccounts(accounts: string[], tokenAddresses: string[], dust?: BigNumber): Promise<types.AccountAuTokensInfo[]>;
25
+ getLTVAndLiquidationThreshold(userAddr: types.Address): Promise<{
26
+ ltv: BigNumber;
27
+ liquidationThreshold: BigNumber;
28
+ }>;
29
+ getNetApyWithoutIncentive(userAddress: types.Address): Promise<BigNumber>;
30
+ getNetApyWithIncentive(userAddress: types.Address): Promise<BigNumber>;
31
+ }