@subwallet/extension-base 1.1.34-0 → 1.1.35-beta.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/background/KoniTypes.d.ts +111 -69
- package/background/KoniTypes.js +19 -13
- package/background/errors/TransactionError.js +9 -0
- package/cjs/background/KoniTypes.js +20 -16
- package/cjs/background/errors/TransactionError.js +9 -0
- package/cjs/constants/index.js +19 -4
- package/cjs/constants/staking.js +1 -1
- package/cjs/koni/api/dotsama/balance.js +464 -0
- package/cjs/koni/api/nft/config.js +33 -23
- package/cjs/koni/api/nft/index.js +14 -0
- package/cjs/koni/api/nft/nft.js +1 -22
- package/cjs/koni/api/nft/ordinal_nft/constants.js +21 -0
- package/cjs/koni/api/nft/ordinal_nft/index.js +121 -0
- package/cjs/koni/api/nft/ordinal_nft/utils.js +41 -0
- package/cjs/koni/api/staking/bonding/amplitude.js +19 -16
- package/cjs/koni/api/staking/bonding/astar.js +11 -10
- package/cjs/koni/api/staking/bonding/index.js +4 -1
- package/cjs/koni/api/staking/bonding/paraChain.js +25 -23
- package/cjs/koni/api/staking/bonding/relayChain.js +48 -45
- package/cjs/koni/api/staking/bonding/utils.js +104 -86
- package/cjs/koni/api/staking/index.js +6 -5
- package/cjs/koni/api/staking/paraChain.js +6 -5
- package/cjs/koni/api/staking/relayChain.js +3 -2
- package/cjs/koni/api/yield/helper/utils.js +46 -0
- package/cjs/koni/background/cron.js +3 -21
- package/cjs/koni/background/handlers/Extension.js +368 -69
- package/cjs/koni/background/handlers/State.js +18 -12
- package/cjs/koni/background/handlers/index.js +4 -2
- package/cjs/koni/background/subscription.js +7 -104
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/campaign-service/index.js +9 -6
- package/cjs/services/chain-service/constants.js +2 -17
- package/cjs/services/chain-service/index.js +50 -3
- package/cjs/services/chain-service/utils.js +7 -1
- package/cjs/services/earning-service/constants/chains.js +30 -0
- package/cjs/services/earning-service/constants/index.js +27 -0
- package/cjs/services/earning-service/constants/step.js +18 -0
- package/cjs/services/earning-service/handlers/base.js +262 -0
- package/cjs/services/earning-service/handlers/index.js +60 -0
- package/cjs/services/earning-service/handlers/lending/base.js +81 -0
- package/cjs/services/earning-service/handlers/lending/index.js +13 -0
- package/cjs/services/earning-service/handlers/lending/interlay.js +192 -0
- package/cjs/services/earning-service/handlers/liquid-staking/acala.js +240 -0
- package/cjs/services/earning-service/handlers/liquid-staking/base.js +97 -0
- package/cjs/services/earning-service/handlers/liquid-staking/bifrost-manta.js +140 -0
- package/cjs/services/earning-service/handlers/liquid-staking/bifrost.js +298 -0
- package/cjs/services/earning-service/handlers/liquid-staking/index.js +34 -0
- package/cjs/services/earning-service/handlers/liquid-staking/parallel.js +227 -0
- package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +404 -0
- package/cjs/services/earning-service/handlers/native-staking/amplitude.js +434 -0
- package/cjs/services/earning-service/handlers/native-staking/astar.js +466 -0
- package/cjs/services/earning-service/handlers/native-staking/base-para.js +146 -0
- package/cjs/services/earning-service/handlers/native-staking/base.js +161 -0
- package/cjs/services/earning-service/handlers/native-staking/index.js +34 -0
- package/cjs/services/earning-service/handlers/native-staking/para-chain.js +390 -0
- package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +567 -0
- package/cjs/services/earning-service/handlers/nomination-pool/index.js +566 -0
- package/cjs/services/earning-service/handlers/special.js +493 -0
- package/cjs/services/earning-service/service.js +733 -0
- package/cjs/services/earning-service/utils/index.js +128 -0
- package/cjs/services/event-service/index.js +5 -0
- package/cjs/services/keyring-service/index.js +14 -2
- package/cjs/services/migration-service/scripts/DeleteEarningData.js +21 -0
- package/cjs/services/migration-service/scripts/EnableEarningChains.js +21 -0
- package/cjs/services/migration-service/scripts/MigrateEthProvider.js +17 -0
- package/cjs/services/migration-service/scripts/MigrateLedgerAccount.js +1 -1
- package/cjs/services/migration-service/scripts/MigratePioneerProvider.js +17 -0
- package/cjs/services/migration-service/scripts/MigrateProvider.js +29 -0
- package/cjs/services/migration-service/scripts/MigrateTransactionHistory.js +1 -1
- package/cjs/services/migration-service/scripts/databases/MigrateEarningHistory.js +21 -0
- package/cjs/services/migration-service/scripts/databases/MigrateEarningVersion.js +21 -0
- package/cjs/services/migration-service/scripts/index.js +6 -1
- package/cjs/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +149 -0
- package/cjs/services/mint-campaign-service/campaigns/index.js +13 -0
- package/cjs/services/mint-campaign-service/constants.js +11 -0
- package/cjs/services/mint-campaign-service/index.js +18 -0
- package/cjs/services/notification-service/NotificationService.js +3 -2
- package/cjs/services/request-service/handler/PopupHandler.js +2 -3
- package/cjs/services/storage-service/DatabaseService.js +97 -0
- package/cjs/services/storage-service/databases/index.js +4 -0
- package/cjs/services/storage-service/db-stores/AssetRef.js +24 -0
- package/cjs/services/storage-service/db-stores/NominatorMetadata.js +3 -3
- package/cjs/services/storage-service/db-stores/YieldPoolStore.js +36 -0
- package/cjs/services/storage-service/db-stores/YieldPositionStore.js +71 -0
- package/cjs/services/storage-service/index.js +241 -0
- package/cjs/services/subscan-service/index.js +16 -0
- package/cjs/services/transaction-service/event-parser/index.js +58 -0
- package/cjs/services/transaction-service/helpers/index.js +3 -1
- package/cjs/services/transaction-service/index.js +249 -75
- package/cjs/services/transaction-service/utils.js +1 -0
- package/cjs/types/campaigns/index.js +16 -0
- package/cjs/types/campaigns/unlock-dot.js +1 -0
- package/cjs/types/index.js +44 -0
- package/cjs/types/ordinal.js +1 -0
- package/cjs/types/transaction.js +1 -0
- package/cjs/types/yield/actions/index.js +27 -0
- package/cjs/types/yield/actions/join/index.js +38 -0
- package/cjs/types/yield/actions/join/step.js +47 -0
- package/cjs/types/yield/actions/join/submit.js +1 -0
- package/cjs/types/yield/actions/join/validate.js +16 -0
- package/cjs/types/yield/actions/others.js +1 -0
- package/cjs/types/yield/index.js +27 -0
- package/cjs/types/yield/info/account/index.js +49 -0
- package/cjs/types/yield/info/account/info.js +1 -0
- package/cjs/types/yield/info/account/reward.js +1 -0
- package/cjs/types/yield/info/account/target.js +32 -0
- package/cjs/types/yield/info/account/unstake.js +27 -0
- package/cjs/types/yield/info/base.js +41 -0
- package/cjs/types/yield/info/chain/index.js +27 -0
- package/cjs/types/yield/info/chain/info.js +1 -0
- package/cjs/types/yield/info/chain/target.js +1 -0
- package/cjs/types/yield/info/index.js +49 -0
- package/cjs/types/yield/info/pallet.js +15 -0
- package/cjs/types.js +1 -0
- package/cjs/utils/address.js +34 -0
- package/cjs/utils/environment.js +23 -28
- package/cjs/utils/fetchStaticCache.js +22 -0
- package/cjs/utils/fetchStaticData.js +2 -1
- package/cjs/utils/index.js +94 -10
- package/cjs/utils/keyring.js +57 -0
- package/cjs/utils/mv3.js +14 -0
- package/cjs/utils/number.js +6 -2
- package/cjs/utils/object.js +12 -0
- package/constants/index.d.ts +6 -1
- package/constants/index.js +6 -1
- package/constants/staking.js +1 -1
- package/koni/api/nft/config.js +33 -23
- package/koni/api/nft/index.js +15 -1
- package/koni/api/nft/nft.js +2 -23
- package/koni/api/nft/ordinal_nft/constants.d.ts +9 -0
- package/koni/api/nft/ordinal_nft/constants.js +12 -0
- package/koni/api/nft/ordinal_nft/index.d.ts +8 -0
- package/koni/api/nft/ordinal_nft/index.js +114 -0
- package/koni/api/nft/ordinal_nft/utils.d.ts +2 -0
- package/koni/api/nft/ordinal_nft/utils.js +33 -0
- package/koni/api/staking/bonding/amplitude.js +13 -10
- package/koni/api/staking/bonding/astar.js +9 -8
- package/koni/api/staking/bonding/index.d.ts +1 -1
- package/koni/api/staking/bonding/index.js +5 -1
- package/koni/api/staking/bonding/paraChain.js +12 -10
- package/koni/api/staking/bonding/relayChain.d.ts +2 -2
- package/koni/api/staking/bonding/relayChain.js +33 -30
- package/koni/api/staking/bonding/utils.d.ts +15 -38
- package/koni/api/staking/bonding/utils.js +85 -69
- package/koni/api/staking/index.js +2 -1
- package/koni/api/staking/paraChain.js +7 -6
- package/koni/api/staking/relayChain.js +4 -3
- package/koni/api/yield/helper/utils.d.ts +10 -0
- package/koni/api/yield/helper/utils.js +32 -0
- package/koni/background/cron.d.ts +0 -4
- package/koni/background/cron.js +4 -22
- package/koni/background/handlers/Extension.d.ts +17 -1
- package/koni/background/handlers/Extension.js +327 -30
- package/koni/background/handlers/State.d.ts +6 -1
- package/koni/background/handlers/State.js +17 -12
- package/koni/background/handlers/index.js +4 -2
- package/koni/background/subscription.d.ts +1 -6
- package/koni/background/subscription.js +8 -104
- package/package.json +335 -7
- package/packageInfo.js +1 -1
- package/services/campaign-service/index.js +9 -6
- package/services/chain-service/constants.d.ts +1 -13
- package/services/chain-service/constants.js +1 -15
- package/services/chain-service/index.d.ts +3 -0
- package/services/chain-service/index.js +50 -3
- package/services/chain-service/utils.d.ts +1 -0
- package/services/chain-service/utils.js +5 -1
- package/services/earning-service/constants/abis/compound_finance_v2_abi.json +1235 -0
- package/services/earning-service/constants/abis/st_liquid_token_abi.json +1355 -0
- package/services/earning-service/constants/chains.d.ts +15 -0
- package/services/earning-service/constants/chains.js +22 -0
- package/services/earning-service/constants/index.d.ts +2 -0
- package/services/earning-service/constants/index.js +5 -0
- package/services/earning-service/constants/step.d.ts +3 -0
- package/services/earning-service/constants/step.js +10 -0
- package/services/earning-service/handlers/base.d.ts +113 -0
- package/services/earning-service/handlers/base.js +256 -0
- package/services/earning-service/handlers/index.d.ts +5 -0
- package/services/earning-service/handlers/index.js +8 -0
- package/services/earning-service/handlers/lending/base.d.ts +8 -0
- package/services/earning-service/handlers/lending/base.js +73 -0
- package/services/earning-service/handlers/lending/index.d.ts +1 -0
- package/services/earning-service/handlers/lending/index.js +4 -0
- package/services/earning-service/handlers/lending/interlay.d.ts +24 -0
- package/services/earning-service/handlers/lending/interlay.js +184 -0
- package/services/earning-service/handlers/liquid-staking/acala.d.ts +27 -0
- package/services/earning-service/handlers/liquid-staking/acala.js +232 -0
- package/services/earning-service/handlers/liquid-staking/base.d.ts +11 -0
- package/services/earning-service/handlers/liquid-staking/base.js +89 -0
- package/services/earning-service/handlers/liquid-staking/bifrost.d.ts +46 -0
- package/services/earning-service/handlers/liquid-staking/bifrost.js +287 -0
- package/services/earning-service/handlers/liquid-staking/index.d.ts +4 -0
- package/services/earning-service/handlers/liquid-staking/index.js +7 -0
- package/services/earning-service/handlers/liquid-staking/parallel.d.ts +26 -0
- package/services/earning-service/handlers/liquid-staking/parallel.js +219 -0
- package/services/earning-service/handlers/liquid-staking/stella-swap.d.ts +34 -0
- package/services/earning-service/handlers/liquid-staking/stella-swap.js +394 -0
- package/services/earning-service/handlers/native-staking/amplitude.d.ts +22 -0
- package/services/earning-service/handlers/native-staking/amplitude.js +425 -0
- package/services/earning-service/handlers/native-staking/astar.d.ts +19 -0
- package/services/earning-service/handlers/native-staking/astar.js +456 -0
- package/services/earning-service/handlers/native-staking/base-para.d.ts +11 -0
- package/services/earning-service/handlers/native-staking/base-para.js +138 -0
- package/services/earning-service/handlers/native-staking/base.d.ts +21 -0
- package/services/earning-service/handlers/native-staking/base.js +152 -0
- package/services/earning-service/handlers/native-staking/index.d.ts +4 -0
- package/services/earning-service/handlers/native-staking/index.js +7 -0
- package/services/earning-service/handlers/native-staking/para-chain.d.ts +15 -0
- package/services/earning-service/handlers/native-staking/para-chain.js +382 -0
- package/services/earning-service/handlers/native-staking/relay-chain.d.ts +21 -0
- package/services/earning-service/handlers/native-staking/relay-chain.js +558 -0
- package/services/earning-service/handlers/nomination-pool/index.d.ts +36 -0
- package/services/earning-service/handlers/nomination-pool/index.js +556 -0
- package/services/earning-service/handlers/special.d.ts +64 -0
- package/services/earning-service/handlers/special.js +485 -0
- package/services/earning-service/service.d.ts +94 -0
- package/services/earning-service/service.js +722 -0
- package/services/earning-service/utils/index.d.ts +18 -0
- package/services/earning-service/utils/index.js +112 -0
- package/services/event-service/index.d.ts +2 -0
- package/services/event-service/index.js +5 -0
- package/services/event-service/types.d.ts +9 -0
- package/services/keyring-service/index.d.ts +2 -1
- package/services/keyring-service/index.js +14 -2
- package/services/migration-service/scripts/DeleteEarningData.d.ts +4 -0
- package/services/migration-service/scripts/DeleteEarningData.js +13 -0
- package/services/migration-service/scripts/EnableEarningChains.d.ts +4 -0
- package/services/migration-service/scripts/EnableEarningChains.js +13 -0
- package/services/migration-service/scripts/MigrateLedgerAccount.js +1 -1
- package/services/migration-service/scripts/MigrateTransactionHistory.js +1 -1
- package/services/migration-service/scripts/databases/MigrateEarningHistory.d.ts +4 -0
- package/services/migration-service/scripts/databases/MigrateEarningHistory.js +13 -0
- package/services/migration-service/scripts/databases/MigrateEarningVersion.d.ts +4 -0
- package/services/migration-service/scripts/databases/MigrateEarningVersion.js +13 -0
- package/services/migration-service/scripts/index.js +6 -1
- package/services/mint-campaign-service/campaigns/UnlockDotCampaign.d.ts +13 -0
- package/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +139 -0
- package/services/mint-campaign-service/campaigns/index.d.ts +1 -0
- package/services/mint-campaign-service/campaigns/index.js +4 -0
- package/services/mint-campaign-service/constants.d.ts +1 -0
- package/services/mint-campaign-service/constants.js +4 -0
- package/services/mint-campaign-service/index.d.ts +7 -0
- package/services/mint-campaign-service/index.js +11 -0
- package/services/notification-service/NotificationService.js +3 -2
- package/services/request-service/handler/PopupHandler.js +3 -4
- package/services/storage-service/DatabaseService.d.ts +22 -1
- package/services/storage-service/DatabaseService.js +97 -0
- package/services/storage-service/databases/index.d.ts +7 -2
- package/services/storage-service/databases/index.js +4 -0
- package/services/storage-service/db-stores/AssetRef.d.ts +7 -0
- package/services/storage-service/db-stores/AssetRef.js +16 -0
- package/services/storage-service/db-stores/NominatorMetadata.js +3 -3
- package/services/storage-service/db-stores/YieldPoolStore.d.ts +10 -0
- package/services/storage-service/db-stores/YieldPoolStore.js +28 -0
- package/services/storage-service/db-stores/YieldPositionStore.d.ts +11 -0
- package/services/storage-service/db-stores/YieldPositionStore.js +63 -0
- package/services/subscan-service/index.d.ts +3 -2
- package/services/subscan-service/index.js +15 -0
- package/services/subscan-service/types.d.ts +20 -0
- package/services/transaction-service/event-parser/index.d.ts +3 -1
- package/services/transaction-service/event-parser/index.js +57 -1
- package/services/transaction-service/helpers/index.js +3 -1
- package/services/transaction-service/index.d.ts +6 -13
- package/services/transaction-service/index.js +247 -73
- package/services/transaction-service/types.d.ts +2 -0
- package/services/transaction-service/utils.js +1 -0
- package/types/campaigns/index.d.ts +1 -0
- package/types/campaigns/index.js +4 -0
- package/types/campaigns/unlock-dot.d.ts +71 -0
- package/types/campaigns/unlock-dot.js +1 -0
- package/types/index.d.ts +5 -0
- package/types/index.js +5 -1
- package/types/ordinal.d.ts +69 -0
- package/types/ordinal.js +1 -0
- package/types/transaction.d.ts +3 -0
- package/types/transaction.js +1 -0
- package/types/yield/actions/index.d.ts +2 -0
- package/types/yield/actions/index.js +5 -0
- package/types/yield/actions/join/index.d.ts +3 -0
- package/types/yield/actions/join/index.js +6 -0
- package/types/yield/actions/join/step.d.ts +95 -0
- package/types/yield/actions/join/step.js +46 -0
- package/types/yield/actions/join/submit.d.ts +58 -0
- package/types/yield/actions/join/submit.js +1 -0
- package/types/yield/actions/join/validate.d.ts +18 -0
- package/types/yield/actions/join/validate.js +10 -0
- package/types/yield/actions/others.d.ts +85 -0
- package/types/yield/actions/others.js +1 -0
- package/types/yield/index.d.ts +2 -0
- package/types/yield/index.js +5 -0
- package/types/yield/info/account/index.d.ts +4 -0
- package/types/yield/info/account/index.js +7 -0
- package/types/yield/info/account/info.d.ts +92 -0
- package/types/yield/info/account/info.js +1 -0
- package/types/yield/info/account/reward.d.ts +47 -0
- package/types/yield/info/account/reward.js +1 -0
- package/types/yield/info/account/target.d.ts +43 -0
- package/types/yield/info/account/target.js +27 -0
- package/types/yield/info/account/unstake.d.ts +31 -0
- package/types/yield/info/account/unstake.js +22 -0
- package/types/yield/info/base.d.ts +45 -0
- package/types/yield/info/base.js +36 -0
- package/types/yield/info/chain/index.d.ts +2 -0
- package/types/yield/info/chain/index.js +5 -0
- package/types/yield/info/chain/info.d.ts +252 -0
- package/types/yield/info/chain/info.js +1 -0
- package/types/yield/info/chain/target.d.ts +37 -0
- package/types/yield/info/chain/target.js +1 -0
- package/types/yield/info/index.d.ts +4 -0
- package/types/yield/info/index.js +7 -0
- package/types/yield/info/pallet.d.ts +143 -0
- package/types/yield/info/pallet.js +9 -0
- package/utils/environment.d.ts +9 -2
- package/utils/environment.js +14 -26
- package/utils/fetchStaticCache.d.ts +1 -0
- package/utils/fetchStaticCache.js +14 -0
- package/utils/fetchStaticData.js +2 -1
- package/utils/index.d.ts +5 -1
- package/utils/index.js +53 -3
- package/utils/mv3.d.ts +2 -0
- package/utils/mv3.js +6 -0
- package/utils/number.d.ts +2 -1
- package/utils/number.js +2 -1
- package/utils/object.d.ts +1 -0
- package/utils/object.js +6 -0
|
@@ -0,0 +1,464 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.subscribeBalance = subscribeBalance;
|
|
8
|
+
exports.subscribeEVMBalance = subscribeEVMBalance;
|
|
9
|
+
exports.subscribeSubstrateBalance = subscribeSubstrateBalance;
|
|
10
|
+
var _types = require("@subwallet/chain-list/types");
|
|
11
|
+
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
12
|
+
var _constants = require("@subwallet/extension-base/constants");
|
|
13
|
+
var _balance = require("@subwallet/extension-base/koni/api/tokens/evm/balance");
|
|
14
|
+
var _web = require("@subwallet/extension-base/koni/api/tokens/evm/web3");
|
|
15
|
+
var _wasm = require("@subwallet/extension-base/koni/api/tokens/wasm");
|
|
16
|
+
var _utils = require("@subwallet/extension-base/koni/api/tokens/wasm/utils");
|
|
17
|
+
var _handlers = require("@subwallet/extension-base/koni/background/handlers");
|
|
18
|
+
var _constants2 = require("@subwallet/extension-base/services/chain-service/constants");
|
|
19
|
+
var _utils2 = require("@subwallet/extension-base/services/chain-service/utils");
|
|
20
|
+
var _utils3 = require("@subwallet/extension-base/utils");
|
|
21
|
+
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
22
|
+
var _util = require("@polkadot/util");
|
|
23
|
+
// Copyright 2019-2022 @subwallet/extension-base
|
|
24
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
25
|
+
|
|
26
|
+
// main subscription
|
|
27
|
+
function subscribeBalance(addresses, chainInfoMap, substrateApiMap, evmApiMap, callback) {
|
|
28
|
+
const [substrateAddresses, evmAddresses] = (0, _utils3.categoryAddresses)(addresses);
|
|
29
|
+
|
|
30
|
+
// Looping over each chain
|
|
31
|
+
const unsubList = Object.entries(chainInfoMap).map(async _ref => {
|
|
32
|
+
let [chainSlug, chainInfo] = _ref;
|
|
33
|
+
const useAddresses = (0, _utils2._isChainEvmCompatible)(chainInfo) ? evmAddresses : substrateAddresses;
|
|
34
|
+
if ((0, _utils2._isPureEvmChain)(chainInfo)) {
|
|
35
|
+
const nativeTokenInfo = _handlers.state.getNativeTokenInfo(chainSlug);
|
|
36
|
+
return subscribeEVMBalance(chainSlug, useAddresses, evmApiMap, callback, nativeTokenInfo);
|
|
37
|
+
}
|
|
38
|
+
if (!useAddresses || useAddresses.length === 0 || _constants2._PURE_EVM_CHAINS.indexOf(chainSlug) > -1) {
|
|
39
|
+
const fungibleTokensByChain = _handlers.state.chainService.getFungibleTokensByChain(chainSlug, true);
|
|
40
|
+
const now = new Date().getTime();
|
|
41
|
+
Object.values(fungibleTokensByChain).map(token => {
|
|
42
|
+
return {
|
|
43
|
+
tokenSlug: token.slug,
|
|
44
|
+
free: '0',
|
|
45
|
+
locked: '0',
|
|
46
|
+
state: _KoniTypes.APIItemState.READY,
|
|
47
|
+
timestamp: now
|
|
48
|
+
};
|
|
49
|
+
}).forEach(callback);
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
52
|
+
const networkAPI = await substrateApiMap[chainSlug].isReady;
|
|
53
|
+
return subscribeSubstrateBalance(useAddresses, chainInfo, chainSlug, networkAPI, evmApiMap, callback);
|
|
54
|
+
});
|
|
55
|
+
return () => {
|
|
56
|
+
unsubList.forEach(subProm => {
|
|
57
|
+
subProm.then(unsub => {
|
|
58
|
+
unsub && unsub();
|
|
59
|
+
}).catch(console.error);
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
async function subscribeSubstrateBalance(addresses, chainInfo, chain, networkAPI, evmApiMap, callBack) {
|
|
64
|
+
let unsubNativeToken;
|
|
65
|
+
if (!_constants2._BALANCE_CHAIN_GROUP.kintsugi.includes(chain) && !_constants2._BALANCE_CHAIN_GROUP.genshiro.includes(chain) && !_constants2._BALANCE_CHAIN_GROUP.equilibrium_parachain.includes(chain)) {
|
|
66
|
+
unsubNativeToken = await subscribeWithSystemAccountPallet(addresses, chainInfo, networkAPI.api, callBack);
|
|
67
|
+
}
|
|
68
|
+
let unsubLocalToken;
|
|
69
|
+
let unsubEvmContractToken;
|
|
70
|
+
let unsubWasmContractToken;
|
|
71
|
+
try {
|
|
72
|
+
if (_constants2._BALANCE_CHAIN_GROUP.bifrost.includes(chain)) {
|
|
73
|
+
unsubLocalToken = await subscribeTokensAccountsPallet(addresses, chain, networkAPI.api, callBack);
|
|
74
|
+
} else if (_constants2._BALANCE_CHAIN_GROUP.kintsugi.includes(chain)) {
|
|
75
|
+
unsubLocalToken = await subscribeTokensAccountsPallet(addresses, chain, networkAPI.api, callBack, true);
|
|
76
|
+
} else if (_constants2._BALANCE_CHAIN_GROUP.statemine.includes(chain)) {
|
|
77
|
+
unsubLocalToken = await subscribeAssetsAccountPallet(addresses, chain, networkAPI.api, callBack);
|
|
78
|
+
} else if (_constants2._BALANCE_CHAIN_GROUP.genshiro.includes(chain)) {
|
|
79
|
+
unsubLocalToken = await subscribeEqBalanceAccountPallet(addresses, chain, networkAPI.api, callBack, true);
|
|
80
|
+
} else if (_constants2._BALANCE_CHAIN_GROUP.equilibrium_parachain.includes(chain)) {
|
|
81
|
+
unsubLocalToken = await subscribeEquilibriumTokenBalance(addresses, chain, networkAPI.api, callBack, true);
|
|
82
|
+
} else if (_constants2._BALANCE_CHAIN_GROUP.centrifuge.includes(chain)) {
|
|
83
|
+
unsubLocalToken = await subscribeOrmlTokensPallet(addresses, chain, networkAPI.api, callBack);
|
|
84
|
+
}
|
|
85
|
+
if ((0, _utils2._isChainEvmCompatible)(chainInfo)) {
|
|
86
|
+
unsubEvmContractToken = subscribeERC20Interval(addresses, chain, evmApiMap, callBack);
|
|
87
|
+
}
|
|
88
|
+
if ((0, _utils2._checkSmartContractSupportByChain)(chainInfo, _types._AssetType.PSP22)) {
|
|
89
|
+
// Get sub-token for substrate-based chains
|
|
90
|
+
unsubWasmContractToken = subscribePSP22Balance(addresses, chain, networkAPI.api, callBack);
|
|
91
|
+
}
|
|
92
|
+
} catch (err) {
|
|
93
|
+
console.warn(err);
|
|
94
|
+
}
|
|
95
|
+
return () => {
|
|
96
|
+
unsubNativeToken && unsubNativeToken();
|
|
97
|
+
unsubLocalToken && unsubLocalToken();
|
|
98
|
+
unsubEvmContractToken && unsubEvmContractToken();
|
|
99
|
+
unsubWasmContractToken && unsubWasmContractToken();
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// handler according to different logic
|
|
104
|
+
async function subscribeWithSystemAccountPallet(addresses, chainInfo, networkAPI, callBack) {
|
|
105
|
+
const chainNativeTokenSlug = (0, _utils2._getChainNativeTokenSlug)(chainInfo);
|
|
106
|
+
const unsub = await networkAPI.query.system.account.multi(addresses, async balances => {
|
|
107
|
+
let [total, reserved, miscFrozen, feeFrozen] = [new _util.BN(0), new _util.BN(0), new _util.BN(0), new _util.BN(0)];
|
|
108
|
+
let pooledStakingBalance = _util.BN_ZERO;
|
|
109
|
+
if ((0, _utils2._isSubstrateRelayChain)(chainInfo) && networkAPI.query.nominationPools) {
|
|
110
|
+
var _networkAPI$query$nom;
|
|
111
|
+
const poolMemberDatas = await ((_networkAPI$query$nom = networkAPI.query.nominationPools.poolMembers) === null || _networkAPI$query$nom === void 0 ? void 0 : _networkAPI$query$nom.multi(addresses));
|
|
112
|
+
if (poolMemberDatas) {
|
|
113
|
+
for (const _poolMemberData of poolMemberDatas) {
|
|
114
|
+
const poolMemberData = _poolMemberData.toPrimitive();
|
|
115
|
+
if (poolMemberData) {
|
|
116
|
+
const pooledBalance = new _util.BN(poolMemberData.points.toString());
|
|
117
|
+
pooledStakingBalance = pooledStakingBalance.add(pooledBalance);
|
|
118
|
+
Object.entries(poolMemberData.unbondingEras).forEach(_ref2 => {
|
|
119
|
+
let [, amount] = _ref2;
|
|
120
|
+
pooledStakingBalance = pooledStakingBalance.add(new _util.BN(amount));
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
balances.forEach(balance => {
|
|
127
|
+
var _balance$data, _balance$data$free, _balance$data2, _balance$data2$reserv, _balance$data3, _balance$data3$miscFr, _balance$data4, _balance$data4$frozen, _balance$data5, _balance$data5$feeFro;
|
|
128
|
+
total = total.add(((_balance$data = balance.data) === null || _balance$data === void 0 ? void 0 : (_balance$data$free = _balance$data.free) === null || _balance$data$free === void 0 ? void 0 : _balance$data$free.toBn()) || new _util.BN(0)); // reserved is seperated
|
|
129
|
+
reserved = reserved.add(((_balance$data2 = balance.data) === null || _balance$data2 === void 0 ? void 0 : (_balance$data2$reserv = _balance$data2.reserved) === null || _balance$data2$reserv === void 0 ? void 0 : _balance$data2$reserv.toBn()) || new _util.BN(0));
|
|
130
|
+
// @ts-ignore
|
|
131
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
|
|
132
|
+
miscFrozen = miscFrozen.add(((_balance$data3 = balance.data) === null || _balance$data3 === void 0 ? void 0 : (_balance$data3$miscFr = _balance$data3.miscFrozen) === null || _balance$data3$miscFr === void 0 ? void 0 : _balance$data3$miscFr.toBn()) || (balance === null || balance === void 0 ? void 0 : (_balance$data4 = balance.data) === null || _balance$data4 === void 0 ? void 0 : (_balance$data4$frozen = _balance$data4.frozen) === null || _balance$data4$frozen === void 0 ? void 0 : _balance$data4$frozen.toBn()) || new _util.BN(0)); // TODO: update frozen
|
|
133
|
+
feeFrozen = feeFrozen.add(((_balance$data5 = balance.data) === null || _balance$data5 === void 0 ? void 0 : (_balance$data5$feeFro = _balance$data5.feeFrozen) === null || _balance$data5$feeFro === void 0 ? void 0 : _balance$data5$feeFro.toBn()) || new _util.BN(0));
|
|
134
|
+
});
|
|
135
|
+
let locked = reserved.add(miscFrozen);
|
|
136
|
+
total = total.add(reserved); // total = free + reserved
|
|
137
|
+
|
|
138
|
+
if (pooledStakingBalance.gt(_util.BN_ZERO)) {
|
|
139
|
+
total = total.add(pooledStakingBalance);
|
|
140
|
+
locked = locked.add(pooledStakingBalance);
|
|
141
|
+
}
|
|
142
|
+
const free = total.sub(locked);
|
|
143
|
+
callBack({
|
|
144
|
+
tokenSlug: chainNativeTokenSlug,
|
|
145
|
+
free: free.gte(_util.BN_ZERO) ? free.toString() : '0',
|
|
146
|
+
locked: locked.toString(),
|
|
147
|
+
state: _KoniTypes.APIItemState.READY,
|
|
148
|
+
substrateInfo: {
|
|
149
|
+
miscFrozen: miscFrozen.toString(),
|
|
150
|
+
reserved: reserved.toString(),
|
|
151
|
+
feeFrozen: feeFrozen.toString()
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
return () => {
|
|
156
|
+
unsub();
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
function subscribeERC20Interval(addresses, chain, evmApiMap, callBack) {
|
|
160
|
+
let tokenList = {};
|
|
161
|
+
const erc20ContractMap = {};
|
|
162
|
+
const getTokenBalances = () => {
|
|
163
|
+
Object.values(tokenList).map(async tokenInfo => {
|
|
164
|
+
let free = new _util.BN(0);
|
|
165
|
+
try {
|
|
166
|
+
const contract = erc20ContractMap[tokenInfo.slug];
|
|
167
|
+
const balanceList = await Promise.all(addresses.map(address => {
|
|
168
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
|
|
169
|
+
return contract.methods.balanceOf(address).call();
|
|
170
|
+
}));
|
|
171
|
+
free = (0, _utils3.sumBN)(balanceList.map(balance => new _util.BN(balance || 0)));
|
|
172
|
+
callBack({
|
|
173
|
+
tokenSlug: tokenInfo.slug,
|
|
174
|
+
free: free.toString(),
|
|
175
|
+
locked: '0',
|
|
176
|
+
state: _KoniTypes.APIItemState.READY
|
|
177
|
+
});
|
|
178
|
+
} catch (err) {
|
|
179
|
+
console.log(tokenInfo.slug, err);
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
};
|
|
183
|
+
tokenList = _handlers.state.getAssetByChainAndAsset(chain, [_types._AssetType.ERC20]);
|
|
184
|
+
Object.entries(tokenList).forEach(_ref3 => {
|
|
185
|
+
let [slug, tokenInfo] = _ref3;
|
|
186
|
+
erc20ContractMap[slug] = (0, _web.getERC20Contract)(chain, (0, _utils2._getContractAddressOfToken)(tokenInfo), evmApiMap);
|
|
187
|
+
});
|
|
188
|
+
getTokenBalances();
|
|
189
|
+
const interval = setInterval(getTokenBalances, _constants.SUB_TOKEN_REFRESH_BALANCE_INTERVAL);
|
|
190
|
+
return () => {
|
|
191
|
+
clearInterval(interval);
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
function subscribePSP22Balance(addresses, chain, api, callBack) {
|
|
195
|
+
let tokenList = {};
|
|
196
|
+
const psp22ContractMap = {};
|
|
197
|
+
const getTokenBalances = () => {
|
|
198
|
+
Object.values(tokenList).map(async tokenInfo => {
|
|
199
|
+
let free = new _util.BN(0);
|
|
200
|
+
try {
|
|
201
|
+
const contract = psp22ContractMap[tokenInfo.slug];
|
|
202
|
+
const balances = await Promise.all(addresses.map(async address => {
|
|
203
|
+
var _balanceOf$output;
|
|
204
|
+
const _balanceOf = await contract.query['psp22::balanceOf'](address, {
|
|
205
|
+
gasLimit: (0, _utils.getDefaultWeightV2)(api)
|
|
206
|
+
}, address);
|
|
207
|
+
const balanceObj = _balanceOf === null || _balanceOf === void 0 ? void 0 : (_balanceOf$output = _balanceOf.output) === null || _balanceOf$output === void 0 ? void 0 : _balanceOf$output.toPrimitive();
|
|
208
|
+
return _balanceOf.output ? balanceObj.ok || balanceObj.Ok : '0';
|
|
209
|
+
}));
|
|
210
|
+
free = (0, _utils3.sumBN)(balances.map(bal => new _util.BN(bal || 0)));
|
|
211
|
+
callBack({
|
|
212
|
+
tokenSlug: tokenInfo.slug,
|
|
213
|
+
free: free.toString(),
|
|
214
|
+
locked: '0',
|
|
215
|
+
state: _KoniTypes.APIItemState.READY
|
|
216
|
+
});
|
|
217
|
+
} catch (err) {
|
|
218
|
+
console.warn(tokenInfo.slug, err); // TODO: error createType
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
tokenList = _handlers.state.getAssetByChainAndAsset(chain, [_types._AssetType.PSP22]);
|
|
224
|
+
Object.entries(tokenList).forEach(_ref4 => {
|
|
225
|
+
let [slug, tokenInfo] = _ref4;
|
|
226
|
+
psp22ContractMap[slug] = (0, _wasm.getPSP22ContractPromise)(api, (0, _utils2._getContractAddressOfToken)(tokenInfo));
|
|
227
|
+
});
|
|
228
|
+
getTokenBalances();
|
|
229
|
+
const interval = setInterval(getTokenBalances, _constants.SUB_TOKEN_REFRESH_BALANCE_INTERVAL);
|
|
230
|
+
return () => {
|
|
231
|
+
clearInterval(interval);
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
async function subscribeEquilibriumTokenBalance(addresses, chain, api, callBack, includeNativeToken) {
|
|
235
|
+
const tokenTypes = includeNativeToken ? [_types._AssetType.NATIVE, _types._AssetType.LOCAL] : [_types._AssetType.LOCAL];
|
|
236
|
+
const tokenMap = _handlers.state.getAssetByChainAndAsset(chain, tokenTypes);
|
|
237
|
+
const unsub = await api.query.system.account.multi(addresses, balances => {
|
|
238
|
+
// Equilibrium customizes the SystemAccount pallet
|
|
239
|
+
Object.values(tokenMap).forEach(tokenInfo => {
|
|
240
|
+
const assetId = (0, _utils2._getTokenOnChainAssetId)(tokenInfo);
|
|
241
|
+
let tokenFreeBalance = _util.BN_ZERO;
|
|
242
|
+
for (const balance of balances) {
|
|
243
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
|
|
244
|
+
const balancesData = JSON.parse(balance.data.toString());
|
|
245
|
+
const balanceList = balancesData.v0.balance;
|
|
246
|
+
|
|
247
|
+
// @ts-ignore
|
|
248
|
+
const freeTokenBalance = balanceList.find(data => data[0] === parseInt(assetId));
|
|
249
|
+
const bnFreeTokenBalance = freeTokenBalance ? new _util.BN(new _bignumber.default(freeTokenBalance[1].positive).toString()) : _util.BN_ZERO;
|
|
250
|
+
tokenFreeBalance = tokenFreeBalance.add(bnFreeTokenBalance);
|
|
251
|
+
}
|
|
252
|
+
const tokenBalance = {
|
|
253
|
+
free: tokenFreeBalance.toString(),
|
|
254
|
+
locked: '0',
|
|
255
|
+
// Equilibrium doesn't show locked balance
|
|
256
|
+
state: _KoniTypes.APIItemState.READY,
|
|
257
|
+
tokenSlug: tokenInfo.slug
|
|
258
|
+
};
|
|
259
|
+
callBack(tokenBalance);
|
|
260
|
+
});
|
|
261
|
+
});
|
|
262
|
+
return () => {
|
|
263
|
+
unsub();
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
// eslint-disable-next-line @typescript-eslint/require-await
|
|
268
|
+
async function subscribeEqBalanceAccountPallet(addresses, chain, api, callBack, includeNativeToken) {
|
|
269
|
+
const tokenTypes = includeNativeToken ? [_types._AssetType.NATIVE, _types._AssetType.LOCAL] : [_types._AssetType.LOCAL];
|
|
270
|
+
const tokenMap = _handlers.state.getAssetByChainAndAsset(chain, tokenTypes);
|
|
271
|
+
const unsubList = Object.values(tokenMap).map(async tokenInfo => {
|
|
272
|
+
try {
|
|
273
|
+
const assetId = (0, _utils2._getTokenOnChainAssetId)(tokenInfo);
|
|
274
|
+
const unsub = await api.query.eqBalances.account.multi(addresses.map(address => [address, [assetId]]), balances => {
|
|
275
|
+
const tokenBalance = {
|
|
276
|
+
free: (0, _utils3.sumBN)(balances.map(b => b.asPositive)).toString(),
|
|
277
|
+
locked: '0',
|
|
278
|
+
// Equilibrium doesn't show locked balance
|
|
279
|
+
state: _KoniTypes.APIItemState.READY,
|
|
280
|
+
tokenSlug: tokenInfo.slug
|
|
281
|
+
};
|
|
282
|
+
callBack(tokenBalance);
|
|
283
|
+
});
|
|
284
|
+
return unsub;
|
|
285
|
+
} catch (err) {
|
|
286
|
+
console.warn(err);
|
|
287
|
+
return undefined;
|
|
288
|
+
}
|
|
289
|
+
});
|
|
290
|
+
return () => {
|
|
291
|
+
unsubList.forEach(subProm => {
|
|
292
|
+
subProm.then(unsub => {
|
|
293
|
+
unsub && unsub();
|
|
294
|
+
}).catch(console.error);
|
|
295
|
+
});
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
// eslint-disable-next-line @typescript-eslint/require-await
|
|
300
|
+
async function subscribeOrmlTokensPallet(addresses, chain, api, callBack) {
|
|
301
|
+
const tokenTypes = [_types._AssetType.LOCAL];
|
|
302
|
+
const tokenMap = _handlers.state.getAssetByChainAndAsset(chain, tokenTypes);
|
|
303
|
+
const unsubList = Object.values(tokenMap).map(async tokenInfo => {
|
|
304
|
+
try {
|
|
305
|
+
const onChainInfo = (0, _utils2._getTokenOnChainInfo)(tokenInfo);
|
|
306
|
+
|
|
307
|
+
// Get Token Balance
|
|
308
|
+
// @ts-ignore
|
|
309
|
+
const unsub = await api.query.ormlTokens.accounts.multi(addresses.map(address => [address, onChainInfo]), balances => {
|
|
310
|
+
const tokenBalance = {
|
|
311
|
+
reserved: (0, _utils3.sumBN)(balances.map(b => b.reserved || new _util.BN(0))),
|
|
312
|
+
frozen: (0, _utils3.sumBN)(balances.map(b => b.frozen || new _util.BN(0))),
|
|
313
|
+
free: (0, _utils3.sumBN)(balances.map(b => b.free || new _util.BN(0))) // free is actually total balance
|
|
314
|
+
};
|
|
315
|
+
|
|
316
|
+
// free balance = total balance - frozen misc
|
|
317
|
+
// locked balance = reserved + frozen misc
|
|
318
|
+
const freeBalance = tokenBalance.free.sub(tokenBalance.frozen);
|
|
319
|
+
const lockedBalance = tokenBalance.frozen.add(tokenBalance.reserved);
|
|
320
|
+
callBack({
|
|
321
|
+
tokenSlug: tokenInfo.slug,
|
|
322
|
+
state: _KoniTypes.APIItemState.READY,
|
|
323
|
+
free: freeBalance.toString(),
|
|
324
|
+
locked: lockedBalance.toString(),
|
|
325
|
+
substrateInfo: {
|
|
326
|
+
reserved: tokenBalance.reserved.toString(),
|
|
327
|
+
miscFrozen: tokenBalance.frozen.toString()
|
|
328
|
+
}
|
|
329
|
+
});
|
|
330
|
+
});
|
|
331
|
+
return unsub;
|
|
332
|
+
} catch (err) {
|
|
333
|
+
console.warn(err);
|
|
334
|
+
return undefined;
|
|
335
|
+
}
|
|
336
|
+
});
|
|
337
|
+
return () => {
|
|
338
|
+
unsubList.forEach(subProm => {
|
|
339
|
+
subProm.then(unsub => {
|
|
340
|
+
unsub && unsub();
|
|
341
|
+
}).catch(console.error);
|
|
342
|
+
});
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
async function subscribeTokensAccountsPallet(addresses, chain, api, callBack, includeNativeToken) {
|
|
346
|
+
const tokenTypes = includeNativeToken ? [_types._AssetType.NATIVE, _types._AssetType.LOCAL] : [_types._AssetType.LOCAL];
|
|
347
|
+
const tokenMap = _handlers.state.getAssetByChainAndAsset(chain, tokenTypes);
|
|
348
|
+
const unsubList = await Promise.all(Object.values(tokenMap).map(async tokenInfo => {
|
|
349
|
+
try {
|
|
350
|
+
const onChainInfo = (0, _utils2._getTokenOnChainInfo)(tokenInfo);
|
|
351
|
+
const assetId = (0, _utils2._getTokenOnChainAssetId)(tokenInfo);
|
|
352
|
+
|
|
353
|
+
// Get Token Balance
|
|
354
|
+
// @ts-ignore
|
|
355
|
+
return await api.query.tokens.accounts.multi(addresses.map(address => [address, onChainInfo || assetId]), balances => {
|
|
356
|
+
const tokenBalance = {
|
|
357
|
+
reserved: (0, _utils3.sumBN)(balances.map(b => b.reserved || new _util.BN(0))),
|
|
358
|
+
frozen: (0, _utils3.sumBN)(balances.map(b => b.frozen || new _util.BN(0))),
|
|
359
|
+
free: (0, _utils3.sumBN)(balances.map(b => b.free || new _util.BN(0))) // free is actually total balance
|
|
360
|
+
};
|
|
361
|
+
|
|
362
|
+
// free balance = total balance - frozen misc
|
|
363
|
+
// locked balance = reserved + frozen misc
|
|
364
|
+
const freeBalance = tokenBalance.free.sub(tokenBalance.frozen);
|
|
365
|
+
const lockedBalance = tokenBalance.frozen.add(tokenBalance.reserved);
|
|
366
|
+
callBack({
|
|
367
|
+
tokenSlug: tokenInfo.slug,
|
|
368
|
+
state: _KoniTypes.APIItemState.READY,
|
|
369
|
+
free: freeBalance.toString(),
|
|
370
|
+
locked: lockedBalance.toString(),
|
|
371
|
+
substrateInfo: {
|
|
372
|
+
reserved: tokenBalance.reserved.toString(),
|
|
373
|
+
miscFrozen: tokenBalance.frozen.toString()
|
|
374
|
+
}
|
|
375
|
+
});
|
|
376
|
+
});
|
|
377
|
+
} catch (err) {
|
|
378
|
+
console.warn(err);
|
|
379
|
+
}
|
|
380
|
+
return undefined;
|
|
381
|
+
}));
|
|
382
|
+
return () => {
|
|
383
|
+
unsubList.forEach(unsub => {
|
|
384
|
+
unsub && unsub();
|
|
385
|
+
});
|
|
386
|
+
};
|
|
387
|
+
}
|
|
388
|
+
async function subscribeAssetsAccountPallet(addresses, chain, api, callBack) {
|
|
389
|
+
const tokenMap = _handlers.state.getAssetByChainAndAsset(chain, [_types._AssetType.LOCAL]);
|
|
390
|
+
Object.values(tokenMap).forEach(token => {
|
|
391
|
+
if (_constants2._MANTA_ZK_CHAIN_GROUP.includes(token.originChain) && token.symbol.startsWith(_constants2._ZK_ASSET_PREFIX)) {
|
|
392
|
+
delete tokenMap[token.slug];
|
|
393
|
+
}
|
|
394
|
+
});
|
|
395
|
+
const unsubList = await Promise.all(Object.values(tokenMap).map(async tokenInfo => {
|
|
396
|
+
try {
|
|
397
|
+
const assetIndex = (0, _utils2._getTokenOnChainAssetId)(tokenInfo);
|
|
398
|
+
|
|
399
|
+
// Get Token Balance
|
|
400
|
+
return await api.query.assets.account.multi(addresses.map(address => [assetIndex, address]), balances => {
|
|
401
|
+
let total = new _util.BN(0);
|
|
402
|
+
let frozen = new _util.BN(0);
|
|
403
|
+
balances.forEach(b => {
|
|
404
|
+
// @ts-ignore
|
|
405
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-assignment
|
|
406
|
+
const bdata = b === null || b === void 0 ? void 0 : b.toHuman();
|
|
407
|
+
if (bdata) {
|
|
408
|
+
// @ts-ignore
|
|
409
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-argument
|
|
410
|
+
const addressBalance = new _util.BN(String(bdata === null || bdata === void 0 ? void 0 : bdata.balance).replaceAll(',', '') || '0');
|
|
411
|
+
|
|
412
|
+
// @ts-ignore
|
|
413
|
+
if (bdata !== null && bdata !== void 0 && bdata.isFrozen) {
|
|
414
|
+
frozen = frozen.add(addressBalance);
|
|
415
|
+
} else {
|
|
416
|
+
total = total.add(addressBalance);
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
});
|
|
420
|
+
const free = total.sub(frozen);
|
|
421
|
+
callBack({
|
|
422
|
+
tokenSlug: tokenInfo.slug,
|
|
423
|
+
free: free.toString(),
|
|
424
|
+
locked: frozen.toString(),
|
|
425
|
+
state: _KoniTypes.APIItemState.READY,
|
|
426
|
+
substrateInfo: {
|
|
427
|
+
miscFrozen: frozen.toString(),
|
|
428
|
+
reserved: '0'
|
|
429
|
+
}
|
|
430
|
+
});
|
|
431
|
+
});
|
|
432
|
+
} catch (err) {
|
|
433
|
+
console.warn(err);
|
|
434
|
+
}
|
|
435
|
+
return undefined;
|
|
436
|
+
}));
|
|
437
|
+
return () => {
|
|
438
|
+
unsubList.forEach(unsub => {
|
|
439
|
+
unsub && unsub();
|
|
440
|
+
});
|
|
441
|
+
};
|
|
442
|
+
}
|
|
443
|
+
function subscribeEVMBalance(chain, addresses, evmApiMap, callback, tokenInfo) {
|
|
444
|
+
const balanceItem = {
|
|
445
|
+
tokenSlug: tokenInfo.slug,
|
|
446
|
+
state: _KoniTypes.APIItemState.PENDING,
|
|
447
|
+
free: '0',
|
|
448
|
+
locked: '0'
|
|
449
|
+
};
|
|
450
|
+
function getBalance() {
|
|
451
|
+
(0, _balance.getEVMBalance)(chain, addresses, evmApiMap).then(balances => {
|
|
452
|
+
balanceItem.free = (0, _utils3.sumBN)(balances.map(b => new _util.BN(b || '0'))).toString();
|
|
453
|
+
balanceItem.state = _KoniTypes.APIItemState.READY;
|
|
454
|
+
callback(balanceItem);
|
|
455
|
+
}).catch(console.warn);
|
|
456
|
+
}
|
|
457
|
+
getBalance();
|
|
458
|
+
const interval = setInterval(getBalance, _constants.ASTAR_REFRESH_BALANCE_INTERVAL);
|
|
459
|
+
const unsub2 = subscribeERC20Interval(addresses, chain, evmApiMap, callback);
|
|
460
|
+
return () => {
|
|
461
|
+
clearInterval(interval);
|
|
462
|
+
unsub2 && unsub2();
|
|
463
|
+
};
|
|
464
|
+
}
|
|
@@ -33,8 +33,12 @@ exports.BIT_COUNTRY_IPFS_SERVER = BIT_COUNTRY_IPFS_SERVER;
|
|
|
33
33
|
const BIT_COUNTRY_LAND_ESTATE_METADATA_API = 'https://pioneer-api.bit.country/metadata/landTokenUriPioneer';
|
|
34
34
|
exports.BIT_COUNTRY_LAND_ESTATE_METADATA_API = BIT_COUNTRY_LAND_ESTATE_METADATA_API;
|
|
35
35
|
const BIT_COUNTRY_THUMBNAIL_RESOLVER = 'https://res.cloudinary.com/ddftctzph/image/upload/c_scale,q_100,w_250/production-ipfs/asset/';
|
|
36
|
+
|
|
37
|
+
// XOrigin
|
|
36
38
|
exports.BIT_COUNTRY_THUMBNAIL_RESOLVER = BIT_COUNTRY_THUMBNAIL_RESOLVER;
|
|
37
39
|
const CF_IPFS_GATEWAY = 'https://cf-ipfs.com/ipfs/';
|
|
40
|
+
|
|
41
|
+
// XOrigin
|
|
38
42
|
exports.CF_IPFS_GATEWAY = CF_IPFS_GATEWAY;
|
|
39
43
|
const PINATA_IPFS_GATEWAY = 'https://gateway.pinata.cloud/ipfs/';
|
|
40
44
|
exports.PINATA_IPFS_GATEWAY = PINATA_IPFS_GATEWAY;
|
|
@@ -47,14 +51,22 @@ const VARA_SCAN_ENDPOINT = 'https://nft-explorer.vara-network.io/graphql';
|
|
|
47
51
|
// GATEWAY
|
|
48
52
|
exports.VARA_SCAN_ENDPOINT = VARA_SCAN_ENDPOINT;
|
|
49
53
|
const UNIQUE_IPFS_GATEWAY = 'https://ipfs.unique.network/ipfs/';
|
|
54
|
+
|
|
55
|
+
// XOrigin
|
|
50
56
|
exports.UNIQUE_IPFS_GATEWAY = UNIQUE_IPFS_GATEWAY;
|
|
51
57
|
const NFT_STORAGE_GATEWAY = 'https://nftstorage.link/ipfs/';
|
|
52
58
|
exports.NFT_STORAGE_GATEWAY = NFT_STORAGE_GATEWAY;
|
|
53
59
|
const IPFS_W3S_LINK = 'https://w3s.link/ipfs/';
|
|
60
|
+
|
|
61
|
+
// XOrigin
|
|
54
62
|
exports.IPFS_W3S_LINK = IPFS_W3S_LINK;
|
|
55
63
|
const GATEWAY_IPFS_IO = 'https://gateway.ipfs.io/ipfs/';
|
|
64
|
+
|
|
65
|
+
// XOrigin
|
|
56
66
|
exports.GATEWAY_IPFS_IO = GATEWAY_IPFS_IO;
|
|
57
67
|
const IPFS_IO = 'https://ipfs.io/ipfs/';
|
|
68
|
+
|
|
69
|
+
// XOrigin
|
|
58
70
|
exports.IPFS_IO = IPFS_IO;
|
|
59
71
|
const DWEB_LINK = 'https://dweb.link/ipfs/';
|
|
60
72
|
exports.DWEB_LINK = DWEB_LINK;
|
|
@@ -122,26 +134,8 @@ exports.SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME = SUPPORTED_TRANSFER_SUBSTRATE_C
|
|
|
122
134
|
SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME["pioneer"] = "pioneer";
|
|
123
135
|
})(SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME || (exports.SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME = SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME = {}));
|
|
124
136
|
const RANDOM_IPFS_GATEWAY_SETTING = [{
|
|
125
|
-
provider: CF_IPFS_GATEWAY,
|
|
126
|
-
weight: 4
|
|
127
|
-
}, {
|
|
128
137
|
provider: CLOUDFLARE_PINATA_SERVER,
|
|
129
138
|
weight: 10
|
|
130
|
-
}, {
|
|
131
|
-
provider: PINATA_IPFS_GATEWAY,
|
|
132
|
-
weight: 1 // Rate limit too low
|
|
133
|
-
}, {
|
|
134
|
-
provider: DWEB_LINK,
|
|
135
|
-
weight: 5
|
|
136
|
-
}, {
|
|
137
|
-
provider: GATEWAY_IPFS_IO,
|
|
138
|
-
weight: 5
|
|
139
|
-
}, {
|
|
140
|
-
provider: IPFS_IO,
|
|
141
|
-
weight: 5
|
|
142
|
-
}, {
|
|
143
|
-
provider: NFT_STORAGE_GATEWAY,
|
|
144
|
-
weight: 50
|
|
145
139
|
}];
|
|
146
140
|
if (isFirefox) {
|
|
147
141
|
RANDOM_IPFS_GATEWAY_SETTING.push({
|
|
@@ -149,18 +143,34 @@ if (isFirefox) {
|
|
|
149
143
|
weight: 5000
|
|
150
144
|
});
|
|
151
145
|
}
|
|
152
|
-
if (!_utils.RuntimeInfo.protocol || _utils.RuntimeInfo.protocol
|
|
146
|
+
if (!_utils.RuntimeInfo.protocol || !_utils.RuntimeInfo.protocol.startsWith('http') || _utils.RuntimeInfo.protocol.startsWith('https')) {
|
|
153
147
|
RANDOM_IPFS_GATEWAY_SETTING.push({
|
|
154
148
|
provider: IPFS_FLEEK,
|
|
155
149
|
weight: 4
|
|
156
|
-
}
|
|
157
|
-
RANDOM_IPFS_GATEWAY_SETTING.push({
|
|
150
|
+
}, {
|
|
158
151
|
provider: IPFS_GATEWAY_4EVERLAND,
|
|
159
152
|
weight: 2
|
|
160
|
-
}
|
|
161
|
-
RANDOM_IPFS_GATEWAY_SETTING.push({
|
|
153
|
+
}, {
|
|
162
154
|
provider: IPFS_W3S_LINK,
|
|
163
155
|
weight: 1
|
|
156
|
+
}, {
|
|
157
|
+
provider: CF_IPFS_GATEWAY,
|
|
158
|
+
weight: 4
|
|
159
|
+
}, {
|
|
160
|
+
provider: PINATA_IPFS_GATEWAY,
|
|
161
|
+
weight: 1 // Rate limit too low
|
|
162
|
+
}, {
|
|
163
|
+
provider: NFT_STORAGE_GATEWAY,
|
|
164
|
+
weight: 50
|
|
165
|
+
}, {
|
|
166
|
+
provider: GATEWAY_IPFS_IO,
|
|
167
|
+
weight: 5
|
|
168
|
+
}, {
|
|
169
|
+
provider: DWEB_LINK,
|
|
170
|
+
weight: 5
|
|
171
|
+
}, {
|
|
172
|
+
provider: IPFS_IO,
|
|
173
|
+
weight: 5
|
|
164
174
|
});
|
|
165
175
|
}
|
|
166
176
|
const RANDOM_IPFS_GATEWAY_TOTAL_WEIGHT = RANDOM_IPFS_GATEWAY_SETTING.reduce((value, item) => value + item.weight, 0);
|
|
@@ -9,6 +9,7 @@ var _acala_nft = require("@subwallet/extension-base/koni/api/nft/acala_nft");
|
|
|
9
9
|
var _bit = require("@subwallet/extension-base/koni/api/nft/bit.country");
|
|
10
10
|
var _evm_nft = require("@subwallet/extension-base/koni/api/nft/evm_nft");
|
|
11
11
|
var _karura_nft = require("@subwallet/extension-base/koni/api/nft/karura_nft");
|
|
12
|
+
var _ordinal_nft = _interopRequireDefault(require("@subwallet/extension-base/koni/api/nft/ordinal_nft"));
|
|
12
13
|
var _rmrk_nft = require("@subwallet/extension-base/koni/api/nft/rmrk_nft");
|
|
13
14
|
var _statemine_nft = _interopRequireDefault(require("@subwallet/extension-base/koni/api/nft/statemine_nft"));
|
|
14
15
|
var _unique_nft = _interopRequireDefault(require("@subwallet/extension-base/koni/api/nft/unique_nft"));
|
|
@@ -50,6 +51,9 @@ function createWeb3NftApi(chain, evmApi, addresses) {
|
|
|
50
51
|
const [, evmAddresses] = (0, _utils2.categoryAddresses)(addresses);
|
|
51
52
|
return new _evm_nft.EvmNftApi(evmApi, evmAddresses, chain);
|
|
52
53
|
}
|
|
54
|
+
const createOrdinalApi = (chain, subscanChain, addresses) => {
|
|
55
|
+
return new _ordinal_nft.default(addresses, chain, subscanChain);
|
|
56
|
+
};
|
|
53
57
|
class NftHandler {
|
|
54
58
|
// General settings
|
|
55
59
|
chainInfoMap = {};
|
|
@@ -130,6 +134,16 @@ class NftHandler {
|
|
|
130
134
|
}
|
|
131
135
|
}
|
|
132
136
|
}
|
|
137
|
+
if ((0, _utils._isSupportOrdinal)(chain)) {
|
|
138
|
+
var _chainInfo$extraInfo;
|
|
139
|
+
const subscanChain = (_chainInfo$extraInfo = chainInfo.extraInfo) === null || _chainInfo$extraInfo === void 0 ? void 0 : _chainInfo$extraInfo.subscanSlug;
|
|
140
|
+
if (subscanChain) {
|
|
141
|
+
const handler = createOrdinalApi(chain, subscanChain, substrateAddresses);
|
|
142
|
+
if (handler && !this.handlers.includes(handler)) {
|
|
143
|
+
this.handlers.push(handler);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
133
147
|
});
|
|
134
148
|
this.needSetupApi = false;
|
|
135
149
|
}
|
package/cjs/koni/api/nft/nft.js
CHANGED
|
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.BaseNftApi = void 0;
|
|
7
|
-
var _config = require("@subwallet/extension-base/koni/api/nft/config");
|
|
8
7
|
var _utils = require("@subwallet/extension-base/utils");
|
|
9
8
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
10
9
|
// SPDX-License-Identifier: Apache-2.0
|
|
@@ -71,27 +70,7 @@ class BaseNftApi {
|
|
|
71
70
|
return tokenId;
|
|
72
71
|
}
|
|
73
72
|
parseUrl(input) {
|
|
74
|
-
|
|
75
|
-
return undefined;
|
|
76
|
-
}
|
|
77
|
-
if ((0, _utils.isUrl)(input)) {
|
|
78
|
-
return input;
|
|
79
|
-
}
|
|
80
|
-
if ((0, _utils.isUrl)(input) || input.includes('https://') || input.includes('http')) {
|
|
81
|
-
return input;
|
|
82
|
-
}
|
|
83
|
-
if (input.startsWith('/ipfs/')) {
|
|
84
|
-
return (0, _config.getRandomIpfsGateway)() + input.split('/ipfs/')[1];
|
|
85
|
-
}
|
|
86
|
-
if (!input.includes('ipfs://') && !input.includes('ipfs://ipfs/')) {
|
|
87
|
-
// just the IPFS hash
|
|
88
|
-
return (0, _config.getRandomIpfsGateway)() + input;
|
|
89
|
-
}
|
|
90
|
-
if (input.includes('ipfs://') && !input.includes('ipfs://ipfs/')) {
|
|
91
|
-
// starts with ipfs://
|
|
92
|
-
return (0, _config.getRandomIpfsGateway)() + input.split('ipfs://')[1];
|
|
93
|
-
}
|
|
94
|
-
return (0, _config.getRandomIpfsGateway)() + input.split('ipfs://ipfs/')[1]; // starts with ipfs://ipfs/
|
|
73
|
+
return (0, _utils.baseParseIPFSUrl)(input);
|
|
95
74
|
}
|
|
96
75
|
|
|
97
76
|
// Subclass implements this function to parse data into prop result
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.GET_EXTRINSIC_PARAMS_API = exports.GET_EVENT_LIST_API = exports.BASE_FETCH_ORDINAL_EVENT_DATA = void 0;
|
|
7
|
+
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
8
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
9
|
+
|
|
10
|
+
const GET_EVENT_LIST_API = 'https://{{chain}}.api.subscan.io/api/v2/scan/events';
|
|
11
|
+
exports.GET_EVENT_LIST_API = GET_EVENT_LIST_API;
|
|
12
|
+
const GET_EXTRINSIC_PARAMS_API = 'https://{{chain}}.api.subscan.io/api/scan/extrinsic/params';
|
|
13
|
+
exports.GET_EXTRINSIC_PARAMS_API = GET_EXTRINSIC_PARAMS_API;
|
|
14
|
+
const BASE_FETCH_ORDINAL_EVENT_DATA = {
|
|
15
|
+
event_id: 'Remarked',
|
|
16
|
+
module: 'system',
|
|
17
|
+
order: 'desc',
|
|
18
|
+
success: true,
|
|
19
|
+
row: 100
|
|
20
|
+
};
|
|
21
|
+
exports.BASE_FETCH_ORDINAL_EVENT_DATA = BASE_FETCH_ORDINAL_EVENT_DATA;
|