@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
|
@@ -87,6 +87,7 @@ export default class KoniState {
|
|
|
87
87
|
generalStatus = ServiceStatus.INITIALIZING;
|
|
88
88
|
waitSleeping = null;
|
|
89
89
|
waitStarting = null;
|
|
90
|
+
waitStartingFull = null;
|
|
90
91
|
constructor(providers = {}) {
|
|
91
92
|
// Init subwallet api sdk
|
|
92
93
|
subwalletApiSdk.init({
|
|
@@ -97,11 +98,13 @@ export default class KoniState {
|
|
|
97
98
|
this.eventService = new EventService();
|
|
98
99
|
this.dbService = new DatabaseService(this.eventService);
|
|
99
100
|
this.keyringService = new KeyringService(this);
|
|
101
|
+
this.feeService = new FeeService(this);
|
|
102
|
+
this.transactionService = new TransactionService(this);
|
|
100
103
|
this.notificationService = new NotificationService();
|
|
101
104
|
this.chainService = new ChainService(this.dbService, this.eventService);
|
|
102
105
|
this.subscanService = SubscanService.getInstance();
|
|
103
106
|
this.settingService = new SettingService();
|
|
104
|
-
this.requestService = new RequestService(this.chainService, this.settingService, this.keyringService);
|
|
107
|
+
this.requestService = new RequestService(this.chainService, this.settingService, this.keyringService, this.feeService, this.transactionService);
|
|
105
108
|
this.priceService = new PriceService(this.dbService, this.eventService, this.chainService);
|
|
106
109
|
this.balanceService = new BalanceService(this);
|
|
107
110
|
this.historyService = new HistoryService(this.dbService, this.chainService, this.eventService, this.keyringService, this.subscanService);
|
|
@@ -111,9 +114,7 @@ export default class KoniState {
|
|
|
111
114
|
this.campaignService = new CampaignService(this);
|
|
112
115
|
this.mktCampaignService = new MktCampaignService(this);
|
|
113
116
|
this.buyService = new BuyService(this);
|
|
114
|
-
this.transactionService = new TransactionService(this);
|
|
115
117
|
this.earningService = new EarningService(this);
|
|
116
|
-
this.feeService = new FeeService(this);
|
|
117
118
|
this.swapService = new SwapService(this);
|
|
118
119
|
this.inappNotificationService = new InappNotificationService(this.dbService, this.keyringService, this.eventService, this.chainService);
|
|
119
120
|
this.chainOnlineService = new ChainOnlineService(this.chainService, this.settingService, this.eventService, this.dbService);
|
|
@@ -123,7 +124,9 @@ export default class KoniState {
|
|
|
123
124
|
|
|
124
125
|
// Init state
|
|
125
126
|
if (targetIsWeb) {
|
|
126
|
-
this.init().
|
|
127
|
+
this.init().then(() => {
|
|
128
|
+
this.wakeup(true).catch(console.error);
|
|
129
|
+
}).catch(console.error);
|
|
127
130
|
}
|
|
128
131
|
}
|
|
129
132
|
|
|
@@ -218,7 +221,8 @@ export default class KoniState {
|
|
|
218
221
|
await this.earningService.init();
|
|
219
222
|
await this.swapService.init();
|
|
220
223
|
await this.inappNotificationService.init();
|
|
221
|
-
|
|
224
|
+
|
|
225
|
+
// this.onReady();
|
|
222
226
|
this.onAccountAdd();
|
|
223
227
|
this.onAccountRemove();
|
|
224
228
|
|
|
@@ -230,6 +234,9 @@ export default class KoniState {
|
|
|
230
234
|
this.chainService.subscribeChainInfoMap().subscribe(() => {
|
|
231
235
|
this.afterChainServiceInit();
|
|
232
236
|
});
|
|
237
|
+
|
|
238
|
+
// Mark app is ready
|
|
239
|
+
this.eventService.emit('general.init', true);
|
|
233
240
|
}
|
|
234
241
|
async initMantaPay(password) {
|
|
235
242
|
var _this$chainService, _this$chainService$ma;
|
|
@@ -253,11 +260,6 @@ export default class KoniState {
|
|
|
253
260
|
this.mantaPayConfigSubject.next(data);
|
|
254
261
|
});
|
|
255
262
|
}
|
|
256
|
-
onReady() {
|
|
257
|
-
// Todo: Need optimize in the future to, only run important services onetime to save resources
|
|
258
|
-
// Todo: If optimize must check activity of web-runner of mobile
|
|
259
|
-
this._start().catch(console.error);
|
|
260
|
-
}
|
|
261
263
|
updateKeyringState(isReady = true, callback) {
|
|
262
264
|
this.keyringService.updateKeyringState(isReady);
|
|
263
265
|
callback && callback();
|
|
@@ -740,6 +742,9 @@ export default class KoniState {
|
|
|
740
742
|
getCardanoApi(networkKey) {
|
|
741
743
|
return this.chainService.getCardanoApi(networkKey);
|
|
742
744
|
}
|
|
745
|
+
getBitcoinApi(networkKey) {
|
|
746
|
+
return this.chainService.getBitcoinApi(networkKey);
|
|
747
|
+
}
|
|
743
748
|
getApiMap() {
|
|
744
749
|
return {
|
|
745
750
|
substrate: this.chainService.getSubstrateApiMap(),
|
|
@@ -1245,6 +1250,9 @@ export default class KoniState {
|
|
|
1245
1250
|
getConfirmationsQueueSubjectCardano() {
|
|
1246
1251
|
return this.requestService.confirmationsQueueSubjectCardano;
|
|
1247
1252
|
}
|
|
1253
|
+
getConfirmationsQueueSubjectBitcoin() {
|
|
1254
|
+
return this.requestService.confirmationsQueueSubjectBitcoin;
|
|
1255
|
+
}
|
|
1248
1256
|
async completeConfirmation(request) {
|
|
1249
1257
|
return await this.requestService.completeConfirmation(request);
|
|
1250
1258
|
}
|
|
@@ -1254,6 +1262,9 @@ export default class KoniState {
|
|
|
1254
1262
|
async completeConfirmationCardano(request) {
|
|
1255
1263
|
return await this.requestService.completeConfirmationCardano(request);
|
|
1256
1264
|
}
|
|
1265
|
+
async completeConfirmationBitcoin(request) {
|
|
1266
|
+
return await this.requestService.completeConfirmationBitcoin(request);
|
|
1267
|
+
}
|
|
1257
1268
|
async onMV3Update() {
|
|
1258
1269
|
const migrationStatus = await SWStorage.instance.getItem('mv3_migration');
|
|
1259
1270
|
if (!migrationStatus || migrationStatus !== 'done') {
|
|
@@ -1404,8 +1415,12 @@ export default class KoniState {
|
|
|
1404
1415
|
});
|
|
1405
1416
|
}
|
|
1406
1417
|
async sleep() {
|
|
1418
|
+
// Wait for app initialized before sleep
|
|
1419
|
+
await this.eventService.waitAppInitialized;
|
|
1420
|
+
|
|
1407
1421
|
// Wait starting finish before sleep to avoid conflict
|
|
1408
1422
|
this.generalStatus === ServiceStatus.STARTING && this.waitStarting && (await this.waitStarting);
|
|
1423
|
+
this.generalStatus === ServiceStatus.STARTING_FULL && this.waitStartingFull && (await this.waitStartingFull);
|
|
1409
1424
|
this.eventService.emit('general.sleep', true);
|
|
1410
1425
|
|
|
1411
1426
|
// Avoid sleep multiple times
|
|
@@ -1434,6 +1449,9 @@ export default class KoniState {
|
|
|
1434
1449
|
this.waitSleeping = null;
|
|
1435
1450
|
}
|
|
1436
1451
|
async _start() {
|
|
1452
|
+
// Wait for app initialized before start
|
|
1453
|
+
await this.eventService.waitAppInitialized;
|
|
1454
|
+
|
|
1437
1455
|
// Wait sleep finish before start to avoid conflict
|
|
1438
1456
|
this.generalStatus === ServiceStatus.STOPPING && this.waitSleeping && (await this.waitSleeping);
|
|
1439
1457
|
|
|
@@ -1459,15 +1477,37 @@ export default class KoniState {
|
|
|
1459
1477
|
}
|
|
1460
1478
|
|
|
1461
1479
|
// Start services
|
|
1462
|
-
|
|
1480
|
+
this.eventService.emit('general.start', true);
|
|
1463
1481
|
|
|
1464
1482
|
// Complete starting
|
|
1465
1483
|
starting.resolve();
|
|
1466
1484
|
this.waitStarting = null;
|
|
1467
1485
|
this.generalStatus = ServiceStatus.STARTED;
|
|
1468
1486
|
}
|
|
1469
|
-
async
|
|
1487
|
+
async _startFull() {
|
|
1488
|
+
// Continue wait existed starting process
|
|
1489
|
+
if (this.generalStatus === ServiceStatus.STARTING) {
|
|
1490
|
+
await this.waitStarting;
|
|
1491
|
+
}
|
|
1492
|
+
|
|
1493
|
+
// Always start full from start state
|
|
1494
|
+
if (this.generalStatus !== ServiceStatus.STARTED) {
|
|
1495
|
+
return;
|
|
1496
|
+
}
|
|
1497
|
+
this.generalStatus = ServiceStatus.STARTING_FULL;
|
|
1498
|
+
const startingFull = createPromiseHandler();
|
|
1499
|
+
this.waitStartingFull = startingFull.promise;
|
|
1500
|
+
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()]);
|
|
1501
|
+
this.eventService.emit('general.start_full', true);
|
|
1502
|
+
this.waitStartingFull = null;
|
|
1503
|
+
this.generalStatus = ServiceStatus.STARTED_FULL;
|
|
1504
|
+
startingFull.resolve();
|
|
1505
|
+
}
|
|
1506
|
+
async wakeup(fullWakeup = false) {
|
|
1470
1507
|
await this._start();
|
|
1508
|
+
if (fullWakeup) {
|
|
1509
|
+
await this._startFull();
|
|
1510
|
+
}
|
|
1471
1511
|
}
|
|
1472
1512
|
cancelSubscription(id) {
|
|
1473
1513
|
if (isSubscriptionRunning(id)) {
|
package/package.json
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"./cjs/detectPackage.js"
|
|
18
18
|
],
|
|
19
19
|
"type": "module",
|
|
20
|
-
"version": "1.3.
|
|
20
|
+
"version": "1.3.42-0",
|
|
21
21
|
"main": "./cjs/index.js",
|
|
22
22
|
"module": "./index.js",
|
|
23
23
|
"types": "./index.d.ts",
|
|
@@ -34,6 +34,11 @@
|
|
|
34
34
|
"require": "./cjs/background/errors/BalanceError.js",
|
|
35
35
|
"default": "./background/errors/BalanceError.js"
|
|
36
36
|
},
|
|
37
|
+
"./background/errors/BitcoinProviderError": {
|
|
38
|
+
"types": "./background/errors/BitcoinProviderError.d.ts",
|
|
39
|
+
"require": "./cjs/background/errors/BitcoinProviderError.js",
|
|
40
|
+
"default": "./background/errors/BitcoinProviderError.js"
|
|
41
|
+
},
|
|
37
42
|
"./background/errors/CardanoProviderError": {
|
|
38
43
|
"types": "./background/errors/CardanoProviderError.d.ts",
|
|
39
44
|
"require": "./cjs/background/errors/CardanoProviderError.js",
|
|
@@ -119,6 +124,11 @@
|
|
|
119
124
|
"require": "./cjs/constants/index.js",
|
|
120
125
|
"default": "./constants/index.js"
|
|
121
126
|
},
|
|
127
|
+
"./constants/bitcoin": {
|
|
128
|
+
"types": "./constants/bitcoin.d.ts",
|
|
129
|
+
"require": "./cjs/constants/bitcoin.js",
|
|
130
|
+
"default": "./constants/bitcoin.js"
|
|
131
|
+
},
|
|
122
132
|
"./constants/blocked-actions": {
|
|
123
133
|
"types": "./constants/blocked-actions.d.ts",
|
|
124
134
|
"require": "./cjs/constants/blocked-actions.js",
|
|
@@ -679,6 +689,11 @@
|
|
|
679
689
|
"require": "./cjs/services/balance-service/helpers/subscribe/index.js",
|
|
680
690
|
"default": "./services/balance-service/helpers/subscribe/index.js"
|
|
681
691
|
},
|
|
692
|
+
"./services/balance-service/helpers/subscribe/bitcoin": {
|
|
693
|
+
"types": "./services/balance-service/helpers/subscribe/bitcoin.d.ts",
|
|
694
|
+
"require": "./cjs/services/balance-service/helpers/subscribe/bitcoin.js",
|
|
695
|
+
"default": "./services/balance-service/helpers/subscribe/bitcoin.js"
|
|
696
|
+
},
|
|
682
697
|
"./services/balance-service/helpers/subscribe/cardano": {
|
|
683
698
|
"types": "./services/balance-service/helpers/subscribe/cardano/index.d.ts",
|
|
684
699
|
"require": "./cjs/services/balance-service/helpers/subscribe/cardano/index.js",
|
|
@@ -739,6 +754,11 @@
|
|
|
739
754
|
"require": "./cjs/services/balance-service/helpers/subscribe/ton/utils.js",
|
|
740
755
|
"default": "./services/balance-service/helpers/subscribe/ton/utils.js"
|
|
741
756
|
},
|
|
757
|
+
"./services/balance-service/transfer/bitcoin-transfer": {
|
|
758
|
+
"types": "./services/balance-service/transfer/bitcoin-transfer.d.ts",
|
|
759
|
+
"require": "./cjs/services/balance-service/transfer/bitcoin-transfer.js",
|
|
760
|
+
"default": "./services/balance-service/transfer/bitcoin-transfer.js"
|
|
761
|
+
},
|
|
742
762
|
"./services/balance-service/transfer/cardano-transfer": {
|
|
743
763
|
"types": "./services/balance-service/transfer/cardano-transfer.d.ts",
|
|
744
764
|
"require": "./cjs/services/balance-service/transfer/cardano-transfer.js",
|
|
@@ -874,6 +894,41 @@
|
|
|
874
894
|
"require": "./cjs/services/chain-service/handler/AbstractChainHandler.js",
|
|
875
895
|
"default": "./services/chain-service/handler/AbstractChainHandler.js"
|
|
876
896
|
},
|
|
897
|
+
"./services/chain-service/handler/bitcoin/BitcoinApi": {
|
|
898
|
+
"types": "./services/chain-service/handler/bitcoin/BitcoinApi.d.ts",
|
|
899
|
+
"require": "./cjs/services/chain-service/handler/bitcoin/BitcoinApi.js",
|
|
900
|
+
"default": "./services/chain-service/handler/bitcoin/BitcoinApi.js"
|
|
901
|
+
},
|
|
902
|
+
"./services/chain-service/handler/bitcoin/BitcoinChainHandler": {
|
|
903
|
+
"types": "./services/chain-service/handler/bitcoin/BitcoinChainHandler.d.ts",
|
|
904
|
+
"require": "./cjs/services/chain-service/handler/bitcoin/BitcoinChainHandler.js",
|
|
905
|
+
"default": "./services/chain-service/handler/bitcoin/BitcoinChainHandler.js"
|
|
906
|
+
},
|
|
907
|
+
"./services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet": {
|
|
908
|
+
"types": "./services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/index.d.ts",
|
|
909
|
+
"require": "./cjs/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/index.js",
|
|
910
|
+
"default": "./services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/index.js"
|
|
911
|
+
},
|
|
912
|
+
"./services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/blockstream-testnet-strategy": {
|
|
913
|
+
"types": "./services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/blockstream-testnet-strategy.d.ts",
|
|
914
|
+
"require": "./cjs/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/blockstream-testnet-strategy.js",
|
|
915
|
+
"default": "./services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/blockstream-testnet-strategy.js"
|
|
916
|
+
},
|
|
917
|
+
"./services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/mempool-testnet-strategy": {
|
|
918
|
+
"types": "./services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/mempool-testnet-strategy.d.ts",
|
|
919
|
+
"require": "./cjs/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/mempool-testnet-strategy.js",
|
|
920
|
+
"default": "./services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/mempool-testnet-strategy.js"
|
|
921
|
+
},
|
|
922
|
+
"./services/chain-service/handler/bitcoin/strategy/SubWalletMainnet": {
|
|
923
|
+
"types": "./services/chain-service/handler/bitcoin/strategy/SubWalletMainnet/index.d.ts",
|
|
924
|
+
"require": "./cjs/services/chain-service/handler/bitcoin/strategy/SubWalletMainnet/index.js",
|
|
925
|
+
"default": "./services/chain-service/handler/bitcoin/strategy/SubWalletMainnet/index.js"
|
|
926
|
+
},
|
|
927
|
+
"./services/chain-service/handler/bitcoin/strategy/types": {
|
|
928
|
+
"types": "./services/chain-service/handler/bitcoin/strategy/types.d.ts",
|
|
929
|
+
"require": "./cjs/services/chain-service/handler/bitcoin/strategy/types.js",
|
|
930
|
+
"default": "./services/chain-service/handler/bitcoin/strategy/types.js"
|
|
931
|
+
},
|
|
877
932
|
"./services/chain-service/handler/CardanoApi": {
|
|
878
933
|
"types": "./services/chain-service/handler/CardanoApi.d.ts",
|
|
879
934
|
"require": "./cjs/services/chain-service/handler/CardanoApi.js",
|
|
@@ -1186,11 +1241,26 @@
|
|
|
1186
1241
|
"require": "./cjs/services/fee-service/utils/tokenPayFee.js",
|
|
1187
1242
|
"default": "./services/fee-service/utils/tokenPayFee.js"
|
|
1188
1243
|
},
|
|
1244
|
+
"./services/hiro-service": {
|
|
1245
|
+
"types": "./services/hiro-service/index.d.ts",
|
|
1246
|
+
"require": "./cjs/services/hiro-service/index.js",
|
|
1247
|
+
"default": "./services/hiro-service/index.js"
|
|
1248
|
+
},
|
|
1249
|
+
"./services/hiro-service/utils": {
|
|
1250
|
+
"types": "./services/hiro-service/utils/index.d.ts",
|
|
1251
|
+
"require": "./cjs/services/hiro-service/utils/index.js",
|
|
1252
|
+
"default": "./services/hiro-service/utils/index.js"
|
|
1253
|
+
},
|
|
1189
1254
|
"./services/history-service": {
|
|
1190
1255
|
"types": "./services/history-service/index.d.ts",
|
|
1191
1256
|
"require": "./cjs/services/history-service/index.js",
|
|
1192
1257
|
"default": "./services/history-service/index.js"
|
|
1193
1258
|
},
|
|
1259
|
+
"./services/history-service/bitcoin-history": {
|
|
1260
|
+
"types": "./services/history-service/bitcoin-history.d.ts",
|
|
1261
|
+
"require": "./cjs/services/history-service/bitcoin-history.js",
|
|
1262
|
+
"default": "./services/history-service/bitcoin-history.js"
|
|
1263
|
+
},
|
|
1194
1264
|
"./services/history-service/constants": {
|
|
1195
1265
|
"types": "./services/history-service/constants/index.d.ts",
|
|
1196
1266
|
"require": "./cjs/services/history-service/constants/index.js",
|
|
@@ -1496,6 +1566,11 @@
|
|
|
1496
1566
|
"require": "./cjs/services/migration-service/scripts/MigrateNetworkSettings.js",
|
|
1497
1567
|
"default": "./services/migration-service/scripts/MigrateNetworkSettings.js"
|
|
1498
1568
|
},
|
|
1569
|
+
"./services/migration-service/scripts/MigrateNewUnifiedAccount": {
|
|
1570
|
+
"types": "./services/migration-service/scripts/MigrateNewUnifiedAccount.d.ts",
|
|
1571
|
+
"require": "./cjs/services/migration-service/scripts/MigrateNewUnifiedAccount.js",
|
|
1572
|
+
"default": "./services/migration-service/scripts/MigrateNewUnifiedAccount.js"
|
|
1573
|
+
},
|
|
1499
1574
|
"./services/migration-service/scripts/MigrateSettings": {
|
|
1500
1575
|
"types": "./services/migration-service/scripts/MigrateSettings.d.ts",
|
|
1501
1576
|
"require": "./cjs/services/migration-service/scripts/MigrateSettings.js",
|
|
@@ -1631,6 +1706,11 @@
|
|
|
1631
1706
|
"require": "./cjs/services/request-service/handler/AuthRequestHandler.js",
|
|
1632
1707
|
"default": "./services/request-service/handler/AuthRequestHandler.js"
|
|
1633
1708
|
},
|
|
1709
|
+
"./services/request-service/handler/BitcoinRequestHandler": {
|
|
1710
|
+
"types": "./services/request-service/handler/BitcoinRequestHandler.d.ts",
|
|
1711
|
+
"require": "./cjs/services/request-service/handler/BitcoinRequestHandler.js",
|
|
1712
|
+
"default": "./services/request-service/handler/BitcoinRequestHandler.js"
|
|
1713
|
+
},
|
|
1634
1714
|
"./services/request-service/handler/CardanoRequestHandler": {
|
|
1635
1715
|
"types": "./services/request-service/handler/CardanoRequestHandler.d.ts",
|
|
1636
1716
|
"require": "./cjs/services/request-service/handler/CardanoRequestHandler.js",
|
|
@@ -1681,6 +1761,11 @@
|
|
|
1681
1761
|
"require": "./cjs/services/request-service/types.js",
|
|
1682
1762
|
"default": "./services/request-service/types.js"
|
|
1683
1763
|
},
|
|
1764
|
+
"./services/rune-service": {
|
|
1765
|
+
"types": "./services/rune-service/index.d.ts",
|
|
1766
|
+
"require": "./cjs/services/rune-service/index.js",
|
|
1767
|
+
"default": "./services/rune-service/index.js"
|
|
1768
|
+
},
|
|
1684
1769
|
"./services/setting-service/constants": {
|
|
1685
1770
|
"types": "./services/setting-service/constants.d.ts",
|
|
1686
1771
|
"require": "./cjs/services/setting-service/constants.js",
|
|
@@ -2106,6 +2191,26 @@
|
|
|
2106
2191
|
"require": "./cjs/stores/TransactionHistoryV3.js",
|
|
2107
2192
|
"default": "./stores/TransactionHistoryV3.js"
|
|
2108
2193
|
},
|
|
2194
|
+
"./strategy/api-request-strategy": {
|
|
2195
|
+
"types": "./strategy/api-request-strategy/index.d.ts",
|
|
2196
|
+
"require": "./cjs/strategy/api-request-strategy/index.js",
|
|
2197
|
+
"default": "./strategy/api-request-strategy/index.js"
|
|
2198
|
+
},
|
|
2199
|
+
"./strategy/api-request-strategy/context/base": {
|
|
2200
|
+
"types": "./strategy/api-request-strategy/context/base.d.ts",
|
|
2201
|
+
"require": "./cjs/strategy/api-request-strategy/context/base.js",
|
|
2202
|
+
"default": "./strategy/api-request-strategy/context/base.js"
|
|
2203
|
+
},
|
|
2204
|
+
"./strategy/api-request-strategy/types": {
|
|
2205
|
+
"types": "./strategy/api-request-strategy/types.d.ts",
|
|
2206
|
+
"require": "./cjs/strategy/api-request-strategy/types.js",
|
|
2207
|
+
"default": "./strategy/api-request-strategy/types.js"
|
|
2208
|
+
},
|
|
2209
|
+
"./strategy/api-request-strategy/utils": {
|
|
2210
|
+
"types": "./strategy/api-request-strategy/utils/index.d.ts",
|
|
2211
|
+
"require": "./cjs/strategy/api-request-strategy/utils/index.js",
|
|
2212
|
+
"default": "./strategy/api-request-strategy/utils/index.js"
|
|
2213
|
+
},
|
|
2109
2214
|
"./types": {
|
|
2110
2215
|
"types": "./types/index.d.ts",
|
|
2111
2216
|
"require": "./cjs/types/index.js",
|
|
@@ -2211,6 +2316,11 @@
|
|
|
2211
2316
|
"require": "./cjs/types/balance/transfer.js",
|
|
2212
2317
|
"default": "./types/balance/transfer.js"
|
|
2213
2318
|
},
|
|
2319
|
+
"./types/bitcoin": {
|
|
2320
|
+
"types": "./types/bitcoin.d.ts",
|
|
2321
|
+
"require": "./cjs/types/bitcoin.js",
|
|
2322
|
+
"default": "./types/bitcoin.js"
|
|
2323
|
+
},
|
|
2214
2324
|
"./types/bridge": {
|
|
2215
2325
|
"types": "./types/bridge/index.d.ts",
|
|
2216
2326
|
"require": "./cjs/types/bridge/index.js",
|
|
@@ -2241,6 +2351,11 @@
|
|
|
2241
2351
|
"require": "./cjs/types/common/storage.js",
|
|
2242
2352
|
"default": "./types/common/storage.js"
|
|
2243
2353
|
},
|
|
2354
|
+
"./types/environment": {
|
|
2355
|
+
"types": "./types/environment.d.ts",
|
|
2356
|
+
"require": "./cjs/types/environment.js",
|
|
2357
|
+
"default": "./types/environment.js"
|
|
2358
|
+
},
|
|
2244
2359
|
"./types/error": {
|
|
2245
2360
|
"types": "./types/error.d.ts",
|
|
2246
2361
|
"require": "./cjs/types/error.js",
|
|
@@ -2256,6 +2371,11 @@
|
|
|
2256
2371
|
"require": "./cjs/types/fee/base.js",
|
|
2257
2372
|
"default": "./types/fee/base.js"
|
|
2258
2373
|
},
|
|
2374
|
+
"./types/fee/bitcoin": {
|
|
2375
|
+
"types": "./types/fee/bitcoin.d.ts",
|
|
2376
|
+
"require": "./cjs/types/fee/bitcoin.js",
|
|
2377
|
+
"default": "./types/fee/bitcoin.js"
|
|
2378
|
+
},
|
|
2259
2379
|
"./types/fee/cardano": {
|
|
2260
2380
|
"types": "./types/fee/cardano.d.ts",
|
|
2261
2381
|
"require": "./cjs/types/fee/cardano.js",
|
|
@@ -2506,6 +2626,26 @@
|
|
|
2506
2626
|
"require": "./cjs/utils/auth.js",
|
|
2507
2627
|
"default": "./utils/auth.js"
|
|
2508
2628
|
},
|
|
2629
|
+
"./utils/bitcoin": {
|
|
2630
|
+
"types": "./utils/bitcoin/index.d.ts",
|
|
2631
|
+
"require": "./cjs/utils/bitcoin/index.js",
|
|
2632
|
+
"default": "./utils/bitcoin/index.js"
|
|
2633
|
+
},
|
|
2634
|
+
"./utils/bitcoin/common": {
|
|
2635
|
+
"types": "./utils/bitcoin/common.d.ts",
|
|
2636
|
+
"require": "./cjs/utils/bitcoin/common.js",
|
|
2637
|
+
"default": "./utils/bitcoin/common.js"
|
|
2638
|
+
},
|
|
2639
|
+
"./utils/bitcoin/fee": {
|
|
2640
|
+
"types": "./utils/bitcoin/fee.d.ts",
|
|
2641
|
+
"require": "./cjs/utils/bitcoin/fee.js",
|
|
2642
|
+
"default": "./utils/bitcoin/fee.js"
|
|
2643
|
+
},
|
|
2644
|
+
"./utils/bitcoin/utxo-management": {
|
|
2645
|
+
"types": "./utils/bitcoin/utxo-management.d.ts",
|
|
2646
|
+
"require": "./cjs/utils/bitcoin/utxo-management.js",
|
|
2647
|
+
"default": "./utils/bitcoin/utxo-management.js"
|
|
2648
|
+
},
|
|
2509
2649
|
"./utils/cardano": {
|
|
2510
2650
|
"types": "./utils/cardano.d.ts",
|
|
2511
2651
|
"require": "./cjs/utils/cardano.js",
|
|
@@ -2709,13 +2849,13 @@
|
|
|
2709
2849
|
"@reduxjs/toolkit": "^1.9.1",
|
|
2710
2850
|
"@sora-substrate/type-definitions": "^1.17.7",
|
|
2711
2851
|
"@substrate/connect": "^0.8.9",
|
|
2712
|
-
"@subwallet/chain-list": "0.2.
|
|
2713
|
-
"@subwallet/extension-base": "^1.3.
|
|
2714
|
-
"@subwallet/extension-chains": "^1.3.
|
|
2715
|
-
"@subwallet/extension-dapp": "^1.3.
|
|
2716
|
-
"@subwallet/extension-inject": "^1.3.
|
|
2852
|
+
"@subwallet/chain-list": "0.2.107",
|
|
2853
|
+
"@subwallet/extension-base": "^1.3.42-0",
|
|
2854
|
+
"@subwallet/extension-chains": "^1.3.42-0",
|
|
2855
|
+
"@subwallet/extension-dapp": "^1.3.42-0",
|
|
2856
|
+
"@subwallet/extension-inject": "^1.3.42-0",
|
|
2717
2857
|
"@subwallet/keyring": "^0.1.12",
|
|
2718
|
-
"@subwallet/subwallet-api-sdk": "^1.3.
|
|
2858
|
+
"@subwallet/subwallet-api-sdk": "^1.3.42-0",
|
|
2719
2859
|
"@subwallet/ui-keyring": "^0.1.12",
|
|
2720
2860
|
"@ton/core": "^0.56.3",
|
|
2721
2861
|
"@ton/crypto": "^3.2.0",
|
|
@@ -2727,11 +2867,12 @@
|
|
|
2727
2867
|
"avail-js-sdk": "^0.2.12",
|
|
2728
2868
|
"axios": "^1.6.2",
|
|
2729
2869
|
"bignumber.js": "^9.1.1",
|
|
2870
|
+
"bitcoinjs-lib": "6.1.5",
|
|
2730
2871
|
"bn.js": "^5.2.1",
|
|
2731
2872
|
"bowser": "^2.11.0",
|
|
2732
2873
|
"browser-passworder": "^2.0.3",
|
|
2733
2874
|
"buffer": "^6.0.3",
|
|
2734
|
-
"cross-fetch": "^
|
|
2875
|
+
"cross-fetch": "^4.1.0",
|
|
2735
2876
|
"dexie": "^3.2.2",
|
|
2736
2877
|
"dexie-export-import": "^4.0.7",
|
|
2737
2878
|
"eth-simple-keyring": "^4.2.0",
|
package/packageInfo.js
CHANGED
|
@@ -7,5 +7,5 @@ export const packageInfo = {
|
|
|
7
7
|
name: '@subwallet/extension-base',
|
|
8
8
|
path: (import.meta && import.meta.url) ? new URL(import.meta.url).pathname.substring(0, new URL(import.meta.url).pathname.lastIndexOf('/') + 1) : 'auto',
|
|
9
9
|
type: 'esm',
|
|
10
|
-
version: '1.3.
|
|
10
|
+
version: '1.3.42-0'
|
|
11
11
|
};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
// Copyright 2019-2022 @subwallet/extension-base
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import { _AssetType } from '@subwallet/chain-list/types';
|
|
5
|
+
import { APIItemState } from '@subwallet/extension-base/background/KoniTypes';
|
|
6
|
+
import { BITCOIN_REFRESH_BALANCE_INTERVAL } from '@subwallet/extension-base/constants';
|
|
7
|
+
import { filterAssetsByChainAndType } from '@subwallet/extension-base/utils';
|
|
8
|
+
function getDefaultBalanceResult() {
|
|
9
|
+
return {
|
|
10
|
+
balance: '0',
|
|
11
|
+
bitcoinBalanceMetadata: {
|
|
12
|
+
inscriptionCount: 0,
|
|
13
|
+
runeBalance: '0',
|
|
14
|
+
inscriptionBalance: '0'
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
async function getBitcoinBalance(bitcoinApi, addresses) {
|
|
19
|
+
return await Promise.all(addresses.map(async address => {
|
|
20
|
+
try {
|
|
21
|
+
const [addressSummaryInfo] = await Promise.all([bitcoinApi.api.getAddressSummaryInfo(address)]);
|
|
22
|
+
if (Number(addressSummaryInfo.balance) < 0) {
|
|
23
|
+
return getDefaultBalanceResult();
|
|
24
|
+
}
|
|
25
|
+
const bitcoinBalanceMetadata = {
|
|
26
|
+
inscriptionCount: addressSummaryInfo.total_inscription,
|
|
27
|
+
runeBalance: addressSummaryInfo.balance_rune,
|
|
28
|
+
inscriptionBalance: addressSummaryInfo.balance_inscription
|
|
29
|
+
};
|
|
30
|
+
return {
|
|
31
|
+
balance: addressSummaryInfo.balance.toString(),
|
|
32
|
+
bitcoinBalanceMetadata: bitcoinBalanceMetadata
|
|
33
|
+
};
|
|
34
|
+
} catch (error) {
|
|
35
|
+
console.log('Error while fetching Bitcoin balances', error);
|
|
36
|
+
return getDefaultBalanceResult();
|
|
37
|
+
}
|
|
38
|
+
}));
|
|
39
|
+
}
|
|
40
|
+
export function subscribeBitcoinBalance(params) {
|
|
41
|
+
var _Object$values$;
|
|
42
|
+
const {
|
|
43
|
+
addresses,
|
|
44
|
+
assetMap,
|
|
45
|
+
bitcoinApi,
|
|
46
|
+
callback,
|
|
47
|
+
chainInfo
|
|
48
|
+
} = params;
|
|
49
|
+
const chain = chainInfo.slug;
|
|
50
|
+
const nativeTokenInfo = filterAssetsByChainAndType(assetMap, chain, [_AssetType.NATIVE]);
|
|
51
|
+
const nativeTokenSlug = ((_Object$values$ = Object.values(nativeTokenInfo)[0]) === null || _Object$values$ === void 0 ? void 0 : _Object$values$.slug) || '';
|
|
52
|
+
const getBalance = () => {
|
|
53
|
+
getBitcoinBalance(bitcoinApi, addresses).then(balances => {
|
|
54
|
+
return balances.map(({
|
|
55
|
+
balance,
|
|
56
|
+
bitcoinBalanceMetadata
|
|
57
|
+
}, index) => {
|
|
58
|
+
return {
|
|
59
|
+
address: addresses[index],
|
|
60
|
+
tokenSlug: nativeTokenSlug,
|
|
61
|
+
state: APIItemState.READY,
|
|
62
|
+
free: balance,
|
|
63
|
+
locked: (parseInt(bitcoinBalanceMetadata.runeBalance.toString()) + parseInt(bitcoinBalanceMetadata.inscriptionBalance.toString())).toString(),
|
|
64
|
+
metadata: bitcoinBalanceMetadata
|
|
65
|
+
};
|
|
66
|
+
});
|
|
67
|
+
}).catch(e => {
|
|
68
|
+
console.error('Error on get Bitcoin balance with token bitcoin', e);
|
|
69
|
+
return addresses.map(address => {
|
|
70
|
+
return {
|
|
71
|
+
address: address,
|
|
72
|
+
tokenSlug: nativeTokenSlug,
|
|
73
|
+
state: APIItemState.READY,
|
|
74
|
+
free: '0',
|
|
75
|
+
locked: '0'
|
|
76
|
+
};
|
|
77
|
+
});
|
|
78
|
+
}).then(items => {
|
|
79
|
+
callback(items);
|
|
80
|
+
}).catch(console.error);
|
|
81
|
+
};
|
|
82
|
+
const interval = setInterval(getBalance, BITCOIN_REFRESH_BALANCE_INTERVAL);
|
|
83
|
+
getBalance();
|
|
84
|
+
return () => {
|
|
85
|
+
clearInterval(interval);
|
|
86
|
+
};
|
|
87
|
+
}
|
|
@@ -5,6 +5,7 @@ import { _AssetType } from '@subwallet/chain-list/types';
|
|
|
5
5
|
import { APIItemState } from '@subwallet/extension-base/background/KoniTypes';
|
|
6
6
|
import { ASTAR_REFRESH_BALANCE_INTERVAL, SUB_TOKEN_REFRESH_BALANCE_INTERVAL } from '@subwallet/extension-base/constants';
|
|
7
7
|
import { getERC20Contract } from '@subwallet/extension-base/koni/api/contract-handler/evm/web3';
|
|
8
|
+
import { _BALANCE_CHAIN_GROUP } from '@subwallet/extension-base/services/chain-service/constants';
|
|
8
9
|
import { _getContractAddressOfToken } from '@subwallet/extension-base/services/chain-service/utils';
|
|
9
10
|
import { filterAssetsByChainAndType } from '@subwallet/extension-base/utils';
|
|
10
11
|
import { BN } from '@polkadot/util';
|
|
@@ -16,7 +17,11 @@ export function subscribeERC20Interval({
|
|
|
16
17
|
evmApi
|
|
17
18
|
}) {
|
|
18
19
|
const chain = chainInfo.slug;
|
|
19
|
-
|
|
20
|
+
let tokenList = filterAssetsByChainAndType(assetMap, chain, [_AssetType.ERC20]);
|
|
21
|
+
if (_BALANCE_CHAIN_GROUP.moonbeam.includes(chain)) {
|
|
22
|
+
const moonbeamLocal = filterAssetsByChainAndType(assetMap, chain, [_AssetType.LOCAL]);
|
|
23
|
+
tokenList = Object.assign({}, tokenList, moonbeamLocal);
|
|
24
|
+
}
|
|
20
25
|
const erc20ContractMap = {};
|
|
21
26
|
Object.entries(tokenList).forEach(([slug, tokenInfo]) => {
|
|
22
27
|
erc20ContractMap[slug] = getERC20Contract(_getContractAddressOfToken(tokenInfo), evmApi);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { _ChainAsset, _ChainInfo } from '@subwallet/chain-list/types';
|
|
2
2
|
import { ExtrinsicType } from '@subwallet/extension-base/background/KoniTypes';
|
|
3
|
-
import { _CardanoApi, _EvmApi, _SubstrateApi, _TonApi } from '@subwallet/extension-base/services/chain-service/types';
|
|
3
|
+
import { _BitcoinApi, _CardanoApi, _EvmApi, _SubstrateApi, _TonApi } from '@subwallet/extension-base/services/chain-service/types';
|
|
4
4
|
import { AccountJson, BalanceItem } from '@subwallet/extension-base/types';
|
|
5
5
|
/**
|
|
6
6
|
* @function getAccountJsonByAddress
|
|
@@ -12,4 +12,4 @@ import { AccountJson, BalanceItem } from '@subwallet/extension-base/types';
|
|
|
12
12
|
* @returns {AccountJson|null} - Account info or null if not found
|
|
13
13
|
*/
|
|
14
14
|
export declare const getAccountJsonByAddress: (address: string) => AccountJson | null;
|
|
15
|
-
export declare function subscribeBalance(addresses: string[], chains: string[], tokens: string[], _chainAssetMap: Record<string, _ChainAsset>, _chainInfoMap: Record<string, _ChainInfo>, substrateApiMap: Record<string, _SubstrateApi>, evmApiMap: Record<string, _EvmApi>, tonApiMap: Record<string, _TonApi>, cardanoApiMap: Record<string, _CardanoApi>, callback: (rs: BalanceItem[]) => void, extrinsicType?: ExtrinsicType): () => void;
|
|
15
|
+
export declare function subscribeBalance(addresses: string[], chains: string[], tokens: string[], _chainAssetMap: Record<string, _ChainAsset>, _chainInfoMap: Record<string, _ChainInfo>, substrateApiMap: Record<string, _SubstrateApi>, evmApiMap: Record<string, _EvmApi>, tonApiMap: Record<string, _TonApi>, cardanoApiMap: Record<string, _CardanoApi>, bitcoinApiMap: Record<string, _BitcoinApi>, callback: (rs: BalanceItem[]) => void, extrinsicType?: ExtrinsicType): () => void;
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
|
|
4
4
|
import { _AssetType } from '@subwallet/chain-list/types';
|
|
5
5
|
import { APIItemState } from '@subwallet/extension-base/background/KoniTypes';
|
|
6
|
+
import { subscribeBitcoinBalance } from '@subwallet/extension-base/services/balance-service/helpers/subscribe/bitcoin';
|
|
6
7
|
import { subscribeCardanoBalance } from '@subwallet/extension-base/services/balance-service/helpers/subscribe/cardano';
|
|
7
|
-
import { _getSubstrateGenesisHash, _isChainBitcoinCompatible, _isChainCardanoCompatible, _isChainEvmCompatible, _isChainTonCompatible, _isPureCardanoChain, _isPureEvmChain, _isPureTonChain } from '@subwallet/extension-base/services/chain-service/utils';
|
|
8
|
+
import { _getSubstrateGenesisHash, _isChainBitcoinCompatible, _isChainCardanoCompatible, _isChainEvmCompatible, _isChainTonCompatible, _isPureBitcoinChain, _isPureCardanoChain, _isPureEvmChain, _isPureTonChain } from '@subwallet/extension-base/services/chain-service/utils';
|
|
8
9
|
import { filterAssetsByChainAndType, getAddressesByChainTypeMap, pairToAccount } from '@subwallet/extension-base/utils';
|
|
9
10
|
import keyring from '@subwallet/ui-keyring';
|
|
10
11
|
import { subscribeTonBalance } from "./ton/ton.js";
|
|
@@ -37,20 +38,21 @@ export const getAccountJsonByAddress = address => {
|
|
|
37
38
|
/** Filter addresses to subscribe by chain info */
|
|
38
39
|
const filterAddress = (addresses, chainInfo) => {
|
|
39
40
|
const {
|
|
41
|
+
_bitcoin,
|
|
40
42
|
bitcoin,
|
|
41
43
|
cardano,
|
|
42
44
|
evm,
|
|
43
45
|
substrate,
|
|
44
46
|
ton
|
|
45
|
-
} = getAddressesByChainTypeMap(addresses);
|
|
47
|
+
} = getAddressesByChainTypeMap(addresses, chainInfo);
|
|
46
48
|
if (_isChainEvmCompatible(chainInfo)) {
|
|
47
|
-
return [evm, [
|
|
49
|
+
return [evm, [bitcoin, substrate, ton, cardano, _bitcoin].flat()];
|
|
48
50
|
} else if (_isChainBitcoinCompatible(chainInfo)) {
|
|
49
|
-
return [bitcoin, [
|
|
51
|
+
return [bitcoin, [evm, substrate, ton, cardano, _bitcoin].flat()];
|
|
50
52
|
} else if (_isChainTonCompatible(chainInfo)) {
|
|
51
|
-
return [ton, [
|
|
53
|
+
return [ton, [bitcoin, evm, substrate, cardano, _bitcoin].flat()];
|
|
52
54
|
} else if (_isChainCardanoCompatible(chainInfo)) {
|
|
53
|
-
return [cardano, [
|
|
55
|
+
return [cardano, [bitcoin, evm, substrate, ton, _bitcoin].flat()];
|
|
54
56
|
} else {
|
|
55
57
|
const fetchList = [];
|
|
56
58
|
const unfetchList = [];
|
|
@@ -76,7 +78,7 @@ const filterAddress = (addresses, chainInfo) => {
|
|
|
76
78
|
fetchList.push(address);
|
|
77
79
|
}
|
|
78
80
|
});
|
|
79
|
-
return [fetchList, [
|
|
81
|
+
return [fetchList, [unfetchList, bitcoin, evm, ton, cardano, _bitcoin].flat()];
|
|
80
82
|
}
|
|
81
83
|
};
|
|
82
84
|
const handleUnsupportedOrPendingAddresses = (addresses, chainSlug, chainAssetMap, state, callback) => {
|
|
@@ -96,7 +98,7 @@ const handleUnsupportedOrPendingAddresses = (addresses, chainSlug, chainAssetMap
|
|
|
96
98
|
};
|
|
97
99
|
|
|
98
100
|
// main subscription, use for multiple chains, multiple addresses and multiple tokens
|
|
99
|
-
export function subscribeBalance(addresses, chains, tokens, _chainAssetMap, _chainInfoMap, substrateApiMap, evmApiMap, tonApiMap, cardanoApiMap, callback, extrinsicType) {
|
|
101
|
+
export function subscribeBalance(addresses, chains, tokens, _chainAssetMap, _chainInfoMap, substrateApiMap, evmApiMap, tonApiMap, cardanoApiMap, bitcoinApiMap, callback, extrinsicType) {
|
|
100
102
|
// Filter chain and token
|
|
101
103
|
const chainAssetMap = Object.fromEntries(Object.entries(_chainAssetMap).filter(([token]) => tokens.includes(token)));
|
|
102
104
|
const chainInfoMap = Object.fromEntries(Object.entries(_chainInfoMap).filter(([chain]) => chains.includes(chain)));
|
|
@@ -138,6 +140,16 @@ export function subscribeBalance(addresses, chains, tokens, _chainAssetMap, _cha
|
|
|
138
140
|
cardanoApi
|
|
139
141
|
});
|
|
140
142
|
}
|
|
143
|
+
const bitcoinApi = bitcoinApiMap[chainSlug];
|
|
144
|
+
if (_isPureBitcoinChain(chainInfo)) {
|
|
145
|
+
return subscribeBitcoinBalance({
|
|
146
|
+
addresses: useAddresses,
|
|
147
|
+
assetMap: chainAssetMap,
|
|
148
|
+
bitcoinApi,
|
|
149
|
+
callback,
|
|
150
|
+
chainInfo
|
|
151
|
+
});
|
|
152
|
+
}
|
|
141
153
|
|
|
142
154
|
// If the chain is not ready, return pending state
|
|
143
155
|
if (!substrateApiMap[chainSlug].isApiReady) {
|