@trezor/connect 9.6.5-beta.2 → 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 (415) hide show
  1. package/CHANGELOG.md +43 -15
  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 +6 -4
  75. package/lib/api/ethereum/api/ethereumSignTypedData.js +183 -171
  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.d.ts +11 -0
  82. package/lib/api/evoluGetDelegatedIdentityKey.js +41 -0
  83. package/lib/api/evoluGetNode.js +24 -17
  84. package/lib/api/evoluSignRegistrationRequest.d.ts +12 -0
  85. package/lib/api/evoluSignRegistrationRequest.js +35 -0
  86. package/lib/api/firmware/calculateFirmwareHash.js +44 -32
  87. package/lib/api/firmware/getBinary.js +30 -22
  88. package/lib/api/firmware/index.js +46 -8
  89. package/lib/api/firmware/modifyFirmware.js +13 -12
  90. package/lib/api/firmware/parseFirmwareHeaders.js +29 -30
  91. package/lib/api/firmware/uploadFirmware.js +84 -67
  92. package/lib/api/firmware/verifyEntropy.js +88 -83
  93. package/lib/api/getAccountDescriptor.js +118 -120
  94. package/lib/api/getAccountInfo.d.ts +14 -14
  95. package/lib/api/getAccountInfo.js +316 -287
  96. package/lib/api/getAddress.js +128 -118
  97. package/lib/api/getCoinInfo.js +22 -17
  98. package/lib/api/getDeviceState.js +16 -10
  99. package/lib/api/getFeatures.d.ts +5 -1
  100. package/lib/api/getFeatures.js +15 -12
  101. package/lib/api/getFirmwareHash.js +23 -18
  102. package/lib/api/getNonce.js +12 -9
  103. package/lib/api/getOwnershipId.js +57 -51
  104. package/lib/api/getOwnershipProof.js +66 -60
  105. package/lib/api/getPublicKey.js +72 -66
  106. package/lib/api/getSettings.js +12 -9
  107. package/lib/api/index.d.ts +2 -0
  108. package/lib/api/index.js +350 -58
  109. package/lib/api/loadDevice.js +40 -35
  110. package/lib/api/monero/api/index.js +28 -5
  111. package/lib/api/monero/api/moneroGetAddress.js +108 -82
  112. package/lib/api/monero/api/moneroGetWatchKey.js +37 -32
  113. package/lib/api/monero/api/moneroKeyImageSync.js +111 -107
  114. package/lib/api/monero/api/moneroSignTransaction.js +173 -185
  115. package/lib/api/nem/api/index.js +16 -3
  116. package/lib/api/nem/api/nemGetAddress.js +107 -102
  117. package/lib/api/nem/api/nemSignTransaction.js +25 -20
  118. package/lib/api/nem/nemSignTx.js +128 -125
  119. package/lib/api/pushTransaction.js +31 -27
  120. package/lib/api/recoveryDevice.js +44 -39
  121. package/lib/api/requestLogin.d.ts +0 -1
  122. package/lib/api/requestLogin.js +47 -52
  123. package/lib/api/resetDevice.js +100 -90
  124. package/lib/api/ripple/api/index.js +16 -3
  125. package/lib/api/ripple/api/rippleGetAddress.js +92 -88
  126. package/lib/api/ripple/api/rippleSignTransaction.js +44 -34
  127. package/lib/api/setBrightness.js +21 -16
  128. package/lib/api/setBusy.js +27 -20
  129. package/lib/api/setProxy.js +22 -15
  130. package/lib/api/showDeviceTutorial.js +18 -15
  131. package/lib/api/signMessage.js +50 -46
  132. package/lib/api/signTransaction.js +325 -238
  133. package/lib/api/solana/additionalInfo.js +17 -14
  134. package/lib/api/solana/api/index.js +28 -5
  135. package/lib/api/solana/api/solanaComposeTransaction.js +46 -50
  136. package/lib/api/solana/api/solanaGetAddress.js +92 -90
  137. package/lib/api/solana/api/solanaGetPublicKey.js +56 -52
  138. package/lib/api/solana/api/solanaSignTransaction.js +175 -168
  139. package/lib/api/solana/solanaDefinitions.js +32 -25
  140. package/lib/api/solana/solanaUtils.d.ts +2 -2
  141. package/lib/api/solana/solanaUtils.js +231 -177
  142. package/lib/api/stellar/api/index.js +16 -3
  143. package/lib/api/stellar/api/stellarGetAddress.js +92 -88
  144. package/lib/api/stellar/api/stellarSignTransaction.js +51 -44
  145. package/lib/api/stellar/stellarSignTx.js +184 -179
  146. package/lib/api/tezos/api/index.js +22 -4
  147. package/lib/api/tezos/api/tezosGetAddress.js +92 -88
  148. package/lib/api/tezos/api/tezosGetPublicKey.js +55 -51
  149. package/lib/api/tezos/api/tezosSignTransaction.js +23 -18
  150. package/lib/api/tezos/tezosSignTx.js +183 -169
  151. package/lib/api/thpGetCredentials.js +23 -20
  152. package/lib/api/thpRemoveCredentials.js +28 -21
  153. package/lib/api/unlockPath.js +28 -21
  154. package/lib/api/verifyMessage.js +35 -33
  155. package/lib/api/wipeDevice.js +39 -34
  156. package/lib/backend/BackendManager.js +127 -107
  157. package/lib/backend/Blockchain.d.ts +1 -1
  158. package/lib/backend/Blockchain.js +220 -205
  159. package/lib/backend/BlockchainLink.js +17 -5
  160. package/lib/backend/fees/BitcoinFeeLevels.js +41 -34
  161. package/lib/backend/fees/EthereumFeeLevels.js +51 -51
  162. package/lib/backend/fees/MiscFeeLevels.js +25 -24
  163. package/lib/backend/fees/index.js +28 -21
  164. package/lib/constants/cardano.js +11 -8
  165. package/lib/constants/errors.js +72 -65
  166. package/lib/constants/firmware.js +5 -5
  167. package/lib/constants/index.js +16 -3
  168. package/lib/constants/nem.js +19 -16
  169. package/lib/constants/network.js +15 -22
  170. package/lib/constants/utxo.js +4 -1
  171. package/lib/core/AbstractMethod.d.ts +1 -1
  172. package/lib/core/AbstractMethod.js +248 -224
  173. package/lib/core/index.js +936 -775
  174. package/lib/core/method.js +19 -16
  175. package/lib/core/method.native.js +28 -23
  176. package/lib/core/onCallFirmwareUpdate.js +368 -299
  177. package/lib/data/DataManager.js +85 -77
  178. package/lib/data/analyticsInfo.js +35 -29
  179. package/lib/data/coinInfo.js +154 -156
  180. package/lib/data/config.d.ts +1 -1
  181. package/lib/data/config.js +362 -326
  182. package/lib/data/connectSettings.js +131 -144
  183. package/lib/data/defaultFeeLevels.js +154 -108
  184. package/lib/data/firmwareInfo.d.ts +1 -0
  185. package/lib/data/firmwareInfo.js +407 -377
  186. package/lib/data/thpSettings.js +36 -35
  187. package/lib/data/udevInfo.js +24 -24
  188. package/lib/data/version.d.ts +1 -1
  189. package/lib/data/version.js +6 -5
  190. package/lib/device/Device.d.ts +10 -7
  191. package/lib/device/Device.js +731 -749
  192. package/lib/device/DeviceCommands.js +226 -194
  193. package/lib/device/DeviceCurrentSession.d.ts +427 -337
  194. package/lib/device/DeviceCurrentSession.js +235 -236
  195. package/lib/device/DeviceList.d.ts +2 -0
  196. package/lib/device/DeviceList.js +219 -181
  197. package/lib/device/StateStorage.js +32 -29
  198. package/lib/device/TransportList.d.ts +1 -1
  199. package/lib/device/TransportList.js +37 -36
  200. package/lib/device/TransportManager.js +136 -140
  201. package/lib/device/calculateRevisionForDevice.js +20 -14
  202. package/lib/device/checkFirmwareRevision.js +66 -53
  203. package/lib/device/resolveDescriptorForTaproot.js +26 -16
  204. package/lib/device/thp/handshake.js +95 -82
  205. package/lib/device/thp/index.js +53 -38
  206. package/lib/device/thp/pairing.js +209 -199
  207. package/lib/device/thp/session.js +27 -19
  208. package/lib/device/thp/thpCall.js +53 -43
  209. package/lib/device/workflow/checkFirmwareHash.js +77 -67
  210. package/lib/device/workflow/checkFirmwareHashWithRetries.js +32 -29
  211. package/lib/device/workflow/handshake.js +50 -41
  212. package/lib/device/workflow/index.js +10 -2
  213. package/lib/device/workflow/trezorPushNotification.js +68 -63
  214. package/lib/device/workflow/validateState.js +156 -123
  215. package/lib/events/blockchain.js +13 -10
  216. package/lib/events/call.d.ts +6 -4
  217. package/lib/events/call.js +14 -13
  218. package/lib/events/core.js +24 -21
  219. package/lib/events/device.d.ts +2 -2
  220. package/lib/events/device.js +32 -19
  221. package/lib/events/iframe.js +13 -10
  222. package/lib/events/index.d.ts +0 -1
  223. package/lib/events/index.js +6 -3
  224. package/lib/events/popup.js +20 -17
  225. package/lib/events/transport.d.ts +2 -2
  226. package/lib/events/transport.js +16 -11
  227. package/lib/events/ui-promise.js +4 -1
  228. package/lib/events/ui-request.d.ts +0 -4
  229. package/lib/events/ui-request.js +48 -46
  230. package/lib/events/ui-response.d.ts +2 -2
  231. package/lib/events/ui-response.js +20 -17
  232. package/lib/events/webextension.js +9 -6
  233. package/lib/exports.js +10 -2
  234. package/lib/factory.d.ts +3 -2
  235. package/lib/factory.js +34 -141
  236. package/lib/impl/core-in-module.d.ts +1 -8
  237. package/lib/impl/core-in-module.js +186 -211
  238. package/lib/impl/dynamic.d.ts +0 -1
  239. package/lib/impl/dynamic.js +108 -97
  240. package/lib/index-browser.d.ts +1 -0
  241. package/lib/index-browser.js +18 -16
  242. package/lib/index.d.ts +2 -0
  243. package/lib/index.js +144 -148
  244. package/lib/tsconfig.lib.tsbuildinfo +1 -1
  245. package/lib/types/account.js +4 -1
  246. package/lib/types/api/applyFlags.js +4 -1
  247. package/lib/types/api/applySettings.d.ts +3 -3
  248. package/lib/types/api/applySettings.js +7 -7
  249. package/lib/types/api/authenticateDevice.js +7 -4
  250. package/lib/types/api/authorizeCoinjoin.js +13 -10
  251. package/lib/types/api/backupDevice.js +4 -1
  252. package/lib/types/api/bitcoin/index.d.ts +5 -2
  253. package/lib/types/api/bitcoin/index.js +14 -11
  254. package/lib/types/api/bleUnpair.js +4 -1
  255. package/lib/types/api/blockchainDisconnect.js +4 -1
  256. package/lib/types/api/blockchainEstimateFee.js +4 -1
  257. package/lib/types/api/blockchainEvmRpcCall.js +4 -1
  258. package/lib/types/api/blockchainGetAccountBalanceHistory.js +4 -1
  259. package/lib/types/api/blockchainGetCurrentFiatRates.js +4 -1
  260. package/lib/types/api/blockchainGetFiatRatesForTimestamps.js +4 -1
  261. package/lib/types/api/blockchainGetInfo.js +4 -1
  262. package/lib/types/api/blockchainGetTransactions.js +4 -1
  263. package/lib/types/api/blockchainSetCustomBackend.js +4 -1
  264. package/lib/types/api/blockchainSubscribe.js +4 -1
  265. package/lib/types/api/blockchainSubscribeFiatRates.js +4 -1
  266. package/lib/types/api/blockchainUnsubscribe.js +4 -1
  267. package/lib/types/api/blockchainUnsubscribeFiatRates.js +4 -1
  268. package/lib/types/api/cancel.js +4 -1
  269. package/lib/types/api/cancelCoinjoinAuthorization.js +5 -2
  270. package/lib/types/api/cardano/index.d.ts +4 -4
  271. package/lib/types/api/cardano/index.js +173 -180
  272. package/lib/types/api/cardanoComposeTransaction.js +76 -65
  273. package/lib/types/api/cardanoGetAddress.js +4 -1
  274. package/lib/types/api/cardanoGetNativeScriptHash.js +4 -1
  275. package/lib/types/api/cardanoGetPublicKey.js +4 -1
  276. package/lib/types/api/cardanoSignMessage.js +4 -1
  277. package/lib/types/api/cardanoSignTransaction.js +4 -1
  278. package/lib/types/api/changeLanguage.d.ts +1 -1
  279. package/lib/types/api/changeLanguage.js +13 -13
  280. package/lib/types/api/changePin.js +4 -1
  281. package/lib/types/api/changeWipeCode.js +4 -1
  282. package/lib/types/api/cipherKeyValue.d.ts +2 -2
  283. package/lib/types/api/cipherKeyValue.js +11 -8
  284. package/lib/types/api/composeTransaction.js +4 -1
  285. package/lib/types/api/device.js +1 -2
  286. package/lib/types/api/disableWebUSB.js +4 -1
  287. package/lib/types/api/discoverAccounts.js +204 -55
  288. package/lib/types/api/dispose.js +4 -1
  289. package/lib/types/api/eos/index.d.ts +3 -3
  290. package/lib/types/api/eos/index.js +106 -162
  291. package/lib/types/api/eosGetPublicKey.js +4 -1
  292. package/lib/types/api/eosSignTransaction.js +4 -1
  293. package/lib/types/api/ethereum/index.d.ts +11 -7
  294. package/lib/types/api/ethereum/index.js +70 -65
  295. package/lib/types/api/ethereumGetAddress.js +4 -1
  296. package/lib/types/api/ethereumGetPublicKey.js +4 -1
  297. package/lib/types/api/ethereumSignMessage.js +4 -1
  298. package/lib/types/api/ethereumSignTransaction.js +4 -1
  299. package/lib/types/api/ethereumSignTypedData.js +4 -1
  300. package/lib/types/api/ethereumVerifyMessage.js +4 -1
  301. package/lib/types/api/evoluGetDelegatedIdentityKey.d.ts +9 -0
  302. package/lib/types/api/evoluGetDelegatedIdentityKey.js +6 -0
  303. package/lib/types/api/evoluGetNode.js +4 -1
  304. package/lib/types/api/evoluSignRegistrationRequest.d.ts +4 -0
  305. package/lib/types/api/evoluSignRegistrationRequest.js +6 -0
  306. package/lib/types/api/firmwareUpdate.d.ts +1 -1
  307. package/lib/types/api/firmwareUpdate.js +12 -12
  308. package/lib/types/api/getAccountDescriptor.js +8 -5
  309. package/lib/types/api/getAccountInfo.js +4 -1
  310. package/lib/types/api/getAddress.js +11 -11
  311. package/lib/types/api/getCoinInfo.js +4 -1
  312. package/lib/types/api/getDeviceState.js +4 -1
  313. package/lib/types/api/getFeatures.js +4 -1
  314. package/lib/types/api/getFirmwareHash.js +4 -1
  315. package/lib/types/api/getNonce.d.ts +1 -1
  316. package/lib/types/api/getNonce.js +4 -1
  317. package/lib/types/api/getOwnershipId.js +8 -5
  318. package/lib/types/api/getOwnershipProof.js +14 -9
  319. package/lib/types/api/getPublicKey.js +25 -28
  320. package/lib/types/api/getSettings.js +4 -1
  321. package/lib/types/api/index.d.ts +4 -0
  322. package/lib/types/api/index.js +4 -1
  323. package/lib/types/api/init.js +4 -1
  324. package/lib/types/api/loadDevice.js +4 -1
  325. package/lib/types/api/manifest.js +4 -1
  326. package/lib/types/api/monero/index.js +117 -114
  327. package/lib/types/api/moneroGetAddress.js +4 -1
  328. package/lib/types/api/moneroGetWatchKey.js +4 -1
  329. package/lib/types/api/moneroKeyImageSync.js +4 -1
  330. package/lib/types/api/moneroSignTransaction.js +4 -1
  331. package/lib/types/api/nem/index.d.ts +7 -7
  332. package/lib/types/api/nem/index.js +78 -112
  333. package/lib/types/api/nemGetAddress.js +7 -7
  334. package/lib/types/api/nemSignTransaction.js +4 -1
  335. package/lib/types/api/off.js +4 -1
  336. package/lib/types/api/on.js +4 -1
  337. package/lib/types/api/pushTransaction.js +10 -10
  338. package/lib/types/api/recoveryDevice.d.ts +1 -1
  339. package/lib/types/api/recoveryDevice.js +7 -7
  340. package/lib/types/api/removeAllListeners.js +4 -1
  341. package/lib/types/api/renderWebUSBButton.js +4 -1
  342. package/lib/types/api/requestLogin.d.ts +4 -24
  343. package/lib/types/api/requestLogin.js +11 -13
  344. package/lib/types/api/requestWebUSBDevice.js +4 -1
  345. package/lib/types/api/resetDevice.js +4 -1
  346. package/lib/types/api/ripple/index.js +17 -14
  347. package/lib/types/api/rippleGetAddress.js +4 -1
  348. package/lib/types/api/rippleSignTransaction.js +4 -1
  349. package/lib/types/api/setBrightness.js +4 -1
  350. package/lib/types/api/setBusy.js +4 -1
  351. package/lib/types/api/setProxy.js +4 -1
  352. package/lib/types/api/setTransports.js +4 -1
  353. package/lib/types/api/showDeviceTutorial.js +4 -1
  354. package/lib/types/api/signMessage.js +4 -1
  355. package/lib/types/api/signTransaction.js +4 -1
  356. package/lib/types/api/solana/index.js +55 -56
  357. package/lib/types/api/solanaComposeTransaction.js +4 -1
  358. package/lib/types/api/solanaGetAddress.js +4 -1
  359. package/lib/types/api/solanaGetPublicKey.js +4 -1
  360. package/lib/types/api/solanaSignTransaction.js +4 -1
  361. package/lib/types/api/stellar/index.d.ts +146 -146
  362. package/lib/types/api/stellar/index.js +151 -221
  363. package/lib/types/api/stellarGetAddress.js +4 -1
  364. package/lib/types/api/stellarSignTransaction.js +4 -1
  365. package/lib/types/api/tezos/index.js +46 -43
  366. package/lib/types/api/tezosGetAddress.js +4 -1
  367. package/lib/types/api/tezosGetPublicKey.js +4 -1
  368. package/lib/types/api/tezosSignTransaction.js +4 -1
  369. package/lib/types/api/thpGetCredentials.js +4 -1
  370. package/lib/types/api/thpRemoveCredentials.js +4 -1
  371. package/lib/types/api/uiResponse.js +4 -1
  372. package/lib/types/api/unlockPath.js +6 -3
  373. package/lib/types/api/verifyMessage.js +4 -1
  374. package/lib/types/api/wipeDevice.js +4 -1
  375. package/lib/types/coinInfo.js +62 -77
  376. package/lib/types/device.d.ts +11 -2
  377. package/lib/types/device.js +9 -4
  378. package/lib/types/fees.js +31 -37
  379. package/lib/types/firmware.js +4 -1
  380. package/lib/types/index.d.ts +1 -0
  381. package/lib/types/index.js +18 -3
  382. package/lib/types/params.js +25 -16
  383. package/lib/types/settings.js +4 -1
  384. package/lib/types/utils.js +4 -1
  385. package/lib/types/workflow.js +4 -1
  386. package/lib/utils/accountUtils.js +76 -81
  387. package/lib/utils/addressUtils.js +21 -21
  388. package/lib/utils/assetUtils.js +29 -26
  389. package/lib/utils/assets-browser.js +19 -13
  390. package/lib/utils/assets.js +10 -9
  391. package/lib/utils/assets.native.js +24 -23
  392. package/lib/utils/assetsTypes.js +4 -1
  393. package/lib/utils/debug.js +18 -13
  394. package/lib/utils/deviceFeaturesUtils.js +105 -127
  395. package/lib/utils/ethereumUtils.js +9 -6
  396. package/lib/utils/firmwareReleaseConfigUtils.js +69 -57
  397. package/lib/utils/firmwareUtils.js +45 -57
  398. package/lib/utils/formatUtils.d.ts +0 -1
  399. package/lib/utils/formatUtils.js +63 -62
  400. package/lib/utils/hdnodeUtils.d.ts +0 -1
  401. package/lib/utils/hdnodeUtils.js +51 -57
  402. package/lib/utils/interactionTimeout.js +26 -23
  403. package/lib/utils/pathUtils.js +132 -148
  404. package/lib/utils/popupPromiseManager.js +23 -14
  405. package/lib/utils/proxy-event-emitter.js +63 -60
  406. package/lib/utils/uiPromiseManager.js +55 -43
  407. package/lib/utils/urlUtils.js +20 -26
  408. package/lib/utils/versionCheck.js +10 -10
  409. package/lib/workers/workers-browser.d.ts +5 -5
  410. package/lib/workers/workers-browser.js +5 -2
  411. package/lib/workers/workers.d.ts +1 -1
  412. package/lib/workers/workers.js +49 -38
  413. package/lib/workers/workers.native.d.ts +5 -5
  414. package/lib/workers/workers.native.js +4 -1
  415. package/package.json +26 -23
