@trezor/connect 9.7.0-beta.1 → 9.7.0-beta.2

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 (408) hide show
  1. package/CHANGELOG.md +43 -12
  2. package/README.md +1 -1
  3. package/lib/api/applyFlags.js +31 -26
  4. package/lib/api/applySettings.js +43 -40
  5. package/lib/api/authenticateDevice.js +82 -54
  6. package/lib/api/authorizeCoinjoin.js +35 -28
  7. package/lib/api/backupDevice.js +32 -27
  8. package/lib/api/bitcoin/TransactionComposer.js +131 -123
  9. package/lib/api/bitcoin/createPendingTx.js +55 -52
  10. package/lib/api/bitcoin/enhanceSignTx.js +57 -55
  11. package/lib/api/bitcoin/index.js +4 -1
  12. package/lib/api/bitcoin/inputs.js +71 -46
  13. package/lib/api/bitcoin/outputs.js +108 -85
  14. package/lib/api/bitcoin/refTx.d.ts +1 -1
  15. package/lib/api/bitcoin/refTx.js +233 -201
  16. package/lib/api/bitcoin/signtx.js +208 -152
  17. package/lib/api/bitcoin/signtxLegacy.js +169 -119
  18. package/lib/api/bitcoin/signtxVerify.js +80 -67
  19. package/lib/api/bitcoin/transactionBytes.js +61 -59
  20. package/lib/api/bleUnpair.js +28 -25
  21. package/lib/api/blockchainDisconnect.js +31 -24
  22. package/lib/api/blockchainEstimateFee.js +94 -61
  23. package/lib/api/blockchainEvmRpcCall.js +51 -34
  24. package/lib/api/blockchainGetAccountBalanceHistory.d.ts +1 -1
  25. package/lib/api/blockchainGetAccountBalanceHistory.js +50 -32
  26. package/lib/api/blockchainGetCurrentFiatRates.d.ts +1 -1
  27. package/lib/api/blockchainGetCurrentFiatRates.js +43 -29
  28. package/lib/api/blockchainGetFiatRatesForTimestamps.d.ts +1 -1
  29. package/lib/api/blockchainGetFiatRatesForTimestamps.js +49 -32
  30. package/lib/api/blockchainGetInfo.js +31 -22
  31. package/lib/api/blockchainGetTransactions.d.ts +1 -1
  32. package/lib/api/blockchainGetTransactions.js +36 -24
  33. package/lib/api/blockchainSetCustomBackend.js +34 -25
  34. package/lib/api/blockchainSubscribe.js +57 -36
  35. package/lib/api/blockchainSubscribeFiatRates.js +36 -24
  36. package/lib/api/blockchainUnsubscribe.js +57 -37
  37. package/lib/api/blockchainUnsubscribeFiatRates.js +31 -22
  38. package/lib/api/cancelCoinjoinAuthorization.js +26 -20
  39. package/lib/api/cardano/api/cardanoComposeTransaction.js +75 -50
  40. package/lib/api/cardano/api/cardanoGetAddress.js +105 -102
  41. package/lib/api/cardano/api/cardanoGetNativeScriptHash.js +59 -56
  42. package/lib/api/cardano/api/cardanoGetPublicKey.js +58 -58
  43. package/lib/api/cardano/api/cardanoSignMessage.js +81 -78
  44. package/lib/api/cardano/api/cardanoSignTransaction.js +269 -240
  45. package/lib/api/cardano/api/index.js +40 -7
  46. package/lib/api/cardano/cardanoAddressParameters.js +71 -65
  47. package/lib/api/cardano/cardanoAuxiliaryData.js +68 -63
  48. package/lib/api/cardano/cardanoCertificate.js +124 -119
  49. package/lib/api/cardano/cardanoInputs.js +33 -33
  50. package/lib/api/cardano/cardanoOutputs.d.ts +1 -1
  51. package/lib/api/cardano/cardanoOutputs.js +63 -61
  52. package/lib/api/cardano/cardanoTokenBundle.d.ts +2 -2
  53. package/lib/api/cardano/cardanoTokenBundle.js +18 -13
  54. package/lib/api/cardano/cardanoUtils.js +94 -89
  55. package/lib/api/cardano/cardanoWitnesses.js +46 -42
  56. package/lib/api/changeLanguage.js +40 -29
  57. package/lib/api/changePin.js +21 -16
  58. package/lib/api/changeWipeCode.js +24 -16
  59. package/lib/api/cipherKeyValue.js +42 -41
  60. package/lib/api/common/Discovery.js +114 -112
  61. package/lib/api/common/paramsValidator.js +110 -116
  62. package/lib/api/composeTransaction.d.ts +1 -1
  63. package/lib/api/composeTransaction.js +307 -256
  64. package/lib/api/discoverAccounts.js +291 -191
  65. package/lib/api/eos/api/eosGetPublicKey.js +56 -52
  66. package/lib/api/eos/api/eosSignTransaction.js +35 -26
  67. package/lib/api/eos/api/index.js +16 -3
  68. package/lib/api/eos/eosSignTx.js +308 -312
  69. package/lib/api/ethereum/api/ethereumGetAddress.js +106 -107
  70. package/lib/api/ethereum/api/ethereumGetPublicKey.js +72 -62
  71. package/lib/api/ethereum/api/ethereumSignMessage.js +55 -48
  72. package/lib/api/ethereum/api/ethereumSignTransaction.d.ts +33 -0
  73. package/lib/api/ethereum/api/ethereumSignTransaction.js +137 -132
  74. package/lib/api/ethereum/api/ethereumSignTypedData.d.ts +4 -4
  75. package/lib/api/ethereum/api/ethereumSignTypedData.js +183 -181
  76. package/lib/api/ethereum/api/ethereumVerifyMessage.js +27 -24
  77. package/lib/api/ethereum/api/index.js +40 -7
  78. package/lib/api/ethereum/ethereumDefinitions.js +94 -87
  79. package/lib/api/ethereum/ethereumSignTx.js +116 -111
  80. package/lib/api/ethereum/ethereumSignTypedData.js +98 -95
  81. package/lib/api/evoluGetDelegatedIdentityKey.js +30 -26
  82. package/lib/api/evoluGetNode.js +24 -19
  83. package/lib/api/evoluSignRegistrationRequest.js +26 -21
  84. package/lib/api/firmware/calculateFirmwareHash.js +44 -32
  85. package/lib/api/firmware/getBinary.js +30 -22
  86. package/lib/api/firmware/index.js +46 -8
  87. package/lib/api/firmware/modifyFirmware.js +13 -12
  88. package/lib/api/firmware/parseFirmwareHeaders.js +29 -30
  89. package/lib/api/firmware/uploadFirmware.js +84 -67
  90. package/lib/api/firmware/verifyEntropy.js +88 -83
  91. package/lib/api/getAccountDescriptor.js +118 -120
  92. package/lib/api/getAccountInfo.d.ts +14 -14
  93. package/lib/api/getAccountInfo.js +316 -287
  94. package/lib/api/getAddress.js +128 -118
  95. package/lib/api/getCoinInfo.js +22 -17
  96. package/lib/api/getDeviceState.js +16 -10
  97. package/lib/api/getFeatures.d.ts +1 -1
  98. package/lib/api/getFeatures.js +15 -12
  99. package/lib/api/getFirmwareHash.js +23 -18
  100. package/lib/api/getNonce.js +12 -9
  101. package/lib/api/getOwnershipId.js +57 -51
  102. package/lib/api/getOwnershipProof.js +66 -60
  103. package/lib/api/getPublicKey.js +72 -66
  104. package/lib/api/getSettings.js +12 -9
  105. package/lib/api/index.js +346 -58
  106. package/lib/api/loadDevice.js +40 -35
  107. package/lib/api/monero/api/index.js +28 -5
  108. package/lib/api/monero/api/moneroGetAddress.js +108 -97
  109. package/lib/api/monero/api/moneroGetWatchKey.js +37 -32
  110. package/lib/api/monero/api/moneroKeyImageSync.js +111 -107
  111. package/lib/api/monero/api/moneroSignTransaction.js +173 -185
  112. package/lib/api/nem/api/index.js +16 -3
  113. package/lib/api/nem/api/nemGetAddress.js +107 -102
  114. package/lib/api/nem/api/nemSignTransaction.js +25 -20
  115. package/lib/api/nem/nemSignTx.js +128 -125
  116. package/lib/api/pushTransaction.js +31 -27
  117. package/lib/api/recoveryDevice.js +44 -39
  118. package/lib/api/requestLogin.d.ts +0 -1
  119. package/lib/api/requestLogin.js +47 -52
  120. package/lib/api/resetDevice.js +100 -90
  121. package/lib/api/ripple/api/index.js +16 -3
  122. package/lib/api/ripple/api/rippleGetAddress.js +92 -88
  123. package/lib/api/ripple/api/rippleSignTransaction.js +44 -34
  124. package/lib/api/setBrightness.js +21 -16
  125. package/lib/api/setBusy.js +27 -20
  126. package/lib/api/setProxy.js +22 -15
  127. package/lib/api/showDeviceTutorial.js +18 -15
  128. package/lib/api/signMessage.js +50 -46
  129. package/lib/api/signTransaction.js +325 -238
  130. package/lib/api/solana/additionalInfo.js +17 -14
  131. package/lib/api/solana/api/index.js +28 -5
  132. package/lib/api/solana/api/solanaComposeTransaction.js +46 -50
  133. package/lib/api/solana/api/solanaGetAddress.js +92 -90
  134. package/lib/api/solana/api/solanaGetPublicKey.js +56 -52
  135. package/lib/api/solana/api/solanaSignTransaction.js +175 -168
  136. package/lib/api/solana/solanaDefinitions.js +32 -25
  137. package/lib/api/solana/solanaUtils.d.ts +2 -2
  138. package/lib/api/solana/solanaUtils.js +231 -177
  139. package/lib/api/stellar/api/index.js +16 -3
  140. package/lib/api/stellar/api/stellarGetAddress.js +92 -88
  141. package/lib/api/stellar/api/stellarSignTransaction.js +51 -44
  142. package/lib/api/stellar/stellarSignTx.js +184 -179
  143. package/lib/api/tezos/api/index.js +22 -4
  144. package/lib/api/tezos/api/tezosGetAddress.js +92 -88
  145. package/lib/api/tezos/api/tezosGetPublicKey.js +55 -51
  146. package/lib/api/tezos/api/tezosSignTransaction.js +23 -18
  147. package/lib/api/tezos/tezosSignTx.js +183 -169
  148. package/lib/api/thpGetCredentials.js +23 -20
  149. package/lib/api/thpRemoveCredentials.js +28 -21
  150. package/lib/api/unlockPath.js +28 -21
  151. package/lib/api/verifyMessage.js +35 -33
  152. package/lib/api/wipeDevice.js +39 -34
  153. package/lib/backend/BackendManager.js +127 -107
  154. package/lib/backend/Blockchain.d.ts +1 -1
  155. package/lib/backend/Blockchain.js +220 -205
  156. package/lib/backend/BlockchainLink.js +17 -5
  157. package/lib/backend/fees/BitcoinFeeLevels.js +41 -34
  158. package/lib/backend/fees/EthereumFeeLevels.js +51 -51
  159. package/lib/backend/fees/MiscFeeLevels.js +25 -24
  160. package/lib/backend/fees/index.js +28 -21
  161. package/lib/constants/cardano.js +11 -8
  162. package/lib/constants/errors.js +72 -65
  163. package/lib/constants/firmware.js +5 -5
  164. package/lib/constants/index.js +16 -3
  165. package/lib/constants/nem.js +19 -16
  166. package/lib/constants/network.js +15 -22
  167. package/lib/constants/utxo.js +4 -1
  168. package/lib/core/AbstractMethod.d.ts +1 -1
  169. package/lib/core/AbstractMethod.js +248 -224
  170. package/lib/core/index.js +936 -775
  171. package/lib/core/method.js +19 -16
  172. package/lib/core/method.native.js +28 -23
  173. package/lib/core/onCallFirmwareUpdate.js +368 -299
  174. package/lib/data/DataManager.js +85 -77
  175. package/lib/data/analyticsInfo.js +35 -29
  176. package/lib/data/coinInfo.js +154 -156
  177. package/lib/data/config.d.ts +1 -1
  178. package/lib/data/config.js +362 -330
  179. package/lib/data/connectSettings.js +131 -144
  180. package/lib/data/defaultFeeLevels.js +154 -108
  181. package/lib/data/firmwareInfo.d.ts +1 -0
  182. package/lib/data/firmwareInfo.js +407 -377
  183. package/lib/data/thpSettings.js +36 -35
  184. package/lib/data/udevInfo.js +24 -24
  185. package/lib/data/version.d.ts +1 -1
  186. package/lib/data/version.js +6 -5
  187. package/lib/device/Device.d.ts +6 -7
  188. package/lib/device/Device.js +731 -749
  189. package/lib/device/DeviceCommands.js +226 -194
  190. package/lib/device/DeviceCurrentSession.d.ts +333 -333
  191. package/lib/device/DeviceCurrentSession.js +235 -236
  192. package/lib/device/DeviceList.d.ts +2 -0
  193. package/lib/device/DeviceList.js +219 -181
  194. package/lib/device/StateStorage.js +32 -29
  195. package/lib/device/TransportList.d.ts +1 -1
  196. package/lib/device/TransportList.js +37 -36
  197. package/lib/device/TransportManager.js +136 -140
  198. package/lib/device/calculateRevisionForDevice.js +20 -14
  199. package/lib/device/checkFirmwareRevision.js +66 -54
  200. package/lib/device/resolveDescriptorForTaproot.js +26 -16
  201. package/lib/device/thp/handshake.js +95 -82
  202. package/lib/device/thp/index.js +53 -38
  203. package/lib/device/thp/pairing.js +209 -199
  204. package/lib/device/thp/session.js +27 -19
  205. package/lib/device/thp/thpCall.js +53 -43
  206. package/lib/device/workflow/checkFirmwareHash.js +77 -67
  207. package/lib/device/workflow/checkFirmwareHashWithRetries.js +32 -29
  208. package/lib/device/workflow/handshake.js +50 -41
  209. package/lib/device/workflow/index.js +10 -2
  210. package/lib/device/workflow/trezorPushNotification.js +68 -64
  211. package/lib/device/workflow/validateState.js +155 -129
  212. package/lib/events/blockchain.js +13 -10
  213. package/lib/events/call.d.ts +6 -4
  214. package/lib/events/call.js +14 -13
  215. package/lib/events/core.js +24 -21
  216. package/lib/events/device.d.ts +2 -2
  217. package/lib/events/device.js +32 -19
  218. package/lib/events/iframe.js +13 -10
  219. package/lib/events/index.d.ts +0 -1
  220. package/lib/events/index.js +6 -3
  221. package/lib/events/popup.js +20 -17
  222. package/lib/events/transport.d.ts +2 -2
  223. package/lib/events/transport.js +16 -11
  224. package/lib/events/ui-promise.js +4 -1
  225. package/lib/events/ui-request.d.ts +0 -4
  226. package/lib/events/ui-request.js +48 -46
  227. package/lib/events/ui-response.d.ts +2 -2
  228. package/lib/events/ui-response.js +20 -17
  229. package/lib/events/webextension.js +9 -6
  230. package/lib/exports.js +10 -2
  231. package/lib/factory.d.ts +3 -2
  232. package/lib/factory.js +34 -143
  233. package/lib/impl/core-in-module.d.ts +1 -6
  234. package/lib/impl/core-in-module.js +187 -191
  235. package/lib/impl/dynamic.d.ts +0 -1
  236. package/lib/impl/dynamic.js +108 -97
  237. package/lib/index-browser.d.ts +1 -0
  238. package/lib/index-browser.js +18 -16
  239. package/lib/index.d.ts +2 -0
  240. package/lib/index.js +144 -148
  241. package/lib/types/account.js +4 -1
  242. package/lib/types/api/applyFlags.js +4 -1
  243. package/lib/types/api/applySettings.d.ts +2 -2
  244. package/lib/types/api/applySettings.js +7 -7
  245. package/lib/types/api/authenticateDevice.js +7 -4
  246. package/lib/types/api/authorizeCoinjoin.js +13 -10
  247. package/lib/types/api/backupDevice.js +4 -1
  248. package/lib/types/api/bitcoin/index.d.ts +5 -2
  249. package/lib/types/api/bitcoin/index.js +14 -11
  250. package/lib/types/api/bleUnpair.js +4 -1
  251. package/lib/types/api/blockchainDisconnect.js +4 -1
  252. package/lib/types/api/blockchainEstimateFee.js +4 -1
  253. package/lib/types/api/blockchainEvmRpcCall.js +4 -1
  254. package/lib/types/api/blockchainGetAccountBalanceHistory.js +4 -1
  255. package/lib/types/api/blockchainGetCurrentFiatRates.js +4 -1
  256. package/lib/types/api/blockchainGetFiatRatesForTimestamps.js +4 -1
  257. package/lib/types/api/blockchainGetInfo.js +4 -1
  258. package/lib/types/api/blockchainGetTransactions.js +4 -1
  259. package/lib/types/api/blockchainSetCustomBackend.js +4 -1
  260. package/lib/types/api/blockchainSubscribe.js +4 -1
  261. package/lib/types/api/blockchainSubscribeFiatRates.js +4 -1
  262. package/lib/types/api/blockchainUnsubscribe.js +4 -1
  263. package/lib/types/api/blockchainUnsubscribeFiatRates.js +4 -1
  264. package/lib/types/api/cancel.js +4 -1
  265. package/lib/types/api/cancelCoinjoinAuthorization.js +5 -2
  266. package/lib/types/api/cardano/index.d.ts +4 -4
  267. package/lib/types/api/cardano/index.js +173 -180
  268. package/lib/types/api/cardanoComposeTransaction.js +76 -65
  269. package/lib/types/api/cardanoGetAddress.js +4 -1
  270. package/lib/types/api/cardanoGetNativeScriptHash.js +4 -1
  271. package/lib/types/api/cardanoGetPublicKey.js +4 -1
  272. package/lib/types/api/cardanoSignMessage.js +4 -1
  273. package/lib/types/api/cardanoSignTransaction.js +4 -1
  274. package/lib/types/api/changeLanguage.d.ts +1 -1
  275. package/lib/types/api/changeLanguage.js +13 -13
  276. package/lib/types/api/changePin.js +4 -1
  277. package/lib/types/api/changeWipeCode.js +4 -1
  278. package/lib/types/api/cipherKeyValue.d.ts +2 -2
  279. package/lib/types/api/cipherKeyValue.js +11 -8
  280. package/lib/types/api/composeTransaction.js +4 -1
  281. package/lib/types/api/device.js +1 -2
  282. package/lib/types/api/disableWebUSB.js +4 -1
  283. package/lib/types/api/discoverAccounts.js +204 -55
  284. package/lib/types/api/dispose.js +4 -1
  285. package/lib/types/api/eos/index.d.ts +3 -3
  286. package/lib/types/api/eos/index.js +106 -162
  287. package/lib/types/api/eosGetPublicKey.js +4 -1
  288. package/lib/types/api/eosSignTransaction.js +4 -1
  289. package/lib/types/api/ethereum/index.d.ts +7 -7
  290. package/lib/types/api/ethereum/index.js +70 -67
  291. package/lib/types/api/ethereumGetAddress.js +4 -1
  292. package/lib/types/api/ethereumGetPublicKey.js +4 -1
  293. package/lib/types/api/ethereumSignMessage.js +4 -1
  294. package/lib/types/api/ethereumSignTransaction.js +4 -1
  295. package/lib/types/api/ethereumSignTypedData.js +4 -1
  296. package/lib/types/api/ethereumVerifyMessage.js +4 -1
  297. package/lib/types/api/evoluGetDelegatedIdentityKey.js +4 -1
  298. package/lib/types/api/evoluGetNode.js +4 -1
  299. package/lib/types/api/evoluSignRegistrationRequest.js +4 -1
  300. package/lib/types/api/firmwareUpdate.d.ts +1 -1
  301. package/lib/types/api/firmwareUpdate.js +12 -12
  302. package/lib/types/api/getAccountDescriptor.js +8 -5
  303. package/lib/types/api/getAccountInfo.js +4 -1
  304. package/lib/types/api/getAddress.js +11 -11
  305. package/lib/types/api/getCoinInfo.js +4 -1
  306. package/lib/types/api/getDeviceState.js +4 -1
  307. package/lib/types/api/getFeatures.js +4 -1
  308. package/lib/types/api/getFirmwareHash.js +4 -1
  309. package/lib/types/api/getNonce.d.ts +1 -1
  310. package/lib/types/api/getNonce.js +4 -1
  311. package/lib/types/api/getOwnershipId.js +8 -5
  312. package/lib/types/api/getOwnershipProof.js +14 -9
  313. package/lib/types/api/getPublicKey.js +25 -28
  314. package/lib/types/api/getSettings.js +4 -1
  315. package/lib/types/api/index.js +4 -1
  316. package/lib/types/api/init.js +4 -1
  317. package/lib/types/api/loadDevice.js +4 -1
  318. package/lib/types/api/manifest.js +4 -1
  319. package/lib/types/api/monero/index.js +117 -114
  320. package/lib/types/api/moneroGetAddress.js +4 -1
  321. package/lib/types/api/moneroGetWatchKey.js +4 -1
  322. package/lib/types/api/moneroKeyImageSync.js +4 -1
  323. package/lib/types/api/moneroSignTransaction.js +4 -1
  324. package/lib/types/api/nem/index.d.ts +7 -7
  325. package/lib/types/api/nem/index.js +78 -112
  326. package/lib/types/api/nemGetAddress.js +7 -7
  327. package/lib/types/api/nemSignTransaction.js +4 -1
  328. package/lib/types/api/off.js +4 -1
  329. package/lib/types/api/on.js +4 -1
  330. package/lib/types/api/pushTransaction.js +10 -10
  331. package/lib/types/api/recoveryDevice.d.ts +1 -1
  332. package/lib/types/api/recoveryDevice.js +7 -7
  333. package/lib/types/api/removeAllListeners.js +4 -1
  334. package/lib/types/api/renderWebUSBButton.js +4 -1
  335. package/lib/types/api/requestLogin.d.ts +4 -24
  336. package/lib/types/api/requestLogin.js +11 -13
  337. package/lib/types/api/requestWebUSBDevice.js +4 -1
  338. package/lib/types/api/resetDevice.js +4 -1
  339. package/lib/types/api/ripple/index.js +17 -14
  340. package/lib/types/api/rippleGetAddress.js +4 -1
  341. package/lib/types/api/rippleSignTransaction.js +4 -1
  342. package/lib/types/api/setBrightness.js +4 -1
  343. package/lib/types/api/setBusy.js +4 -1
  344. package/lib/types/api/setProxy.js +4 -1
  345. package/lib/types/api/setTransports.js +4 -1
  346. package/lib/types/api/showDeviceTutorial.js +4 -1
  347. package/lib/types/api/signMessage.js +4 -1
  348. package/lib/types/api/signTransaction.js +4 -1
  349. package/lib/types/api/solana/index.js +55 -56
  350. package/lib/types/api/solanaComposeTransaction.js +4 -1
  351. package/lib/types/api/solanaGetAddress.js +4 -1
  352. package/lib/types/api/solanaGetPublicKey.js +4 -1
  353. package/lib/types/api/solanaSignTransaction.js +4 -1
  354. package/lib/types/api/stellar/index.d.ts +146 -146
  355. package/lib/types/api/stellar/index.js +151 -221
  356. package/lib/types/api/stellarGetAddress.js +4 -1
  357. package/lib/types/api/stellarSignTransaction.js +4 -1
  358. package/lib/types/api/tezos/index.js +46 -43
  359. package/lib/types/api/tezosGetAddress.js +4 -1
  360. package/lib/types/api/tezosGetPublicKey.js +4 -1
  361. package/lib/types/api/tezosSignTransaction.js +4 -1
  362. package/lib/types/api/thpGetCredentials.js +4 -1
  363. package/lib/types/api/thpRemoveCredentials.js +4 -1
  364. package/lib/types/api/uiResponse.js +4 -1
  365. package/lib/types/api/unlockPath.js +6 -3
  366. package/lib/types/api/verifyMessage.js +4 -1
  367. package/lib/types/api/wipeDevice.js +4 -1
  368. package/lib/types/coinInfo.js +62 -77
  369. package/lib/types/device.d.ts +7 -2
  370. package/lib/types/device.js +7 -4
  371. package/lib/types/fees.js +31 -37
  372. package/lib/types/firmware.js +4 -1
  373. package/lib/types/index.d.ts +1 -0
  374. package/lib/types/index.js +18 -3
  375. package/lib/types/params.js +25 -16
  376. package/lib/types/settings.js +4 -1
  377. package/lib/types/utils.js +4 -1
  378. package/lib/types/workflow.js +4 -1
  379. package/lib/utils/accountUtils.js +76 -81
  380. package/lib/utils/addressUtils.js +21 -21
  381. package/lib/utils/assetUtils.js +29 -26
  382. package/lib/utils/assets-browser.js +19 -13
  383. package/lib/utils/assets.js +10 -9
  384. package/lib/utils/assets.native.js +24 -23
  385. package/lib/utils/assetsTypes.js +4 -1
  386. package/lib/utils/debug.js +18 -13
  387. package/lib/utils/deviceFeaturesUtils.js +105 -127
  388. package/lib/utils/ethereumUtils.js +9 -6
  389. package/lib/utils/firmwareReleaseConfigUtils.js +69 -57
  390. package/lib/utils/firmwareUtils.js +45 -57
  391. package/lib/utils/formatUtils.d.ts +0 -1
  392. package/lib/utils/formatUtils.js +63 -62
  393. package/lib/utils/hdnodeUtils.d.ts +0 -1
  394. package/lib/utils/hdnodeUtils.js +51 -57
  395. package/lib/utils/interactionTimeout.js +26 -23
  396. package/lib/utils/pathUtils.js +132 -148
  397. package/lib/utils/popupPromiseManager.js +23 -14
  398. package/lib/utils/proxy-event-emitter.js +63 -60
  399. package/lib/utils/uiPromiseManager.js +55 -43
  400. package/lib/utils/urlUtils.js +20 -26
  401. package/lib/utils/versionCheck.js +10 -10
  402. package/lib/workers/workers-browser.d.ts +5 -5
  403. package/lib/workers/workers-browser.js +5 -2
  404. package/lib/workers/workers.d.ts +1 -1
  405. package/lib/workers/workers.js +49 -38
  406. package/lib/workers/workers.native.d.ts +5 -5
  407. package/lib/workers/workers.native.js +4 -1
  408. package/package.json +23 -20
