@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,79 +1,91 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.getOnlyLocalFirmwareReleaseConfig = exports.getFirmwareReleaseConfig = void 0;
4
7
  const jws_1 = require("jws");
5
8
  const env_utils_1 = require("@trezor/env-utils");
6
9
  const assetUtils_1 = require("./assetUtils");
7
10
  const firmwareInfo_1 = require("../data/firmwareInfo");
8
11
  const JWS_CONFIG = {
9
- SIGN_ALGORITHM: 'ES256',
10
- VERSION: 1,
11
- REMOTE_FILENAME: 'releases.v1.json',
12
- REQUEST_TIMEOUT_MS: 5000,
12
+ SIGN_ALGORITHM: 'ES256',
13
+ VERSION: 1,
14
+ REMOTE_FILENAME: 'releases.v1.json',
15
+ REQUEST_TIMEOUT_MS: 5000
13
16
  };
14
17
  const fetchRemoteJws = async () => {
15
- const { BASE_URL, MIDDLE_PATH, env } = (0, firmwareInfo_1.getOnlineFirmwareBaseUrl)();
16
- const path = `${MIDDLE_PATH}/${env === 'production' ? 'config/' : ''}${JWS_CONFIG.REMOTE_FILENAME}`;
17
- const remoteReleasesUrl = new URL(path, BASE_URL);
18
- try {
19
- const controller = new AbortController();
20
- const timeoutId = setTimeout(() => controller.abort('Request timed out'), JWS_CONFIG.REQUEST_TIMEOUT_MS);
21
- const response = await fetch(remoteReleasesUrl.toString(), { signal: controller.signal });
22
- clearTimeout(timeoutId);
23
- if (!response.ok) {
24
- throw new Error(`HTTP error! Status: ${response.status}`);
25
- }
26
- const data = await response.json();
27
- if (typeof data.jws !== 'string') {
28
- throw new Error('Invalid response format: "jws" property missing or not a string.');
29
- }
30
- return { jws: data.jws, env };
18
+ const {
19
+ BASE_URL,
20
+ MIDDLE_PATH,
21
+ env
22
+ } = (0, firmwareInfo_1.getOnlineFirmwareBaseUrl)();
23
+ const path = `${MIDDLE_PATH}/${env === 'production' ? 'config/' : ''}${JWS_CONFIG.REMOTE_FILENAME}`;
24
+ const remoteReleasesUrl = new URL(path, BASE_URL);
25
+ try {
26
+ const controller = new AbortController();
27
+ const timeoutId = setTimeout(() => controller.abort('Request timed out'), JWS_CONFIG.REQUEST_TIMEOUT_MS);
28
+ const response = await fetch(remoteReleasesUrl.toString(), {
29
+ signal: controller.signal
30
+ });
31
+ clearTimeout(timeoutId);
32
+ if (!response.ok) {
33
+ throw new Error(`HTTP error! Status: ${response.status}`);
31
34
  }
32
- catch (error) {
33
- throw new Error(`Failed to fetch remote JWS: ${error instanceof Error ? error.message : String(error)}`);
35
+ const data = await response.json();
36
+ if (typeof data.jws !== 'string') {
37
+ throw new Error('Invalid response format: "jws" property missing or not a string.');
34
38
  }
39
+ return {
40
+ jws: data.jws,
41
+ env
42
+ };
43
+ } catch (error) {
44
+ throw new Error(`Failed to fetch remote JWS: ${error instanceof Error ? error.message : String(error)}`);
45
+ }
35
46
  };
36
47
  const verifyAndDecodeJws = (jws, publicKey) => {
37
- const decoded = (0, jws_1.decode)(jws);
38
- if (!decoded || !decoded.payload || !decoded.header) {
39
- throw new Error('Invalid JWS structure.');
40
- }
41
- const parsedPayload = JSON.parse(decoded.payload);
42
- if (decoded.header.alg !== JWS_CONFIG.SIGN_ALGORITHM) {
43
- throw new Error('Invalid JWS algorithm');
44
- }
45
- if (parsedPayload.version !== JWS_CONFIG.VERSION) {
46
- throw new Error('Config version mismatch.');
47
- }
48
- if (!(0, jws_1.verify)(jws, JWS_CONFIG.SIGN_ALGORITHM, publicKey)) {
49
- throw new Error('JWS signature is invalid.');
50
- }
51
- return parsedPayload;
48
+ const decoded = (0, jws_1.decode)(jws);
49
+ if (!decoded || !decoded.payload || !decoded.header) {
50
+ throw new Error('Invalid JWS structure.');
51
+ }
52
+ const parsedPayload = JSON.parse(decoded.payload);
53
+ if (decoded.header.alg !== JWS_CONFIG.SIGN_ALGORITHM) {
54
+ throw new Error('Invalid JWS algorithm');
55
+ }
56
+ if (parsedPayload.version !== JWS_CONFIG.VERSION) {
57
+ throw new Error('Config version mismatch.');
58
+ }
59
+ if (!(0, jws_1.verify)(jws, JWS_CONFIG.SIGN_ALGORITHM, publicKey)) {
60
+ throw new Error('JWS signature is invalid.');
61
+ }
62
+ return parsedPayload;
52
63
  };
53
64
  const getFirmwareReleaseConfig = async () => {
54
- try {
55
- const { jws, env } = await fetchRemoteJws();
56
- const useProductionKey = ['test-signed', 'production'].includes(env);
57
- const publicKey = (0, env_utils_1.getFirmwareReleaseJwsPublicKey)(useProductionKey);
58
- const remoteConfig = verifyAndDecodeJws(jws, publicKey);
59
- if (remoteConfig.sequence > assetUtils_1.firmwareReleaseConfigAssets.sequence) {
60
- return {
61
- config: remoteConfig,
62
- isRemote: true,
63
- };
64
- }
65
- }
66
- catch {
65
+ try {
66
+ const {
67
+ jws,
68
+ env
69
+ } = await fetchRemoteJws();
70
+ const useProductionKey = ['test-signed', 'production'].includes(env);
71
+ const publicKey = (0, env_utils_1.getFirmwareReleaseJwsPublicKey)(useProductionKey);
72
+ const remoteConfig = verifyAndDecodeJws(jws, publicKey);
73
+ if (remoteConfig.sequence > assetUtils_1.firmwareReleaseConfigAssets.sequence) {
74
+ return {
75
+ config: remoteConfig,
76
+ isRemote: true
77
+ };
67
78
  }
68
- return {
69
- config: assetUtils_1.firmwareReleaseConfigAssets,
70
- isRemote: false,
71
- };
79
+ } catch {}
80
+ return {
81
+ config: assetUtils_1.firmwareReleaseConfigAssets,
82
+ isRemote: false
83
+ };
72
84
  };
73
85
  exports.getFirmwareReleaseConfig = getFirmwareReleaseConfig;
74
86
  const getOnlyLocalFirmwareReleaseConfig = () => ({
75
- config: assetUtils_1.firmwareReleaseConfigAssets,
76
- isRemote: false,
87
+ config: assetUtils_1.firmwareReleaseConfigAssets,
88
+ isRemote: false
77
89
  });
78
90
  exports.getOnlyLocalFirmwareReleaseConfig = getOnlyLocalFirmwareReleaseConfig;
79
91
  //# sourceMappingURL=firmwareReleaseConfigUtils.js.map
@@ -1,43 +1,42 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.isFirmwareCacheUsedForSelectedSource = exports.getFirmwareType = exports.getFirmwareMode = exports.buildIntermediaryFirmwareFileName = exports.buildLocalFirmwareFileName = exports.buildLocalReleaseName = exports.findBestCompatibleRelease = exports.isStrictFeatures = void 0;
4
7
  const device_utils_1 = require("@trezor/device-utils");
5
8
  const utils_1 = require("@trezor/utils");
6
9
  const DataManager_1 = require("../data/DataManager");
7
- const isStrictFeatures = (extFeatures) => [1, 2].includes(extFeatures.major_version) &&
8
- (extFeatures.firmware_present === false ||
9
- extFeatures.bootloader_mode == null ||
10
- extFeatures.bootloader_mode === true);
10
+ const isStrictFeatures = extFeatures => [1, 2].includes(extFeatures.major_version) && (extFeatures.firmware_present === false || extFeatures.bootloader_mode == null || extFeatures.bootloader_mode === true);
11
11
  exports.isStrictFeatures = isStrictFeatures;
12
12
  const findBestCompatibleRelease = (availableFirmwares, currentVesion, checkProperty) => {
13
- if (!availableFirmwares || availableFirmwares.length === 0) {
14
- return;
13
+ if (!availableFirmwares || availableFirmwares.length === 0) {
14
+ return;
15
+ }
16
+ const currentFirmwareVersion = currentVesion.firmwareVersion;
17
+ const currentBootloaderVersion = currentVesion.bootloaderVersion;
18
+ let versionToCompare = currentFirmwareVersion;
19
+ if (checkProperty === 'min_bootloader_version' && currentBootloaderVersion) {
20
+ versionToCompare = currentBootloaderVersion;
21
+ } else if (checkProperty === 'min_bootloader_version' && currentFirmwareVersion) {
22
+ const currentRelease = availableFirmwares.find(fw => utils_1.versionUtils.isEqual(currentFirmwareVersion, fw.version));
23
+ if (!currentRelease?.bootloader_version) {
24
+ return;
15
25
  }
16
- const currentFirmwareVersion = currentVesion.firmwareVersion;
17
- const currentBootloaderVersion = currentVesion.bootloaderVersion;
18
- let versionToCompare = currentFirmwareVersion;
19
- if (checkProperty === 'min_bootloader_version' && currentBootloaderVersion) {
20
- versionToCompare = currentBootloaderVersion;
21
- }
22
- else if (checkProperty === 'min_bootloader_version' && currentFirmwareVersion) {
23
- const currentRelease = availableFirmwares.find(fw => utils_1.versionUtils.isEqual(currentFirmwareVersion, fw.version));
24
- if (!currentRelease?.bootloader_version) {
25
- return;
26
- }
27
- }
28
- if (!versionToCompare) {
29
- return;
30
- }
31
- const sortedFirmwares = availableFirmwares.sort((a, b) => utils_1.versionUtils.isNewer(b.version, a.version) ? 1 : -1);
32
- const compatibleFirmware = sortedFirmwares.find(fw => utils_1.versionUtils.isNewerOrEqual(versionToCompare, fw[checkProperty]));
33
- return compatibleFirmware;
26
+ }
27
+ if (!versionToCompare) {
28
+ return;
29
+ }
30
+ const sortedFirmwares = availableFirmwares.sort((a, b) => utils_1.versionUtils.isNewer(b.version, a.version) ? 1 : -1);
31
+ const compatibleFirmware = sortedFirmwares.find(fw => utils_1.versionUtils.isNewerOrEqual(versionToCompare, fw[checkProperty]));
32
+ return compatibleFirmware;
34
33
  };
35
34
  exports.findBestCompatibleRelease = findBestCompatibleRelease;
36
35
  const buildLocalFileBaseName = (firmwareType, deviceModel, version) => {
37
- const firmwareSuffix = firmwareType === device_utils_1.FirmwareType.BitcoinOnly ? '-bitcoinonly' : '';
38
- const model = deviceModel.toLowerCase();
39
- const versionString = version.join('.');
40
- return `trezor-${model}-${versionString}${firmwareSuffix}`;
36
+ const firmwareSuffix = firmwareType === device_utils_1.FirmwareType.BitcoinOnly ? '-bitcoinonly' : '';
37
+ const model = deviceModel.toLowerCase();
38
+ const versionString = version.join('.');
39
+ return `trezor-${model}-${versionString}${firmwareSuffix}`;
41
40
  };
42
41
  const buildLocalReleaseName = (firmwareType, deviceModel, version) => `${buildLocalFileBaseName(firmwareType, deviceModel, version)}.json`;
43
42
  exports.buildLocalReleaseName = buildLocalReleaseName;
@@ -45,36 +44,25 @@ const buildLocalFirmwareFileName = (firmwareType, deviceModel, version) => `${bu
45
44
  exports.buildLocalFirmwareFileName = buildLocalFirmwareFileName;
46
45
  const buildIntermediaryFirmwareFileName = (internalModel, version) => `trezor-${internalModel.toLowerCase()}-inter-v${version}.bin`;
47
46
  exports.buildIntermediaryFirmwareFileName = buildIntermediaryFirmwareFileName;
48
- const getFirmwareMode = (features) => {
49
- if (features.bootloader_mode)
50
- return 'bootloader';
51
- if (!features.initialized)
52
- return 'initialize';
53
- if (features.no_backup)
54
- return 'seedless';
55
- return 'normal';
47
+ const getFirmwareMode = features => {
48
+ if (features.bootloader_mode) return 'bootloader';
49
+ if (!features.initialized) return 'initialize';
50
+ if (features.no_backup) return 'seedless';
51
+ return 'normal';
56
52
  };
57
53
  exports.getFirmwareMode = getFirmwareMode;
58
- const getFirmwareType = (features) => {
59
- let type = device_utils_1.FirmwareType.Universal;
60
- if (features.fw_vendor === 'Trezor Bitcoin-only') {
61
- type = device_utils_1.FirmwareType.BitcoinOnly;
62
- }
63
- else if (features.fw_vendor === 'Trezor') {
64
- type = device_utils_1.FirmwareType.Universal;
65
- }
66
- else if ((0, exports.getFirmwareMode)(features) !== 'bootloader') {
67
- type =
68
- features.capabilities &&
69
- features.capabilities.length > 0 &&
70
- !features.capabilities.includes('Capability_Bitcoin_like')
71
- ? device_utils_1.FirmwareType.BitcoinOnly
72
- : device_utils_1.FirmwareType.Universal;
73
- }
74
- else if ((0, exports.getFirmwareMode)(features) === 'bootloader' && features.unit_btconly) {
75
- type = device_utils_1.FirmwareType.BitcoinOnly;
76
- }
77
- return type;
54
+ const getFirmwareType = features => {
55
+ let type = device_utils_1.FirmwareType.Universal;
56
+ if (features.fw_vendor === 'Trezor Bitcoin-only') {
57
+ type = device_utils_1.FirmwareType.BitcoinOnly;
58
+ } else if (features.fw_vendor === 'Trezor') {
59
+ type = device_utils_1.FirmwareType.Universal;
60
+ } else if ((0, exports.getFirmwareMode)(features) !== 'bootloader') {
61
+ type = features.capabilities && features.capabilities.length > 0 && !features.capabilities.includes('Capability_Bitcoin_like') ? device_utils_1.FirmwareType.BitcoinOnly : device_utils_1.FirmwareType.Universal;
62
+ } else if ((0, exports.getFirmwareMode)(features) === 'bootloader' && features.unit_btconly) {
63
+ type = device_utils_1.FirmwareType.BitcoinOnly;
64
+ }
65
+ return type;
78
66
  };
79
67
  exports.getFirmwareType = getFirmwareType;
80
68
  const isFirmwareCacheUsedForSelectedSource = () => DataManager_1.DataManager.getSettings('firmwareUpdateSource') === 'production';
@@ -1,7 +1,6 @@
1
1
  import type { CoinInfo } from '../types';
2
2
  export declare const formatAmount: (n: string, coinInfo: CoinInfo) => string;
3
3
  export declare const formatTime: (n: number) => string;
4
- export declare const btckb2satoshib: (n: string) => string;
5
4
  export declare const hasHexPrefix: (str: string) => boolean;
6
5
  export declare const stripHexPrefix: (str: string) => string;
7
6
  export declare const addHexPrefix: (str: string) => `0x${string}`;
@@ -1,83 +1,84 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deepTransform = exports.hexToText = exports.messageToHex = exports.isHexString = exports.addHexPrefix = exports.stripHexPrefix = exports.hasHexPrefix = exports.btckb2satoshib = exports.formatTime = exports.formatAmount = void 0;
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.deepTransform = exports.hexToText = exports.messageToHex = exports.isHexString = exports.addHexPrefix = exports.stripHexPrefix = exports.hasHexPrefix = exports.formatTime = exports.formatAmount = void 0;
4
7
  const bigNumber_1 = require("@trezor/utils/lib/bigNumber");
5
8
  const formatAmount = (n, coinInfo) => `${new bigNumber_1.BigNumber(n).div(10 ** coinInfo.decimals).toString(10)} ${coinInfo.shortcut}`;
6
9
  exports.formatAmount = formatAmount;
7
- const formatTime = (n) => {
8
- if (!n || n <= 0)
9
- return 'No time estimate';
10
- const hours = Math.floor(n / 60);
11
- const minutes = n % 60;
12
- let res = '';
13
- if (hours !== 0) {
14
- res += `${hours} hour`;
15
- if (hours > 1) {
16
- res += 's';
17
- }
18
- res += ' ';
10
+ const formatTime = n => {
11
+ if (!n || n <= 0) return 'No time estimate';
12
+ const hours = Math.floor(n / 60);
13
+ const minutes = n % 60;
14
+ let res = '';
15
+ if (hours !== 0) {
16
+ res += `${hours} hour`;
17
+ if (hours > 1) {
18
+ res += 's';
19
19
  }
20
- if (minutes !== 0) {
21
- res += `${minutes} minutes`;
22
- }
23
- return res;
20
+ res += ' ';
21
+ }
22
+ if (minutes !== 0) {
23
+ res += `${minutes} minutes`;
24
+ }
25
+ return res;
24
26
  };
25
27
  exports.formatTime = formatTime;
26
- const btckb2satoshib = (n) => new bigNumber_1.BigNumber(n).times(1e5).toFixed(0, bigNumber_1.BigNumber.ROUND_HALF_UP);
27
- exports.btckb2satoshib = btckb2satoshib;
28
- const hasHexPrefix = (str) => str.slice(0, 2).toLowerCase() === '0x';
28
+ const hasHexPrefix = str => str.slice(0, 2).toLowerCase() === '0x';
29
29
  exports.hasHexPrefix = hasHexPrefix;
30
- const stripHexPrefix = (str) => ((0, exports.hasHexPrefix)(str) ? str.slice(2) : str);
30
+ const stripHexPrefix = str => (0, exports.hasHexPrefix)(str) ? str.slice(2) : str;
31
31
  exports.stripHexPrefix = stripHexPrefix;
32
- const addHexPrefix = (str) => str !== undefined && !(0, exports.hasHexPrefix)(str) ? `0x${str}` : str;
32
+ const addHexPrefix = str => str !== undefined && !(0, exports.hasHexPrefix)(str) ? `0x${str}` : str;
33
33
  exports.addHexPrefix = addHexPrefix;
34
34
  const isHexString = (value, length) => {
35
- if (typeof value !== 'string' || !value.match(/^(0x|0X)?[0-9A-Fa-f]*$/)) {
36
- return false;
37
- }
38
- if (length && value.length !== 2 + 2 * length) {
39
- return false;
40
- }
41
- return true;
35
+ if (typeof value !== 'string' || !value.match(/^(0x|0X)?[0-9A-Fa-f]*$/)) {
36
+ return false;
37
+ }
38
+ if (length && value.length !== 2 + 2 * length) {
39
+ return false;
40
+ }
41
+ return true;
42
42
  };
43
43
  exports.isHexString = isHexString;
44
- const messageToHex = (message) => {
45
- let buffer;
46
- if ((0, exports.isHexString)(message)) {
47
- let clean = (0, exports.stripHexPrefix)(message);
48
- if (clean.length % 2 !== 0) {
49
- clean = `0${clean}`;
50
- }
51
- buffer = Buffer.from(clean, 'hex');
52
- }
53
- else {
54
- buffer = Buffer.from(message);
44
+ const messageToHex = message => {
45
+ let buffer;
46
+ if ((0, exports.isHexString)(message)) {
47
+ let clean = (0, exports.stripHexPrefix)(message);
48
+ if (clean.length % 2 !== 0) {
49
+ clean = `0${clean}`;
55
50
  }
56
- return buffer.toString('hex');
51
+ buffer = Buffer.from(clean, 'hex');
52
+ } else {
53
+ buffer = Buffer.from(message);
54
+ }
55
+ return buffer.toString('hex');
57
56
  };
58
57
  exports.messageToHex = messageToHex;
59
- const hexToText = (hex) => {
60
- const clean = (0, exports.messageToHex)(hex);
61
- const text = Buffer.from(clean, 'hex').toString('utf8');
62
- if (/[\uFFFD]/.test(text))
63
- return hex;
64
- return text;
58
+ const hexToText = hex => {
59
+ const clean = (0, exports.messageToHex)(hex);
60
+ const text = Buffer.from(clean, 'hex').toString('utf8');
61
+ if (/[\uFFFD]/.test(text)) return hex;
62
+ return text;
65
63
  };
66
64
  exports.hexToText = hexToText;
67
- const deepTransform = (transform) => {
68
- const recursion = (value) => {
69
- if (typeof value === 'string') {
70
- return transform(value);
71
- }
72
- if (Array.isArray(value)) {
73
- return value.map(recursion);
74
- }
75
- if (value && typeof value === 'object') {
76
- return Object.entries(value).reduce((obj, [k, v]) => ({ ...obj, [k]: recursion(v) }), {});
77
- }
78
- return value;
79
- };
80
- return recursion;
65
+ const deepTransform = transform => {
66
+ const recursion = value => {
67
+ if (typeof value === 'string') {
68
+ return transform(value);
69
+ }
70
+ if (Array.isArray(value)) {
71
+ return value.map(recursion);
72
+ }
73
+ if (value && typeof value === 'object') {
74
+ return Object.entries(value).reduce((obj, [k, v]) => ({
75
+ ...obj,
76
+ [k]: recursion(v)
77
+ }), {});
78
+ }
79
+ return value;
80
+ };
81
+ return recursion;
81
82
  };
82
83
  exports.deepTransform = deepTransform;
83
84
  //# sourceMappingURL=formatUtils.js.map
@@ -1,7 +1,6 @@
1
1
  import type { Network } from '@trezor/utxo-lib';
2
2
  import { PROTO } from '../constants';
3
3
  export declare const convertXpub: (xpub: string, originalNetwork?: Network, requestedNetwork?: Network) => string;
4
- export declare const convertBitcoinXpub: (xpub: string, network: Network) => string;
5
4
  export declare function xpubDerive<PK extends PROTO.PublicKey | PROTO.EthereumPublicKey>(xpub: PK, childXPub: PK, suffix: number, network?: Network, _requestedNetwork?: Network): PK;
6
5
  export declare const xpubToHDNodeType: (xpub: string, network: Network) => PROTO.HDNodeType;
7
6
  export declare const convertMultisigPubKey: <T extends PROTO.TxInputType | PROTO.TxOutputType>(network: Network, utxo: T) => T;
@@ -1,79 +1,73 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.convertMultisigPubKey = exports.xpubToHDNodeType = exports.convertBitcoinXpub = exports.convertXpub = void 0;
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.convertMultisigPubKey = exports.xpubToHDNodeType = exports.convertXpub = void 0;
4
7
  exports.xpubDerive = xpubDerive;
5
8
  const utxo_lib_1 = require("@trezor/utxo-lib");
6
9
  const constants_1 = require("../constants");
7
10
  const pubNode2bjsNode = (node, network) => {
8
- const chainCode = Buffer.from(node.chain_code, 'hex');
9
- const publicKey = Buffer.from(node.public_key, 'hex');
10
- const res = utxo_lib_1.bip32.fromPublicKey(publicKey, chainCode, network);
11
- res.__DEPTH = node.depth;
12
- res.__INDEX = node.child_num;
13
- res.__PARENT_FINGERPRINT = node.fingerprint;
14
- return res;
11
+ const chainCode = Buffer.from(node.chain_code, 'hex');
12
+ const publicKey = Buffer.from(node.public_key, 'hex');
13
+ const res = utxo_lib_1.bip32.fromPublicKey(publicKey, chainCode, network);
14
+ res.__DEPTH = node.depth;
15
+ res.__INDEX = node.child_num;
16
+ res.__PARENT_FINGERPRINT = node.fingerprint;
17
+ return res;
15
18
  };
16
19
  const convertXpub = (xpub, originalNetwork, requestedNetwork) => {
17
- const node = utxo_lib_1.bip32.fromBase58(xpub, originalNetwork);
18
- if (requestedNetwork) {
19
- node.network = requestedNetwork;
20
- }
21
- return node.toBase58();
20
+ const node = utxo_lib_1.bip32.fromBase58(xpub, originalNetwork);
21
+ if (requestedNetwork) {
22
+ node.network = requestedNetwork;
23
+ }
24
+ return node.toBase58();
22
25
  };
23
26
  exports.convertXpub = convertXpub;
24
- const convertBitcoinXpub = (xpub, network) => {
25
- if (network.bip32.public === 0x0488b21e) {
26
- return xpub;
27
- }
28
- const node = utxo_lib_1.bip32.fromBase58(xpub);
29
- node.network = network;
30
- return node.toBase58();
31
- };
32
- exports.convertBitcoinXpub = convertBitcoinXpub;
33
27
  const pubKey2bjsNode = (key, network) => {
34
- const keyNode = key.node;
35
- const bjsNode = pubNode2bjsNode(keyNode, network);
36
- const bjsXpub = bjsNode.toBase58();
37
- const keyXpub = (0, exports.convertXpub)(key.xpub, network);
38
- if (bjsXpub !== keyXpub) {
39
- throw constants_1.ERRORS.TypedError('Runtime', `pubKey2bjsNode: Invalid public key transmission detected. Key: ${bjsXpub}, Received: ${keyXpub}`);
40
- }
41
- return bjsNode;
28
+ const keyNode = key.node;
29
+ const bjsNode = pubNode2bjsNode(keyNode, network);
30
+ const bjsXpub = bjsNode.toBase58();
31
+ const keyXpub = (0, exports.convertXpub)(key.xpub, network);
32
+ if (bjsXpub !== keyXpub) {
33
+ throw constants_1.ERRORS.TypedError('Runtime', `pubKey2bjsNode: Invalid public key transmission detected. Key: ${bjsXpub}, Received: ${keyXpub}`);
34
+ }
35
+ return bjsNode;
42
36
  };
43
37
  const checkDerivation = (parBjsNode, childBjsNode, suffix) => {
44
- const derivedChildBjsNode = parBjsNode.derive(suffix);
45
- const derivedXpub = derivedChildBjsNode.toBase58();
46
- const compXpub = childBjsNode.toBase58();
47
- if (derivedXpub !== compXpub) {
48
- throw constants_1.ERRORS.TypedError('Runtime', `checkDerivation: Invalid child cross-check public key. Derived: ${derivedXpub}, Received: ${compXpub}`);
49
- }
38
+ const derivedChildBjsNode = parBjsNode.derive(suffix);
39
+ const derivedXpub = derivedChildBjsNode.toBase58();
40
+ const compXpub = childBjsNode.toBase58();
41
+ if (derivedXpub !== compXpub) {
42
+ throw constants_1.ERRORS.TypedError('Runtime', `checkDerivation: Invalid child cross-check public key. Derived: ${derivedXpub}, Received: ${compXpub}`);
43
+ }
50
44
  };
51
45
  function xpubDerive(xpub, childXPub, suffix, network, _requestedNetwork) {
52
- const resNode = pubKey2bjsNode(xpub, network);
53
- const childNode = pubKey2bjsNode(childXPub, network);
54
- checkDerivation(resNode, childNode, suffix);
55
- return xpub;
46
+ const resNode = pubKey2bjsNode(xpub, network);
47
+ const childNode = pubKey2bjsNode(childXPub, network);
48
+ checkDerivation(resNode, childNode, suffix);
49
+ return xpub;
56
50
  }
57
51
  const xpubToHDNodeType = (xpub, network) => {
58
- const hd = utxo_lib_1.bip32.fromBase58(xpub, network);
59
- return {
60
- depth: hd.depth,
61
- child_num: hd.index,
62
- fingerprint: hd.parentFingerprint,
63
- public_key: hd.publicKey.toString('hex'),
64
- chain_code: hd.chainCode.toString('hex'),
65
- };
52
+ const hd = utxo_lib_1.bip32.fromBase58(xpub, network);
53
+ return {
54
+ depth: hd.depth,
55
+ child_num: hd.index,
56
+ fingerprint: hd.parentFingerprint,
57
+ public_key: hd.publicKey.toString('hex'),
58
+ chain_code: hd.chainCode.toString('hex')
59
+ };
66
60
  };
67
61
  exports.xpubToHDNodeType = xpubToHDNodeType;
68
62
  const convertMultisigPubKey = (network, utxo) => {
69
- if ('multisig' in utxo && utxo.multisig?.pubkeys) {
70
- utxo.multisig.pubkeys.forEach(pk => {
71
- if (typeof pk.node === 'string') {
72
- pk.node = (0, exports.xpubToHDNodeType)(pk.node, network);
73
- }
74
- });
75
- }
76
- return utxo;
63
+ if ('multisig' in utxo && utxo.multisig?.pubkeys) {
64
+ utxo.multisig.pubkeys.forEach(pk => {
65
+ if (typeof pk.node === 'string') {
66
+ pk.node = (0, exports.xpubToHDNodeType)(pk.node, network);
67
+ }
68
+ });
69
+ }
70
+ return utxo;
77
71
  };
78
72
  exports.convertMultisigPubKey = convertMultisigPubKey;
79
73
  //# sourceMappingURL=hdnodeUtils.js.map
@@ -1,34 +1,37 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.InteractionTimeout = void 0;
4
7
  const debug_1 = require("./debug");
5
8
  const _log = (0, debug_1.initLog)('InteractionTimeout');
6
9
  class InteractionTimeout {
7
- timeout = null;
8
- seconds = 0;
9
- constructor(seconds) {
10
- if (seconds) {
11
- this.seconds = seconds;
12
- }
10
+ timeout = null;
11
+ seconds = 0;
12
+ constructor(seconds) {
13
+ if (seconds) {
14
+ this.seconds = seconds;
13
15
  }
14
- start(cancelFn, seconds) {
15
- const time = seconds || this.seconds;
16
- if (time < 1) {
17
- return;
18
- }
19
- this.stop();
20
- _log.debug(`starting interaction timeout for ${time} seconds`);
21
- this.timeout = setTimeout(() => {
22
- _log.debug('interaction timed out');
23
- cancelFn();
24
- }, 1000 * time);
16
+ }
17
+ start(cancelFn, seconds) {
18
+ const time = seconds || this.seconds;
19
+ if (time < 1) {
20
+ return;
25
21
  }
26
- stop() {
27
- if (this.timeout) {
28
- _log.debug('clearing interaction timeout');
29
- clearTimeout(this.timeout);
30
- }
22
+ this.stop();
23
+ _log.debug(`starting interaction timeout for ${time} seconds`);
24
+ this.timeout = setTimeout(() => {
25
+ _log.debug('interaction timed out');
26
+ cancelFn();
27
+ }, 1000 * time);
28
+ }
29
+ stop() {
30
+ if (this.timeout) {
31
+ _log.debug('clearing interaction timeout');
32
+ clearTimeout(this.timeout);
31
33
  }
34
+ }
32
35
  }
33
36
  exports.InteractionTimeout = InteractionTimeout;
34
37
  //# sourceMappingURL=interactionTimeout.js.map