@subwallet/extension-base 1.3.41-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.
Files changed (196) hide show
  1. package/background/KoniTypes.d.ts +121 -4
  2. package/background/KoniTypes.js +18 -0
  3. package/background/errors/BitcoinProviderError.d.ts +6 -0
  4. package/background/errors/BitcoinProviderError.js +47 -0
  5. package/cjs/background/KoniTypes.js +20 -1
  6. package/cjs/background/errors/BitcoinProviderError.js +54 -0
  7. package/cjs/constants/bitcoin.js +22 -0
  8. package/cjs/constants/index.js +16 -1
  9. package/cjs/core/logic-validation/recipientAddress.js +9 -0
  10. package/cjs/core/logic-validation/transfer.js +25 -5
  11. package/cjs/core/types.js +1 -0
  12. package/cjs/core/utils.js +15 -1
  13. package/cjs/koni/background/handlers/Extension.js +59 -3
  14. package/cjs/koni/background/handlers/State.js +52 -11
  15. package/cjs/packageInfo.js +1 -1
  16. package/cjs/services/balance-service/helpers/subscribe/bitcoin.js +94 -0
  17. package/cjs/services/balance-service/helpers/subscribe/index.js +19 -7
  18. package/cjs/services/balance-service/index.js +32 -4
  19. package/cjs/services/balance-service/transfer/bitcoin-transfer.js +119 -0
  20. package/cjs/services/balance-service/transfer/token.js +2 -0
  21. package/cjs/services/base/types.js +2 -0
  22. package/cjs/services/chain-service/constants.js +14 -3
  23. package/cjs/services/chain-service/handler/bitcoin/BitcoinApi.js +105 -0
  24. package/cjs/services/chain-service/handler/bitcoin/BitcoinChainHandler.js +78 -0
  25. package/cjs/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/blockstream-testnet-strategy.js +371 -0
  26. package/cjs/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/index.js +19 -0
  27. package/cjs/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/mempool-testnet-strategy.js +368 -0
  28. package/cjs/services/chain-service/handler/bitcoin/strategy/SubWalletMainnet/index.js +302 -0
  29. package/cjs/services/chain-service/handler/bitcoin/strategy/types.js +1 -0
  30. package/cjs/services/chain-service/index.js +27 -3
  31. package/cjs/services/chain-service/utils/index.js +57 -4
  32. package/cjs/services/chain-service/utils/patch.js +1 -1
  33. package/cjs/services/event-service/index.js +4 -0
  34. package/cjs/services/fee-service/service.js +8 -3
  35. package/cjs/services/hiro-service/index.js +96 -0
  36. package/cjs/services/hiro-service/utils/index.js +85 -0
  37. package/cjs/services/history-service/bitcoin-history.js +58 -0
  38. package/cjs/services/history-service/helpers/recoverHistoryStatus.js +96 -4
  39. package/cjs/services/history-service/index.js +41 -3
  40. package/cjs/services/keyring-service/context/handlers/Derive.js +1 -1
  41. package/cjs/services/keyring-service/context/handlers/Migration.js +2 -2
  42. package/cjs/services/keyring-service/context/handlers/Mnemonic.js +4 -3
  43. package/cjs/services/migration-service/scripts/MigrateNewUnifiedAccount.js +29 -0
  44. package/cjs/services/migration-service/scripts/index.js +3 -1
  45. package/cjs/services/request-service/handler/BitcoinRequestHandler.js +440 -0
  46. package/cjs/services/request-service/index.js +29 -3
  47. package/cjs/services/rune-service/index.js +105 -0
  48. package/cjs/services/transaction-service/helpers/index.js +7 -1
  49. package/cjs/services/transaction-service/index.js +136 -15
  50. package/cjs/services/transaction-service/utils.js +6 -3
  51. package/cjs/strategy/api-request-strategy/context/base.js +31 -0
  52. package/cjs/strategy/api-request-strategy/index.js +90 -0
  53. package/cjs/strategy/api-request-strategy/types.js +1 -0
  54. package/cjs/strategy/api-request-strategy/utils/index.js +33 -0
  55. package/cjs/types/account/info/keyring.js +1 -1
  56. package/cjs/types/bitcoin.js +24 -0
  57. package/cjs/types/fee/bitcoin.js +1 -0
  58. package/cjs/types/fee/index.js +11 -0
  59. package/cjs/types/index.js +11 -0
  60. package/cjs/utils/account/analyze.js +3 -3
  61. package/cjs/utils/account/common.js +16 -6
  62. package/cjs/utils/account/derive/info/solo.js +68 -19
  63. package/cjs/utils/account/derive/info/unified.js +2 -0
  64. package/cjs/utils/account/derive/validate.js +70 -2
  65. package/cjs/utils/account/transform.js +11 -5
  66. package/cjs/utils/bitcoin/common.js +98 -0
  67. package/cjs/utils/bitcoin/fee.js +21 -0
  68. package/cjs/utils/bitcoin/index.js +38 -0
  69. package/cjs/utils/bitcoin/utxo-management.js +281 -0
  70. package/cjs/utils/fee/transfer.js +48 -0
  71. package/cjs/utils/index.js +15 -1
  72. package/constants/bitcoin.d.ts +3 -0
  73. package/constants/bitcoin.js +13 -0
  74. package/constants/index.d.ts +2 -0
  75. package/constants/index.js +3 -1
  76. package/core/logic-validation/recipientAddress.js +10 -1
  77. package/core/logic-validation/transfer.d.ts +2 -2
  78. package/core/logic-validation/transfer.js +27 -7
  79. package/core/types.d.ts +1 -0
  80. package/core/types.js +1 -0
  81. package/core/utils.d.ts +1 -0
  82. package/core/utils.js +15 -2
  83. package/koni/background/handlers/Extension.d.ts +2 -0
  84. package/koni/background/handlers/Extension.js +58 -4
  85. package/koni/background/handlers/State.d.ts +7 -3
  86. package/koni/background/handlers/State.js +52 -12
  87. package/package.json +144 -8
  88. package/packageInfo.js +1 -1
  89. package/services/balance-service/helpers/subscribe/bitcoin.d.ts +2 -0
  90. package/services/balance-service/helpers/subscribe/bitcoin.js +87 -0
  91. package/services/balance-service/helpers/subscribe/index.d.ts +2 -2
  92. package/services/balance-service/helpers/subscribe/index.js +20 -8
  93. package/services/balance-service/index.d.ts +2 -0
  94. package/services/balance-service/index.js +32 -4
  95. package/services/balance-service/transfer/bitcoin-transfer.d.ts +14 -0
  96. package/services/balance-service/transfer/bitcoin-transfer.js +112 -0
  97. package/services/balance-service/transfer/token.js +2 -0
  98. package/services/base/types.d.ts +2 -0
  99. package/services/base/types.js +2 -0
  100. package/services/chain-service/constants.d.ts +6 -0
  101. package/services/chain-service/constants.js +8 -2
  102. package/services/chain-service/handler/bitcoin/BitcoinApi.d.ts +31 -0
  103. package/services/chain-service/handler/bitcoin/BitcoinApi.js +98 -0
  104. package/services/chain-service/handler/bitcoin/BitcoinChainHandler.d.ts +16 -0
  105. package/services/chain-service/handler/bitcoin/BitcoinChainHandler.js +70 -0
  106. package/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/blockstream-testnet-strategy.d.ts +28 -0
  107. package/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/blockstream-testnet-strategy.js +362 -0
  108. package/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/index.d.ts +2 -0
  109. package/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/index.js +5 -0
  110. package/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/mempool-testnet-strategy.d.ts +28 -0
  111. package/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/mempool-testnet-strategy.js +359 -0
  112. package/services/chain-service/handler/bitcoin/strategy/SubWalletMainnet/index.d.ts +28 -0
  113. package/services/chain-service/handler/bitcoin/strategy/SubWalletMainnet/index.js +293 -0
  114. package/services/chain-service/handler/bitcoin/strategy/types.d.ts +291 -0
  115. package/services/chain-service/handler/bitcoin/strategy/types.js +1 -0
  116. package/services/chain-service/index.d.ts +3 -0
  117. package/services/chain-service/index.js +31 -5
  118. package/services/chain-service/types.d.ts +20 -0
  119. package/services/chain-service/utils/index.d.ts +4 -0
  120. package/services/chain-service/utils/index.js +50 -4
  121. package/services/chain-service/utils/patch.js +1 -1
  122. package/services/event-service/index.d.ts +3 -0
  123. package/services/event-service/index.js +4 -0
  124. package/services/event-service/types.d.ts +3 -0
  125. package/services/fee-service/service.js +8 -3
  126. package/services/hiro-service/index.d.ts +17 -0
  127. package/services/hiro-service/index.js +88 -0
  128. package/services/hiro-service/utils/index.d.ts +6 -0
  129. package/services/hiro-service/utils/index.js +72 -0
  130. package/services/history-service/bitcoin-history.d.ts +4 -0
  131. package/services/history-service/bitcoin-history.js +52 -0
  132. package/services/history-service/helpers/recoverHistoryStatus.d.ts +3 -1
  133. package/services/history-service/helpers/recoverHistoryStatus.js +96 -4
  134. package/services/history-service/index.d.ts +1 -0
  135. package/services/history-service/index.js +42 -4
  136. package/services/keyring-service/context/handlers/Derive.js +2 -2
  137. package/services/keyring-service/context/handlers/Migration.js +2 -2
  138. package/services/keyring-service/context/handlers/Mnemonic.js +4 -3
  139. package/services/migration-service/scripts/MigrateNewUnifiedAccount.d.ts +4 -0
  140. package/services/migration-service/scripts/MigrateNewUnifiedAccount.js +21 -0
  141. package/services/migration-service/scripts/index.js +3 -1
  142. package/services/request-service/handler/BitcoinRequestHandler.d.ts +23 -0
  143. package/services/request-service/handler/BitcoinRequestHandler.js +427 -0
  144. package/services/request-service/index.d.ts +9 -2
  145. package/services/request-service/index.js +25 -3
  146. package/services/rune-service/index.d.ts +17 -0
  147. package/services/rune-service/index.js +97 -0
  148. package/services/transaction-service/helpers/index.d.ts +3 -1
  149. package/services/transaction-service/helpers/index.js +5 -0
  150. package/services/transaction-service/index.d.ts +3 -5
  151. package/services/transaction-service/index.js +135 -16
  152. package/services/transaction-service/types.d.ts +12 -2
  153. package/services/transaction-service/utils.js +7 -4
  154. package/strategy/api-request-strategy/context/base.d.ts +15 -0
  155. package/strategy/api-request-strategy/context/base.js +24 -0
  156. package/strategy/api-request-strategy/index.d.ts +15 -0
  157. package/strategy/api-request-strategy/index.js +83 -0
  158. package/strategy/api-request-strategy/types.d.ts +22 -0
  159. package/strategy/api-request-strategy/types.js +1 -0
  160. package/strategy/api-request-strategy/utils/index.d.ts +2 -0
  161. package/strategy/api-request-strategy/utils/index.js +23 -0
  162. package/types/account/info/keyring.d.ts +1 -1
  163. package/types/account/info/keyring.js +1 -1
  164. package/types/balance/index.d.ts +4 -1
  165. package/types/balance/transfer.d.ts +17 -0
  166. package/types/bitcoin.d.ts +93 -0
  167. package/types/bitcoin.js +17 -0
  168. package/types/fee/base.d.ts +4 -1
  169. package/types/fee/bitcoin.d.ts +18 -0
  170. package/types/fee/bitcoin.js +1 -0
  171. package/types/fee/index.d.ts +1 -0
  172. package/types/fee/index.js +2 -1
  173. package/types/fee/subscription.d.ts +4 -3
  174. package/types/index.d.ts +1 -0
  175. package/types/index.js +1 -0
  176. package/utils/account/analyze.js +4 -4
  177. package/utils/account/common.d.ts +7 -8
  178. package/utils/account/common.js +16 -6
  179. package/utils/account/derive/info/solo.js +70 -21
  180. package/utils/account/derive/info/unified.js +2 -0
  181. package/utils/account/derive/validate.d.ts +1 -0
  182. package/utils/account/derive/validate.js +68 -1
  183. package/utils/account/transform.d.ts +1 -1
  184. package/utils/account/transform.js +11 -5
  185. package/utils/bitcoin/common.d.ts +22 -0
  186. package/utils/bitcoin/common.js +88 -0
  187. package/utils/bitcoin/fee.d.ts +2 -0
  188. package/utils/bitcoin/fee.js +14 -0
  189. package/utils/bitcoin/index.d.ts +3 -0
  190. package/utils/bitcoin/index.js +6 -0
  191. package/utils/bitcoin/utxo-management.d.ts +33 -0
  192. package/utils/bitcoin/utxo-management.js +266 -0
  193. package/utils/fee/transfer.d.ts +3 -1
  194. package/utils/fee/transfer.js +47 -1
  195. package/utils/index.d.ts +1 -0
  196. package/utils/index.js +6 -3
