@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,96 +1,122 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  const constants_1 = require("../../../constants");
4
7
  const AbstractMethod_1 = require("../../../core/AbstractMethod");
5
8
  const coinInfo_1 = require("../../../data/coinInfo");
6
9
  const pathUtils_1 = require("../../../utils/pathUtils");
7
10
  const paramsValidator_1 = require("../../common/paramsValidator");
8
11
  class MoneroGetAddress extends AbstractMethod_1.AbstractMethod {
9
- hasBundle;
10
- progress = 0;
11
- init() {
12
- this.noBackupConfirmationMode = 'always';
13
- this.requiredPermissions = ['read'];
14
- this.requiredDeviceCapabilities = ['Capability_Monero'];
15
- this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, (0, coinInfo_1.getMiscNetwork)('Monero'), this.firmwareRange);
16
- this.hasBundle = !!this.payload.bundle;
17
- const payload = !this.payload.bundle
18
- ? { ...this.payload, bundle: [this.payload] }
19
- : this.payload;
20
- const bundle = payload.bundle.map(batch => {
21
- const path = (0, pathUtils_1.validatePath)(batch.path, 3);
22
- const allHardened = path.every(component => (component & pathUtils_1.HD_HARDENED) !== 0);
23
- if (!allHardened) {
24
- throw constants_1.ERRORS.TypedError('Method_InvalidParameter', `Monero requires all path components to be hardened. Use m/44'/128'/0' format.`);
25
- }
26
- return {
27
- address_n: path,
28
- address: batch.address,
29
- show_display: typeof batch.showOnTrezor === 'boolean' ? batch.showOnTrezor : true,
30
- network_type: batch.networkType || constants_1.PROTO.MoneroNetworkType.MAINNET,
31
- account: batch.account,
32
- minor: batch.minor,
33
- payment_id: batch.paymentId,
34
- chunkify: typeof batch.chunkify === 'boolean' ? batch.chunkify : false,
35
- };
36
- });
37
- this.params = bundle;
38
- const useEventListener = payload.useEventListener &&
39
- this.params.length === 1 &&
40
- typeof this.params[0].address === 'string' &&
41
- this.params[0].show_display;
42
- this.useUi = !useEventListener;
43
- }
44
- get info() {
45
- return 'Export Monero address';
46
- }
47
- getButtonRequestData(code) {
48
- if (code === 'ButtonRequest_Address') {
49
- const { address_n, address } = this.params[this.progress];
50
- return {
51
- type: 'address',
52
- serializedPath: (0, pathUtils_1.getSerializedPath)(address_n),
53
- address: address || 'not-set',
54
- };
55
- }
56
- }
57
- get confirmation() {
58
- return {
59
- view: 'export-address',
60
- label: this.info,
61
- };
12
+ hasBundle;
13
+ progress = 0;
14
+ init() {
15
+ this.noBackupConfirmationMode = 'always';
16
+ this.requiredPermissions = ['read'];
17
+ this.requiredDeviceCapabilities = ['Capability_Monero'];
18
+ this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, (0, coinInfo_1.getMiscNetwork)('Monero'), this.firmwareRange);
19
+ this.hasBundle = !!this.payload.bundle;
20
+ const payload = !this.payload.bundle ? {
21
+ ...this.payload,
22
+ bundle: [this.payload]
23
+ } : this.payload;
24
+ const bundle = payload.bundle.map(batch => {
25
+ const path = (0, pathUtils_1.validatePath)(batch.path, 3);
26
+ const allHardened = path.every(component => (component & pathUtils_1.HD_HARDENED) !== 0);
27
+ if (!allHardened) {
28
+ throw constants_1.ERRORS.TypedError('Method_InvalidParameter', `Monero requires all path components to be hardened. Use m/44'/128'/0' format.`);
29
+ }
30
+ return {
31
+ address_n: path,
32
+ address: batch.address,
33
+ show_display: typeof batch.showOnTrezor === 'boolean' ? batch.showOnTrezor : true,
34
+ network_type: batch.networkType || constants_1.PROTO.MoneroNetworkType.MAINNET,
35
+ account: batch.account,
36
+ minor: batch.minor,
37
+ payment_id: batch.paymentId,
38
+ chunkify: typeof batch.chunkify === 'boolean' ? batch.chunkify : false
39
+ };
40
+ });
41
+ this.params = bundle;
42
+ const useEventListener = payload.useEventListener && this.params.length === 1 && typeof this.params[0].address === 'string' && this.params[0].show_display;
43
+ this.useUi = !useEventListener;
44
+ }
45
+ get info() {
46
+ return 'Export Monero address';
47
+ }
48
+ getButtonRequestData(code) {
49
+ if (code === 'ButtonRequest_Address') {
50
+ const {
51
+ address_n,
52
+ address
53
+ } = this.params[this.progress];
54
+ return {
55
+ type: 'address',
56
+ serializedPath: (0, pathUtils_1.getSerializedPath)(address_n),
57
+ address: address || 'not-set'
58
+ };
62
59
  }
63
- async _call({ address_n, show_display, network_type, account, minor, payment_id, chunkify, }) {
64
- const cmd = this.device.getCommands();
65
- const response = await cmd.typedCall('MoneroGetAddress', 'MoneroAddress', {
66
- address_n,
67
- show_display,
68
- network_type,
69
- account,
70
- minor,
71
- payment_id,
72
- chunkify,
60
+ }
61
+ get confirmation() {
62
+ return {
63
+ view: 'export-address',
64
+ label: this.info
65
+ };
66
+ }
67
+ async _call({
68
+ address_n,
69
+ show_display,
70
+ network_type,
71
+ account,
72
+ minor,
73
+ payment_id,
74
+ chunkify
75
+ }) {
76
+ const cmd = this.device.getCommands();
77
+ const response = await cmd.typedCall('MoneroGetAddress', 'MoneroAddress', {
78
+ address_n,
79
+ show_display,
80
+ network_type,
81
+ account,
82
+ minor,
83
+ payment_id,
84
+ chunkify
85
+ });
86
+ const addressHex = response.message.address;
87
+ const addressBytes = Buffer.from(addressHex, 'hex');
88
+ const address = addressBytes.toString('utf8');
89
+ return {
90
+ address
91
+ };
92
+ }
93
+ async run() {
94
+ const responses = [];
95
+ for (let i = 0; i < this.params.length; i++) {
96
+ const batch = this.params[i];
97
+ if (batch.show_display) {
98
+ const silent = await this._call({
99
+ ...batch,
100
+ show_display: false
73
101
  });
74
- const addressHex = response.message.address;
75
- const addressBytes = Buffer.from(addressHex, 'hex');
76
- const address = addressBytes.toString('utf8');
77
- return {
78
- address,
79
- };
80
- }
81
- async run() {
82
- const responses = [];
83
- for (let i = 0; i < this.params.length; i++) {
84
- const response = await this._call(this.params[i]);
85
- responses.push({
86
- address: response.address,
87
- path: this.params[i].address_n,
88
- serializedPath: (0, pathUtils_1.getSerializedPath)(this.params[i].address_n),
89
- });
90
- this.progress++;
102
+ if (typeof batch.address === 'string') {
103
+ if (batch.address !== silent.address) {
104
+ throw constants_1.ERRORS.TypedError('Method_AddressNotMatch');
105
+ }
106
+ } else {
107
+ batch.address = silent.address;
91
108
  }
92
- return this.hasBundle ? responses : responses[0];
109
+ }
110
+ const response = await this._call(batch);
111
+ responses.push({
112
+ address: response.address,
113
+ path: batch.address_n,
114
+ serializedPath: (0, pathUtils_1.getSerializedPath)(batch.address_n)
115
+ });
116
+ this.progress++;
93
117
  }
118
+ return this.hasBundle ? responses : responses[0];
119
+ }
94
120
  }
95
121
  exports.default = MoneroGetAddress;
96
122
  //# sourceMappingURL=moneroGetAddress.js.map
@@ -1,43 +1,48 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  const constants_1 = require("../../../constants");
4
7
  const AbstractMethod_1 = require("../../../core/AbstractMethod");
5
8
  const coinInfo_1 = require("../../../data/coinInfo");
6
9
  const pathUtils_1 = require("../../../utils/pathUtils");
7
10
  const paramsValidator_1 = require("../../common/paramsValidator");
8
11
  class MoneroGetWatchKeyMethod extends AbstractMethod_1.AbstractMethod {
9
- init() {
10
- this.requiredPermissions = ['read'];
11
- this.requiredDeviceCapabilities = ['Capability_Monero'];
12
- this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, (0, coinInfo_1.getMiscNetwork)('Monero'), this.firmwareRange);
13
- const { payload } = this;
14
- const path = (0, pathUtils_1.validatePath)(payload.path, 3);
15
- const allHardened = path.every(component => (component & pathUtils_1.HD_HARDENED) !== 0);
16
- if (!allHardened) {
17
- throw constants_1.ERRORS.TypedError('Method_InvalidParameter', `Monero requires all path components to be hardened. Use m/44'/128'/0' format.`);
18
- }
19
- this.params = {
20
- address_n: path,
21
- network_type: payload.networkType || constants_1.PROTO.MoneroNetworkType.MAINNET,
22
- };
23
- }
24
- get info() {
25
- return 'Export Monero watch-only credentials';
26
- }
27
- async run() {
28
- const cmd = this.device.getCommands();
29
- const response = await cmd.typedCall('MoneroGetWatchKey', 'MoneroWatchKey', {
30
- address_n: this.params.address_n,
31
- network_type: this.params.network_type,
32
- });
33
- const addressHex = response.message.address;
34
- const addressBytes = Buffer.from(addressHex, 'hex');
35
- const address = addressBytes.toString('utf8');
36
- return {
37
- watch_key: response.message.watch_key,
38
- address,
39
- };
12
+ init() {
13
+ this.requiredPermissions = ['read'];
14
+ this.requiredDeviceCapabilities = ['Capability_Monero'];
15
+ this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, (0, coinInfo_1.getMiscNetwork)('Monero'), this.firmwareRange);
16
+ const {
17
+ payload
18
+ } = this;
19
+ const path = (0, pathUtils_1.validatePath)(payload.path, 3);
20
+ const allHardened = path.every(component => (component & pathUtils_1.HD_HARDENED) !== 0);
21
+ if (!allHardened) {
22
+ throw constants_1.ERRORS.TypedError('Method_InvalidParameter', `Monero requires all path components to be hardened. Use m/44'/128'/0' format.`);
40
23
  }
24
+ this.params = {
25
+ address_n: path,
26
+ network_type: payload.networkType || constants_1.PROTO.MoneroNetworkType.MAINNET
27
+ };
28
+ }
29
+ get info() {
30
+ return 'Export Monero watch-only credentials';
31
+ }
32
+ async run() {
33
+ const cmd = this.device.getCommands();
34
+ const response = await cmd.typedCall('MoneroGetWatchKey', 'MoneroWatchKey', {
35
+ address_n: this.params.address_n,
36
+ network_type: this.params.network_type
37
+ });
38
+ const addressHex = response.message.address;
39
+ const addressBytes = Buffer.from(addressHex, 'hex');
40
+ const address = addressBytes.toString('utf8');
41
+ return {
42
+ watch_key: response.message.watch_key,
43
+ address
44
+ };
45
+ }
41
46
  }
42
47
  exports.default = MoneroGetWatchKeyMethod;
43
48
  //# sourceMappingURL=moneroGetWatchKey.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
  const sha3_1 = require("@noble/hashes/sha3");
4
7
  const utils_1 = require("@noble/hashes/utils");
5
8
  const constants_1 = require("../../../constants");
@@ -8,120 +11,121 @@ const coinInfo_1 = require("../../../data/coinInfo");
8
11
  const pathUtils_1 = require("../../../utils/pathUtils");
9
12
  const paramsValidator_1 = require("../../common/paramsValidator");
10
13
  function encodeVarint(n) {
11
- const bytes = [];
12
- while (n >= 0x80) {
13
- bytes.push((n & 0x7f) | 0x80);
14
- n >>= 7;
15
- }
16
- bytes.push(n & 0x7f);
17
- return new Uint8Array(bytes);
14
+ const bytes = [];
15
+ while (n >= 0x80) {
16
+ bytes.push(n & 0x7f | 0x80);
17
+ n >>= 7;
18
+ }
19
+ bytes.push(n & 0x7f);
20
+ return new Uint8Array(bytes);
18
21
  }
19
22
  class MoneroKeyImageSyncMethod extends AbstractMethod_1.AbstractMethod {
20
- init() {
21
- this.requiredPermissions = ['read'];
22
- this.requiredDeviceCapabilities = ['Capability_Monero'];
23
- this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, (0, coinInfo_1.getMiscNetwork)('Monero'), this.firmwareRange);
24
- const { payload } = this;
25
- const path = (0, pathUtils_1.validatePath)(payload.path, 3);
26
- const allHardened = path.every(component => (component & pathUtils_1.HD_HARDENED) !== 0);
27
- if (!allHardened) {
28
- throw constants_1.ERRORS.TypedError('Method_InvalidParameter', `Monero requires all path components to be hardened. Use m/44'/128'/0' format.`);
29
- }
30
- if (!payload.tdis || payload.tdis.length === 0) {
31
- throw constants_1.ERRORS.TypedError('Method_InvalidParameter', 'tdis (transfer details) array is required and cannot be empty');
32
- }
33
- const tdis = payload.tdis.map((tdi, index) => {
34
- if (tdi.out_key.length !== 64) {
35
- throw constants_1.ERRORS.TypedError('Method_InvalidParameter', `Invalid out_key length at index ${index}: expected 64 hex characters, got ${tdi.out_key.length}`);
36
- }
37
- if (tdi.tx_pub_key.length !== 64) {
38
- throw constants_1.ERRORS.TypedError('Method_InvalidParameter', `Invalid tx_pub_key length at index ${index}: expected 64 hex characters, got ${tdi.tx_pub_key.length}`);
39
- }
40
- let additionalKeys = [];
41
- const addlKeys = tdi.additional_tx_pub_keys;
42
- if (addlKeys) {
43
- if (Array.isArray(addlKeys)) {
44
- additionalKeys = addlKeys;
45
- }
46
- else if (typeof addlKeys === 'string') {
47
- const trimmed = addlKeys.trim();
48
- if (trimmed) {
49
- additionalKeys = trimmed.split(',').map((k) => k.trim());
50
- }
51
- }
52
- }
53
- additionalKeys.forEach((key, keyIndex) => {
54
- if (key && key.length !== 64) {
55
- throw constants_1.ERRORS.TypedError('Method_InvalidParameter', `Invalid additional_tx_pub_keys[${keyIndex}] length at tdi index ${index}: expected 64 hex characters, got ${key.length}`);
56
- }
57
- });
58
- return {
59
- out_key: (0, utils_1.hexToBytes)(tdi.out_key),
60
- tx_pub_key: (0, utils_1.hexToBytes)(tdi.tx_pub_key),
61
- additional_tx_pub_keys: additionalKeys.map(k => (0, utils_1.hexToBytes)(k)),
62
- internal_output_index: tdi.internal_output_index,
63
- sub_addr_major: tdi.sub_addr_major,
64
- sub_addr_minor: tdi.sub_addr_minor,
65
- };
66
- });
67
- this.params = {
68
- address_n: path,
69
- network_type: payload.networkType || constants_1.PROTO.MoneroNetworkType.MAINNET,
70
- subs: payload.subs || [],
71
- tdis,
72
- };
23
+ init() {
24
+ this.requiredPermissions = ['read'];
25
+ this.requiredDeviceCapabilities = ['Capability_Monero'];
26
+ this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, (0, coinInfo_1.getMiscNetwork)('Monero'), this.firmwareRange);
27
+ const {
28
+ payload
29
+ } = this;
30
+ const path = (0, pathUtils_1.validatePath)(payload.path, 3);
31
+ const allHardened = path.every(component => (component & pathUtils_1.HD_HARDENED) !== 0);
32
+ if (!allHardened) {
33
+ throw constants_1.ERRORS.TypedError('Method_InvalidParameter', `Monero requires all path components to be hardened. Use m/44'/128'/0' format.`);
73
34
  }
74
- get info() {
75
- return 'Export Monero key images for spent output tracking';
35
+ if (!payload.tdis || payload.tdis.length === 0) {
36
+ throw constants_1.ERRORS.TypedError('Method_InvalidParameter', 'tdis (transfer details) array is required and cannot be empty');
76
37
  }
77
- async run() {
78
- const cmd = this.device.getCommands();
79
- const tdHashes = [];
80
- for (const tdi of this.params.tdis) {
81
- const kck = sha3_1.keccak_256.create();
82
- kck.update(tdi.out_key);
83
- kck.update(tdi.tx_pub_key);
84
- if (tdi.additional_tx_pub_keys && tdi.additional_tx_pub_keys.length > 0) {
85
- for (const addKey of tdi.additional_tx_pub_keys) {
86
- kck.update(addKey);
87
- }
88
- }
89
- const indexVarint = encodeVarint(tdi.internal_output_index);
90
- kck.update(indexVarint);
91
- tdHashes.push(kck.digest());
38
+ const tdis = payload.tdis.map((tdi, index) => {
39
+ if (tdi.out_key.length !== 64) {
40
+ throw constants_1.ERRORS.TypedError('Method_InvalidParameter', `Invalid out_key length at index ${index}: expected 64 hex characters, got ${tdi.out_key.length}`);
41
+ }
42
+ if (tdi.tx_pub_key.length !== 64) {
43
+ throw constants_1.ERRORS.TypedError('Method_InvalidParameter', `Invalid tx_pub_key length at index ${index}: expected 64 hex characters, got ${tdi.tx_pub_key.length}`);
44
+ }
45
+ let additionalKeys = [];
46
+ const addlKeys = tdi.additional_tx_pub_keys;
47
+ if (addlKeys) {
48
+ if (Array.isArray(addlKeys)) {
49
+ additionalKeys = addlKeys;
50
+ } else if (typeof addlKeys === 'string') {
51
+ const trimmed = addlKeys.trim();
52
+ if (trimmed) {
53
+ additionalKeys = trimmed.split(',').map(k => k.trim());
54
+ }
92
55
  }
93
- const finalKck = sha3_1.keccak_256.create();
94
- for (const hash of tdHashes) {
95
- finalKck.update(hash);
56
+ }
57
+ additionalKeys.forEach((key, keyIndex) => {
58
+ if (key && key.length !== 64) {
59
+ throw constants_1.ERRORS.TypedError('Method_InvalidParameter', `Invalid additional_tx_pub_keys[${keyIndex}] length at tdi index ${index}: expected 64 hex characters, got ${key.length}`);
96
60
  }
97
- const hashBytes = finalKck.digest();
98
- const numOutputs = this.params.tdis.length;
99
- await cmd.typedCall('MoneroKeyImageExportInitRequest', 'MoneroKeyImageExportInitAck', {
100
- num: numOutputs,
101
- hash: hashBytes,
102
- address_n: this.params.address_n,
103
- network_type: this.params.network_type,
104
- subs: this.params.subs,
105
- });
106
- const allKeyImages = [];
107
- const stepResponse = await cmd.typedCall('MoneroKeyImageSyncStepRequest', 'MoneroKeyImageSyncStepAck', {
108
- tdis: this.params.tdis,
109
- });
110
- allKeyImages.push(...stepResponse.message.kis);
111
- const finalResponse = await cmd.typedCall('MoneroKeyImageSyncFinalRequest', 'MoneroKeyImageSyncFinalAck', {});
112
- const encKey = finalResponse.message.enc_key;
113
- if (!encKey) {
114
- throw constants_1.ERRORS.TypedError('Runtime', 'Device did not return encryption key for key images');
61
+ });
62
+ return {
63
+ out_key: (0, utils_1.hexToBytes)(tdi.out_key),
64
+ tx_pub_key: (0, utils_1.hexToBytes)(tdi.tx_pub_key),
65
+ additional_tx_pub_keys: additionalKeys.map(k => (0, utils_1.hexToBytes)(k)),
66
+ internal_output_index: tdi.internal_output_index,
67
+ sub_addr_major: tdi.sub_addr_major,
68
+ sub_addr_minor: tdi.sub_addr_minor
69
+ };
70
+ });
71
+ this.params = {
72
+ address_n: path,
73
+ network_type: payload.networkType || constants_1.PROTO.MoneroNetworkType.MAINNET,
74
+ subs: payload.subs || [],
75
+ tdis
76
+ };
77
+ }
78
+ get info() {
79
+ return 'Export Monero key images for spent output tracking';
80
+ }
81
+ async run() {
82
+ const cmd = this.device.getCommands();
83
+ const tdHashes = [];
84
+ for (const tdi of this.params.tdis) {
85
+ const kck = sha3_1.keccak_256.create();
86
+ kck.update(tdi.out_key);
87
+ kck.update(tdi.tx_pub_key);
88
+ if (tdi.additional_tx_pub_keys && tdi.additional_tx_pub_keys.length > 0) {
89
+ for (const addKey of tdi.additional_tx_pub_keys) {
90
+ kck.update(addKey);
115
91
  }
116
- const keyImages = allKeyImages.map(ki => ({
117
- iv: ki.iv || '',
118
- key_image: ki.blob || '',
119
- }));
120
- return {
121
- key_images: keyImages,
122
- signature: encKey,
123
- };
92
+ }
93
+ const indexVarint = encodeVarint(tdi.internal_output_index);
94
+ kck.update(indexVarint);
95
+ tdHashes.push(kck.digest());
96
+ }
97
+ const finalKck = sha3_1.keccak_256.create();
98
+ for (const hash of tdHashes) {
99
+ finalKck.update(hash);
100
+ }
101
+ const hashBytes = finalKck.digest();
102
+ const numOutputs = this.params.tdis.length;
103
+ await cmd.typedCall('MoneroKeyImageExportInitRequest', 'MoneroKeyImageExportInitAck', {
104
+ num: numOutputs,
105
+ hash: hashBytes,
106
+ address_n: this.params.address_n,
107
+ network_type: this.params.network_type,
108
+ subs: this.params.subs
109
+ });
110
+ const allKeyImages = [];
111
+ const stepResponse = await cmd.typedCall('MoneroKeyImageSyncStepRequest', 'MoneroKeyImageSyncStepAck', {
112
+ tdis: this.params.tdis
113
+ });
114
+ allKeyImages.push(...stepResponse.message.kis);
115
+ const finalResponse = await cmd.typedCall('MoneroKeyImageSyncFinalRequest', 'MoneroKeyImageSyncFinalAck', {});
116
+ const encKey = finalResponse.message.enc_key;
117
+ if (!encKey) {
118
+ throw constants_1.ERRORS.TypedError('Runtime', 'Device did not return encryption key for key images');
124
119
  }
120
+ const keyImages = allKeyImages.map(ki => ({
121
+ iv: ki.iv || '',
122
+ key_image: ki.blob || ''
123
+ }));
124
+ return {
125
+ key_images: keyImages,
126
+ signature: encKey
127
+ };
128
+ }
125
129
  }
126
130
  exports.default = MoneroKeyImageSyncMethod;
127
131
  //# sourceMappingURL=moneroKeyImageSync.js.map