@subwallet/extension-base 1.3.40-0 → 1.3.42-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 +121 -4
- package/background/KoniTypes.js +18 -0
- package/background/errors/BitcoinProviderError.d.ts +6 -0
- package/background/errors/BitcoinProviderError.js +47 -0
- package/cjs/background/KoniTypes.js +20 -1
- package/cjs/background/errors/BitcoinProviderError.js +54 -0
- package/cjs/constants/bitcoin.js +22 -0
- package/cjs/constants/environment.js +4 -2
- package/cjs/constants/index.js +16 -1
- package/cjs/core/logic-validation/recipientAddress.js +9 -0
- package/cjs/core/logic-validation/transfer.js +25 -5
- package/cjs/core/types.js +1 -0
- package/cjs/core/utils.js +15 -1
- package/cjs/koni/background/handlers/Extension.js +96 -41
- package/cjs/koni/background/handlers/State.js +52 -11
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/balance-service/helpers/subscribe/bitcoin.js +94 -0
- package/cjs/services/balance-service/helpers/subscribe/evm.js +6 -1
- package/cjs/services/balance-service/helpers/subscribe/index.js +19 -7
- package/cjs/services/balance-service/index.js +32 -4
- package/cjs/services/balance-service/transfer/bitcoin-transfer.js +119 -0
- package/cjs/services/balance-service/transfer/token.js +2 -0
- package/cjs/services/balance-service/transfer/xcm/index.js +15 -9
- package/cjs/services/balance-service/transfer/xcm/utils.js +12 -14
- package/cjs/services/base/types.js +2 -0
- package/cjs/services/chain-service/constants.js +18 -6
- package/cjs/services/chain-service/handler/CardanoApi.js +25 -35
- package/cjs/services/chain-service/handler/bitcoin/BitcoinApi.js +105 -0
- package/cjs/services/chain-service/handler/bitcoin/BitcoinChainHandler.js +78 -0
- package/cjs/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/blockstream-testnet-strategy.js +371 -0
- package/cjs/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/index.js +19 -0
- package/cjs/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/mempool-testnet-strategy.js +368 -0
- package/cjs/services/chain-service/handler/bitcoin/strategy/SubWalletMainnet/index.js +302 -0
- package/cjs/services/chain-service/handler/bitcoin/strategy/types.js +1 -0
- package/cjs/services/chain-service/index.js +27 -3
- package/cjs/services/chain-service/utils/index.js +57 -4
- package/cjs/services/chain-service/utils/patch.js +1 -1
- package/cjs/services/earning-service/handlers/native-staking/tao.js +4 -38
- package/cjs/services/event-service/index.js +4 -0
- package/cjs/services/fee-service/service.js +8 -3
- package/cjs/services/hiro-service/index.js +96 -0
- package/cjs/services/hiro-service/utils/index.js +85 -0
- package/cjs/services/history-service/bitcoin-history.js +58 -0
- package/cjs/services/history-service/helpers/recoverHistoryStatus.js +96 -4
- package/cjs/services/history-service/index.js +41 -3
- package/cjs/services/keyring-service/context/handlers/Derive.js +1 -1
- package/cjs/services/keyring-service/context/handlers/Migration.js +2 -2
- package/cjs/services/keyring-service/context/handlers/Mnemonic.js +4 -3
- package/cjs/services/migration-service/scripts/MigrateNewUnifiedAccount.js +29 -0
- package/cjs/services/migration-service/scripts/index.js +3 -1
- package/cjs/services/request-service/handler/BitcoinRequestHandler.js +440 -0
- package/cjs/services/request-service/index.js +29 -3
- package/cjs/services/rune-service/index.js +105 -0
- package/cjs/services/swap-service/handler/chainflip-handler.js +29 -18
- package/cjs/services/swap-service/handler/kyber-handler.js +5 -9
- package/cjs/services/swap-service/handler/simpleswap-handler.js +4 -7
- package/cjs/services/swap-service/handler/uniswap-handler.js +5 -12
- package/cjs/services/swap-service/utils.js +46 -37
- package/cjs/services/transaction-service/helpers/index.js +7 -1
- package/cjs/services/transaction-service/index.js +136 -15
- package/cjs/services/transaction-service/utils.js +6 -3
- package/cjs/strategy/api-request-strategy/context/base.js +31 -0
- package/cjs/strategy/api-request-strategy/index.js +90 -0
- package/cjs/strategy/api-request-strategy/types.js +1 -0
- package/cjs/strategy/api-request-strategy/utils/index.js +33 -0
- package/cjs/types/account/info/keyring.js +1 -1
- package/cjs/types/bitcoin.js +24 -0
- package/cjs/types/environment.js +19 -0
- package/cjs/types/fee/bitcoin.js +1 -0
- package/cjs/types/fee/index.js +11 -0
- package/cjs/types/index.js +11 -0
- package/cjs/utils/account/analyze.js +3 -3
- package/cjs/utils/account/common.js +16 -6
- package/cjs/utils/account/derive/info/solo.js +68 -19
- package/cjs/utils/account/derive/info/unified.js +2 -0
- package/cjs/utils/account/derive/validate.js +70 -2
- package/cjs/utils/account/transform.js +11 -5
- package/cjs/utils/bitcoin/common.js +98 -0
- package/cjs/utils/bitcoin/fee.js +21 -0
- package/cjs/utils/bitcoin/index.js +38 -0
- package/cjs/utils/bitcoin/utxo-management.js +281 -0
- package/cjs/utils/environment.js +30 -2
- package/cjs/utils/fee/transfer.js +48 -0
- package/cjs/utils/index.js +15 -1
- package/constants/bitcoin.d.ts +3 -0
- package/constants/bitcoin.js +13 -0
- package/constants/environment.d.ts +1 -0
- package/constants/environment.js +2 -1
- package/constants/index.d.ts +2 -0
- package/constants/index.js +3 -1
- package/core/logic-validation/recipientAddress.js +10 -1
- package/core/logic-validation/transfer.d.ts +2 -2
- package/core/logic-validation/transfer.js +27 -7
- package/core/types.d.ts +1 -0
- package/core/types.js +1 -0
- package/core/utils.d.ts +1 -0
- package/core/utils.js +15 -2
- package/koni/background/handlers/Extension.d.ts +2 -0
- package/koni/background/handlers/Extension.js +95 -42
- package/koni/background/handlers/State.d.ts +7 -3
- package/koni/background/handlers/State.js +52 -12
- package/package.json +149 -8
- package/packageInfo.js +1 -1
- package/services/balance-service/helpers/subscribe/bitcoin.d.ts +2 -0
- package/services/balance-service/helpers/subscribe/bitcoin.js +87 -0
- package/services/balance-service/helpers/subscribe/evm.js +6 -1
- package/services/balance-service/helpers/subscribe/index.d.ts +2 -2
- package/services/balance-service/helpers/subscribe/index.js +20 -8
- package/services/balance-service/index.d.ts +2 -0
- package/services/balance-service/index.js +32 -4
- package/services/balance-service/transfer/bitcoin-transfer.d.ts +14 -0
- package/services/balance-service/transfer/bitcoin-transfer.js +112 -0
- package/services/balance-service/transfer/token.js +2 -0
- package/services/balance-service/transfer/xcm/index.js +15 -9
- package/services/balance-service/transfer/xcm/utils.d.ts +2 -0
- package/services/balance-service/transfer/xcm/utils.js +12 -14
- package/services/base/types.d.ts +2 -0
- package/services/base/types.js +2 -0
- package/services/chain-service/constants.d.ts +7 -0
- package/services/chain-service/constants.js +12 -5
- package/services/chain-service/handler/CardanoApi.d.ts +1 -5
- package/services/chain-service/handler/CardanoApi.js +26 -34
- package/services/chain-service/handler/bitcoin/BitcoinApi.d.ts +31 -0
- package/services/chain-service/handler/bitcoin/BitcoinApi.js +98 -0
- package/services/chain-service/handler/bitcoin/BitcoinChainHandler.d.ts +16 -0
- package/services/chain-service/handler/bitcoin/BitcoinChainHandler.js +70 -0
- package/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/blockstream-testnet-strategy.d.ts +28 -0
- package/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/blockstream-testnet-strategy.js +362 -0
- package/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/index.d.ts +2 -0
- package/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/index.js +5 -0
- package/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/mempool-testnet-strategy.d.ts +28 -0
- package/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/mempool-testnet-strategy.js +359 -0
- package/services/chain-service/handler/bitcoin/strategy/SubWalletMainnet/index.d.ts +28 -0
- package/services/chain-service/handler/bitcoin/strategy/SubWalletMainnet/index.js +293 -0
- package/services/chain-service/handler/bitcoin/strategy/types.d.ts +291 -0
- package/services/chain-service/handler/bitcoin/strategy/types.js +1 -0
- package/services/chain-service/index.d.ts +3 -0
- package/services/chain-service/index.js +31 -5
- package/services/chain-service/types.d.ts +20 -0
- package/services/chain-service/utils/index.d.ts +4 -0
- package/services/chain-service/utils/index.js +50 -4
- package/services/chain-service/utils/patch.js +1 -1
- package/services/earning-service/handlers/native-staking/tao.d.ts +0 -11
- package/services/earning-service/handlers/native-staking/tao.js +4 -24
- package/services/event-service/index.d.ts +3 -0
- package/services/event-service/index.js +4 -0
- package/services/event-service/types.d.ts +3 -0
- package/services/fee-service/service.js +8 -3
- package/services/hiro-service/index.d.ts +17 -0
- package/services/hiro-service/index.js +88 -0
- package/services/hiro-service/utils/index.d.ts +6 -0
- package/services/hiro-service/utils/index.js +72 -0
- package/services/history-service/bitcoin-history.d.ts +4 -0
- package/services/history-service/bitcoin-history.js +52 -0
- package/services/history-service/helpers/recoverHistoryStatus.d.ts +3 -1
- package/services/history-service/helpers/recoverHistoryStatus.js +96 -4
- package/services/history-service/index.d.ts +1 -0
- package/services/history-service/index.js +42 -4
- package/services/keyring-service/context/handlers/Derive.js +2 -2
- package/services/keyring-service/context/handlers/Migration.js +2 -2
- package/services/keyring-service/context/handlers/Mnemonic.js +4 -3
- package/services/migration-service/scripts/MigrateNewUnifiedAccount.d.ts +4 -0
- package/services/migration-service/scripts/MigrateNewUnifiedAccount.js +21 -0
- package/services/migration-service/scripts/index.js +3 -1
- package/services/request-service/handler/BitcoinRequestHandler.d.ts +23 -0
- package/services/request-service/handler/BitcoinRequestHandler.js +427 -0
- package/services/request-service/index.d.ts +9 -2
- package/services/request-service/index.js +25 -3
- package/services/rune-service/index.d.ts +17 -0
- package/services/rune-service/index.js +97 -0
- package/services/swap-service/handler/chainflip-handler.d.ts +0 -2
- package/services/swap-service/handler/chainflip-handler.js +25 -13
- package/services/swap-service/handler/kyber-handler.d.ts +0 -1
- package/services/swap-service/handler/kyber-handler.js +5 -8
- package/services/swap-service/handler/simpleswap-handler.d.ts +0 -1
- package/services/swap-service/handler/simpleswap-handler.js +4 -6
- package/services/swap-service/handler/uniswap-handler.js +6 -13
- package/services/swap-service/utils.d.ts +0 -13
- package/services/swap-service/utils.js +46 -34
- package/services/transaction-service/helpers/index.d.ts +3 -1
- package/services/transaction-service/helpers/index.js +5 -0
- package/services/transaction-service/index.d.ts +3 -5
- package/services/transaction-service/index.js +135 -16
- package/services/transaction-service/types.d.ts +12 -2
- package/services/transaction-service/utils.js +7 -4
- package/strategy/api-request-strategy/context/base.d.ts +15 -0
- package/strategy/api-request-strategy/context/base.js +24 -0
- package/strategy/api-request-strategy/index.d.ts +15 -0
- package/strategy/api-request-strategy/index.js +83 -0
- package/strategy/api-request-strategy/types.d.ts +22 -0
- package/strategy/api-request-strategy/types.js +1 -0
- package/strategy/api-request-strategy/utils/index.d.ts +2 -0
- package/strategy/api-request-strategy/utils/index.js +23 -0
- package/types/account/info/keyring.d.ts +1 -1
- package/types/account/info/keyring.js +1 -1
- package/types/balance/index.d.ts +4 -1
- package/types/balance/transfer.d.ts +17 -0
- package/types/bitcoin.d.ts +93 -0
- package/types/bitcoin.js +17 -0
- package/types/environment.d.ts +9 -0
- package/types/environment.js +13 -0
- package/types/fee/base.d.ts +4 -1
- package/types/fee/bitcoin.d.ts +18 -0
- package/types/fee/bitcoin.js +1 -0
- package/types/fee/index.d.ts +1 -0
- package/types/fee/index.js +2 -1
- package/types/fee/subscription.d.ts +4 -3
- package/types/index.d.ts +1 -0
- package/types/index.js +1 -0
- package/utils/account/analyze.js +4 -4
- package/utils/account/common.d.ts +7 -8
- package/utils/account/common.js +16 -6
- package/utils/account/derive/info/solo.js +70 -21
- package/utils/account/derive/info/unified.js +2 -0
- package/utils/account/derive/validate.d.ts +1 -0
- package/utils/account/derive/validate.js +68 -1
- package/utils/account/transform.d.ts +1 -1
- package/utils/account/transform.js +11 -5
- package/utils/bitcoin/common.d.ts +22 -0
- package/utils/bitcoin/common.js +88 -0
- package/utils/bitcoin/fee.d.ts +2 -0
- package/utils/bitcoin/fee.js +14 -0
- package/utils/bitcoin/index.d.ts +3 -0
- package/utils/bitcoin/index.js +6 -0
- package/utils/bitcoin/utxo-management.d.ts +33 -0
- package/utils/bitcoin/utxo-management.js +266 -0
- package/utils/environment.d.ts +2 -0
- package/utils/environment.js +27 -1
- package/utils/fee/transfer.d.ts +3 -1
- package/utils/fee/transfer.js +47 -1
- package/utils/index.d.ts +1 -0
- package/utils/index.js +6 -3
|
@@ -30,6 +30,7 @@ var _relayChain = require("@subwallet/extension-base/koni/api/staking/bonding/re
|
|
|
30
30
|
var _utils3 = require("@subwallet/extension-base/koni/api/yield/helper/utils");
|
|
31
31
|
var _consts = require("@subwallet/extension-base/services/balance-service/helpers/subscribe/cardano/consts");
|
|
32
32
|
var _utils4 = require("@subwallet/extension-base/services/balance-service/helpers/subscribe/ton/utils");
|
|
33
|
+
var _bitcoinTransfer = require("@subwallet/extension-base/services/balance-service/transfer/bitcoin-transfer");
|
|
33
34
|
var _cardanoTransfer = require("@subwallet/extension-base/services/balance-service/transfer/cardano-transfer");
|
|
34
35
|
var _smartContract = require("@subwallet/extension-base/services/balance-service/transfer/smart-contract");
|
|
35
36
|
var _token = require("@subwallet/extension-base/services/balance-service/transfer/token");
|
|
@@ -56,15 +57,19 @@ var _parseTransaction2 = require("@subwallet/extension-base/utils/eth/parseTrans
|
|
|
56
57
|
var _getId = require("@subwallet/extension-base/utils/getId");
|
|
57
58
|
var _keyring = require("@subwallet/keyring");
|
|
58
59
|
var _types4 = require("@subwallet/keyring/types");
|
|
60
|
+
var _validate = require("@subwallet/keyring/utils/address/validate");
|
|
59
61
|
var _uiKeyring = require("@subwallet/ui-keyring");
|
|
60
62
|
var _utils9 = require("@walletconnect/utils");
|
|
61
63
|
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
64
|
+
var bitcoin = _interopRequireWildcard(require("bitcoinjs-lib"));
|
|
62
65
|
var _i18next = require("i18next");
|
|
63
66
|
var _rxjs = require("rxjs");
|
|
64
67
|
var _types5 = require("@polkadot/types");
|
|
65
68
|
var _util = require("@polkadot/util");
|
|
66
69
|
var _utilCrypto = require("@polkadot/util-crypto");
|
|
67
70
|
var _utils10 = require("../utils");
|
|
71
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
72
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
68
73
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
69
74
|
// SPDX-License-Identifier: Apache-2.0
|
|
70
75
|
|
|
@@ -1292,6 +1297,7 @@ class KoniExtension {
|
|
|
1292
1297
|
decimals: (0, _utils6._getAssetDecimals)(transferTokenInfo)
|
|
1293
1298
|
};
|
|
1294
1299
|
let transaction;
|
|
1300
|
+
let overrideFeeCustom;
|
|
1295
1301
|
const transferTokenAvailable = await this.getAddressTransferableBalance({
|
|
1296
1302
|
address: from,
|
|
1297
1303
|
networkKey: chain,
|
|
@@ -1363,6 +1369,38 @@ class KoniExtension {
|
|
|
1363
1369
|
cardanoApi,
|
|
1364
1370
|
nativeTokenInfo
|
|
1365
1371
|
});
|
|
1372
|
+
} else if ((0, _validate.isBitcoinAddress)(from) && (0, _validate.isBitcoinAddress)(to) && (0, _utils6._isTokenTransferredByBitcoin)(transferTokenInfo)) {
|
|
1373
|
+
// Note: Currently supports transferring only the native token, Bitcoin.
|
|
1374
|
+
chainType = _KoniTypes.ChainType.BITCOIN;
|
|
1375
|
+
const chainInfo = this.#koniState.getChainInfo(chain);
|
|
1376
|
+
const network = chainInfo.isTestnet ? bitcoin.networks.testnet : bitcoin.networks.bitcoin;
|
|
1377
|
+
const txVal = transferAll ? transferTokenAvailable.value : value || '0';
|
|
1378
|
+
const bitcoinApi = this.#koniState.getBitcoinApi(chain);
|
|
1379
|
+
const feeInfo = await this.#koniState.feeService.subscribeChainFee((0, _getId.getId)(), chain, 'bitcoin');
|
|
1380
|
+
let calculatedBitcoinFeeRate;
|
|
1381
|
+
[transaction, transferAmount.value, calculatedBitcoinFeeRate] = await (0, _bitcoinTransfer.createBitcoinTransaction)({
|
|
1382
|
+
bitcoinApi,
|
|
1383
|
+
chain,
|
|
1384
|
+
from,
|
|
1385
|
+
feeInfo,
|
|
1386
|
+
to,
|
|
1387
|
+
transferAll: !!transferAll,
|
|
1388
|
+
value: txVal,
|
|
1389
|
+
network: network
|
|
1390
|
+
});
|
|
1391
|
+
if (calculatedBitcoinFeeRate) {
|
|
1392
|
+
const feeRate = parseFloat(calculatedBitcoinFeeRate);
|
|
1393
|
+
if (!isNaN(feeRate)) {
|
|
1394
|
+
overrideFeeCustom = {
|
|
1395
|
+
feeRate
|
|
1396
|
+
};
|
|
1397
|
+
}
|
|
1398
|
+
}
|
|
1399
|
+
|
|
1400
|
+
// TODO: This is a hotfix until transferMax for Bitcoin is supported.
|
|
1401
|
+
if (transferAll) {
|
|
1402
|
+
inputData.value = transferAmount.value;
|
|
1403
|
+
}
|
|
1366
1404
|
} else {
|
|
1367
1405
|
const substrateApi = this.#koniState.getSubstrateApi(chain);
|
|
1368
1406
|
[transaction, transferAmount.value] = await (0, _token.createSubstrateExtrinsic)({
|
|
@@ -1453,8 +1491,8 @@ class KoniExtension {
|
|
|
1453
1491
|
warnings,
|
|
1454
1492
|
address: from,
|
|
1455
1493
|
chain,
|
|
1456
|
-
feeCustom,
|
|
1457
|
-
feeOption,
|
|
1494
|
+
feeCustom: overrideFeeCustom || feeCustom,
|
|
1495
|
+
feeOption: overrideFeeCustom ? 'custom' : feeOption,
|
|
1458
1496
|
tokenPayFeeSlug,
|
|
1459
1497
|
chainType,
|
|
1460
1498
|
transferNativeAmount,
|
|
@@ -1500,7 +1538,7 @@ class KoniExtension {
|
|
|
1500
1538
|
const isPosBridgeTransfer = (0, _posBridge._isPosChainBridge)(originNetworkKey, destinationNetworkKey);
|
|
1501
1539
|
const isAcrossBridgeTransfer = (0, _acrossBridge._isAcrossChainBridge)(originNetworkKey, destinationNetworkKey);
|
|
1502
1540
|
const extrinsicType = _KoniTypes.ExtrinsicType.TRANSFER_XCM;
|
|
1503
|
-
const isSubstrateXcm = !(isAvailBridgeFromEvm || isAvailBridgeFromAvail || isSnowBridgeEvmTransfer || isPolygonBridgeTransfer || isPosBridgeTransfer);
|
|
1541
|
+
const isSubstrateXcm = !(isAvailBridgeFromEvm || isAvailBridgeFromAvail || isSnowBridgeEvmTransfer || isPolygonBridgeTransfer || isPosBridgeTransfer || isAcrossBridgeTransfer);
|
|
1504
1542
|
const isTransferNative = this.#koniState.getNativeTokenInfo(originNetworkKey).slug === tokenSlug;
|
|
1505
1543
|
const isTransferLocalTokenAndPayThatTokenAsFee = !isTransferNative && tokenSlug === tokenPayFeeSlug;
|
|
1506
1544
|
let xcmFeeDryRun;
|
|
@@ -1582,48 +1620,47 @@ class KoniExtension {
|
|
|
1582
1620
|
}
|
|
1583
1621
|
let isSendingTokenSufficient = false;
|
|
1584
1622
|
let receiverSystemAccountInfo;
|
|
1585
|
-
if (
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
value: _receiverDestinationTokenKeepAliveBalance
|
|
1603
|
-
} = await this.getAddressTotalBalance({
|
|
1604
|
-
address: to,
|
|
1605
|
-
networkKey: destinationNetworkKey,
|
|
1606
|
-
token: destinationTokenInfo.slug,
|
|
1607
|
-
extrinsicType
|
|
1608
|
-
});
|
|
1609
|
-
const receiverDestinationTokenKeepAliveBalance = BigInt(_receiverDestinationTokenKeepAliveBalance);
|
|
1610
|
-
if (!(0, _utils6._isNativeToken)(destinationTokenInfo)) {
|
|
1611
|
-
const _receiverNativeTotal = await this.getAddressTotalBalance({
|
|
1623
|
+
if ((0, _utils6._isChainSubstrateCompatible)(chainInfoMap[destinationNetworkKey])) {
|
|
1624
|
+
const setting = {
|
|
1625
|
+
visible: true
|
|
1626
|
+
};
|
|
1627
|
+
await this.#koniState.chainService.updateAssetSetting(destinationTokenInfo.slug, setting, true);
|
|
1628
|
+
const {
|
|
1629
|
+
value: _senderTransferable
|
|
1630
|
+
} = await this.getAddressTransferableBalance({
|
|
1631
|
+
address: from,
|
|
1632
|
+
networkKey: originNetworkKey,
|
|
1633
|
+
token: originTokenInfo.slug
|
|
1634
|
+
});
|
|
1635
|
+
const senderTransferable = BigInt(_senderTransferable);
|
|
1636
|
+
const sendingAmount = BigInt(value);
|
|
1637
|
+
const {
|
|
1638
|
+
value: _receiverDestinationTokenKeepAliveBalance
|
|
1639
|
+
} = await this.getAddressTotalBalance({
|
|
1612
1640
|
address: to,
|
|
1613
1641
|
networkKey: destinationNetworkKey,
|
|
1614
|
-
token:
|
|
1642
|
+
token: destinationTokenInfo.slug,
|
|
1615
1643
|
extrinsicType
|
|
1616
1644
|
});
|
|
1617
|
-
|
|
1645
|
+
const receiverDestinationTokenKeepAliveBalance = BigInt(_receiverDestinationTokenKeepAliveBalance);
|
|
1646
|
+
if (!(0, _utils6._isNativeToken)(destinationTokenInfo)) {
|
|
1647
|
+
const _receiverNativeTotal = await this.getAddressTotalBalance({
|
|
1648
|
+
address: to,
|
|
1649
|
+
networkKey: destinationNetworkKey,
|
|
1650
|
+
token: destinationNativeTokenSlug,
|
|
1651
|
+
extrinsicType
|
|
1652
|
+
});
|
|
1653
|
+
receiverSystemAccountInfo = _receiverNativeTotal.metadata;
|
|
1654
|
+
}
|
|
1655
|
+
const substrateApi = this.#koniState.getSubstrateApi(destinationNetworkKey);
|
|
1656
|
+
const sufficientChain = this.#koniState.chainService.value.sufficientChains;
|
|
1657
|
+
isSendingTokenSufficient = await (0, _utils._isSufficientToken)(destinationTokenInfo, substrateApi, sufficientChain);
|
|
1658
|
+
const [warning, error] = (0, _transfer.additionalValidateTransferForRecipient)(destinationTokenInfo, destinationNativeTokenInfo, extrinsicType, receiverDestinationTokenKeepAliveBalance, sendingAmount, senderTransferable,
|
|
1659
|
+
// different from sendingTokenInfo being passed in
|
|
1660
|
+
receiverSystemAccountInfo, isSendingTokenSufficient);
|
|
1661
|
+
warning.length && inputTransaction.warnings.push(...warning);
|
|
1662
|
+
error.length && inputTransaction.errors.push(...error);
|
|
1618
1663
|
}
|
|
1619
|
-
const substrateApi = this.#koniState.getSubstrateApi(destinationNetworkKey);
|
|
1620
|
-
const sufficientChain = this.#koniState.chainService.value.sufficientChains;
|
|
1621
|
-
isSendingTokenSufficient = await (0, _utils._isSufficientToken)(destinationTokenInfo, substrateApi, sufficientChain);
|
|
1622
|
-
const [warning, error] = (0, _transfer.additionalValidateTransferForRecipient)(destinationTokenInfo, destinationNativeTokenInfo, extrinsicType, receiverDestinationTokenKeepAliveBalance, sendingAmount, senderTransferable,
|
|
1623
|
-
// different from sendingTokenInfo being passed in
|
|
1624
|
-
receiverSystemAccountInfo, isSendingTokenSufficient);
|
|
1625
|
-
warning.length && inputTransaction.warnings.push(...warning);
|
|
1626
|
-
error.length && inputTransaction.errors.push(...error);
|
|
1627
1664
|
if (isSubstrateXcm) {
|
|
1628
1665
|
const isDryRunSuccess = await (0, _xcm.dryRunXcmExtrinsicV2)(params);
|
|
1629
1666
|
if (!isDryRunSuccess) {
|
|
@@ -1918,6 +1955,7 @@ class KoniExtension {
|
|
|
1918
1955
|
destChain: _destChain,
|
|
1919
1956
|
feeCustom,
|
|
1920
1957
|
feeOption,
|
|
1958
|
+
to,
|
|
1921
1959
|
token,
|
|
1922
1960
|
tokenPayFeeSlug,
|
|
1923
1961
|
value
|
|
@@ -1940,6 +1978,7 @@ class KoniExtension {
|
|
|
1940
1978
|
}
|
|
1941
1979
|
const _request = {
|
|
1942
1980
|
address: address,
|
|
1981
|
+
to: to,
|
|
1943
1982
|
value,
|
|
1944
1983
|
// todo: lazy subscribe to improve performance
|
|
1945
1984
|
cardanoApi: this.#koniState.chainService.getCardanoApi(chain),
|
|
@@ -1952,6 +1991,7 @@ class KoniExtension {
|
|
|
1952
1991
|
srcToken,
|
|
1953
1992
|
substrateApi: this.#koniState.chainService.getSubstrateApi(chain),
|
|
1954
1993
|
tonApi: this.#koniState.chainService.getTonApi(chain),
|
|
1994
|
+
bitcoinApi: this.#koniState.chainService.getBitcoinApi(chain),
|
|
1955
1995
|
isTransferLocalTokenAndPayThatTokenAsFee,
|
|
1956
1996
|
isTransferNativeTokenAndPayLocalTokenAsFee,
|
|
1957
1997
|
nativeToken
|
|
@@ -2152,6 +2192,15 @@ class KoniExtension {
|
|
|
2152
2192
|
});
|
|
2153
2193
|
return this.#koniState.getConfirmationsQueueSubjectCardano().getValue();
|
|
2154
2194
|
}
|
|
2195
|
+
subscribeConfirmationsBitcoin(id, port) {
|
|
2196
|
+
const cb = (0, _subscriptions.createSubscription)(id, port);
|
|
2197
|
+
const subscription = this.#koniState.getConfirmationsQueueSubjectBitcoin().subscribe(cb);
|
|
2198
|
+
this.createUnsubscriptionHandle(id, subscription.unsubscribe);
|
|
2199
|
+
port.onDisconnect.addListener(() => {
|
|
2200
|
+
this.cancelSubscription(id);
|
|
2201
|
+
});
|
|
2202
|
+
return this.#koniState.getConfirmationsQueueSubjectBitcoin().getValue();
|
|
2203
|
+
}
|
|
2155
2204
|
async completeConfirmation(request) {
|
|
2156
2205
|
return await this.#koniState.completeConfirmation(request);
|
|
2157
2206
|
}
|
|
@@ -2161,7 +2210,9 @@ class KoniExtension {
|
|
|
2161
2210
|
async completeConfirmationCardano(request) {
|
|
2162
2211
|
return await this.#koniState.completeConfirmationCardano(request);
|
|
2163
2212
|
}
|
|
2164
|
-
|
|
2213
|
+
async completeConfirmationBitcoin(request) {
|
|
2214
|
+
return await this.#koniState.completeConfirmationBitcoin(request);
|
|
2215
|
+
}
|
|
2165
2216
|
/// Sign Qr
|
|
2166
2217
|
|
|
2167
2218
|
getNetworkJsonByChainId(chainId) {
|
|
@@ -4731,12 +4782,16 @@ class KoniExtension {
|
|
|
4731
4782
|
return this.subscribeConfirmationsTon(id, port);
|
|
4732
4783
|
case 'pri(confirmationsCardano.subscribe)':
|
|
4733
4784
|
return this.subscribeConfirmationsCardano(id, port);
|
|
4785
|
+
case 'pri(confirmationsBitcoin.subscribe)':
|
|
4786
|
+
return this.subscribeConfirmationsBitcoin(id, port);
|
|
4734
4787
|
case 'pri(confirmations.complete)':
|
|
4735
4788
|
return await this.completeConfirmation(request);
|
|
4736
4789
|
case 'pri(confirmationsTon.complete)':
|
|
4737
4790
|
return await this.completeConfirmationTon(request);
|
|
4738
4791
|
case 'pri(confirmationsCardano.complete)':
|
|
4739
4792
|
return await this.completeConfirmationCardano(request);
|
|
4793
|
+
case 'pri(confirmationsBitcoin.complete)':
|
|
4794
|
+
return await this.completeConfirmationBitcoin(request);
|
|
4740
4795
|
|
|
4741
4796
|
/// Stake
|
|
4742
4797
|
case 'pri(bonding.getBondingOptions)':
|
|
@@ -95,6 +95,7 @@ class KoniState {
|
|
|
95
95
|
generalStatus = _types.ServiceStatus.INITIALIZING;
|
|
96
96
|
waitSleeping = null;
|
|
97
97
|
waitStarting = null;
|
|
98
|
+
waitStartingFull = null;
|
|
98
99
|
constructor() {
|
|
99
100
|
let providers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
100
101
|
// Init subwallet api sdk
|
|
@@ -106,11 +107,13 @@ class KoniState {
|
|
|
106
107
|
this.eventService = new _eventService.EventService();
|
|
107
108
|
this.dbService = new _DatabaseService.default(this.eventService);
|
|
108
109
|
this.keyringService = new _keyringService.KeyringService(this);
|
|
110
|
+
this.feeService = new _service2.default(this);
|
|
111
|
+
this.transactionService = new _transactionService.default(this);
|
|
109
112
|
this.notificationService = new _NotificationService.default();
|
|
110
113
|
this.chainService = new _chainService.ChainService(this.dbService, this.eventService);
|
|
111
114
|
this.subscanService = _subscanService.SubscanService.getInstance();
|
|
112
115
|
this.settingService = new _SettingService.default();
|
|
113
|
-
this.requestService = new _requestService.default(this.chainService, this.settingService, this.keyringService);
|
|
116
|
+
this.requestService = new _requestService.default(this.chainService, this.settingService, this.keyringService, this.feeService, this.transactionService);
|
|
114
117
|
this.priceService = new _priceService.PriceService(this.dbService, this.eventService, this.chainService);
|
|
115
118
|
this.balanceService = new _balanceService.BalanceService(this);
|
|
116
119
|
this.historyService = new _historyService.HistoryService(this.dbService, this.chainService, this.eventService, this.keyringService, this.subscanService);
|
|
@@ -120,9 +123,7 @@ class KoniState {
|
|
|
120
123
|
this.campaignService = new _campaignService.default(this);
|
|
121
124
|
this.mktCampaignService = new _mktCampaignService.default(this);
|
|
122
125
|
this.buyService = new _buyService.default(this);
|
|
123
|
-
this.transactionService = new _transactionService.default(this);
|
|
124
126
|
this.earningService = new _service.default(this);
|
|
125
|
-
this.feeService = new _service2.default(this);
|
|
126
127
|
this.swapService = new _swapService.SwapService(this);
|
|
127
128
|
this.inappNotificationService = new _inappNotificationService.InappNotificationService(this.dbService, this.keyringService, this.eventService, this.chainService);
|
|
128
129
|
this.chainOnlineService = new _chainOnlineService.ChainOnlineService(this.chainService, this.settingService, this.eventService, this.dbService);
|
|
@@ -132,7 +133,9 @@ class KoniState {
|
|
|
132
133
|
|
|
133
134
|
// Init state
|
|
134
135
|
if (_utils3.targetIsWeb) {
|
|
135
|
-
this.init().
|
|
136
|
+
this.init().then(() => {
|
|
137
|
+
this.wakeup(true).catch(console.error);
|
|
138
|
+
}).catch(console.error);
|
|
136
139
|
}
|
|
137
140
|
}
|
|
138
141
|
|
|
@@ -228,7 +231,8 @@ class KoniState {
|
|
|
228
231
|
await this.earningService.init();
|
|
229
232
|
await this.swapService.init();
|
|
230
233
|
await this.inappNotificationService.init();
|
|
231
|
-
|
|
234
|
+
|
|
235
|
+
// this.onReady();
|
|
232
236
|
this.onAccountAdd();
|
|
233
237
|
this.onAccountRemove();
|
|
234
238
|
|
|
@@ -240,6 +244,9 @@ class KoniState {
|
|
|
240
244
|
this.chainService.subscribeChainInfoMap().subscribe(() => {
|
|
241
245
|
this.afterChainServiceInit();
|
|
242
246
|
});
|
|
247
|
+
|
|
248
|
+
// Mark app is ready
|
|
249
|
+
this.eventService.emit('general.init', true);
|
|
243
250
|
}
|
|
244
251
|
async initMantaPay(password) {
|
|
245
252
|
var _this$chainService, _this$chainService$ma;
|
|
@@ -263,11 +270,6 @@ class KoniState {
|
|
|
263
270
|
this.mantaPayConfigSubject.next(data);
|
|
264
271
|
});
|
|
265
272
|
}
|
|
266
|
-
onReady() {
|
|
267
|
-
// Todo: Need optimize in the future to, only run important services onetime to save resources
|
|
268
|
-
// Todo: If optimize must check activity of web-runner of mobile
|
|
269
|
-
this._start().catch(console.error);
|
|
270
|
-
}
|
|
271
273
|
updateKeyringState() {
|
|
272
274
|
let isReady = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
273
275
|
let callback = arguments.length > 1 ? arguments[1] : undefined;
|
|
@@ -756,6 +758,9 @@ class KoniState {
|
|
|
756
758
|
getCardanoApi(networkKey) {
|
|
757
759
|
return this.chainService.getCardanoApi(networkKey);
|
|
758
760
|
}
|
|
761
|
+
getBitcoinApi(networkKey) {
|
|
762
|
+
return this.chainService.getBitcoinApi(networkKey);
|
|
763
|
+
}
|
|
759
764
|
getApiMap() {
|
|
760
765
|
return {
|
|
761
766
|
substrate: this.chainService.getSubstrateApiMap(),
|
|
@@ -1269,6 +1274,9 @@ class KoniState {
|
|
|
1269
1274
|
getConfirmationsQueueSubjectCardano() {
|
|
1270
1275
|
return this.requestService.confirmationsQueueSubjectCardano;
|
|
1271
1276
|
}
|
|
1277
|
+
getConfirmationsQueueSubjectBitcoin() {
|
|
1278
|
+
return this.requestService.confirmationsQueueSubjectBitcoin;
|
|
1279
|
+
}
|
|
1272
1280
|
async completeConfirmation(request) {
|
|
1273
1281
|
return await this.requestService.completeConfirmation(request);
|
|
1274
1282
|
}
|
|
@@ -1278,6 +1286,9 @@ class KoniState {
|
|
|
1278
1286
|
async completeConfirmationCardano(request) {
|
|
1279
1287
|
return await this.requestService.completeConfirmationCardano(request);
|
|
1280
1288
|
}
|
|
1289
|
+
async completeConfirmationBitcoin(request) {
|
|
1290
|
+
return await this.requestService.completeConfirmationBitcoin(request);
|
|
1291
|
+
}
|
|
1281
1292
|
async onMV3Update() {
|
|
1282
1293
|
const migrationStatus = await _storage.SWStorage.instance.getItem('mv3_migration');
|
|
1283
1294
|
if (!migrationStatus || migrationStatus !== 'done') {
|
|
@@ -1429,8 +1440,12 @@ class KoniState {
|
|
|
1429
1440
|
});
|
|
1430
1441
|
}
|
|
1431
1442
|
async sleep() {
|
|
1443
|
+
// Wait for app initialized before sleep
|
|
1444
|
+
await this.eventService.waitAppInitialized;
|
|
1445
|
+
|
|
1432
1446
|
// Wait starting finish before sleep to avoid conflict
|
|
1433
1447
|
this.generalStatus === _types.ServiceStatus.STARTING && this.waitStarting && (await this.waitStarting);
|
|
1448
|
+
this.generalStatus === _types.ServiceStatus.STARTING_FULL && this.waitStartingFull && (await this.waitStartingFull);
|
|
1434
1449
|
this.eventService.emit('general.sleep', true);
|
|
1435
1450
|
|
|
1436
1451
|
// Avoid sleep multiple times
|
|
@@ -1459,6 +1474,9 @@ class KoniState {
|
|
|
1459
1474
|
this.waitSleeping = null;
|
|
1460
1475
|
}
|
|
1461
1476
|
async _start() {
|
|
1477
|
+
// Wait for app initialized before start
|
|
1478
|
+
await this.eventService.waitAppInitialized;
|
|
1479
|
+
|
|
1462
1480
|
// Wait sleep finish before start to avoid conflict
|
|
1463
1481
|
this.generalStatus === _types.ServiceStatus.STOPPING && this.waitSleeping && (await this.waitSleeping);
|
|
1464
1482
|
|
|
@@ -1484,15 +1502,38 @@ class KoniState {
|
|
|
1484
1502
|
}
|
|
1485
1503
|
|
|
1486
1504
|
// Start services
|
|
1487
|
-
|
|
1505
|
+
this.eventService.emit('general.start', true);
|
|
1488
1506
|
|
|
1489
1507
|
// Complete starting
|
|
1490
1508
|
starting.resolve();
|
|
1491
1509
|
this.waitStarting = null;
|
|
1492
1510
|
this.generalStatus = _types.ServiceStatus.STARTED;
|
|
1493
1511
|
}
|
|
1512
|
+
async _startFull() {
|
|
1513
|
+
// Continue wait existed starting process
|
|
1514
|
+
if (this.generalStatus === _types.ServiceStatus.STARTING) {
|
|
1515
|
+
await this.waitStarting;
|
|
1516
|
+
}
|
|
1517
|
+
|
|
1518
|
+
// Always start full from start state
|
|
1519
|
+
if (this.generalStatus !== _types.ServiceStatus.STARTED) {
|
|
1520
|
+
return;
|
|
1521
|
+
}
|
|
1522
|
+
this.generalStatus = _types.ServiceStatus.STARTING_FULL;
|
|
1523
|
+
const startingFull = (0, _promise.createPromiseHandler)();
|
|
1524
|
+
this.waitStartingFull = startingFull.promise;
|
|
1525
|
+
await Promise.all([this.cron.start(), this.subscription.start(), this.historyService.start(), this.priceService.start(), this.balanceService.start(), this.earningService.start(), this.swapService.start(), this.inappNotificationService.start()]);
|
|
1526
|
+
this.eventService.emit('general.start_full', true);
|
|
1527
|
+
this.waitStartingFull = null;
|
|
1528
|
+
this.generalStatus = _types.ServiceStatus.STARTED_FULL;
|
|
1529
|
+
startingFull.resolve();
|
|
1530
|
+
}
|
|
1494
1531
|
async wakeup() {
|
|
1532
|
+
let fullWakeup = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
1495
1533
|
await this._start();
|
|
1534
|
+
if (fullWakeup) {
|
|
1535
|
+
await this._startFull();
|
|
1536
|
+
}
|
|
1496
1537
|
}
|
|
1497
1538
|
cancelSubscription(id) {
|
|
1498
1539
|
if ((0, _subscriptions.isSubscriptionRunning)(id)) {
|
package/cjs/packageInfo.js
CHANGED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.subscribeBitcoinBalance = subscribeBitcoinBalance;
|
|
7
|
+
var _types = require("@subwallet/chain-list/types");
|
|
8
|
+
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
9
|
+
var _constants = require("@subwallet/extension-base/constants");
|
|
10
|
+
var _utils = require("@subwallet/extension-base/utils");
|
|
11
|
+
// Copyright 2019-2022 @subwallet/extension-base
|
|
12
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
13
|
+
|
|
14
|
+
function getDefaultBalanceResult() {
|
|
15
|
+
return {
|
|
16
|
+
balance: '0',
|
|
17
|
+
bitcoinBalanceMetadata: {
|
|
18
|
+
inscriptionCount: 0,
|
|
19
|
+
runeBalance: '0',
|
|
20
|
+
inscriptionBalance: '0'
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
async function getBitcoinBalance(bitcoinApi, addresses) {
|
|
25
|
+
return await Promise.all(addresses.map(async address => {
|
|
26
|
+
try {
|
|
27
|
+
const [addressSummaryInfo] = await Promise.all([bitcoinApi.api.getAddressSummaryInfo(address)]);
|
|
28
|
+
if (Number(addressSummaryInfo.balance) < 0) {
|
|
29
|
+
return getDefaultBalanceResult();
|
|
30
|
+
}
|
|
31
|
+
const bitcoinBalanceMetadata = {
|
|
32
|
+
inscriptionCount: addressSummaryInfo.total_inscription,
|
|
33
|
+
runeBalance: addressSummaryInfo.balance_rune,
|
|
34
|
+
inscriptionBalance: addressSummaryInfo.balance_inscription
|
|
35
|
+
};
|
|
36
|
+
return {
|
|
37
|
+
balance: addressSummaryInfo.balance.toString(),
|
|
38
|
+
bitcoinBalanceMetadata: bitcoinBalanceMetadata
|
|
39
|
+
};
|
|
40
|
+
} catch (error) {
|
|
41
|
+
console.log('Error while fetching Bitcoin balances', error);
|
|
42
|
+
return getDefaultBalanceResult();
|
|
43
|
+
}
|
|
44
|
+
}));
|
|
45
|
+
}
|
|
46
|
+
function subscribeBitcoinBalance(params) {
|
|
47
|
+
var _Object$values$;
|
|
48
|
+
const {
|
|
49
|
+
addresses,
|
|
50
|
+
assetMap,
|
|
51
|
+
bitcoinApi,
|
|
52
|
+
callback,
|
|
53
|
+
chainInfo
|
|
54
|
+
} = params;
|
|
55
|
+
const chain = chainInfo.slug;
|
|
56
|
+
const nativeTokenInfo = (0, _utils.filterAssetsByChainAndType)(assetMap, chain, [_types._AssetType.NATIVE]);
|
|
57
|
+
const nativeTokenSlug = ((_Object$values$ = Object.values(nativeTokenInfo)[0]) === null || _Object$values$ === void 0 ? void 0 : _Object$values$.slug) || '';
|
|
58
|
+
const getBalance = () => {
|
|
59
|
+
getBitcoinBalance(bitcoinApi, addresses).then(balances => {
|
|
60
|
+
return balances.map((_ref, index) => {
|
|
61
|
+
let {
|
|
62
|
+
balance,
|
|
63
|
+
bitcoinBalanceMetadata
|
|
64
|
+
} = _ref;
|
|
65
|
+
return {
|
|
66
|
+
address: addresses[index],
|
|
67
|
+
tokenSlug: nativeTokenSlug,
|
|
68
|
+
state: _KoniTypes.APIItemState.READY,
|
|
69
|
+
free: balance,
|
|
70
|
+
locked: (parseInt(bitcoinBalanceMetadata.runeBalance.toString()) + parseInt(bitcoinBalanceMetadata.inscriptionBalance.toString())).toString(),
|
|
71
|
+
metadata: bitcoinBalanceMetadata
|
|
72
|
+
};
|
|
73
|
+
});
|
|
74
|
+
}).catch(e => {
|
|
75
|
+
console.error('Error on get Bitcoin balance with token bitcoin', e);
|
|
76
|
+
return addresses.map(address => {
|
|
77
|
+
return {
|
|
78
|
+
address: address,
|
|
79
|
+
tokenSlug: nativeTokenSlug,
|
|
80
|
+
state: _KoniTypes.APIItemState.READY,
|
|
81
|
+
free: '0',
|
|
82
|
+
locked: '0'
|
|
83
|
+
};
|
|
84
|
+
});
|
|
85
|
+
}).then(items => {
|
|
86
|
+
callback(items);
|
|
87
|
+
}).catch(console.error);
|
|
88
|
+
};
|
|
89
|
+
const interval = setInterval(getBalance, _constants.BITCOIN_REFRESH_BALANCE_INTERVAL);
|
|
90
|
+
getBalance();
|
|
91
|
+
return () => {
|
|
92
|
+
clearInterval(interval);
|
|
93
|
+
};
|
|
94
|
+
}
|
|
@@ -9,6 +9,7 @@ var _types = require("@subwallet/chain-list/types");
|
|
|
9
9
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
10
10
|
var _constants = require("@subwallet/extension-base/constants");
|
|
11
11
|
var _web = require("@subwallet/extension-base/koni/api/contract-handler/evm/web3");
|
|
12
|
+
var _constants2 = require("@subwallet/extension-base/services/chain-service/constants");
|
|
12
13
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
13
14
|
var _utils2 = require("@subwallet/extension-base/utils");
|
|
14
15
|
var _util = require("@polkadot/util");
|
|
@@ -24,7 +25,11 @@ function subscribeERC20Interval(_ref) {
|
|
|
24
25
|
evmApi
|
|
25
26
|
} = _ref;
|
|
26
27
|
const chain = chainInfo.slug;
|
|
27
|
-
|
|
28
|
+
let tokenList = (0, _utils2.filterAssetsByChainAndType)(assetMap, chain, [_types._AssetType.ERC20]);
|
|
29
|
+
if (_constants2._BALANCE_CHAIN_GROUP.moonbeam.includes(chain)) {
|
|
30
|
+
const moonbeamLocal = (0, _utils2.filterAssetsByChainAndType)(assetMap, chain, [_types._AssetType.LOCAL]);
|
|
31
|
+
tokenList = Object.assign({}, tokenList, moonbeamLocal);
|
|
32
|
+
}
|
|
28
33
|
const erc20ContractMap = {};
|
|
29
34
|
Object.entries(tokenList).forEach(_ref2 => {
|
|
30
35
|
let [slug, tokenInfo] = _ref2;
|
|
@@ -8,6 +8,7 @@ exports.getAccountJsonByAddress = void 0;
|
|
|
8
8
|
exports.subscribeBalance = subscribeBalance;
|
|
9
9
|
var _types = require("@subwallet/chain-list/types");
|
|
10
10
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
11
|
+
var _bitcoin2 = require("@subwallet/extension-base/services/balance-service/helpers/subscribe/bitcoin");
|
|
11
12
|
var _cardano = require("@subwallet/extension-base/services/balance-service/helpers/subscribe/cardano");
|
|
12
13
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
13
14
|
var _utils2 = require("@subwallet/extension-base/utils");
|
|
@@ -45,20 +46,21 @@ const getAccountJsonByAddress = address => {
|
|
|
45
46
|
exports.getAccountJsonByAddress = getAccountJsonByAddress;
|
|
46
47
|
const filterAddress = (addresses, chainInfo) => {
|
|
47
48
|
const {
|
|
49
|
+
_bitcoin,
|
|
48
50
|
bitcoin,
|
|
49
51
|
cardano,
|
|
50
52
|
evm,
|
|
51
53
|
substrate,
|
|
52
54
|
ton
|
|
53
|
-
} = (0, _utils2.getAddressesByChainTypeMap)(addresses);
|
|
55
|
+
} = (0, _utils2.getAddressesByChainTypeMap)(addresses, chainInfo);
|
|
54
56
|
if ((0, _utils._isChainEvmCompatible)(chainInfo)) {
|
|
55
|
-
return [evm, [
|
|
57
|
+
return [evm, [bitcoin, substrate, ton, cardano, _bitcoin].flat()];
|
|
56
58
|
} else if ((0, _utils._isChainBitcoinCompatible)(chainInfo)) {
|
|
57
|
-
return [bitcoin, [
|
|
59
|
+
return [bitcoin, [evm, substrate, ton, cardano, _bitcoin].flat()];
|
|
58
60
|
} else if ((0, _utils._isChainTonCompatible)(chainInfo)) {
|
|
59
|
-
return [ton, [
|
|
61
|
+
return [ton, [bitcoin, evm, substrate, cardano, _bitcoin].flat()];
|
|
60
62
|
} else if ((0, _utils._isChainCardanoCompatible)(chainInfo)) {
|
|
61
|
-
return [cardano, [
|
|
63
|
+
return [cardano, [bitcoin, evm, substrate, ton, _bitcoin].flat()];
|
|
62
64
|
} else {
|
|
63
65
|
const fetchList = [];
|
|
64
66
|
const unfetchList = [];
|
|
@@ -84,7 +86,7 @@ const filterAddress = (addresses, chainInfo) => {
|
|
|
84
86
|
fetchList.push(address);
|
|
85
87
|
}
|
|
86
88
|
});
|
|
87
|
-
return [fetchList, [
|
|
89
|
+
return [fetchList, [unfetchList, bitcoin, evm, ton, cardano, _bitcoin].flat()];
|
|
88
90
|
}
|
|
89
91
|
};
|
|
90
92
|
const handleUnsupportedOrPendingAddresses = (addresses, chainSlug, chainAssetMap, state, callback) => {
|
|
@@ -104,7 +106,7 @@ const handleUnsupportedOrPendingAddresses = (addresses, chainSlug, chainAssetMap
|
|
|
104
106
|
};
|
|
105
107
|
|
|
106
108
|
// main subscription, use for multiple chains, multiple addresses and multiple tokens
|
|
107
|
-
function subscribeBalance(addresses, chains, tokens, _chainAssetMap, _chainInfoMap, substrateApiMap, evmApiMap, tonApiMap, cardanoApiMap, callback, extrinsicType) {
|
|
109
|
+
function subscribeBalance(addresses, chains, tokens, _chainAssetMap, _chainInfoMap, substrateApiMap, evmApiMap, tonApiMap, cardanoApiMap, bitcoinApiMap, callback, extrinsicType) {
|
|
108
110
|
// Filter chain and token
|
|
109
111
|
const chainAssetMap = Object.fromEntries(Object.entries(_chainAssetMap).filter(_ref => {
|
|
110
112
|
let [token] = _ref;
|
|
@@ -152,6 +154,16 @@ function subscribeBalance(addresses, chains, tokens, _chainAssetMap, _chainInfoM
|
|
|
152
154
|
cardanoApi
|
|
153
155
|
});
|
|
154
156
|
}
|
|
157
|
+
const bitcoinApi = bitcoinApiMap[chainSlug];
|
|
158
|
+
if ((0, _utils._isPureBitcoinChain)(chainInfo)) {
|
|
159
|
+
return (0, _bitcoin2.subscribeBitcoinBalance)({
|
|
160
|
+
addresses: useAddresses,
|
|
161
|
+
assetMap: chainAssetMap,
|
|
162
|
+
bitcoinApi,
|
|
163
|
+
callback,
|
|
164
|
+
chainInfo
|
|
165
|
+
});
|
|
166
|
+
}
|
|
155
167
|
|
|
156
168
|
// If the chain is not ready, return pending state
|
|
157
169
|
if (!substrateApiMap[chainSlug].isApiReady) {
|