@trezor/connect 9.7.0-beta.1 → 9.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (408) hide show
  1. package/CHANGELOG.md +49 -16
  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,5 +1,8 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  const kit_1 = require("@solana/kit");
4
7
  const compute_budget_1 = require("@solana-program/compute-budget");
5
8
  const system_1 = require("@solana-program/system");
@@ -16,181 +19,185 @@ const additionalInfo_1 = require("../additionalInfo");
16
19
  const solanaDefinitions_1 = require("../solanaDefinitions");
17
20
  const solanaUtils_1 = require("../solanaUtils");
18
21
  class SolanaSignTransaction extends AbstractMethod_1.AbstractMethod {
19
- init() {
20
- this.requiredPermissions = ['read', 'write'];
21
- this.requiredDeviceCapabilities = ['Capability_Solana'];
22
- this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, (0, coinInfo_1.getMiscNetwork)('Solana'), this.firmwareRange);
23
- const { payload } = this;
24
- (0, schema_utils_1.AssertWeak)(solana_1.SolanaSignTransaction, payload);
25
- const path = (0, pathUtils_1.validatePath)(payload.path, 2);
26
- this.params = {
27
- address_n: path,
28
- serialized_tx: payload.serializedTx,
29
- additional_info: (0, additionalInfo_1.transformAdditionalInfo)(payload.additionalInfo),
30
- serialize: !!payload.serialize,
31
- };
22
+ init() {
23
+ this.requiredPermissions = ['read', 'write'];
24
+ this.requiredDeviceCapabilities = ['Capability_Solana'];
25
+ this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, (0, coinInfo_1.getMiscNetwork)('Solana'), this.firmwareRange);
26
+ const {
27
+ payload
28
+ } = this;
29
+ (0, schema_utils_1.AssertWeak)(solana_1.SolanaSignTransaction, payload);
30
+ const path = (0, pathUtils_1.validatePath)(payload.path, 2);
31
+ this.params = {
32
+ address_n: path,
33
+ serialized_tx: payload.serializedTx,
34
+ additional_info: (0, additionalInfo_1.transformAdditionalInfo)(payload.additionalInfo),
35
+ serialize: !!payload.serialize
36
+ };
37
+ }
38
+ async initAsync() {
39
+ const token = this.params.additional_info?.token_accounts_infos?.[0];
40
+ if (token) {
41
+ const tokenDefinition = await (0, solanaDefinitions_1.getSolanaTokenDefinition)({
42
+ mintAddress: token.token_mint
43
+ });
44
+ if (!tokenDefinition) return;
45
+ this.params.additional_info.encoded_token = tokenDefinition;
32
46
  }
33
- async initAsync() {
34
- const token = this.params.additional_info?.token_accounts_infos?.[0];
35
- if (token) {
36
- const tokenDefinition = await (0, solanaDefinitions_1.getSolanaTokenDefinition)({
37
- mintAddress: token.token_mint,
47
+ }
48
+ get info() {
49
+ return 'Sign Solana transaction';
50
+ }
51
+ payloadToPrecomposed() {
52
+ try {
53
+ let messageBytes;
54
+ if (this.payload.serialize) {
55
+ const transaction = (0, kit_1.pipe)(this.payload.serializedTx, (0, kit_1.getBase16Encoder)().encode, (0, kit_1.getTransactionDecoder)().decode);
56
+ messageBytes = transaction.messageBytes;
57
+ } else {
58
+ messageBytes = (0, kit_1.getBase16Encoder)().encode(this.payload.serializedTx);
59
+ }
60
+ const compiledMessage = (0, kit_1.pipe)(messageBytes, (0, kit_1.getCompiledTransactionMessageDecoder)().decode);
61
+ const message = (0, kit_1.decompileTransactionMessage)(compiledMessage);
62
+ const baseFee = new utils_1.BigNumber(solanaUtils_1.SOLANA_BASE_FEE).multipliedBy(compiledMessage.header.numSignerAccounts);
63
+ const outputs = [];
64
+ let feePerUnit = new utils_1.BigNumber(0);
65
+ let feeLimit = new utils_1.BigNumber(0);
66
+ let rent = new utils_1.BigNumber(0);
67
+ let sendAmount = new utils_1.BigNumber(0);
68
+ let token;
69
+ for (const instruction of message.instructions) {
70
+ if (instruction.programAddress === compute_budget_1.COMPUTE_BUDGET_PROGRAM_ADDRESS && instruction.data) {
71
+ const data = instruction.data;
72
+ const type = (0, compute_budget_1.identifyComputeBudgetInstruction)({
73
+ data
74
+ });
75
+ if (type === compute_budget_1.ComputeBudgetInstruction.SetComputeUnitPrice) {
76
+ const parsed = (0, compute_budget_1.parseSetComputeUnitPriceInstruction)({
77
+ data,
78
+ programAddress: compute_budget_1.COMPUTE_BUDGET_PROGRAM_ADDRESS
38
79
  });
39
- if (!tokenDefinition)
40
- return;
41
- this.params.additional_info.encoded_token = tokenDefinition;
42
- }
43
- }
44
- get info() {
45
- return 'Sign Solana transaction';
46
- }
47
- payloadToPrecomposed() {
48
- try {
49
- let messageBytes;
50
- if (this.payload.serialize) {
51
- const transaction = (0, kit_1.pipe)(this.payload.serializedTx, (0, kit_1.getBase16Encoder)().encode, (0, kit_1.getTransactionDecoder)().decode);
52
- messageBytes = transaction.messageBytes;
53
- }
54
- else {
55
- messageBytes = (0, kit_1.getBase16Encoder)().encode(this.payload.serializedTx);
56
- }
57
- const compiledMessage = (0, kit_1.pipe)(messageBytes, (0, kit_1.getCompiledTransactionMessageDecoder)().decode);
58
- const message = (0, kit_1.decompileTransactionMessage)(compiledMessage);
59
- const baseFee = new utils_1.BigNumber(solanaUtils_1.SOLANA_BASE_FEE).multipliedBy(compiledMessage.header.numSignerAccounts);
60
- const outputs = [];
61
- let feePerUnit = new utils_1.BigNumber(0);
62
- let feeLimit = new utils_1.BigNumber(0);
63
- let rent = new utils_1.BigNumber(0);
64
- let sendAmount = new utils_1.BigNumber(0);
65
- let token;
66
- for (const instruction of message.instructions) {
67
- if (instruction.programAddress === compute_budget_1.COMPUTE_BUDGET_PROGRAM_ADDRESS &&
68
- instruction.data) {
69
- const data = instruction.data;
70
- const type = (0, compute_budget_1.identifyComputeBudgetInstruction)({ data });
71
- if (type === compute_budget_1.ComputeBudgetInstruction.SetComputeUnitPrice) {
72
- const parsed = (0, compute_budget_1.parseSetComputeUnitPriceInstruction)({
73
- data,
74
- programAddress: compute_budget_1.COMPUTE_BUDGET_PROGRAM_ADDRESS,
75
- });
76
- feePerUnit = new utils_1.BigNumber(parsed.data.microLamports.toString());
77
- }
78
- if (type === compute_budget_1.ComputeBudgetInstruction.SetComputeUnitLimit) {
79
- const parsed = (0, compute_budget_1.parseSetComputeUnitLimitInstruction)({
80
- data,
81
- programAddress: compute_budget_1.COMPUTE_BUDGET_PROGRAM_ADDRESS,
82
- });
83
- feeLimit = new utils_1.BigNumber(parsed.data.units.toString());
84
- }
85
- }
86
- if (instruction.programAddress === system_1.SYSTEM_PROGRAM_ADDRESS &&
87
- instruction.data &&
88
- instruction.accounts) {
89
- const instructionSafe = {
90
- ...instruction,
91
- data: instruction.data,
92
- accounts: instruction.accounts,
93
- };
94
- const type = (0, system_1.identifySystemInstruction)(instructionSafe);
95
- if (type === system_1.SystemInstruction.TransferSol) {
96
- const parsed = (0, system_1.parseTransferSolInstruction)(instructionSafe);
97
- outputs.push({
98
- address: parsed.accounts.destination.address,
99
- amount: parsed.data.amount.toString(),
100
- script_type: 'PAYTOADDRESS',
101
- });
102
- sendAmount = sendAmount.plus(parsed.data.amount.toString());
103
- }
104
- else if (type === system_1.SystemInstruction.CreateAccount) {
105
- const parsed = (0, system_1.parseCreateAccountInstruction)(instructionSafe);
106
- outputs.push({
107
- address: parsed.accounts.newAccount.address,
108
- amount: parsed.data.lamports.toString(),
109
- script_type: 'PAYTOADDRESS',
110
- });
111
- rent = rent.plus(parsed.data.lamports.toString());
112
- }
113
- }
114
- if (instruction.programAddress === token_1.TOKEN_PROGRAM_ADDRESS &&
115
- instruction.data &&
116
- instruction.accounts) {
117
- const instructionSafe = {
118
- ...instruction,
119
- data: instruction.data,
120
- accounts: instruction.accounts,
121
- };
122
- const type = (0, token_1.identifyTokenInstruction)(instructionSafe);
123
- if (type === token_1.TokenInstruction.TransferChecked) {
124
- const parsed = (0, token_1.parseTransferCheckedInstruction)(instructionSafe);
125
- const destinationATA = parsed.accounts.destination.address;
126
- const tokenInfo = this.payload.additionalInfo?.tokenAccountsInfos?.find(t => t.tokenAccount === destinationATA &&
127
- t.tokenMint === parsed.accounts.mint.address);
128
- if (!sendAmount.isZero()) {
129
- throw constants_1.ERRORS.TypedError('Runtime', 'Multiple token transfers in a single transaction are not supported');
130
- }
131
- outputs.push({
132
- address: tokenInfo?.baseAddress || destinationATA,
133
- amount: parsed.data.amount.toString(),
134
- script_type: 'PAYTOADDRESS',
135
- });
136
- sendAmount = new utils_1.BigNumber(parsed.data.amount.toString());
137
- token = {
138
- type: 'SPL',
139
- standard: 'SPL',
140
- contract: parsed.accounts.mint.address,
141
- decimals: parsed.data.decimals,
142
- symbol: tokenInfo?.symbol,
143
- };
144
- }
145
- }
146
- }
147
- if (outputs.length === 0) {
148
- throw constants_1.ERRORS.TypedError('Runtime', 'No outputs decoded');
149
- }
150
- const fee = baseFee.plus(feePerUnit.multipliedBy(feeLimit).dividedBy(1e6));
151
- const totalSpent = sendAmount.plus(rent).plus(fee);
152
- return Promise.resolve({
153
- type: 'final',
154
- inputs: [],
155
- outputsPermutation: [0],
156
- outputs,
157
- totalSpent: token ? sendAmount.toString() : totalSpent.toString(),
158
- fee: fee.toString(),
159
- feePerByte: feePerUnit.toString(),
160
- feeLimit: feeLimit.toString(),
161
- bytes: 0,
162
- max: undefined,
163
- isTokenKnown: false,
164
- token,
165
- createdTimestamp: 'blockhash' in message.lifetimeConstraint ? new Date().getTime() : undefined,
80
+ feePerUnit = new utils_1.BigNumber(parsed.data.microLamports.toString());
81
+ }
82
+ if (type === compute_budget_1.ComputeBudgetInstruction.SetComputeUnitLimit) {
83
+ const parsed = (0, compute_budget_1.parseSetComputeUnitLimitInstruction)({
84
+ data,
85
+ programAddress: compute_budget_1.COMPUTE_BUDGET_PROGRAM_ADDRESS
166
86
  });
87
+ feeLimit = new utils_1.BigNumber(parsed.data.units.toString());
88
+ }
167
89
  }
168
- catch (e) {
169
- console.error('Error in payloadToPrecomposed', e);
170
- return Promise.resolve(undefined);
171
- }
172
- }
173
- async run() {
174
- const cmd = this.device.getCommands();
175
- if (this.params.serialize) {
176
- const tx = await (0, solanaUtils_1.createTransactionShimFromHex)(this.params.serialized_tx);
177
- const addressCall = await cmd.typedCall('SolanaGetAddress', 'SolanaAddress', {
178
- address_n: this.params.address_n,
179
- show_display: false,
180
- chunkify: false,
90
+ if (instruction.programAddress === system_1.SYSTEM_PROGRAM_ADDRESS && instruction.data && instruction.accounts) {
91
+ const instructionSafe = {
92
+ ...instruction,
93
+ data: instruction.data,
94
+ accounts: instruction.accounts
95
+ };
96
+ const type = (0, system_1.identifySystemInstruction)(instructionSafe);
97
+ if (type === system_1.SystemInstruction.TransferSol) {
98
+ const parsed = (0, system_1.parseTransferSolInstruction)(instructionSafe);
99
+ outputs.push({
100
+ address: parsed.accounts.destination.address,
101
+ amount: parsed.data.amount.toString(),
102
+ script_type: 'PAYTOADDRESS'
103
+ });
104
+ sendAmount = sendAmount.plus(parsed.data.amount.toString());
105
+ } else if (type === system_1.SystemInstruction.CreateAccount) {
106
+ const parsed = (0, system_1.parseCreateAccountInstruction)(instructionSafe);
107
+ outputs.push({
108
+ address: parsed.accounts.newAccount.address,
109
+ amount: parsed.data.lamports.toString(),
110
+ script_type: 'PAYTOADDRESS'
181
111
  });
182
- const { address } = addressCall.message;
183
- const { message } = await cmd.typedCall('SolanaSignTx', 'SolanaTxSignature', {
184
- ...this.params,
185
- serialized_tx: tx.serializeMessage(),
112
+ rent = rent.plus(parsed.data.lamports.toString());
113
+ }
114
+ }
115
+ if (instruction.programAddress === token_1.TOKEN_PROGRAM_ADDRESS && instruction.data && instruction.accounts) {
116
+ const instructionSafe = {
117
+ ...instruction,
118
+ data: instruction.data,
119
+ accounts: instruction.accounts
120
+ };
121
+ const type = (0, token_1.identifyTokenInstruction)(instructionSafe);
122
+ if (type === token_1.TokenInstruction.TransferChecked) {
123
+ const parsed = (0, token_1.parseTransferCheckedInstruction)(instructionSafe);
124
+ const destinationATA = parsed.accounts.destination.address;
125
+ const tokenInfo = this.payload.additionalInfo?.tokenAccountsInfos?.find(t => t.tokenAccount === destinationATA && t.tokenMint === parsed.accounts.mint.address);
126
+ if (!sendAmount.isZero()) {
127
+ throw constants_1.ERRORS.TypedError('Runtime', 'Multiple token transfers in a single transaction are not supported');
128
+ }
129
+ outputs.push({
130
+ address: tokenInfo?.baseAddress || destinationATA,
131
+ amount: parsed.data.amount.toString(),
132
+ script_type: 'PAYTOADDRESS'
186
133
  });
187
- tx.addSignature(address, message.signature);
188
- const signedSerializedTx = tx.serialize();
189
- return { signature: message.signature, serializedTx: signedSerializedTx };
134
+ sendAmount = new utils_1.BigNumber(parsed.data.amount.toString());
135
+ token = {
136
+ standard: 'SPL',
137
+ contract: parsed.accounts.mint.address,
138
+ decimals: parsed.data.decimals,
139
+ symbol: tokenInfo?.symbol
140
+ };
141
+ }
190
142
  }
191
- const { message } = await cmd.typedCall('SolanaSignTx', 'SolanaTxSignature', this.params);
192
- return { signature: message.signature };
143
+ }
144
+ if (outputs.length === 0) {
145
+ throw constants_1.ERRORS.TypedError('Runtime', 'No outputs decoded');
146
+ }
147
+ const fee = baseFee.plus(feePerUnit.multipliedBy(feeLimit).dividedBy(1e6));
148
+ const totalSpent = sendAmount.plus(rent).plus(fee);
149
+ return Promise.resolve({
150
+ type: 'final',
151
+ inputs: [],
152
+ outputsPermutation: [0],
153
+ outputs,
154
+ totalSpent: token ? sendAmount.toString() : totalSpent.toString(),
155
+ fee: fee.toString(),
156
+ feePerByte: feePerUnit.toString(),
157
+ feeLimit: feeLimit.toString(),
158
+ bytes: 0,
159
+ max: undefined,
160
+ isTokenKnown: false,
161
+ token,
162
+ createdTimestamp: 'blockhash' in message.lifetimeConstraint ? new Date().getTime() : undefined
163
+ });
164
+ } catch (e) {
165
+ console.error('Error in payloadToPrecomposed', e);
166
+ return Promise.resolve(undefined);
167
+ }
168
+ }
169
+ async run() {
170
+ const cmd = this.device.getCommands();
171
+ if (this.params.serialize) {
172
+ const tx = await (0, solanaUtils_1.createTransactionShimFromHex)(this.params.serialized_tx);
173
+ const addressCall = await cmd.typedCall('SolanaGetAddress', 'SolanaAddress', {
174
+ address_n: this.params.address_n,
175
+ show_display: false,
176
+ chunkify: false
177
+ });
178
+ const {
179
+ address
180
+ } = addressCall.message;
181
+ const {
182
+ message
183
+ } = await cmd.typedCall('SolanaSignTx', 'SolanaTxSignature', {
184
+ ...this.params,
185
+ serialized_tx: tx.serializeMessage()
186
+ });
187
+ tx.addSignature(address, message.signature);
188
+ const signedSerializedTx = tx.serialize();
189
+ return {
190
+ signature: message.signature,
191
+ serializedTx: signedSerializedTx
192
+ };
193
193
  }
194
+ const {
195
+ message
196
+ } = await cmd.typedCall('SolanaSignTx', 'SolanaTxSignature', this.params);
197
+ return {
198
+ signature: message.signature
199
+ };
200
+ }
194
201
  }
195
202
  exports.default = SolanaSignTransaction;
196
203
  //# sourceMappingURL=solanaSignTransaction.js.map
@@ -1,5 +1,8 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.decodeSolanaTokenDefinition = exports.getSolanaTokenDefinition = void 0;
4
7
  const tslib_1 = require("tslib");
5
8
  const cross_fetch_1 = tslib_1.__importDefault(require("cross-fetch"));
@@ -7,33 +10,37 @@ const protobuf_1 = require("@trezor/protobuf");
7
10
  const protocol_1 = require("@trezor/protocol");
8
11
  const schema_utils_1 = require("@trezor/schema-utils");
9
12
  const DataManager_1 = require("../../data/DataManager");
10
- const getSolanaTokenDefinition = async ({ mintAddress }) => {
11
- try {
12
- if (mintAddress) {
13
- const tokenDefinitionUrl = `https://data.trezor.io/firmware/definitions/solana/token/${mintAddress}.dat`;
14
- const tokenDefinition = await (0, cross_fetch_1.default)(tokenDefinitionUrl);
15
- if (tokenDefinition.status === 200) {
16
- const arrayBuffer = await tokenDefinition.arrayBuffer();
17
- return arrayBuffer;
18
- }
19
- else if (tokenDefinition.status !== 404) {
20
- throw new Error(`unexpected status: $${tokenDefinition.status}`);
21
- }
22
- }
13
+ const getSolanaTokenDefinition = async ({
14
+ mintAddress
15
+ }) => {
16
+ try {
17
+ if (mintAddress) {
18
+ const tokenDefinitionUrl = `https://data.trezor.io/firmware/definitions/solana/token/${mintAddress}.dat`;
19
+ const tokenDefinition = await (0, cross_fetch_1.default)(tokenDefinitionUrl);
20
+ if (tokenDefinition.status === 200) {
21
+ const arrayBuffer = await tokenDefinition.arrayBuffer();
22
+ return arrayBuffer;
23
+ } else if (tokenDefinition.status !== 404) {
24
+ throw new Error(`unexpected status: $${tokenDefinition.status}`);
25
+ }
23
26
  }
24
- catch (err) {
25
- console.warn(`unable to download or parse solana token ${mintAddress} definition. detail: ${err.message}`);
26
- }
27
- return undefined;
27
+ } catch (err) {
28
+ console.warn(`unable to download or parse solana token ${mintAddress} definition. detail: ${err.message}`);
29
+ }
30
+ return undefined;
28
31
  };
29
32
  exports.getSolanaTokenDefinition = getSolanaTokenDefinition;
30
- const decodeSolanaTokenDefinition = (encodedDefinition) => {
31
- const messages = DataManager_1.DataManager.getProtobufMessages();
32
- const proto = (0, protobuf_1.parseConfigure)(messages);
33
- const { protobufPayload } = protocol_1.trzd.decode(encodedDefinition);
34
- const { message: decodedTokenDefinition } = (0, protobuf_1.decodeMessage)(proto, 'SolanaTokenInfo', protobufPayload);
35
- (0, schema_utils_1.Assert)(protobuf_1.MessagesSchema.SolanaTokenInfo, decodedTokenDefinition);
36
- return decodedTokenDefinition;
33
+ const decodeSolanaTokenDefinition = encodedDefinition => {
34
+ const messages = DataManager_1.DataManager.getProtobufMessages();
35
+ const proto = (0, protobuf_1.parseConfigure)(messages);
36
+ const {
37
+ protobufPayload
38
+ } = protocol_1.trzd.decode(encodedDefinition);
39
+ const {
40
+ message: decodedTokenDefinition
41
+ } = (0, protobuf_1.decodeMessage)(proto, 'SolanaTokenInfo', protobufPayload);
42
+ (0, schema_utils_1.Assert)(protobuf_1.MessagesSchema.SolanaTokenInfo, decodedTokenDefinition);
43
+ return decodedTokenDefinition;
37
44
  };
38
45
  exports.decodeSolanaTokenDefinition = decodeSolanaTokenDefinition;
39
46
  //# sourceMappingURL=solanaDefinitions.js.map
@@ -1,7 +1,7 @@
1
1
  import { type CompilableTransactionMessage } from '@solana/kit';
2
2
  import type { TokenAccount } from '@trezor/blockchain-link-types';
3
- import type { TokenProgramName } from '@trezor/blockchain-link-utils/lib/solana';
4
- import { BigNumber } from '@trezor/utils/lib/bigNumber';
3
+ import type { TokenProgramName } from '@trezor/blockchain-link-utils/src/solana';
4
+ import { BigNumber } from '@trezor/utils/src/bigNumber';
5
5
  import { Blockchain } from '../../backend/Blockchain';
6
6
  export declare const SOLANA_BASE_FEE = 5000;
7
7
  export declare const getLamportsFromSol: (amountInSol: string) => bigint;