@trezor/connect 10.0.0-alpha.1 → 10.0.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 (432) hide show
  1. package/CHANGELOG.md +159 -63
  2. package/README.md +5 -3
  3. package/lib/exports.d.ts +1 -0
  4. package/lib/exports.js +1 -0
  5. package/lib/impl/core-in-module-native.d.ts +7 -0
  6. package/lib/impl/core-in-module-native.js +11 -0
  7. package/lib/impl/core-in-module-node.d.ts +8 -0
  8. package/lib/impl/core-in-module-node.js +12 -0
  9. package/lib/impl/core-in-module-web.d.ts +9 -0
  10. package/lib/impl/core-in-module-web.js +26 -0
  11. package/lib/index.browser.d.ts +7 -0
  12. package/lib/index.browser.js +10 -0
  13. package/lib/index.d.ts +4 -0
  14. package/lib/index.js +5 -0
  15. package/lib/index.native.d.ts +4 -0
  16. package/lib/index.native.js +5 -0
  17. package/package.json +30 -83
  18. package/libESM/api/applyFlags.d.mts +0 -20
  19. package/libESM/api/applyFlags.mjs +0 -36
  20. package/libESM/api/applySettings.d.mts +0 -20
  21. package/libESM/api/applySettings.mjs +0 -55
  22. package/libESM/api/authenticateDevice.d.mts +0 -9
  23. package/libESM/api/authenticateDevice.mjs +0 -108
  24. package/libESM/api/authorizeCoinjoin.d.mts +0 -11
  25. package/libESM/api/authorizeCoinjoin.mjs +0 -44
  26. package/libESM/api/backupDevice.d.mts +0 -19
  27. package/libESM/api/backupDevice.mjs +0 -36
  28. package/libESM/api/bitcoin/TransactionComposer.d.mts +0 -46
  29. package/libESM/api/bitcoin/TransactionComposer.mjs +0 -139
  30. package/libESM/api/bitcoin/createPendingTx.d.mts +0 -33
  31. package/libESM/api/bitcoin/createPendingTx.mjs +0 -54
  32. package/libESM/api/bitcoin/enhanceSignTx.d.mts +0 -2
  33. package/libESM/api/bitcoin/enhanceSignTx.mjs +0 -23
  34. package/libESM/api/bitcoin/index.d.mts +0 -9
  35. package/libESM/api/bitcoin/index.mjs +0 -9
  36. package/libESM/api/bitcoin/inputs.d.mts +0 -6
  37. package/libESM/api/bitcoin/inputs.mjs +0 -75
  38. package/libESM/api/bitcoin/outputs.d.mts +0 -5
  39. package/libESM/api/bitcoin/outputs.mjs +0 -128
  40. package/libESM/api/bitcoin/refTx.d.mts +0 -17
  41. package/libESM/api/bitcoin/refTx.mjs +0 -252
  42. package/libESM/api/bitcoin/signtx.d.mts +0 -22
  43. package/libESM/api/bitcoin/signtx.mjs +0 -213
  44. package/libESM/api/bitcoin/signtxLegacy.d.mts +0 -3
  45. package/libESM/api/bitcoin/signtxLegacy.mjs +0 -179
  46. package/libESM/api/bitcoin/signtxVerify.d.mts +0 -12
  47. package/libESM/api/bitcoin/signtxVerify.mjs +0 -86
  48. package/libESM/api/bitcoin/transactionBytes.d.mts +0 -3
  49. package/libESM/api/bitcoin/transactionBytes.mjs +0 -65
  50. package/libESM/api/bleUnpair.d.mts +0 -11
  51. package/libESM/api/bleUnpair.mjs +0 -35
  52. package/libESM/api/blockchainDisconnect.d.mts +0 -16
  53. package/libESM/api/blockchainDisconnect.mjs +0 -39
  54. package/libESM/api/blockchainEstimateFee.d.mts +0 -14
  55. package/libESM/api/blockchainEstimateFee.mjs +0 -106
  56. package/libESM/api/blockchainEvmRpcCall.d.mts +0 -17
  57. package/libESM/api/blockchainEvmRpcCall.mjs +0 -61
  58. package/libESM/api/blockchainGetAccountBalanceHistory.d.mts +0 -14
  59. package/libESM/api/blockchainGetAccountBalanceHistory.mjs +0 -64
  60. package/libESM/api/blockchainGetContractInfo.d.mts +0 -14
  61. package/libESM/api/blockchainGetContractInfo.mjs +0 -50
  62. package/libESM/api/blockchainGetCurrentFiatRates.d.mts +0 -18
  63. package/libESM/api/blockchainGetCurrentFiatRates.mjs +0 -53
  64. package/libESM/api/blockchainGetFiatRatesForTimestamps.d.mts +0 -21
  65. package/libESM/api/blockchainGetFiatRatesForTimestamps.mjs +0 -59
  66. package/libESM/api/blockchainGetInfo.d.mts +0 -13
  67. package/libESM/api/blockchainGetInfo.mjs +0 -41
  68. package/libESM/api/blockchainGetTransactions.d.mts +0 -15
  69. package/libESM/api/blockchainGetTransactions.mjs +0 -47
  70. package/libESM/api/blockchainSetCustomBackend.d.mts +0 -13
  71. package/libESM/api/blockchainSetCustomBackend.mjs +0 -41
  72. package/libESM/api/blockchainSubscribe.d.mts +0 -17
  73. package/libESM/api/blockchainSubscribe.mjs +0 -68
  74. package/libESM/api/blockchainSubscribeFiatRates.d.mts +0 -17
  75. package/libESM/api/blockchainSubscribeFiatRates.mjs +0 -47
  76. package/libESM/api/blockchainUnsubscribe.d.mts +0 -17
  77. package/libESM/api/blockchainUnsubscribe.mjs +0 -68
  78. package/libESM/api/blockchainUnsubscribeFiatRates.d.mts +0 -15
  79. package/libESM/api/blockchainUnsubscribeFiatRates.mjs +0 -41
  80. package/libESM/api/blockchainValidateEvmRpcUrl.d.mts +0 -17
  81. package/libESM/api/blockchainValidateEvmRpcUrl.mjs +0 -54
  82. package/libESM/api/cancelCoinjoinAuthorization.d.mts +0 -11
  83. package/libESM/api/cancelCoinjoinAuthorization.mjs +0 -31
  84. package/libESM/api/cardano/api/cardanoComposeTransaction.d.mts +0 -10
  85. package/libESM/api/cardano/api/cardanoComposeTransaction.mjs +0 -79
  86. package/libESM/api/cardano/api/cardanoGetAddress.d.mts +0 -30
  87. package/libESM/api/cardano/api/cardanoGetAddress.mjs +0 -116
  88. package/libESM/api/cardano/api/cardanoGetNativeScriptHash.d.mts +0 -12
  89. package/libESM/api/cardano/api/cardanoGetNativeScriptHash.mjs +0 -66
  90. package/libESM/api/cardano/api/cardanoGetPublicKey.d.mts +0 -20
  91. package/libESM/api/cardano/api/cardanoGetPublicKey.mjs +0 -72
  92. package/libESM/api/cardano/api/cardanoSignMessage.d.mts +0 -27
  93. package/libESM/api/cardano/api/cardanoSignMessage.mjs +0 -96
  94. package/libESM/api/cardano/api/cardanoSignTransaction.d.mts +0 -81
  95. package/libESM/api/cardano/api/cardanoSignTransaction.mjs +0 -298
  96. package/libESM/api/cardano/api/index.d.mts +0 -6
  97. package/libESM/api/cardano/api/index.mjs +0 -6
  98. package/libESM/api/cardano/cardanoAddressParameters.d.mts +0 -6
  99. package/libESM/api/cardano/cardanoAddressParameters.mjs +0 -79
  100. package/libESM/api/cardano/cardanoAuxiliaryData.d.mts +0 -4
  101. package/libESM/api/cardano/cardanoAuxiliaryData.mjs +0 -74
  102. package/libESM/api/cardano/cardanoCertificate.d.mts +0 -13
  103. package/libESM/api/cardano/cardanoCertificate.mjs +0 -142
  104. package/libESM/api/cardano/cardanoInputs.d.mts +0 -25
  105. package/libESM/api/cardano/cardanoInputs.mjs +0 -39
  106. package/libESM/api/cardano/cardanoOutputs.d.mts +0 -40
  107. package/libESM/api/cardano/cardanoOutputs.mjs +0 -70
  108. package/libESM/api/cardano/cardanoTokenBundle.d.mts +0 -12
  109. package/libESM/api/cardano/cardanoTokenBundle.mjs +0 -21
  110. package/libESM/api/cardano/cardanoUtils.d.mts +0 -9
  111. package/libESM/api/cardano/cardanoUtils.mjs +0 -101
  112. package/libESM/api/cardano/cardanoWitnesses.d.mts +0 -4
  113. package/libESM/api/cardano/cardanoWitnesses.mjs +0 -47
  114. package/libESM/api/changeLanguage.d.mts +0 -18
  115. package/libESM/api/changeLanguage.mjs +0 -47
  116. package/libESM/api/changePin.d.mts +0 -11
  117. package/libESM/api/changePin.mjs +0 -25
  118. package/libESM/api/changeWipeCode.d.mts +0 -11
  119. package/libESM/api/changeWipeCode.mjs +0 -27
  120. package/libESM/api/cipherKeyValue.d.mts +0 -15
  121. package/libESM/api/cipherKeyValue.mjs +0 -51
  122. package/libESM/api/common/AbstractMiscGetAddress.d.mts +0 -35
  123. package/libESM/api/common/AbstractMiscGetAddress.mjs +0 -102
  124. package/libESM/api/common/Discovery.d.mts +0 -33
  125. package/libESM/api/common/Discovery.mjs +0 -116
  126. package/libESM/api/common/paramsValidator.d.mts +0 -23
  127. package/libESM/api/common/paramsValidator.mjs +0 -134
  128. package/libESM/api/common/requestExistingAccounts.d.mts +0 -9
  129. package/libESM/api/common/requestExistingAccounts.mjs +0 -20
  130. package/libESM/api/composeTransaction.d.mts +0 -36
  131. package/libESM/api/composeTransaction.mjs +0 -386
  132. package/libESM/api/discoverAccounts.d.mts +0 -38
  133. package/libESM/api/discoverAccounts.mjs +0 -363
  134. package/libESM/api/ethereum/api/ethereumGetAddress.d.mts +0 -28
  135. package/libESM/api/ethereum/api/ethereumGetAddress.mjs +0 -135
  136. package/libESM/api/ethereum/api/ethereumGetPublicKey.d.mts +0 -48
  137. package/libESM/api/ethereum/api/ethereumGetPublicKey.mjs +0 -90
  138. package/libESM/api/ethereum/api/ethereumSignMessage.d.mts +0 -27
  139. package/libESM/api/ethereum/api/ethereumSignMessage.mjs +0 -64
  140. package/libESM/api/ethereum/api/ethereumSignTransaction.d.mts +0 -83
  141. package/libESM/api/ethereum/api/ethereumSignTransaction.mjs +0 -148
  142. package/libESM/api/ethereum/api/ethereumSignTypedData.d.mts +0 -116
  143. package/libESM/api/ethereum/api/ethereumSignTypedData.mjs +0 -202
  144. package/libESM/api/ethereum/api/ethereumVerifyMessage.d.mts +0 -12
  145. package/libESM/api/ethereum/api/ethereumVerifyMessage.mjs +0 -33
  146. package/libESM/api/ethereum/api/index.d.mts +0 -6
  147. package/libESM/api/ethereum/api/index.mjs +0 -6
  148. package/libESM/api/ethereum/ethereumDefinitions.d.mts +0 -46
  149. package/libESM/api/ethereum/ethereumDefinitions.mjs +0 -103
  150. package/libESM/api/ethereum/ethereumSignTx.d.mts +0 -20
  151. package/libESM/api/ethereum/ethereumSignTx.mjs +0 -131
  152. package/libESM/api/ethereum/ethereumSignTypedData.d.mts +0 -32
  153. package/libESM/api/ethereum/ethereumSignTypedData.mjs +0 -169
  154. package/libESM/api/evoluGetDelegatedIdentityKey.d.mts +0 -14
  155. package/libESM/api/evoluGetDelegatedIdentityKey.mjs +0 -26
  156. package/libESM/api/evoluGetNode.d.mts +0 -13
  157. package/libESM/api/evoluGetNode.mjs +0 -27
  158. package/libESM/api/evoluSignRegistrationRequest.d.mts +0 -15
  159. package/libESM/api/evoluSignRegistrationRequest.mjs +0 -31
  160. package/libESM/api/firmware/calculateFirmwareHash.d.mts +0 -13
  161. package/libESM/api/firmware/calculateFirmwareHash.mjs +0 -56
  162. package/libESM/api/firmware/calculateXPubHash.d.mts +0 -10
  163. package/libESM/api/firmware/calculateXPubHash.mjs +0 -14
  164. package/libESM/api/firmware/getBinary.d.mts +0 -10
  165. package/libESM/api/firmware/getBinary.mjs +0 -33
  166. package/libESM/api/firmware/index.d.mts +0 -6
  167. package/libESM/api/firmware/index.mjs +0 -6
  168. package/libESM/api/firmware/modifyFirmware.d.mts +0 -3
  169. package/libESM/api/firmware/modifyFirmware.mjs +0 -13
  170. package/libESM/api/firmware/parseFirmwareHeaders.d.mts +0 -4
  171. package/libESM/api/firmware/parseFirmwareHeaders.mjs +0 -26
  172. package/libESM/api/firmware/uploadFirmware.d.mts +0 -19
  173. package/libESM/api/firmware/uploadFirmware.mjs +0 -99
  174. package/libESM/api/firmware/verifyEntropy.d.mts +0 -18
  175. package/libESM/api/firmware/verifyEntropy.mjs +0 -107
  176. package/libESM/api/getAccountInfo.d.mts +0 -94
  177. package/libESM/api/getAccountInfo.mjs +0 -385
  178. package/libESM/api/getAddress.d.mts +0 -39
  179. package/libESM/api/getAddress.mjs +0 -142
  180. package/libESM/api/getCoinInfo.d.mts +0 -148
  181. package/libESM/api/getCoinInfo.mjs +0 -29
  182. package/libESM/api/getDeviceState.d.mts +0 -8
  183. package/libESM/api/getDeviceState.mjs +0 -16
  184. package/libESM/api/getFeatures.d.mts +0 -70
  185. package/libESM/api/getFeatures.mjs +0 -20
  186. package/libESM/api/getFirmwareHash.d.mts +0 -11
  187. package/libESM/api/getFirmwareHash.mjs +0 -27
  188. package/libESM/api/getNonce.d.mts +0 -10
  189. package/libESM/api/getNonce.mjs +0 -16
  190. package/libESM/api/getOwnershipId.d.mts +0 -15
  191. package/libESM/api/getOwnershipId.mjs +0 -79
  192. package/libESM/api/getOwnershipProof.d.mts +0 -15
  193. package/libESM/api/getOwnershipProof.mjs +0 -86
  194. package/libESM/api/getPublicKey.d.mts +0 -50
  195. package/libESM/api/getPublicKey.mjs +0 -88
  196. package/libESM/api/getSettings.d.mts +0 -8
  197. package/libESM/api/getSettings.mjs +0 -15
  198. package/libESM/api/index.d.mts +0 -59
  199. package/libESM/api/index.mjs +0 -59
  200. package/libESM/api/loadDevice.d.mts +0 -16
  201. package/libESM/api/loadDevice.mjs +0 -44
  202. package/libESM/api/monero/api/index.d.mts +0 -4
  203. package/libESM/api/monero/api/index.mjs +0 -4
  204. package/libESM/api/monero/api/moneroGetAddress.d.mts +0 -30
  205. package/libESM/api/monero/api/moneroGetAddress.mjs +0 -109
  206. package/libESM/api/monero/api/moneroGetWatchKey.d.mts +0 -14
  207. package/libESM/api/monero/api/moneroGetWatchKey.mjs +0 -44
  208. package/libESM/api/monero/api/moneroKeyImageSync.d.mts +0 -17
  209. package/libESM/api/monero/api/moneroKeyImageSync.mjs +0 -127
  210. package/libESM/api/monero/api/moneroSignTransaction.d.mts +0 -17
  211. package/libESM/api/monero/api/moneroSignTransaction.mjs +0 -202
  212. package/libESM/api/pingDevice.d.mts +0 -11
  213. package/libESM/api/pingDevice.mjs +0 -27
  214. package/libESM/api/pushTransaction.d.mts +0 -17
  215. package/libESM/api/pushTransaction.mjs +0 -42
  216. package/libESM/api/recoveryDevice.d.mts +0 -20
  217. package/libESM/api/recoveryDevice.mjs +0 -50
  218. package/libESM/api/requestLogin.d.mts +0 -14
  219. package/libESM/api/requestLogin.mjs +0 -48
  220. package/libESM/api/resetDevice.d.mts +0 -22
  221. package/libESM/api/resetDevice.mjs +0 -131
  222. package/libESM/api/ripple/api/index.d.mts +0 -2
  223. package/libESM/api/ripple/api/index.mjs +0 -2
  224. package/libESM/api/ripple/api/rippleGetAddress.d.mts +0 -15
  225. package/libESM/api/ripple/api/rippleGetAddress.mjs +0 -22
  226. package/libESM/api/ripple/api/rippleSignTransaction.d.mts +0 -13
  227. package/libESM/api/ripple/api/rippleSignTransaction.mjs +0 -52
  228. package/libESM/api/setBrightness.d.mts +0 -12
  229. package/libESM/api/setBrightness.mjs +0 -26
  230. package/libESM/api/setBusy.d.mts +0 -11
  231. package/libESM/api/setBusy.mjs +0 -32
  232. package/libESM/api/showDeviceTutorial.d.mts +0 -11
  233. package/libESM/api/showDeviceTutorial.mjs +0 -21
  234. package/libESM/api/signMessage.d.mts +0 -25
  235. package/libESM/api/signMessage.mjs +0 -71
  236. package/libESM/api/signTransaction.d.mts +0 -197
  237. package/libESM/api/signTransaction.mjs +0 -334
  238. package/libESM/api/solana/api/index.d.mts +0 -4
  239. package/libESM/api/solana/api/index.mjs +0 -4
  240. package/libESM/api/solana/api/solanaComposeTransaction.d.mts +0 -31
  241. package/libESM/api/solana/api/solanaComposeTransaction.mjs +0 -76
  242. package/libESM/api/solana/api/solanaGetAddress.d.mts +0 -15
  243. package/libESM/api/solana/api/solanaGetAddress.mjs +0 -22
  244. package/libESM/api/solana/api/solanaGetPublicKey.d.mts +0 -28
  245. package/libESM/api/solana/api/solanaGetPublicKey.mjs +0 -67
  246. package/libESM/api/solana/api/solanaSignTransaction.d.mts +0 -41
  247. package/libESM/api/solana/api/solanaSignTransaction.mjs +0 -203
  248. package/libESM/api/solana/solanaDefinitions.d.mts +0 -7
  249. package/libESM/api/solana/solanaDefinitions.mjs +0 -33
  250. package/libESM/api/stellar/api/index.d.mts +0 -2
  251. package/libESM/api/stellar/api/index.mjs +0 -2
  252. package/libESM/api/stellar/api/stellarGetAddress.d.mts +0 -15
  253. package/libESM/api/stellar/api/stellarGetAddress.mjs +0 -22
  254. package/libESM/api/stellar/api/stellarSignTransaction.d.mts +0 -26
  255. package/libESM/api/stellar/api/stellarSignTransaction.mjs +0 -66
  256. package/libESM/api/stellar/stellarSignTx.d.mts +0 -7
  257. package/libESM/api/stellar/stellarSignTx.mjs +0 -191
  258. package/libESM/api/telemetryGet.d.mts +0 -14
  259. package/libESM/api/telemetryGet.mjs +0 -24
  260. package/libESM/api/tezos/api/index.d.mts +0 -3
  261. package/libESM/api/tezos/api/index.mjs +0 -3
  262. package/libESM/api/tezos/api/tezosGetAddress.d.mts +0 -15
  263. package/libESM/api/tezos/api/tezosGetAddress.mjs +0 -22
  264. package/libESM/api/tezos/api/tezosGetPublicKey.d.mts +0 -24
  265. package/libESM/api/tezos/api/tezosGetPublicKey.mjs +0 -66
  266. package/libESM/api/tezos/api/tezosSignTransaction.d.mts +0 -14
  267. package/libESM/api/tezos/api/tezosSignTransaction.mjs +0 -30
  268. package/libESM/api/tezos/tezosSignTx.d.mts +0 -71
  269. package/libESM/api/tezos/tezosSignTx.mjs +0 -204
  270. package/libESM/api/thpGetCredentials.d.mts +0 -13
  271. package/libESM/api/thpGetCredentials.mjs +0 -28
  272. package/libESM/api/thpRemoveCredentials.d.mts +0 -15
  273. package/libESM/api/thpRemoveCredentials.mjs +0 -42
  274. package/libESM/api/tron/api/index.d.mts +0 -3
  275. package/libESM/api/tron/api/index.mjs +0 -3
  276. package/libESM/api/tron/api/tronComposeTransaction.d.mts +0 -17
  277. package/libESM/api/tron/api/tronComposeTransaction.mjs +0 -51
  278. package/libESM/api/tron/api/tronGetAddress.d.mts +0 -15
  279. package/libESM/api/tron/api/tronGetAddress.mjs +0 -20
  280. package/libESM/api/tron/api/tronSignTransaction.d.mts +0 -19
  281. package/libESM/api/tron/api/tronSignTransaction.mjs +0 -129
  282. package/libESM/api/tron/tronEncode.d.mts +0 -12
  283. package/libESM/api/tron/tronEncode.mjs +0 -77
  284. package/libESM/api/tron/tronProtobuf.d.mts +0 -5
  285. package/libESM/api/tron/tronProtobuf.mjs +0 -28
  286. package/libESM/api/unlockPath.d.mts +0 -12
  287. package/libESM/api/unlockPath.mjs +0 -31
  288. package/libESM/api/verifyMessage.d.mts +0 -16
  289. package/libESM/api/verifyMessage.mjs +0 -46
  290. package/libESM/api/wipeDevice.d.mts +0 -21
  291. package/libESM/api/wipeDevice.mjs +0 -47
  292. package/libESM/backend/BackendManager.d.mts +0 -24
  293. package/libESM/backend/BackendManager.mjs +0 -137
  294. package/libESM/backend/Blockchain.d.mts +0 -81
  295. package/libESM/backend/Blockchain.mjs +0 -232
  296. package/libESM/backend/BlockchainLink.d.mts +0 -9
  297. package/libESM/backend/BlockchainLink.mjs +0 -13
  298. package/libESM/backend/fees/BitcoinFeeLevels.d.mts +0 -19
  299. package/libESM/backend/fees/BitcoinFeeLevels.mjs +0 -43
  300. package/libESM/backend/fees/EthereumFeeLevels.d.mts +0 -17
  301. package/libESM/backend/fees/EthereumFeeLevels.mjs +0 -52
  302. package/libESM/backend/fees/MiscFeeLevels.d.mts +0 -18
  303. package/libESM/backend/fees/MiscFeeLevels.mjs +0 -25
  304. package/libESM/backend/fees/index.d.mts +0 -5
  305. package/libESM/backend/fees/index.mjs +0 -30
  306. package/libESM/core/AbstractMethod.d.mts +0 -65
  307. package/libESM/core/AbstractMethod.mjs +0 -153
  308. package/libESM/core/index.d.mts +0 -27
  309. package/libESM/core/index.mjs +0 -795
  310. package/libESM/core/method.d.mts +0 -3
  311. package/libESM/core/method.mjs +0 -19
  312. package/libESM/core/method.native.d.mts +0 -2
  313. package/libESM/core/method.native.mjs +0 -29
  314. package/libESM/core/onCallFirmwareUpdate.d.mts +0 -39
  315. package/libESM/core/onCallFirmwareUpdate.mjs +0 -436
  316. package/libESM/data/coinInfo.d.mts +0 -374
  317. package/libESM/data/coinInfo.mjs +0 -183
  318. package/libESM/data/config.d.mts +0 -8
  319. package/libESM/data/config.mjs +0 -265
  320. package/libESM/data/defaultFeeLevels.d.mts +0 -18
  321. package/libESM/data/defaultFeeLevels.mjs +0 -174
  322. package/libESM/data/firmwareInfo.d.mts +0 -41
  323. package/libESM/data/firmwareInfo.mjs +0 -411
  324. package/libESM/data/firmwareReleaseStore.d.mts +0 -10
  325. package/libESM/data/firmwareReleaseStore.mjs +0 -16
  326. package/libESM/data/localFirmwareStore.d.mts +0 -3
  327. package/libESM/data/localFirmwareStore.mjs +0 -8
  328. package/libESM/data/protobufLoader.d.mts +0 -1
  329. package/libESM/data/protobufLoader.mjs +0 -29
  330. package/libESM/data/settingsStore.d.mts +0 -6
  331. package/libESM/data/settingsStore.mjs +0 -21
  332. package/libESM/device/Device.d.mts +0 -237
  333. package/libESM/device/Device.mjs +0 -729
  334. package/libESM/device/DeviceCommands.d.mts +0 -77
  335. package/libESM/device/DeviceCommands.mjs +0 -245
  336. package/libESM/device/DeviceCurrentSession.d.mts +0 -3208
  337. package/libESM/device/DeviceCurrentSession.mjs +0 -240
  338. package/libESM/device/DeviceList.d.mts +0 -68
  339. package/libESM/device/DeviceList.mjs +0 -246
  340. package/libESM/device/TransportList.d.mts +0 -9
  341. package/libESM/device/TransportList.mjs +0 -41
  342. package/libESM/device/TransportManager.d.mts +0 -30
  343. package/libESM/device/TransportManager.mjs +0 -142
  344. package/libESM/device/calculateRevisionForDevice.d.mts +0 -7
  345. package/libESM/device/calculateRevisionForDevice.mjs +0 -19
  346. package/libESM/device/checkFirmwareRevision.d.mts +0 -12
  347. package/libESM/device/checkFirmwareRevision.mjs +0 -75
  348. package/libESM/device/resolveDescriptorForTaproot.d.mts +0 -14
  349. package/libESM/device/resolveDescriptorForTaproot.mjs +0 -25
  350. package/libESM/device/thp/handshake.d.mts +0 -3
  351. package/libESM/device/thp/handshake.mjs +0 -100
  352. package/libESM/device/thp/index.d.mts +0 -5
  353. package/libESM/device/thp/index.mjs +0 -65
  354. package/libESM/device/thp/pairing.d.mts +0 -16
  355. package/libESM/device/thp/pairing.mjs +0 -237
  356. package/libESM/device/thp/session.d.mts +0 -2
  357. package/libESM/device/thp/session.mjs +0 -27
  358. package/libESM/device/thp/thpCall.d.mts +0 -40
  359. package/libESM/device/thp/thpCall.mjs +0 -58
  360. package/libESM/device/validateMessageSize.d.mts +0 -2
  361. package/libESM/device/validateMessageSize.mjs +0 -9
  362. package/libESM/device/workflow/changeLanguage.d.mts +0 -14
  363. package/libESM/device/workflow/changeLanguage.mjs +0 -59
  364. package/libESM/device/workflow/checkFirmwareHash.d.mts +0 -9
  365. package/libESM/device/workflow/checkFirmwareHash.mjs +0 -86
  366. package/libESM/device/workflow/checkFirmwareHashWithRetries.d.mts +0 -8
  367. package/libESM/device/workflow/checkFirmwareHashWithRetries.mjs +0 -36
  368. package/libESM/device/workflow/handshake.d.mts +0 -9
  369. package/libESM/device/workflow/handshake.mjs +0 -55
  370. package/libESM/device/workflow/trezorPushNotification.d.mts +0 -2
  371. package/libESM/device/workflow/trezorPushNotification.mjs +0 -73
  372. package/libESM/device/workflow/validateState.d.mts +0 -2
  373. package/libESM/device/workflow/validateState.mjs +0 -153
  374. package/libESM/events/ui-promise.d.mts +0 -22
  375. package/libESM/events/ui-promise.mjs +0 -1
  376. package/libESM/exports.d.mts +0 -3
  377. package/libESM/exports.mjs +0 -3
  378. package/libESM/impl/core-in-module.d.mts +0 -27
  379. package/libESM/impl/core-in-module.mjs +0 -173
  380. package/libESM/index.browser.d.mts +0 -9
  381. package/libESM/index.browser.mjs +0 -50
  382. package/libESM/index.d.mts +0 -6
  383. package/libESM/index.mjs +0 -32
  384. package/libESM/index.renderer.d.mts +0 -6
  385. package/libESM/index.renderer.mjs +0 -19
  386. package/libESM/tsconfig.libESM.tsbuildinfo +0 -1
  387. package/libESM/types/idevice.d.mts +0 -109
  388. package/libESM/types/idevice.mjs +0 -1
  389. package/libESM/types/typed-call-provider.d.mts +0 -29
  390. package/libESM/types/typed-call-provider.mjs +0 -1
  391. package/libESM/types/workflow.d.mts +0 -16
  392. package/libESM/types/workflow.mjs +0 -1
  393. package/libESM/utils/accountUtils.d.mts +0 -10
  394. package/libESM/utils/accountUtils.mjs +0 -83
  395. package/libESM/utils/addressUtils.d.mts +0 -2
  396. package/libESM/utils/addressUtils.mjs +0 -24
  397. package/libESM/utils/assetUtils.d.mts +0 -13
  398. package/libESM/utils/assetUtils.mjs +0 -56
  399. package/libESM/utils/assets.browser.d.mts +0 -1
  400. package/libESM/utils/assets.browser.mjs +0 -1
  401. package/libESM/utils/assets.d.mts +0 -2
  402. package/libESM/utils/assets.mjs +0 -13
  403. package/libESM/utils/assets.native.d.mts +0 -2
  404. package/libESM/utils/assets.native.mjs +0 -23
  405. package/libESM/utils/assetsTypes.d.mts +0 -5
  406. package/libESM/utils/assetsTypes.mjs +0 -1
  407. package/libESM/utils/buildOutputDescriptor.d.mts +0 -12
  408. package/libESM/utils/buildOutputDescriptor.mjs +0 -67
  409. package/libESM/utils/deviceFeaturesUtils.d.mts +0 -7
  410. package/libESM/utils/deviceFeaturesUtils.mjs +0 -109
  411. package/libESM/utils/ethereumUtils.d.mts +0 -3
  412. package/libESM/utils/ethereumUtils.mjs +0 -7
  413. package/libESM/utils/firmwareReleaseConfigUtils.d.mts +0 -19
  414. package/libESM/utils/firmwareReleaseConfigUtils.mjs +0 -131
  415. package/libESM/utils/firmwareUtils.d.mts +0 -13
  416. package/libESM/utils/firmwareUtils.mjs +0 -54
  417. package/libESM/utils/formatUtils.d.mts +0 -15
  418. package/libESM/utils/formatUtils.mjs +0 -45
  419. package/libESM/utils/hdnodeUtils.d.mts +0 -6
  420. package/libESM/utils/hdnodeUtils.mjs +0 -62
  421. package/libESM/utils/pathUtils.d.mts +0 -17
  422. package/libESM/utils/pathUtils.mjs +0 -141
  423. package/libESM/utils/paymentRequest.d.mts +0 -8
  424. package/libESM/utils/paymentRequest.mjs +0 -25
  425. package/libESM/utils/uiPromiseManager.d.mts +0 -8
  426. package/libESM/utils/uiPromiseManager.mjs +0 -51
  427. package/libESM/workers/workers.browser.d.mts +0 -10
  428. package/libESM/workers/workers.browser.mjs +0 -16
  429. package/libESM/workers/workers.d.mts +0 -10
  430. package/libESM/workers/workers.mjs +0 -8
  431. package/libESM/workers/workers.native.d.mts +0 -7
  432. package/libESM/workers/workers.native.mjs +0 -7