@@ -1,221 +1,236 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.Blockchain = void 0;
4
7
  const tslib_1 = require("tslib");
5
8
  const blockchain_link_1 = tslib_1.__importDefault(require("@trezor/blockchain-link"));
6
9
  const constants_1 = require("../constants");
7
10
  const events_1 = require("../events");
8
11
  const workers_1 = require("../workers/workers");
9
- const getWorker = (type) => {
10
- switch (type) {
11
- case 'blockbook':
12
- return workers_1.BlockbookWorker;
13
- case 'ripple':
14
- return workers_1.RippleWorker;
15
- case 'blockfrost':
16
- return workers_1.BlockfrostWorker;
17
- case 'electrum':
18
- return workers_1.ElectrumWorker;
19
- case 'solana':
20
- return workers_1.SolanaWorker;
21
- case 'stellar':
22
- return workers_1.StellarWorker;
23
- default:
24
- return null;
25
- }
12
+ const getWorker = type => {
13
+ switch (type) {
14
+ case 'blockbook':
15
+ return workers_1.BlockbookWorker;
16
+ case 'ripple':
17
+ return workers_1.RippleWorker;
18
+ case 'blockfrost':
19
+ return workers_1.BlockfrostWorker;
20
+ case 'electrum':
21
+ return workers_1.ElectrumWorker;
22
+ case 'solana':
23
+ return workers_1.SolanaWorker;
24
+ case 'stellar':
25
+ return workers_1.StellarWorker;
26
+ default:
27
+ return null;
28
+ }
26
29
  };
27
- const getNormalizedTrezorShortcut = (shortcut) => {
28
- if (shortcut === 'tXRP') {
29
- return 'XRP';
30
- }
31
- return shortcut;
30
+ const getNormalizedTrezorShortcut = shortcut => {
31
+ if (shortcut === 'tXRP') {
32
+ return 'XRP';
33
+ }
34
+ return shortcut;
32
35
  };
33
36
  class Blockchain {
34
- link;
35
- serverInfo;
36
- identity;
37
- coinInfo;
38
- postMessage;
39
- onDisconnected;
40
- initPromise;
41
- constructor(options) {
42
- this.identity = options.identity;
43
- this.coinInfo = options.coinInfo;
44
- this.postMessage = options.postMessage;
45
- this.onDisconnected = options.onDisconnected;
46
- const { blockchainLink } = options.coinInfo;
47
- if (!blockchainLink) {
48
- throw constants_1.ERRORS.TypedError('Backend_NotSupported');
49
- }
50
- const worker = getWorker(blockchainLink.type);
51
- if (!worker) {
52
- throw constants_1.ERRORS.TypedError('Backend_WorkerMissing', `BlockchainLink worker not found ${blockchainLink.type}`);
53
- }
54
- const server = blockchainLink.url;
55
- this.link = new blockchain_link_1.default({
56
- name: this.coinInfo.shortcut,
57
- worker,
58
- server,
59
- debug: options.debug,
60
- proxy: options.proxy,
61
- ...(this.coinInfo.type === 'ethereum' ? { throttleBlockEvent: 10 * 1000 } : {}),
62
- ...(['ripple', 'stellar'].includes(blockchainLink.type)
63
- ? { throttleBlockEvent: 60 * 1000 }
64
- : {}),
65
- });
66
- }
67
- onBackendDisconnected(pendingSubscriptions = false) {
68
- this.postMessage((0, events_1.createBlockchainMessage)(events_1.BLOCKCHAIN.ERROR, {
69
- coin: this.coinInfo,
70
- identity: this.identity,
71
- error: constants_1.ERRORS.ERROR_CODES.Backend_Disconnected,
72
- code: 'Backend_Disconnected',
37
+ link;
38
+ serverInfo;
39
+ identity;
40
+ coinInfo;
41
+ postMessage;
42
+ onDisconnected;
43
+ initPromise;
44
+ constructor(options) {
45
+ this.identity = options.identity;
46
+ this.coinInfo = options.coinInfo;
47
+ this.postMessage = options.postMessage;
48
+ this.onDisconnected = options.onDisconnected;
49
+ const {
50
+ blockchainLink
51
+ } = options.coinInfo;
52
+ if (!blockchainLink) {
53
+ throw constants_1.ERRORS.TypedError('Backend_NotSupported');
54
+ }
55
+ const worker = getWorker(blockchainLink.type);
56
+ if (!worker) {
57
+ throw constants_1.ERRORS.TypedError('Backend_WorkerMissing', `BlockchainLink worker not found ${blockchainLink.type}`);
58
+ }
59
+ const server = blockchainLink.url;
60
+ this.link = new blockchain_link_1.default({
61
+ name: this.coinInfo.shortcut,
62
+ worker,
63
+ server,
64
+ debug: options.debug,
65
+ proxy: options.proxy,
66
+ ...(this.coinInfo.type === 'ethereum' ? {
67
+ throttleBlockEvent: 10 * 1000
68
+ } : {}),
69
+ ...(['ripple', 'stellar'].includes(blockchainLink.type) ? {
70
+ throttleBlockEvent: 60 * 1000
71
+ } : {})
72
+ });
73
+ }
74
+ onBackendDisconnected(pendingSubscriptions = false) {
75
+ this.postMessage((0, events_1.createBlockchainMessage)(events_1.BLOCKCHAIN.ERROR, {
76
+ coin: this.coinInfo,
77
+ identity: this.identity,
78
+ error: constants_1.ERRORS.ERROR_CODES.Backend_Disconnected,
79
+ code: 'Backend_Disconnected'
80
+ }));
81
+ this.onDisconnected?.(!!pendingSubscriptions);
82
+ }
83
+ async initLink() {
84
+ let info;
85
+ try {
86
+ await this.link.connect();
87
+ info = await this.link.getInfo();
88
+ } catch (error) {
89
+ throw constants_1.ERRORS.TypedError('Backend_Error', error.message);
90
+ }
91
+ this.serverInfo = info;
92
+ const trezorNetworkShortcut = getNormalizedTrezorShortcut(this.coinInfo.shortcut);
93
+ const backendNetworkShortcut = this.serverInfo.network;
94
+ if (backendNetworkShortcut.toLowerCase() !== trezorNetworkShortcut.toLowerCase()) {
95
+ throw constants_1.ERRORS.TypedError('Backend_Invalid');
96
+ }
97
+ this.link.on('disconnected', () => {
98
+ const pendingSubscriptions = this.link.listenerCount('block') || this.link.listenerCount('notification') || this.link.listenerCount('fiatRates');
99
+ this.link.dispose();
100
+ this.onBackendDisconnected(!!pendingSubscriptions);
101
+ });
102
+ return info;
103
+ }
104
+ init() {
105
+ if (!this.initPromise) {
106
+ this.initPromise = this.initLink().then(info => {
107
+ this.postMessage((0, events_1.createBlockchainMessage)(events_1.BLOCKCHAIN.CONNECT, {
108
+ coin: this.coinInfo,
109
+ identity: this.identity,
110
+ ...info
73
111
  }));
74
- this.onDisconnected?.(!!pendingSubscriptions);
75
- }
76
- async initLink() {
77
- let info;
78
- try {
79
- await this.link.connect();
80
- info = await this.link.getInfo();
81
- }
82
- catch (error) {
83
- throw constants_1.ERRORS.TypedError('Backend_Error', error.message);
84
- }
85
- this.serverInfo = info;
86
- const trezorNetworkShortcut = getNormalizedTrezorShortcut(this.coinInfo.shortcut);
87
- const backendNetworkShortcut = this.serverInfo.network;
88
- if (backendNetworkShortcut.toLowerCase() !== trezorNetworkShortcut.toLowerCase()) {
89
- throw constants_1.ERRORS.TypedError('Backend_Invalid');
90
- }
91
- this.link.on('disconnected', () => {
92
- const pendingSubscriptions = this.link.listenerCount('block') ||
93
- this.link.listenerCount('notification') ||
94
- this.link.listenerCount('fiatRates');
95
- this.link.dispose();
96
- this.onBackendDisconnected(!!pendingSubscriptions);
97
- });
112
+ this.initPromise = Promise.resolve(info);
98
113
  return info;
99
- }
100
- init() {
101
- if (!this.initPromise) {
102
- this.initPromise = this.initLink()
103
- .then(info => {
104
- this.postMessage((0, events_1.createBlockchainMessage)(events_1.BLOCKCHAIN.CONNECT, {
105
- coin: this.coinInfo,
106
- identity: this.identity,
107
- ...info,
108
- }));
109
- this.initPromise = Promise.resolve(info);
110
- return info;
111
- })
112
- .catch(error => {
113
- this.postMessage((0, events_1.createBlockchainMessage)(events_1.BLOCKCHAIN.ERROR, {
114
- coin: this.coinInfo,
115
- identity: this.identity,
116
- error: error.message,
117
- code: error.code,
118
- }));
119
- this.initPromise = Promise.reject(error);
120
- this.link.dispose();
121
- return this.initPromise;
122
- });
123
- }
114
+ }).catch(error => {
115
+ this.postMessage((0, events_1.createBlockchainMessage)(events_1.BLOCKCHAIN.ERROR, {
116
+ coin: this.coinInfo,
117
+ identity: this.identity,
118
+ error: error.message,
119
+ code: error.code
120
+ }));
121
+ this.initPromise = Promise.reject(error);
122
+ this.link.dispose();
124
123
  return this.initPromise;
125
- }
126
- getTransactions(txs) {
127
- return Promise.all(txs.map(id => this.link.getTransaction(id)));
128
- }
129
- getTransactionHexes(txids) {
130
- return Promise.all(txids.map(id => this.link.getTransactionHex(id)));
131
- }
132
- getCurrentFiatRates(params) {
133
- return this.link.getCurrentFiatRates(params);
134
- }
135
- getFiatRatesForTimestamps(params) {
136
- return this.link.getFiatRatesForTimestamps(params);
137
- }
138
- getAccountBalanceHistory(params) {
139
- return this.link.getAccountBalanceHistory(params);
140
- }
141
- getNetworkInfo() {
142
- return this.link.getInfo();
143
- }
144
- getAccountInfo(request) {
145
- return this.link.getAccountInfo(request);
146
- }
147
- getAccountUtxo(descriptor) {
148
- return this.link.getAccountUtxo(descriptor);
149
- }
150
- rpcCall(params) {
151
- return this.link.rpcCall(params);
152
- }
153
- estimateFee(request) {
154
- return this.link.estimateFee(request);
155
- }
156
- subscribeBlocks() {
157
- if (this.link.listenerCount('block') === 0) {
158
- this.link.on('block', block => {
159
- this.postMessage((0, events_1.createBlockchainMessage)(events_1.BLOCKCHAIN.BLOCK, {
160
- coin: this.coinInfo,
161
- ...block,
162
- }));
163
- });
164
- }
165
- return this.link.subscribe({ type: 'block' });
166
- }
167
- subscribeAccounts(accounts) {
168
- if (this.link.listenerCount('notification') === 0) {
169
- this.link.on('notification', notification => {
170
- this.postMessage((0, events_1.createBlockchainMessage)(events_1.BLOCKCHAIN.NOTIFICATION, {
171
- coin: this.coinInfo,
172
- notification,
173
- }));
174
- });
175
- }
176
- return this.link.subscribe({
177
- type: 'accounts',
178
- accounts,
179
- });
180
- }
181
- subscribeFiatRates(_currency) {
182
- if (this.link.listenerCount('fiatRates') === 0) {
183
- this.link.on('fiatRates', ({ rates }) => {
184
- this.postMessage((0, events_1.createBlockchainMessage)(events_1.BLOCKCHAIN.FIAT_RATES_UPDATE, {
185
- coin: this.coinInfo,
186
- rates,
187
- }));
188
- });
189
- }
190
- return this.link.subscribe({
191
- type: 'fiatRates',
192
- });
193
- }
194
- unsubscribeBlocks() {
195
- this.link.removeAllListeners('block');
196
- return this.link.unsubscribe({ type: 'block' });
197
- }
198
- unsubscribeAccounts(accounts) {
199
- return this.link.unsubscribe({ type: 'accounts', accounts });
200
- }
201
- unsubscribeFiatRates() {
202
- this.link.removeAllListeners('fiatRates');
203
- return this.link.unsubscribe({ type: 'fiatRates' });
204
- }
205
- async unsubscribeAll() {
206
- this.link.removeAllListeners('notification');
207
- await this.unsubscribeFiatRates();
208
- return this.unsubscribeBlocks();
209
- }
210
- pushTransaction(tx) {
211
- const data = typeof tx === 'string' ? { hex: tx } : tx;
212
- return this.link.pushTransaction(data);
213
- }
214
- disconnect() {
215
- this.link.removeAllListeners();
216
- this.link.disconnect().then(() => this.link.dispose());
217
- this.onBackendDisconnected();
218
- }
124
+ });
125
+ }
126
+ return this.initPromise;
127
+ }
128
+ getTransactions(txs) {
129
+ return Promise.all(txs.map(id => this.link.getTransaction(id)));
130
+ }
131
+ getTransactionHexes(txids) {
132
+ return Promise.all(txids.map(id => this.link.getTransactionHex(id)));
133
+ }
134
+ getCurrentFiatRates(params) {
135
+ return this.link.getCurrentFiatRates(params);
136
+ }
137
+ getFiatRatesForTimestamps(params) {
138
+ return this.link.getFiatRatesForTimestamps(params);
139
+ }
140
+ getAccountBalanceHistory(params) {
141
+ return this.link.getAccountBalanceHistory(params);
142
+ }
143
+ getNetworkInfo() {
144
+ return this.link.getInfo();
145
+ }
146
+ getAccountInfo(request) {
147
+ return this.link.getAccountInfo(request);
148
+ }
149
+ getAccountUtxo(descriptor) {
150
+ return this.link.getAccountUtxo(descriptor);
151
+ }
152
+ rpcCall(params) {
153
+ return this.link.rpcCall(params);
154
+ }
155
+ estimateFee(request) {
156
+ return this.link.estimateFee(request);
157
+ }
158
+ subscribeBlocks() {
159
+ if (this.link.listenerCount('block') === 0) {
160
+ this.link.on('block', block => {
161
+ this.postMessage((0, events_1.createBlockchainMessage)(events_1.BLOCKCHAIN.BLOCK, {
162
+ coin: this.coinInfo,
163
+ ...block
164
+ }));
165
+ });
166
+ }
167
+ return this.link.subscribe({
168
+ type: 'block'
169
+ });
170
+ }
171
+ subscribeAccounts(accounts) {
172
+ if (this.link.listenerCount('notification') === 0) {
173
+ this.link.on('notification', notification => {
174
+ this.postMessage((0, events_1.createBlockchainMessage)(events_1.BLOCKCHAIN.NOTIFICATION, {
175
+ coin: this.coinInfo,
176
+ notification
177
+ }));
178
+ });
179
+ }
180
+ return this.link.subscribe({
181
+ type: 'accounts',
182
+ accounts
183
+ });
184
+ }
185
+ subscribeFiatRates(_currency) {
186
+ if (this.link.listenerCount('fiatRates') === 0) {
187
+ this.link.on('fiatRates', ({
188
+ rates
189
+ }) => {
190
+ this.postMessage((0, events_1.createBlockchainMessage)(events_1.BLOCKCHAIN.FIAT_RATES_UPDATE, {
191
+ coin: this.coinInfo,
192
+ rates
193
+ }));
194
+ });
195
+ }
196
+ return this.link.subscribe({
197
+ type: 'fiatRates'
198
+ });
199
+ }
200
+ unsubscribeBlocks() {
201
+ this.link.removeAllListeners('block');
202
+ return this.link.unsubscribe({
203
+ type: 'block'
204
+ });
205
+ }
206
+ unsubscribeAccounts(accounts) {
207
+ return this.link.unsubscribe({
208
+ type: 'accounts',
209
+ accounts
210
+ });
211
+ }
212
+ unsubscribeFiatRates() {
213
+ this.link.removeAllListeners('fiatRates');
214
+ return this.link.unsubscribe({
215
+ type: 'fiatRates'
216
+ });
217
+ }
218
+ async unsubscribeAll() {
219
+ this.link.removeAllListeners('notification');
220
+ await this.unsubscribeFiatRates();
221
+ return this.unsubscribeBlocks();
222
+ }
223
+ pushTransaction(tx) {
224
+ const data = typeof tx === 'string' ? {
225
+ hex: tx
226
+ } : tx;
227
+ return this.link.pushTransaction(data);
228
+ }
229
+ disconnect() {
230
+ this.link.removeAllListeners();
231
+ this.link.disconnect().then(() => this.link.dispose());
232
+ this.onBackendDisconnected();
233
+ }
219
234
  }
220
235
  exports.Blockchain = Blockchain;
221
236
  //# sourceMappingURL=Blockchain.js.map
@@ -1,19 +1,31 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.dispose = exports.reconnectAllBackends = exports.initBlockchain = exports.isBackendSupported = exports.setCustomBackend = exports.findBackend = exports.Blockchain = void 0;
4
7
  const BackendManager_1 = require("./BackendManager");
5
8
  var Blockchain_1 = require("./Blockchain");
6
- Object.defineProperty(exports, "Blockchain", { enumerable: true, get: function () { return Blockchain_1.Blockchain; } });
9
+ Object.defineProperty(exports, "Blockchain", {
10
+ enumerable: true,
11
+ get: function () {
12
+ return Blockchain_1.Blockchain;
13
+ }
14
+ });
7
15
  const backends = new BackendManager_1.BackendManager();
8
16
  const findBackend = (coin, identity) => backends.get(coin, identity);
9
17
  exports.findBackend = findBackend;
10
18
  const setCustomBackend = (coinInfo, blockchainLink) => backends.setCustom(coinInfo.shortcut, blockchainLink?.url.length ? blockchainLink : coinInfo.blockchainLink);
11
19
  exports.setCustomBackend = setCustomBackend;
12
- const isBackendSupported = (coinInfo) => backends.isSupported(coinInfo);
20
+ const isBackendSupported = coinInfo => backends.isSupported(coinInfo);
13
21
  exports.isBackendSupported = isBackendSupported;
14
- const initBlockchain = (coinInfo, postMessage, identity) => backends.getOrConnect({ coinInfo, identity, postMessage });
22
+ const initBlockchain = (coinInfo, postMessage, identity) => backends.getOrConnect({
23
+ coinInfo,
24
+ identity,
25
+ postMessage
26
+ });
15
27
  exports.initBlockchain = initBlockchain;
16
- const reconnectAllBackends = (coinInfo) => backends.reconnectAll(coinInfo);
28
+ const reconnectAllBackends = coinInfo => backends.reconnectAll(coinInfo);
17
29
  exports.reconnectAllBackends = reconnectAllBackends;
18
30
  const dispose = () => backends.dispose();
19
31
  exports.dispose = dispose;
@@ -1,43 +1,50 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.BitcoinFeeLevels = void 0;
4
7
  const bigNumber_1 = require("@trezor/utils/lib/bigNumber");
5
8
  const MiscFeeLevels_1 = require("./MiscFeeLevels");
6
9
  const defaultFeeLevels_1 = require("../../data/defaultFeeLevels");
7
10
  class BitcoinFeeLevels extends MiscFeeLevels_1.MiscFeeLevels {
8
- coinInfo;
9
- longTermFeeRate;
10
- constructor(coinInfo) {
11
- super(coinInfo);
12
- this.coinInfo = coinInfo;
13
- this.longTermFeeRate = defaultFeeLevels_1.DEFAULT_BITCOIN_LONGTERM_FEE_RATE;
14
- }
15
- async load(blockchain) {
16
- try {
17
- const { minFee, maxFee } = this.coinInfo;
18
- const blocks = this.levels.map(level => level.blocks).filter(b => b > 0);
19
- const response = await blockchain.estimateFee({ blocks });
20
- response.forEach(({ feePerUnit: feePerKB }, index) => {
21
- const feePerB = new bigNumber_1.BigNumber(feePerKB).div(1000).toNumber();
22
- if (isNaN(feePerB) || feePerB < 0)
23
- return;
24
- const trimmedFeePerUnit = Math.min(maxFee, Math.max(minFee, feePerB));
25
- this.levels[index].feePerUnit = trimmedFeePerUnit.toString();
26
- });
27
- this.wasFetchedSuccessfully = true;
28
- }
29
- catch {
30
- }
31
- return this.levels;
32
- }
33
- updateBitcoinCustomFee(feePerUnit) {
34
- this.levels = this.levels.filter(l => l.label !== 'custom');
35
- this.levels.push({
36
- label: 'custom',
37
- feePerUnit,
38
- blocks: -1,
39
- });
40
- }
11
+ coinInfo;
12
+ longTermFeeRate;
13
+ constructor(coinInfo) {
14
+ super(coinInfo);
15
+ this.coinInfo = coinInfo;
16
+ this.longTermFeeRate = defaultFeeLevels_1.DEFAULT_BITCOIN_LONGTERM_FEE_RATE;
17
+ }
18
+ async load(blockchain) {
19
+ try {
20
+ const {
21
+ minFee,
22
+ maxFee
23
+ } = this.coinInfo;
24
+ const blocks = this.levels.map(level => level.blocks).filter(b => b > 0);
25
+ const response = await blockchain.estimateFee({
26
+ blocks
27
+ });
28
+ response.forEach(({
29
+ feePerUnit: feePerKB
30
+ }, index) => {
31
+ const feePerB = new bigNumber_1.BigNumber(feePerKB).div(1000).toNumber();
32
+ if (isNaN(feePerB) || feePerB < 0) return;
33
+ const trimmedFeePerUnit = Math.min(maxFee, Math.max(minFee, feePerB));
34
+ this.levels[index].feePerUnit = trimmedFeePerUnit.toString();
35
+ });
36
+ this.wasFetchedSuccessfully = true;
37
+ } catch {}
38
+ return this.levels;
39
+ }
40
+ updateBitcoinCustomFee(feePerUnit) {
41
+ this.levels = this.levels.filter(l => l.label !== 'custom');
42
+ this.levels.push({
43
+ label: 'custom',
44
+ feePerUnit,
45
+ blocks: -1
46
+ });
47
+ }
41
48
  }
42
49
  exports.BitcoinFeeLevels = BitcoinFeeLevels;
43
50
  //# sourceMappingURL=BitcoinFeeLevels.js.map