@@ -1,154 +1,150 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.TransportManager = void 0;
4
7
  const transport_1 = require("@trezor/transport");
5
8
  const utils_1 = require("@trezor/utils");
6
9
  const createOverrideLock = () => {
7
- let promise;
8
- let sequence = 0;
9
- let abort;
10
- let message;
11
- const override = async (abortMessage, action) => {
12
- message = abortMessage;
13
- const seq = ++sequence;
14
- while (promise) {
15
- abort?.abort(new Error(abortMessage));
16
- await promise.catch(() => { });
17
- }
18
- if (seq !== sequence)
19
- return Promise.reject(new Error(message));
20
- abort = new AbortController();
21
- promise = action(abort.signal).finally(() => {
22
- abort = undefined;
23
- promise = undefined;
24
- });
25
- return promise;
26
- };
27
- const getPending = () => promise;
28
- return { override, getPending };
10
+ let promise;
11
+ let sequence = 0;
12
+ let abort;
13
+ let message;
14
+ const override = async (abortMessage, action) => {
15
+ message = abortMessage;
16
+ const seq = ++sequence;
17
+ while (promise) {
18
+ abort?.abort(new Error(abortMessage));
19
+ await promise.catch(() => {});
20
+ }
21
+ if (seq !== sequence) return Promise.reject(new Error(message));
22
+ abort = new AbortController();
23
+ promise = action(abort.signal).finally(() => {
24
+ abort = undefined;
25
+ promise = undefined;
26
+ });
27
+ return promise;
28
+ };
29
+ const getPending = () => promise;
30
+ return {
31
+ override,
32
+ getPending
33
+ };
29
34
  };