package/package.json CHANGED
@@ -17,7 +17,7 @@
17
17
  "./cjs/detectPackage.js"
18
18
  ],
19
19
  "type": "module",
20
- "version": "1.3.41-0",
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",
@@ -2261,6 +2371,11 @@
2261
2371
  "require": "./cjs/types/fee/base.js",
2262
2372
  "default": "./types/fee/base.js"
2263
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
+ },
2264
2379
  "./types/fee/cardano": {
2265
2380
  "types": "./types/fee/cardano.d.ts",
2266
2381
  "require": "./cjs/types/fee/cardano.js",
@@ -2511,6 +2626,26 @@
2511
2626
  "require": "./cjs/utils/auth.js",
2512
2627
  "default": "./utils/auth.js"
2513
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
+ },
2514
2649
  "./utils/cardano": {
2515
2650
  "types": "./utils/cardano.d.ts",
2516
2651
  "require": "./cjs/utils/cardano.js",
@@ -2714,13 +2849,13 @@
2714
2849
  "@reduxjs/toolkit": "^1.9.1",
2715
2850
  "@sora-substrate/type-definitions": "^1.17.7",
2716
2851
  "@substrate/connect": "^0.8.9",
2717
- "@subwallet/chain-list": "0.2.105",
2718
- "@subwallet/extension-base": "^1.3.41-0",
2719
- "@subwallet/extension-chains": "^1.3.41-0",
2720
- "@subwallet/extension-dapp": "^1.3.41-0",
2721
- "@subwallet/extension-inject": "^1.3.41-0",
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",
2722
2857
  "@subwallet/keyring": "^0.1.12",
2723
- "@subwallet/subwallet-api-sdk": "^1.3.41-0",
2858
+ "@subwallet/subwallet-api-sdk": "^1.3.42-0",
2724
2859
  "@subwallet/ui-keyring": "^0.1.12",
2725
2860
  "@ton/core": "^0.56.3",
2726
2861
  "@ton/crypto": "^3.2.0",
@@ -2732,11 +2867,12 @@
2732
2867
  "avail-js-sdk": "^0.2.12",
2733
2868
  "axios": "^1.6.2",
2734
2869
  "bignumber.js": "^9.1.1",
2870
+ "bitcoinjs-lib": "6.1.5",
2735
2871
  "bn.js": "^5.2.1",
2736
2872
  "bowser": "^2.11.0",
2737
2873
  "browser-passworder": "^2.0.3",
2738
2874
  "buffer": "^6.0.3",
2739
- "cross-fetch": "^3.1.5",
2875
+ "cross-fetch": "^4.1.0",
2740
2876
  "dexie": "^3.2.2",
2741
2877
  "dexie-export-import": "^4.0.7",
2742
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.41-0'
10
+ version: '1.3.42-0'
11
11
  };
