@aurigami/sdk 1.2.6 → 1.3.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/README.md +5 -0
- package/dist/airdrop-lottery.d.ts +14 -0
- package/dist/constants.d.ts +3 -0
- package/dist/helpers.d.ts +3 -0
- package/dist/index.d.ts +2 -0
- package/dist/sdk.cjs.development.js +547 -9
- 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 +540 -10
- package/dist/sdk.esm.js.map +1 -1
- package/dist/transfer-event-query.d.ts +17 -0
- package/package.json +1 -1
- package/src/MoneyMarket.ts +2 -2
- package/src/airdrop-lottery.ts +232 -0
- package/src/constants.ts +6 -1
- package/src/helpers.ts +54 -1
- package/src/index.ts +2 -0
- package/src/priceFetcher.ts +1 -1
- package/src/transfer-event-query.ts +60 -0
package/README.md
CHANGED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { BlockchainEntity, BlockchainEntityRead } from "./BlockchainEntity";
|
|
2
|
+
import { NetworkConnection } from "./types";
|
|
3
|
+
export declare class AirdropRead extends BlockchainEntityRead {
|
|
4
|
+
private _whitelistedAddresses;
|
|
5
|
+
private keepTrackers;
|
|
6
|
+
constructor(networkConnection: NetworkConnection);
|
|
7
|
+
countWhitelistedAddresses(): number;
|
|
8
|
+
isWhitelisted(user: string): boolean;
|
|
9
|
+
hasCompletedChallenge(user: string): Promise<boolean>;
|
|
10
|
+
}
|
|
11
|
+
export declare class Airdrop extends BlockchainEntity {
|
|
12
|
+
constructor();
|
|
13
|
+
read(networkConnection: NetworkConnection): AirdropRead;
|
|
14
|
+
}
|
package/dist/constants.d.ts
CHANGED
|
@@ -20,3 +20,6 @@ export declare const ONE_DAY = 86400;
|
|
|
20
20
|
export declare const ONE_YEAR: number;
|
|
21
21
|
export declare const AurPlyPid = 0;
|
|
22
22
|
export declare const INF: ethers.BigNumber;
|
|
23
|
+
export declare const AIRDROP_START_TIMESTAMP = 1649858400;
|
|
24
|
+
export declare const AIRDROP_END_TIMESTAMP = 1651068000;
|
|
25
|
+
export declare const AIRDROP_KEEP_THRESHOLD: number;
|
package/dist/helpers.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Provider } from "@ethersproject/abstract-provider";
|
|
1
2
|
import BigNumber from "bignumber.js";
|
|
2
3
|
import { Address } from "./types";
|
|
3
4
|
export declare function formatObject(object: Object): string;
|
|
@@ -7,3 +8,5 @@ export declare const getCurrentTimestamp: () => number;
|
|
|
7
8
|
export declare function validateAndParseAddress(address: Address): Address;
|
|
8
9
|
export declare function getDecimal(address: Address): number;
|
|
9
10
|
export declare function calcLMRewardApr(rewardsValue: BigNumber, totalStakeValue: BigNumber, frequencyPerYear: number): BigNumber;
|
|
11
|
+
export declare function getBlockTimestamp(provider: Provider, blockNumber: number): Promise<number>;
|
|
12
|
+
export declare function getBlockBeforeTimestamp(provider: Provider, timestamp: number, startBlock?: number): Promise<number>;
|
package/dist/index.d.ts
CHANGED
|
@@ -17,6 +17,8 @@ var axios = _interopDefault(require('axios'));
|
|
|
17
17
|
var TokenLockABI = _interopDefault(require('@aurigami/contracts/artifacts/contracts/TokenLock.sol/TokenLock.json'));
|
|
18
18
|
var AuriFairLaunchABI = _interopDefault(require('@aurigami/contracts/artifacts/contracts/AuriFairLaunch.sol/AuriFairLaunch.json'));
|
|
19
19
|
var FaucetABI = _interopDefault(require('@aurigami/contracts/artifacts/contracts/mock/Faucet.sol/Faucet.json'));
|
|
20
|
+
var FileSystem = require('fs');
|
|
21
|
+
var AuTokenABI = _interopDefault(require('@aurigami/contracts/artifacts/contracts/AuToken.sol/AuToken.json'));
|
|
20
22
|
|
|
21
23
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
22
24
|
try {
|
|
@@ -980,6 +982,9 @@ var ONE_DAY = 86400;
|
|
|
980
982
|
var ONE_YEAR = ONE_DAY * 365;
|
|
981
983
|
var AurPlyPid = 0;
|
|
982
984
|
var INF = /*#__PURE__*/ethers.BigNumber.from(2).pow(256).sub(1);
|
|
985
|
+
var AIRDROP_START_TIMESTAMP = 1649858400;
|
|
986
|
+
var AIRDROP_END_TIMESTAMP = 1651068000;
|
|
987
|
+
var AIRDROP_KEEP_THRESHOLD = 7 * 86400;
|
|
983
988
|
|
|
984
989
|
var decimalRecords = {
|
|
985
990
|
'0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee': 18,
|
|
@@ -1032,6 +1037,116 @@ function calcLMRewardApr(rewardsValue, totalStakeValue, frequencyPerYear) {
|
|
|
1032
1037
|
|
|
1033
1038
|
return rewardsValue.multipliedBy(frequencyPerYear).dividedBy(totalStakeValue);
|
|
1034
1039
|
}
|
|
1040
|
+
function getBlockTimestamp(_x, _x2) {
|
|
1041
|
+
return _getBlockTimestamp.apply(this, arguments);
|
|
1042
|
+
}
|
|
1043
|
+
|
|
1044
|
+
function _getBlockTimestamp() {
|
|
1045
|
+
_getBlockTimestamp = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee(provider, blockNumber) {
|
|
1046
|
+
var block;
|
|
1047
|
+
return runtime_1.wrap(function _callee$(_context) {
|
|
1048
|
+
while (1) {
|
|
1049
|
+
switch (_context.prev = _context.next) {
|
|
1050
|
+
case 0:
|
|
1051
|
+
_context.next = 2;
|
|
1052
|
+
return provider.getBlock(blockNumber);
|
|
1053
|
+
|
|
1054
|
+
case 2:
|
|
1055
|
+
block = _context.sent;
|
|
1056
|
+
return _context.abrupt("return", block.timestamp);
|
|
1057
|
+
|
|
1058
|
+
case 4:
|
|
1059
|
+
case "end":
|
|
1060
|
+
return _context.stop();
|
|
1061
|
+
}
|
|
1062
|
+
}
|
|
1063
|
+
}, _callee);
|
|
1064
|
+
}));
|
|
1065
|
+
return _getBlockTimestamp.apply(this, arguments);
|
|
1066
|
+
}
|
|
1067
|
+
|
|
1068
|
+
function getBlockBeforeTimestamp(_x3, _x4, _x5) {
|
|
1069
|
+
return _getBlockBeforeTimestamp.apply(this, arguments);
|
|
1070
|
+
}
|
|
1071
|
+
|
|
1072
|
+
function _getBlockBeforeTimestamp() {
|
|
1073
|
+
_getBlockBeforeTimestamp = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee2(provider, timestamp, startBlock) {
|
|
1074
|
+
var blockThreshold, K, leftBlock, rightBlock, size, promises, i, blockTimestamps, nextLeftBlock, _i, _i2;
|
|
1075
|
+
|
|
1076
|
+
return runtime_1.wrap(function _callee2$(_context2) {
|
|
1077
|
+
while (1) {
|
|
1078
|
+
switch (_context2.prev = _context2.next) {
|
|
1079
|
+
case 0:
|
|
1080
|
+
blockThreshold = 50 * 10;
|
|
1081
|
+
K = 8;
|
|
1082
|
+
leftBlock = startBlock || 1;
|
|
1083
|
+
_context2.next = 5;
|
|
1084
|
+
return provider.getBlockNumber();
|
|
1085
|
+
|
|
1086
|
+
case 5:
|
|
1087
|
+
rightBlock = _context2.sent;
|
|
1088
|
+
_context2.next = 8;
|
|
1089
|
+
return getBlockTimestamp(provider, rightBlock);
|
|
1090
|
+
|
|
1091
|
+
case 8:
|
|
1092
|
+
_context2.t0 = _context2.sent;
|
|
1093
|
+
_context2.t1 = timestamp;
|
|
1094
|
+
|
|
1095
|
+
if (!(_context2.t0 < _context2.t1)) {
|
|
1096
|
+
_context2.next = 12;
|
|
1097
|
+
break;
|
|
1098
|
+
}
|
|
1099
|
+
|
|
1100
|
+
return _context2.abrupt("return", rightBlock);
|
|
1101
|
+
|
|
1102
|
+
case 12:
|
|
1103
|
+
if (!(rightBlock - leftBlock >= blockThreshold)) {
|
|
1104
|
+
_context2.next = 25;
|
|
1105
|
+
break;
|
|
1106
|
+
}
|
|
1107
|
+
|
|
1108
|
+
size = Math.floor((rightBlock - leftBlock + 1) / K);
|
|
1109
|
+
promises = [];
|
|
1110
|
+
|
|
1111
|
+
for (i = 1; i < K; i++) {
|
|
1112
|
+
promises.push(getBlockTimestamp(provider, leftBlock + i * size));
|
|
1113
|
+
}
|
|
1114
|
+
|
|
1115
|
+
_context2.next = 18;
|
|
1116
|
+
return Promise.all(promises);
|
|
1117
|
+
|
|
1118
|
+
case 18:
|
|
1119
|
+
blockTimestamps = _context2.sent;
|
|
1120
|
+
nextLeftBlock = leftBlock;
|
|
1121
|
+
|
|
1122
|
+
for (_i = 1; _i < K; _i++) {
|
|
1123
|
+
if (blockTimestamps[_i - 1] <= timestamp) {
|
|
1124
|
+
nextLeftBlock = leftBlock + _i * size;
|
|
1125
|
+
}
|
|
1126
|
+
}
|
|
1127
|
+
|
|
1128
|
+
for (_i2 = K - 1; _i2 >= 1; _i2--) {
|
|
1129
|
+
if (blockTimestamps[_i2 - 1] > timestamp) {
|
|
1130
|
+
rightBlock = leftBlock + _i2 * size - 1;
|
|
1131
|
+
}
|
|
1132
|
+
}
|
|
1133
|
+
|
|
1134
|
+
leftBlock = nextLeftBlock;
|
|
1135
|
+
_context2.next = 12;
|
|
1136
|
+
break;
|
|
1137
|
+
|
|
1138
|
+
case 25:
|
|
1139
|
+
return _context2.abrupt("return", leftBlock);
|
|
1140
|
+
|
|
1141
|
+
case 26:
|
|
1142
|
+
case "end":
|
|
1143
|
+
return _context2.stop();
|
|
1144
|
+
}
|
|
1145
|
+
}
|
|
1146
|
+
}, _callee2);
|
|
1147
|
+
}));
|
|
1148
|
+
return _getBlockBeforeTimestamp.apply(this, arguments);
|
|
1149
|
+
}
|
|
1035
1150
|
|
|
1036
1151
|
var Token = function Token(address, decimals) {
|
|
1037
1152
|
this.address = address.toLowerCase();
|
|
@@ -2306,37 +2421,45 @@ function _fetchPrice() {
|
|
|
2306
2421
|
return _context8.abrupt("return", new BigNumber(0));
|
|
2307
2422
|
|
|
2308
2423
|
case 2:
|
|
2309
|
-
if (!
|
|
2424
|
+
if (!isSameAddress(address, networkAddresses.tokens.stNEAR)) {
|
|
2310
2425
|
_context8.next = 4;
|
|
2311
2426
|
break;
|
|
2312
2427
|
}
|
|
2313
2428
|
|
|
2314
|
-
return _context8.abrupt("return",
|
|
2429
|
+
return _context8.abrupt("return", fetchStNEARPrice());
|
|
2315
2430
|
|
|
2316
2431
|
case 4:
|
|
2432
|
+
if (!shouldFetchFromCoingecko(address)) {
|
|
2433
|
+
_context8.next = 6;
|
|
2434
|
+
break;
|
|
2435
|
+
}
|
|
2436
|
+
|
|
2437
|
+
return _context8.abrupt("return", fetchPriceFromCoingecko(address));
|
|
2438
|
+
|
|
2439
|
+
case 6:
|
|
2317
2440
|
matchingAuToken = networkAddresses.auTokens.find(function (auToken) {
|
|
2318
2441
|
return isSameAddress(auToken.underlying, address);
|
|
2319
2442
|
});
|
|
2320
2443
|
|
|
2321
2444
|
if (!(matchingAuToken !== undefined)) {
|
|
2322
|
-
_context8.next =
|
|
2445
|
+
_context8.next = 11;
|
|
2323
2446
|
break;
|
|
2324
2447
|
}
|
|
2325
2448
|
|
|
2326
2449
|
return _context8.abrupt("return", fetchPriceFromOracle(matchingAuToken.address, getDecimal(address), provider));
|
|
2327
2450
|
|
|
2328
|
-
case
|
|
2451
|
+
case 11:
|
|
2329
2452
|
if (!isSameAddress(address, networkAddresses.tokens.AUPLYLP)) {
|
|
2330
|
-
_context8.next =
|
|
2453
|
+
_context8.next = 15;
|
|
2331
2454
|
break;
|
|
2332
2455
|
}
|
|
2333
2456
|
|
|
2334
2457
|
return _context8.abrupt("return", fetchLPPrice(address, provider));
|
|
2335
2458
|
|
|
2336
|
-
case
|
|
2459
|
+
case 15:
|
|
2337
2460
|
return _context8.abrupt("return", fetchPriceFromCoingecko(address));
|
|
2338
2461
|
|
|
2339
|
-
case
|
|
2462
|
+
case 16:
|
|
2340
2463
|
case "end":
|
|
2341
2464
|
return _context8.stop();
|
|
2342
2465
|
}
|
|
@@ -2821,7 +2944,7 @@ var MoneyMarketRead = /*#__PURE__*/function (_BlockchainEntityRead) {
|
|
|
2821
2944
|
|
|
2822
2945
|
_proto.getDepositNEARRewardPerWeek = function getDepositNEARRewardPerWeek() {
|
|
2823
2946
|
var NEARToken = new Token(networkAddresses.tokens.WNEAR, getDecimal(networkAddresses.tokens.WNEAR));
|
|
2824
|
-
var rewardStopTime =
|
|
2947
|
+
var rewardStopTime = 1649253600;
|
|
2825
2948
|
|
|
2826
2949
|
if (isSameAddress(this.underlying.address, networkAddresses.tokens.USDC) && getCurrentTimestamp() <= rewardStopTime) {
|
|
2827
2950
|
return new TokenAmount(NEARToken, "1250", false);
|
|
@@ -2832,7 +2955,7 @@ var MoneyMarketRead = /*#__PURE__*/function (_BlockchainEntityRead) {
|
|
|
2832
2955
|
|
|
2833
2956
|
_proto.getBorrowNEARRewardPerWeek = function getBorrowNEARRewardPerWeek() {
|
|
2834
2957
|
var NEARToken = new Token(networkAddresses.tokens.WNEAR, getDecimal(networkAddresses.tokens.WNEAR));
|
|
2835
|
-
var rewardStopTime =
|
|
2958
|
+
var rewardStopTime = 1649253600;
|
|
2836
2959
|
|
|
2837
2960
|
if (isSameAddress(this.underlying.address, networkAddresses.tokens.USDC) && getCurrentTimestamp() <= rewardStopTime) {
|
|
2838
2961
|
return new TokenAmount(NEARToken, "3750", false);
|
|
@@ -3552,13 +3675,425 @@ var dummyUserMarketDetails = {
|
|
|
3552
3675
|
underlyingPrice: "1"
|
|
3553
3676
|
};
|
|
3554
3677
|
|
|
3678
|
+
var TransferEventQuery = /*#__PURE__*/function (_BlockchainEntityRead) {
|
|
3679
|
+
_inheritsLoose(TransferEventQuery, _BlockchainEntityRead);
|
|
3680
|
+
|
|
3681
|
+
function TransferEventQuery(tokenAddr, networkConnection) {
|
|
3682
|
+
var _this;
|
|
3683
|
+
|
|
3684
|
+
_this = _BlockchainEntityRead.call(this, networkConnection) || this;
|
|
3685
|
+
_this.auToken = new ethers.Contract(tokenAddr, AuTokenABI.abi, _this._networkConnection.provider);
|
|
3686
|
+
return _this;
|
|
3687
|
+
}
|
|
3688
|
+
|
|
3689
|
+
var _proto = TransferEventQuery.prototype;
|
|
3690
|
+
|
|
3691
|
+
_proto.queryERC20TransfersOf = /*#__PURE__*/function () {
|
|
3692
|
+
var _queryERC20TransfersOf = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee(address, fromBlock, toBlock) {
|
|
3693
|
+
var _this2 = this;
|
|
3694
|
+
|
|
3695
|
+
var filters, events, results;
|
|
3696
|
+
return runtime_1.wrap(function _callee$(_context) {
|
|
3697
|
+
while (1) {
|
|
3698
|
+
switch (_context.prev = _context.next) {
|
|
3699
|
+
case 0:
|
|
3700
|
+
filters = [this.auToken.filters.Transfer(address, null), this.auToken.filters.Transfer(null, address)];
|
|
3701
|
+
_context.next = 3;
|
|
3702
|
+
return Promise.all(filters.map(function (filter) {
|
|
3703
|
+
return _this2.auToken.queryFilter(filter, fromBlock, toBlock);
|
|
3704
|
+
}));
|
|
3705
|
+
|
|
3706
|
+
case 3:
|
|
3707
|
+
events = _context.sent.flat();
|
|
3708
|
+
results = events.map(function (event) {
|
|
3709
|
+
return {
|
|
3710
|
+
from: event.args[0],
|
|
3711
|
+
to: event.args[1],
|
|
3712
|
+
amount: event.args[2],
|
|
3713
|
+
blockNumber: event.blockNumber
|
|
3714
|
+
};
|
|
3715
|
+
});
|
|
3716
|
+
results.sort(function (a, b) {
|
|
3717
|
+
return a.blockNumber - b.blockNumber;
|
|
3718
|
+
});
|
|
3719
|
+
return _context.abrupt("return", results);
|
|
3720
|
+
|
|
3721
|
+
case 7:
|
|
3722
|
+
case "end":
|
|
3723
|
+
return _context.stop();
|
|
3724
|
+
}
|
|
3725
|
+
}
|
|
3726
|
+
}, _callee, this);
|
|
3727
|
+
}));
|
|
3728
|
+
|
|
3729
|
+
function queryERC20TransfersOf(_x, _x2, _x3) {
|
|
3730
|
+
return _queryERC20TransfersOf.apply(this, arguments);
|
|
3731
|
+
}
|
|
3732
|
+
|
|
3733
|
+
return queryERC20TransfersOf;
|
|
3734
|
+
}();
|
|
3735
|
+
|
|
3736
|
+
_proto.queryERC20BalanceAt = /*#__PURE__*/function () {
|
|
3737
|
+
var _queryERC20BalanceAt = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee2(address, endBlock) {
|
|
3738
|
+
return runtime_1.wrap(function _callee2$(_context2) {
|
|
3739
|
+
while (1) {
|
|
3740
|
+
switch (_context2.prev = _context2.next) {
|
|
3741
|
+
case 0:
|
|
3742
|
+
return _context2.abrupt("return", this.auToken.balanceOf(address, {
|
|
3743
|
+
blockTag: endBlock + 1
|
|
3744
|
+
}));
|
|
3745
|
+
|
|
3746
|
+
case 1:
|
|
3747
|
+
case "end":
|
|
3748
|
+
return _context2.stop();
|
|
3749
|
+
}
|
|
3750
|
+
}
|
|
3751
|
+
}, _callee2, this);
|
|
3752
|
+
}));
|
|
3753
|
+
|
|
3754
|
+
function queryERC20BalanceAt(_x4, _x5) {
|
|
3755
|
+
return _queryERC20BalanceAt.apply(this, arguments);
|
|
3756
|
+
}
|
|
3757
|
+
|
|
3758
|
+
return queryERC20BalanceAt;
|
|
3759
|
+
}();
|
|
3760
|
+
|
|
3761
|
+
return TransferEventQuery;
|
|
3762
|
+
}(BlockchainEntityRead);
|
|
3763
|
+
|
|
3764
|
+
var AirdropSettings = /*#__PURE__*/function () {
|
|
3765
|
+
function AirdropSettings() {
|
|
3766
|
+
this.airdropStartBlock = 0;
|
|
3767
|
+
this.airdropEndBlock = 0;
|
|
3768
|
+
this.airdropStartTimestamp = AIRDROP_START_TIMESTAMP;
|
|
3769
|
+
this.airdropEndTimestamp = AIRDROP_END_TIMESTAMP;
|
|
3770
|
+
this.airdropThreshold = AIRDROP_KEEP_THRESHOLD;
|
|
3771
|
+
}
|
|
3772
|
+
|
|
3773
|
+
AirdropSettings.getSettings = /*#__PURE__*/function () {
|
|
3774
|
+
var _getSettings = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee(provider) {
|
|
3775
|
+
var settings;
|
|
3776
|
+
return runtime_1.wrap(function _callee$(_context) {
|
|
3777
|
+
while (1) {
|
|
3778
|
+
switch (_context.prev = _context.next) {
|
|
3779
|
+
case 0:
|
|
3780
|
+
if (!this._instance) {
|
|
3781
|
+
_context.next = 2;
|
|
3782
|
+
break;
|
|
3783
|
+
}
|
|
3784
|
+
|
|
3785
|
+
return _context.abrupt("return", this._instance);
|
|
3786
|
+
|
|
3787
|
+
case 2:
|
|
3788
|
+
settings = new AirdropSettings();
|
|
3789
|
+
_context.next = 5;
|
|
3790
|
+
return getBlockBeforeTimestamp(provider, settings.airdropStartTimestamp, 63317969);
|
|
3791
|
+
|
|
3792
|
+
case 5:
|
|
3793
|
+
settings.airdropStartBlock = _context.sent;
|
|
3794
|
+
_context.next = 8;
|
|
3795
|
+
return getBlockBeforeTimestamp(provider, settings.airdropEndTimestamp, settings.airdropStartBlock);
|
|
3796
|
+
|
|
3797
|
+
case 8:
|
|
3798
|
+
settings.airdropEndBlock = _context.sent;
|
|
3799
|
+
this._instance = settings;
|
|
3800
|
+
return _context.abrupt("return", settings);
|
|
3801
|
+
|
|
3802
|
+
case 11:
|
|
3803
|
+
case "end":
|
|
3804
|
+
return _context.stop();
|
|
3805
|
+
}
|
|
3806
|
+
}
|
|
3807
|
+
}, _callee, this);
|
|
3808
|
+
}));
|
|
3809
|
+
|
|
3810
|
+
function getSettings(_x) {
|
|
3811
|
+
return _getSettings.apply(this, arguments);
|
|
3812
|
+
}
|
|
3813
|
+
|
|
3814
|
+
return getSettings;
|
|
3815
|
+
}();
|
|
3816
|
+
|
|
3817
|
+
return AirdropSettings;
|
|
3818
|
+
}();
|
|
3819
|
+
|
|
3820
|
+
var AirdropAuTokenKeepTracker = /*#__PURE__*/function (_BlockchainEntityRead) {
|
|
3821
|
+
_inheritsLoose(AirdropAuTokenKeepTracker, _BlockchainEntityRead);
|
|
3822
|
+
|
|
3823
|
+
function AirdropAuTokenKeepTracker(networkConnection, airdropAuTokenInfo) {
|
|
3824
|
+
var _this;
|
|
3825
|
+
|
|
3826
|
+
_this = _BlockchainEntityRead.call(this, networkConnection) || this;
|
|
3827
|
+
_this._transferQuery = new TransferEventQuery(airdropAuTokenInfo.address, networkConnection);
|
|
3828
|
+
_this._airdropAuTokenInfo = airdropAuTokenInfo;
|
|
3829
|
+
_this._airdropAuTokenInfo.exchangeRate = _this._airdropAuTokenInfo.exchangeRate.add(_this._airdropAuTokenInfo.exchangeRate.div(50));
|
|
3830
|
+
return _this;
|
|
3831
|
+
}
|
|
3832
|
+
|
|
3833
|
+
var _proto = AirdropAuTokenKeepTracker.prototype;
|
|
3834
|
+
|
|
3835
|
+
_proto._toUnderlyingValue = function _toUnderlyingValue(auTokenAmount) {
|
|
3836
|
+
return auTokenAmount.mul(this._airdropAuTokenInfo.exchangeRate).div(ethers.BigNumber.from(10).pow(18));
|
|
3837
|
+
};
|
|
3838
|
+
|
|
3839
|
+
_proto.isEligible = /*#__PURE__*/function () {
|
|
3840
|
+
var _isEligible = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee2(address) {
|
|
3841
|
+
var settings, minDeposit, balance, BELOW, ABOVE, flag, lastEligibleBalanceTimestamp, events, _iterator, _step, _step$value, from, to, amount, blockNumber, _timestamp, timestamp;
|
|
3842
|
+
|
|
3843
|
+
return runtime_1.wrap(function _callee2$(_context2) {
|
|
3844
|
+
while (1) {
|
|
3845
|
+
switch (_context2.prev = _context2.next) {
|
|
3846
|
+
case 0:
|
|
3847
|
+
_context2.next = 2;
|
|
3848
|
+
return AirdropSettings.getSettings(this._networkConnection.provider);
|
|
3849
|
+
|
|
3850
|
+
case 2:
|
|
3851
|
+
settings = _context2.sent;
|
|
3852
|
+
minDeposit = this._airdropAuTokenInfo.underlying.minDeposit;
|
|
3853
|
+
_context2.next = 6;
|
|
3854
|
+
return this._transferQuery.queryERC20BalanceAt(address, settings.airdropStartBlock - 1);
|
|
3855
|
+
|
|
3856
|
+
case 6:
|
|
3857
|
+
balance = _context2.sent;
|
|
3858
|
+
BELOW = false, ABOVE = true;
|
|
3859
|
+
flag = BELOW;
|
|
3860
|
+
lastEligibleBalanceTimestamp = 0;
|
|
3861
|
+
|
|
3862
|
+
if (this._toUnderlyingValue(balance).gte(minDeposit)) {
|
|
3863
|
+
lastEligibleBalanceTimestamp = settings.airdropStartTimestamp;
|
|
3864
|
+
flag = ABOVE;
|
|
3865
|
+
}
|
|
3866
|
+
|
|
3867
|
+
_context2.next = 13;
|
|
3868
|
+
return this._transferQuery.queryERC20TransfersOf(address, settings.airdropStartBlock, settings.airdropEndBlock);
|
|
3869
|
+
|
|
3870
|
+
case 13:
|
|
3871
|
+
events = _context2.sent;
|
|
3872
|
+
_iterator = _createForOfIteratorHelperLoose(events);
|
|
3873
|
+
|
|
3874
|
+
case 15:
|
|
3875
|
+
if ((_step = _iterator()).done) {
|
|
3876
|
+
_context2.next = 33;
|
|
3877
|
+
break;
|
|
3878
|
+
}
|
|
3879
|
+
|
|
3880
|
+
_step$value = _step.value, from = _step$value.from, to = _step$value.to, amount = _step$value.amount, blockNumber = _step$value.blockNumber;
|
|
3881
|
+
|
|
3882
|
+
if (from == address) {
|
|
3883
|
+
balance = balance.sub(amount);
|
|
3884
|
+
}
|
|
3885
|
+
|
|
3886
|
+
if (to == address) {
|
|
3887
|
+
balance = balance.add(amount);
|
|
3888
|
+
}
|
|
3889
|
+
|
|
3890
|
+
if (!(this._toUnderlyingValue(balance).gte(minDeposit) != flag)) {
|
|
3891
|
+
_context2.next = 31;
|
|
3892
|
+
break;
|
|
3893
|
+
}
|
|
3894
|
+
|
|
3895
|
+
flag = !flag;
|
|
3896
|
+
_context2.next = 23;
|
|
3897
|
+
return this._networkConnection.provider.getBlock(blockNumber);
|
|
3898
|
+
|
|
3899
|
+
case 23:
|
|
3900
|
+
_timestamp = _context2.sent.timestamp;
|
|
3901
|
+
|
|
3902
|
+
if (!(flag == BELOW)) {
|
|
3903
|
+
_context2.next = 30;
|
|
3904
|
+
break;
|
|
3905
|
+
}
|
|
3906
|
+
|
|
3907
|
+
if (!(_timestamp - lastEligibleBalanceTimestamp >= settings.airdropThreshold)) {
|
|
3908
|
+
_context2.next = 27;
|
|
3909
|
+
break;
|
|
3910
|
+
}
|
|
3911
|
+
|
|
3912
|
+
return _context2.abrupt("return", true);
|
|
3913
|
+
|
|
3914
|
+
case 27:
|
|
3915
|
+
lastEligibleBalanceTimestamp = 0;
|
|
3916
|
+
_context2.next = 31;
|
|
3917
|
+
break;
|
|
3918
|
+
|
|
3919
|
+
case 30:
|
|
3920
|
+
lastEligibleBalanceTimestamp = _timestamp;
|
|
3921
|
+
|
|
3922
|
+
case 31:
|
|
3923
|
+
_context2.next = 15;
|
|
3924
|
+
break;
|
|
3925
|
+
|
|
3926
|
+
case 33:
|
|
3927
|
+
if (!(flag == ABOVE)) {
|
|
3928
|
+
_context2.next = 36;
|
|
3929
|
+
break;
|
|
3930
|
+
}
|
|
3931
|
+
|
|
3932
|
+
timestamp = Math.min(settings.airdropEndTimestamp, getCurrentTimestamp());
|
|
3933
|
+
return _context2.abrupt("return", timestamp - lastEligibleBalanceTimestamp >= settings.airdropThreshold);
|
|
3934
|
+
|
|
3935
|
+
case 36:
|
|
3936
|
+
return _context2.abrupt("return", false);
|
|
3937
|
+
|
|
3938
|
+
case 37:
|
|
3939
|
+
case "end":
|
|
3940
|
+
return _context2.stop();
|
|
3941
|
+
}
|
|
3942
|
+
}
|
|
3943
|
+
}, _callee2, this);
|
|
3944
|
+
}));
|
|
3945
|
+
|
|
3946
|
+
function isEligible(_x2) {
|
|
3947
|
+
return _isEligible.apply(this, arguments);
|
|
3948
|
+
}
|
|
3949
|
+
|
|
3950
|
+
return isEligible;
|
|
3951
|
+
}();
|
|
3952
|
+
|
|
3953
|
+
return AirdropAuTokenKeepTracker;
|
|
3954
|
+
}(BlockchainEntityRead);
|
|
3955
|
+
|
|
3956
|
+
var AirdropRead = /*#__PURE__*/function (_BlockchainEntityRead2) {
|
|
3957
|
+
_inheritsLoose(AirdropRead, _BlockchainEntityRead2);
|
|
3958
|
+
|
|
3959
|
+
function AirdropRead(networkConnection) {
|
|
3960
|
+
var _this2;
|
|
3961
|
+
|
|
3962
|
+
_this2 = _BlockchainEntityRead2.call(this, networkConnection) || this;
|
|
3963
|
+
_this2.keepTrackers = [];
|
|
3964
|
+
_this2._whitelistedAddresses = new Set(FileSystem.readFileSync("airdrop_misc/whitelist.txt").toString().trim().split('\n'));
|
|
3965
|
+
var auTokens = JSON.parse(FileSystem.readFileSync("airdrop_misc/auTokensInfo.json").toString());
|
|
3966
|
+
|
|
3967
|
+
for (var auToken in auTokens) {
|
|
3968
|
+
var _auTokens$auToken = auTokens[auToken],
|
|
3969
|
+
address = _auTokens$auToken.address,
|
|
3970
|
+
exchangeRate = _auTokens$auToken.exchangeRate,
|
|
3971
|
+
deploymentBlock = _auTokens$auToken.deploymentBlock,
|
|
3972
|
+
underlying = _auTokens$auToken.underlying;
|
|
3973
|
+
var airdropInfo = {
|
|
3974
|
+
address: address,
|
|
3975
|
+
exchangeRate: ethers.BigNumber.from(exchangeRate),
|
|
3976
|
+
deploymentBlock: parseInt(deploymentBlock),
|
|
3977
|
+
underlying: {
|
|
3978
|
+
minDeposit: ethers.BigNumber.from(underlying.minDeposit)
|
|
3979
|
+
}
|
|
3980
|
+
};
|
|
3981
|
+
|
|
3982
|
+
_this2.keepTrackers.push(new AirdropAuTokenKeepTracker(networkConnection, airdropInfo));
|
|
3983
|
+
}
|
|
3984
|
+
|
|
3985
|
+
return _this2;
|
|
3986
|
+
}
|
|
3987
|
+
|
|
3988
|
+
var _proto2 = AirdropRead.prototype;
|
|
3989
|
+
|
|
3990
|
+
_proto2.countWhitelistedAddresses = function countWhitelistedAddresses() {
|
|
3991
|
+
return this._whitelistedAddresses.size;
|
|
3992
|
+
};
|
|
3993
|
+
|
|
3994
|
+
_proto2.isWhitelisted = function isWhitelisted(user) {
|
|
3995
|
+
return this._whitelistedAddresses.has(user);
|
|
3996
|
+
};
|
|
3997
|
+
|
|
3998
|
+
_proto2.hasCompletedChallenge = /*#__PURE__*/function () {
|
|
3999
|
+
var _hasCompletedChallenge = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee4(user) {
|
|
4000
|
+
var settings;
|
|
4001
|
+
return runtime_1.wrap(function _callee4$(_context4) {
|
|
4002
|
+
while (1) {
|
|
4003
|
+
switch (_context4.prev = _context4.next) {
|
|
4004
|
+
case 0:
|
|
4005
|
+
_context4.next = 2;
|
|
4006
|
+
return AirdropSettings.getSettings(this._networkConnection.provider);
|
|
4007
|
+
|
|
4008
|
+
case 2:
|
|
4009
|
+
settings = _context4.sent;
|
|
4010
|
+
|
|
4011
|
+
if (!(getCurrentTimestamp() < settings.airdropStartTimestamp)) {
|
|
4012
|
+
_context4.next = 5;
|
|
4013
|
+
break;
|
|
4014
|
+
}
|
|
4015
|
+
|
|
4016
|
+
return _context4.abrupt("return", false);
|
|
4017
|
+
|
|
4018
|
+
case 5:
|
|
4019
|
+
if (this.isWhitelisted(user)) {
|
|
4020
|
+
_context4.next = 7;
|
|
4021
|
+
break;
|
|
4022
|
+
}
|
|
4023
|
+
|
|
4024
|
+
return _context4.abrupt("return", false);
|
|
4025
|
+
|
|
4026
|
+
case 7:
|
|
4027
|
+
_context4.next = 9;
|
|
4028
|
+
return Promise.all(this.keepTrackers.map( /*#__PURE__*/function () {
|
|
4029
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee3(keepTracker) {
|
|
4030
|
+
return runtime_1.wrap(function _callee3$(_context3) {
|
|
4031
|
+
while (1) {
|
|
4032
|
+
switch (_context3.prev = _context3.next) {
|
|
4033
|
+
case 0:
|
|
4034
|
+
return _context3.abrupt("return", keepTracker.isEligible(user));
|
|
4035
|
+
|
|
4036
|
+
case 1:
|
|
4037
|
+
case "end":
|
|
4038
|
+
return _context3.stop();
|
|
4039
|
+
}
|
|
4040
|
+
}
|
|
4041
|
+
}, _callee3);
|
|
4042
|
+
}));
|
|
4043
|
+
|
|
4044
|
+
return function (_x4) {
|
|
4045
|
+
return _ref.apply(this, arguments);
|
|
4046
|
+
};
|
|
4047
|
+
}()));
|
|
4048
|
+
|
|
4049
|
+
case 9:
|
|
4050
|
+
return _context4.abrupt("return", _context4.sent.includes(true));
|
|
4051
|
+
|
|
4052
|
+
case 10:
|
|
4053
|
+
case "end":
|
|
4054
|
+
return _context4.stop();
|
|
4055
|
+
}
|
|
4056
|
+
}
|
|
4057
|
+
}, _callee4, this);
|
|
4058
|
+
}));
|
|
4059
|
+
|
|
4060
|
+
function hasCompletedChallenge(_x3) {
|
|
4061
|
+
return _hasCompletedChallenge.apply(this, arguments);
|
|
4062
|
+
}
|
|
4063
|
+
|
|
4064
|
+
return hasCompletedChallenge;
|
|
4065
|
+
}();
|
|
4066
|
+
|
|
4067
|
+
return AirdropRead;
|
|
4068
|
+
}(BlockchainEntityRead);
|
|
4069
|
+
var Airdrop = /*#__PURE__*/function (_BlockchainEntity) {
|
|
4070
|
+
_inheritsLoose(Airdrop, _BlockchainEntity);
|
|
4071
|
+
|
|
4072
|
+
function Airdrop() {
|
|
4073
|
+
return _BlockchainEntity.call(this) || this;
|
|
4074
|
+
}
|
|
4075
|
+
|
|
4076
|
+
var _proto3 = Airdrop.prototype;
|
|
4077
|
+
|
|
4078
|
+
_proto3.read = function read(networkConnection) {
|
|
4079
|
+
return new AirdropRead(networkConnection);
|
|
4080
|
+
};
|
|
4081
|
+
|
|
4082
|
+
return Airdrop;
|
|
4083
|
+
}(BlockchainEntity);
|
|
4084
|
+
|
|
3555
4085
|
ethers.ethers.utils.Logger.setLogLevel(utils.Logger.levels.ERROR);
|
|
3556
4086
|
BigNumber.config({
|
|
3557
4087
|
DECIMAL_PLACES: 50
|
|
3558
4088
|
});
|
|
3559
4089
|
|
|
4090
|
+
exports.AIRDROP_END_TIMESTAMP = AIRDROP_END_TIMESTAMP;
|
|
4091
|
+
exports.AIRDROP_KEEP_THRESHOLD = AIRDROP_KEEP_THRESHOLD;
|
|
4092
|
+
exports.AIRDROP_START_TIMESTAMP = AIRDROP_START_TIMESTAMP;
|
|
3560
4093
|
exports.AURORA_CHAINID = AURORA_CHAINID;
|
|
3561
4094
|
exports.AURPLYToken = AURPLYToken;
|
|
4095
|
+
exports.Airdrop = Airdrop;
|
|
4096
|
+
exports.AirdropRead = AirdropRead;
|
|
3562
4097
|
exports.AurPlyPid = AurPlyPid;
|
|
3563
4098
|
exports.BORROW_LIMIT_BUFFER = BORROW_LIMIT_BUFFER;
|
|
3564
4099
|
exports.BlockchainEntity = BlockchainEntity;
|
|
@@ -3579,6 +4114,7 @@ exports.SdkRead = SdkRead;
|
|
|
3579
4114
|
exports.SdkReadWrite = SdkReadWrite;
|
|
3580
4115
|
exports.Token = Token;
|
|
3581
4116
|
exports.TokenAmount = TokenAmount;
|
|
4117
|
+
exports.TransferEventQuery = TransferEventQuery;
|
|
3582
4118
|
exports.calcLMRewardApr = calcLMRewardApr;
|
|
3583
4119
|
exports.calcValuation = calcValuation;
|
|
3584
4120
|
exports.decimalFactor = decimalFactor;
|
|
@@ -3602,6 +4138,8 @@ exports.fetchStNEARPrice = fetchStNEARPrice;
|
|
|
3602
4138
|
exports.fetchUnderlyingTokensPrices = fetchUnderlyingTokensPrices;
|
|
3603
4139
|
exports.fetchValuation = fetchValuation;
|
|
3604
4140
|
exports.formatObject = formatObject;
|
|
4141
|
+
exports.getBlockBeforeTimestamp = getBlockBeforeTimestamp;
|
|
4142
|
+
exports.getBlockTimestamp = getBlockTimestamp;
|
|
3605
4143
|
exports.getCurrentTimestamp = getCurrentTimestamp;
|
|
3606
4144
|
exports.getDecimal = getDecimal;
|
|
3607
4145
|
exports.isSameAddress = isSameAddress;
|