30
35
  class TransportManager extends utils_1.TypedEmitter {
31
- lock = createOverrideLock();
32
- transports = [];
33
- activeTransport;
34
- transportReconnect = false;
35
- upgradeTimeout;
36
- startTransport;
37
- constructor(startTransport) {
38
- super();
39
- this.startTransport = startTransport;
40
- }
41
- pending() {
42
- return this.lock.getPending();
43
- }
44
- get() {
45
- return this.activeTransport;
46
- }
47
- init({ transports, transportReconnect = false, pendingTransportEvent = false }) {
48
- this.transports = transports;
49
- this.transportReconnect = transportReconnect;
50
- return this.lock.override('New init', signal => this.createInitPromise(pendingTransportEvent, signal));
51
- }
52
- dispose() {
53
- this.removeAllListeners();
54
- return this.lock.override('Disposing', () => {
55
- const { activeTransport } = this;
56
- if (activeTransport) {
57
- clearTimeout(this.upgradeTimeout);
58
- delete this.activeTransport;
59
- activeTransport.stop();
60
- }
61
- return Promise.resolve();
62
- });
63
- }
64
- async selectTransport([transport, ...rest], signal) {
65
- if (signal.aborted)
66
- throw new Error(signal.reason);
67
- if (transport === this.activeTransport)
68
- return transport;
69
- const result = await transport.init({ signal });
70
- if (result.success)
71
- return transport;
72
- else if (rest.length)
73
- return this.selectTransport(rest, signal);
74
- else
75
- throw new Error(result.error);
76
- }
77
- scheduleUpgradeCheck(pendingTransportEvent) {
36
+ lock = createOverrideLock();
37
+ transports = [];
38
+ activeTransport;
39
+ transportReconnect = false;
40
+ upgradeTimeout;
41
+ startTransport;
42
+ constructor(startTransport) {
43
+ super();
44
+ this.startTransport = startTransport;
45
+ }
46
+ pending() {
47
+ return this.lock.getPending();
48
+ }
49
+ get() {
50
+ return this.activeTransport;
51
+ }
52
+ init({
53
+ transports,
54
+ transportReconnect = false,
55
+ pendingTransportEvent = false
56
+ }) {
57
+ this.transports = transports;
58
+ this.transportReconnect = transportReconnect;
59
+ return this.lock.override('New init', signal => this.createInitPromise(pendingTransportEvent, signal));
60
+ }
61
+ dispose() {
62
+ this.removeAllListeners();
63
+ return this.lock.override('Disposing', () => {
64
+ const {
65
+ activeTransport
66
+ } = this;
67
+ if (activeTransport) {
78
68
  clearTimeout(this.upgradeTimeout);
79
- this.upgradeTimeout = setTimeout(async () => {
80
- if (!this.activeTransport || this.activeTransport === this.transports[0])
81
- return;
82
- for (const t of this.transports) {
83
- if (t === this.activeTransport)
84
- break;
85
- if (await t.ping()) {
86
- this.lock
87
- .override('Upgrading', signal => this.createInitPromise(pendingTransportEvent, signal))
88
- .catch(() => { });
89
- return;
90
- }
91
- }
92
- this.scheduleUpgradeCheck(pendingTransportEvent);
93
- }, 1000);
94
- }
95
- async createInitPromise(pendingTransportEvent, abortSignal) {
96
- try {
97
- const { transports, activeTransport } = this;
98
- const transport = transports.length
99
- ? await this.selectTransport(transports, abortSignal)
100
- : undefined;
101
- if (activeTransport !== transport) {
102
- if (activeTransport) {
103
- clearTimeout(this.upgradeTimeout);
104
- delete this.activeTransport;
105
- activeTransport.stop();
106
- }
107
- if (transport) {
108
- try {
109
- await this.startTransport(transport, pendingTransportEvent, abortSignal);
110
- }
111
- catch (err) {
112
- transport.stop();
113
- throw err;
114
- }
115
- transport.on(transport_1.TRANSPORT.ERROR, error => {
116
- this.emit(transport_1.TRANSPORT.ERROR, error);
117
- clearTimeout(this.upgradeTimeout);
118
- this.lock
119
- .override('Transport error', async (signal) => {
120
- delete this.activeTransport;
121
- transport.stop();
122
- if (this.transportReconnect) {
123
- await (0, utils_1.resolveAfter)(1000, signal);
124
- await this.createInitPromise(pendingTransportEvent, signal);
125
- }
126
- })
127
- .catch(() => { });
128
- });
129
- this.activeTransport = transport;
130
- this.emit(transport_1.TRANSPORT.START, transport);
131
- }
132
- else {
133
- this.emit(transport_1.TRANSPORT.ERROR, 'Transport disabled');
134
- }
135
- }
136
- if (transport && transport !== transports[0]) {
137
- this.scheduleUpgradeCheck(pendingTransportEvent);
138
- }
69
+ delete this.activeTransport;
70
+ activeTransport.stop();
71
+ }
72
+ return Promise.resolve();
73
+ });
74
+ }
75
+ async selectTransport([transport, ...rest], signal) {
76
+ if (signal.aborted) throw new Error(signal.reason);
77
+ if (transport === this.activeTransport) return transport;
78
+ const result = await transport.init({
79
+ signal
80
+ });
81
+ if (result.success) return transport;else if (rest.length) return this.selectTransport(rest, signal);else throw new Error(result.error);
82
+ }
83
+ scheduleUpgradeCheck(pendingTransportEvent) {
84
+ clearTimeout(this.upgradeTimeout);
85
+ this.upgradeTimeout = setTimeout(async () => {
86
+ if (!this.activeTransport || this.activeTransport === this.transports[0]) return;
87
+ for (const t of this.transports) {
88
+ if (t === this.activeTransport) break;
89
+ if (await t.ping()) {
90
+ this.lock.override('Upgrading', signal => this.createInitPromise(pendingTransportEvent, signal)).catch(() => {});
91
+ return;
92
+ }
93
+ }
94
+ this.scheduleUpgradeCheck(pendingTransportEvent);
95
+ }, 1000);
96
+ }
97
+ async createInitPromise(pendingTransportEvent, abortSignal) {
98
+ try {
99
+ const {
100
+ transports,
101
+ activeTransport
102
+ } = this;
103
+ const transport = transports.length ? await this.selectTransport(transports, abortSignal) : undefined;
104
+ if (activeTransport !== transport) {
105
+ if (activeTransport) {
106
+ clearTimeout(this.upgradeTimeout);
107
+ delete this.activeTransport;
108
+ activeTransport.stop();
139
109
  }
140
- catch (error) {
141
- this.emit(transport_1.TRANSPORT.ERROR, error?.message);
142
- if (this.transportReconnect && !abortSignal.aborted) {
143
- this.lock
144
- .override('Reconnecting', async (signal) => {
145
- await (0, utils_1.resolveAfter)(1000, signal);
146
- await this.createInitPromise(pendingTransportEvent, signal);
147
- })
148
- .catch(() => { });
149
- }
110
+ if (transport) {
111
+ try {
112
+ await this.startTransport(transport, pendingTransportEvent, abortSignal);
113
+ } catch (err) {
114
+ transport.stop();
115
+ throw err;
116
+ }
117
+ transport.on(transport_1.TRANSPORT.ERROR, error => {
118
+ this.emit(transport_1.TRANSPORT.ERROR, error);
119
+ clearTimeout(this.upgradeTimeout);
120
+ this.lock.override('Transport error', async signal => {
121
+ delete this.activeTransport;
122
+ transport.stop();
123
+ if (this.transportReconnect) {
124
+ await (0, utils_1.resolveAfter)(1000, signal);
125
+ await this.createInitPromise(pendingTransportEvent, signal);
126
+ }
127
+ }).catch(() => {});
128
+ });
129
+ this.activeTransport = transport;
130
+ this.emit(transport_1.TRANSPORT.START, transport);
131
+ } else {
132
+ this.emit(transport_1.TRANSPORT.ERROR, 'Transport disabled');
150
133
  }
134
+ }
135
+ if (transport && transport !== transports[0]) {
136
+ this.scheduleUpgradeCheck(pendingTransportEvent);
137
+ }
138
+ } catch (error) {
139
+ this.emit(transport_1.TRANSPORT.ERROR, error?.message);
140
+ if (this.transportReconnect && !abortSignal.aborted) {
141
+ this.lock.override('Reconnecting', async signal => {
142
+ await (0, utils_1.resolveAfter)(1000, signal);
143
+ await this.createInitPromise(pendingTransportEvent, signal);
144
+ }).catch(() => {});
145
+ }
151
146
  }
147
+ }
152
148
  }
153
149
  exports.TransportManager = TransportManager;
154
150
  //# sourceMappingURL=TransportManager.js.map
@@ -1,21 +1,27 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.calculateRevisionForDevice = void 0;
4
7
  const versionUtils_1 = require("@trezor/utils/lib/versionUtils");
5
- const calculateRevisionForDevice = ({ commitRevision, version, }) => {
6
- if ((0, versionUtils_1.isNewer)(version, '2.4.0')) {
7
- return commitRevision;
8
- }
9
- if ((0, versionUtils_1.isNewer)(version, '2.2.0')) {
10
- return commitRevision.slice(0, 9);
11
- }
12
- if ((0, versionUtils_1.isNewer)(version, '2.1.8')) {
13
- return commitRevision;
14
- }
15
- if ((0, versionUtils_1.isNewer)(version, '2.0.0')) {
16
- return commitRevision.slice(0, 8);
17
- }
8
+ const calculateRevisionForDevice = ({
9
+ commitRevision,
10
+ version
11
+ }) => {
12
+ if ((0, versionUtils_1.isNewer)(version, '2.4.0')) {
18
13
  return commitRevision;
14
+ }
15
+ if ((0, versionUtils_1.isNewer)(version, '2.2.0')) {
16
+ return commitRevision.slice(0, 9);
17
+ }
18
+ if ((0, versionUtils_1.isNewer)(version, '2.1.8')) {
19
+ return commitRevision;
20
+ }
21
+ if ((0, versionUtils_1.isNewer)(version, '2.0.0')) {
22
+ return commitRevision.slice(0, 8);
23
+ }
24
+ return commitRevision;
19
25
  };
20
26
  exports.calculateRevisionForDevice = calculateRevisionForDevice;
21
27
  //# sourceMappingURL=calculateRevisionForDevice.js.map
@@ -1,70 +1,83 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.checkFirmwareRevision = void 0;
4
7
  const utils_1 = require("@trezor/utils");
5
8
  const calculateRevisionForDevice_1 = require("./calculateRevisionForDevice");
6
9
  const firmwareInfo_1 = require("../data/firmwareInfo");
7
10
  const assetUtils_1 = require("../utils/assetUtils");
8
- const isNotFoundError = (e) => e instanceof assetUtils_1.HttpRequestError && e.response.status === 404;
9
- const isNodeJSOfflineError = (e) => ['FetchError', 'AbortError'].includes(e.name);
10
- const isReactNativeOfflineError = (e) => e.name === 'TypeError' && e.message.includes('Network request failed');
11
- const isAbortControllerTimeout = (e) => e.name === 'AbortError' ||
12
- (e.name === 'TimeoutError' && e.message.includes('signal timed out'));
13
- const isOfflineError = (e) => {
14
- if (!(e instanceof Error))
15
- return false;
16
- return isNodeJSOfflineError(e) || isReactNativeOfflineError(e) || isAbortControllerTimeout(e);
11
+ const isNotFoundError = e => e instanceof assetUtils_1.HttpRequestError && e.response.status === 404;
12
+ const isNodeJSOfflineError = e => ['FetchError', 'AbortError'].includes(e.name);
13
+ const isReactNativeOfflineError = e => e.name === 'TypeError' && e.message.includes('Network request failed');
14
+ const isAbortControllerTimeout = e => e.message.includes('Aborted') || e.name === 'AbortError' || e.name === 'TimeoutError' && e.message.includes('signal timed out');
15
+ const isOfflineError = e => {
16
+ if (!(e instanceof Error)) return false;
17
+ return isNodeJSOfflineError(e) || isReactNativeOfflineError(e) || isAbortControllerTimeout(e);
17
18
  };
18
19
  const failFirmwareRevisionCheck = (error, errorPayload) => ({
19
- success: false,
20
- error,
21
- ...(errorPayload ? { errorPayload } : null),
20
+ success: false,
21
+ error,
22
+ ...(errorPayload ? {
23
+ errorPayload
24
+ } : null)
22
25
  });
23
- const doRevisionsMatch = ({ deviceRevision, expectedCommitRevision, firmwareVersion, }) => {
24
- if (deviceRevision === null) {
25
- return false;
26
- }
27
- const adjustedExpected = (0, calculateRevisionForDevice_1.calculateRevisionForDevice)({
28
- commitRevision: expectedCommitRevision,
29
- version: firmwareVersion,
30
- });
31
- return adjustedExpected === deviceRevision;
26
+ const doRevisionsMatch = ({
27
+ deviceRevision,
28
+ expectedCommitRevision,
29
+ firmwareVersion
30
+ }) => {
31
+ if (deviceRevision === null) {
32
+ return false;
33
+ }
34
+ const adjustedExpected = (0, calculateRevisionForDevice_1.calculateRevisionForDevice)({
35
+ commitRevision: expectedCommitRevision,
36
+ version: firmwareVersion
37
+ });
38
+ return adjustedExpected === deviceRevision;
32
39
  };
33
- const checkFirmwareRevision = async ({ firmwareVersion, internalModel, deviceRevision, expectedRevision, firmwareType, }) => {
34
- if (expectedRevision === undefined) {
35
- if (!utils_1.versionUtils.isVersionArray(firmwareVersion)) {
36
- return failFirmwareRevisionCheck('firmware-version-unknown');
37
- }
38
- try {
39
- const onlineRelease = await (0, firmwareInfo_1.getOnlineReleaseByVersion)(internalModel, firmwareVersion, firmwareType);
40
- if (onlineRelease?.firmware_revision === undefined) {
41
- return failFirmwareRevisionCheck('firmware-version-unknown');
42
- }
43
- if (!doRevisionsMatch({
44
- deviceRevision,
45
- expectedCommitRevision: onlineRelease.firmware_revision,
46
- firmwareVersion,
47
- })) {
48
- return failFirmwareRevisionCheck('revision-mismatch');
49
- }
50
- return { success: true };
51
- }
52
- catch (e) {
53
- if (isNotFoundError(e))
54
- return failFirmwareRevisionCheck('firmware-version-unknown');
55
- return isOfflineError(e)
56
- ? failFirmwareRevisionCheck('cannot-perform-check-offline')
57
- : failFirmwareRevisionCheck('other-error', (0, utils_1.serializeError)(e));
58
- }
40
+ const checkFirmwareRevision = async ({
41
+ firmwareVersion,
42
+ internalModel,
43
+ deviceRevision,
44
+ expectedRevision,
45
+ firmwareType
46
+ }) => {
47
+ if (expectedRevision === undefined) {
48
+ if (!utils_1.versionUtils.isVersionArray(firmwareVersion)) {
49
+ return failFirmwareRevisionCheck('firmware-version-unknown');
59
50
  }
60
- if (!doRevisionsMatch({
51
+ try {
52
+ const onlineRelease = await (0, firmwareInfo_1.getOnlineReleaseByVersion)(internalModel, firmwareVersion, firmwareType);
53
+ if (onlineRelease?.firmware_revision === undefined) {
54
+ return failFirmwareRevisionCheck('firmware-version-unknown');
55
+ }
56
+ if (!doRevisionsMatch({
61
57
  deviceRevision,
62
- expectedCommitRevision: expectedRevision,
63
- firmwareVersion,
64
- })) {
58
+ expectedCommitRevision: onlineRelease.firmware_revision,
59
+ firmwareVersion
60
+ })) {
65
61
  return failFirmwareRevisionCheck('revision-mismatch');
62
+ }
63
+ return {
64
+ success: true
65
+ };
66
+ } catch (e) {
67
+ if (isNotFoundError(e)) return failFirmwareRevisionCheck('firmware-version-unknown');
68
+ return isOfflineError(e) ? failFirmwareRevisionCheck('cannot-perform-check-offline') : failFirmwareRevisionCheck('other-error', (0, utils_1.serializeError)(e));
66
69
  }
67
- return { success: true };
70
+ }
71
+ if (!doRevisionsMatch({
72
+ deviceRevision,
73
+ expectedCommitRevision: expectedRevision,
74
+ firmwareVersion
75
+ })) {
76
+ return failFirmwareRevisionCheck('revision-mismatch');
77
+ }
78
+ return {
79
+ success: true
80
+ };
68
81
  };
69
82
  exports.checkFirmwareRevision = checkFirmwareRevision;
70
83
  //# sourceMappingURL=checkFirmwareRevision.js.map
@@ -1,23 +1,33 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.resolveDescriptorForTaproot = void 0;
4
7
  const utils_1 = require("@trezor/utils");
5
- const resolveDescriptorForTaproot = ({ response, publicKey, }) => {
6
- if (publicKey.descriptor !== null && publicKey.descriptor !== undefined) {
7
- const [xpub, checksum] = publicKey.descriptor.split('#');
8
- const correctedXpub = (0, utils_1.convertTaprootXpub)({ xpub, direction: 'h-to-apostrophe' });
9
- if (correctedXpub !== null) {
10
- return { xpub: correctedXpub, checksum };
11
- }
8
+ const resolveDescriptorForTaproot = ({
9
+ response,
10
+ publicKey
11
+ }) => {
12
+ if (publicKey.descriptor !== null && publicKey.descriptor !== undefined) {
13
+ const [xpub, checksum] = publicKey.descriptor.split('#');
14
+ const correctedXpub = (0, utils_1.convertTaprootXpub)({
15
+ xpub,
16
+ direction: 'h-to-apostrophe'
17
+ });
18
+ if (correctedXpub !== null) {
19
+ return {
20
+ xpub: correctedXpub,
21
+ checksum
22
+ };
12
23
  }
13
- const fingerprint = Number(publicKey.root_fingerprint || 0)
14
- .toString(16)
15
- .padStart(8, '0');
16
- const descriptorPath = `${fingerprint}${response.serializedPath.substring(1)}`;
17
- return {
18
- xpub: `tr([${descriptorPath}]${response.xpub}/<0;1>/*)`,
19
- checksum: undefined,
20
- };
24
+ }
25
+ const fingerprint = Number(publicKey.root_fingerprint || 0).toString(16).padStart(8, '0');
26
+ const descriptorPath = `${fingerprint}${response.serializedPath.substring(1)}`;
27
+ return {
28
+ xpub: `tr([${descriptorPath}]${response.xpub}/<0;1>/*)`,
29
+ checksum: undefined
30
+ };
21
31
  };
22
32
  exports.resolveDescriptorForTaproot = resolveDescriptorForTaproot;
23
33
  //# sourceMappingURL=resolveDescriptorForTaproot.js.map