@@ -0,0 +1,2 @@
1
+ import { SusbcribeBitcoinPalletBalance } from '@subwallet/extension-base/types';
2
+ export declare function subscribeBitcoinBalance(params: SusbcribeBitcoinPalletBalance): () => void;
@@ -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
+ }
@@ -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, [...bitcoin, ...substrate, ...ton, ...cardano]];
49
+ return [evm, [bitcoin, substrate, ton, cardano, _bitcoin].flat()];
48
50
  } else if (_isChainBitcoinCompatible(chainInfo)) {
49
- return [bitcoin, [...evm, ...substrate, ...ton, ...cardano]];
51
+ return [bitcoin, [evm, substrate, ton, cardano, _bitcoin].flat()];
50
52
  } else if (_isChainTonCompatible(chainInfo)) {
51
- return [ton, [...bitcoin, ...evm, ...substrate, ...cardano]];
53
+ return [ton, [bitcoin, evm, substrate, cardano, _bitcoin].flat()];
52
54
  } else if (_isChainCardanoCompatible(chainInfo)) {
53
- return [cardano, [...bitcoin, ...evm, ...substrate, ...ton]];
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, [...unfetchList, ...bitcoin, ...evm, ...ton, ...cardano]];
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) {
@@ -18,6 +18,7 @@ export declare class BalanceService implements StoppableServiceInterface {
18
18
  stopPromiseHandler: PromiseHandler<void>;
19
19
  status: ServiceStatus;
20
20
  private isReload;
21
+ get isStarted(): boolean;
21
22
  private readonly detectAccountBalanceStore;
22
23
  private readonly balanceDetectSubject;
23
24
  private readonly intervalTime;
@@ -87,6 +88,7 @@ export declare class BalanceService implements StoppableServiceInterface {
87
88
  private _unsubscribeBalance;
88
89
  /** Subscribe balance subscription */
89
90
  runSubscribeBalances(): Promise<void>;
91
+ refreshBalanceForAddress(address: string, chain: string, asset: string, extrinsicType?: ExtrinsicType): Promise<void>;
90
92
  /** Unsubscribe balance subscription */
91
93
  runUnsubscribeBalances(): void;
92
94
  /** Reload balance subscription */
@@ -32,6 +32,9 @@ export class BalanceService {
32
32
  stopPromiseHandler = createPromiseHandler();
33
33
  status = ServiceStatus.NOT_INITIALIZED;
34
34
  isReload = false;
35
+ get isStarted() {
36
+ return this.status === ServiceStatus.STARTED;
37
+ }
35
38
  detectAccountBalanceStore = new DetectAccountBalanceStore();
36
39
  balanceDetectSubject = new BehaviorSubject({});
37
40
  intervalTime = 3 * 60 * 1000;
@@ -57,7 +60,7 @@ export class BalanceService {
57
60
  this.status = ServiceStatus.INITIALIZED;
58
61
 
59
62
  // Start service
60
- await this.start();
63
+ // await this.start(); // Commented out to avoid auto start when app not fully initialized
61
64
 
62
65
  // Handle events
63
66
  this.state.eventService.onLazy(this.handleEvents.bind(this));
@@ -143,7 +146,7 @@ export class BalanceService {
143
146
  }
144
147
  if (needReload) {
145
148
  addLazy('reloadBalanceByEvents', () => {
146
- if (!this.isReload) {
149
+ if (!this.isReload && this.isStarted) {
147
150
  this.runSubscribeBalances().catch(console.error);
148
151
  }
149
152
  }, lazyTime, undefined, true);
@@ -194,8 +197,9 @@ export class BalanceService {
194
197
  const substrateApiMap = this.state.chainService.getSubstrateApiMap();
195
198
  const tonApiMap = this.state.chainService.getTonApiMap();
196
199
  const cardanoApiMap = this.state.chainService.getCardanoApiMap();
200
+ const bitcoinApiMap = this.state.chainService.getBitcoinApiMap();
197
201
  let unsub = noop;
198
- unsub = subscribeBalance([address], [chain], [tSlug], assetMap, chainInfoMap, substrateApiMap, evmApiMap, tonApiMap, cardanoApiMap, result => {
202
+ unsub = subscribeBalance([address], [chain], [tSlug], assetMap, chainInfoMap, substrateApiMap, evmApiMap, tonApiMap, cardanoApiMap, bitcoinApiMap, result => {
199
203
  const rs = result[0];
200
204
  let value;
201
205
  switch (balanceType) {
@@ -366,13 +370,14 @@ export class BalanceService {
366
370
  const substrateApiMap = this.state.chainService.getSubstrateApiMap();
367
371
  const tonApiMap = this.state.chainService.getTonApiMap();
368
372
  const cardanoApiMap = this.state.chainService.getCardanoApiMap();
373
+ const bitcoinApiMap = this.state.chainService.getBitcoinApiMap();
369
374
  const activeChainSlugs = Object.keys(this.state.getActiveChainInfoMap());
370
375
  const assetState = this.state.chainService.subscribeAssetSettings().value;
371
376
  const assets = Object.values(assetMap).filter(asset => {
372
377
  var _assetState$asset$slu;
373
378
  return activeChainSlugs.includes(asset.originChain) && ((_assetState$asset$slu = assetState[asset.slug]) === null || _assetState$asset$slu === void 0 ? void 0 : _assetState$asset$slu.visible);
374
379
  }).map(asset => asset.slug);
375
- const unsub = subscribeBalance(addresses, activeChainSlugs, assets, assetMap, chainInfoMap, substrateApiMap, evmApiMap, tonApiMap, cardanoApiMap, result => {
380
+ const unsub = subscribeBalance(addresses, activeChainSlugs, assets, assetMap, chainInfoMap, substrateApiMap, evmApiMap, tonApiMap, cardanoApiMap, bitcoinApiMap, result => {
376
381
  !cancel && this.setBalanceItem(result);
377
382
  }, ExtrinsicType.TRANSFER_BALANCE);
378
383
  const unsub2 = this.state.subscribeMantaPayBalance();
@@ -382,6 +387,29 @@ export class BalanceService {
382
387
  unsub2 && unsub2();
383
388
  };
384
389
  }
390
+ async refreshBalanceForAddress(address, chain, asset, extrinsicType) {
391
+ // Check if address and chain are valid
392
+ const chainInfoMap = this.state.chainService.getChainInfoMap();
393
+ if (!chainInfoMap[chain]) {
394
+ console.warn(`Chain ${chain} is not supported`);
395
+ return;
396
+ }
397
+
398
+ // Get necessary data
399
+ const assetMap = this.state.chainService.getAssetRegistry();
400
+ const evmApiMap = this.state.chainService.getEvmApiMap();
401
+ const substrateApiMap = this.state.chainService.getSubstrateApiMap();
402
+ const tonApiMap = this.state.chainService.getTonApiMap();
403
+ const cardanoApiMap = this.state.chainService.getCardanoApiMap();
404
+ const bitcoinApiMap = this.state.chainService.getBitcoinApiMap();
405
+ return new Promise(resolve => {
406
+ const unsub = subscribeBalance([address], [chain], [asset], assetMap, chainInfoMap, substrateApiMap, evmApiMap, tonApiMap, cardanoApiMap, bitcoinApiMap, result => {
407
+ this.setBalanceItem(result);
408
+ unsub();
409
+ resolve();
410
+ }, extrinsicType || ExtrinsicType.TRANSFER_BALANCE);
411
+ });
412
+ }
385
413
 
386
414
  /** Unsubscribe balance subscription */
387
415
  runUnsubscribeBalances() {
@@ -0,0 +1,14 @@
1
+ import { _BitcoinApi } from '@subwallet/extension-base/services/chain-service/types';
2
+ import { FeeInfo, TransactionFee } from '@subwallet/extension-base/types';
3
+ import { Network, Psbt } from 'bitcoinjs-lib';
4
+ export interface TransferBitcoinProps extends TransactionFee {
5
+ bitcoinApi: _BitcoinApi;
6
+ chain: string;
7
+ from: string;
8
+ feeInfo: FeeInfo;
9
+ to: string;
10
+ transferAll: boolean;
11
+ value: string;
12
+ network: Network;
13
+ }
14
+ export declare function createBitcoinTransaction(params: TransferBitcoinProps): Promise<[Psbt, string, string | undefined]>;