@@ -1,729 +0,0 @@
1
- import { DEVICE, ERRORS, FIRMWARE, UI_REQUEST } from "@trezor/connect-common";
2
- import { initLog } from "@trezor/connect-common/libESM/utils/debug.mjs";
3
- import { DeviceModelInternal, getFirmwareOrBootloaderVersionArray, getFirmwareVersionArray, models } from "@trezor/device-utils";
4
- import { thp as protocolThp, v1 as protocolV1, v2 as protocolV2 } from "@trezor/protocol";
5
- import { TRANSPORT, TRANSPORT_ERROR } from "@trezor/transport";
6
- import { TypedEmitter, createDeferred, isArrayMember, versionUtils } from "@trezor/utils";
7
- import { DeviceCommands } from "./DeviceCommands.mjs";
8
- import { DeviceCurrentSession } from "./DeviceCurrentSession.mjs";
9
- import { checkFirmwareRevision } from "./checkFirmwareRevision.mjs";
10
- import { abortThpWorkflow, getThpChannel } from "./thp/index.mjs";
11
- import { getAllNetworks } from "../data/coinInfo.mjs";
12
- import { getFirmwareReleaseConfigInfo, getFirmwareStatus, getReleaseByVersion } from "../data/firmwareInfo.mjs";
13
- import { getReleaseAsset } from "../utils/assetUtils.mjs";
14
- import { ensureInternalModelFeature, getUnavailableCapabilities, parseCapabilities, parseRevision } from "../utils/deviceFeaturesUtils.mjs";
15
- import { getFirmwareMode, getFirmwareType } from "../utils/firmwareUtils.mjs";
16
- import { changeLanguage } from "./workflow/changeLanguage.mjs";
17
- import { checkFirmwareHashWithRetries } from "./workflow/checkFirmwareHashWithRetries.mjs";
18
- import { handshakeCancel } from "./workflow/handshake.mjs";
19
- const _log = initLog('Device');
20
- export class Device extends TypedEmitter {
21
- transport;
22
- thp;
23
- descriptor;
24
- sessionAcquired;
25
- _protocol;
26
- get protocol() {
27
- return this._protocol;
28
- }
29
- getThpState() {
30
- return this.thp;
31
- }
32
- unreadableError;
33
- _firmwareStatus;
34
- get firmwareStatus() {
35
- return this._firmwareStatus;
36
- }
37
- _currentRelease;
38
- get currentRelease() {
39
- return this._currentRelease;
40
- }
41
- _firmwareReleaseConfigInfo;
42
- get firmwareReleaseConfigInfo() {
43
- return this._firmwareReleaseConfigInfo;
44
- }
45
- _features;
46
- get features() {
47
- return this._features;
48
- }
49
- wasUsedElsewhere = false;
50
- acquirePromise;
51
- releasePromise;
52
- runAbort;
53
- runPromise;
54
- keepTransportSession = false;
55
- currentSession;
56
- instance = 0;
57
- state = [];
58
- busy;
59
- _unavailableCapabilities = {};
60
- get unavailableCapabilities() {
61
- return this._unavailableCapabilities;
62
- }
63
- _firmwareType;
64
- get firmwareType() {
65
- return this._firmwareType;
66
- }
67
- get possibleHIDdevice() {
68
- return this.descriptor.type === 0 || this.descriptor.type === 2;
69
- }
70
- get possibleT1() {
71
- return (this.descriptor.type ?? 0) <= 2;
72
- }
73
- name = 'Trezor';
74
- color;
75
- availableTranslations = {};
76
- authenticityChecks = {
77
- firmwareRevision: null,
78
- firmwareHash: null
79
- };
80
- uniquePath;
81
- lifecycle = new TypedEmitter();
82
- sessionDfd;
83
- constructor({
84
- id,
85
- transport,
86
- descriptor
87
- }) {
88
- super();
89
- this._protocol = protocolV1;
90
- this.uniquePath = id;
91
- this.transport = transport;
92
- this.descriptor = {
93
- id: descriptor.id,
94
- apiType: descriptor.apiType,
95
- type: descriptor.type,
96
- path: descriptor.path,
97
- model: descriptor.model
98
- };
99
- this.sessionAcquired = null;
100
- transport.on(TRANSPORT.STOPPED, this.onTransportStopped);
101
- transport.deviceEvents.on(this.descriptor.path, this.onTransportDeviceEvent);
102
- }
103
- get transportPath() {
104
- return this.descriptor.path;
105
- }
106
- onTransportStopped = () => this.disconnect();
107
- onTransportDeviceEvent = event => {
108
- switch (event.type) {
109
- case TRANSPORT.DEVICE_SESSION_CHANGED:
110
- return this.updateDescriptor(event.descriptor);
111
- case TRANSPORT.DEVICE_REQUEST_RELEASE:
112
- return this.usedElsewhere();
113
- case TRANSPORT.DEVICE_DISCONNECTED:
114
- {
115
- return this.disconnect();
116
- }
117
- }
118
- };
119
- getSessionChangePromise() {
120
- if (!this.sessionDfd) {
121
- this.sessionDfd = createDeferred();
122
- this.sessionDfd.promise.catch(() => {}).finally(() => {
123
- this.sessionDfd = undefined;
124
- });
125
- }
126
- return this.sessionDfd.promise;
127
- }
128
- async waitAndCompareSession(response, sessionPromise) {
129
- if (response.success) {
130
- try {
131
- if ((await sessionPromise) !== response.payload) {
132
- return {
133
- success: false,
134
- error: {
135
- code: TRANSPORT_ERROR.SESSION_WRONG_PREVIOUS
136
- }
137
- };
138
- }
139
- } catch {
140
- return {
141
- success: false,
142
- error: {
143
- code: TRANSPORT_ERROR.DEVICE_DISCONNECTED_DURING_ACTION
144
- }
145
- };
146
- }
147
- }
148
- return response;
149
- }
150
- acquire() {
151
- const sessionPromise = this.getSessionChangePromise();
152
- const previous = this.transport.getDescriptor(this.descriptor.path)?.session ?? null;
153
- this.acquirePromise = this.transport.acquire({
154
- input: {
155
- path: this.descriptor.path,
156
- previous
157
- }
158
- }).then(result => this.waitAndCompareSession(result, sessionPromise)).then(result => {
159
- if (result.success) {
160
- this.wasUsedElsewhere = false;
161
- this.sessionAcquired = result.payload;
162
- this.currentSession = new DeviceCurrentSession(this, this.transport, this.sessionAcquired);
163
- return result;
164
- } else {
165
- throw new Error(result.error.code);
166
- }
167
- }).finally(() => {
168
- this.acquirePromise = undefined;
169
- });
170
- return this.acquirePromise;
171
- }
172
- reset() {
173
- _log.info(`Resetting Features and ThpState`);
174
- this._features = undefined;
175
- this._protocol = protocolV1;
176
- this.thp?.resetState();
177
- this.thp = undefined;
178
- }
179
- setBusy(value) {
180
- this.busy = value;
181
- }
182
- release() {
183
- if (!this.sessionAcquired || this.keepTransportSession || this.releasePromise) {
184
- return;
185
- }
186
- const sessionPromise = this.getSessionChangePromise();
187
- this.releasePromise = this.transport.release({
188
- session: this.sessionAcquired,
189
- path: this.descriptor.path
190
- }).then(result => this.waitAndCompareSession(result, sessionPromise)).then(result => {
191
- if (result.success) {
192
- this.sessionAcquired = null;
193
- }
194
- return result;
195
- }).finally(() => {
196
- this.releasePromise = undefined;
197
- });
198
- return this.releasePromise;
199
- }
200
- setupThp() {
201
- _log.info('Setup THP device');
202
- this._protocol = protocolV2;
203
- if (this.transport.name === 'BridgeTransport' && !versionUtils.isNewerOrEqual(this.transport.version, '3.0.0')) {
204
- this.unreadableError = 'THP incompatible with bridge ' + this.transport.version;
205
- } else {
206
- try {
207
- this.thp = new protocolThp.ThpState();
208
- } catch (error) {
209
- this.unreadableError = error.message;
210
- }
211
- }
212
- }
213
- async handshake() {
214
- if (this.isUsedElsewhere()) {
215
- return true;
216
- }
217
- try {
218
- await this.run();
219
- } catch (error) {
220
- _log.warn(`device.run error.message: ${error.message}, code: ${error.code}`);
221
- if (error.code === 'Device_NotFound' || error.code === 'Device_Disconnected' || error.message === TRANSPORT_ERROR.DEVICE_NOT_FOUND || error.message === TRANSPORT_ERROR.DEVICE_DISCONNECTED_DURING_ACTION || error.message === TRANSPORT_ERROR.HTTP_ERROR) {
222
- return false;
223
- }
224
- if (this.possibleHIDdevice && error.message === TRANSPORT_ERROR.INTERFACE_UNABLE_TO_OPEN_DEVICE || error.message === TRANSPORT_ERROR.LIBUSB_ERROR_ACCESS) {
225
- this.unreadableError = error.message;
226
- }
227
- }
228
- return true;
229
- }
230
- async updateDescriptor(descriptor) {
231
- this.sessionDfd?.resolve(descriptor.session);
232
- await Promise.all([this.acquirePromise, this.releasePromise]);
233
- if (descriptor.session && descriptor.session !== this.sessionAcquired) {
234
- this.usedElsewhere();
235
- }
236
- if (!descriptor.session) {
237
- this.keepTransportSession = false;
238
- }
239
- this.lifecycle.emit(DEVICE.CHANGED);
240
- }
241
- startPiggybackAck() {
242
- _log.debug('start PiggybackAck');
243
- this.thp?.enablePiggybackAck(true);
244
- }
245
- async stopPiggybackAck() {
246
- if (this.currentSession && this.thp?.isPiggybackAckEnabled) {
247
- _log.debug('stop PiggybackAck');
248
- await this.currentSession.send('ThpAck', {});
249
- this.thp?.enablePiggybackAck(false);
250
- }
251
- }
252
- run(fn, options = {}) {
253
- if (this.runPromise) {
254
- _log.warn('Previous call is still running');
255
- throw ERRORS.TypedError('Device_CallInProgress');
256
- }
257
- const wasUnacquired = this.isUnacquired();
258
- this.runAbort = new AbortController();
259
- const {
260
- signal
261
- } = this.runAbort;
262
- this.runPromise = Promise.race([this._runInner(fn, options, signal), new Promise((_, reject) => {
263
- signal.addEventListener('abort', () => reject(signal.reason));
264
- })]).catch(async err => {
265
- this.keepTransportSession = false;
266
- await this.acquirePromise;
267
- await this.stopPiggybackAck();
268
- await this.release();
269
- throw err;
270
- }).finally(() => {
271
- this.runAbort = undefined;
272
- this.runPromise = undefined;
273
- }).then(() => {
274
- if (wasUnacquired && !this.isUnacquired()) {
275
- this.lifecycle.emit(DEVICE.CONNECT);
276
- }
277
- });
278
- return this.runPromise;
279
- }
280
- async interrupt(reason) {
281
- await abortThpWorkflow(this);
282
- await this.currentSession?.abort(reason);
283
- this.runAbort?.abort(reason);
284
- await this.currentRun;
285
- }
286
- get currentRun() {
287
- return this.runPromise?.catch(() => {});
288
- }
289
- usedElsewhere() {
290
- this.wasUsedElsewhere = true;
291
- if (!this.sessionAcquired) {
292
- return;
293
- }
294
- this.transport.releaseDevice(this.sessionAcquired);
295
- this.sessionAcquired = null;
296
- _log.debug('interruptionFromOutside');
297
- this.runAbort?.abort(ERRORS.TypedError('Device_UsedElsewhere'));
298
- }
299
- async _runInner(fn, options, abortSignal) {
300
- if (this.releasePromise) {
301
- await this.releasePromise;
302
- }
303
- const acquireNeeded = !this.isUsedHere() || this.currentSession?.isDisposed();
304
- if (acquireNeeded) {
305
- await this.acquire();
306
- }
307
- if (abortSignal.aborted) throw abortSignal.reason;
308
- const {
309
- staticSessionId,
310
- deriveCardano
311
- } = this.getState() || {};
312
- if (acquireNeeded || !staticSessionId || !deriveCardano && options.useCardanoDerivation) {
313
- try {
314
- await handshakeCancel({
315
- device: this,
316
- logger: _log,
317
- signal: abortSignal
318
- });
319
- if (this.protocol.name === 'v2') {
320
- const withInteraction = !!fn;
321
- this.busy = await getThpChannel(this, withInteraction);
322
- this.updateNameAndColor();
323
- if (!this.busy) {
324
- await this.getFeatures();
325
- }
326
- } else if (fn) {
327
- await this.initialize(!!options.useCardanoDerivation);
328
- } else {
329
- await this.getFeatures();
330
- }
331
- } catch (error) {
332
- _log.warn('Device._runInner error: ', error.message);
333
- if (error.code === 'Failure_Busy') {
334
- this.busy = 'busy';
335
- }
336
- if (error.code === 'ThpDeviceLocked') {
337
- this.busy = 'pin-locked';
338
- }
339
- if (error.code === 'Device_ThpPairingTagInvalid' || error.code === 'Failure_ActionCancelled') {
340
- return Promise.reject(error);
341
- }
342
- return Promise.reject(ERRORS.TypedError('Device_InitializeFailed', `Initialize failed: ${error.message}${error.code ? `, code: ${error.code}` : ''}`));
343
- }
344
- }
345
- if (!options.skipFirmwareChecks) {
346
- await checkFirmwareHashWithRetries({
347
- device: this,
348
- logger: _log
349
- });
350
- await this.checkFirmwareRevisionWithRetries();
351
- }
352
- if (!options.skipLanguageChecks && this.features?.language && !this.features.language_version_matches && this.atLeast('2.7.0')) {
353
- _log.info('language version mismatch. silently updating...');
354
- try {
355
- await changeLanguage({
356
- device: this,
357
- language: this.features.language
358
- });
359
- } catch (err) {
360
- _log.error('change language failed silently', err);
361
- }
362
- }
363
- if (options.keepSession) {
364
- this.keepTransportSession = true;
365
- }
366
- if (fn) {
367
- await fn();
368
- if (!options.skipFinalReload) {
369
- await this.getFeatures();
370
- }
371
- }
372
- if (!this.keepTransportSession && typeof options.keepSession !== 'boolean' || options.keepSession === false) {
373
- this.keepTransportSession = false;
374
- await this.stopPiggybackAck();
375
- await this.release();
376
- }
377
- }
378
- getCurrentSession() {
379
- if (!this.currentSession) {
380
- throw ERRORS.TypedError('Runtime', `Device: commands not defined`);
381
- }
382
- return this.currentSession;
383
- }
384
- getCommands() {
385
- return DeviceCommands(this.getCurrentSession());
386
- }
387
- setInstance(instance = 0) {
388
- if (this.instance !== instance) {
389
- if (this.keepTransportSession) {
390
- this.sessionAcquired = null;
391
- this.keepTransportSession = false;
392
- }
393
- }
394
- this.instance = instance;
395
- }
396
- getInstance() {
397
- return this.instance;
398
- }
399
- getState() {
400
- return this.state[this.instance];
401
- }
402
- setState(state) {
403
- if (!state) {
404
- delete this.state[this.instance];
405
- } else {
406
- const prevState = this.state[this.instance];
407
- const newState = {
408
- ...prevState,
409
- ...state
410
- };
411
- this.state[this.instance] = newState;
412
- }
413
- }
414
- async initialize(useCardanoDerivation) {
415
- let payload;
416
- if (this.features) {
417
- const {
418
- sessionId,
419
- deriveCardano
420
- } = this.getState() || {};
421
- payload = {
422
- derive_cardano: deriveCardano || useCardanoDerivation
423
- };
424
- if (sessionId) {
425
- payload.session_id = sessionId;
426
- }
427
- }
428
- const {
429
- message
430
- } = await this.getCurrentSession().typedCall('Initialize', 'Features', payload);
431
- this._updateFeatures(message);
432
- this._updateCurrentRelease(message);
433
- this.setState({
434
- deriveCardano: payload?.derive_cardano
435
- });
436
- }
437
- async getFeatures() {
438
- const {
439
- message
440
- } = await this.getCurrentSession().typedCall('GetFeatures', 'Features', {});
441
- this._updateFeatures(message);
442
- this._updateCurrentRelease(message);
443
- }
444
- getAuthenticityChecks() {
445
- return this.authenticityChecks;
446
- }
447
- setAuthenticityChecks(firmwareHash) {
448
- this.authenticityChecks.firmwareHash = firmwareHash;
449
- }
450
- async checkFirmwareRevisionWithRetries() {
451
- const lastResult = this.authenticityChecks.firmwareRevision;
452
- const notDoneYet = lastResult === null;
453
- const wasError = lastResult !== null && !lastResult.success;
454
- const wasErrorRetriable = wasError && isArrayMember(lastResult.error, FIRMWARE.REVISION_CHECK_RETRIABLE_ERRORS);
455
- if (notDoneYet || wasErrorRetriable) {
456
- await this.checkFirmwareRevision();
457
- }
458
- }
459
- async checkFirmwareRevision() {
460
- const firmwareVersion = this.getVersion();
461
- if (!firmwareVersion || !this.features || !this.firmwareType) {
462
- return;
463
- }
464
- if (this.features && this.features.bootloader_mode === true) {
465
- return;
466
- }
467
- const release = getReleaseAsset(this.features.internal_model, firmwareVersion, this.firmwareType);
468
- const result = await checkFirmwareRevision({
469
- internalModel: this.features.internal_model,
470
- deviceRevision: this.features.revision,
471
- firmwareVersion,
472
- expectedRevision: release?.firmware_revision,
473
- firmwareType: this.firmwareType
474
- });
475
- this.authenticityChecks = {
476
- ...this.authenticityChecks,
477
- firmwareRevision: result
478
- };
479
- }
480
- async _updateCurrentRelease(feat) {
481
- const firmwareVersion = getFirmwareVersionArray({
482
- features: feat
483
- });
484
- const newFirmwareType = getFirmwareType(feat);
485
- if (!firmwareVersion) {
486
- return;
487
- }
488
- if (this._currentRelease && newFirmwareType === this.firmwareType && versionUtils.isEqual(this._currentRelease.version, firmwareVersion)) {
489
- return;
490
- }
491
- const release = await getReleaseByVersion(feat, firmwareVersion, newFirmwareType);
492
- this._currentRelease = release;
493
- this.availableTranslations = this._currentRelease?.translations ?? {};
494
- }
495
- _updateFeatures(feat) {
496
- const capabilities = parseCapabilities(feat);
497
- feat.capabilities = capabilities;
498
- if (this.features && this.features.session_id && !feat.session_id) {
499
- feat.session_id = this.features.session_id;
500
- }
501
- feat.unlocked = feat.unlocked ?? true;
502
- const revision = parseRevision(feat);
503
- feat.revision = revision;
504
- if (!feat.model && feat.major_version === 1) {
505
- feat.model = '1';
506
- }
507
- if (!feat.internal_model || !DeviceModelInternal[feat.internal_model]) {
508
- feat.internal_model = ensureInternalModelFeature(feat.model);
509
- }
510
- const version = this.getVersion();
511
- const newVersion = getFirmwareOrBootloaderVersionArray(feat);
512
- this.deviceVersionCheck(feat);
513
- if (!version || !versionUtils.isEqual(version, newVersion)) {
514
- this._unavailableCapabilities = getUnavailableCapabilities(feat, getAllNetworks());
515
- this._firmwareStatus = getFirmwareStatus(feat, getFirmwareType(feat));
516
- this._firmwareReleaseConfigInfo = getFirmwareReleaseConfigInfo(feat, getFirmwareType(feat));
517
- this._currentRelease = getReleaseAsset(feat.internal_model, newVersion, getFirmwareType(feat));
518
- this.availableTranslations = this._currentRelease?.translations ?? {};
519
- }
520
- this._features = feat;
521
- this._firmwareType = getFirmwareType(feat);
522
- this.updateNameAndColor();
523
- this.busy = undefined;
524
- }
525
- deviceVersionCheck(feat) {
526
- const version = this.getVersion();
527
- const oldId = this.features?.device_id;
528
- if (!oldId || !!feat.bootloader_mode || !version) return;
529
- const newVersion = getFirmwareOrBootloaderVersionArray(feat);
530
- if (feat.device_id !== oldId) {
531
- if (feat.initialized === this.features?.initialized) {
532
- const oldDevice = this.toMessageObject();
533
- this.transport.enumerate().then(res => {
534
- const descriptors = res.success ? res.payload : undefined;
535
- console.error('getFeatures device id mismatch', oldDevice, feat, descriptors);
536
- });
537
- }
538
- return;
539
- }
540
- if (!versionUtils.isEqual(version, newVersion)) {
541
- this.emit(DEVICE.FIRMWARE_VERSION_CHANGED, {
542
- oldVersion: version,
543
- newVersion,
544
- device: this.toMessageObject()
545
- });
546
- }
547
- }
548
- updateNameAndColor() {
549
- const {
550
- internal_model,
551
- model_variant
552
- } = this.thp?.properties ?? {};
553
- const internalModel = this._features?.internal_model ?? internal_model;
554
- const unitColor = this._features?.unit_color ?? (model_variant ?? 0) % 256;
555
- const deviceInfo = models[internalModel] ?? {
556
- name: `Unknown ${internalModel}`,
557
- colors: {}
558
- };
559
- this.name = deviceInfo.name;
560
- if (unitColor) {
561
- const deviceUnitColor = unitColor.toString();
562
- if (deviceUnitColor in deviceInfo.colors) {
563
- this.color = deviceInfo.colors[deviceUnitColor];
564
- }
565
- }
566
- }
567
- updateFeature(key, value) {
568
- if (this._features) {
569
- this._features = {
570
- ...this._features,
571
- [key]: value
572
- };
573
- this.lifecycle.emit(DEVICE.CHANGED);
574
- }
575
- }
576
- prompt(type, args) {
577
- return new Promise(callback => {
578
- if (!this.listenerCount(type)) {
579
- const payload = {
580
- success: false,
581
- error: new Error(`${type} callback not configured`)
582
- };
583
- callback(payload);
584
- } else {
585
- this.emit(type, {
586
- callback,
587
- ...args
588
- });
589
- }
590
- });
591
- }
592
- isUnacquired() {
593
- return this.features === undefined;
594
- }
595
- disconnect() {
596
- _log.debug('Disconnect cleanup');
597
- this.transport.off(TRANSPORT.STOPPED, this.onTransportStopped);
598
- this.transport.deviceEvents.off(this.descriptor.path, this.onTransportDeviceEvent);
599
- this.removeAllListeners();
600
- this.sessionDfd?.reject(new Error());
601
- if (this.sessionAcquired) {
602
- this.transport.releaseSync(this.sessionAcquired);
603
- this.sessionAcquired = null;
604
- }
605
- this.lifecycle.emit(DEVICE.DISCONNECT);
606
- return this.interrupt(ERRORS.TypedError('Device_Disconnected'));
607
- }
608
- isBootloader() {
609
- return this.features && !!this.features.bootloader_mode;
610
- }
611
- isInitialized() {
612
- return this.features && !!this.features.initialized;
613
- }
614
- isSeedless() {
615
- return this.features && !!this.features.no_backup;
616
- }
617
- getVersion() {
618
- return this.features ? getFirmwareOrBootloaderVersionArray(this.features) : undefined;
619
- }
620
- atLeast(versions) {
621
- const version = this.getVersion();
622
- if (!this.features || !version) return false;
623
- const modelVersion = typeof versions === 'string' ? versions : versions[this.features.major_version - 1];
624
- return versionUtils.isNewerOrEqual(version, modelVersion);
625
- }
626
- isUsed() {
627
- return !!this.transport.getDescriptor(this.descriptor.path)?.session;
628
- }
629
- isUsedHere() {
630
- return !!this.sessionAcquired;
631
- }
632
- getBusy() {
633
- return this.busy;
634
- }
635
- isUsedElsewhere() {
636
- return this.isUsed() && !this.isUsedHere();
637
- }
638
- getUniquePath() {
639
- return this.uniquePath;
640
- }
641
- hasUnexpectedMode(allow) {
642
- if (this.features) {
643
- if (this.isBootloader() && !allow.includes(UI_REQUEST.BOOTLOADER)) {
644
- return UI_REQUEST.BOOTLOADER;
645
- }
646
- if (!this.isInitialized() && !allow.includes(UI_REQUEST.INITIALIZE)) {
647
- return UI_REQUEST.INITIALIZE;
648
- }
649
- if (this.isSeedless() && !allow.includes(UI_REQUEST.SEEDLESS)) {
650
- return UI_REQUEST.SEEDLESS;
651
- }
652
- }
653
- return null;
654
- }
655
- getStatus() {
656
- if (this.isUsedElsewhere()) return 'occupied';
657
- if (this.wasUsedElsewhere) return 'used';
658
- if (this.busy) return this.busy;
659
- return 'available';
660
- }
661
- getDeviceThp() {
662
- const state = this.thp?.serialize();
663
- return state ? {
664
- properties: state.properties,
665
- credentials: state.credentials,
666
- channel: state.channel
667
- } : undefined;
668
- }
669
- toMessageObject() {
670
- const {
671
- name,
672
- uniquePath: path,
673
- descriptor
674
- } = this;
675
- const {
676
- apiType,
677
- id
678
- } = descriptor;
679
- const base = {
680
- path,
681
- name,
682
- descriptor: {
683
- apiType,
684
- id
685
- }
686
- };
687
- if (this.unreadableError) {
688
- return {
689
- ...base,
690
- type: 'unreadable',
691
- error: this.unreadableError,
692
- label: 'Unreadable device',
693
- hid: this.possibleHIDdevice
694
- };
695
- }
696
- if (this.isUnacquired()) {
697
- const sessionOwner = this.transport.getDescriptor(this.descriptor.path)?.sessionOwner;
698
- return {
699
- ...base,
700
- type: 'unacquired',
701
- label: 'Unacquired device',
702
- name: this.name,
703
- transportSessionOwner: this.sessionAcquired ? undefined : sessionOwner,
704
- thp: this.getDeviceThp(),
705
- status: this.busy ? this.busy : undefined
706
- };
707
- }
708
- const defaultLabel = 'My Trezor';
709
- const label = this.features.label === '' || !this.features.label ? defaultLabel : this.features.label;
710
- return {
711
- ...base,
712
- type: 'acquired',
713
- id: this.features.device_id,
714
- label,
715
- state: this.getState(),
716
- status: this.getStatus(),
717
- mode: getFirmwareMode(this.features),
718
- color: this.color,
719
- firmware: this.firmwareStatus,
720
- firmwareReleaseConfigInfo: this.firmwareReleaseConfigInfo,
721
- firmwareType: this.firmwareType,
722
- features: this.features,
723
- unavailableCapabilities: this.unavailableCapabilities,
724
- availableTranslations: this.availableTranslations,
725
- authenticityChecks: this.authenticityChecks,
726
- thp: this.getDeviceThp()
727
- };
728
- }
729
- }