@ukeyfe/hardware-core 1.1.24 → 1.1.26

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 (881) hide show
  1. package/README.md +1 -1
  2. package/__tests__/benfen.test.ts +1 -1
  3. package/__tests__/checkBootloaderReleast.test.ts +3 -2
  4. package/__tests__/evmSignTransaction.test.ts +3 -2
  5. package/dist/api/BaseMethod.d.ts +9 -4
  6. package/dist/api/BaseMethod.d.ts.map +1 -1
  7. package/dist/api/CheckAllFirmwareRelease.d.ts +1 -1
  8. package/dist/api/CheckAllFirmwareRelease.d.ts.map +1 -1
  9. package/dist/api/CheckBLEFirmwareRelease.d.ts.map +1 -1
  10. package/dist/api/CheckBootloaderRelease.d.ts.map +1 -1
  11. package/dist/api/CheckBridgeStatus.d.ts.map +1 -1
  12. package/dist/api/CheckFirmwareRelease.d.ts.map +1 -1
  13. package/dist/api/CheckFirmwareTypeAvailable.d.ts +6 -0
  14. package/dist/api/CheckFirmwareTypeAvailable.d.ts.map +1 -0
  15. package/dist/api/CipherKeyValue.d.ts +2 -2
  16. package/dist/api/CipherKeyValue.d.ts.map +1 -1
  17. package/dist/api/FirmwareUpdate.d.ts +1 -1
  18. package/dist/api/FirmwareUpdate.d.ts.map +1 -1
  19. package/dist/api/FirmwareUpdateV2.d.ts +3 -2
  20. package/dist/api/FirmwareUpdateV2.d.ts.map +1 -1
  21. package/dist/api/FirmwareUpdateV3.d.ts +7 -2
  22. package/dist/api/FirmwareUpdateV3.d.ts.map +1 -1
  23. package/dist/api/GetFeatures.d.ts.map +1 -1
  24. package/dist/api/GetPassphraseState.d.ts.map +1 -1
  25. package/dist/api/GetUkeyFeatures.d.ts.map +1 -1
  26. package/dist/api/PromptWebDeviceAccess.d.ts.map +1 -1
  27. package/dist/api/SearchDevices.d.ts +2 -1
  28. package/dist/api/SearchDevices.d.ts.map +1 -1
  29. package/dist/api/alephium/AlephiumGetAddress.d.ts +2 -2
  30. package/dist/api/alephium/AlephiumGetAddress.d.ts.map +1 -1
  31. package/dist/api/alephium/AlephiumSignMessage.d.ts +1 -1
  32. package/dist/api/alephium/AlephiumSignMessage.d.ts.map +1 -1
  33. package/dist/api/alephium/AlephiumSignTransaction.d.ts.map +1 -1
  34. package/dist/api/algo/AlgoGetAddress.d.ts +2 -2
  35. package/dist/api/algo/AlgoGetAddress.d.ts.map +1 -1
  36. package/dist/api/algo/AlgoSignTransaction.d.ts +1 -1
  37. package/dist/api/algo/AlgoSignTransaction.d.ts.map +1 -1
  38. package/dist/api/allnetwork/AllNetworkGetAddress.d.ts +1 -1
  39. package/dist/api/allnetwork/AllNetworkGetAddress.d.ts.map +1 -1
  40. package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts +2 -2
  41. package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts.map +1 -1
  42. package/dist/api/allnetwork/AllNetworkGetAddressByLoop.d.ts.map +1 -1
  43. package/dist/api/aptos/AptosGetAddress.d.ts +2 -2
  44. package/dist/api/aptos/AptosGetAddress.d.ts.map +1 -1
  45. package/dist/api/aptos/AptosGetPublicKey.d.ts +1 -1
  46. package/dist/api/aptos/AptosGetPublicKey.d.ts.map +1 -1
  47. package/dist/api/aptos/AptosSignInMessage.d.ts +2 -2
  48. package/dist/api/aptos/AptosSignInMessage.d.ts.map +1 -1
  49. package/dist/api/aptos/AptosSignMessage.d.ts +2 -2
  50. package/dist/api/aptos/AptosSignMessage.d.ts.map +1 -1
  51. package/dist/api/aptos/AptosSignTransaction.d.ts +1 -1
  52. package/dist/api/aptos/AptosSignTransaction.d.ts.map +1 -1
  53. package/dist/api/benfen/BenfenGetAddress.d.ts +2 -2
  54. package/dist/api/benfen/BenfenGetAddress.d.ts.map +1 -1
  55. package/dist/api/benfen/BenfenGetPublicKey.d.ts +1 -1
  56. package/dist/api/benfen/BenfenGetPublicKey.d.ts.map +1 -1
  57. package/dist/api/benfen/BenfenSignMessage.d.ts +1 -1
  58. package/dist/api/benfen/BenfenSignMessage.d.ts.map +1 -1
  59. package/dist/api/benfen/BenfenSignTransaction.d.ts +1 -1
  60. package/dist/api/benfen/BenfenSignTransaction.d.ts.map +1 -1
  61. package/dist/api/btc/BTCGetAddress.d.ts +2 -2
  62. package/dist/api/btc/BTCGetAddress.d.ts.map +1 -1
  63. package/dist/api/btc/BTCGetPublicKey.d.ts +2 -2
  64. package/dist/api/btc/BTCGetPublicKey.d.ts.map +1 -1
  65. package/dist/api/btc/BTCSignMessage.d.ts +1 -1
  66. package/dist/api/btc/BTCSignMessage.d.ts.map +1 -1
  67. package/dist/api/btc/BTCSignPsbt.d.ts +1 -1
  68. package/dist/api/btc/BTCSignPsbt.d.ts.map +1 -1
  69. package/dist/api/btc/BTCSignTransaction.d.ts +2 -2
  70. package/dist/api/btc/BTCSignTransaction.d.ts.map +1 -1
  71. package/dist/api/btc/BTCVerifyMessage.d.ts +1 -1
  72. package/dist/api/btc/BTCVerifyMessage.d.ts.map +1 -1
  73. package/dist/api/btc/helpers/btcParamsUtils.d.ts.map +1 -1
  74. package/dist/api/btc/helpers/signtx.d.ts +2 -2
  75. package/dist/api/btc/helpers/signtx.d.ts.map +1 -1
  76. package/dist/api/btc/helpers/signtxLegacy.d.ts +2 -2
  77. package/dist/api/btc/helpers/signtxLegacy.d.ts.map +1 -1
  78. package/dist/api/btc/helpers/xpubUtils.d.ts.map +1 -1
  79. package/dist/api/cardano/CardanoGetAddress.d.ts +1 -1
  80. package/dist/api/cardano/CardanoGetAddress.d.ts.map +1 -1
  81. package/dist/api/cardano/CardanoGetPublicKey.d.ts +1 -1
  82. package/dist/api/cardano/CardanoGetPublicKey.d.ts.map +1 -1
  83. package/dist/api/cardano/CardanoSignMessage.d.ts +1 -1
  84. package/dist/api/cardano/CardanoSignMessage.d.ts.map +1 -1
  85. package/dist/api/cardano/CardanoSignTransaction.d.ts +1 -1
  86. package/dist/api/cardano/CardanoSignTransaction.d.ts.map +1 -1
  87. package/dist/api/cardano/helper/addressParameters.d.ts.map +1 -1
  88. package/dist/api/cardano/helper/auxiliaryData.d.ts +1 -1
  89. package/dist/api/cardano/helper/auxiliaryData.d.ts.map +1 -1
  90. package/dist/api/cardano/helper/cardanoInputs.d.ts.map +1 -1
  91. package/dist/api/cardano/helper/cardanoOutputs.d.ts.map +1 -1
  92. package/dist/api/cardano/helper/certificate.d.ts +1 -1
  93. package/dist/api/cardano/helper/certificate.d.ts.map +1 -1
  94. package/dist/api/cardano/helper/token.d.ts +1 -1
  95. package/dist/api/cardano/helper/token.d.ts.map +1 -1
  96. package/dist/api/cardano/helper/witnesses.d.ts +2 -2
  97. package/dist/api/cardano/helper/witnesses.d.ts.map +1 -1
  98. package/dist/api/conflux/ConfluxGetAddress.d.ts +2 -2
  99. package/dist/api/conflux/ConfluxGetAddress.d.ts.map +1 -1
  100. package/dist/api/conflux/ConfluxSignMessage.d.ts +1 -1
  101. package/dist/api/conflux/ConfluxSignMessage.d.ts.map +1 -1
  102. package/dist/api/conflux/ConfluxSignMessageCIP23.d.ts +1 -1
  103. package/dist/api/conflux/ConfluxSignMessageCIP23.d.ts.map +1 -1
  104. package/dist/api/conflux/ConfluxSignTransaction.d.ts +2 -2
  105. package/dist/api/conflux/ConfluxSignTransaction.d.ts.map +1 -1
  106. package/dist/api/cosmos/CosmosGetAddress.d.ts +2 -2
  107. package/dist/api/cosmos/CosmosGetAddress.d.ts.map +1 -1
  108. package/dist/api/cosmos/CosmosGetPublicKey.d.ts.map +1 -1
  109. package/dist/api/cosmos/CosmosSignTransaction.d.ts +1 -1
  110. package/dist/api/cosmos/CosmosSignTransaction.d.ts.map +1 -1
  111. package/dist/api/device/DeviceBackup.d.ts +1 -1
  112. package/dist/api/device/DeviceBackup.d.ts.map +1 -1
  113. package/dist/api/device/DeviceCancel.d.ts +1 -1
  114. package/dist/api/device/DeviceCancel.d.ts.map +1 -1
  115. package/dist/api/device/DeviceChangePin.d.ts +1 -1
  116. package/dist/api/device/DeviceChangePin.d.ts.map +1 -1
  117. package/dist/api/device/DeviceFlags.d.ts +1 -1
  118. package/dist/api/device/DeviceFlags.d.ts.map +1 -1
  119. package/dist/api/device/DeviceFullyUploadResource.d.ts +1 -1
  120. package/dist/api/device/DeviceFullyUploadResource.d.ts.map +1 -1
  121. package/dist/api/device/DeviceLock.d.ts +1 -1
  122. package/dist/api/device/DeviceLock.d.ts.map +1 -1
  123. package/dist/api/device/DeviceRebootToBoardloader.d.ts.map +1 -1
  124. package/dist/api/device/DeviceRebootToBootloader.d.ts +1 -1
  125. package/dist/api/device/DeviceRebootToBootloader.d.ts.map +1 -1
  126. package/dist/api/device/DeviceRecovery.d.ts +1 -1
  127. package/dist/api/device/DeviceRecovery.d.ts.map +1 -1
  128. package/dist/api/device/DeviceReset.d.ts +1 -1
  129. package/dist/api/device/DeviceReset.d.ts.map +1 -1
  130. package/dist/api/device/DeviceSettings.d.ts +1 -1
  131. package/dist/api/device/DeviceSettings.d.ts.map +1 -1
  132. package/dist/api/device/DeviceSupportFeatures.d.ts.map +1 -1
  133. package/dist/api/device/DeviceUnlock.d.ts +1 -1
  134. package/dist/api/device/DeviceUnlock.d.ts.map +1 -1
  135. package/dist/api/device/DeviceUpdateBootloader.d.ts +10 -7
  136. package/dist/api/device/DeviceUpdateBootloader.d.ts.map +1 -1
  137. package/dist/api/device/DeviceUpdateReboot.d.ts +1 -1
  138. package/dist/api/device/DeviceUpdateReboot.d.ts.map +1 -1
  139. package/dist/api/device/DeviceUploadResource.d.ts +9 -4
  140. package/dist/api/device/DeviceUploadResource.d.ts.map +1 -1
  141. package/dist/api/device/DeviceVerify.d.ts +1 -1
  142. package/dist/api/device/DeviceVerify.d.ts.map +1 -1
  143. package/dist/api/device/DeviceWipe.d.ts +1 -1
  144. package/dist/api/device/DeviceWipe.d.ts.map +1 -1
  145. package/dist/api/dynex/DnxGetAddress.d.ts +1 -1
  146. package/dist/api/dynex/DnxGetAddress.d.ts.map +1 -1
  147. package/dist/api/dynex/DnxSignTransaction.d.ts +2 -2
  148. package/dist/api/dynex/DnxSignTransaction.d.ts.map +1 -1
  149. package/dist/api/evm/EVMGetAddress.d.ts +2 -2
  150. package/dist/api/evm/EVMGetAddress.d.ts.map +1 -1
  151. package/dist/api/evm/EVMGetPublicKey.d.ts +2 -2
  152. package/dist/api/evm/EVMGetPublicKey.d.ts.map +1 -1
  153. package/dist/api/evm/EVMSignMessage.d.ts +1 -1
  154. package/dist/api/evm/EVMSignMessage.d.ts.map +1 -1
  155. package/dist/api/evm/EVMSignMessageEIP712.d.ts +1 -1
  156. package/dist/api/evm/EVMSignMessageEIP712.d.ts.map +1 -1
  157. package/dist/api/evm/EVMSignTransaction.d.ts +1 -1
  158. package/dist/api/evm/EVMSignTransaction.d.ts.map +1 -1
  159. package/dist/api/evm/EVMSignTypedData.d.ts +1 -1
  160. package/dist/api/evm/EVMSignTypedData.d.ts.map +1 -1
  161. package/dist/api/evm/EVMVerifyMessage.d.ts +1 -1
  162. package/dist/api/evm/EVMVerifyMessage.d.ts.map +1 -1
  163. package/dist/api/evm/latest/getAddress.d.ts +1 -1
  164. package/dist/api/evm/latest/getAddress.d.ts.map +1 -1
  165. package/dist/api/evm/latest/getPublicKey.d.ts +1 -1
  166. package/dist/api/evm/latest/getPublicKey.d.ts.map +1 -1
  167. package/dist/api/evm/latest/signMessage.d.ts +1 -1
  168. package/dist/api/evm/latest/signMessage.d.ts.map +1 -1
  169. package/dist/api/evm/latest/signTransaction.d.ts +2 -2
  170. package/dist/api/evm/latest/signTransaction.d.ts.map +1 -1
  171. package/dist/api/evm/latest/signTypedData.d.ts +2 -2
  172. package/dist/api/evm/latest/signTypedData.d.ts.map +1 -1
  173. package/dist/api/evm/latest/signTypedHash.d.ts +2 -2
  174. package/dist/api/evm/latest/signTypedHash.d.ts.map +1 -1
  175. package/dist/api/evm/latest/verifyMessage.d.ts +1 -1
  176. package/dist/api/evm/latest/verifyMessage.d.ts.map +1 -1
  177. package/dist/api/evm/legacyV1/getAddress.d.ts +1 -1
  178. package/dist/api/evm/legacyV1/getAddress.d.ts.map +1 -1
  179. package/dist/api/evm/legacyV1/getPublicKey.d.ts +1 -1
  180. package/dist/api/evm/legacyV1/getPublicKey.d.ts.map +1 -1
  181. package/dist/api/evm/legacyV1/signMessage.d.ts +1 -1
  182. package/dist/api/evm/legacyV1/signMessage.d.ts.map +1 -1
  183. package/dist/api/evm/legacyV1/signTransaction.d.ts +2 -2
  184. package/dist/api/evm/legacyV1/signTransaction.d.ts.map +1 -1
  185. package/dist/api/evm/legacyV1/signTypedData.d.ts +2 -2
  186. package/dist/api/evm/legacyV1/signTypedData.d.ts.map +1 -1
  187. package/dist/api/evm/legacyV1/signTypedHash.d.ts +2 -2
  188. package/dist/api/evm/legacyV1/signTypedHash.d.ts.map +1 -1
  189. package/dist/api/evm/legacyV1/verifyMessage.d.ts +1 -1
  190. package/dist/api/evm/legacyV1/verifyMessage.d.ts.map +1 -1
  191. package/dist/api/filecoin/FilecoinGetAddress.d.ts +2 -2
  192. package/dist/api/filecoin/FilecoinGetAddress.d.ts.map +1 -1
  193. package/dist/api/filecoin/FilecoinSignTransaction.d.ts +1 -1
  194. package/dist/api/filecoin/FilecoinSignTransaction.d.ts.map +1 -1
  195. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts +8 -6
  196. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts.map +1 -1
  197. package/dist/api/firmware/bootloaderHelper.d.ts +1 -1
  198. package/dist/api/firmware/bootloaderHelper.d.ts.map +1 -1
  199. package/dist/api/firmware/getBinary.d.ts +6 -3
  200. package/dist/api/firmware/getBinary.d.ts.map +1 -1
  201. package/dist/api/firmware/releaseHelper.d.ts +7 -2
  202. package/dist/api/firmware/releaseHelper.d.ts.map +1 -1
  203. package/dist/api/firmware/updateBootloader.d.ts +8 -3
  204. package/dist/api/firmware/updateBootloader.d.ts.map +1 -1
  205. package/dist/api/firmware/uploadFirmware.d.ts +5 -5
  206. package/dist/api/firmware/uploadFirmware.d.ts.map +1 -1
  207. package/dist/api/helpers/batchGetPublickeys.d.ts +2 -2
  208. package/dist/api/helpers/batchGetPublickeys.d.ts.map +1 -1
  209. package/dist/api/helpers/paramsValidator.d.ts.map +1 -1
  210. package/dist/api/helpers/pathUtils.d.ts +1 -1
  211. package/dist/api/helpers/pathUtils.d.ts.map +1 -1
  212. package/dist/api/helpers/typeNameUtils.d.ts +2 -2
  213. package/dist/api/helpers/typeNameUtils.d.ts.map +1 -1
  214. package/dist/api/index.d.ts +1 -1
  215. package/dist/api/index.d.ts.map +1 -1
  216. package/dist/api/kaspa/KaspaGetAddress.d.ts +2 -2
  217. package/dist/api/kaspa/KaspaGetAddress.d.ts.map +1 -1
  218. package/dist/api/kaspa/KaspaSignTransaction.d.ts +3 -3
  219. package/dist/api/kaspa/KaspaSignTransaction.d.ts.map +1 -1
  220. package/dist/api/kaspa/helpers/HashWriter.d.ts.map +1 -1
  221. package/dist/api/kaspa/helpers/TransferSerialize.d.ts +1 -1
  222. package/dist/api/kaspa/helpers/TransferSerialize.d.ts.map +1 -1
  223. package/dist/api/lightning/LnurlAuth.d.ts +1 -1
  224. package/dist/api/lightning/LnurlAuth.d.ts.map +1 -1
  225. package/dist/api/near/NearGetAddress.d.ts +2 -2
  226. package/dist/api/near/NearGetAddress.d.ts.map +1 -1
  227. package/dist/api/near/NearSignTransaction.d.ts +1 -1
  228. package/dist/api/near/NearSignTransaction.d.ts.map +1 -1
  229. package/dist/api/nem/NEMGetAddress.d.ts +2 -2
  230. package/dist/api/nem/NEMGetAddress.d.ts.map +1 -1
  231. package/dist/api/nem/NEMSignTransaction.d.ts +2 -2
  232. package/dist/api/nem/NEMSignTransaction.d.ts.map +1 -1
  233. package/dist/api/neo/NeoGetAddress.d.ts +2 -2
  234. package/dist/api/neo/NeoGetAddress.d.ts.map +1 -1
  235. package/dist/api/neo/NeoSignTransaction.d.ts +1 -1
  236. package/dist/api/neo/NeoSignTransaction.d.ts.map +1 -1
  237. package/dist/api/nervos/NervosGetAddress.d.ts +1 -1
  238. package/dist/api/nervos/NervosGetAddress.d.ts.map +1 -1
  239. package/dist/api/nervos/NervosSignTransaction.d.ts +1 -1
  240. package/dist/api/nervos/NervosSignTransaction.d.ts.map +1 -1
  241. package/dist/api/nexa/NexaGetAddress.d.ts +1 -1
  242. package/dist/api/nexa/NexaGetAddress.d.ts.map +1 -1
  243. package/dist/api/nexa/NexaSignTransaction.d.ts +3 -3
  244. package/dist/api/nexa/NexaSignTransaction.d.ts.map +1 -1
  245. package/dist/api/nostr/NostrDecryptMessage.d.ts +1 -1
  246. package/dist/api/nostr/NostrDecryptMessage.d.ts.map +1 -1
  247. package/dist/api/nostr/NostrEncryptMessage.d.ts +1 -1
  248. package/dist/api/nostr/NostrEncryptMessage.d.ts.map +1 -1
  249. package/dist/api/nostr/NostrGetPublicKey.d.ts +2 -2
  250. package/dist/api/nostr/NostrGetPublicKey.d.ts.map +1 -1
  251. package/dist/api/nostr/NostrSignEvent.d.ts +1 -1
  252. package/dist/api/nostr/NostrSignEvent.d.ts.map +1 -1
  253. package/dist/api/nostr/NostrSignSchnorr.d.ts +1 -1
  254. package/dist/api/nostr/NostrSignSchnorr.d.ts.map +1 -1
  255. package/dist/api/nostr/helper/index.d.ts +1 -1
  256. package/dist/api/nostr/helper/index.d.ts.map +1 -1
  257. package/dist/api/polkadot/PolkadotGetAddress.d.ts +2 -2
  258. package/dist/api/polkadot/PolkadotGetAddress.d.ts.map +1 -1
  259. package/dist/api/polkadot/PolkadotSignTransaction.d.ts +1 -1
  260. package/dist/api/polkadot/PolkadotSignTransaction.d.ts.map +1 -1
  261. package/dist/api/polkadot/networks.d.ts +7 -1
  262. package/dist/api/polkadot/networks.d.ts.map +1 -1
  263. package/dist/api/scdo/ScdoGetAddress.d.ts +2 -2
  264. package/dist/api/scdo/ScdoGetAddress.d.ts.map +1 -1
  265. package/dist/api/scdo/ScdoSignMessage.d.ts +1 -1
  266. package/dist/api/scdo/ScdoSignMessage.d.ts.map +1 -1
  267. package/dist/api/scdo/ScdoSignTransaction.d.ts +1 -1
  268. package/dist/api/scdo/ScdoSignTransaction.d.ts.map +1 -1
  269. package/dist/api/solana/SolGetAddress.d.ts +2 -2
  270. package/dist/api/solana/SolGetAddress.d.ts.map +1 -1
  271. package/dist/api/solana/SolSignMessage.d.ts +1 -1
  272. package/dist/api/solana/SolSignMessage.d.ts.map +1 -1
  273. package/dist/api/solana/SolSignOffchainMessage.d.ts +1 -1
  274. package/dist/api/solana/SolSignOffchainMessage.d.ts.map +1 -1
  275. package/dist/api/solana/SolSignTransaction.d.ts +2 -2
  276. package/dist/api/solana/SolSignTransaction.d.ts.map +1 -1
  277. package/dist/api/starcoin/StarcoinGetAddress.d.ts +2 -2
  278. package/dist/api/starcoin/StarcoinGetAddress.d.ts.map +1 -1
  279. package/dist/api/starcoin/StarcoinGetPublicKey.d.ts +2 -2
  280. package/dist/api/starcoin/StarcoinGetPublicKey.d.ts.map +1 -1
  281. package/dist/api/starcoin/StarcoinSignMessage.d.ts +1 -1
  282. package/dist/api/starcoin/StarcoinSignMessage.d.ts.map +1 -1
  283. package/dist/api/starcoin/StarcoinSignTransaction.d.ts +1 -1
  284. package/dist/api/starcoin/StarcoinSignTransaction.d.ts.map +1 -1
  285. package/dist/api/starcoin/StarcoinVerifyMessage.d.ts +1 -1
  286. package/dist/api/starcoin/StarcoinVerifyMessage.d.ts.map +1 -1
  287. package/dist/api/stellar/StellarGetAddress.d.ts +2 -2
  288. package/dist/api/stellar/StellarGetAddress.d.ts.map +1 -1
  289. package/dist/api/stellar/StellarSignTransaction.d.ts +3 -3
  290. package/dist/api/stellar/StellarSignTransaction.d.ts.map +1 -1
  291. package/dist/api/sui/SuiGetAddress.d.ts +2 -2
  292. package/dist/api/sui/SuiGetAddress.d.ts.map +1 -1
  293. package/dist/api/sui/SuiGetPublicKey.d.ts +1 -1
  294. package/dist/api/sui/SuiGetPublicKey.d.ts.map +1 -1
  295. package/dist/api/sui/SuiSignMessage.d.ts +1 -1
  296. package/dist/api/sui/SuiSignMessage.d.ts.map +1 -1
  297. package/dist/api/sui/SuiSignTransaction.d.ts +1 -1
  298. package/dist/api/sui/SuiSignTransaction.d.ts.map +1 -1
  299. package/dist/api/ton/TonGetAddress.d.ts +2 -2
  300. package/dist/api/ton/TonGetAddress.d.ts.map +1 -1
  301. package/dist/api/ton/TonSignMessage.d.ts +2 -2
  302. package/dist/api/ton/TonSignMessage.d.ts.map +1 -1
  303. package/dist/api/ton/TonSignProof.d.ts +1 -1
  304. package/dist/api/ton/TonSignProof.d.ts.map +1 -1
  305. package/dist/api/tron/TronGetAddress.d.ts +2 -2
  306. package/dist/api/tron/TronGetAddress.d.ts.map +1 -1
  307. package/dist/api/tron/TronSignMessage.d.ts +4 -1
  308. package/dist/api/tron/TronSignMessage.d.ts.map +1 -1
  309. package/dist/api/tron/TronSignTransaction.d.ts +3 -3
  310. package/dist/api/tron/TronSignTransaction.d.ts.map +1 -1
  311. package/dist/api/u2f/GetNextU2FCounter.d.ts +1 -1
  312. package/dist/api/u2f/GetNextU2FCounter.d.ts.map +1 -1
  313. package/dist/api/u2f/SetU2FCounter.d.ts +1 -1
  314. package/dist/api/u2f/SetU2FCounter.d.ts.map +1 -1
  315. package/dist/api/utils.d.ts +1 -1
  316. package/dist/api/utils.d.ts.map +1 -1
  317. package/dist/api/xrp/XrpGetAddress.d.ts +1 -1
  318. package/dist/api/xrp/XrpGetAddress.d.ts.map +1 -1
  319. package/dist/api/xrp/XrpSignTransaction.d.ts +1 -1
  320. package/dist/api/xrp/XrpSignTransaction.d.ts.map +1 -1
  321. package/dist/core/RequestQueue.d.ts +1 -1
  322. package/dist/core/RequestQueue.d.ts.map +1 -1
  323. package/dist/core/index.d.ts +6 -3
  324. package/dist/core/index.d.ts.map +1 -1
  325. package/dist/data/config.d.ts.map +1 -1
  326. package/dist/data-manager/DataManager.d.ts +18 -10
  327. package/dist/data-manager/DataManager.d.ts.map +1 -1
  328. package/dist/data-manager/MessagesConfig.d.ts +2 -2
  329. package/dist/data-manager/MessagesConfig.d.ts.map +1 -1
  330. package/dist/data-manager/TransportManager.d.ts +3 -3
  331. package/dist/data-manager/TransportManager.d.ts.map +1 -1
  332. package/dist/data-manager/connectSettings.d.ts +1 -1
  333. package/dist/data-manager/connectSettings.d.ts.map +1 -1
  334. package/dist/device/Device.d.ts +17 -8
  335. package/dist/device/Device.d.ts.map +1 -1
  336. package/dist/device/DeviceCommands.d.ts +8 -6
  337. package/dist/device/DeviceCommands.d.ts.map +1 -1
  338. package/dist/device/DeviceConnector.d.ts +3 -2
  339. package/dist/device/DeviceConnector.d.ts.map +1 -1
  340. package/dist/device/DeviceList.d.ts +2 -2
  341. package/dist/device/DeviceList.d.ts.map +1 -1
  342. package/dist/device/DevicePool.d.ts +3 -2
  343. package/dist/device/DevicePool.d.ts.map +1 -1
  344. package/dist/events/call.d.ts +2 -2
  345. package/dist/events/call.d.ts.map +1 -1
  346. package/dist/events/core.d.ts +8 -8
  347. package/dist/events/core.d.ts.map +1 -1
  348. package/dist/events/device.d.ts +3 -2
  349. package/dist/events/device.d.ts.map +1 -1
  350. package/dist/events/firmware.d.ts +2 -2
  351. package/dist/events/firmware.d.ts.map +1 -1
  352. package/dist/events/iframe.d.ts +2 -2
  353. package/dist/events/iframe.d.ts.map +1 -1
  354. package/dist/events/ui-request.d.ts +9 -1
  355. package/dist/events/ui-request.d.ts.map +1 -1
  356. package/dist/events/ui-response.d.ts +8 -1
  357. package/dist/events/ui-response.d.ts.map +1 -1
  358. package/dist/index.d.ts +188 -74
  359. package/dist/index.d.ts.map +1 -1
  360. package/dist/index.js +1647 -634
  361. package/dist/inject.d.ts +3 -3
  362. package/dist/inject.d.ts.map +1 -1
  363. package/dist/lowLevelInject.d.ts +3 -3
  364. package/dist/lowLevelInject.d.ts.map +1 -1
  365. package/dist/topLevelInject.d.ts +1 -1
  366. package/dist/topLevelInject.d.ts.map +1 -1
  367. package/dist/types/api/alephiumSignMessage.d.ts +1 -1
  368. package/dist/types/api/alephiumSignMessage.d.ts.map +1 -1
  369. package/dist/types/api/alephiumSignTransaction.d.ts +1 -1
  370. package/dist/types/api/alephiumSignTransaction.d.ts.map +1 -1
  371. package/dist/types/api/algoGetAddress.d.ts +1 -1
  372. package/dist/types/api/algoGetAddress.d.ts.map +1 -1
  373. package/dist/types/api/algoSignTransaction.d.ts +1 -1
  374. package/dist/types/api/algoSignTransaction.d.ts.map +1 -1
  375. package/dist/types/api/allNetworkGetAddress.d.ts +1 -1
  376. package/dist/types/api/allNetworkGetAddress.d.ts.map +1 -1
  377. package/dist/types/api/aptosGetAddress.d.ts +1 -1
  378. package/dist/types/api/aptosGetAddress.d.ts.map +1 -1
  379. package/dist/types/api/aptosSignInMessage.d.ts +1 -1
  380. package/dist/types/api/aptosSignInMessage.d.ts.map +1 -1
  381. package/dist/types/api/aptosSignMessage.d.ts +1 -1
  382. package/dist/types/api/aptosSignMessage.d.ts.map +1 -1
  383. package/dist/types/api/aptosSignTransaction.d.ts +1 -1
  384. package/dist/types/api/aptosSignTransaction.d.ts.map +1 -1
  385. package/dist/types/api/benfenGetAddress.d.ts +1 -1
  386. package/dist/types/api/benfenGetAddress.d.ts.map +1 -1
  387. package/dist/types/api/benfenSignMessage.d.ts +1 -1
  388. package/dist/types/api/benfenSignMessage.d.ts.map +1 -1
  389. package/dist/types/api/benfenSignTransaction.d.ts +1 -1
  390. package/dist/types/api/benfenSignTransaction.d.ts.map +1 -1
  391. package/dist/types/api/btcGetAddress.d.ts +1 -1
  392. package/dist/types/api/btcGetAddress.d.ts.map +1 -1
  393. package/dist/types/api/btcGetPublicKey.d.ts +1 -1
  394. package/dist/types/api/btcGetPublicKey.d.ts.map +1 -1
  395. package/dist/types/api/btcSignMessage.d.ts +1 -1
  396. package/dist/types/api/btcSignMessage.d.ts.map +1 -1
  397. package/dist/types/api/btcSignPsbt.d.ts +1 -1
  398. package/dist/types/api/btcSignPsbt.d.ts.map +1 -1
  399. package/dist/types/api/btcSignTransaction.d.ts +1 -1
  400. package/dist/types/api/btcSignTransaction.d.ts.map +1 -1
  401. package/dist/types/api/btcVerifyMessage.d.ts +1 -1
  402. package/dist/types/api/btcVerifyMessage.d.ts.map +1 -1
  403. package/dist/types/api/cardanoGetPublicKey.d.ts +1 -1
  404. package/dist/types/api/cardanoGetPublicKey.d.ts.map +1 -1
  405. package/dist/types/api/cardanoSignMessage.d.ts +1 -1
  406. package/dist/types/api/cardanoSignMessage.d.ts.map +1 -1
  407. package/dist/types/api/checkAllFirmwareRelease.d.ts +5 -1
  408. package/dist/types/api/checkAllFirmwareRelease.d.ts.map +1 -1
  409. package/dist/types/api/checkBLEFirmwareRelease.d.ts +1 -1
  410. package/dist/types/api/checkBLEFirmwareRelease.d.ts.map +1 -1
  411. package/dist/types/api/checkBootloaderRelease.d.ts +5 -2
  412. package/dist/types/api/checkBootloaderRelease.d.ts.map +1 -1
  413. package/dist/types/api/checkFirmwareRelease.d.ts +6 -2
  414. package/dist/types/api/checkFirmwareRelease.d.ts.map +1 -1
  415. package/dist/types/api/checkFirmwareTypeAvailable.d.ts +9 -0
  416. package/dist/types/api/checkFirmwareTypeAvailable.d.ts.map +1 -0
  417. package/dist/types/api/cipherKeyValue.d.ts +1 -1
  418. package/dist/types/api/cipherKeyValue.d.ts.map +1 -1
  419. package/dist/types/api/confluxGetAddress.d.ts +1 -1
  420. package/dist/types/api/confluxGetAddress.d.ts.map +1 -1
  421. package/dist/types/api/confluxSignMessage.d.ts +1 -1
  422. package/dist/types/api/confluxSignMessage.d.ts.map +1 -1
  423. package/dist/types/api/confluxSignMessageCIP23.d.ts +1 -1
  424. package/dist/types/api/confluxSignMessageCIP23.d.ts.map +1 -1
  425. package/dist/types/api/cosmosGetAddress.d.ts +1 -1
  426. package/dist/types/api/cosmosGetAddress.d.ts.map +1 -1
  427. package/dist/types/api/cosmosSignTransaction.d.ts +1 -1
  428. package/dist/types/api/cosmosSignTransaction.d.ts.map +1 -1
  429. package/dist/types/api/deviceBackup.d.ts +1 -1
  430. package/dist/types/api/deviceBackup.d.ts.map +1 -1
  431. package/dist/types/api/deviceCancel.d.ts +1 -1
  432. package/dist/types/api/deviceCancel.d.ts.map +1 -1
  433. package/dist/types/api/deviceChangePin.d.ts +1 -1
  434. package/dist/types/api/deviceChangePin.d.ts.map +1 -1
  435. package/dist/types/api/deviceFlags.d.ts +1 -1
  436. package/dist/types/api/deviceFlags.d.ts.map +1 -1
  437. package/dist/types/api/deviceFullyUploadResource.d.ts +6 -1
  438. package/dist/types/api/deviceFullyUploadResource.d.ts.map +1 -1
  439. package/dist/types/api/deviceLock.d.ts +1 -1
  440. package/dist/types/api/deviceLock.d.ts.map +1 -1
  441. package/dist/types/api/deviceRebootToBoardloader.d.ts +1 -1
  442. package/dist/types/api/deviceRebootToBoardloader.d.ts.map +1 -1
  443. package/dist/types/api/deviceRebootToBootloader.d.ts +1 -1
  444. package/dist/types/api/deviceRebootToBootloader.d.ts.map +1 -1
  445. package/dist/types/api/deviceRecovery.d.ts +1 -1
  446. package/dist/types/api/deviceRecovery.d.ts.map +1 -1
  447. package/dist/types/api/deviceReset.d.ts +1 -1
  448. package/dist/types/api/deviceReset.d.ts.map +1 -1
  449. package/dist/types/api/deviceSettings.d.ts +4 -1
  450. package/dist/types/api/deviceSettings.d.ts.map +1 -1
  451. package/dist/types/api/deviceUnlock.d.ts +1 -1
  452. package/dist/types/api/deviceUnlock.d.ts.map +1 -1
  453. package/dist/types/api/deviceUpdateBootloader.d.ts +6 -3
  454. package/dist/types/api/deviceUpdateBootloader.d.ts.map +1 -1
  455. package/dist/types/api/deviceUploadResource.d.ts +6 -2
  456. package/dist/types/api/deviceUploadResource.d.ts.map +1 -1
  457. package/dist/types/api/deviceWipe.d.ts +1 -1
  458. package/dist/types/api/deviceWipe.d.ts.map +1 -1
  459. package/dist/types/api/dnxSignTransaction.d.ts +1 -1
  460. package/dist/types/api/dnxSignTransaction.d.ts.map +1 -1
  461. package/dist/types/api/evmGetPublicKey.d.ts +1 -1
  462. package/dist/types/api/evmGetPublicKey.d.ts.map +1 -1
  463. package/dist/types/api/evmSignMessage.d.ts +1 -1
  464. package/dist/types/api/evmSignMessage.d.ts.map +1 -1
  465. package/dist/types/api/evmSignMessageEIP712.d.ts +1 -1
  466. package/dist/types/api/evmSignMessageEIP712.d.ts.map +1 -1
  467. package/dist/types/api/evmSignTypedData.d.ts +1 -1
  468. package/dist/types/api/evmSignTypedData.d.ts.map +1 -1
  469. package/dist/types/api/evmVerifyMessage.d.ts +1 -1
  470. package/dist/types/api/evmVerifyMessage.d.ts.map +1 -1
  471. package/dist/types/api/export.d.ts +2 -2
  472. package/dist/types/api/export.d.ts.map +1 -1
  473. package/dist/types/api/filecoinGetAddress.d.ts +1 -1
  474. package/dist/types/api/filecoinGetAddress.d.ts.map +1 -1
  475. package/dist/types/api/filecoinSignTransaction.d.ts +1 -1
  476. package/dist/types/api/filecoinSignTransaction.d.ts.map +1 -1
  477. package/dist/types/api/firmwareUpdate.d.ts +3 -1
  478. package/dist/types/api/firmwareUpdate.d.ts.map +1 -1
  479. package/dist/types/api/getNextU2FCounter.d.ts +1 -1
  480. package/dist/types/api/getNextU2FCounter.d.ts.map +1 -1
  481. package/dist/types/api/index.d.ts +130 -130
  482. package/dist/types/api/index.d.ts.map +1 -1
  483. package/dist/types/api/init.d.ts +1 -1
  484. package/dist/types/api/init.d.ts.map +1 -1
  485. package/dist/types/api/kaspaGetAddress.d.ts +1 -1
  486. package/dist/types/api/kaspaGetAddress.d.ts.map +1 -1
  487. package/dist/types/api/kaspaSignTransaction.d.ts +1 -1
  488. package/dist/types/api/kaspaSignTransaction.d.ts.map +1 -1
  489. package/dist/types/api/nearGetAddress.d.ts +1 -1
  490. package/dist/types/api/nearGetAddress.d.ts.map +1 -1
  491. package/dist/types/api/nearSignTransaction.d.ts +1 -1
  492. package/dist/types/api/nearSignTransaction.d.ts.map +1 -1
  493. package/dist/types/api/nemGetAddress.d.ts +1 -1
  494. package/dist/types/api/nemGetAddress.d.ts.map +1 -1
  495. package/dist/types/api/nemSignTransaction.d.ts +1 -1
  496. package/dist/types/api/nemSignTransaction.d.ts.map +1 -1
  497. package/dist/types/api/polkadotGetAddress.d.ts +1 -1
  498. package/dist/types/api/polkadotGetAddress.d.ts.map +1 -1
  499. package/dist/types/api/polkadotSignTransaction.d.ts +2 -1
  500. package/dist/types/api/polkadotSignTransaction.d.ts.map +1 -1
  501. package/dist/types/api/promptWebDeviceAccess.d.ts +2 -2
  502. package/dist/types/api/promptWebDeviceAccess.d.ts.map +1 -1
  503. package/dist/types/api/scdoGetAddress.d.ts +1 -1
  504. package/dist/types/api/scdoGetAddress.d.ts.map +1 -1
  505. package/dist/types/api/scdoSignMessage.d.ts +1 -1
  506. package/dist/types/api/scdoSignMessage.d.ts.map +1 -1
  507. package/dist/types/api/scdoSignTransaction.d.ts +1 -1
  508. package/dist/types/api/scdoSignTransaction.d.ts.map +1 -1
  509. package/dist/types/api/searchDevices.d.ts +2 -2
  510. package/dist/types/api/searchDevices.d.ts.map +1 -1
  511. package/dist/types/api/setU2FCounter.d.ts +1 -1
  512. package/dist/types/api/setU2FCounter.d.ts.map +1 -1
  513. package/dist/types/api/solGetAddress.d.ts +1 -1
  514. package/dist/types/api/solGetAddress.d.ts.map +1 -1
  515. package/dist/types/api/solSignOffchainMessage.d.ts +1 -1
  516. package/dist/types/api/solSignOffchainMessage.d.ts.map +1 -1
  517. package/dist/types/api/solSignTransaction.d.ts +2 -1
  518. package/dist/types/api/solSignTransaction.d.ts.map +1 -1
  519. package/dist/types/api/starcoinGetAddress.d.ts +1 -1
  520. package/dist/types/api/starcoinGetAddress.d.ts.map +1 -1
  521. package/dist/types/api/starcoinGetPublicKey.d.ts +1 -1
  522. package/dist/types/api/starcoinGetPublicKey.d.ts.map +1 -1
  523. package/dist/types/api/starcoinSignMessage.d.ts +1 -1
  524. package/dist/types/api/starcoinSignMessage.d.ts.map +1 -1
  525. package/dist/types/api/starcoinSignTransaction.d.ts +1 -1
  526. package/dist/types/api/starcoinSignTransaction.d.ts.map +1 -1
  527. package/dist/types/api/starcoinVerifyMessage.d.ts +1 -1
  528. package/dist/types/api/starcoinVerifyMessage.d.ts.map +1 -1
  529. package/dist/types/api/stellarGetAddress.d.ts +1 -1
  530. package/dist/types/api/stellarGetAddress.d.ts.map +1 -1
  531. package/dist/types/api/stellarSignTransaction.d.ts +2 -2
  532. package/dist/types/api/stellarSignTransaction.d.ts.map +1 -1
  533. package/dist/types/api/suiGetAddress.d.ts +1 -1
  534. package/dist/types/api/suiGetAddress.d.ts.map +1 -1
  535. package/dist/types/api/suiSignMessage.d.ts +1 -1
  536. package/dist/types/api/suiSignMessage.d.ts.map +1 -1
  537. package/dist/types/api/suiSignTransaction.d.ts +1 -1
  538. package/dist/types/api/suiSignTransaction.d.ts.map +1 -1
  539. package/dist/types/api/tonGetAddress.d.ts +1 -1
  540. package/dist/types/api/tonGetAddress.d.ts.map +1 -1
  541. package/dist/types/api/tronGetAddress.d.ts +1 -1
  542. package/dist/types/api/tronGetAddress.d.ts.map +1 -1
  543. package/dist/types/api/tronSignMessage.d.ts +1 -1
  544. package/dist/types/api/tronSignMessage.d.ts.map +1 -1
  545. package/dist/types/api/tronSignTransaction.d.ts +1 -1
  546. package/dist/types/api/tronSignTransaction.d.ts.map +1 -1
  547. package/dist/types/device.d.ts +7 -1
  548. package/dist/types/device.d.ts.map +1 -1
  549. package/dist/types/params.d.ts +1 -0
  550. package/dist/types/params.d.ts.map +1 -1
  551. package/dist/types/settings.d.ts +7 -2
  552. package/dist/types/settings.d.ts.map +1 -1
  553. package/dist/utils/bridgeUpdate.d.ts +1 -1
  554. package/dist/utils/bridgeUpdate.d.ts.map +1 -1
  555. package/dist/utils/capabilitieUtils.d.ts +2 -2
  556. package/dist/utils/capabilitieUtils.d.ts.map +1 -1
  557. package/dist/utils/deviceFeaturesUtils.d.ts +8 -5
  558. package/dist/utils/deviceFeaturesUtils.d.ts.map +1 -1
  559. package/dist/utils/deviceInfoUtils.d.ts.map +1 -1
  560. package/dist/utils/deviceSettings.d.ts +29 -0
  561. package/dist/utils/deviceSettings.d.ts.map +1 -0
  562. package/dist/utils/deviceVersionUtils.d.ts.map +1 -1
  563. package/dist/utils/findDefectiveBatchDevice.d.ts.map +1 -1
  564. package/dist/utils/homescreen.d.ts.map +1 -1
  565. package/dist/utils/index.d.ts +2 -0
  566. package/dist/utils/index.d.ts.map +1 -1
  567. package/dist/utils/logger.d.ts +3 -1
  568. package/dist/utils/logger.d.ts.map +1 -1
  569. package/dist/utils/patch.d.ts +1 -1
  570. package/dist/utils/patch.d.ts.map +1 -1
  571. package/dist/utils/release.d.ts +1 -1
  572. package/dist/utils/release.d.ts.map +1 -1
  573. package/dist/utils/tracing.d.ts +34 -0
  574. package/dist/utils/tracing.d.ts.map +1 -0
  575. package/package.json +7 -9
  576. package/src/api/BaseMethod.ts +63 -14
  577. package/src/api/CheckAllFirmwareRelease.ts +14 -6
  578. package/src/api/CheckBLEFirmwareRelease.ts +0 -1
  579. package/src/api/CheckBootloaderRelease.ts +13 -2
  580. package/src/api/CheckBridgeRelease.ts +1 -1
  581. package/src/api/CheckBridgeStatus.ts +1 -0
  582. package/src/api/CheckFirmwareRelease.ts +9 -2
  583. package/src/api/CheckFirmwareTypeAvailable.tsx +30 -0
  584. package/src/api/CipherKeyValue.ts +3 -2
  585. package/src/api/FirmwareUpdate.ts +9 -6
  586. package/src/api/FirmwareUpdateV2.ts +33 -16
  587. package/src/api/FirmwareUpdateV3.ts +154 -31
  588. package/src/api/GetFeatures.ts +1 -0
  589. package/src/api/GetPassphraseState.ts +1 -0
  590. package/src/api/GetUkeyFeatures.ts +1 -0
  591. package/src/api/PromptWebDeviceAccess.ts +4 -2
  592. package/src/api/SearchDevices.ts +2 -1
  593. package/src/api/alephium/AlephiumGetAddress.ts +3 -2
  594. package/src/api/alephium/AlephiumSignMessage.ts +2 -1
  595. package/src/api/alephium/AlephiumSignTransaction.ts +2 -1
  596. package/src/api/algo/AlgoGetAddress.ts +3 -3
  597. package/src/api/algo/AlgoSignTransaction.ts +3 -2
  598. package/src/api/allnetwork/AllNetworkGetAddress.ts +5 -4
  599. package/src/api/allnetwork/AllNetworkGetAddressBase.ts +81 -32
  600. package/src/api/allnetwork/AllNetworkGetAddressByLoop.ts +6 -5
  601. package/src/api/aptos/AptosGetAddress.ts +4 -3
  602. package/src/api/aptos/AptosGetPublicKey.ts +2 -1
  603. package/src/api/aptos/AptosSignInMessage.ts +3 -2
  604. package/src/api/aptos/AptosSignMessage.ts +3 -2
  605. package/src/api/aptos/AptosSignTransaction.ts +2 -1
  606. package/src/api/benfen/BenfenGetAddress.ts +3 -3
  607. package/src/api/benfen/BenfenGetPublicKey.ts +2 -1
  608. package/src/api/benfen/BenfenSignMessage.ts +2 -1
  609. package/src/api/benfen/BenfenSignTransaction.ts +3 -2
  610. package/src/api/btc/BTCGetAddress.ts +3 -2
  611. package/src/api/btc/BTCGetPublicKey.ts +5 -3
  612. package/src/api/btc/BTCSignMessage.ts +2 -1
  613. package/src/api/btc/BTCSignPsbt.ts +4 -2
  614. package/src/api/btc/BTCSignTransaction.ts +8 -7
  615. package/src/api/btc/BTCVerifyMessage.ts +2 -2
  616. package/src/api/btc/helpers/btcParamsUtils.ts +2 -1
  617. package/src/api/btc/helpers/signtx.ts +4 -3
  618. package/src/api/btc/helpers/signtxLegacy.ts +4 -3
  619. package/src/api/btc/helpers/xpubUtils.ts +1 -0
  620. package/src/api/cardano/CardanoGetAddress.ts +5 -4
  621. package/src/api/cardano/CardanoGetPublicKey.ts +2 -1
  622. package/src/api/cardano/CardanoSignMessage.ts +2 -1
  623. package/src/api/cardano/CardanoSignTransaction.ts +11 -10
  624. package/src/api/cardano/helper/addressParameters.ts +2 -0
  625. package/src/api/cardano/helper/auxiliaryData.ts +5 -3
  626. package/src/api/cardano/helper/cardanoInputs.ts +1 -0
  627. package/src/api/cardano/helper/cardanoOutputs.ts +1 -0
  628. package/src/api/cardano/helper/certificate.ts +7 -5
  629. package/src/api/cardano/helper/token.ts +2 -1
  630. package/src/api/cardano/helper/witnesses.ts +3 -2
  631. package/src/api/conflux/ConfluxGetAddress.ts +3 -2
  632. package/src/api/conflux/ConfluxSignMessage.ts +2 -1
  633. package/src/api/conflux/ConfluxSignMessageCIP23.ts +2 -1
  634. package/src/api/conflux/ConfluxSignTransaction.ts +9 -8
  635. package/src/api/cosmos/CosmosGetAddress.ts +3 -3
  636. package/src/api/cosmos/CosmosGetPublicKey.ts +2 -1
  637. package/src/api/cosmos/CosmosSignTransaction.ts +24 -10
  638. package/src/api/device/DeviceBackup.ts +2 -1
  639. package/src/api/device/DeviceCancel.ts +2 -1
  640. package/src/api/device/DeviceChangePin.ts +2 -1
  641. package/src/api/device/DeviceFlags.ts +2 -1
  642. package/src/api/device/DeviceFullyUploadResource.ts +13 -4
  643. package/src/api/device/DeviceLock.ts +2 -1
  644. package/src/api/device/DeviceRebootToBoardloader.ts +1 -0
  645. package/src/api/device/DeviceRebootToBootloader.ts +2 -1
  646. package/src/api/device/DeviceRecovery.ts +2 -1
  647. package/src/api/device/DeviceReset.ts +2 -1
  648. package/src/api/device/DeviceSettings.ts +45 -5
  649. package/src/api/device/DeviceSupportFeatures.ts +1 -0
  650. package/src/api/device/DeviceUnlock.ts +2 -1
  651. package/src/api/device/DeviceUpdateBootloader.ts +72 -39
  652. package/src/api/device/DeviceUpdateReboot.ts +2 -1
  653. package/src/api/device/DeviceUploadResource.ts +87 -23
  654. package/src/api/device/DeviceVerify.ts +3 -1
  655. package/src/api/device/DeviceWipe.ts +2 -1
  656. package/src/api/dynex/DnxGetAddress.ts +2 -2
  657. package/src/api/dynex/DnxSignTransaction.ts +3 -3
  658. package/src/api/evm/EVMGetAddress.ts +3 -2
  659. package/src/api/evm/EVMGetPublicKey.ts +3 -2
  660. package/src/api/evm/EVMSignMessage.ts +2 -1
  661. package/src/api/evm/EVMSignMessageEIP712.ts +2 -1
  662. package/src/api/evm/EVMSignTransaction.ts +9 -6
  663. package/src/api/evm/EVMSignTypedData.ts +25 -22
  664. package/src/api/evm/EVMVerifyMessage.ts +2 -1
  665. package/src/api/evm/latest/getAddress.ts +1 -1
  666. package/src/api/evm/latest/getPublicKey.ts +5 -1
  667. package/src/api/evm/latest/signMessage.ts +1 -1
  668. package/src/api/evm/latest/signTransaction.ts +12 -10
  669. package/src/api/evm/latest/signTypedData.ts +2 -2
  670. package/src/api/evm/latest/signTypedHash.ts +4 -2
  671. package/src/api/evm/latest/verifyMessage.ts +1 -1
  672. package/src/api/evm/legacyV1/getAddress.ts +1 -1
  673. package/src/api/evm/legacyV1/getPublicKey.ts +5 -1
  674. package/src/api/evm/legacyV1/signMessage.ts +1 -1
  675. package/src/api/evm/legacyV1/signTransaction.ts +3 -2
  676. package/src/api/evm/legacyV1/signTypedData.ts +2 -2
  677. package/src/api/evm/legacyV1/signTypedHash.ts +4 -2
  678. package/src/api/evm/legacyV1/verifyMessage.ts +1 -1
  679. package/src/api/filecoin/FilecoinGetAddress.ts +3 -2
  680. package/src/api/filecoin/FilecoinSignTransaction.ts +3 -2
  681. package/src/api/firmware/FirmwareUpdateBaseMethod.ts +87 -28
  682. package/src/api/firmware/bootloaderHelper.ts +3 -1
  683. package/src/api/firmware/getBinary.ts +15 -4
  684. package/src/api/firmware/releaseHelper.ts +22 -11
  685. package/src/api/firmware/updateBootloader.ts +22 -11
  686. package/src/api/firmware/uploadFirmware.ts +113 -25
  687. package/src/api/helpers/batchGetPublickeys.ts +14 -6
  688. package/src/api/helpers/paramsValidator.ts +23 -6
  689. package/src/api/helpers/pathUtils.ts +2 -1
  690. package/src/api/helpers/typeNameUtils.ts +5 -3
  691. package/src/api/index.ts +1 -1
  692. package/src/api/kaspa/KaspaGetAddress.ts +3 -2
  693. package/src/api/kaspa/KaspaSignTransaction.ts +7 -5
  694. package/src/api/kaspa/helpers/HashWriter.ts +3 -1
  695. package/src/api/kaspa/helpers/TransferSerialize.ts +5 -4
  696. package/src/api/lightning/LnurlAuth.ts +2 -1
  697. package/src/api/near/NearGetAddress.ts +3 -2
  698. package/src/api/near/NearSignTransaction.ts +2 -1
  699. package/src/api/nem/NEMGetAddress.ts +4 -3
  700. package/src/api/nem/NEMSignTransaction.ts +9 -8
  701. package/src/api/neo/NeoGetAddress.ts +3 -2
  702. package/src/api/neo/NeoSignTransaction.ts +2 -2
  703. package/src/api/nervos/NervosGetAddress.ts +2 -2
  704. package/src/api/nervos/NervosSignTransaction.ts +4 -2
  705. package/src/api/nexa/NexaGetAddress.ts +3 -2
  706. package/src/api/nexa/NexaSignTransaction.ts +5 -3
  707. package/src/api/nostr/NostrDecryptMessage.ts +2 -1
  708. package/src/api/nostr/NostrEncryptMessage.ts +2 -1
  709. package/src/api/nostr/NostrGetPublicKey.ts +4 -3
  710. package/src/api/nostr/NostrSignEvent.ts +3 -1
  711. package/src/api/nostr/NostrSignSchnorr.ts +2 -1
  712. package/src/api/nostr/helper/index.ts +1 -1
  713. package/src/api/polkadot/PolkadotGetAddress.ts +5 -5
  714. package/src/api/polkadot/PolkadotSignTransaction.ts +8 -5
  715. package/src/api/polkadot/networks.ts +16 -0
  716. package/src/api/scdo/ScdoGetAddress.ts +3 -2
  717. package/src/api/scdo/ScdoSignMessage.ts +2 -1
  718. package/src/api/scdo/ScdoSignTransaction.ts +9 -3
  719. package/src/api/solana/SolGetAddress.ts +3 -2
  720. package/src/api/solana/SolSignMessage.ts +2 -1
  721. package/src/api/solana/SolSignOffchainMessage.ts +2 -1
  722. package/src/api/solana/SolSignTransaction.ts +5 -2
  723. package/src/api/starcoin/StarcoinGetAddress.ts +4 -3
  724. package/src/api/starcoin/StarcoinGetPublicKey.ts +5 -4
  725. package/src/api/starcoin/StarcoinSignMessage.ts +2 -1
  726. package/src/api/starcoin/StarcoinSignTransaction.ts +2 -1
  727. package/src/api/starcoin/StarcoinVerifyMessage.ts +2 -1
  728. package/src/api/stellar/StellarGetAddress.ts +3 -2
  729. package/src/api/stellar/StellarSignTransaction.ts +8 -6
  730. package/src/api/sui/SuiGetAddress.ts +3 -3
  731. package/src/api/sui/SuiGetPublicKey.ts +2 -1
  732. package/src/api/sui/SuiSignMessage.ts +2 -1
  733. package/src/api/sui/SuiSignTransaction.ts +7 -1
  734. package/src/api/ton/TonGetAddress.ts +3 -3
  735. package/src/api/ton/TonSignMessage.ts +10 -7
  736. package/src/api/ton/TonSignProof.ts +3 -3
  737. package/src/api/tron/TronGetAddress.ts +3 -2
  738. package/src/api/tron/TronSignMessage.ts +12 -8
  739. package/src/api/tron/TronSignTransaction.ts +14 -3
  740. package/src/api/u2f/GetNextU2FCounter.ts +2 -1
  741. package/src/api/u2f/SetU2FCounter.ts +2 -1
  742. package/src/api/utils.ts +3 -1
  743. package/src/api/xrp/XrpGetAddress.ts +2 -20
  744. package/src/api/xrp/XrpSignTransaction.ts +2 -1
  745. package/src/constants/errors.ts +1 -1
  746. package/src/core/RequestQueue.ts +3 -2
  747. package/src/core/index.ts +203 -50
  748. package/src/data/config.ts +4 -4
  749. package/src/data/messages/messages.json +98 -1
  750. package/src/data/messages/messages_legacy_v1.json +12 -0
  751. package/src/data-manager/DataManager.ts +180 -36
  752. package/src/data-manager/MessagesConfig.ts +12 -4
  753. package/src/data-manager/TransportManager.ts +12 -6
  754. package/src/data-manager/connectSettings.ts +3 -2
  755. package/src/device/Device.ts +54 -28
  756. package/src/device/DeviceCommands.ts +56 -14
  757. package/src/device/DeviceConnector.ts +15 -3
  758. package/src/device/DeviceList.ts +4 -2
  759. package/src/device/DevicePool.ts +6 -3
  760. package/src/events/call.ts +3 -2
  761. package/src/events/core.ts +10 -9
  762. package/src/events/device.ts +3 -2
  763. package/src/events/firmware.ts +5 -2
  764. package/src/events/iframe.ts +3 -2
  765. package/src/events/ui-request.ts +11 -0
  766. package/src/events/ui-response.ts +12 -1
  767. package/src/index.ts +6 -3
  768. package/src/inject.ts +5 -5
  769. package/src/lowLevelInject.ts +4 -3
  770. package/src/topLevelInject.ts +4 -2
  771. package/src/types/api/alephiumSignMessage.ts +1 -1
  772. package/src/types/api/alephiumSignTransaction.ts +1 -1
  773. package/src/types/api/algoGetAddress.ts +1 -1
  774. package/src/types/api/algoSignTransaction.ts +1 -1
  775. package/src/types/api/allNetworkGetAddress.ts +2 -1
  776. package/src/types/api/aptosGetAddress.ts +1 -1
  777. package/src/types/api/aptosSignInMessage.ts +1 -1
  778. package/src/types/api/aptosSignMessage.ts +1 -1
  779. package/src/types/api/aptosSignTransaction.ts +1 -1
  780. package/src/types/api/benfenGetAddress.ts +1 -1
  781. package/src/types/api/benfenSignMessage.ts +1 -1
  782. package/src/types/api/benfenSignTransaction.ts +1 -1
  783. package/src/types/api/btcGetAddress.ts +1 -1
  784. package/src/types/api/btcGetPublicKey.ts +1 -1
  785. package/src/types/api/btcSignMessage.ts +1 -1
  786. package/src/types/api/btcSignPsbt.ts +1 -1
  787. package/src/types/api/btcSignTransaction.ts +2 -2
  788. package/src/types/api/btcVerifyMessage.ts +1 -1
  789. package/src/types/api/cardanoGetPublicKey.ts +1 -1
  790. package/src/types/api/cardanoSignMessage.ts +1 -1
  791. package/src/types/api/checkAllFirmwareRelease.ts +5 -1
  792. package/src/types/api/checkBLEFirmwareRelease.ts +1 -1
  793. package/src/types/api/checkBootloaderRelease.ts +7 -3
  794. package/src/types/api/checkFirmwareRelease.ts +10 -2
  795. package/src/types/api/checkFirmwareTypeAvailable.ts +12 -0
  796. package/src/types/api/cipherKeyValue.ts +1 -1
  797. package/src/types/api/confluxGetAddress.ts +1 -1
  798. package/src/types/api/confluxSignMessage.ts +1 -1
  799. package/src/types/api/confluxSignMessageCIP23.ts +1 -1
  800. package/src/types/api/cosmosGetAddress.ts +1 -1
  801. package/src/types/api/cosmosSignTransaction.ts +1 -1
  802. package/src/types/api/deviceBackup.ts +1 -1
  803. package/src/types/api/deviceCancel.ts +1 -1
  804. package/src/types/api/deviceChangePin.ts +1 -1
  805. package/src/types/api/deviceFlags.ts +1 -1
  806. package/src/types/api/deviceFullyUploadResource.ts +7 -1
  807. package/src/types/api/deviceLock.ts +1 -1
  808. package/src/types/api/deviceRebootToBoardloader.ts +1 -1
  809. package/src/types/api/deviceRebootToBootloader.ts +1 -1
  810. package/src/types/api/deviceRecovery.ts +1 -1
  811. package/src/types/api/deviceReset.ts +1 -1
  812. package/src/types/api/deviceSettings.ts +4 -1
  813. package/src/types/api/deviceUnlock.ts +1 -1
  814. package/src/types/api/deviceUpdateBootloader.ts +8 -4
  815. package/src/types/api/deviceUploadResource.ts +7 -2
  816. package/src/types/api/deviceWipe.ts +1 -1
  817. package/src/types/api/dnxSignTransaction.ts +1 -1
  818. package/src/types/api/evmGetPublicKey.ts +1 -1
  819. package/src/types/api/evmSignMessage.ts +1 -1
  820. package/src/types/api/evmSignMessageEIP712.ts +1 -1
  821. package/src/types/api/evmSignTypedData.ts +1 -1
  822. package/src/types/api/evmVerifyMessage.ts +1 -1
  823. package/src/types/api/export.ts +5 -2
  824. package/src/types/api/filecoinGetAddress.ts +1 -1
  825. package/src/types/api/filecoinSignTransaction.ts +1 -1
  826. package/src/types/api/firmwareUpdate.ts +4 -1
  827. package/src/types/api/getNextU2FCounter.ts +1 -1
  828. package/src/types/api/index.ts +130 -163
  829. package/src/types/api/init.ts +1 -1
  830. package/src/types/api/kaspaGetAddress.ts +1 -1
  831. package/src/types/api/kaspaSignTransaction.ts +1 -1
  832. package/src/types/api/nearGetAddress.ts +1 -1
  833. package/src/types/api/nearSignTransaction.ts +1 -1
  834. package/src/types/api/nemGetAddress.ts +1 -1
  835. package/src/types/api/nemSignTransaction.ts +1 -1
  836. package/src/types/api/polkadotGetAddress.ts +1 -1
  837. package/src/types/api/polkadotSignTransaction.ts +2 -1
  838. package/src/types/api/promptWebDeviceAccess.ts +2 -2
  839. package/src/types/api/scdoGetAddress.ts +1 -1
  840. package/src/types/api/scdoSignMessage.ts +1 -1
  841. package/src/types/api/scdoSignTransaction.ts +1 -1
  842. package/src/types/api/searchDevices.ts +2 -3
  843. package/src/types/api/setU2FCounter.ts +1 -1
  844. package/src/types/api/solGetAddress.ts +1 -1
  845. package/src/types/api/solSignOffchainMessage.ts +4 -1
  846. package/src/types/api/solSignTransaction.ts +5 -1
  847. package/src/types/api/starcoinGetAddress.ts +1 -1
  848. package/src/types/api/starcoinGetPublicKey.ts +1 -1
  849. package/src/types/api/starcoinSignMessage.ts +1 -1
  850. package/src/types/api/starcoinSignTransaction.ts +1 -1
  851. package/src/types/api/starcoinVerifyMessage.ts +1 -1
  852. package/src/types/api/stellarGetAddress.ts +1 -1
  853. package/src/types/api/stellarSignTransaction.ts +2 -2
  854. package/src/types/api/suiGetAddress.ts +1 -1
  855. package/src/types/api/suiSignMessage.ts +1 -1
  856. package/src/types/api/suiSignTransaction.ts +1 -1
  857. package/src/types/api/tonGetAddress.ts +1 -1
  858. package/src/types/api/tronGetAddress.ts +1 -1
  859. package/src/types/api/tronSignMessage.ts +1 -1
  860. package/src/types/api/tronSignTransaction.ts +1 -1
  861. package/src/types/device.ts +10 -1
  862. package/src/types/params.ts +5 -0
  863. package/src/types/settings.ts +51 -11
  864. package/src/utils/bridgeUpdate.ts +4 -1
  865. package/src/utils/capabilitieUtils.ts +2 -2
  866. package/src/utils/deviceFeaturesUtils.ts +27 -15
  867. package/src/utils/deviceInfoUtils.ts +2 -1
  868. package/src/utils/deviceSettings.ts +109 -0
  869. package/src/utils/deviceVersionUtils.ts +1 -0
  870. package/src/utils/findDefectiveBatchDevice.ts +2 -1
  871. package/src/utils/homescreen.ts +3 -1
  872. package/src/utils/index.ts +2 -0
  873. package/src/utils/logger.ts +5 -2
  874. package/src/utils/release.ts +2 -1
  875. package/src/utils/tracing.ts +238 -0
  876. package/dist/api/EmmcFileWrite.d.ts +0 -13
  877. package/dist/api/EmmcFileWrite.d.ts.map +0 -1
  878. package/dist/types/api/emmcFileWrite.d.ts +0 -8
  879. package/dist/types/api/emmcFileWrite.d.ts.map +0 -1
  880. package/src/api/EmmcFileWrite.ts +0 -49
  881. package/src/types/api/emmcFileWrite.ts +0 -12
package/dist/index.js CHANGED
@@ -14,7 +14,6 @@ var blake2s = require('@noble/hashes/blake2s');
14
14
  var sha256 = require('@noble/hashes/sha256');
15
15
  var JSZip = require('jszip');
16
16
  var sha3 = require('@noble/hashes/sha3');
17
- var rippleKeypairs = require('ripple-keypairs');
18
17
  var blake2b = require('@noble/hashes/blake2b');
19
18
  var buffer = require('buffer');
20
19
 
@@ -129,6 +128,7 @@ const createCoreApi = (call) => ({
129
128
  checkBridgeRelease: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'checkBridgeRelease' })),
130
129
  checkBootloaderRelease: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'checkBootloaderRelease' })),
131
130
  checkAllFirmwareRelease: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'checkAllFirmwareRelease' })),
131
+ checkFirmwareTypeAvailable: params => call(Object.assign(Object.assign({}, params), { method: 'checkFirmwareTypeAvailable' })),
132
132
  cipherKeyValue: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), { connectId, deviceId, method: 'cipherKeyValue' })),
133
133
  testInitializeDeviceDuration: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'testInitializeDeviceDuration' })),
134
134
  deviceBackup: connectId => call({ connectId, method: 'deviceBackup' }),
@@ -196,7 +196,6 @@ const createCoreApi = (call) => ({
196
196
  firmwareUpdate: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'firmwareUpdate' })),
197
197
  firmwareUpdateV2: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'firmwareUpdateV2' })),
198
198
  firmwareUpdateV3: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'firmwareUpdateV3' })),
199
- emmcFileWrite: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'emmcFileWrite' })),
200
199
  promptWebDeviceAccess: params => call(Object.assign(Object.assign({}, params), { method: 'promptWebDeviceAccess' })),
201
200
  tronGetAddress: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), { connectId, deviceId, method: 'tronGetAddress' })),
202
201
  tronSignMessage: (connectId, deviceId, params) => call(Object.assign(Object.assign({}, params), { connectId, deviceId, method: 'tronSignMessage' })),
@@ -788,7 +787,7 @@ const createLogMessage = (type, payload) => ({
788
787
 
789
788
  const MAX_ENTRIES = 500;
790
789
  let postMessage$1;
791
- class Log$e {
790
+ class Log$g {
792
791
  constructor(prefix, enabled) {
793
792
  this.prefix = prefix;
794
793
  this.enabled = enabled;
@@ -840,7 +839,7 @@ class Log$e {
840
839
  }
841
840
  const _logs = {};
842
841
  const initLog = (prefix, enabled) => {
843
- const instance = new Log$e(prefix, !!enabled);
842
+ const instance = new Log$g(prefix, !!enabled);
844
843
  _logs[prefix] = instance;
845
844
  return instance;
846
845
  };
@@ -908,6 +907,7 @@ exports.LoggerNames = void 0;
908
907
  LoggerNames["HdTransportLowLevel"] = "@ukey/hardware-transport-lowlevel";
909
908
  LoggerNames["HdBleTransport"] = "@ukey/hardware-ble-transport";
910
909
  LoggerNames["HdWebBleTransport"] = "@ukey/hardware-web-ble-transport";
910
+ LoggerNames["HdTransportWebUsb"] = "@ukey/hardware-transport-webusb";
911
911
  LoggerNames["Connect"] = "@ukey/connect";
912
912
  LoggerNames["Iframe"] = "IFrame";
913
913
  LoggerNames["SendMessage"] = "[SendMessage]";
@@ -926,6 +926,7 @@ const LoggerMap = {
926
926
  [exports.LoggerNames.HdBleTransport]: initLog(exports.LoggerNames.HdBleTransport),
927
927
  [exports.LoggerNames.HdWebBleTransport]: initLog(exports.LoggerNames.HdWebBleTransport),
928
928
  [exports.LoggerNames.HdTransportLowLevel]: initLog(exports.LoggerNames.HdTransportLowLevel),
929
+ [exports.LoggerNames.HdTransportWebUsb]: initLog(exports.LoggerNames.HdTransportWebUsb),
929
930
  [exports.LoggerNames.Connect]: initLog(exports.LoggerNames.Connect),
930
931
  [exports.LoggerNames.Iframe]: initLog(exports.LoggerNames.Iframe),
931
932
  [exports.LoggerNames.SendMessage]: initLog(exports.LoggerNames.SendMessage),
@@ -1034,6 +1035,108 @@ function patchFeatures(response) {
1034
1035
  return response;
1035
1036
  }
1036
1037
 
1038
+ const Log$f = getLogger(exports.LoggerNames.Core);
1039
+ let globalInstanceCounter = 0;
1040
+ let sdkInstanceCounter = 0;
1041
+ function generateSdkInstanceId() {
1042
+ sdkInstanceCounter++;
1043
+ const timestamp = Date.now().toString().slice(-6);
1044
+ return `SDK-${sdkInstanceCounter}-${timestamp}`;
1045
+ }
1046
+ function generateInstanceId(type, sdkInstanceId) {
1047
+ globalInstanceCounter++;
1048
+ const timestamp = Date.now().toString().slice(-6);
1049
+ const baseId = `${type}-${globalInstanceCounter}-${timestamp}`;
1050
+ return sdkInstanceId ? `${sdkInstanceId}.${baseId}` : baseId;
1051
+ }
1052
+ const sdkInstances = new Map();
1053
+ const globalActiveRequests = new Map();
1054
+ function createSdkTracingContext() {
1055
+ const sdkInstanceId = generateSdkInstanceId();
1056
+ const context = {
1057
+ sdkInstanceId,
1058
+ createdAt: Date.now(),
1059
+ activeRequests: new Map(),
1060
+ };
1061
+ sdkInstances.set(sdkInstanceId, context);
1062
+ return context;
1063
+ }
1064
+ function createRequestContext(responseID, methodName, options) {
1065
+ const context = {
1066
+ responseID,
1067
+ sdkInstanceId: options === null || options === void 0 ? void 0 : options.sdkInstanceId,
1068
+ methodName,
1069
+ connectId: options === null || options === void 0 ? void 0 : options.connectId,
1070
+ deviceInstanceId: options === null || options === void 0 ? void 0 : options.deviceInstanceId,
1071
+ commandsInstanceId: options === null || options === void 0 ? void 0 : options.commandsInstanceId,
1072
+ parentResponseID: options === null || options === void 0 ? void 0 : options.parentResponseID,
1073
+ startTime: Date.now(),
1074
+ status: 'pending',
1075
+ };
1076
+ globalActiveRequests.set(context.responseID, context);
1077
+ if (options === null || options === void 0 ? void 0 : options.sdkInstanceId) {
1078
+ const sdkContext = sdkInstances.get(options.sdkInstanceId);
1079
+ if (sdkContext) {
1080
+ sdkContext.activeRequests.set(context.responseID, context);
1081
+ }
1082
+ }
1083
+ return context;
1084
+ }
1085
+ function updateRequestContext(responseID, updates) {
1086
+ const context = globalActiveRequests.get(responseID);
1087
+ if (context) {
1088
+ Object.assign(context, updates);
1089
+ }
1090
+ }
1091
+ function completeRequestContext(responseID, error) {
1092
+ const context = globalActiveRequests.get(responseID);
1093
+ if (context) {
1094
+ context.endTime = Date.now();
1095
+ context.status = error ? 'error' : 'success';
1096
+ if (error) {
1097
+ context.error = error.message;
1098
+ Log$f.error(`[RequestContext] [completeRequestContext] Error: ${formatRequestContext(context)}`);
1099
+ }
1100
+ globalActiveRequests.delete(responseID);
1101
+ if (context.sdkInstanceId) {
1102
+ const sdkContext = sdkInstances.get(context.sdkInstanceId);
1103
+ if (sdkContext) {
1104
+ sdkContext.activeRequests.delete(responseID);
1105
+ }
1106
+ }
1107
+ }
1108
+ }
1109
+ function getActiveRequestsByDeviceInstance(deviceInstanceId) {
1110
+ return Array.from(globalActiveRequests.values()).filter(ctx => ctx.deviceInstanceId === deviceInstanceId);
1111
+ }
1112
+ function formatRequestContext(context) {
1113
+ const duration = context.endTime
1114
+ ? context.endTime - context.startTime
1115
+ : Date.now() - context.startTime;
1116
+ const parts = [
1117
+ `[req:${context.responseID}]`,
1118
+ context.sdkInstanceId ? `sdk=${context.sdkInstanceId}` : null,
1119
+ `method=${context.methodName}`,
1120
+ context.connectId ? `connectId=${context.connectId}` : null,
1121
+ context.deviceInstanceId ? `deviceInst=${context.deviceInstanceId}` : null,
1122
+ context.commandsInstanceId ? `commandsInst=${context.commandsInstanceId}` : null,
1123
+ context.parentResponseID ? `parent=${context.parentResponseID}` : null,
1124
+ `duration=${duration}ms`,
1125
+ `status=${context.status}`,
1126
+ `error=${context.error}`,
1127
+ ].filter(Boolean);
1128
+ return parts.join(' ');
1129
+ }
1130
+ function cleanupSdkInstance(sdkInstanceId) {
1131
+ const sdkContext = sdkInstances.get(sdkInstanceId);
1132
+ if (sdkContext) {
1133
+ for (const responseID of sdkContext.activeRequests.keys()) {
1134
+ globalActiveRequests.delete(responseID);
1135
+ }
1136
+ sdkInstances.delete(sdkInstanceId);
1137
+ }
1138
+ }
1139
+
1037
1140
  exports.EUKeyDeviceMode = void 0;
1038
1141
  (function (EUKeyDeviceMode) {
1039
1142
  EUKeyDeviceMode["bootloader"] = "bootloader";
@@ -3350,6 +3453,15 @@ var nested$1 = {
3350
3453
  }
3351
3454
  }
3352
3455
  },
3456
+ UpgradeFileHeader: {
3457
+ fields: {
3458
+ data: {
3459
+ rule: "required",
3460
+ type: "bytes",
3461
+ id: 1
3462
+ }
3463
+ }
3464
+ },
3353
3465
  CardanoDerivationType: {
3354
3466
  values: {
3355
3467
  LEDGER: 0,
@@ -7854,6 +7966,22 @@ var nested$1 = {
7854
7966
  type: "uint32",
7855
7967
  id: 520
7856
7968
  },
7969
+ product: {
7970
+ type: "string",
7971
+ id: 521
7972
+ },
7973
+ brightness_prcent: {
7974
+ type: "uint32",
7975
+ id: 522
7976
+ },
7977
+ haptic_feedback: {
7978
+ type: "bool",
7979
+ id: 523
7980
+ },
7981
+ auto_shutdown_delay_ms: {
7982
+ type: "uint32",
7983
+ id: 524
7984
+ },
7857
7985
  ukey_device_type: {
7858
7986
  type: "UKeyDeviceType",
7859
7987
  id: 600
@@ -8252,6 +8380,18 @@ var nested$1 = {
8252
8380
  fastpay_times: {
8253
8381
  type: "uint32",
8254
8382
  id: 106
8383
+ },
8384
+ auto_shutdown_delay_ms: {
8385
+ type: "uint32",
8386
+ id: 500
8387
+ },
8388
+ change_brightness: {
8389
+ type: "bool",
8390
+ id: 501
8391
+ },
8392
+ haptic_feedback: {
8393
+ type: "bool",
8394
+ id: 502
8255
8395
  }
8256
8396
  },
8257
8397
  nested: {
@@ -8915,6 +9055,10 @@ var nested$1 = {
8915
9055
  file_name_no_ext: {
8916
9056
  type: "string",
8917
9057
  id: 6
9058
+ },
9059
+ blur_data_length: {
9060
+ type: "uint32",
9061
+ id: 7
8918
9062
  }
8919
9063
  },
8920
9064
  nested: {
@@ -8939,6 +9083,19 @@ var nested$1 = {
8939
9083
  }
8940
9084
  }
8941
9085
  },
9086
+ BlurRequest: {
9087
+ fields: {
9088
+ offset: {
9089
+ type: "uint32",
9090
+ id: 1
9091
+ },
9092
+ data_length: {
9093
+ rule: "required",
9094
+ type: "uint32",
9095
+ id: 2
9096
+ }
9097
+ }
9098
+ },
8942
9099
  ResourceRequest: {
8943
9100
  fields: {
8944
9101
  offset: {
@@ -10970,6 +11127,10 @@ var nested$1 = {
10970
11127
  rule: "required",
10971
11128
  type: "string",
10972
11129
  id: 3
11130
+ },
11131
+ prefix: {
11132
+ type: "uint32",
11133
+ id: 4
10973
11134
  }
10974
11135
  }
10975
11136
  },
@@ -11232,6 +11393,39 @@ var nested$1 = {
11232
11393
  }
11233
11394
  }
11234
11395
  },
11396
+ SolanaTxATADetails: {
11397
+ fields: {
11398
+ owner_address: {
11399
+ rule: "required",
11400
+ type: "string",
11401
+ id: 1
11402
+ },
11403
+ program_id: {
11404
+ rule: "required",
11405
+ type: "string",
11406
+ id: 2
11407
+ },
11408
+ mint_address: {
11409
+ rule: "required",
11410
+ type: "string",
11411
+ id: 3
11412
+ },
11413
+ associated_token_address: {
11414
+ rule: "required",
11415
+ type: "string",
11416
+ id: 4
11417
+ }
11418
+ }
11419
+ },
11420
+ SolanaTxExtraInfo: {
11421
+ fields: {
11422
+ ata_details: {
11423
+ rule: "repeated",
11424
+ type: "SolanaTxATADetails",
11425
+ id: 1
11426
+ }
11427
+ }
11428
+ },
11235
11429
  SolanaSignTx: {
11236
11430
  fields: {
11237
11431
  address_n: {
@@ -11246,6 +11440,10 @@ var nested$1 = {
11246
11440
  rule: "required",
11247
11441
  type: "bytes",
11248
11442
  id: 2
11443
+ },
11444
+ extra_info: {
11445
+ type: "SolanaTxExtraInfo",
11446
+ id: 3
11249
11447
  }
11250
11448
  }
11251
11449
  },
@@ -13766,6 +13964,7 @@ var nested$1 = {
13766
13964
  MessageType_NFTWriteData: 10015,
13767
13965
  MessageType_ResourceUpload: 10018,
13768
13966
  MessageType_ZoomRequest: 10019,
13967
+ MessageType_BlurRequest: 10032,
13769
13968
  MessageType_ResourceRequest: 10020,
13770
13969
  MessageType_ResourceAck: 10021,
13771
13970
  MessageType_ResourceUpdate: 10022,
@@ -13776,7 +13975,8 @@ var nested$1 = {
13776
13975
  MessageType_GetPassphraseState: 10028,
13777
13976
  MessageType_PassphraseState: 10029,
13778
13977
  MessageType_UnLockDevice: 10030,
13779
- MessageType_UnLockDeviceResponse: 10031
13978
+ MessageType_UnLockDeviceResponse: 10031,
13979
+ MessageType_UpgradeFileHeader: 10050
13780
13980
  }
13781
13981
  },
13782
13982
  google: {
@@ -19623,6 +19823,18 @@ var nested = {
19623
19823
  battery_level: {
19624
19824
  type: "uint32",
19625
19825
  id: 520
19826
+ },
19827
+ brightness_prcent: {
19828
+ type: "uint32",
19829
+ id: 521
19830
+ },
19831
+ haptic_feedback: {
19832
+ type: "bool",
19833
+ id: 522
19834
+ },
19835
+ auto_shutdown_delay_ms: {
19836
+ type: "uint32",
19837
+ id: 523
19626
19838
  }
19627
19839
  },
19628
19840
  nested: {
@@ -24911,33 +25123,113 @@ const findLatestRelease = (releases) => {
24911
25123
  };
24912
25124
 
24913
25125
  var _a$1;
25126
+ const Log$e = getLogger(exports.LoggerNames.Core);
25127
+ const FIRMWARE_FIELDS = [
25128
+ 'firmware',
25129
+ 'firmware-v2',
25130
+ 'firmware-v8',
25131
+ 'firmware-btc-v8',
25132
+ ];
25133
+ const FIRMWARE_FIELD_TYPE_MAP = {
25134
+ firmware: hardwareShared.EFirmwareType.Universal,
25135
+ 'firmware-v2': hardwareShared.EFirmwareType.Universal,
25136
+ 'firmware-v8': hardwareShared.EFirmwareType.Universal,
25137
+ 'firmware-btc-v8': hardwareShared.EFirmwareType.BitcoinOnly,
25138
+ };
25139
+ function getFirmwareTypeFromField(firmwareField) {
25140
+ const firmwareType = FIRMWARE_FIELD_TYPE_MAP[firmwareField];
25141
+ if (firmwareType === undefined) {
25142
+ return hardwareShared.EFirmwareType.Universal;
25143
+ }
25144
+ return firmwareType;
25145
+ }
24914
25146
  class DataManager {
25147
+ static enrichFirmwareReleaseInfo(deviceData) {
25148
+ if (!deviceData || typeof deviceData !== 'object') {
25149
+ return {
25150
+ firmware: [],
25151
+ ble: [],
25152
+ };
25153
+ }
25154
+ const enrichedData = Object.assign({}, deviceData);
25155
+ FIRMWARE_FIELDS.forEach(field => {
25156
+ const releases = enrichedData[field];
25157
+ if (!releases || !Array.isArray(releases) || releases.length === 0) {
25158
+ return;
25159
+ }
25160
+ try {
25161
+ enrichedData[field] = releases.map(release => {
25162
+ if (!release || typeof release !== 'object' || !!release.firmwareType) {
25163
+ return release;
25164
+ }
25165
+ const firmwareType = getFirmwareTypeFromField(field);
25166
+ return Object.assign(Object.assign({}, release), { firmwareType });
25167
+ });
25168
+ }
25169
+ catch (error) {
25170
+ console.error(`Error enriching firmware field "${field}":`, error);
25171
+ }
25172
+ });
25173
+ return enrichedData;
25174
+ }
24915
25175
  static load(settings) {
24916
25176
  return __awaiter(this, void 0, void 0, function* () {
24917
25177
  this.settings = settings;
24918
25178
  if (!settings.fetchConfig) {
24919
25179
  return;
24920
25180
  }
24921
- try {
24922
- const url = settings.preRelease
24923
- ? 'https://data.sanying.site/pre-config.json'
24924
- : 'https://data.sanying.site/config.json';
24925
- const { data } = yield axios__default["default"].get(`${url}?noCache=${getTimeStamp()}`, {
24926
- timeout: 7000,
24927
- });
25181
+ const url = settings.preRelease
25182
+ ? 'https://data.ukey.io/pre-config.json'
25183
+ : 'https://data.ukey.io/config.json';
25184
+ const urlWithCache = `${url}?noCache=${getTimeStamp()}`;
25185
+ let data = null;
25186
+ let fetchMethod = 'none';
25187
+ if (settings.configFetcher) {
25188
+ Log$e.debug('[DataConfig] Trying configFetcher (client-side fetcher)...');
25189
+ try {
25190
+ data = yield settings.configFetcher(urlWithCache);
25191
+ if (data) {
25192
+ fetchMethod = 'configFetcher';
25193
+ Log$e.log('[DataConfig] ConfigFetcher success');
25194
+ }
25195
+ else {
25196
+ Log$e.debug('[DataConfig] ConfigFetcher returned null, will fallback to axios');
25197
+ }
25198
+ }
25199
+ catch (e) {
25200
+ Log$e.warn('[DataConfig] ConfigFetcher error, will fallback to axios:', e);
25201
+ }
25202
+ }
25203
+ if (!data) {
25204
+ Log$e.debug('[DataConfig] Trying axios (SDK default fetcher)...');
25205
+ try {
25206
+ const response = yield axios__default["default"].get(urlWithCache, {
25207
+ timeout: 7000,
25208
+ });
25209
+ data = response.data;
25210
+ fetchMethod = 'axios';
25211
+ Log$e.log('[DataConfig] Axios fetch success');
25212
+ }
25213
+ catch (e) {
25214
+ Log$e.warn('[DataConfig] Axios fetch error:', e);
25215
+ }
25216
+ }
25217
+ if (data) {
25218
+ Log$e.log(`[DataConfig] Config loaded successfully via [${fetchMethod}]`);
24928
25219
  this.deviceMap = {
24929
- [hardwareShared.EDeviceType.Classic]: data.classic,
24930
- [hardwareShared.EDeviceType.Classic1s]: data.classic1s,
24931
- [hardwareShared.EDeviceType.ClassicPure]: data.classicpure,
24932
- [hardwareShared.EDeviceType.Mini]: data.mini,
24933
- [hardwareShared.EDeviceType.Touch]: data.touch,
24934
- [hardwareShared.EDeviceType.Pro]: data.pro,
25220
+ [hardwareShared.EDeviceType.Classic]: this.enrichFirmwareReleaseInfo(data.classic),
25221
+ [hardwareShared.EDeviceType.Classic1s]: this.enrichFirmwareReleaseInfo(data.classic1s),
25222
+ [hardwareShared.EDeviceType.ClassicPure]: this.enrichFirmwareReleaseInfo(data.classicpure),
25223
+ [hardwareShared.EDeviceType.Mini]: this.enrichFirmwareReleaseInfo(data.mini),
25224
+ [hardwareShared.EDeviceType.Touch]: this.enrichFirmwareReleaseInfo(data.touch),
25225
+ [hardwareShared.EDeviceType.Pro]: this.enrichFirmwareReleaseInfo(data.pro),
24935
25226
  };
24936
25227
  this.assets = {
24937
25228
  bridge: data.bridge,
24938
25229
  };
24939
25230
  }
24940
- catch (e) {
25231
+ else {
25232
+ Log$e.warn('[DataConfig] All fetch methods failed, using built-in default config');
24941
25233
  }
24942
25234
  });
24943
25235
  }
@@ -25002,11 +25294,12 @@ DataManager.messages = {
25002
25294
  v1: MessagesLegacyV1JSON,
25003
25295
  };
25004
25296
  DataManager.lastCheckTimestamp = 0;
25005
- DataManager.getFirmwareStatus = (features) => {
25297
+ DataManager.getFirmwareStatus = (features, firmwareType) => {
25006
25298
  var _b, _c;
25007
25299
  const deviceType = getDeviceType(features);
25008
25300
  if (deviceType === hardwareShared.EDeviceType.Unknown)
25009
25301
  return 'unknown';
25302
+ const deviceFirmwareType = getFirmwareType(features);
25010
25303
  const deviceFirmwareVersion = getDeviceFirmwareVersion(features);
25011
25304
  if (features.firmware_present === false) {
25012
25305
  return 'none';
@@ -25014,12 +25307,19 @@ DataManager.getFirmwareStatus = (features) => {
25014
25307
  if (DeviceModelToTypes.model_mini.includes(deviceType) && features.bootloader_mode) {
25015
25308
  return 'unknown';
25016
25309
  }
25017
- const firmwareUpdateField = getFirmwareUpdateField({ features, updateType: 'firmware' });
25310
+ const firmwareUpdateField = getFirmwareUpdateField({
25311
+ features,
25312
+ updateType: 'firmware',
25313
+ firmwareType,
25314
+ });
25018
25315
  const targetDeviceConfigList = (_c = (_b = _a$1.deviceMap[deviceType]) === null || _b === void 0 ? void 0 : _b[firmwareUpdateField]) !== null && _c !== void 0 ? _c : [];
25019
- const currentVersion = deviceFirmwareVersion.join('.');
25316
+ let currentVersion = deviceFirmwareVersion.join('.');
25317
+ if (targetDeviceConfigList.length > 0 && deviceFirmwareType !== firmwareType) {
25318
+ currentVersion = '0.0.0';
25319
+ }
25020
25320
  return getReleaseStatus(targetDeviceConfigList, currentVersion);
25021
25321
  };
25022
- DataManager.getSysResourcesLatestRelease = (features, forcedUpdateRes) => {
25322
+ DataManager.getSysResourcesLatestRelease = ({ features, forcedUpdateRes, firmwareType, }) => {
25023
25323
  var _b, _c, _d;
25024
25324
  const deviceType = getDeviceType(features);
25025
25325
  const deviceFirmwareVersion = getDeviceFirmwareVersion(features);
@@ -25028,6 +25328,7 @@ DataManager.getSysResourcesLatestRelease = (features, forcedUpdateRes) => {
25028
25328
  const firmwareUpdateField = getFirmwareUpdateField({
25029
25329
  features,
25030
25330
  updateType: 'firmware',
25331
+ firmwareType,
25031
25332
  });
25032
25333
  const targetDeviceConfigList = (_c = (_b = _a$1.deviceMap[deviceType]) === null || _b === void 0 ? void 0 : _b[firmwareUpdateField]) !== null && _c !== void 0 ? _c : [];
25033
25334
  const currentVersion = deviceFirmwareVersion.join('.');
@@ -25036,7 +25337,7 @@ DataManager.getSysResourcesLatestRelease = (features, forcedUpdateRes) => {
25036
25337
  : semver__default["default"].gt(item.version.join('.'), currentVersion) && !!item.resource);
25037
25338
  return (_d = findLatestRelease(targetDeviceConfig)) === null || _d === void 0 ? void 0 : _d.resource;
25038
25339
  };
25039
- DataManager.getSysFullResource = (features) => {
25340
+ DataManager.getSysFullResource = (features, firmwareType) => {
25040
25341
  var _b, _c, _d;
25041
25342
  const deviceType = getDeviceType(features);
25042
25343
  if (deviceType === hardwareShared.EDeviceType.Unknown)
@@ -25046,12 +25347,13 @@ DataManager.getSysFullResource = (features) => {
25046
25347
  const firmwareUpdateField = getFirmwareUpdateField({
25047
25348
  features,
25048
25349
  updateType: 'firmware',
25350
+ firmwareType,
25049
25351
  });
25050
25352
  const targetDeviceConfigList = (_c = (_b = _a$1.deviceMap[deviceType]) === null || _b === void 0 ? void 0 : _b[firmwareUpdateField]) !== null && _c !== void 0 ? _c : [];
25051
25353
  const targetDeviceConfig = targetDeviceConfigList.filter(item => !!item.fullResource);
25052
25354
  return (_d = findLatestRelease(targetDeviceConfig)) === null || _d === void 0 ? void 0 : _d.fullResource;
25053
25355
  };
25054
- DataManager.getBootloaderResource = (features) => {
25356
+ DataManager.getBootloaderResource = (features, firmwareType) => {
25055
25357
  var _b, _c, _d;
25056
25358
  const deviceType = getDeviceType(features);
25057
25359
  if (deviceType === hardwareShared.EDeviceType.Unknown)
@@ -25061,6 +25363,7 @@ DataManager.getBootloaderResource = (features) => {
25061
25363
  const firmwareUpdateField = getFirmwareUpdateField({
25062
25364
  features,
25063
25365
  updateType: 'firmware',
25366
+ firmwareType,
25064
25367
  });
25065
25368
  const targetDeviceConfigList = (_c = (_b = _a$1.deviceMap[deviceType]) === null || _b === void 0 ? void 0 : _b[firmwareUpdateField]) !== null && _c !== void 0 ? _c : [];
25066
25369
  if (targetDeviceConfigList.length === 0) {
@@ -25069,7 +25372,7 @@ DataManager.getBootloaderResource = (features) => {
25069
25372
  const targetDeviceConfig = targetDeviceConfigList.filter(item => !!item.bootloaderResource);
25070
25373
  return (_d = findLatestRelease(targetDeviceConfig)) === null || _d === void 0 ? void 0 : _d.bootloaderResource;
25071
25374
  };
25072
- DataManager.getBootloaderTargetVersion = (features) => {
25375
+ DataManager.getBootloaderTargetVersion = (features, firmwareType) => {
25073
25376
  var _b, _c, _d, _e;
25074
25377
  const deviceType = getDeviceType(features);
25075
25378
  if (deviceType === hardwareShared.EDeviceType.Unknown)
@@ -25077,12 +25380,13 @@ DataManager.getBootloaderTargetVersion = (features) => {
25077
25380
  const firmwareUpdateField = getFirmwareUpdateField({
25078
25381
  features,
25079
25382
  updateType: 'firmware',
25383
+ firmwareType,
25080
25384
  });
25081
25385
  const targetDeviceConfigList = (_c = (_b = _a$1.deviceMap[deviceType]) === null || _b === void 0 ? void 0 : _b[firmwareUpdateField]) !== null && _c !== void 0 ? _c : [];
25082
25386
  const targetDeviceConfig = targetDeviceConfigList.filter(item => !!item.bootloaderResource);
25083
25387
  return (_e = (_d = targetDeviceConfig === null || targetDeviceConfig === void 0 ? void 0 : targetDeviceConfig[0]) === null || _d === void 0 ? void 0 : _d.bootloaderVersion) !== null && _e !== void 0 ? _e : undefined;
25084
25388
  };
25085
- DataManager.getBootloaderRelatedFirmwareVersion = (features) => {
25389
+ DataManager.getBootloaderRelatedFirmwareVersion = (features, firmwareType) => {
25086
25390
  var _b, _c, _d, _e;
25087
25391
  const deviceType = getDeviceType(features);
25088
25392
  if (deviceType === hardwareShared.EDeviceType.Unknown)
@@ -25092,12 +25396,13 @@ DataManager.getBootloaderRelatedFirmwareVersion = (features) => {
25092
25396
  const firmwareUpdateField = getFirmwareUpdateField({
25093
25397
  features,
25094
25398
  updateType: 'firmware',
25399
+ firmwareType,
25095
25400
  });
25096
25401
  const targetDeviceConfigList = (_c = (_b = _a$1.deviceMap[deviceType]) === null || _b === void 0 ? void 0 : _b[firmwareUpdateField]) !== null && _c !== void 0 ? _c : [];
25097
25402
  const targetDeviceConfig = targetDeviceConfigList.filter(item => !!item.bootloaderRelatedFirmwareVersion);
25098
25403
  return (_e = (_d = targetDeviceConfig === null || targetDeviceConfig === void 0 ? void 0 : targetDeviceConfig[0]) === null || _d === void 0 ? void 0 : _d.bootloaderRelatedFirmwareVersion) !== null && _e !== void 0 ? _e : undefined;
25099
25404
  };
25100
- DataManager.getFirmwareChangelog = (features) => {
25405
+ DataManager.getFirmwareChangelog = (features, firmwareType) => {
25101
25406
  var _b, _c;
25102
25407
  const deviceType = getDeviceType(features);
25103
25408
  if (deviceType === hardwareShared.EDeviceType.Unknown)
@@ -25106,6 +25411,7 @@ DataManager.getFirmwareChangelog = (features) => {
25106
25411
  const firmwareUpdateField = getFirmwareUpdateField({
25107
25412
  features,
25108
25413
  updateType: 'firmware',
25414
+ firmwareType,
25109
25415
  });
25110
25416
  const targetDeviceConfigList = (_c = (_b = _a$1.deviceMap[deviceType]) === null || _b === void 0 ? void 0 : _b[firmwareUpdateField]) !== null && _c !== void 0 ? _c : [];
25111
25417
  if (features.firmware_present === false ||
@@ -25115,7 +25421,7 @@ DataManager.getFirmwareChangelog = (features) => {
25115
25421
  const currentVersion = deviceFirmwareVersion.join('.');
25116
25422
  return getReleaseChangelog(targetDeviceConfigList, currentVersion);
25117
25423
  };
25118
- DataManager.getFirmwareLatestRelease = (features) => {
25424
+ DataManager.getFirmwareLatestRelease = (features, firmwareType) => {
25119
25425
  var _b, _c;
25120
25426
  const deviceType = getDeviceType(features);
25121
25427
  if (deviceType === hardwareShared.EDeviceType.Unknown)
@@ -25123,13 +25429,14 @@ DataManager.getFirmwareLatestRelease = (features) => {
25123
25429
  const firmwareUpdateField = getFirmwareUpdateField({
25124
25430
  features,
25125
25431
  updateType: 'firmware',
25432
+ firmwareType,
25126
25433
  });
25127
25434
  const targetDeviceConfigList = (_c = (_b = _a$1.deviceMap[deviceType]) === null || _b === void 0 ? void 0 : _b[firmwareUpdateField]) !== null && _c !== void 0 ? _c : [];
25128
25435
  const target = findLatestRelease(targetDeviceConfigList);
25129
25436
  if (!target)
25130
25437
  return target;
25131
25438
  if (!target.resource) {
25132
- const resource = _a$1.getSysResourcesLatestRelease(features);
25439
+ const resource = _a$1.getSysResourcesLatestRelease({ features, firmwareType });
25133
25440
  return Object.assign(Object.assign({}, target), { resource });
25134
25441
  }
25135
25442
  return target;
@@ -25178,16 +25485,19 @@ DataManager.getTransportStatus = (localVersion) => {
25178
25485
  };
25179
25486
  DataManager.getBridgeChangelog = () => { var _b; return (_b = _a$1.assets) === null || _b === void 0 ? void 0 : _b.bridge.changelog; };
25180
25487
  DataManager.isBleConnect = (env) => env === 'react-native' || env === 'lowlevel' || env === 'desktop-web-ble';
25181
- DataManager.isWebUsbConnect = (env) => env === 'webusb';
25488
+ DataManager.isDesktopWebUsb = (env) => env === 'desktop-webusb';
25489
+ DataManager.isBrowserWebUsb = (env) => env === 'webusb';
25182
25490
 
25183
25491
  const PROTOBUF_MESSAGE_CONFIG = {
25184
25492
  model_mini: [
25185
25493
  { minVersion: '3.3.0', messageVersion: 'latest' },
25186
- { minVersion: '0.0.0', messageVersion: 'v1' },
25494
+ { minVersion: '0.0.1', messageVersion: 'v1' },
25495
+ { minVersion: '0.0.0', messageVersion: 'latest' },
25187
25496
  ],
25188
25497
  model_touch: [
25189
25498
  { minVersion: '4.5.0', messageVersion: 'latest' },
25190
- { minVersion: '0.0.0', messageVersion: 'v1' },
25499
+ { minVersion: '0.0.1', messageVersion: 'v1' },
25500
+ { minVersion: '0.0.0', messageVersion: 'latest' },
25191
25501
  ],
25192
25502
  };
25193
25503
 
@@ -25326,28 +25636,35 @@ const supportModifyHomescreen = (features) => {
25326
25636
  }
25327
25637
  return { support: semver__default["default"].gte(currentVersion, '3.4.0') };
25328
25638
  };
25329
- const getFirmwareUpdateField = ({ features, updateType, targetVersion, }) => {
25639
+ const getLatestFirmwareField = (firmwareType) => {
25640
+ if (firmwareType === 'bitcoinonly') {
25641
+ return `firmware-btc-v8`;
25642
+ }
25643
+ return `firmware-v8`;
25644
+ };
25645
+ const getFirmwareUpdateField = ({ features, updateType, targetVersion, firmwareType, }) => {
25330
25646
  const deviceType = getDeviceType(features);
25331
25647
  const deviceFirmwareVersion = getDeviceFirmwareVersion(features);
25332
25648
  if (updateType === 'ble') {
25333
25649
  return 'ble';
25334
25650
  }
25651
+ const latestFirmwareField = getLatestFirmwareField(firmwareType);
25335
25652
  if (DeviceModelToTypes.model_mini.includes(deviceType)) {
25336
- return 'firmware-v7';
25653
+ return latestFirmwareField;
25337
25654
  }
25338
25655
  if (deviceType === hardwareShared.EDeviceType.Touch) {
25339
25656
  if (targetVersion) {
25340
25657
  if (semver__default["default"].eq(targetVersion, '4.0.0'))
25341
25658
  return 'firmware-v2';
25342
25659
  if (semver__default["default"].gt(targetVersion, '4.0.0'))
25343
- return 'firmware-v7';
25660
+ return latestFirmwareField;
25344
25661
  }
25345
25662
  if (semver__default["default"].lt(deviceFirmwareVersion.join('.'), '3.4.0'))
25346
25663
  return 'firmware';
25347
- return 'firmware-v7';
25664
+ return latestFirmwareField;
25348
25665
  }
25349
25666
  if (deviceType === hardwareShared.EDeviceType.Pro) {
25350
- return 'firmware-v7';
25667
+ return latestFirmwareField;
25351
25668
  }
25352
25669
  return 'firmware';
25353
25670
  };
@@ -25360,23 +25677,23 @@ const getFirmwareUpdateFieldArray = (features, updateType) => {
25360
25677
  deviceType === 'classic1s' ||
25361
25678
  deviceType === 'mini' ||
25362
25679
  deviceType === 'classicpure') {
25363
- return ['firmware-v7'];
25680
+ return ['firmware-v8'];
25364
25681
  }
25365
25682
  if (deviceType === 'touch') {
25366
25683
  const currentVersion = getDeviceFirmwareVersion(features).join('.');
25367
25684
  if (semver__default["default"].gt(currentVersion, '4.0.0')) {
25368
- return ['firmware-v7', 'firmware'];
25685
+ return ['firmware-v8', 'firmware'];
25369
25686
  }
25370
25687
  if (semver__default["default"].gte(currentVersion, '4.0.0')) {
25371
25688
  return ['firmware-v2', 'firmware'];
25372
25689
  }
25373
25690
  if (!currentVersion || semver__default["default"].lt(currentVersion, '3.0.0')) {
25374
- return ['firmware-v7', 'firmware-v2', 'firmware'];
25691
+ return ['firmware-v8', 'firmware-v2', 'firmware'];
25375
25692
  }
25376
25693
  return ['firmware'];
25377
25694
  }
25378
25695
  if (deviceType === 'pro') {
25379
- return ['firmware-v7'];
25696
+ return ['firmware-v8'];
25380
25697
  }
25381
25698
  return ['firmware'];
25382
25699
  };
@@ -25401,13 +25718,13 @@ const fixFeaturesFirmwareVersion = (features) => {
25401
25718
 
25402
25719
  const pkg = require('../package.json');
25403
25720
  const getSDKVersion = () => pkg.version;
25404
- const DEFAULT_DOMAIN = `https://jssdk.sanying.site/${getSDKVersion()}/`;
25721
+ const DEFAULT_DOMAIN = `https://jssdk.ukey.io/${getSDKVersion()}/`;
25405
25722
  const whitelist = [
25406
25723
  { origin: 'file://' },
25407
25724
  { origin: '1key.so' },
25408
- { origin: 'sanying.site' },
25409
- { origin: 'sanying.com' },
25410
- { origin: 'sanyingtest.com' },
25725
+ { origin: 'ukey.io' },
25726
+ { origin: 'ukeycn.com' },
25727
+ { origin: 'ukeytest.com' },
25411
25728
  { origin: 'localhost' },
25412
25729
  ];
25413
25730
  const whitelistExtension = [
@@ -25454,7 +25771,7 @@ const getEnv = () => {
25454
25771
  const corsValidator = (url) => {
25455
25772
  if (typeof url !== 'string')
25456
25773
  return;
25457
- if (url.match(/^https:\/\/([A-Za-z0-9\-_]+\.)*sanying\.site\//))
25774
+ if (url.match(/^https:\/\/([A-Za-z0-9\-_]+\.)*ukey\.so\//))
25458
25775
  return url;
25459
25776
  if (url.match(/^https?:\/\/localhost:[58][0-9]{3}\//))
25460
25777
  return url;
@@ -25529,20 +25846,20 @@ function isEnteredManuallyBoot(features, updateType) {
25529
25846
  return isMini || isBoot183ClassicUpBle;
25530
25847
  }
25531
25848
 
25532
- function checkNeedUpdateBootForTouch(features) {
25849
+ function checkNeedUpdateBootForTouch(features, firmwareType) {
25533
25850
  const deviceType = getDeviceType(features);
25534
25851
  if (!DeviceModelToTypes.model_touch.includes(deviceType))
25535
25852
  return false;
25536
25853
  const currentVersion = getDeviceFirmwareVersion(features).join('.');
25537
25854
  const bootloaderVersion = getDeviceBootloaderVersion(features).join('.');
25538
- const targetBootloaderVersion = DataManager.getBootloaderTargetVersion(features);
25855
+ const targetBootloaderVersion = DataManager.getBootloaderTargetVersion(features, firmwareType);
25539
25856
  if (!targetBootloaderVersion)
25540
25857
  return false;
25541
25858
  return (semver__default["default"].gte(currentVersion, '3.2.0') &&
25542
25859
  semver__default["default"].gte(currentVersion, '4.1.0') &&
25543
25860
  semver__default["default"].lte(bootloaderVersion, targetBootloaderVersion.join('.')));
25544
25861
  }
25545
- function checkNeedUpdateBootForClassicAndMini(features, willUpdateFirmware) {
25862
+ function checkNeedUpdateBootForClassicAndMini({ features, willUpdateFirmware, firmwareType, }) {
25546
25863
  const deviceType = getDeviceType(features);
25547
25864
  if (!DeviceModelToTypes.model_mini.includes(deviceType))
25548
25865
  return false;
@@ -25550,11 +25867,11 @@ function checkNeedUpdateBootForClassicAndMini(features, willUpdateFirmware) {
25550
25867
  return false;
25551
25868
  const currentVersion = getDeviceFirmwareVersion(features).join('.');
25552
25869
  const bootloaderVersion = getDeviceBootloaderVersion(features).join('.');
25553
- const targetBootloaderVersion = DataManager.getBootloaderTargetVersion(features);
25870
+ const targetBootloaderVersion = DataManager.getBootloaderTargetVersion(features, firmwareType);
25554
25871
  if (targetBootloaderVersion && semver__default["default"].gte(bootloaderVersion, targetBootloaderVersion.join('.'))) {
25555
25872
  return false;
25556
25873
  }
25557
- const bootloaderRelatedFirmwareVersion = DataManager.getBootloaderRelatedFirmwareVersion(features);
25874
+ const bootloaderRelatedFirmwareVersion = DataManager.getBootloaderRelatedFirmwareVersion(features, firmwareType);
25558
25875
  if (!bootloaderRelatedFirmwareVersion)
25559
25876
  return false;
25560
25877
  return shouldUpdateBootloaderForClassicAndMini({
@@ -25581,6 +25898,96 @@ function checkBootloaderLength(data) {
25581
25898
  return bootloaderLength === data.byteLength;
25582
25899
  }
25583
25900
 
25901
+ const LANGUAGE_LABELS = {
25902
+ en: 'English',
25903
+ zh_cn: '简体中文',
25904
+ zh_hk: '繁體中文',
25905
+ ja: '日本語',
25906
+ ko: '한국어',
25907
+ fr: 'Français',
25908
+ de: 'Deutsch',
25909
+ ru: 'Russian',
25910
+ es: 'Spanish',
25911
+ it: 'Italiano',
25912
+ pt_br: 'Portuguese (Brazil)',
25913
+ };
25914
+ const getLanguageConfig = (deviceType) => {
25915
+ let keys = [];
25916
+ switch (deviceType) {
25917
+ case hardwareShared.EDeviceType.Classic:
25918
+ case hardwareShared.EDeviceType.Mini:
25919
+ keys = ['en', 'zh_cn'];
25920
+ break;
25921
+ case hardwareShared.EDeviceType.Classic1s:
25922
+ case hardwareShared.EDeviceType.ClassicPure:
25923
+ keys = ['en', 'zh_cn', 'zh_hk', 'ja', 'pt_br', 'de', 'ko'];
25924
+ break;
25925
+ case hardwareShared.EDeviceType.Touch:
25926
+ case hardwareShared.EDeviceType.Pro:
25927
+ keys = Object.keys(LANGUAGE_LABELS);
25928
+ break;
25929
+ default:
25930
+ keys = [];
25931
+ break;
25932
+ }
25933
+ return keys.map(key => ({ code: key, label: LANGUAGE_LABELS[key] }));
25934
+ };
25935
+ const getAutoLockOptions = (_deviceType) => {
25936
+ switch (_deviceType) {
25937
+ case hardwareShared.EDeviceType.Mini:
25938
+ case hardwareShared.EDeviceType.Classic:
25939
+ case hardwareShared.EDeviceType.Classic1s:
25940
+ case hardwareShared.EDeviceType.ClassicPure:
25941
+ return [
25942
+ { seconds: 0, minute: 1, hour: 0, day: 0 },
25943
+ { seconds: 0, minute: 2, hour: 0, day: 0 },
25944
+ { seconds: 0, minute: 5, hour: 0, day: 0 },
25945
+ { seconds: 0, minute: 10, hour: 0, day: 0 },
25946
+ { seconds: 0, minute: 0, hour: 0, day: 0 },
25947
+ ];
25948
+ case hardwareShared.EDeviceType.Touch:
25949
+ case hardwareShared.EDeviceType.Pro:
25950
+ return [
25951
+ { seconds: 30, minute: 0, hour: 0, day: 0 },
25952
+ { seconds: 0, minute: 1, hour: 0, day: 0 },
25953
+ { seconds: 0, minute: 2, hour: 0, day: 0 },
25954
+ { seconds: 0, minute: 5, hour: 0, day: 0 },
25955
+ { seconds: 0, minute: 10, hour: 0, day: 0 },
25956
+ { seconds: 0, minute: 30, hour: 0, day: 0 },
25957
+ { seconds: 0, minute: 0, hour: 0, day: 0 },
25958
+ ];
25959
+ default:
25960
+ return [];
25961
+ }
25962
+ };
25963
+ const getAutoShutDownOptions = (_deviceType) => {
25964
+ switch (_deviceType) {
25965
+ case hardwareShared.EDeviceType.Mini:
25966
+ return [];
25967
+ case hardwareShared.EDeviceType.Classic:
25968
+ case hardwareShared.EDeviceType.Classic1s:
25969
+ case hardwareShared.EDeviceType.ClassicPure:
25970
+ return [
25971
+ { seconds: 0, minute: 1, hour: 0, day: 0 },
25972
+ { seconds: 0, minute: 3, hour: 0, day: 0 },
25973
+ { seconds: 0, minute: 5, hour: 0, day: 0 },
25974
+ { seconds: 0, minute: 10, hour: 0, day: 0 },
25975
+ { seconds: 0, minute: 0, hour: 0, day: 0 },
25976
+ ];
25977
+ case hardwareShared.EDeviceType.Touch:
25978
+ case hardwareShared.EDeviceType.Pro:
25979
+ return [
25980
+ { seconds: 0, minute: 1, hour: 0, day: 0 },
25981
+ { seconds: 0, minute: 2, hour: 0, day: 0 },
25982
+ { seconds: 0, minute: 5, hour: 0, day: 0 },
25983
+ { seconds: 0, minute: 10, hour: 0, day: 0 },
25984
+ { seconds: 0, minute: 0, hour: 0, day: 0 },
25985
+ ];
25986
+ default:
25987
+ return [];
25988
+ }
25989
+ };
25990
+
25584
25991
  const getT1Data = () => ({
25585
25992
  default: {
25586
25993
  name: 'default',
@@ -25950,6 +26357,7 @@ const UI_REQUEST = {
25950
26357
  REQUEST_PASSPHRASE: 'ui-request_passphrase',
25951
26358
  REQUEST_PASSPHRASE_ON_DEVICE: 'ui-request_passphrase_on_device',
25952
26359
  REQUEST_DEVICE_IN_BOOTLOADER_FOR_WEB_DEVICE: 'ui-request_select_device_in_bootloader_for_web_device',
26360
+ REQUEST_DEVICE_FOR_SWITCH_FIRMWARE_WEB_DEVICE: 'ui-request_select_device_for_switch_firmware_web_device',
25953
26361
  CLOSE_UI_WINDOW: 'ui-close_window',
25954
26362
  CLOSE_UI_PIN_WINDOW: 'ui-close_pin_window',
25955
26363
  DEVICE_PROGRESS: 'ui-device_progress',
@@ -25991,6 +26399,7 @@ exports.FirmwareUpdateTipMessage = void 0;
25991
26399
  FirmwareUpdateTipMessage["AutoRebootToBootloader"] = "AutoRebootToBootloader";
25992
26400
  FirmwareUpdateTipMessage["GoToBootloaderSuccess"] = "GoToBootloaderSuccess";
25993
26401
  FirmwareUpdateTipMessage["SelectDeviceInBootloaderForWebDevice"] = "SelectDeviceInBootloaderForWebDevice";
26402
+ FirmwareUpdateTipMessage["SwitchFirmwareReconnectDevice"] = "SwitchFirmwareReconnectDevice";
25994
26403
  FirmwareUpdateTipMessage["ConfirmOnDevice"] = "ConfirmOnDevice";
25995
26404
  FirmwareUpdateTipMessage["FirmwareEraseSuccess"] = "FirmwareEraseSuccess";
25996
26405
  FirmwareUpdateTipMessage["StartTransferData"] = "StartTransferData";
@@ -26035,6 +26444,7 @@ const UI_RESPONSE = {
26035
26444
  RECEIVE_PIN: 'ui-receive_pin',
26036
26445
  RECEIVE_PASSPHRASE: 'ui-receive_passphrase',
26037
26446
  SELECT_DEVICE_IN_BOOTLOADER_FOR_WEB_DEVICE: 'ui-receive_select-device-in-bootloader-for-web-device',
26447
+ SELECT_DEVICE_FOR_SWITCH_FIRMWARE_WEB_DEVICE: 'ui-receive_select-device-for-switch-firmware-web-device',
26038
26448
  };
26039
26449
  const createUiResponse = (type, payload) => ({
26040
26450
  event: UI_EVENT,
@@ -26062,6 +26472,7 @@ const DEVICE = {
26062
26472
  WORD: 'word',
26063
26473
  SUPPORT_FEATURES: 'support_features',
26064
26474
  SELECT_DEVICE_IN_BOOTLOADER_FOR_WEB_DEVICE: 'select_device_in_bootloader_for_web_device',
26475
+ SELECT_DEVICE_FOR_SWITCH_FIRMWARE_WEB_DEVICE: 'select_device_for_switch_firmware_web_device',
26065
26476
  FEATURES: 'features',
26066
26477
  };
26067
26478
  const createDeviceMessage = (type, payload) => ({
@@ -26298,6 +26709,7 @@ const BleLogger = getLogger(exports.LoggerNames.HdBleTransport);
26298
26709
  const HttpLogger = getLogger(exports.LoggerNames.HdTransportHttp);
26299
26710
  const LowLevelLogger = getLogger(exports.LoggerNames.HdTransportLowLevel);
26300
26711
  const WebBleLogger = getLogger(exports.LoggerNames.HdWebBleTransport);
26712
+ const WebUsbLogger = getLogger(exports.LoggerNames.HdTransportWebUsb);
26301
26713
  class TransportManager {
26302
26714
  static load() {
26303
26715
  Log$c.debug('transport manager load');
@@ -26309,7 +26721,7 @@ class TransportManager {
26309
26721
  return __awaiter(this, void 0, void 0, function* () {
26310
26722
  try {
26311
26723
  const env = DataManager.getSettings('env');
26312
- Log$c.debug('Initializing transports');
26724
+ Log$c.debug('Initializing transports', env);
26313
26725
  if (env === 'react-native') {
26314
26726
  if (!this.reactNativeInit) {
26315
26727
  yield this.transport.init(BleLogger, DevicePool.emitter);
@@ -26326,7 +26738,10 @@ class TransportManager {
26326
26738
  yield this.transport.init(LowLevelLogger, DevicePool.emitter, this.plugin);
26327
26739
  }
26328
26740
  else if (env === 'desktop-web-ble') {
26329
- yield this.transport.init(WebBleLogger);
26741
+ yield this.transport.init(WebBleLogger, DevicePool.emitter);
26742
+ }
26743
+ else if (env === 'webusb' || env === 'desktop-webusb') {
26744
+ yield this.transport.init(WebUsbLogger);
26330
26745
  }
26331
26746
  else {
26332
26747
  yield this.transport.init(HttpLogger);
@@ -26462,12 +26877,15 @@ const cancelDeviceWithInitialize = (device) => {
26462
26877
  }));
26463
26878
  };
26464
26879
  const Log$b = getLogger(exports.LoggerNames.DeviceCommands);
26880
+ const LogCore = getLogger(exports.LoggerNames.Core);
26465
26881
  class DeviceCommands {
26466
26882
  constructor(device, mainId) {
26467
26883
  this.device = device;
26468
26884
  this.mainId = mainId;
26469
26885
  this.transport = TransportManager.getTransport();
26470
26886
  this.disposed = false;
26887
+ this.instanceId = generateInstanceId('DeviceCommands', device.sdkInstanceId);
26888
+ Log$b.debug(`[DeviceCommands] Created: ${this.instanceId}, device: ${this.device.instanceId}`);
26471
26889
  }
26472
26890
  dispose(_cancelRequest) {
26473
26891
  var _a, _b;
@@ -26540,11 +26958,16 @@ class DeviceCommands {
26540
26958
  const promise = this.transport.call(this.mainId, type, msg);
26541
26959
  this.callPromise = promise;
26542
26960
  const res = yield promise;
26543
- Log$b.debug('[DeviceCommands] [call] Received', res.type);
26961
+ if (res.type === 'Failure') {
26962
+ LogCore.debug('[DeviceCommands] [call] Received', res.type, res.message);
26963
+ }
26964
+ else {
26965
+ LogCore.debug('[DeviceCommands] [call] Received', res.type);
26966
+ }
26544
26967
  return res;
26545
26968
  }
26546
26969
  catch (error) {
26547
- Log$b.debug('[DeviceCommands] [call] Received error', error);
26970
+ LogCore.debug('[DeviceCommands] [call] Received error', error);
26548
26971
  if (error.errorCode === hardwareShared.HardwareErrorCode.BleDeviceBondError) {
26549
26972
  return {
26550
26973
  type: 'BleDeviceBondError',
@@ -26676,19 +27099,22 @@ class DeviceCommands {
26676
27099
  (message === null || message === void 0 ? void 0 : message.includes('verify failed'))) {
26677
27100
  error = hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.FirmwareVerificationFailed, message);
26678
27101
  }
27102
+ else if (message === null || message === void 0 ? void 0 : message.includes('Firmware downgrade not allowed')) {
27103
+ error = hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.FirmwareDowngradeNotAllowed, message);
27104
+ }
26679
27105
  }
26680
27106
  if (code === 'Failure_UnexpectedMessage') {
26681
27107
  if (callType === 'PassphraseAck') {
26682
27108
  error = hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.UnexpectPassphrase);
26683
27109
  }
26684
- if (message === 'Not in Signing mode') {
27110
+ else if (message === 'Not in Signing mode') {
26685
27111
  error = hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.NotInSigningMode);
26686
27112
  }
26687
27113
  }
26688
27114
  if (error) {
26689
27115
  return Promise.reject(error);
26690
27116
  }
26691
- return Promise.reject(hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, `${code || 'Failure_UnknownCode'},${message || 'Failure_UnknownMessage'}`));
27117
+ return Promise.reject(hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, `${code || 'Failure_UnknownCode'},${message || 'no error message'}`));
26692
27118
  }
26693
27119
  if (res.type === 'Features') {
26694
27120
  return Promise.resolve(patchFeatures(res));
@@ -26743,7 +27169,7 @@ class DeviceCommands {
26743
27169
  return new Promise((resolve, reject) => {
26744
27170
  const cancelAndReject = (_error) => cancelDeviceInPrompt(this.device, false)
26745
27171
  .then(onCancel => {
26746
- const error = hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.ActionCancelled, `${DEVICE.PIN} canceled`);
27172
+ const error = hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.CallQueueActionCancelled, `${DEVICE.PIN} canceled`);
26747
27173
  if (onCancel) {
26748
27174
  const { payload } = onCancel || {};
26749
27175
  reject(error || new Error(payload === null || payload === void 0 ? void 0 : payload.message));
@@ -26755,7 +27181,13 @@ class DeviceCommands {
26755
27181
  .catch(error => {
26756
27182
  reject(error);
26757
27183
  });
26758
- if (this.device.listenerCount(DEVICE.PIN) > 0) {
27184
+ const listenerCount = this.device.listenerCount(DEVICE.PIN);
27185
+ Log$b.debug(`[${this.instanceId}] _promptPin called`, {
27186
+ responseID: this.currentResponseID,
27187
+ deviceInstanceId: this.device.instanceId,
27188
+ listenerCount,
27189
+ });
27190
+ if (listenerCount > 0) {
26759
27191
  this.device.setCancelableAction(cancelAndReject);
26760
27192
  this.device.emit(DEVICE.PIN, this.device, type, (err, pin) => {
26761
27193
  this.device.clearCancelableAction();
@@ -26768,8 +27200,16 @@ class DeviceCommands {
26768
27200
  });
26769
27201
  }
26770
27202
  else {
26771
- console.warn('[DeviceCommands] [call] PIN callback not configured, cancelling request');
26772
- reject(hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, '_promptPin: PIN callback not configured'));
27203
+ const activeRequests = getActiveRequestsByDeviceInstance(this.device.instanceId);
27204
+ const errorInfo = {
27205
+ commandsInstanceId: this.instanceId,
27206
+ deviceInstanceId: this.device.instanceId,
27207
+ currentResponseID: this.currentResponseID,
27208
+ listenerCount,
27209
+ activeRequests: activeRequests.map(formatRequestContext),
27210
+ };
27211
+ LogCore.error('[DeviceCommands] [call] PIN callback not configured, cancelling request', Object.assign({}, errorInfo));
27212
+ reject(hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, `_promptPin: PIN callback not configured: ${JSON.stringify(errorInfo)}`));
26773
27213
  }
26774
27214
  });
26775
27215
  }
@@ -26777,7 +27217,7 @@ class DeviceCommands {
26777
27217
  return new Promise((resolve, reject) => {
26778
27218
  const cancelAndReject = (_error) => cancelDeviceInPrompt(this.device, false)
26779
27219
  .then(onCancel => {
26780
- const error = hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.ActionCancelled, `${DEVICE.PASSPHRASE} canceled`);
27220
+ const error = hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.CallQueueActionCancelled, `${DEVICE.PASSPHRASE} canceled`);
26781
27221
  if (onCancel) {
26782
27222
  const { payload } = onCancel || {};
26783
27223
  reject(error || new Error(payload === null || payload === void 0 ? void 0 : payload.message));
@@ -26802,7 +27242,7 @@ class DeviceCommands {
26802
27242
  });
26803
27243
  }
26804
27244
  else {
26805
- Log$b.error('[DeviceCommands] [call] Passphrase callback not configured, cancelling request');
27245
+ LogCore.error('[DeviceCommands] [call] Passphrase callback not configured, cancelling request');
26806
27246
  reject(hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, '_promptPassphrase: Passphrase callback not configured'));
26807
27247
  }
26808
27248
  });
@@ -26817,7 +27257,7 @@ const parseRunOptions = (options) => {
26817
27257
  const Log$a = getLogger(exports.LoggerNames.Device);
26818
27258
  const deviceSessionCache = {};
26819
27259
  class Device extends events.exports {
26820
- constructor(descriptor) {
27260
+ constructor(descriptor, sdkInstanceId) {
26821
27261
  super();
26822
27262
  this.deviceConnector = null;
26823
27263
  this.deviceAcquired = false;
@@ -26831,12 +27271,17 @@ class Device extends events.exports {
26831
27271
  this.keepSession = false;
26832
27272
  this.passphraseState = undefined;
26833
27273
  this.originalDescriptor = descriptor;
27274
+ this.sdkInstanceId = sdkInstanceId;
27275
+ this.instanceId = generateInstanceId('Device', this.sdkInstanceId);
27276
+ this.createdAt = Date.now();
27277
+ Log$a.debug(`[Device] Created: ${this.instanceId}${this.sdkInstanceId ? ` for SDK: ${this.sdkInstanceId}` : ''}`);
26834
27278
  }
26835
- static fromDescriptor(originalDescriptor) {
27279
+ static fromDescriptor(originalDescriptor, sdkInstanceId) {
26836
27280
  const descriptor = Object.assign({}, originalDescriptor);
26837
- return new Device(descriptor);
27281
+ return new Device(descriptor, sdkInstanceId);
26838
27282
  }
26839
27283
  toMessageObject() {
27284
+ var _a;
26840
27285
  if (this.isUnacquired() || !this.features)
26841
27286
  return null;
26842
27287
  const env = DataManager.getSettings('env');
@@ -26846,9 +27291,13 @@ class Device extends events.exports {
26846
27291
  return {
26847
27292
  connectId: DataManager.isBleConnect(env) ? this.mainId || null : getDeviceUUID(this.features),
26848
27293
  uuid: getDeviceUUID(this.features),
27294
+ commType: this.originalDescriptor.commType,
27295
+ sdkInstanceId: this.sdkInstanceId,
27296
+ instanceId: this.instanceId,
27297
+ createdAt: this.createdAt,
26849
27298
  deviceType,
26850
27299
  deviceId: this.features.device_id || null,
26851
- path: this.originalDescriptor.path,
27300
+ path: (_a = this.originalDescriptor) === null || _a === void 0 ? void 0 : _a.path,
26852
27301
  bleName,
26853
27302
  name: bleName || label || `UKey ${deviceType === null || deviceType === void 0 ? void 0 : deviceType.toUpperCase()}`,
26854
27303
  label: label || 'UKey',
@@ -27123,6 +27572,7 @@ class Device extends events.exports {
27123
27572
  });
27124
27573
  }
27125
27574
  _runInner(fn, options) {
27575
+ var _a;
27126
27576
  return __awaiter(this, void 0, void 0, function* () {
27127
27577
  if (!this.isUsedHere() || this.commands.disposed) {
27128
27578
  const env = DataManager.getSettings('env');
@@ -27165,14 +27615,10 @@ class Device extends events.exports {
27165
27615
  this.runPromise.reject(e);
27166
27616
  }
27167
27617
  if (e instanceof hardwareShared.HardwareError &&
27168
- (e.errorCode === hardwareShared.HardwareErrorCode.DeviceInitializeFailed ||
27169
- e.errorCode === hardwareShared.HardwareErrorCode.DeviceInterruptedFromOutside ||
27170
- e.errorCode === hardwareShared.HardwareErrorCode.DeviceInterruptedFromUser ||
27171
- e.errorCode === hardwareShared.HardwareErrorCode.DeviceCheckPassphraseStateError ||
27172
- e.errorCode === hardwareShared.HardwareErrorCode.ResponseUnexpectTypeError ||
27173
- e.errorCode === hardwareShared.HardwareErrorCode.PinInvalid ||
27174
- e.errorCode === hardwareShared.HardwareErrorCode.PinCancelled ||
27175
- e.errorCode === hardwareShared.HardwareErrorCode.UnexpectPassphrase)) {
27618
+ hardwareShared.ERROR_CODES_REQUIRE_RELEASE.includes(e.errorCode)) {
27619
+ if (hardwareShared.ERROR_CODES_REQUIRE_DISCONNECT.includes(e.errorCode)) {
27620
+ yield ((_a = this.deviceConnector) === null || _a === void 0 ? void 0 : _a.disconnect(this.mainId));
27621
+ }
27176
27622
  yield this.release();
27177
27623
  Log$a.debug(`error code ${e.errorCode} release device, mainId: ${this.mainId}`);
27178
27624
  }
@@ -27420,10 +27866,10 @@ class DeviceList extends events.exports {
27420
27866
  }
27421
27867
  }
27422
27868
 
27423
- const getFirmwareReleaseInfo = (features) => {
27424
- const firmwareStatus = DataManager.getFirmwareStatus(features);
27425
- const changelog = DataManager.getFirmwareChangelog(features);
27426
- const release = DataManager.getFirmwareLatestRelease(features);
27869
+ const getFirmwareReleaseInfo = (features, firmwareType) => {
27870
+ const firmwareStatus = DataManager.getFirmwareStatus(features, firmwareType);
27871
+ const changelog = DataManager.getFirmwareChangelog(features, firmwareType);
27872
+ const release = DataManager.getFirmwareLatestRelease(features, firmwareType);
27427
27873
  const bootloaderMode = !!features.bootloader_mode;
27428
27874
  return {
27429
27875
  status: firmwareStatus,
@@ -27444,8 +27890,8 @@ const getBleFirmwareReleaseInfo = (features) => {
27444
27890
  bootloaderMode,
27445
27891
  };
27446
27892
  };
27447
- const getBootloaderReleaseInfo = (features, willUpdateFirmwareVersion) => {
27448
- const release = DataManager.getFirmwareLatestRelease(features);
27893
+ const getBootloaderReleaseInfo = ({ features, willUpdateFirmwareVersion, firmwareType, }) => {
27894
+ const release = DataManager.getFirmwareLatestRelease(features, firmwareType);
27449
27895
  const changelog = [release === null || release === void 0 ? void 0 : release.bootloaderChangelog].filter(item => item != null &&
27450
27896
  typeof item === 'object' &&
27451
27897
  Object.prototype.hasOwnProperty.call(item, 'zh-CN') &&
@@ -27454,10 +27900,14 @@ const getBootloaderReleaseInfo = (features, willUpdateFirmwareVersion) => {
27454
27900
  let shouldUpdate = false;
27455
27901
  const deviceType = getDeviceType(features);
27456
27902
  if (DeviceModelToTypes.model_mini.includes(deviceType)) {
27457
- shouldUpdate = !!checkNeedUpdateBootForClassicAndMini(features, willUpdateFirmwareVersion);
27903
+ shouldUpdate = !!checkNeedUpdateBootForClassicAndMini({
27904
+ features,
27905
+ willUpdateFirmware: willUpdateFirmwareVersion,
27906
+ firmwareType,
27907
+ });
27458
27908
  }
27459
27909
  else if (DeviceModelToTypes.model_touch.includes(deviceType)) {
27460
- shouldUpdate = checkNeedUpdateBootForTouch(features);
27910
+ shouldUpdate = checkNeedUpdateBootForTouch(features, firmwareType);
27461
27911
  }
27462
27912
  return {
27463
27913
  status: shouldUpdate ? 'outdated' : 'valid',
@@ -27495,13 +27945,36 @@ class BaseMethod {
27495
27945
  getVersionRange() {
27496
27946
  return {};
27497
27947
  }
27948
+ setContext(context) {
27949
+ this.sdkInstanceId = context.sdkInstanceId;
27950
+ this.instanceId = generateInstanceId('Method', this.sdkInstanceId);
27951
+ Log$9.debug(`[BaseMethod] Created: ${this.instanceId}, method: ${this.name}, SDK: ${this.sdkInstanceId}`);
27952
+ }
27498
27953
  setDevice(device) {
27954
+ var _a, _b;
27499
27955
  this.device = device;
27956
+ if (!device.sdkInstanceId && this.sdkInstanceId) {
27957
+ device.sdkInstanceId = this.sdkInstanceId;
27958
+ device.instanceId = generateInstanceId('Device', this.sdkInstanceId);
27959
+ }
27960
+ if (this.requestContext) {
27961
+ this.requestContext.deviceInstanceId = device.instanceId;
27962
+ this.requestContext.commandsInstanceId = (_a = device.commands) === null || _a === void 0 ? void 0 : _a.instanceId;
27963
+ this.requestContext.sdkInstanceId = this.sdkInstanceId;
27964
+ }
27965
+ if (device.commands && this.sdkInstanceId) {
27966
+ device.commands.instanceId = generateInstanceId('DeviceCommands', this.sdkInstanceId);
27967
+ }
27968
+ if (device.commands) {
27969
+ device.commands.currentResponseID = this.responseID;
27970
+ }
27971
+ Log$9.debug(`[${this.instanceId}] setDevice: ${device.instanceId}, commands: ${(_b = device.commands) === null || _b === void 0 ? void 0 : _b.instanceId}`);
27500
27972
  }
27501
27973
  checkFirmwareRelease() {
27502
27974
  if (!this.device || !this.device.features)
27503
27975
  return;
27504
- const releaseInfo = getFirmwareReleaseInfo(this.device.features);
27976
+ const firmwareType = getFirmwareType(this.device.features);
27977
+ const releaseInfo = getFirmwareReleaseInfo(this.device.features, firmwareType);
27505
27978
  this.postMessage(createFirmwareMessage(FIRMWARE.RELEASE_INFO, Object.assign(Object.assign({}, releaseInfo), { device: this.device.toMessageObject() })));
27506
27979
  const bleReleaseInfo = getBleFirmwareReleaseInfo(this.device.features);
27507
27980
  this.postMessage(createFirmwareMessage(FIRMWARE.BLE_RELEASE_INFO, Object.assign(Object.assign({}, bleReleaseInfo), { device: this.device.toMessageObject() })));
@@ -27526,12 +27999,17 @@ class BaseMethod {
27526
27999
  const versionRange = getMethodVersionRange(this.device.features, type => getVersionRange()[type]);
27527
28000
  if (!versionRange) {
27528
28001
  if (options === null || options === void 0 ? void 0 : options.strictCheckDeviceSupport) {
27529
- throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.DeviceNotSupportMethod, 'Device does not support this method');
28002
+ throw hardwareShared.createDeviceNotSupportMethodError(this.name, getFirmwareType(this.device.features));
27530
28003
  }
27531
28004
  return;
27532
28005
  }
27533
28006
  if (semver__default["default"].valid(firmwareVersion) && semver__default["default"].lt(firmwareVersion, versionRange.min)) {
27534
- throw hardwareShared.createNeedUpgradeFirmwareHardwareError(firmwareVersion, versionRange.min);
28007
+ throw hardwareShared.createNeedUpgradeFirmwareHardwareError({
28008
+ currentVersion: firmwareVersion,
28009
+ requireVersion: versionRange.min,
28010
+ methodName: this.name,
28011
+ firmwareType: getFirmwareType(this.device.features),
28012
+ });
27535
28013
  }
27536
28014
  }
27537
28015
  checkSafetyLevelOnTestNet() {
@@ -27701,8 +28179,12 @@ class CheckFirmwareRelease extends BaseMethod {
27701
28179
  this.skipForceUpdateCheck = true;
27702
28180
  }
27703
28181
  run() {
28182
+ var _a;
28183
+ const payload = this.payload;
27704
28184
  if (this.device.features) {
27705
- const releaseInfo = getFirmwareReleaseInfo(this.device.features);
28185
+ const deviceFirmwareType = getFirmwareType(this.device.features);
28186
+ const firmwareType = (_a = payload.firmwareType) !== null && _a !== void 0 ? _a : deviceFirmwareType;
28187
+ const releaseInfo = getFirmwareReleaseInfo(this.device.features, firmwareType);
27706
28188
  return Promise.resolve(releaseInfo);
27707
28189
  }
27708
28190
  return Promise.resolve(null);
@@ -27843,12 +28325,20 @@ class CheckBootloaderRelease extends BaseMethod {
27843
28325
  this.skipForceUpdateCheck = true;
27844
28326
  }
27845
28327
  run() {
28328
+ var _a;
27846
28329
  return __awaiter(this, void 0, void 0, function* () {
27847
28330
  if (!this.device.features) {
27848
28331
  return null;
27849
28332
  }
27850
28333
  const { features } = this.device;
27851
- const releaseInfo = getBootloaderReleaseInfo(features, this.payload.willUpdateFirmwareVersion);
28334
+ const payload = this.payload;
28335
+ const deviceFirmwareType = getFirmwareType(features);
28336
+ const firmwareType = (_a = payload.firmwareType) !== null && _a !== void 0 ? _a : deviceFirmwareType;
28337
+ const releaseInfo = getBootloaderReleaseInfo({
28338
+ features,
28339
+ willUpdateFirmwareVersion: payload.willUpdateFirmwareVersion,
28340
+ firmwareType,
28341
+ });
27852
28342
  return Promise.resolve(releaseInfo);
27853
28343
  });
27854
28344
  }
@@ -27864,11 +28354,14 @@ class CheckAllFirmwareRelease extends BaseMethod {
27864
28354
  var _a, _b;
27865
28355
  return __awaiter(this, void 0, void 0, function* () {
27866
28356
  const { features } = this.device;
27867
- const { checkBridgeRelease } = this.payload;
28357
+ const { checkBridgeRelease, firmwareType: firmwareTypeParams } = this
28358
+ .payload;
27868
28359
  if (!features) {
27869
28360
  return Promise.resolve(null);
27870
28361
  }
27871
- const firmwareRelease = getFirmwareReleaseInfo(features);
28362
+ const deviceFirmwareType = getFirmwareType(features);
28363
+ const firmwareType = firmwareTypeParams !== null && firmwareTypeParams !== void 0 ? firmwareTypeParams : deviceFirmwareType;
28364
+ const firmwareRelease = getFirmwareReleaseInfo(features, firmwareType);
27872
28365
  const currentFirmwareVersion = getDeviceFirmwareVersion(features).join('.');
27873
28366
  const willUpdateFirmwareVersion = (_b = (_a = firmwareRelease.release) === null || _a === void 0 ? void 0 : _a.version) === null || _b === void 0 ? void 0 : _b.join('.');
27874
28367
  const deviceType = getDeviceType(features);
@@ -27881,7 +28374,11 @@ class CheckAllFirmwareRelease extends BaseMethod {
27881
28374
  willUpdateFirmwareVersion,
27882
28375
  });
27883
28376
  }
27884
- const bootloaderRelease = getBootloaderReleaseInfo(features, willUpdateFirmwareVersion);
28377
+ const bootloaderRelease = getBootloaderReleaseInfo({
28378
+ features,
28379
+ willUpdateFirmwareVersion,
28380
+ firmwareType,
28381
+ });
27885
28382
  const bleFirmwareReleaseInfo = getBleFirmwareReleaseInfo(features);
27886
28383
  return {
27887
28384
  firmware: firmwareRelease,
@@ -27895,11 +28392,32 @@ class CheckAllFirmwareRelease extends BaseMethod {
27895
28392
  release: bridgeReleaseInfo.releaseVersion,
27896
28393
  }
27897
28394
  : undefined,
28395
+ features,
27898
28396
  };
27899
28397
  });
27900
28398
  }
27901
28399
  }
27902
28400
 
28401
+ class CheckFirmwareTypeAvailable extends BaseMethod {
28402
+ init() {
28403
+ this.useDevice = false;
28404
+ this.useDevicePassphraseState = false;
28405
+ this.skipForceUpdateCheck = true;
28406
+ }
28407
+ run() {
28408
+ var _a, _b;
28409
+ const payload = this.payload;
28410
+ const { deviceType, firmwareType } = payload;
28411
+ if (deviceType === hardwareShared.EDeviceType.Unknown) {
28412
+ return Promise.resolve(undefined);
28413
+ }
28414
+ const latestFirmwareField = getLatestFirmwareField(firmwareType);
28415
+ const releaseInfos = (_b = (_a = DataManager.deviceMap[deviceType]) === null || _a === void 0 ? void 0 : _a[latestFirmwareField]) !== null && _b !== void 0 ? _b : [];
28416
+ const releaseInfo = findLatestRelease(releaseInfos);
28417
+ return Promise.resolve(releaseInfo);
28418
+ }
28419
+ }
28420
+
27903
28421
  class DeviceBackup extends BaseMethod {
27904
28422
  init() {
27905
28423
  this.useDevicePassphraseState = false;
@@ -28038,12 +28556,25 @@ const validateParams = (values, fields) => {
28038
28556
  throw invalidParameter(`Parameter [${field.name}] is of type invalid and should be [${field.type}].`);
28039
28557
  }
28040
28558
  break;
28041
- case 'buffer':
28042
- if (typeof value === 'undefined' ||
28043
- (typeof value.constructor.isBuffer === 'function' && value.constructor.isBuffer(value))) {
28559
+ case 'buffer': {
28560
+ if (typeof value === 'undefined' || value === null) {
28561
+ throw invalidParameter(`Parameter [${field.name}] is of type invalid and should be [buffer].`);
28562
+ }
28563
+ const isNodeBuffer = typeof Buffer !== 'undefined' &&
28564
+ typeof Buffer.isBuffer === 'function' &&
28565
+ Buffer.isBuffer(value);
28566
+ const isCustomBuffer = value.constructor &&
28567
+ typeof value.constructor.isBuffer === 'function' &&
28568
+ value.constructor.isBuffer(value);
28569
+ const isArrayBuffer = typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer;
28570
+ const isArrayBufferView = typeof ArrayBuffer !== 'undefined' &&
28571
+ typeof ArrayBuffer.isView === 'function' &&
28572
+ ArrayBuffer.isView(value);
28573
+ if (!isNodeBuffer && !isCustomBuffer && !isArrayBuffer && !isArrayBufferView) {
28044
28574
  throw invalidParameter(`Parameter [${field.name}] is of type invalid and should be [buffer].`);
28045
28575
  }
28046
28576
  break;
28577
+ }
28047
28578
  case 'hexString':
28048
28579
  if (typeof value !== 'string' || !isHexString(addHexPrefix(value))) {
28049
28580
  throw invalidParameter(`Parameter [${field.name}] is of type invalid and should be [${field.type}].`);
@@ -28245,19 +28776,13 @@ class DeviceSettings extends BaseMethod {
28245
28776
  { name: 'passphraseAlwaysOnDevice', type: 'boolean' },
28246
28777
  { name: 'safetyChecks', type: 'number' },
28247
28778
  { name: 'experimentalFeatures', type: 'boolean' },
28779
+ { name: 'autoShutdownDelayMs', type: 'number' },
28780
+ { name: 'changeBrightness', type: 'boolean' },
28781
+ { name: 'hapticFeedback', type: 'boolean' },
28248
28782
  ]);
28249
- this.params = {
28250
- language: this.payload.language,
28251
- label: this.payload.label,
28252
- use_passphrase: this.payload.usePassphrase,
28253
- homescreen: this.payload.homescreen,
28254
- _passphrase_source: this.payload.passphraseSource,
28255
- auto_lock_delay_ms: this.payload.autoLockDelayMs,
28256
- display_rotation: this.payload.displayRotation,
28257
- passphrase_always_on_device: this.payload.passphraseAlwaysOnDevice,
28258
- safety_checks: this.payload.safetyChecks,
28259
- experimental_features: this.payload.experimentalFeatures,
28260
- };
28783
+ this.params = Object.assign(Object.assign({ language: this.payload.language, label: this.payload.label, use_passphrase: this.payload.usePassphrase, homescreen: this.payload.homescreen, _passphrase_source: this.payload.passphraseSource, auto_lock_delay_ms: this.payload.autoLockDelayMs, display_rotation: this.payload.displayRotation, passphrase_always_on_device: this.payload.passphraseAlwaysOnDevice, safety_checks: this.payload.safetyChecks, experimental_features: this.payload.experimentalFeatures, auto_shutdown_delay_ms: this.payload.autoShutdownDelayMs }, (this.payload.changeBrightness
28784
+ ? { change_brightness: this.payload.changeBrightness }
28785
+ : undefined)), { haptic_feedback: this.payload.hapticFeedback });
28261
28786
  }
28262
28787
  getVersionRange() {
28263
28788
  if (this.payload.usePassphrase) {
@@ -28270,9 +28795,31 @@ class DeviceSettings extends BaseMethod {
28270
28795
  return {};
28271
28796
  }
28272
28797
  run() {
28798
+ var _a, _b, _c, _d, _e;
28273
28799
  return __awaiter(this, void 0, void 0, function* () {
28274
- const res = yield this.device.commands.typedCall('ApplySettings', 'Success', Object.assign({}, this.params));
28275
- return Promise.resolve(res.message);
28800
+ try {
28801
+ const res = yield this.device.commands.typedCall('ApplySettings', 'Success', Object.assign({}, this.params));
28802
+ return res.message;
28803
+ }
28804
+ catch (error) {
28805
+ if ((_a = error.message) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes('no setting provided')) {
28806
+ return Promise.reject(hardwareShared.TypedError(hardwareShared.HardwareErrorCode.DeviceSettingsNotProvided, error.message));
28807
+ }
28808
+ if ((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('all support ISO_639-1 language keys include')) {
28809
+ const supportedLanguages = (_e = (_d = (_c = error.message) === null || _c === void 0 ? void 0 : _c.replace('all support ISO_639-1 language keys include', '')) === null || _d === void 0 ? void 0 : _d.trim()) === null || _e === void 0 ? void 0 : _e.split(' ');
28810
+ const errorMessage = supportedLanguages.reduce((acc, language) => {
28811
+ const label = LANGUAGE_LABELS === null || LANGUAGE_LABELS === void 0 ? void 0 : LANGUAGE_LABELS[language];
28812
+ if (label) {
28813
+ acc.push(label);
28814
+ }
28815
+ return acc;
28816
+ }, []);
28817
+ return Promise.reject(hardwareShared.TypedError(hardwareShared.HardwareErrorCode.DeviceSettingsLanguageNotSupport, error.message, {
28818
+ languages: errorMessage.join(', '),
28819
+ }));
28820
+ }
28821
+ throw error;
28822
+ }
28276
28823
  });
28277
28824
  }
28278
28825
  }
@@ -28314,29 +28861,53 @@ class DeviceUploadResource extends BaseMethod {
28314
28861
  this.paramsData = {
28315
28862
  data: new Uint8Array(),
28316
28863
  thumbnailData: new Uint8Array(),
28864
+ blurData: new Uint8Array(),
28865
+ };
28866
+ this.uploadProgress = {
28867
+ totalBytes: 0,
28868
+ uploadedBytes: 0,
28869
+ currentFile: 'main',
28317
28870
  };
28318
28871
  this.processResourceRequest = (res) => __awaiter(this, void 0, void 0, function* () {
28319
28872
  if (res.type === 'Success') {
28320
- return res.message;
28873
+ const response = {
28874
+ message: res.message.message,
28875
+ };
28876
+ response.applyScreen = true;
28877
+ const firmwareVersion = getDeviceFirmwareVersion(this.device.features).join('.');
28878
+ const deviceType = getDeviceType(this.device.features);
28879
+ if (deviceType === hardwareShared.EDeviceType.Pro && semver__default["default"].gte(firmwareVersion, '4.17.0')) {
28880
+ response.applyScreen = false;
28881
+ }
28882
+ return response;
28321
28883
  }
28322
28884
  const { offset, data_length } = res.message;
28323
- const { data, thumbnailData } = this.paramsData;
28885
+ const { data, thumbnailData, blurData } = this.paramsData;
28324
28886
  if (offset === undefined) {
28325
28887
  throw new Error('offset is undefined');
28326
28888
  }
28327
- let payload;
28328
- if (res.type === 'ResourceRequest') {
28329
- payload = new Uint8Array(data.slice(offset, Math.min(offset + data_length, data.byteLength)));
28330
- }
28331
- else {
28332
- payload = new Uint8Array(thumbnailData.slice(offset, Math.min(offset + data_length, thumbnailData.byteLength)));
28889
+ let sourceData;
28890
+ switch (res.type) {
28891
+ case 'ResourceRequest':
28892
+ sourceData = data;
28893
+ break;
28894
+ case 'BlurRequest':
28895
+ sourceData = blurData;
28896
+ break;
28897
+ case 'ZoomRequest':
28898
+ sourceData = thumbnailData;
28899
+ break;
28900
+ default:
28901
+ throw new Error('Invalid request type');
28333
28902
  }
28903
+ const payload = this.getDataChunk(sourceData, offset, data_length);
28334
28904
  const digest = blake2s.blake2s(payload);
28905
+ this.updateProgress(payload.byteLength, res.type);
28335
28906
  const resourceAckParams = {
28336
28907
  data_chunk: utils.bytesToHex(payload),
28337
28908
  hash: utils.bytesToHex(digest),
28338
28909
  };
28339
- const response = yield this.device.commands.typedCall('ResourceAck', ['ResourceRequest', 'ZoomRequest', 'Success'], resourceAckParams);
28910
+ const response = yield this.device.commands.typedCall('ResourceAck', ['ResourceRequest', 'ZoomRequest', 'BlurRequest', 'Success'], resourceAckParams);
28340
28911
  return this.processResourceRequest(response);
28341
28912
  });
28342
28913
  }
@@ -28364,16 +28935,23 @@ class DeviceUploadResource extends BaseMethod {
28364
28935
  { name: 'suffix', type: 'string', required: true },
28365
28936
  { name: 'dataHex', type: 'string', required: true },
28366
28937
  { name: 'thumbnailDataHex', type: 'string', required: true },
28938
+ { name: 'blurDataHex', type: 'hexString', required: true },
28367
28939
  { name: 'resType', type: 'number', required: true },
28368
28940
  { name: 'nftMetaData', type: 'string' },
28369
28941
  { name: 'fileNameNoExt', type: 'string' },
28370
28942
  ]);
28371
- const { suffix, dataHex, thumbnailDataHex, resType, nftMetaData } = this
28943
+ const { suffix, dataHex, thumbnailDataHex, blurDataHex, resType, nftMetaData } = this
28372
28944
  .payload;
28373
28945
  this.paramsData = {
28374
- data: hexToBytes(dataHex),
28375
- thumbnailData: hexToBytes(thumbnailDataHex),
28946
+ data: new Uint8Array(hexToBytes(dataHex)),
28947
+ thumbnailData: new Uint8Array(hexToBytes(thumbnailDataHex)),
28948
+ blurData: new Uint8Array(hexToBytes(blurDataHex)),
28376
28949
  };
28950
+ this.uploadProgress.totalBytes =
28951
+ this.paramsData.data.byteLength +
28952
+ this.paramsData.thumbnailData.byteLength +
28953
+ this.paramsData.blurData.byteLength;
28954
+ this.uploadProgress.uploadedBytes = 0;
28377
28955
  const fileHash = utils.bytesToHex(blake2s.blake2s(this.payload.dataHex)).slice(0, 8);
28378
28956
  const file_name_no_ext = lodash.isEmpty(this.payload.fileNameNoExt)
28379
28957
  ? `${resType === 0 ? 'wp' : 'nft'}-${fileHash}-${Math.floor(Date.now() / 1000)}`
@@ -28382,18 +28960,38 @@ class DeviceUploadResource extends BaseMethod {
28382
28960
  extension: suffix,
28383
28961
  data_length: this.paramsData.data.byteLength,
28384
28962
  zoom_data_length: this.paramsData.thumbnailData.byteLength,
28963
+ blur_data_length: this.paramsData.blurData.byteLength,
28385
28964
  res_type: resType,
28386
28965
  nft_meta_data: nftMetaData,
28387
28966
  file_name_no_ext,
28388
28967
  };
28389
28968
  }
28969
+ getDataChunk(sourceData, offset, length) {
28970
+ const endOffset = Math.min(offset + length, sourceData.byteLength);
28971
+ return sourceData.subarray(offset, endOffset);
28972
+ }
28973
+ updateProgress(chunkSize, requestType) {
28974
+ this.uploadProgress.uploadedBytes += chunkSize;
28975
+ if (requestType === 'ResourceRequest') {
28976
+ this.uploadProgress.currentFile = 'main';
28977
+ }
28978
+ else if (requestType === 'ZoomRequest') {
28979
+ this.uploadProgress.currentFile = 'thumbnail';
28980
+ }
28981
+ else {
28982
+ this.uploadProgress.currentFile = 'blur';
28983
+ }
28984
+ const progress = Math.round((this.uploadProgress.uploadedBytes / this.uploadProgress.totalBytes) * 100);
28985
+ if (process.env.NODE_ENV === 'development') {
28986
+ console.log(`Upload progress: ${progress}% (${this.uploadProgress.currentFile})`);
28987
+ }
28988
+ }
28390
28989
  run() {
28391
28990
  return __awaiter(this, void 0, void 0, function* () {
28392
28991
  if (this.payload.resType === hardwareTransport.Messages.ResourceType.Nft) {
28393
28992
  this.checkUploadNFTSupport();
28394
28993
  }
28395
- const res = yield this.device.commands.typedCall('ResourceUpload', ['ResourceRequest', 'ZoomRequest', 'Success'], this.params);
28396
- this.postMessage(createUiMessage(UI_REQUEST.CLOSE_UI_WINDOW));
28994
+ const res = yield this.device.commands.typedCall('ResourceUpload', ['ResourceRequest', 'ZoomRequest', 'BlurRequest', 'Success'], this.params);
28397
28995
  return this.processResourceRequest(res);
28398
28996
  });
28399
28997
  }
@@ -28463,8 +29061,13 @@ class DeviceWipe extends BaseMethod {
28463
29061
  }
28464
29062
  }
28465
29063
 
28466
- const getBinary = ({ features, updateType, version, isUpdateBootloader, }) => __awaiter(void 0, void 0, void 0, function* () {
28467
- const releaseInfo = getInfo({ features, updateType, targetVersion: version === null || version === void 0 ? void 0 : version.join('.') });
29064
+ const getBinary = ({ features, updateType, version, isUpdateBootloader, firmwareType, }) => __awaiter(void 0, void 0, void 0, function* () {
29065
+ const releaseInfo = getInfo({
29066
+ features,
29067
+ updateType,
29068
+ targetVersion: version === null || version === void 0 ? void 0 : version.join('.'),
29069
+ firmwareType,
29070
+ });
28468
29071
  if (!releaseInfo) {
28469
29072
  throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, 'no firmware found for this device');
28470
29073
  }
@@ -28501,7 +29104,7 @@ const getSysResourceBinary = (url) => __awaiter(void 0, void 0, void 0, function
28501
29104
  binary: fw,
28502
29105
  };
28503
29106
  });
28504
- const getInfo = ({ features, updateType, targetVersion }) => {
29107
+ const getInfo = ({ features, updateType, targetVersion, firmwareType }) => {
28505
29108
  var _a, _b;
28506
29109
  const deviceType = getDeviceType(features);
28507
29110
  if (deviceType === 'unknown') {
@@ -28512,6 +29115,7 @@ const getInfo = ({ features, updateType, targetVersion }) => {
28512
29115
  features,
28513
29116
  updateType,
28514
29117
  targetVersion,
29118
+ firmwareType,
28515
29119
  });
28516
29120
  const releaseInfo = (_b = (_a = deviceMap === null || deviceMap === void 0 ? void 0 : deviceMap[deviceType]) === null || _a === void 0 ? void 0 : _a[firmwareUpdateField]) !== null && _b !== void 0 ? _b : [];
28517
29121
  return findLatestRelease(releaseInfo);
@@ -28519,8 +29123,14 @@ const getInfo = ({ features, updateType, targetVersion }) => {
28519
29123
 
28520
29124
  const NEW_BOOT_UPRATE_FIRMWARE_VERSION = '2.4.5';
28521
29125
  const SESSION_ERROR$1 = 'session not found';
28522
- const FIRMWARE_UPDATE_CONFIRM = 'Firmware install confirmed';
29126
+ const FIRMWARE_UPDATE_CONFIRM$1 = 'Firmware install confirmed';
28523
29127
  const Log$8 = getLogger(exports.LoggerNames.Method);
29128
+ const isDeviceDisconnectedError$1 = (error) => {
29129
+ const message = error instanceof Error ? error.message : String(error !== null && error !== void 0 ? error : '');
29130
+ return (message.includes('device was disconnected') ||
29131
+ message.includes('transferIn') ||
29132
+ message.includes('USBDevice'));
29133
+ };
28524
29134
  const postConfirmationMessage = (device) => {
28525
29135
  var _a;
28526
29136
  if ((_a = device.features) === null || _a === void 0 ? void 0 : _a.firmware_present) {
@@ -28552,27 +29162,80 @@ const waitBleInstall = (updateType) => __awaiter(void 0, void 0, void 0, functio
28552
29162
  yield wait(10 * 1000);
28553
29163
  }
28554
29164
  });
28555
- const uploadFirmware = (updateType, typedCall, postMessage, device, { payload, rebootOnSuccess, }) => __awaiter(void 0, void 0, void 0, function* () {
29165
+ const uploadFirmware = (updateType, typedCall, postMessage, device, { payload, rebootOnSuccess, }, isUpdateBootloader) => __awaiter(void 0, void 0, void 0, function* () {
29166
+ var _a, _b;
28556
29167
  const deviceType = getDeviceType(device.features);
28557
29168
  if (DeviceModelToTypes.model_mini.includes(deviceType)) {
28558
29169
  postConfirmationMessage(device);
28559
29170
  postProgressTip(device, 'ConfirmOnDevice', postMessage);
28560
- const eraseCommand = updateType === 'firmware' ? 'FirmwareErase' : 'FirmwareErase_ex';
29171
+ const isFirmware = updateType === 'firmware';
29172
+ if (isFirmware && !isUpdateBootloader) {
29173
+ const newFeatures = yield typedCall('GetFeatures', 'Features', {});
29174
+ const deviceBootloaderVersion = getDeviceBootloaderVersion(newFeatures.message).join('.');
29175
+ const supportUpgradeFileHeader = semver__default["default"].gte(deviceBootloaderVersion, '2.1.0');
29176
+ Log$8.debug('supportUpgradeFileHeader:', supportUpgradeFileHeader);
29177
+ if (supportUpgradeFileHeader) {
29178
+ const HEADER_SIZE = 1024;
29179
+ if (payload.byteLength < HEADER_SIZE) {
29180
+ throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, `firmware payload too small: ${payload.byteLength} bytes, expected at least ${HEADER_SIZE} bytes`);
29181
+ }
29182
+ Log$8.debug('Uploading firmware header:', {
29183
+ size: HEADER_SIZE,
29184
+ totalSize: payload.byteLength,
29185
+ });
29186
+ postProgressTip(device, 'UploadingFirmwareHeader', postMessage);
29187
+ const header = new Uint8Array(payload.slice(0, HEADER_SIZE));
29188
+ try {
29189
+ const headerRes = yield typedCall('UpgradeFileHeader', 'Success', {
29190
+ data: bytesToHex(header),
29191
+ });
29192
+ const isUnknownMessage = (_b = (_a = headerRes.message) === null || _a === void 0 ? void 0 : _a.message) === null || _b === void 0 ? void 0 : _b.includes('Failure_UnknownMessage');
29193
+ if (headerRes.type !== 'Success' && !isUnknownMessage) {
29194
+ Log$8.error('Firmware header upload failed:', headerRes);
29195
+ throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, 'failed to upload firmware header');
29196
+ }
29197
+ }
29198
+ catch (error) {
29199
+ Log$8.error('Firmware header upload failed:', error);
29200
+ const message = error instanceof Error ? error.message : String(error !== null && error !== void 0 ? error : '');
29201
+ if (!message.includes('Failure_UnknownMessage')) {
29202
+ throw error;
29203
+ }
29204
+ }
29205
+ Log$8.debug('Firmware header uploaded successfully');
29206
+ }
29207
+ }
29208
+ const eraseCommand = isFirmware ? 'FirmwareErase' : 'FirmwareErase_ex';
28561
29209
  const eraseRes = yield typedCall(eraseCommand, 'Success', {});
28562
29210
  if (eraseRes.type !== 'Success') {
28563
29211
  throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, 'erase firmware error');
28564
29212
  }
28565
29213
  postProgressTip(device, 'FirmwareEraseSuccess', postMessage);
28566
29214
  postProgressMessage(device, 0, 'installingFirmware', postMessage);
28567
- const { message, type } = yield typedCall('FirmwareUpload', 'Success', {
28568
- payload,
28569
- });
29215
+ let updateResponse;
29216
+ try {
29217
+ updateResponse = yield typedCall('FirmwareUpload', 'Success', {
29218
+ payload,
29219
+ });
29220
+ }
29221
+ catch (error) {
29222
+ if (isDeviceDisconnectedError$1(error)) {
29223
+ Log$8.log('Rebooting device');
29224
+ updateResponse = {
29225
+ type: 'Success',
29226
+ message: { message: FIRMWARE_UPDATE_CONFIRM$1 },
29227
+ };
29228
+ }
29229
+ else {
29230
+ throw error;
29231
+ }
29232
+ }
28570
29233
  postProgressMessage(device, 100, 'installingFirmware', postMessage);
28571
29234
  yield waitBleInstall(updateType);
28572
- if (type !== 'Success') {
29235
+ if (updateResponse.type !== 'Success') {
28573
29236
  throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, 'install firmware error');
28574
29237
  }
28575
- return message;
29238
+ return updateResponse.message;
28576
29239
  }
28577
29240
  if (DeviceModelToTypes.model_touch.includes(deviceType)) {
28578
29241
  if (device.features) {
@@ -28610,7 +29273,7 @@ const uploadFirmware = (updateType, typedCall, postMessage, device, { payload, r
28610
29273
  throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, 'uploadFirmware: unknown device model');
28611
29274
  });
28612
29275
  const newTouchUpdateProcess = (updateType, postMessage, device, { payload }, rebootOnSuccess = true) => __awaiter(void 0, void 0, void 0, function* () {
28613
- var _a, _b, _c, _d, _e;
29276
+ var _c, _d, _e, _f, _g;
28614
29277
  let typedCall = device.getCommands().typedCall.bind(device.getCommands());
28615
29278
  postProgressTip(device, 'StartTransferData', postMessage);
28616
29279
  const filePath = `0:${updateType === 'ble' ? 'ble-' : ''}firmware.bin`;
@@ -28634,12 +29297,27 @@ const newTouchUpdateProcess = (updateType, postMessage, device, { payload }, reb
28634
29297
  postProgressTip(device, 'ConfirmOnDevice', postMessage);
28635
29298
  postProgressTip(device, 'InstallingFirmware', postMessage);
28636
29299
  typedCall = device.getCommands().typedCall.bind(device.getCommands());
28637
- const response = yield typedCall('FirmwareUpdateEmmc', 'Success', {
28638
- path: filePath,
28639
- reboot_on_success: rebootOnSuccess,
28640
- });
29300
+ let response;
29301
+ try {
29302
+ response = yield typedCall('FirmwareUpdateEmmc', 'Success', {
29303
+ path: filePath,
29304
+ reboot_on_success: rebootOnSuccess,
29305
+ });
29306
+ }
29307
+ catch (error) {
29308
+ if (isDeviceDisconnectedError$1(error)) {
29309
+ Log$8.log('Rebooting device');
29310
+ response = {
29311
+ type: 'Success',
29312
+ message: { message: FIRMWARE_UPDATE_CONFIRM$1 },
29313
+ };
29314
+ }
29315
+ else {
29316
+ throw error;
29317
+ }
29318
+ }
28641
29319
  if (response.type === 'Success' &&
28642
- ((_a = response === null || response === void 0 ? void 0 : response.message) === null || _a === void 0 ? void 0 : _a.message) === FIRMWARE_UPDATE_CONFIRM) {
29320
+ ((_c = response === null || response === void 0 ? void 0 : response.message) === null || _c === void 0 ? void 0 : _c.message) === FIRMWARE_UPDATE_CONFIRM$1) {
28643
29321
  const timeout = 2 * 60 * 1000;
28644
29322
  const startTime = Date.now();
28645
29323
  const isBleReconnect = DataManager.isBleConnect(env);
@@ -28647,7 +29325,7 @@ const newTouchUpdateProcess = (updateType, postMessage, device, { payload }, reb
28647
29325
  try {
28648
29326
  if (isBleReconnect) {
28649
29327
  try {
28650
- yield ((_b = device.deviceConnector) === null || _b === void 0 ? void 0 : _b.acquire(device.originalDescriptor.id, null, true));
29328
+ yield ((_d = device.deviceConnector) === null || _d === void 0 ? void 0 : _d.acquire(device.originalDescriptor.id, null, true));
28651
29329
  const typedCall = device.getCommands().typedCall.bind(device.getCommands());
28652
29330
  yield Promise.race([
28653
29331
  typedCall('Initialize', 'Features', {}),
@@ -28663,14 +29341,14 @@ const newTouchUpdateProcess = (updateType, postMessage, device, { payload }, reb
28663
29341
  }
28664
29342
  }
28665
29343
  else {
28666
- const deviceDiff = yield ((_c = device.deviceConnector) === null || _c === void 0 ? void 0 : _c.enumerate());
28667
- const devicesDescriptor = (_d = deviceDiff === null || deviceDiff === void 0 ? void 0 : deviceDiff.descriptors) !== null && _d !== void 0 ? _d : [];
29344
+ const deviceDiff = yield ((_e = device.deviceConnector) === null || _e === void 0 ? void 0 : _e.enumerate());
29345
+ const devicesDescriptor = (_f = deviceDiff === null || deviceDiff === void 0 ? void 0 : deviceDiff.descriptors) !== null && _f !== void 0 ? _f : [];
28668
29346
  const { deviceList } = yield DevicePool.getDevices(devicesDescriptor, device.originalDescriptor.id);
28669
29347
  if (deviceList.length === 1) {
28670
29348
  device.updateFromCache(deviceList[0]);
28671
29349
  yield device.acquire();
28672
29350
  device.commands.disposed = false;
28673
- device.getCommands().mainId = (_e = device.mainId) !== null && _e !== void 0 ? _e : '';
29351
+ device.getCommands().mainId = (_g = device.mainId) !== null && _g !== void 0 ? _g : '';
28674
29352
  }
28675
29353
  }
28676
29354
  const typedCall = device.getCommands().typedCall.bind(device.getCommands());
@@ -28688,9 +29366,9 @@ const newTouchUpdateProcess = (updateType, postMessage, device, { payload }, reb
28688
29366
  return response;
28689
29367
  });
28690
29368
  const emmcFileWriteWithRetry = (device, filePath, chunkLength, offset, chunk, overwrite, progress) => __awaiter(void 0, void 0, void 0, function* () {
28691
- var _f, _g, _h, _j, _k, _l, _m, _o, _p;
29369
+ var _h, _j, _k, _l, _m, _o, _p, _q, _r;
28692
29370
  const writeFunc = () => __awaiter(void 0, void 0, void 0, function* () {
28693
- var _q;
29371
+ var _s;
28694
29372
  const typedCall = device.getCommands().typedCall.bind(device.getCommands());
28695
29373
  const writeRes = yield typedCall('EmmcFileWrite', 'EmmcFile', {
28696
29374
  file: {
@@ -28705,7 +29383,7 @@ const emmcFileWriteWithRetry = (device, filePath, chunkLength, offset, chunk, ov
28705
29383
  });
28706
29384
  if (writeRes.type !== 'EmmcFile') {
28707
29385
  if (writeRes.type === 'CallMethodError') {
28708
- if (((_q = writeRes.message.error) !== null && _q !== void 0 ? _q : '').indexOf(SESSION_ERROR$1) > -1) {
29386
+ if (((_s = writeRes.message.error) !== null && _s !== void 0 ? _s : '').indexOf(SESSION_ERROR$1) > -1) {
28709
29387
  throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, SESSION_ERROR$1);
28710
29388
  }
28711
29389
  }
@@ -28728,18 +29406,18 @@ const emmcFileWriteWithRetry = (device, filePath, chunkLength, offset, chunk, ov
28728
29406
  const env = DataManager.getSettings('env');
28729
29407
  if (DataManager.isBleConnect(env)) {
28730
29408
  yield wait(3000);
28731
- yield ((_f = device.deviceConnector) === null || _f === void 0 ? void 0 : _f.acquire(device.originalDescriptor.id, null, true));
29409
+ yield ((_h = device.deviceConnector) === null || _h === void 0 ? void 0 : _h.acquire(device.originalDescriptor.id, null, true));
28732
29410
  yield device.initialize();
28733
29411
  }
28734
- else if (((_g = error === null || error === void 0 ? void 0 : error.message) === null || _g === void 0 ? void 0 : _g.indexOf(SESSION_ERROR$1)) > -1 ||
28735
- ((_j = (_h = error === null || error === void 0 ? void 0 : error.response) === null || _h === void 0 ? void 0 : _h.data) === null || _j === void 0 ? void 0 : _j.indexOf(SESSION_ERROR$1)) > -1) {
28736
- const deviceDiff = yield ((_k = device.deviceConnector) === null || _k === void 0 ? void 0 : _k.enumerate());
28737
- const devicesDescriptor = (_l = deviceDiff === null || deviceDiff === void 0 ? void 0 : deviceDiff.descriptors) !== null && _l !== void 0 ? _l : [];
29412
+ else if (((_j = error === null || error === void 0 ? void 0 : error.message) === null || _j === void 0 ? void 0 : _j.indexOf(SESSION_ERROR$1)) > -1 ||
29413
+ ((_l = (_k = error === null || error === void 0 ? void 0 : error.response) === null || _k === void 0 ? void 0 : _k.data) === null || _l === void 0 ? void 0 : _l.indexOf(SESSION_ERROR$1)) > -1) {
29414
+ const deviceDiff = yield ((_m = device.deviceConnector) === null || _m === void 0 ? void 0 : _m.enumerate());
29415
+ const devicesDescriptor = (_o = deviceDiff === null || deviceDiff === void 0 ? void 0 : deviceDiff.descriptors) !== null && _o !== void 0 ? _o : [];
28738
29416
  const { deviceList } = yield DevicePool.getDevices(devicesDescriptor, undefined);
28739
- if (deviceList.length === 1 && ((_o = (_m = deviceList[0]) === null || _m === void 0 ? void 0 : _m.features) === null || _o === void 0 ? void 0 : _o.bootloader_mode)) {
29417
+ if (deviceList.length === 1 && ((_q = (_p = deviceList[0]) === null || _p === void 0 ? void 0 : _p.features) === null || _q === void 0 ? void 0 : _q.bootloader_mode)) {
28740
29418
  device.updateFromCache(deviceList[0]);
28741
29419
  yield device.acquire();
28742
- device.getCommands().mainId = (_p = device.mainId) !== null && _p !== void 0 ? _p : '';
29420
+ device.getCommands().mainId = (_r = device.mainId) !== null && _r !== void 0 ? _r : '';
28743
29421
  }
28744
29422
  }
28745
29423
  yield wait(3000);
@@ -28833,15 +29511,19 @@ class DeviceFullyUploadResource extends BaseMethod {
28833
29511
  return isTouchMode && semver__default["default"].gte(currentVersion, '3.4.0');
28834
29512
  }
28835
29513
  run() {
29514
+ var _a;
28836
29515
  return __awaiter(this, void 0, void 0, function* () {
28837
29516
  const { device } = this;
28838
29517
  const { features } = device;
29518
+ const payload = this.payload;
29519
+ const deviceFirmwareType = getFirmwareType(features);
29520
+ const firmwareType = (_a = payload.firmwareType) !== null && _a !== void 0 ? _a : deviceFirmwareType;
28839
29521
  if (!(features === null || features === void 0 ? void 0 : features.bootloader_mode) && features) {
28840
29522
  if (features) {
28841
29523
  let { binary } = this.payload;
28842
29524
  if (!binary) {
28843
29525
  this.postTipMessage('CheckLatestUiResource');
28844
- const resourceUrl = DataManager.getSysFullResource(features);
29526
+ const resourceUrl = DataManager.getSysFullResource(features, firmwareType);
28845
29527
  if (resourceUrl) {
28846
29528
  this.postTipMessage('DownloadLatestUiResource');
28847
29529
  const resource = yield getSysResourceBinary(resourceUrl);
@@ -28858,7 +29540,16 @@ class DeviceFullyUploadResource extends BaseMethod {
28858
29540
  }
28859
29541
  }
28860
29542
 
28861
- class DeviceUpdateBootloader extends BaseMethod {
29543
+ const Log$7 = getLogger(exports.LoggerNames.Method);
29544
+ const SESSION_ERROR = 'session not found';
29545
+ const FIRMWARE_UPDATE_CONFIRM = 'Firmware install confirmed';
29546
+ const isDeviceDisconnectedError = (error) => {
29547
+ const message = error instanceof Error ? error.message : String(error !== null && error !== void 0 ? error : '');
29548
+ return (message.includes('device was disconnected') ||
29549
+ message.includes('transferIn') ||
29550
+ message.includes('USBDevice'));
29551
+ };
29552
+ class FirmwareUpdateBaseMethod extends BaseMethod {
28862
29553
  constructor() {
28863
29554
  super(...arguments);
28864
29555
  this.checkPromise = null;
@@ -28870,45 +29561,389 @@ class DeviceUpdateBootloader extends BaseMethod {
28870
29561
  },
28871
29562
  }));
28872
29563
  };
29564
+ this.postProcessingMessage = (type) => {
29565
+ this.postMessage(createUiMessage(UI_REQUEST.FIRMWARE_PROCESSING, {
29566
+ type,
29567
+ }));
29568
+ };
29569
+ this.postProgressMessage = (progress, progressType) => {
29570
+ this.postMessage(createUiMessage(UI_REQUEST.FIRMWARE_PROGRESS, {
29571
+ device: this.device.toMessageObject(),
29572
+ progress,
29573
+ progressType,
29574
+ }));
29575
+ };
29576
+ }
29577
+ init() { }
29578
+ run() {
29579
+ return Promise.resolve();
29580
+ }
29581
+ isBleReconnect() {
29582
+ const env = DataManager.getSettings('env');
29583
+ return this.payload.connectId && DataManager.isBleConnect(env);
29584
+ }
29585
+ _promptDeviceInBootloaderForWebDevice() {
29586
+ return __awaiter(this, void 0, void 0, function* () {
29587
+ return new Promise((resolve, reject) => {
29588
+ if (this.device.listenerCount(DEVICE.SELECT_DEVICE_IN_BOOTLOADER_FOR_WEB_DEVICE) > 0) {
29589
+ this.device.emit(DEVICE.SELECT_DEVICE_IN_BOOTLOADER_FOR_WEB_DEVICE, this.device, (err, deviceId) => {
29590
+ if (err) {
29591
+ reject(err);
29592
+ }
29593
+ else {
29594
+ resolve(deviceId);
29595
+ }
29596
+ });
29597
+ }
29598
+ });
29599
+ });
29600
+ }
29601
+ _promptDeviceForSwitchFirmwareWebDevice() {
29602
+ return __awaiter(this, void 0, void 0, function* () {
29603
+ return new Promise((resolve, reject) => {
29604
+ if (this.device.listenerCount(DEVICE.SELECT_DEVICE_FOR_SWITCH_FIRMWARE_WEB_DEVICE) > 0) {
29605
+ this.device.emit(DEVICE.SELECT_DEVICE_FOR_SWITCH_FIRMWARE_WEB_DEVICE, this.device, (err, deviceId) => {
29606
+ if (err) {
29607
+ reject(err);
29608
+ }
29609
+ else {
29610
+ resolve(deviceId);
29611
+ }
29612
+ });
29613
+ }
29614
+ });
29615
+ });
28873
29616
  }
29617
+ checkDeviceToBootloader(connectId) {
29618
+ var _a, _b;
29619
+ this.checkPromise = hardwareShared.createDeferred();
29620
+ const env = DataManager.getSettings('env');
29621
+ const isBleReconnect = connectId && DataManager.isBleConnect(env);
29622
+ Log$7.log('FirmwareUpdateBaseMethod [checkDeviceToBootloader] isBleReconnect: ', isBleReconnect);
29623
+ let isFirstCheck = true;
29624
+ let checkCount = 0;
29625
+ let timeoutTimer;
29626
+ const isTouchOrProDevice = getDeviceType((_a = this === null || this === void 0 ? void 0 : this.device) === null || _a === void 0 ? void 0 : _a.features) === hardwareShared.EDeviceType.Touch ||
29627
+ getDeviceType((_b = this === null || this === void 0 ? void 0 : this.device) === null || _b === void 0 ? void 0 : _b.features) === hardwareShared.EDeviceType.Pro;
29628
+ const intervalTimer = setInterval(() => __awaiter(this, void 0, void 0, function* () {
29629
+ var _c, _d, _e, _f;
29630
+ checkCount += 1;
29631
+ Log$7.log('FirmwareUpdateBaseMethod [checkDeviceToBootloader] isFirstCheck: ', isFirstCheck);
29632
+ if (isTouchOrProDevice && isFirstCheck) {
29633
+ isFirstCheck = false;
29634
+ Log$7.log('FirmwareUpdateBaseMethod [checkDeviceToBootloader] wait 3000ms');
29635
+ yield wait(3000);
29636
+ }
29637
+ if (checkCount > 4 &&
29638
+ DataManager.isBrowserWebUsb(DataManager.getSettings('env')) &&
29639
+ !this.payload.skipWebDevicePrompt) {
29640
+ clearInterval(intervalTimer);
29641
+ clearTimeout(timeoutTimer);
29642
+ try {
29643
+ this.postTipMessage(exports.FirmwareUpdateTipMessage.SelectDeviceInBootloaderForWebDevice);
29644
+ const confirmed = yield this._promptDeviceInBootloaderForWebDevice();
29645
+ if (confirmed) {
29646
+ yield this._checkDeviceInBootloaderMode(connectId, intervalTimer, timeoutTimer);
29647
+ }
29648
+ }
29649
+ catch (e) {
29650
+ Log$7.log('FirmwareUpdateBaseMethod [checkDeviceToBootloader] _promptDeviceInBootloaderForWebDevice failed: ', e);
29651
+ (_c = this.checkPromise) === null || _c === void 0 ? void 0 : _c.reject(e);
29652
+ }
29653
+ return;
29654
+ }
29655
+ if (isBleReconnect) {
29656
+ try {
29657
+ yield ((_d = this.device.deviceConnector) === null || _d === void 0 ? void 0 : _d.acquire(this.device.originalDescriptor.id, null, true));
29658
+ yield this.device.initialize();
29659
+ if ((_e = this.device.features) === null || _e === void 0 ? void 0 : _e.bootloader_mode) {
29660
+ clearInterval(intervalTimer);
29661
+ (_f = this.checkPromise) === null || _f === void 0 ? void 0 : _f.resolve(true);
29662
+ }
29663
+ }
29664
+ catch (e) {
29665
+ Log$7.log('catch Bluetooth error when device is restarting: ', e);
29666
+ }
29667
+ }
29668
+ else {
29669
+ yield this._checkDeviceInBootloaderMode(connectId, intervalTimer, timeoutTimer);
29670
+ }
29671
+ }), isBleReconnect ? 3000 : 2000);
29672
+ timeoutTimer = setTimeout(() => {
29673
+ if (this.checkPromise) {
29674
+ clearInterval(intervalTimer);
29675
+ this.checkPromise.reject(new Error());
29676
+ }
29677
+ }, 30000);
29678
+ }
29679
+ _checkDeviceInBootloaderMode(connectId, intervalTimer, timeoutTimer) {
29680
+ var _a, _b, _c, _d, _e;
29681
+ return __awaiter(this, void 0, void 0, function* () {
29682
+ const deviceDiff = yield ((_a = this.device.deviceConnector) === null || _a === void 0 ? void 0 : _a.enumerate());
29683
+ const devicesDescriptor = (_b = deviceDiff === null || deviceDiff === void 0 ? void 0 : deviceDiff.descriptors) !== null && _b !== void 0 ? _b : [];
29684
+ const { deviceList } = yield DevicePool.getDevices(devicesDescriptor, connectId);
29685
+ if (deviceList.length === 1 && ((_d = (_c = deviceList[0]) === null || _c === void 0 ? void 0 : _c.features) === null || _d === void 0 ? void 0 : _d.bootloader_mode)) {
29686
+ this.device.updateFromCache(deviceList[0]);
29687
+ this.device.commands.disposed = false;
29688
+ if (intervalTimer)
29689
+ clearInterval(intervalTimer);
29690
+ if (timeoutTimer)
29691
+ clearTimeout(timeoutTimer);
29692
+ (_e = this.checkPromise) === null || _e === void 0 ? void 0 : _e.resolve(true);
29693
+ return true;
29694
+ }
29695
+ return false;
29696
+ });
29697
+ }
29698
+ enterBootloaderMode() {
29699
+ var _a;
29700
+ return __awaiter(this, void 0, void 0, function* () {
29701
+ const typedCall = this.device.getCommands().typedCall.bind(this.device.getCommands());
29702
+ if (this.device.features && !this.device.features.bootloader_mode) {
29703
+ const uuid = getDeviceUUID(this.device.features);
29704
+ const deviceType = getDeviceType(this.device.features);
29705
+ try {
29706
+ this.postTipMessage(exports.FirmwareUpdateTipMessage.AutoRebootToBootloader);
29707
+ const bootRes = yield typedCall('DeviceBackToBoot', 'Success');
29708
+ if (bootRes.type === 'CallMethodError') {
29709
+ throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.FirmwareUpdateAutoEnterBootFailure);
29710
+ }
29711
+ this.postTipMessage(exports.FirmwareUpdateTipMessage.GoToBootloaderSuccess);
29712
+ this.checkDeviceToBootloader(this.payload.connectId);
29713
+ if (DeviceModelToTypes.model_classic.includes(deviceType)) {
29714
+ DevicePool.clearDeviceCache(uuid);
29715
+ }
29716
+ delete DevicePool.devicesCache[''];
29717
+ yield ((_a = this.checkPromise) === null || _a === void 0 ? void 0 : _a.promise);
29718
+ this.checkPromise = null;
29719
+ const isTouch = DeviceModelToTypes.model_touch.includes(deviceType);
29720
+ yield wait(isTouch ? 3000 : 1500);
29721
+ yield this.device.acquire();
29722
+ return true;
29723
+ }
29724
+ catch (e) {
29725
+ if (e instanceof hardwareShared.HardwareError) {
29726
+ return Promise.reject(e);
29727
+ }
29728
+ console.log('auto go to bootloader mode failed: ', e);
29729
+ return Promise.reject(hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.FirmwareUpdateAutoEnterBootFailure));
29730
+ }
29731
+ }
29732
+ });
29733
+ }
29734
+ startEmmcFirmwareUpdate({ path }) {
29735
+ return __awaiter(this, void 0, void 0, function* () {
29736
+ const typedCall = this.device.getCommands().typedCall.bind(this.device.getCommands());
29737
+ let updateResponse;
29738
+ try {
29739
+ updateResponse = yield typedCall('FirmwareUpdateEmmc', 'Success', {
29740
+ path,
29741
+ reboot_on_success: true,
29742
+ });
29743
+ }
29744
+ catch (error) {
29745
+ if (isDeviceDisconnectedError(error)) {
29746
+ Log$7.log('Rebooting device');
29747
+ updateResponse = {
29748
+ type: 'Success',
29749
+ message: { message: FIRMWARE_UPDATE_CONFIRM },
29750
+ };
29751
+ }
29752
+ else {
29753
+ throw error;
29754
+ }
29755
+ }
29756
+ if (updateResponse.type !== 'Success') {
29757
+ throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.FirmwareError, 'firmware update error');
29758
+ }
29759
+ this.postTipMessage(exports.FirmwareUpdateTipMessage.FirmwareUpdating);
29760
+ });
29761
+ }
29762
+ createUpdatesFolderIfNotExists(path) {
29763
+ return __awaiter(this, void 0, void 0, function* () {
29764
+ const typedCall = this.device.getCommands().typedCall.bind(this.device.getCommands());
29765
+ yield typedCall('EmmcDirMake', 'Success', {
29766
+ path,
29767
+ });
29768
+ });
29769
+ }
29770
+ emmcCommonUpdateProcess({ payload, filePath, processedSize, totalSize, }) {
29771
+ return __awaiter(this, void 0, void 0, function* () {
29772
+ if (!filePath.startsWith('0:')) {
29773
+ throw new Error('filePath must start with 0:');
29774
+ }
29775
+ const env = DataManager.getSettings('env');
29776
+ const perPackageSize = DataManager.isBleConnect(env) ? 16 : 128;
29777
+ const chunkSize = 1024 * perPackageSize;
29778
+ const totalChunks = Math.ceil(payload.byteLength / chunkSize);
29779
+ let offset = 0;
29780
+ let currentFileProcessed = 0;
29781
+ for (let i = 0; i < totalChunks; i++) {
29782
+ const chunkStart = i * chunkSize;
29783
+ const chunkEnd = Math.min(chunkStart + chunkSize, payload.byteLength);
29784
+ const chunkLength = chunkEnd - chunkStart;
29785
+ const chunk = payload.slice(chunkStart, chunkEnd);
29786
+ const overwrite = i === 0;
29787
+ let progress;
29788
+ if (totalSize !== undefined && processedSize !== undefined) {
29789
+ currentFileProcessed = processedSize + chunkEnd;
29790
+ progress = Math.min(Math.ceil((currentFileProcessed / totalSize) * 100), 99);
29791
+ }
29792
+ else {
29793
+ progress = Math.min(Math.ceil(((i + 1) / totalChunks) * 100), 99);
29794
+ }
29795
+ const writeRes = yield this.emmcFileWriteWithRetry(filePath, chunkLength, offset, chunk, overwrite, progress);
29796
+ offset += writeRes.message.processed_byte;
29797
+ this.postProgressMessage(progress, 'transferData');
29798
+ }
29799
+ return totalSize !== undefined ? (processedSize !== null && processedSize !== void 0 ? processedSize : 0) + payload.byteLength : 0;
29800
+ });
29801
+ }
29802
+ emmcFileWriteWithRetry(filePath, chunkLength, offset, chunk, overwrite, progress) {
29803
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
29804
+ return __awaiter(this, void 0, void 0, function* () {
29805
+ const writeFunc = () => __awaiter(this, void 0, void 0, function* () {
29806
+ var _k;
29807
+ const typedCall = this.device.getCommands().typedCall.bind(this.device.getCommands());
29808
+ const writeRes = yield typedCall('EmmcFileWrite', 'EmmcFile', {
29809
+ file: {
29810
+ path: filePath,
29811
+ len: chunkLength,
29812
+ offset,
29813
+ data: chunk,
29814
+ },
29815
+ overwrite,
29816
+ append: offset !== 0,
29817
+ ui_percentage: progress,
29818
+ });
29819
+ if (writeRes.type !== 'EmmcFile') {
29820
+ if (writeRes.type === 'CallMethodError') {
29821
+ if (((_k = writeRes.message.error) !== null && _k !== void 0 ? _k : '').indexOf(SESSION_ERROR) > -1) {
29822
+ throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, SESSION_ERROR);
29823
+ }
29824
+ }
29825
+ throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.EmmcFileWriteFirmwareError, 'transfer data error');
29826
+ }
29827
+ return writeRes;
29828
+ });
29829
+ let retryCount = 10;
29830
+ while (retryCount > 0) {
29831
+ try {
29832
+ const result = yield writeFunc();
29833
+ return result;
29834
+ }
29835
+ catch (error) {
29836
+ Log$7.error(`emmcWrite error: `, error);
29837
+ retryCount--;
29838
+ if (retryCount === 0) {
29839
+ throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.EmmcFileWriteFirmwareError, 'transfer data error');
29840
+ }
29841
+ const env = DataManager.getSettings('env');
29842
+ if (DataManager.isBleConnect(env)) {
29843
+ yield wait(3000);
29844
+ yield ((_a = this.device.deviceConnector) === null || _a === void 0 ? void 0 : _a.acquire(this.device.originalDescriptor.id, null, true));
29845
+ yield this.device.initialize();
29846
+ }
29847
+ else if (((_b = error === null || error === void 0 ? void 0 : error.message) === null || _b === void 0 ? void 0 : _b.indexOf(SESSION_ERROR)) > -1 ||
29848
+ ((_d = (_c = error === null || error === void 0 ? void 0 : error.response) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.indexOf(SESSION_ERROR)) > -1) {
29849
+ const deviceDiff = yield ((_e = this.device.deviceConnector) === null || _e === void 0 ? void 0 : _e.enumerate());
29850
+ const devicesDescriptor = (_f = deviceDiff === null || deviceDiff === void 0 ? void 0 : deviceDiff.descriptors) !== null && _f !== void 0 ? _f : [];
29851
+ const { deviceList } = yield DevicePool.getDevices(devicesDescriptor, undefined);
29852
+ if (deviceList.length === 1 && ((_h = (_g = deviceList[0]) === null || _g === void 0 ? void 0 : _g.features) === null || _h === void 0 ? void 0 : _h.bootloader_mode)) {
29853
+ this.device.updateFromCache(deviceList[0]);
29854
+ yield this.device.acquire();
29855
+ this.device.getCommands().mainId = (_j = this.device.mainId) !== null && _j !== void 0 ? _j : '';
29856
+ }
29857
+ }
29858
+ yield wait(2000);
29859
+ }
29860
+ }
29861
+ });
29862
+ }
29863
+ reboot(rebootType) {
29864
+ return __awaiter(this, void 0, void 0, function* () {
29865
+ const typedCall = this.device.getCommands().typedCall.bind(this.device.getCommands());
29866
+ try {
29867
+ const res = yield typedCall('Reboot', 'Success', {
29868
+ reboot_type: rebootType,
29869
+ });
29870
+ return res.message;
29871
+ }
29872
+ catch (error) {
29873
+ if (error instanceof Error &&
29874
+ (error.message.includes('device was disconnected') ||
29875
+ error.message.includes('transferIn') ||
29876
+ error.message.includes('USBDevice'))) {
29877
+ return { message: 'Device rebooted successfully' };
29878
+ }
29879
+ throw error;
29880
+ }
29881
+ });
29882
+ }
29883
+ }
29884
+
29885
+ class DeviceUpdateBootloader extends FirmwareUpdateBaseMethod {
28874
29886
  init() {
28875
29887
  this.allowDeviceMode = [UI_REQUEST.BOOTLOADER, UI_REQUEST.NOT_INITIALIZE];
28876
29888
  this.requireDeviceMode = [];
28877
29889
  this.useDevicePassphraseState = false;
28878
29890
  this.skipForceUpdateCheck = true;
28879
29891
  }
28880
- updateTouchBootloader(device, features) {
29892
+ updateBootloaderWithEmmcFileWrite(_device, binary) {
28881
29893
  return __awaiter(this, void 0, void 0, function* () {
28882
- if (features && !features.bootloader_mode) {
28883
- let { binary } = this.payload;
28884
- if (!binary) {
28885
- this.postTipMessage('CheckLatestUiResource');
28886
- const resourceUrl = DataManager.getBootloaderResource(features);
28887
- if (resourceUrl) {
28888
- this.postTipMessage('DownloadLatestBootloaderResource');
28889
- const resource = yield getSysResourceBinary(resourceUrl);
28890
- this.postTipMessage('DownloadLatestBootloaderResourceSuccess');
28891
- if (resource) {
28892
- binary = resource.binary;
28893
- }
29894
+ const filePath = '0:boot/bootloader.bin';
29895
+ this.postTipMessage(exports.FirmwareUpdateTipMessage.StartTransferData);
29896
+ yield this.emmcCommonUpdateProcess({
29897
+ payload: binary,
29898
+ filePath,
29899
+ });
29900
+ this.postTipMessage(exports.FirmwareUpdateTipMessage.ConfirmOnDevice);
29901
+ yield this.reboot(hardwareTransport.RebootType.Normal);
29902
+ this.postTipMessage(exports.FirmwareUpdateTipMessage.UpdateBootloaderSuccess);
29903
+ return true;
29904
+ });
29905
+ }
29906
+ updateTouchBootloader({ device, features, firmwareType, }) {
29907
+ return __awaiter(this, void 0, void 0, function* () {
29908
+ let { binary } = this.payload;
29909
+ if (!binary) {
29910
+ this.postTipMessage(exports.FirmwareUpdateTipMessage.CheckLatestUiResource);
29911
+ const resourceUrl = features
29912
+ ? DataManager.getBootloaderResource(features, firmwareType)
29913
+ : null;
29914
+ if (resourceUrl) {
29915
+ this.postTipMessage(exports.FirmwareUpdateTipMessage.DownloadLatestBootloaderResource);
29916
+ const resource = yield getSysResourceBinary(resourceUrl);
29917
+ this.postTipMessage(exports.FirmwareUpdateTipMessage.DownloadLatestBootloaderResourceSuccess);
29918
+ if (resource) {
29919
+ binary = resource.binary;
28894
29920
  }
28895
29921
  }
28896
- if (!checkBootloaderLength(binary)) {
28897
- throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.CheckDownloadFileError);
28898
- }
29922
+ }
29923
+ if (!checkBootloaderLength(binary)) {
29924
+ throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.CheckDownloadFileError);
29925
+ }
29926
+ if (features && features.bootloader_mode) {
29927
+ this.postTipMessage(exports.FirmwareUpdateTipMessage.UpdateBootloader);
29928
+ return this.updateBootloaderWithEmmcFileWrite(device, binary);
29929
+ }
29930
+ if (features && !features.bootloader_mode) {
28899
29931
  yield updateBootloader(this.device.getCommands().typedCall.bind(this.device.getCommands()), this.postMessage, device, binary);
28900
29932
  return Promise.resolve(true);
28901
29933
  }
28902
- return Promise.resolve(true);
28903
29934
  });
28904
29935
  }
28905
29936
  run() {
29937
+ var _a;
28906
29938
  return __awaiter(this, void 0, void 0, function* () {
28907
29939
  const { device } = this;
28908
29940
  const { features } = device;
29941
+ const payload = this.payload;
28909
29942
  const deviceType = getDeviceType(features);
29943
+ const deviceFirmwareType = getFirmwareType(features);
29944
+ const firmwareType = (_a = payload.firmwareType) !== null && _a !== void 0 ? _a : deviceFirmwareType;
28910
29945
  if (DeviceModelToTypes.model_touch.includes(deviceType)) {
28911
- return this.updateTouchBootloader(device, features);
29946
+ return this.updateTouchBootloader({ device, features, firmwareType });
28912
29947
  }
28913
29948
  return Promise.resolve(true);
28914
29949
  });
@@ -28977,7 +30012,7 @@ class GetNextU2FCounter extends BaseMethod {
28977
30012
  }
28978
30013
  }
28979
30014
 
28980
- const Log$7 = getLogger(exports.LoggerNames.Method);
30015
+ const Log$6 = getLogger(exports.LoggerNames.Method);
28981
30016
  class FirmwareUpdate extends BaseMethod {
28982
30017
  constructor() {
28983
30018
  super(...arguments);
@@ -29015,7 +30050,7 @@ class FirmwareUpdate extends BaseMethod {
29015
30050
  this.checkPromise = hardwareShared.createDeferred();
29016
30051
  const env = DataManager.getSettings('env');
29017
30052
  const isBleReconnect = connectId && DataManager.isBleConnect(env);
29018
- Log$7.log('FirmwareUpdate [checkDeviceToBootloader] isBleReconnect: ', isBleReconnect);
30053
+ Log$6.log('FirmwareUpdate [checkDeviceToBootloader] isBleReconnect: ', isBleReconnect);
29019
30054
  const intervalTimer = setInterval(() => __awaiter(this, void 0, void 0, function* () {
29020
30055
  var _a, _b, _c, _d, _e, _f, _g, _h;
29021
30056
  if (isBleReconnect) {
@@ -29028,7 +30063,7 @@ class FirmwareUpdate extends BaseMethod {
29028
30063
  }
29029
30064
  }
29030
30065
  catch (e) {
29031
- Log$7.log('catch Bluetooth error when device is restarting: ', e);
30066
+ Log$6.log('catch Bluetooth error when device is restarting: ', e);
29032
30067
  }
29033
30068
  }
29034
30069
  else {
@@ -29082,7 +30117,7 @@ class FirmwareUpdate extends BaseMethod {
29082
30117
  if (e instanceof hardwareShared.HardwareError) {
29083
30118
  return Promise.reject(e);
29084
30119
  }
29085
- Log$7.log('auto go to bootloader mode failed: ', e);
30120
+ Log$6.log('auto go to bootloader mode failed: ', e);
29086
30121
  return Promise.reject(hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.FirmwareUpdateAutoEnterBootFailure));
29087
30122
  }
29088
30123
  }
@@ -29100,6 +30135,7 @@ class FirmwareUpdate extends BaseMethod {
29100
30135
  features: device.features,
29101
30136
  version: params.version,
29102
30137
  updateType: params.updateType,
30138
+ firmwareType: hardwareShared.EFirmwareType.Universal,
29103
30139
  });
29104
30140
  binary = firmware.binary;
29105
30141
  this.postTipMessage('DownloadFirmwareSuccess');
@@ -29109,7 +30145,7 @@ class FirmwareUpdate extends BaseMethod {
29109
30145
  throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.FirmwareUpdateDownloadFailed, (_b = err.message) !== null && _b !== void 0 ? _b : err);
29110
30146
  }
29111
30147
  yield this.device.acquire();
29112
- const response = yield uploadFirmware(params.updateType, this.device.getCommands().typedCall.bind(this.device.getCommands()), this.postMessage, device, { payload: binary, rebootOnSuccess: this.payload.rebootOnSuccess });
30148
+ const response = yield uploadFirmware(params.updateType, this.device.getCommands().typedCall.bind(this.device.getCommands()), this.postMessage, device, { payload: binary, rebootOnSuccess: this.payload.rebootOnSuccess }, false);
29113
30149
  if (this.connectId) {
29114
30150
  DevicePool.clearDeviceCache(this.connectId);
29115
30151
  }
@@ -29118,7 +30154,7 @@ class FirmwareUpdate extends BaseMethod {
29118
30154
  }
29119
30155
  }
29120
30156
 
29121
- const Log$6 = getLogger(exports.LoggerNames.Method);
30157
+ const Log$5 = getLogger(exports.LoggerNames.Method);
29122
30158
  class FirmwareUpdateV2 extends BaseMethod {
29123
30159
  constructor() {
29124
30160
  super(...arguments);
@@ -29143,6 +30179,7 @@ class FirmwareUpdateV2 extends BaseMethod {
29143
30179
  { name: 'binary', type: 'buffer' },
29144
30180
  { name: 'forcedUpdateRes', type: 'boolean' },
29145
30181
  { name: 'platform', type: 'string', required: true },
30182
+ { name: 'firmwareType', type: 'string' },
29146
30183
  ]);
29147
30184
  if (!payload.updateType) {
29148
30185
  throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.CallMethodInvalidParameter, 'updateType is required');
@@ -29153,7 +30190,7 @@ class FirmwareUpdateV2 extends BaseMethod {
29153
30190
  isUpdateBootloader: payload.isUpdateBootloader,
29154
30191
  };
29155
30192
  if ('version' in payload) {
29156
- this.params = Object.assign(Object.assign({}, this.params), { version: payload.version });
30193
+ this.params = Object.assign(Object.assign({}, this.params), { version: payload.version, firmwareType: payload.firmwareType });
29157
30194
  }
29158
30195
  if ('binary' in payload) {
29159
30196
  this.params = Object.assign(Object.assign({}, this.params), { binary: payload.binary });
@@ -29180,7 +30217,7 @@ class FirmwareUpdateV2 extends BaseMethod {
29180
30217
  this.checkPromise = hardwareShared.createDeferred();
29181
30218
  const env = DataManager.getSettings('env');
29182
30219
  const isBleReconnect = connectId && DataManager.isBleConnect(env);
29183
- Log$6.log('FirmwareUpdateV2 [checkDeviceToBootloader] isBleReconnect: ', isBleReconnect);
30220
+ Log$5.log('FirmwareUpdateV2 [checkDeviceToBootloader] isBleReconnect: ', isBleReconnect);
29184
30221
  let isFirstCheck = true;
29185
30222
  let checkCount = 0;
29186
30223
  let timeoutTimer;
@@ -29189,13 +30226,15 @@ class FirmwareUpdateV2 extends BaseMethod {
29189
30226
  const intervalTimer = setInterval(() => __awaiter(this, void 0, void 0, function* () {
29190
30227
  var _c, _d, _e, _f;
29191
30228
  checkCount += 1;
29192
- Log$6.log('FirmwareUpdateV2 [checkDeviceToBootloader] isFirstCheck: ', isFirstCheck);
30229
+ Log$5.log('FirmwareUpdateV2 [checkDeviceToBootloader] isFirstCheck: ', isFirstCheck);
29193
30230
  if (isTouchOrProDevice && isFirstCheck) {
29194
30231
  isFirstCheck = false;
29195
- Log$6.log('FirmwareUpdateV2 [checkDeviceToBootloader] wait 3000ms');
30232
+ Log$5.log('FirmwareUpdateV2 [checkDeviceToBootloader] wait 3000ms');
29196
30233
  yield wait(3000);
29197
30234
  }
29198
- if (checkCount > 4 && DataManager.isWebUsbConnect(DataManager.getSettings('env'))) {
30235
+ if (checkCount > 4 &&
30236
+ DataManager.isBrowserWebUsb(DataManager.getSettings('env')) &&
30237
+ !this.payload.skipWebDevicePrompt) {
29199
30238
  clearInterval(intervalTimer);
29200
30239
  clearTimeout(timeoutTimer);
29201
30240
  try {
@@ -29208,7 +30247,7 @@ class FirmwareUpdateV2 extends BaseMethod {
29208
30247
  }
29209
30248
  }
29210
30249
  catch (e) {
29211
- Log$6.log('FirmwareUpdateV2 [checkDeviceToBootloader] promptDeviceInBootloaderForWebDevice failed: ', e);
30250
+ Log$5.log('FirmwareUpdateV2 [checkDeviceToBootloader] promptDeviceInBootloaderForWebDevice failed: ', e);
29212
30251
  (_c = this.checkPromise) === null || _c === void 0 ? void 0 : _c.reject(e);
29213
30252
  }
29214
30253
  return;
@@ -29223,7 +30262,7 @@ class FirmwareUpdateV2 extends BaseMethod {
29223
30262
  }
29224
30263
  }
29225
30264
  catch (e) {
29226
- Log$6.log('catch Bluetooth error when device is restarting: ', e);
30265
+ Log$5.log('catch Bluetooth error when device is restarting: ', e);
29227
30266
  }
29228
30267
  }
29229
30268
  else {
@@ -29272,7 +30311,7 @@ class FirmwareUpdateV2 extends BaseMethod {
29272
30311
  const currentVersion = getDeviceFirmwareVersion(features).join('.');
29273
30312
  return isTouchMode && semver__default["default"].gte(currentVersion, '3.2.0');
29274
30313
  }
29275
- checkVersionForCopyTouchResource(features) {
30314
+ checkVersionForCopyTouchResource(features, firmwareType) {
29276
30315
  var _a;
29277
30316
  if (!features)
29278
30317
  return;
@@ -29280,7 +30319,7 @@ class FirmwareUpdateV2 extends BaseMethod {
29280
30319
  const currentVersion = getDeviceFirmwareVersion(features).join('.');
29281
30320
  const targetVersion = (_a = this.params.version) === null || _a === void 0 ? void 0 : _a.join('.');
29282
30321
  const { updateType } = this.params;
29283
- const releaseInfo = getInfo({ features, updateType });
30322
+ const releaseInfo = getInfo({ features, updateType, firmwareType });
29284
30323
  if (!releaseInfo)
29285
30324
  return;
29286
30325
  const { fullResourceRange } = releaseInfo;
@@ -29296,12 +30335,14 @@ class FirmwareUpdateV2 extends BaseMethod {
29296
30335
  }
29297
30336
  }
29298
30337
  run() {
29299
- var _a, _b, _c, _d, _e, _f, _g, _h;
30338
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
29300
30339
  return __awaiter(this, void 0, void 0, function* () {
29301
30340
  const { device, params } = this;
29302
30341
  const { features, commands } = device;
29303
30342
  const deviceType = getDeviceType(features);
29304
- this.checkVersionForCopyTouchResource(features);
30343
+ const deviceFirmwareType = getFirmwareType(device.features);
30344
+ const firmwareType = (_a = params.firmwareType) !== null && _a !== void 0 ? _a : deviceFirmwareType;
30345
+ this.checkVersionForCopyTouchResource(features, firmwareType);
29305
30346
  if (!(features === null || features === void 0 ? void 0 : features.bootloader_mode) && features) {
29306
30347
  const uuid = getDeviceUUID(features);
29307
30348
  if (this.isEnteredManuallyBoot(features)) {
@@ -29309,7 +30350,11 @@ class FirmwareUpdateV2 extends BaseMethod {
29309
30350
  }
29310
30351
  if (features && this.isSupportResourceUpdate(features, params.updateType)) {
29311
30352
  this.postTipMessage('CheckLatestUiResource');
29312
- const resourceUrl = DataManager.getSysResourcesLatestRelease(features, params.forcedUpdateRes);
30353
+ const resourceUrl = DataManager.getSysResourcesLatestRelease({
30354
+ features,
30355
+ forcedUpdateRes: params.forcedUpdateRes,
30356
+ firmwareType,
30357
+ });
29313
30358
  if (resourceUrl) {
29314
30359
  this.postTipMessage('DownloadLatestUiResource');
29315
30360
  const resource = yield getSysResourceBinary(resourceUrl);
@@ -29319,7 +30364,7 @@ class FirmwareUpdateV2 extends BaseMethod {
29319
30364
  }
29320
30365
  }
29321
30366
  }
29322
- (_b = (_a = this.device) === null || _a === void 0 ? void 0 : _a.commands) === null || _b === void 0 ? void 0 : _b.checkDisposed();
30367
+ (_c = (_b = this.device) === null || _b === void 0 ? void 0 : _b.commands) === null || _c === void 0 ? void 0 : _c.checkDisposed();
29323
30368
  try {
29324
30369
  this.postTipMessage('AutoRebootToBootloader');
29325
30370
  const bootRes = yield commands.typedCall('DeviceBackToBoot', 'Success');
@@ -29332,9 +30377,9 @@ class FirmwareUpdateV2 extends BaseMethod {
29332
30377
  DevicePool.clearDeviceCache(uuid);
29333
30378
  }
29334
30379
  delete DevicePool.devicesCache[''];
29335
- yield ((_c = this.checkPromise) === null || _c === void 0 ? void 0 : _c.promise);
30380
+ yield ((_d = this.checkPromise) === null || _d === void 0 ? void 0 : _d.promise);
29336
30381
  this.checkPromise = null;
29337
- (_e = (_d = this.device) === null || _d === void 0 ? void 0 : _d.commands) === null || _e === void 0 ? void 0 : _e.checkDisposed();
30382
+ (_f = (_e = this.device) === null || _e === void 0 ? void 0 : _e.commands) === null || _f === void 0 ? void 0 : _f.checkDisposed();
29338
30383
  const isTouch = DeviceModelToTypes.model_touch.includes(deviceType);
29339
30384
  yield wait(isTouch ? 3000 : 1500);
29340
30385
  }
@@ -29361,17 +30406,18 @@ class FirmwareUpdateV2 extends BaseMethod {
29361
30406
  version: params.version,
29362
30407
  updateType: params.updateType,
29363
30408
  isUpdateBootloader: params.isUpdateBootloader,
30409
+ firmwareType,
29364
30410
  });
29365
30411
  binary = firmware.binary;
29366
30412
  this.postTipMessage('DownloadFirmwareSuccess');
29367
30413
  }
29368
30414
  }
29369
30415
  catch (err) {
29370
- throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.FirmwareUpdateDownloadFailed, (_f = err.message) !== null && _f !== void 0 ? _f : err);
30416
+ throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.FirmwareUpdateDownloadFailed, (_g = err.message) !== null && _g !== void 0 ? _g : err);
29371
30417
  }
29372
- (_h = (_g = this.device) === null || _g === void 0 ? void 0 : _g.commands) === null || _h === void 0 ? void 0 : _h.checkDisposed();
30418
+ (_j = (_h = this.device) === null || _h === void 0 ? void 0 : _h.commands) === null || _j === void 0 ? void 0 : _j.checkDisposed();
29373
30419
  yield this.device.acquire();
29374
- const response = yield uploadFirmware(params.updateType, this.device.getCommands().typedCall.bind(this.device.getCommands()), this.postMessage, device, { payload: binary, rebootOnSuccess: true });
30420
+ const response = yield uploadFirmware(params.updateType, this.device.getCommands().typedCall.bind(this.device.getCommands()), this.postMessage, device, { payload: binary, rebootOnSuccess: true }, params.isUpdateBootloader);
29375
30421
  if (this.connectId) {
29376
30422
  DevicePool.clearDeviceCache(this.connectId);
29377
30423
  }
@@ -29380,303 +30426,13 @@ class FirmwareUpdateV2 extends BaseMethod {
29380
30426
  }
29381
30427
  }
29382
30428
 
29383
- const Log$5 = getLogger(exports.LoggerNames.Method);
29384
- const SESSION_ERROR = 'session not found';
29385
- class FirmwareUpdateBaseMethod extends BaseMethod {
29386
- constructor() {
29387
- super(...arguments);
29388
- this.checkPromise = null;
29389
- this.postTipMessage = (message) => {
29390
- this.postMessage(createUiMessage(UI_REQUEST.FIRMWARE_TIP, {
29391
- device: this.device.toMessageObject(),
29392
- data: {
29393
- message,
29394
- },
29395
- }));
29396
- };
29397
- this.postProcessingMessage = (type) => {
29398
- this.postMessage(createUiMessage(UI_REQUEST.FIRMWARE_PROCESSING, {
29399
- type,
29400
- }));
29401
- };
29402
- this.postProgressMessage = (progress, progressType) => {
29403
- this.postMessage(createUiMessage(UI_REQUEST.FIRMWARE_PROGRESS, {
29404
- device: this.device.toMessageObject(),
29405
- progress,
29406
- progressType,
29407
- }));
29408
- };
29409
- }
29410
- init() { }
29411
- run() {
29412
- return Promise.resolve();
29413
- }
29414
- isBleReconnect() {
29415
- const env = DataManager.getSettings('env');
29416
- return this.payload.connectId && DataManager.isBleConnect(env);
29417
- }
29418
- _promptDeviceInBootloaderForWebDevice() {
29419
- return __awaiter(this, void 0, void 0, function* () {
29420
- return new Promise((resolve, reject) => {
29421
- if (this.device.listenerCount(DEVICE.SELECT_DEVICE_IN_BOOTLOADER_FOR_WEB_DEVICE) > 0) {
29422
- this.device.emit(DEVICE.SELECT_DEVICE_IN_BOOTLOADER_FOR_WEB_DEVICE, this.device, (err, deviceId) => {
29423
- if (err) {
29424
- reject(err);
29425
- }
29426
- else {
29427
- resolve(deviceId);
29428
- }
29429
- });
29430
- }
29431
- });
29432
- });
29433
- }
29434
- checkDeviceToBootloader(connectId) {
29435
- var _a, _b;
29436
- this.checkPromise = hardwareShared.createDeferred();
29437
- const env = DataManager.getSettings('env');
29438
- const isBleReconnect = connectId && DataManager.isBleConnect(env);
29439
- Log$5.log('FirmwareUpdateBaseMethod [checkDeviceToBootloader] isBleReconnect: ', isBleReconnect);
29440
- let isFirstCheck = true;
29441
- let checkCount = 0;
29442
- let timeoutTimer;
29443
- const isTouchOrProDevice = getDeviceType((_a = this === null || this === void 0 ? void 0 : this.device) === null || _a === void 0 ? void 0 : _a.features) === hardwareShared.EDeviceType.Touch ||
29444
- getDeviceType((_b = this === null || this === void 0 ? void 0 : this.device) === null || _b === void 0 ? void 0 : _b.features) === hardwareShared.EDeviceType.Pro;
29445
- const intervalTimer = setInterval(() => __awaiter(this, void 0, void 0, function* () {
29446
- var _c, _d, _e, _f;
29447
- checkCount += 1;
29448
- Log$5.log('FirmwareUpdateBaseMethod [checkDeviceToBootloader] isFirstCheck: ', isFirstCheck);
29449
- if (isTouchOrProDevice && isFirstCheck) {
29450
- isFirstCheck = false;
29451
- Log$5.log('FirmwareUpdateBaseMethod [checkDeviceToBootloader] wait 3000ms');
29452
- yield wait(3000);
29453
- }
29454
- if (checkCount > 4 && DataManager.isWebUsbConnect(DataManager.getSettings('env'))) {
29455
- clearInterval(intervalTimer);
29456
- clearTimeout(timeoutTimer);
29457
- try {
29458
- this.postTipMessage(exports.FirmwareUpdateTipMessage.SelectDeviceInBootloaderForWebDevice);
29459
- const confirmed = yield this._promptDeviceInBootloaderForWebDevice();
29460
- if (confirmed) {
29461
- yield this._checkDeviceInBootloaderMode(connectId, intervalTimer, timeoutTimer);
29462
- }
29463
- }
29464
- catch (e) {
29465
- Log$5.log('FirmwareUpdateBaseMethod [checkDeviceToBootloader] promptDeviceInBootloaderForWebDevice failed: ', e);
29466
- (_c = this.checkPromise) === null || _c === void 0 ? void 0 : _c.reject(e);
29467
- }
29468
- return;
29469
- }
29470
- if (isBleReconnect) {
29471
- try {
29472
- yield ((_d = this.device.deviceConnector) === null || _d === void 0 ? void 0 : _d.acquire(this.device.originalDescriptor.id, null, true));
29473
- yield this.device.initialize();
29474
- if ((_e = this.device.features) === null || _e === void 0 ? void 0 : _e.bootloader_mode) {
29475
- clearInterval(intervalTimer);
29476
- (_f = this.checkPromise) === null || _f === void 0 ? void 0 : _f.resolve(true);
29477
- }
29478
- }
29479
- catch (e) {
29480
- Log$5.log('catch Bluetooth error when device is restarting: ', e);
29481
- }
29482
- }
29483
- else {
29484
- yield this._checkDeviceInBootloaderMode(connectId, intervalTimer, timeoutTimer);
29485
- }
29486
- }), isBleReconnect ? 3000 : 2000);
29487
- timeoutTimer = setTimeout(() => {
29488
- if (this.checkPromise) {
29489
- clearInterval(intervalTimer);
29490
- this.checkPromise.reject(new Error());
29491
- }
29492
- }, 30000);
29493
- }
29494
- _checkDeviceInBootloaderMode(connectId, intervalTimer, timeoutTimer) {
29495
- var _a, _b, _c, _d, _e;
29496
- return __awaiter(this, void 0, void 0, function* () {
29497
- const deviceDiff = yield ((_a = this.device.deviceConnector) === null || _a === void 0 ? void 0 : _a.enumerate());
29498
- const devicesDescriptor = (_b = deviceDiff === null || deviceDiff === void 0 ? void 0 : deviceDiff.descriptors) !== null && _b !== void 0 ? _b : [];
29499
- const { deviceList } = yield DevicePool.getDevices(devicesDescriptor, connectId);
29500
- if (deviceList.length === 1 && ((_d = (_c = deviceList[0]) === null || _c === void 0 ? void 0 : _c.features) === null || _d === void 0 ? void 0 : _d.bootloader_mode)) {
29501
- this.device.updateFromCache(deviceList[0]);
29502
- this.device.commands.disposed = false;
29503
- if (intervalTimer)
29504
- clearInterval(intervalTimer);
29505
- if (timeoutTimer)
29506
- clearTimeout(timeoutTimer);
29507
- (_e = this.checkPromise) === null || _e === void 0 ? void 0 : _e.resolve(true);
29508
- return true;
29509
- }
29510
- return false;
29511
- });
29512
- }
29513
- enterBootloaderMode() {
29514
- var _a;
29515
- return __awaiter(this, void 0, void 0, function* () {
29516
- const typedCall = this.device.getCommands().typedCall.bind(this.device.getCommands());
29517
- if (this.device.features && !this.device.features.bootloader_mode) {
29518
- const uuid = getDeviceUUID(this.device.features);
29519
- const deviceType = getDeviceType(this.device.features);
29520
- try {
29521
- this.postTipMessage(exports.FirmwareUpdateTipMessage.AutoRebootToBootloader);
29522
- const bootRes = yield typedCall('DeviceBackToBoot', 'Success');
29523
- if (bootRes.type === 'CallMethodError') {
29524
- throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.FirmwareUpdateAutoEnterBootFailure);
29525
- }
29526
- this.postTipMessage(exports.FirmwareUpdateTipMessage.GoToBootloaderSuccess);
29527
- this.checkDeviceToBootloader(this.payload.connectId);
29528
- if (DeviceModelToTypes.model_classic.includes(deviceType)) {
29529
- DevicePool.clearDeviceCache(uuid);
29530
- }
29531
- delete DevicePool.devicesCache[''];
29532
- yield ((_a = this.checkPromise) === null || _a === void 0 ? void 0 : _a.promise);
29533
- this.checkPromise = null;
29534
- const isTouch = DeviceModelToTypes.model_touch.includes(deviceType);
29535
- yield wait(isTouch ? 3000 : 1500);
29536
- yield this.device.acquire();
29537
- return true;
29538
- }
29539
- catch (e) {
29540
- if (e instanceof hardwareShared.HardwareError) {
29541
- return Promise.reject(e);
29542
- }
29543
- console.log('auto go to bootloader mode failed: ', e);
29544
- return Promise.reject(hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.FirmwareUpdateAutoEnterBootFailure));
29545
- }
29546
- }
29547
- });
29548
- }
29549
- startEmmcFirmwareUpdate({ path }) {
29550
- return __awaiter(this, void 0, void 0, function* () {
29551
- const typedCall = this.device.getCommands().typedCall.bind(this.device.getCommands());
29552
- const updaeteResponse = yield typedCall('FirmwareUpdateEmmc', 'Success', {
29553
- path,
29554
- reboot_on_success: true,
29555
- });
29556
- if (updaeteResponse.type !== 'Success') {
29557
- throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.FirmwareError, 'firmware update error');
29558
- }
29559
- this.postTipMessage(exports.FirmwareUpdateTipMessage.FirmwareUpdating);
29560
- });
29561
- }
29562
- createUpdatesFolderIfNotExists(path) {
29563
- return __awaiter(this, void 0, void 0, function* () {
29564
- const typedCall = this.device.getCommands().typedCall.bind(this.device.getCommands());
29565
- yield typedCall('EmmcDirMake', 'Success', {
29566
- path,
29567
- });
29568
- });
29569
- }
29570
- emmcCommonUpdateProcess({ payload, filePath, processedSize, totalSize, }) {
29571
- return __awaiter(this, void 0, void 0, function* () {
29572
- if (!filePath.startsWith('0:')) {
29573
- throw new Error('filePath must start with 0:');
29574
- }
29575
- const env = DataManager.getSettings('env');
29576
- const perPackageSize = DataManager.isBleConnect(env) ? 16 : 128;
29577
- const chunkSize = 1024 * perPackageSize;
29578
- const totalChunks = Math.ceil(payload.byteLength / chunkSize);
29579
- let offset = 0;
29580
- let currentFileProcessed = 0;
29581
- for (let i = 0; i < totalChunks; i++) {
29582
- const chunkStart = i * chunkSize;
29583
- const chunkEnd = Math.min(chunkStart + chunkSize, payload.byteLength);
29584
- const chunkLength = chunkEnd - chunkStart;
29585
- const chunk = payload.slice(chunkStart, chunkEnd);
29586
- const overwrite = i === 0;
29587
- let progress;
29588
- if (totalSize !== undefined && processedSize !== undefined) {
29589
- currentFileProcessed = processedSize + chunkEnd;
29590
- progress = Math.min(Math.ceil((currentFileProcessed / totalSize) * 100), 99);
29591
- }
29592
- else {
29593
- progress = Math.min(Math.ceil(((i + 1) / totalChunks) * 100), 99);
29594
- }
29595
- const writeRes = yield this.emmcFileWriteWithRetry(filePath, chunkLength, offset, chunk, overwrite, progress);
29596
- offset += writeRes.message.processed_byte;
29597
- this.postProgressMessage(progress, 'transferData');
29598
- }
29599
- return totalSize !== undefined ? (processedSize !== null && processedSize !== void 0 ? processedSize : 0) + payload.byteLength : 0;
29600
- });
29601
- }
29602
- emmcFileWriteWithRetry(filePath, chunkLength, offset, chunk, overwrite, progress) {
29603
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
29604
- return __awaiter(this, void 0, void 0, function* () {
29605
- const writeFunc = () => __awaiter(this, void 0, void 0, function* () {
29606
- var _k;
29607
- const typedCall = this.device.getCommands().typedCall.bind(this.device.getCommands());
29608
- const writeRes = yield typedCall('EmmcFileWrite', 'EmmcFile', {
29609
- file: {
29610
- path: filePath,
29611
- len: chunkLength,
29612
- offset,
29613
- data: chunk,
29614
- },
29615
- overwrite,
29616
- append: offset !== 0,
29617
- ui_percentage: progress,
29618
- });
29619
- if (writeRes.type !== 'EmmcFile') {
29620
- if (writeRes.type === 'CallMethodError') {
29621
- if (((_k = writeRes.message.error) !== null && _k !== void 0 ? _k : '').indexOf(SESSION_ERROR) > -1) {
29622
- throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, SESSION_ERROR);
29623
- }
29624
- }
29625
- throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.EmmcFileWriteFirmwareError, 'transfer data error');
29626
- }
29627
- return writeRes;
29628
- });
29629
- let retryCount = 10;
29630
- while (retryCount > 0) {
29631
- try {
29632
- const result = yield writeFunc();
29633
- return result;
29634
- }
29635
- catch (error) {
29636
- Log$5.error(`emmcWrite error: `, error);
29637
- retryCount--;
29638
- if (retryCount === 0) {
29639
- throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.EmmcFileWriteFirmwareError, 'transfer data error');
29640
- }
29641
- const env = DataManager.getSettings('env');
29642
- if (DataManager.isBleConnect(env)) {
29643
- yield wait(3000);
29644
- yield ((_a = this.device.deviceConnector) === null || _a === void 0 ? void 0 : _a.acquire(this.device.originalDescriptor.id, null, true));
29645
- yield this.device.initialize();
29646
- }
29647
- else if (((_b = error === null || error === void 0 ? void 0 : error.message) === null || _b === void 0 ? void 0 : _b.indexOf(SESSION_ERROR)) > -1 ||
29648
- ((_d = (_c = error === null || error === void 0 ? void 0 : error.response) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.indexOf(SESSION_ERROR)) > -1) {
29649
- const deviceDiff = yield ((_e = this.device.deviceConnector) === null || _e === void 0 ? void 0 : _e.enumerate());
29650
- const devicesDescriptor = (_f = deviceDiff === null || deviceDiff === void 0 ? void 0 : deviceDiff.descriptors) !== null && _f !== void 0 ? _f : [];
29651
- const { deviceList } = yield DevicePool.getDevices(devicesDescriptor, undefined);
29652
- if (deviceList.length === 1 && ((_h = (_g = deviceList[0]) === null || _g === void 0 ? void 0 : _g.features) === null || _h === void 0 ? void 0 : _h.bootloader_mode)) {
29653
- this.device.updateFromCache(deviceList[0]);
29654
- yield this.device.acquire();
29655
- this.device.getCommands().mainId = (_j = this.device.mainId) !== null && _j !== void 0 ? _j : '';
29656
- }
29657
- }
29658
- yield wait(2000);
29659
- }
29660
- }
29661
- });
29662
- }
29663
- reboot(rebootType) {
29664
- return __awaiter(this, void 0, void 0, function* () {
29665
- const typedCall = this.device.getCommands().typedCall.bind(this.device.getCommands());
29666
- const res = yield typedCall('Reboot', 'Success', {
29667
- reboot_type: rebootType,
29668
- });
29669
- return res.message;
29670
- });
29671
- }
29672
- }
29673
-
29674
30429
  const Log$4 = getLogger(exports.LoggerNames.Method);
29675
30430
  const MIN_UPDATE_V3_BOOTLOADER_VERSION = '2.8.0';
29676
30431
  class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod {
29677
30432
  constructor() {
29678
30433
  super(...arguments);
29679
30434
  this.checkPromise = null;
30435
+ this.isSwitchFirmware = false;
29680
30436
  }
29681
30437
  init() {
29682
30438
  this.allowDeviceMode = [UI_REQUEST.BOOTLOADER, UI_REQUEST.NOT_INITIALIZE];
@@ -29693,6 +30449,7 @@ class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod {
29693
30449
  { name: 'forcedUpdateRes', type: 'boolean' },
29694
30450
  { name: 'bootloaderVersion', type: 'array' },
29695
30451
  { name: 'bootloaderBinary', type: 'buffer' },
30452
+ { name: 'firmwareType', type: 'string' },
29696
30453
  { name: 'platform', type: 'string' },
29697
30454
  ]);
29698
30455
  this.params = {
@@ -29704,11 +30461,12 @@ class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod {
29704
30461
  bootloaderBinary: payload.bootloaderBinary,
29705
30462
  firmwareVersion: payload.firmwareVersion,
29706
30463
  resourceBinary: payload.resourceBinary,
30464
+ firmwareType: payload.firmwareType,
29707
30465
  platform: payload.platform,
29708
30466
  };
29709
30467
  }
29710
30468
  run() {
29711
- var _a;
30469
+ var _a, _b;
29712
30470
  return __awaiter(this, void 0, void 0, function* () {
29713
30471
  const { device } = this;
29714
30472
  const { features } = device;
@@ -29718,18 +30476,21 @@ class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod {
29718
30476
  if (!features) {
29719
30477
  throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, 'Device features not available');
29720
30478
  }
30479
+ const deviceFirmwareType = getFirmwareType(features);
30480
+ const firmwareType = (_a = this.params.firmwareType) !== null && _a !== void 0 ? _a : deviceFirmwareType;
30481
+ this.isSwitchFirmware = firmwareType !== deviceFirmwareType;
29721
30482
  let resourceBinary = null;
29722
30483
  let fwBinaryMap = [];
29723
30484
  let bootloaderBinary = null;
29724
30485
  try {
29725
30486
  this.postTipMessage(exports.FirmwareUpdateTipMessage.StartDownloadFirmware);
29726
- resourceBinary = yield this.prepareResourceBinary();
29727
- fwBinaryMap = yield this.prepareFirmwareAndBleBinary();
29728
- bootloaderBinary = yield this.prepareBootloaderBinary();
30487
+ resourceBinary = yield this.prepareResourceBinary(firmwareType);
30488
+ fwBinaryMap = yield this.prepareFirmwareAndBleBinary(firmwareType);
30489
+ bootloaderBinary = yield this.prepareBootloaderBinary(firmwareType);
29729
30490
  this.postTipMessage(exports.FirmwareUpdateTipMessage.FinishDownloadFirmware);
29730
30491
  }
29731
30492
  catch (err) {
29732
- throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.FirmwareUpdateDownloadFailed, (_a = err.message) !== null && _a !== void 0 ? _a : err);
30493
+ throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.FirmwareUpdateDownloadFailed, (_b = err.message) !== null && _b !== void 0 ? _b : err);
29733
30494
  }
29734
30495
  if (!bootloaderBinary && fwBinaryMap.length === 0) {
29735
30496
  throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.FirmwareUpdateDownloadFailed, 'No firmware to update');
@@ -29754,7 +30515,7 @@ class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod {
29754
30515
  throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, 'bootloader version needs to be updated');
29755
30516
  }
29756
30517
  }
29757
- prepareResourceBinary() {
30518
+ prepareResourceBinary(firmwareType) {
29758
30519
  return __awaiter(this, void 0, void 0, function* () {
29759
30520
  if (this.params.resourceBinary) {
29760
30521
  return this.params.resourceBinary;
@@ -29762,7 +30523,11 @@ class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod {
29762
30523
  const { features } = this.device;
29763
30524
  if (!features)
29764
30525
  return null;
29765
- const resourceUrl = DataManager.getSysResourcesLatestRelease(features, this.params.forcedUpdateRes);
30526
+ const resourceUrl = DataManager.getSysResourcesLatestRelease({
30527
+ features,
30528
+ forcedUpdateRes: this.params.forcedUpdateRes,
30529
+ firmwareType,
30530
+ });
29766
30531
  if (resourceUrl) {
29767
30532
  const resource = (yield getSysResourceBinary(resourceUrl)).binary;
29768
30533
  return resource;
@@ -29771,7 +30536,7 @@ class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod {
29771
30536
  return null;
29772
30537
  });
29773
30538
  }
29774
- prepareBootloaderBinary() {
30539
+ prepareBootloaderBinary(firmwareType) {
29775
30540
  return __awaiter(this, void 0, void 0, function* () {
29776
30541
  if (this.params.bootloaderBinary) {
29777
30542
  return this.params.bootloaderBinary;
@@ -29780,7 +30545,7 @@ class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod {
29780
30545
  if (!features)
29781
30546
  return null;
29782
30547
  if (this.params.bootloaderVersion) {
29783
- const bootResourceUrl = DataManager.getBootloaderResource(features);
30548
+ const bootResourceUrl = DataManager.getBootloaderResource(features, firmwareType);
29784
30549
  if (bootResourceUrl) {
29785
30550
  const bootBinary = (yield getSysResourceBinary(bootResourceUrl)).binary;
29786
30551
  return bootBinary;
@@ -29789,7 +30554,7 @@ class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod {
29789
30554
  return null;
29790
30555
  });
29791
30556
  }
29792
- prepareFirmwareAndBleBinary() {
30557
+ prepareFirmwareAndBleBinary(firmwareType) {
29793
30558
  return __awaiter(this, void 0, void 0, function* () {
29794
30559
  const fwBinaryMap = [];
29795
30560
  if (this.params.firmwareBinary) {
@@ -29806,6 +30571,7 @@ class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod {
29806
30571
  version: this.params.firmwareVersion,
29807
30572
  updateType: 'firmware',
29808
30573
  isUpdateBootloader: false,
30574
+ firmwareType,
29809
30575
  })).binary;
29810
30576
  fwBinaryMap.push({
29811
30577
  fileName: 'firmware.bin',
@@ -29826,6 +30592,7 @@ class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod {
29826
30592
  features,
29827
30593
  version: this.params.bleVersion,
29828
30594
  updateType: 'ble',
30595
+ firmwareType,
29829
30596
  });
29830
30597
  fwBinaryMap.push({
29831
30598
  fileName: 'ble-firmware.bin',
@@ -29837,7 +30604,6 @@ class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod {
29837
30604
  });
29838
30605
  }
29839
30606
  executeUpdate({ resourceBinary, fwBinaryMap, bootloaderBinary, }) {
29840
- var _a;
29841
30607
  return __awaiter(this, void 0, void 0, function* () {
29842
30608
  let totalSize = 0;
29843
30609
  let processedSize = 0;
@@ -29897,6 +30663,7 @@ class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod {
29897
30663
  if (error === null || error === void 0 ? void 0 : error.errorCode) {
29898
30664
  const unexpectedError = [
29899
30665
  hardwareShared.HardwareErrorCode.ActionCancelled,
30666
+ hardwareShared.HardwareErrorCode.CallQueueActionCancelled,
29900
30667
  hardwareShared.HardwareErrorCode.FirmwareVerificationFailed,
29901
30668
  hardwareShared.HardwareErrorCode.BleDeviceNotBonded,
29902
30669
  hardwareShared.HardwareErrorCode.BleServiceNotFound,
@@ -29921,54 +30688,119 @@ class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod {
29921
30688
  this.postProgressMessage(0, 'installingFirmware');
29922
30689
  const installStartTime = Date.now();
29923
30690
  const maxWaitTimeForInstallingFirmware = 5 * 60 * 1000;
30691
+ let getFeaturesTimeoutCount = 0;
30692
+ const maxGetFeaturesTimeoutBeforeReauth = 3;
29924
30693
  while (true) {
29925
30694
  if (Date.now() - installStartTime > maxWaitTimeForInstallingFirmware) {
29926
30695
  throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, 'Firmware update process timeout after 5 minutes');
29927
30696
  }
29928
30697
  try {
29929
30698
  const typedCall = this.device.getCommands().typedCall.bind(this.device.getCommands());
30699
+ const timeoutMs = 3000;
29930
30700
  const featuresRes = yield Promise.race([
29931
30701
  typedCall('GetFeatures', 'Features', {}),
29932
30702
  new Promise((_, reject) => {
29933
- setTimeout(() => reject(new Error('GetFeatures timeout after 3 seconds')), 3000);
30703
+ setTimeout(() => reject(hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.CallMethodNotResponse, 'GetFeatures timeout', { method: 'GetFeatures', timeoutMs })), timeoutMs);
29934
30704
  }),
29935
30705
  ]);
30706
+ getFeaturesTimeoutCount = 0;
29936
30707
  const features = featuresRes.message;
29937
30708
  const bootloaderVersion = getDeviceBootloaderVersion(features).join('.');
29938
30709
  const bleVersion = getDeviceBLEFirmwareVersion(features).join('.');
29939
30710
  const firmwareVersion = getDeviceFirmwareVersion(features).join('.');
29940
- this.postTipMessage(exports.FirmwareUpdateTipMessage.FirmwareUpdateCompleted);
29941
- DevicePool.resetState();
29942
- return {
29943
- bootloaderVersion,
29944
- bleVersion,
29945
- firmwareVersion,
29946
- };
30711
+ if (firmwareVersion !== '0.0.0') {
30712
+ this.postTipMessage(exports.FirmwareUpdateTipMessage.FirmwareUpdateCompleted);
30713
+ DevicePool.resetState();
30714
+ return {
30715
+ bootloaderVersion,
30716
+ bleVersion,
30717
+ firmwareVersion,
30718
+ };
30719
+ }
30720
+ yield hardwareShared.wait(1000);
29947
30721
  }
29948
30722
  catch (error) {
29949
- if (error.message && error.message.includes('Update mode')) {
29950
- const updateParts = error.message.split('Update mode ');
29951
- const progressValue = (_a = updateParts[1]) !== null && _a !== void 0 ? _a : '0';
29952
- const progress = parseInt(progressValue, 10) || 0;
30723
+ Log$4.log('getFeatures error', error);
30724
+ let shouldReconnect = true;
30725
+ const progress = this.extractUpdateModeProgress(error);
30726
+ if (progress !== null) {
30727
+ getFeaturesTimeoutCount = 0;
29953
30728
  this.postProgressMessage(progress, 'installingFirmware');
29954
30729
  yield hardwareShared.wait(1000);
30730
+ shouldReconnect = false;
30731
+ }
30732
+ else if (this.isGetFeaturesTimeoutError(error)) {
30733
+ getFeaturesTimeoutCount += 1;
30734
+ if (getFeaturesTimeoutCount <= maxGetFeaturesTimeoutBeforeReauth) {
30735
+ yield hardwareShared.wait(1000);
30736
+ shouldReconnect = false;
30737
+ }
29955
30738
  }
29956
30739
  else {
30740
+ getFeaturesTimeoutCount = 0;
30741
+ }
30742
+ if (shouldReconnect) {
29957
30743
  yield hardwareShared.wait(1000);
29958
30744
  const reconnectTimeout = this.isBleReconnect() && (this.params.bleBinary || this.params.bleVersion)
29959
30745
  ? 3 * 60 * 1000
29960
30746
  : 60 * 1000;
30747
+ getFeaturesTimeoutCount = 0;
29961
30748
  yield this.waitForDeviceReconnect(reconnectTimeout);
29962
30749
  }
29963
30750
  }
29964
30751
  }
29965
30752
  });
29966
30753
  }
30754
+ extractUpdateModeProgress(error) {
30755
+ const message = this.normalizeErrorMessage(error);
30756
+ if (!message) {
30757
+ return null;
30758
+ }
30759
+ const match = message.match(/Update mode\s*(\d+)/i);
30760
+ if (!match) {
30761
+ return null;
30762
+ }
30763
+ const progress = parseInt(match[1], 10);
30764
+ return Number.isNaN(progress) ? null : progress;
30765
+ }
30766
+ isGetFeaturesTimeoutError(error) {
30767
+ var _a;
30768
+ return (error instanceof hardwareShared.HardwareError &&
30769
+ error.errorCode === hardwareShared.HardwareErrorCode.CallMethodNotResponse &&
30770
+ ((_a = error.params) === null || _a === void 0 ? void 0 : _a.method) === 'GetFeatures');
30771
+ }
30772
+ normalizeErrorMessage(error) {
30773
+ if (!error) {
30774
+ return '';
30775
+ }
30776
+ if (typeof error === 'string') {
30777
+ return error;
30778
+ }
30779
+ if (typeof error === 'object') {
30780
+ const { message } = error;
30781
+ if (typeof message === 'string') {
30782
+ return message;
30783
+ }
30784
+ if (message !== undefined && message !== null) {
30785
+ return String(message);
30786
+ }
30787
+ }
30788
+ return '';
30789
+ }
30790
+ canPromptWebUsbSwitchFirmwareReconnect() {
30791
+ if (!this.isSwitchFirmware) {
30792
+ return false;
30793
+ }
30794
+ return (DataManager.isBrowserWebUsb(DataManager.getSettings('env')) &&
30795
+ !this.payload.skipWebDevicePrompt &&
30796
+ this.device.listenerCount(DEVICE.SELECT_DEVICE_FOR_SWITCH_FIRMWARE_WEB_DEVICE) > 0);
30797
+ }
29967
30798
  waitForDeviceReconnect(timeout) {
29968
30799
  var _a, _b, _c, _d;
29969
30800
  return __awaiter(this, void 0, void 0, function* () {
29970
30801
  const startTime = Date.now();
29971
30802
  const isBleReconnect = this.isBleReconnect();
30803
+ let webUsbCheckCount = 0;
29972
30804
  while (Date.now() - startTime < timeout) {
29973
30805
  try {
29974
30806
  if (isBleReconnect) {
@@ -29992,6 +30824,23 @@ class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod {
29992
30824
  else {
29993
30825
  const deviceDiff = yield ((_b = this.device.deviceConnector) === null || _b === void 0 ? void 0 : _b.enumerate());
29994
30826
  const devicesDescriptor = (_c = deviceDiff === null || deviceDiff === void 0 ? void 0 : deviceDiff.descriptors) !== null && _c !== void 0 ? _c : [];
30827
+ const canPromptSwitchFirmwareReconnect = this.canPromptWebUsbSwitchFirmwareReconnect();
30828
+ if (canPromptSwitchFirmwareReconnect) {
30829
+ webUsbCheckCount += 1;
30830
+ if (webUsbCheckCount > 4) {
30831
+ this.postTipMessage(exports.FirmwareUpdateTipMessage.SwitchFirmwareReconnectDevice);
30832
+ try {
30833
+ yield this._promptDeviceForSwitchFirmwareWebDevice();
30834
+ }
30835
+ catch (e) {
30836
+ Log$4.log('WebUSB re-authorization failed: ', e);
30837
+ }
30838
+ webUsbCheckCount = 0;
30839
+ }
30840
+ }
30841
+ else {
30842
+ webUsbCheckCount = 0;
30843
+ }
29995
30844
  const { deviceList } = yield DevicePool.getDevices(devicesDescriptor, this.connectId);
29996
30845
  if (deviceList.length === 1) {
29997
30846
  this.device.updateFromCache(deviceList[0]);
@@ -30071,37 +30920,6 @@ class PromptWebDeviceAccess extends BaseMethod {
30071
30920
  }
30072
30921
  }
30073
30922
 
30074
- class EmmcFileWrite extends FirmwareUpdateBaseMethod {
30075
- init() {
30076
- const { payload } = this;
30077
- validateParams(payload, [
30078
- { name: 'payload', type: 'buffer', required: true },
30079
- { name: 'filePath', type: 'string', required: true },
30080
- ]);
30081
- this.allowDeviceMode = [UI_REQUEST.BOOTLOADER, UI_REQUEST.NOT_INITIALIZE];
30082
- this.useDevicePassphraseState = false;
30083
- this.params = {
30084
- payload: payload.payload,
30085
- filePath: payload.filePath,
30086
- };
30087
- }
30088
- run() {
30089
- return __awaiter(this, void 0, void 0, function* () {
30090
- const { payload, filePath } = this.params;
30091
- yield this.enterBootloaderMode();
30092
- yield this.emmcCommonUpdateProcess({ payload, filePath });
30093
- try {
30094
- yield this.reboot(hardwareTransport.RebootType.Normal);
30095
- }
30096
- catch (e) {
30097
- }
30098
- return {
30099
- filePath,
30100
- };
30101
- });
30102
- }
30103
- }
30104
-
30105
30923
  class CipherKeyValue extends BaseMethod {
30106
30924
  constructor() {
30107
30925
  super(...arguments);
@@ -30336,6 +31154,9 @@ const networkConfigMap = {
30336
31154
  neo: {
30337
31155
  methodName: 'neoGetAddress',
30338
31156
  },
31157
+ stellar: {
31158
+ methodName: 'stellarGetAddress',
31159
+ },
30339
31160
  };
30340
31161
  class AllNetworkGetAddressBase extends BaseMethod {
30341
31162
  constructor() {
@@ -30374,7 +31195,7 @@ class AllNetworkGetAddressBase extends BaseMethod {
30374
31195
  };
30375
31196
  }
30376
31197
  callMethod(methodName, params, rootFingerprint) {
30377
- var _a;
31198
+ var _a, _b, _c;
30378
31199
  return __awaiter(this, void 0, void 0, function* () {
30379
31200
  const method = findMethod({
30380
31201
  event: IFRAME.CALL,
@@ -30383,25 +31204,38 @@ class AllNetworkGetAddressBase extends BaseMethod {
30383
31204
  });
30384
31205
  method.connector = this.connector;
30385
31206
  method.postMessage = this.postMessage;
31207
+ if (this.context) {
31208
+ (_a = method.setContext) === null || _a === void 0 ? void 0 : _a.call(method, this.context);
31209
+ }
31210
+ method.requestContext = createRequestContext(method.responseID, methodName, {
31211
+ sdkInstanceId: this.sdkInstanceId,
31212
+ connectId: this.payload.connectId,
31213
+ parentResponseID: this.responseID,
31214
+ });
31215
+ const onSignalAbort = () => {
31216
+ var _a;
31217
+ (_a = this.abortController) === null || _a === void 0 ? void 0 : _a.abort(hardwareShared.HardwareErrorCodeMessage[hardwareShared.HardwareErrorCode.RepeatUnlocking]);
31218
+ };
31219
+ const buttonListener = (...[device, request]) => {
31220
+ if (request.code === 'ButtonRequest_PinEntry' || request.code === 'ButtonRequest_AttachPin') {
31221
+ onSignalAbort();
31222
+ }
31223
+ else {
31224
+ onDeviceButtonHandler(device, request);
31225
+ }
31226
+ };
30386
31227
  let result;
30387
31228
  try {
30388
31229
  method.init();
30389
- (_a = method.setDevice) === null || _a === void 0 ? void 0 : _a.call(method, this.device);
31230
+ (_b = method.setDevice) === null || _b === void 0 ? void 0 : _b.call(method, this.device);
30390
31231
  method.context = this.context;
30391
- const onSignalAbort = () => {
30392
- var _a;
30393
- (_a = this.abortController) === null || _a === void 0 ? void 0 : _a.abort(hardwareShared.HardwareErrorCodeMessage[hardwareShared.HardwareErrorCode.RepeatUnlocking]);
30394
- };
30395
- const _onDeviceButtonHandler = (...[device, request]) => {
30396
- if (request.code === 'ButtonRequest_PinEntry' ||
30397
- request.code === 'ButtonRequest_AttachPin') {
30398
- onSignalAbort();
30399
- }
30400
- else {
30401
- onDeviceButtonHandler(device, request);
30402
- }
30403
- };
30404
- this.device.on(DEVICE.BUTTON, _onDeviceButtonHandler);
31232
+ if (method.requestContext && this.device) {
31233
+ updateRequestContext(method.requestContext.responseID, {
31234
+ deviceInstanceId: this.device.instanceId,
31235
+ commandsInstanceId: (_c = this.device.commands) === null || _c === void 0 ? void 0 : _c.instanceId,
31236
+ });
31237
+ }
31238
+ this.device.on(DEVICE.BUTTON, buttonListener);
30405
31239
  this.device.on(DEVICE.PIN, onSignalAbort);
30406
31240
  this.device.on(DEVICE.PASSPHRASE, onSignalAbort);
30407
31241
  preCheckDeviceSupport(this.device, method);
@@ -30410,6 +31244,9 @@ class AllNetworkGetAddressBase extends BaseMethod {
30410
31244
  throw new Error('No response');
30411
31245
  }
30412
31246
  result = response.map((item, index) => (Object.assign(Object.assign({}, params.bundle[index]._originRequestParams), { success: true, payload: Object.assign(Object.assign({}, item), { rootFingerprint }) })));
31247
+ if (method.requestContext) {
31248
+ completeRequestContext(method.requestContext.responseID);
31249
+ }
30413
31250
  }
30414
31251
  catch (e) {
30415
31252
  const error = handleSkippableHardwareError(e, this.device, method);
@@ -30425,6 +31262,14 @@ class AllNetworkGetAddressBase extends BaseMethod {
30425
31262
  else {
30426
31263
  throw e;
30427
31264
  }
31265
+ if (method.requestContext) {
31266
+ completeRequestContext(method.requestContext.responseID, e instanceof Error ? e : new Error(String(e)));
31267
+ }
31268
+ }
31269
+ finally {
31270
+ this.device.off(DEVICE.BUTTON, buttonListener);
31271
+ this.device.off(DEVICE.PIN, onSignalAbort);
31272
+ this.device.off(DEVICE.PASSPHRASE, onSignalAbort);
30428
31273
  }
30429
31274
  return result;
30430
31275
  });
@@ -30457,14 +31302,19 @@ function preCheckDeviceSupport(device, method) {
30457
31302
  if (versionRange &&
30458
31303
  semver__default["default"].valid(versionRange.min) &&
30459
31304
  semver__default["default"].lt(currentVersion, versionRange.min)) {
30460
- throw hardwareShared.ERRORS.createNeedUpgradeFirmwareHardwareError(currentVersion, versionRange.min);
31305
+ throw hardwareShared.ERRORS.createNeedUpgradeFirmwareHardwareError({
31306
+ currentVersion,
31307
+ requireVersion: versionRange.min,
31308
+ methodName: method.name,
31309
+ firmwareType: getFirmwareType(device.features),
31310
+ });
30461
31311
  }
30462
31312
  else if (method.strictCheckDeviceSupport && !versionRange) {
30463
- throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.DeviceNotSupportMethod);
31313
+ throw hardwareShared.ERRORS.createDeviceNotSupportMethodError(method.name, getFirmwareType(device.features));
30464
31314
  }
30465
31315
  }
30466
31316
  function handleSkippableHardwareError(e, device, method) {
30467
- var _a, _b, _c, _d, _e;
31317
+ var _a, _b, _c, _d, _e, _f;
30468
31318
  let error;
30469
31319
  if (e instanceof hardwareShared.HardwareError && e.errorCode !== hardwareShared.HardwareErrorCode.RuntimeError) {
30470
31320
  const { errorCode } = e;
@@ -30475,20 +31325,26 @@ function handleSkippableHardwareError(e, device, method) {
30475
31325
  error = e;
30476
31326
  }
30477
31327
  }
30478
- else if ((_a = e.message) === null || _a === void 0 ? void 0 : _a.includes('Failure_UnexpectedMessage')) {
31328
+ else if (((_a = e.message) === null || _a === void 0 ? void 0 : _a.includes('Failure_UnexpectedMessage')) ||
31329
+ ((_b = e.message) === null || _b === void 0 ? void 0 : _b.includes('Failure_UnknownMessage'))) {
30479
31330
  const versionRange = getMethodVersionRange(device.features, type => method.getVersionRange()[type]);
30480
31331
  const currentVersion = getDeviceFirmwareVersion(device.features).join('.');
30481
31332
  if (versionRange &&
30482
31333
  semver__default["default"].valid(versionRange.min) &&
30483
31334
  semver__default["default"].lt(currentVersion, versionRange.min)) {
30484
- error = hardwareShared.ERRORS.createNeedUpgradeFirmwareHardwareError(currentVersion, versionRange.min);
31335
+ error = hardwareShared.ERRORS.createNeedUpgradeFirmwareHardwareError({
31336
+ currentVersion,
31337
+ requireVersion: versionRange.min,
31338
+ methodName: method.name,
31339
+ firmwareType: getFirmwareType(device.features),
31340
+ });
30485
31341
  }
30486
31342
  else {
30487
- error = hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.DeviceNotSupportMethod, e.message);
31343
+ error = hardwareShared.ERRORS.createDeviceNotSupportMethodError(method.name, getFirmwareType(device.features));
30488
31344
  }
30489
31345
  }
30490
- else if (((_c = (_b = e.message) === null || _b === void 0 ? void 0 : _b.toLowerCase()) === null || _c === void 0 ? void 0 : _c.includes('forbidden key path')) ||
30491
- ((_e = (_d = e.message) === null || _d === void 0 ? void 0 : _d.toLowerCase()) === null || _e === void 0 ? void 0 : _e.includes('invalid path'))) {
31346
+ else if (((_d = (_c = e.message) === null || _c === void 0 ? void 0 : _c.toLowerCase()) === null || _d === void 0 ? void 0 : _d.includes('forbidden key path')) ||
31347
+ ((_f = (_e = e.message) === null || _e === void 0 ? void 0 : _e.toLowerCase()) === null || _f === void 0 ? void 0 : _f.includes('invalid path'))) {
30492
31348
  error = hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.CallMethodInvalidParameter, e.message);
30493
31349
  }
30494
31350
  return error;
@@ -31009,7 +31865,7 @@ function batchGetPublickeys(device, paths, ecdsaCurveName, coinType, options) {
31009
31865
  }
31010
31866
  const supportsBatchPublicKey = supportBatchPublicKey(device.features, options);
31011
31867
  if (!supportsBatchPublicKey) {
31012
- throw hardwareShared.TypedError(hardwareShared.HardwareErrorCode.DeviceNotSupportMethod);
31868
+ throw hardwareShared.createDeviceNotSupportMethodError('BatchGetPublickeys', getFirmwareType(device.features));
31013
31869
  }
31014
31870
  const existsPathNotEqualCoinType = paths.find(p => !isEqualBip44CoinType(p.address_n, coinType));
31015
31871
  if ((options === null || options === void 0 ? void 0 : options.ignoreCoinType) === false && existsPathNotEqualCoinType) {
@@ -31035,7 +31891,7 @@ function batchGetPublickeys(device, paths, ecdsaCurveName, coinType, options) {
31035
31891
  include_node: (_a = options === null || options === void 0 ? void 0 : options.includeNode) !== null && _a !== void 0 ? _a : false,
31036
31892
  });
31037
31893
  if (res.type !== 'EcdsaPublicKeys') {
31038
- throw hardwareShared.TypedError(hardwareShared.HardwareErrorCode.DeviceNotSupportMethod, 'BatchGetPublickeys failed');
31894
+ throw hardwareShared.createDeviceNotSupportMethodError('BatchGetPublickeys', getFirmwareType(device.features));
31039
31895
  }
31040
31896
  else {
31041
31897
  result.root_fingerprint = res.message.root_fingerprint;
@@ -32909,8 +33765,12 @@ class EVMSignTypedData extends BaseMethod {
32909
33765
  return false;
32910
33766
  let biggerLimit = 1024;
32911
33767
  const currentVersion = getDeviceFirmwareVersion(this.device.features).join('.');
33768
+ const currentDeviceType = getDeviceType(this.device.features);
32912
33769
  const supportBiggerDataVersion = '4.4.0';
32913
- if (semver__default["default"].gte(currentVersion, supportBiggerDataVersion)) {
33770
+ const supportBiggerData = DeviceModelToTypes.model_classic1s.includes(currentDeviceType) ||
33771
+ (DeviceModelToTypes.model_touch.includes(currentDeviceType) &&
33772
+ semver__default["default"].gte(currentVersion, supportBiggerDataVersion));
33773
+ if (supportBiggerData) {
32914
33774
  biggerLimit = 1536;
32915
33775
  }
32916
33776
  const startIndex = data.startsWith('0x') ? 2 : 0;
@@ -32957,14 +33817,9 @@ class EVMSignTypedData extends BaseMethod {
32957
33817
  throw hardwareShared.ERRORS.TypedError('Device_InitializeFailed', 'Device initialization failed. Please try again.');
32958
33818
  }
32959
33819
  const { addressN, chainId } = this.params;
33820
+ const supportEip712OnClassic = existCapability(this.device.features, hardwareTransport.Enum_Capability.Capability_EthereumTypedData);
32960
33821
  const deviceType = getDeviceType(this.device.features);
32961
- if (DeviceModelToTypes.model_mini.includes(deviceType)) {
32962
- const currentVersion = getDeviceFirmwareVersion(this.device.features).join('.');
32963
- const isClassic1sOrPure = deviceType === hardwareShared.EDeviceType.Classic1s || deviceType === hardwareShared.EDeviceType.ClassicPure;
32964
- if ((isClassic1sOrPure && semver__default["default"].gte(currentVersion, '3.14.0')) ||
32965
- existCapability(this.device.features, hardwareTransport.Enum_Capability.Capability_EthereumTypedData)) {
32966
- return this.signTypedData();
32967
- }
33822
+ if (DeviceModelToTypes.model_mini.includes(deviceType) && !supportEip712OnClassic) {
32968
33823
  validateParams(this.params, [
32969
33824
  { name: 'domainHash', type: 'hexString', required: true },
32970
33825
  { name: 'messageHash', type: 'hexString', required: true },
@@ -33533,11 +34388,9 @@ class SolSignTransaction extends BaseMethod {
33533
34388
  validateParams(batch, [
33534
34389
  { name: 'path', required: true },
33535
34390
  { name: 'rawTx', type: 'hexString', required: true },
34391
+ { name: 'extraInfo', type: 'object' },
33536
34392
  ]);
33537
- this.params.push({
33538
- address_n: addressN,
33539
- raw_tx: formatAnyHex(batch.rawTx),
33540
- });
34393
+ this.params.push(Object.assign({ address_n: addressN, raw_tx: formatAnyHex(batch.rawTx) }, (batch.extraInfo ? { extra_info: batch.extraInfo } : undefined)));
33541
34394
  });
33542
34395
  }
33543
34396
  getVersionRange() {
@@ -33971,7 +34824,7 @@ class TronSignMessage extends BaseMethod {
33971
34824
  const { path, messageHex } = this.payload;
33972
34825
  const addressN = validatePath(path, 3);
33973
34826
  if (this.payload.messageType === 'V1' || this.payload.messageType == null) {
33974
- throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.DeviceNotSupportMethod, 'not support tron message v1');
34827
+ throw hardwareShared.createDeviceNotSupportMethodError('TronSignMessage', getFirmwareType(this.device.features));
33975
34828
  }
33976
34829
  const messageType = hardwareTransport.TronMessageType.V2;
33977
34830
  this.params = {
@@ -33992,6 +34845,9 @@ class TronSignMessage extends BaseMethod {
33992
34845
  pro: {
33993
34846
  min: '4.16.0',
33994
34847
  },
34848
+ touch: {
34849
+ min: '4.12.0',
34850
+ },
33995
34851
  classic1s: {
33996
34852
  min: '3.13.0',
33997
34853
  },
@@ -34138,6 +34994,9 @@ class TronSignTransaction extends BaseMethod {
34138
34994
  pro: {
34139
34995
  min: '4.13.0',
34140
34996
  },
34997
+ touch: {
34998
+ min: '4.12.0',
34999
+ },
34141
35000
  model_classic1s: {
34142
35001
  min: '3.12.0',
34143
35002
  },
@@ -34153,6 +35012,12 @@ class TronSignTransaction extends BaseMethod {
34153
35012
  pro: {
34154
35013
  min: '4.15.0',
34155
35014
  },
35015
+ touch: {
35016
+ min: '4.12.0',
35017
+ },
35018
+ model_classic1s: {
35019
+ min: '3.13.0',
35020
+ },
34156
35021
  };
34157
35022
  }
34158
35023
  checkSupportDelegateContractLockPeriod() {
@@ -34798,12 +35663,22 @@ class CosmosSignTransaction extends BaseMethod {
34798
35663
  }
34799
35664
  run() {
34800
35665
  return __awaiter(this, void 0, void 0, function* () {
34801
- const res = yield this.device.commands.typedCall('CosmosSignTx', 'CosmosSignedTx', Object.assign({}, this.params));
34802
- const { signature } = res.message;
34803
- return {
34804
- path: serializedPath(this.params.address_n),
34805
- signature,
34806
- };
35666
+ try {
35667
+ const res = yield this.device.commands.typedCall('CosmosSignTx', 'CosmosSignedTx', Object.assign({}, this.params));
35668
+ const { signature } = res.message;
35669
+ return {
35670
+ path: serializedPath(this.params.address_n),
35671
+ signature,
35672
+ };
35673
+ }
35674
+ catch (error) {
35675
+ const { message } = error;
35676
+ if (message.includes('Failure_DataError,Json parse failed') ||
35677
+ message.includes('Failure_DataError,Invalid message')) {
35678
+ throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.CosmosInvalidJsonMessage, message);
35679
+ }
35680
+ throw error;
35681
+ }
34807
35682
  });
34808
35683
  }
34809
35684
  }
@@ -34847,21 +35722,8 @@ class XrpGetAddress$1 extends BaseMethod {
34847
35722
  };
34848
35723
  }
34849
35724
  run() {
34850
- var _a, _b, _c, _d, _e;
35725
+ var _a, _b, _c, _d;
34851
35726
  return __awaiter(this, void 0, void 0, function* () {
34852
- if (this.hasBundle && supportBatchPublicKey((_a = this.device) === null || _a === void 0 ? void 0 : _a.features) && !this.shouldConfirm) {
34853
- const res = yield batchGetPublickeys(this.device, this.params, 'secp256k1', 144);
34854
- const result = res.public_keys.map((publicKey, index) => ({
34855
- path: serializedPath(this.params[index].address_n),
34856
- address: rippleKeypairs.deriveAddress(publicKey),
34857
- publicKey,
34858
- pub: publicKey,
34859
- }));
34860
- validateResult(result, ['address', 'publicKey'], {
34861
- expectedLength: this.params.length,
34862
- });
34863
- return Promise.resolve(result);
34864
- }
34865
35727
  const responses = [];
34866
35728
  for (let i = 0; i < this.params.length; i++) {
34867
35729
  const param = this.params[i];
@@ -34875,8 +35737,8 @@ class XrpGetAddress$1 extends BaseMethod {
34875
35737
  responses.push({
34876
35738
  path,
34877
35739
  address,
34878
- publicKey: (_c = (_b = publicKey.message) === null || _b === void 0 ? void 0 : _b.public_keys) === null || _c === void 0 ? void 0 : _c[0],
34879
- pub: (_e = (_d = publicKey.message) === null || _d === void 0 ? void 0 : _d.public_keys) === null || _e === void 0 ? void 0 : _e[0],
35740
+ publicKey: (_b = (_a = publicKey.message) === null || _a === void 0 ? void 0 : _a.public_keys) === null || _b === void 0 ? void 0 : _b[0],
35741
+ pub: (_d = (_c = publicKey.message) === null || _c === void 0 ? void 0 : _c.public_keys) === null || _d === void 0 ? void 0 : _d[0],
34880
35742
  });
34881
35743
  this.postPreviousAddressMessage({
34882
35744
  path,
@@ -36359,6 +37221,11 @@ var Networks;
36359
37221
  Networks["Astar"] = "astar";
36360
37222
  Networks["JoyStream"] = "joystream";
36361
37223
  Networks["Manta"] = "manta";
37224
+ Networks["Hydration"] = "hydration";
37225
+ Networks["Bifrost"] = "bifrost";
37226
+ Networks["BifrostKusama"] = "bifrost-ksm";
37227
+ Networks["PolkadotAssetHub"] = "polkadot-assethub";
37228
+ Networks["KusamaAssetHub"] = "kusama-assethub";
36362
37229
  })(Networks || (Networks = {}));
36363
37230
  const baseVersionRange = {
36364
37231
  model_mini: {
@@ -36399,6 +37266,16 @@ function getPolkadotVersionRangeWithBundle(networks) {
36399
37266
  }
36400
37267
  return baseVersionRange;
36401
37268
  }
37269
+ function parseNetwork(network) {
37270
+ switch (network) {
37271
+ case Networks.PolkadotAssetHub:
37272
+ return Networks.Polkadot;
37273
+ case Networks.KusamaAssetHub:
37274
+ return Networks.Kusama;
37275
+ default:
37276
+ return network;
37277
+ }
37278
+ }
36402
37279
 
36403
37280
  class PolkadotGetAddress extends BaseMethod {
36404
37281
  constructor() {
@@ -36427,7 +37304,7 @@ class PolkadotGetAddress extends BaseMethod {
36427
37304
  this.params.push({
36428
37305
  address_n: addressN,
36429
37306
  prefix,
36430
- network,
37307
+ network: parseNetwork(network),
36431
37308
  show_display: showOnUKey,
36432
37309
  });
36433
37310
  });
@@ -36474,13 +37351,15 @@ class PolkadotSignTransaction extends BaseMethod {
36474
37351
  validateParams(this.payload, [
36475
37352
  { name: 'path', required: true },
36476
37353
  { name: 'network', required: true },
37354
+ { name: 'prefix' },
36477
37355
  { name: 'rawTx', type: 'hexString', required: true },
36478
37356
  ]);
36479
- const { path, rawTx, network } = this.payload;
37357
+ const { path, rawTx, network, prefix } = this.payload;
36480
37358
  const addressN = validatePath(path, 3);
36481
37359
  this.params = {
36482
37360
  address_n: addressN,
36483
- network,
37361
+ network: parseNetwork(network),
37362
+ prefix,
36484
37363
  raw_tx: formatAnyHex(rawTx),
36485
37364
  };
36486
37365
  }
@@ -38707,6 +39586,7 @@ var ApiMethods = /*#__PURE__*/Object.freeze({
38707
39586
  checkBridgeRelease: CheckBridgeRelease,
38708
39587
  checkBootloaderRelease: CheckBootloaderRelease,
38709
39588
  checkAllFirmwareRelease: CheckAllFirmwareRelease,
39589
+ checkFirmwareTypeAvailable: CheckFirmwareTypeAvailable,
38710
39590
  deviceBackup: DeviceBackup,
38711
39591
  deviceChangePin: DeviceChangePin,
38712
39592
  deviceFlags: DeviceFlags,
@@ -38731,7 +39611,6 @@ var ApiMethods = /*#__PURE__*/Object.freeze({
38731
39611
  firmwareUpdateV2: FirmwareUpdateV2,
38732
39612
  firmwareUpdateV3: FirmwareUpdateV3,
38733
39613
  promptWebDeviceAccess: PromptWebDeviceAccess,
38734
- emmcFileWrite: EmmcFileWrite,
38735
39614
  cipherKeyValue: CipherKeyValue,
38736
39615
  allNetworkGetAddress: AllNetworkGetAddress,
38737
39616
  allNetworkGetAddressByLoop: AllNetworkGetAddressByLoop,
@@ -38933,6 +39812,18 @@ class DeviceConnector {
38933
39812
  }
38934
39813
  });
38935
39814
  }
39815
+ disconnect(session) {
39816
+ return __awaiter(this, void 0, void 0, function* () {
39817
+ try {
39818
+ if (this.transport.disconnect && !!session) {
39819
+ yield this.transport.disconnect(session);
39820
+ }
39821
+ }
39822
+ catch (error) {
39823
+ safeThrowError(error);
39824
+ }
39825
+ });
39826
+ }
38936
39827
  promptDeviceAccess() {
38937
39828
  if (!this.transport.promptDeviceAccess) {
38938
39829
  return Promise.resolve(null);
@@ -39098,7 +39989,33 @@ const pollingState = {};
39098
39989
  let preConnectCache = {
39099
39990
  passphraseState: undefined,
39100
39991
  };
39992
+ const toError = (error) => {
39993
+ if (error instanceof Error)
39994
+ return error;
39995
+ if (error == null)
39996
+ return undefined;
39997
+ if (typeof error === 'string')
39998
+ return new Error(error);
39999
+ try {
40000
+ return new Error(JSON.stringify(error));
40001
+ }
40002
+ catch (_a) {
40003
+ return new Error(String(error));
40004
+ }
40005
+ };
40006
+ const updateMethodRequestContext = (method, updates) => {
40007
+ if (method.requestContext) {
40008
+ updateRequestContext(method.requestContext.responseID, updates);
40009
+ }
40010
+ };
40011
+ const completeMethodRequestContext = (method, error) => {
40012
+ if (!method.requestContext) {
40013
+ return;
40014
+ }
40015
+ completeRequestContext(method.requestContext.responseID, toError(error));
40016
+ };
39101
40017
  const callAPI = (context, message) => __awaiter(void 0, void 0, void 0, function* () {
40018
+ var _a;
39102
40019
  if (!message.id || !message.payload || message.type !== IFRAME.CALL) {
39103
40020
  return Promise.reject(hardwareShared.ERRORS.TypedError('on call: message.id or message.payload is missing'));
39104
40021
  }
@@ -39107,6 +40024,12 @@ const callAPI = (context, message) => __awaiter(void 0, void 0, void 0, function
39107
40024
  method = findMethod(message);
39108
40025
  method.connector = _connector;
39109
40026
  method.postMessage = postMessage;
40027
+ (_a = method.setContext) === null || _a === void 0 ? void 0 : _a.call(method, context);
40028
+ method.requestContext = createRequestContext(method.responseID, method.name, {
40029
+ sdkInstanceId: context.sdkInstanceId,
40030
+ connectId: method.connectId,
40031
+ });
40032
+ Log.debug(`[${context.sdkInstanceId}] callAPI: ${formatRequestContext(method.requestContext)}`);
39110
40033
  method.init();
39111
40034
  }
39112
40035
  catch (error) {
@@ -39114,11 +40037,14 @@ const callAPI = (context, message) => __awaiter(void 0, void 0, void 0, function
39114
40037
  }
39115
40038
  DevicePool.emitter.on(DEVICE.CONNECT, onDeviceConnectHandler);
39116
40039
  if (!method.useDevice) {
40040
+ updateMethodRequestContext(method, { status: 'running' });
39117
40041
  try {
39118
40042
  const response = yield method.run();
40043
+ completeMethodRequestContext(method);
39119
40044
  return createResponseMessage(method.responseID, true, response);
39120
40045
  }
39121
40046
  catch (error) {
40047
+ completeMethodRequestContext(method, error);
39122
40048
  return createResponseMessage(method.responseID, false, { error });
39123
40049
  }
39124
40050
  }
@@ -39158,9 +40084,10 @@ const waitForPendingPromise = (getPrePendingCallPromise, removePrePendingCallPro
39158
40084
  }
39159
40085
  });
39160
40086
  const onCallDevice = (context, message, method) => __awaiter(void 0, void 0, void 0, function* () {
39161
- var _a, _b;
40087
+ var _b, _c, _d, _e;
39162
40088
  let messageResponse;
39163
40089
  const { requestQueue, getPrePendingCallPromise, setPrePendingCallPromise } = context;
40090
+ updateMethodRequestContext(method, { status: 'running' });
39164
40091
  const connectStateChange = preConnectCache.passphraseState !== method.payload.passphraseState;
39165
40092
  preConnectCache = {
39166
40093
  passphraseState: method.payload.passphraseState,
@@ -39180,10 +40107,11 @@ const onCallDevice = (context, message, method) => __awaiter(void 0, void 0, voi
39180
40107
  pollingState[pollingId] = false;
39181
40108
  }
39182
40109
  pollingId += 1;
39183
- device = yield ensureConnected(context, method, pollingId, (_a = task.abortController) === null || _a === void 0 ? void 0 : _a.signal);
40110
+ device = yield ensureConnected(context, method, pollingId, (_b = task.abortController) === null || _b === void 0 ? void 0 : _b.signal);
39184
40111
  }
39185
40112
  catch (e) {
39186
40113
  console.log('ensureConnected error: ', e);
40114
+ completeMethodRequestContext(method, e);
39187
40115
  if (e.name === 'AbortError' || e.message === 'Request aborted') {
39188
40116
  requestQueue.releaseTask(method.responseID);
39189
40117
  return createResponseMessage(method.responseID, false, {
@@ -39193,22 +40121,35 @@ const onCallDevice = (context, message, method) => __awaiter(void 0, void 0, voi
39193
40121
  requestQueue.releaseTask(method.responseID);
39194
40122
  return createResponseMessage(method.responseID, false, { error: e });
39195
40123
  }
40124
+ if ((_c = method.payload) === null || _c === void 0 ? void 0 : _c.onlyConnectBleDevice) {
40125
+ Log.debug('Call API - only connect ble device: ', device === null || device === void 0 ? void 0 : device.mainId);
40126
+ return createResponseMessage(method.responseID, true, null);
40127
+ }
39196
40128
  Log.debug('Call API - setDevice: ', device.mainId);
39197
- (_b = method.setDevice) === null || _b === void 0 ? void 0 : _b.call(method, device);
40129
+ (_d = method.setDevice) === null || _d === void 0 ? void 0 : _d.call(method, device);
39198
40130
  method.context = context;
40131
+ updateMethodRequestContext(method, {
40132
+ deviceInstanceId: device.instanceId,
40133
+ commandsInstanceId: (_e = device.commands) === null || _e === void 0 ? void 0 : _e.instanceId,
40134
+ });
40135
+ const activeRequests = getActiveRequestsByDeviceInstance(device.instanceId);
40136
+ if (activeRequests.length > 0) {
40137
+ Log.warn(`[${method.instanceId}] Device ${device.instanceId} has ${activeRequests.length} active requests:`, activeRequests.map(formatRequestContext));
40138
+ }
39199
40139
  device.on(DEVICE.PIN, onDevicePinHandler);
39200
40140
  device.on(DEVICE.BUTTON, onDeviceButtonHandler);
39201
40141
  device.on(DEVICE.PASSPHRASE, message.payload.useEmptyPassphrase ? onEmptyPassphraseHandler : onDevicePassphraseHandler);
39202
40142
  device.on(DEVICE.PASSPHRASE_ON_DEVICE, onEnterPassphraseOnDeviceHandler);
39203
40143
  device.on(DEVICE.FEATURES, onDeviceFeaturesHandler);
39204
40144
  device.on(DEVICE.SELECT_DEVICE_IN_BOOTLOADER_FOR_WEB_DEVICE, onSelectDeviceInBootloaderForWebDeviceHandler);
40145
+ device.on(DEVICE.SELECT_DEVICE_FOR_SWITCH_FIRMWARE_WEB_DEVICE, onSelectDeviceForSwitchFirmwareWebDeviceHandler);
39205
40146
  try {
39206
40147
  if (method.connectId) {
39207
40148
  yield context.waitForCallbackTasks(method.connectId);
39208
40149
  }
39209
40150
  yield waitForPendingPromise(getPrePendingCallPromise, setPrePendingCallPromise);
39210
40151
  const inner = () => __awaiter(void 0, void 0, void 0, function* () {
39211
- var _c, _d, _e, _f, _g;
40152
+ var _f, _g, _h, _j, _k;
39212
40153
  const versionRange = getMethodVersionRange(device.features, type => method.getVersionRange()[type]);
39213
40154
  if (device.features) {
39214
40155
  yield DataManager.checkAndReloadData();
@@ -39218,7 +40159,8 @@ const onCallDevice = (context, message, method) => __awaiter(void 0, void 0, voi
39218
40159
  throw hardwareShared.createDefectiveFirmwareError(defectiveInfo.serialNo, defectiveInfo.seVersion || 'Unknown', defectiveInfo.deviceType, method.connectId, method.deviceId);
39219
40160
  }
39220
40161
  }
39221
- const newVersionStatus = DataManager.getFirmwareStatus(device.features);
40162
+ const deviceFirmwareType = getFirmwareType(device.features);
40163
+ const newVersionStatus = DataManager.getFirmwareStatus(device.features, deviceFirmwareType);
39222
40164
  const bleVersionStatus = DataManager.getBLEFirmwareStatus(device.features);
39223
40165
  const currentFirmwareVersion = getDeviceFirmwareVersion(device.features).join('.');
39224
40166
  const currentBleVersion = getDeviceBLEFirmwareVersion(device.features).join('.');
@@ -39241,9 +40183,19 @@ const onCallDevice = (context, message, method) => __awaiter(void 0, void 0, voi
39241
40183
  if (semver__default["default"].valid(versionRange.min) &&
39242
40184
  semver__default["default"].lt(currentFirmwareVersion, versionRange.min)) {
39243
40185
  if (newVersionStatus === 'none' || newVersionStatus === 'valid') {
39244
- throw hardwareShared.createNewFirmwareUnReleaseHardwareError(currentFirmwareVersion, versionRange.min, method.name);
40186
+ throw hardwareShared.createNewFirmwareUnReleaseHardwareError({
40187
+ currentVersion: currentFirmwareVersion,
40188
+ requireVersion: versionRange.min,
40189
+ methodName: method.name,
40190
+ firmwareType: getFirmwareType(device.features),
40191
+ });
39245
40192
  }
39246
- return Promise.reject(hardwareShared.createNeedUpgradeFirmwareHardwareError(currentFirmwareVersion, versionRange.min, method.name));
40193
+ return Promise.reject(hardwareShared.createNeedUpgradeFirmwareHardwareError({
40194
+ currentVersion: currentFirmwareVersion,
40195
+ requireVersion: versionRange.min,
40196
+ methodName: method.name,
40197
+ firmwareType: getFirmwareType(device.features),
40198
+ }));
39247
40199
  }
39248
40200
  if (versionRange.max &&
39249
40201
  semver__default["default"].valid(versionRange.max) &&
@@ -39252,7 +40204,7 @@ const onCallDevice = (context, message, method) => __awaiter(void 0, void 0, voi
39252
40204
  }
39253
40205
  }
39254
40206
  else if (method.strictCheckDeviceSupport) {
39255
- throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.DeviceNotSupportMethod, `Method '${method.name}' is not supported by this device`);
40207
+ throw hardwareShared.createDeviceNotSupportMethodError(method.name, getFirmwareType(device.features));
39256
40208
  }
39257
40209
  }
39258
40210
  const unexpectedMode = device.hasUnexpectedMode(method.allowDeviceMode, method.requireDeviceMode);
@@ -39284,7 +40236,7 @@ const onCallDevice = (context, message, method) => __awaiter(void 0, void 0, voi
39284
40236
  require: support.require,
39285
40237
  }));
39286
40238
  }
39287
- const passphraseStateSafety = yield device.checkPassphraseStateSafety((_c = method.payload) === null || _c === void 0 ? void 0 : _c.passphraseState, (_d = method.payload) === null || _d === void 0 ? void 0 : _d.useEmptyPassphrase, (_e = method.payload) === null || _e === void 0 ? void 0 : _e.skipPassphraseCheck);
40239
+ const passphraseStateSafety = yield device.checkPassphraseStateSafety((_f = method.payload) === null || _f === void 0 ? void 0 : _f.passphraseState, (_g = method.payload) === null || _g === void 0 ? void 0 : _g.useEmptyPassphrase, (_h = method.payload) === null || _h === void 0 ? void 0 : _h.skipPassphraseCheck);
39288
40240
  checkPassphraseEnableState(method, device.features);
39289
40241
  if (!passphraseStateSafety) {
39290
40242
  DevicePool.clearDeviceCache(method.payload.connectId);
@@ -39301,17 +40253,23 @@ const onCallDevice = (context, message, method) => __awaiter(void 0, void 0, voi
39301
40253
  : hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.RuntimeError, 'open safety check failed.');
39302
40254
  throw error;
39303
40255
  }
39304
- (_g = (_f = method.device) === null || _f === void 0 ? void 0 : _f.commands) === null || _g === void 0 ? void 0 : _g.checkDisposed();
40256
+ (_k = (_j = method.device) === null || _j === void 0 ? void 0 : _j.commands) === null || _k === void 0 ? void 0 : _k.checkDisposed();
39305
40257
  try {
39306
40258
  const response = yield method.run();
39307
40259
  Log.debug('Call API - Inner Method Run: ');
39308
40260
  messageResponse = createResponseMessage(method.responseID, true, response);
39309
40261
  requestQueue.resolveRequest(method.responseID, messageResponse);
40262
+ completeMethodRequestContext(method);
39310
40263
  }
39311
40264
  catch (error) {
39312
- Log.debug('Call API - Inner Method Run Error: ', error);
40265
+ Log.debug(`Call API - Inner Method Run Error`, error);
39313
40266
  messageResponse = createResponseMessage(method.responseID, false, { error });
39314
40267
  requestQueue.resolveRequest(method.responseID, messageResponse);
40268
+ completeMethodRequestContext(method, error);
40269
+ if (error instanceof hardwareShared.HardwareError &&
40270
+ hardwareShared.ERROR_CODES_REQUIRE_RELEASE.includes(error.errorCode)) {
40271
+ throw error;
40272
+ }
39315
40273
  }
39316
40274
  });
39317
40275
  Log.debug('Call API - Device Run: ', device.mainId);
@@ -39323,6 +40281,7 @@ const onCallDevice = (context, message, method) => __awaiter(void 0, void 0, voi
39323
40281
  }
39324
40282
  catch (e) {
39325
40283
  Log.debug('Device Run Error: ', e);
40284
+ completeMethodRequestContext(method, e);
39326
40285
  return createResponseMessage(method.responseID, false, { error: e });
39327
40286
  }
39328
40287
  }
@@ -39330,6 +40289,7 @@ const onCallDevice = (context, message, method) => __awaiter(void 0, void 0, voi
39330
40289
  messageResponse = createResponseMessage(method.responseID, false, { error });
39331
40290
  requestQueue.rejectRequest(method.responseID, hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.CallMethodError, error.message));
39332
40291
  Log.debug('Call API - Run Error: ', error);
40292
+ completeMethodRequestContext(method, error);
39333
40293
  }
39334
40294
  finally {
39335
40295
  const response = messageResponse;
@@ -39341,7 +40301,19 @@ const onCallDevice = (context, message, method) => __awaiter(void 0, void 0, voi
39341
40301
  requestQueue.releaseTask(method.responseID);
39342
40302
  closePopup();
39343
40303
  cleanup();
39344
- removeDeviceListener(device);
40304
+ if (device) {
40305
+ const stillActive = getActiveRequestsByDeviceInstance(device.instanceId);
40306
+ if (stillActive.length > 1) {
40307
+ Log.warn(`[${method.instanceId}] Removing listeners while ${stillActive.length} requests are active!`, {
40308
+ deviceInstanceId: device.instanceId,
40309
+ activeRequests: stillActive.map(formatRequestContext),
40310
+ pinListeners: device.listenerCount(DEVICE.PIN),
40311
+ });
40312
+ }
40313
+ else {
40314
+ removeDeviceListener(device);
40315
+ }
40316
+ }
39345
40317
  }
39346
40318
  });
39347
40319
  function initDeviceList(method) {
@@ -39388,10 +40360,7 @@ function initDevice(method) {
39388
40360
  }
39389
40361
  if (!device) {
39390
40362
  const env = DataManager.getSettings('env');
39391
- if (DataManager.isWebUsbConnect(env)) {
39392
- if (!method.payload.skipWebDevicePrompt) {
39393
- postMessage(createUiMessage(UI_REQUEST.WEB_DEVICE_PROMPT_ACCESS_PERMISSION));
39394
- }
40363
+ if (DataManager.isBrowserWebUsb(env)) {
39395
40364
  throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.WebDeviceNotFoundOrNeedsPermission);
39396
40365
  }
39397
40366
  throw hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.DeviceNotFound);
@@ -39411,7 +40380,7 @@ function initDeviceForBle(method) {
39411
40380
  device = deviceCacheMap.get(method.connectId);
39412
40381
  }
39413
40382
  else {
39414
- device = Device.fromDescriptor({ id: method.connectId });
40383
+ device = Device.fromDescriptor({ id: method.connectId }, method.sdkInstanceId);
39415
40384
  deviceCacheMap.set(method.connectId, device);
39416
40385
  }
39417
40386
  device.deviceConnector = _connector;
@@ -39419,9 +40388,13 @@ function initDeviceForBle(method) {
39419
40388
  }
39420
40389
  let bleTimeoutRetry = 0;
39421
40390
  function connectDeviceForBle(method, device) {
40391
+ var _a;
39422
40392
  return __awaiter(this, void 0, void 0, function* () {
39423
40393
  try {
39424
40394
  yield device.acquire();
40395
+ if ((_a = method.payload) === null || _a === void 0 ? void 0 : _a.onlyConnectBleDevice) {
40396
+ return;
40397
+ }
39425
40398
  yield device.initialize(parseInitOptions(method));
39426
40399
  }
39427
40400
  catch (err) {
@@ -39446,12 +40419,13 @@ const ensureConnected = (_context, method, pollingId, abortSignal) => __awaiter(
39446
40419
  Log.debug(`EnsureConnected function start, MAX_RETRY_COUNT=${MAX_RETRY_COUNT}, POLL_INTERVAL_TIME=${POLL_INTERVAL_TIME} `);
39447
40420
  const poll = (time = POLL_INTERVAL_TIME) => __awaiter(void 0, void 0, void 0, function* () {
39448
40421
  return new Promise((resolve, reject) => __awaiter(void 0, void 0, void 0, function* () {
40422
+ var _l;
39449
40423
  const abort = () => {
39450
40424
  if (abortSignal && abortSignal.aborted) {
39451
40425
  if (timer) {
39452
40426
  clearTimeout(timer);
39453
40427
  }
39454
- reject(hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.ActionCancelled));
40428
+ reject(hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.CallQueueActionCancelled));
39455
40429
  return true;
39456
40430
  }
39457
40431
  return false;
@@ -39539,7 +40513,6 @@ const ensureConnected = (_context, method, pollingId, abortSignal) => __awaiter(
39539
40513
  hardwareShared.HardwareErrorCode.SelectDevice,
39540
40514
  hardwareShared.HardwareErrorCode.DeviceDetectInBootloaderMode,
39541
40515
  hardwareShared.HardwareErrorCode.BleCharacteristicNotifyChangeFailure,
39542
- hardwareShared.HardwareErrorCode.WebDeviceNotFoundOrNeedsPermission,
39543
40516
  hardwareShared.HardwareErrorCode.BridgeNeedsPermission,
39544
40517
  ].includes(error.errorCode)) {
39545
40518
  reject(error);
@@ -39551,7 +40524,13 @@ const ensureConnected = (_context, method, pollingId, abortSignal) => __awaiter(
39551
40524
  clearTimeout(timer);
39552
40525
  }
39553
40526
  Log.debug('EnsureConnected get to max try count, will return: ', tryCount);
39554
- reject(hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.DeviceNotFound));
40527
+ if (DataManager.isBrowserWebUsb(env) && !((_l = method.payload) === null || _l === void 0 ? void 0 : _l.skipWebDevicePrompt)) {
40528
+ postMessage(createUiMessage(UI_REQUEST.WEB_DEVICE_PROMPT_ACCESS_PERMISSION));
40529
+ reject(hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.WebDeviceNotFoundOrNeedsPermission));
40530
+ }
40531
+ else {
40532
+ reject(hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.DeviceNotFound));
40533
+ }
39555
40534
  return;
39556
40535
  }
39557
40536
  if (abort()) {
@@ -39581,7 +40560,7 @@ const cancel = (context, connectId) => {
39581
40560
  setPrePendingCallPromise(device === null || device === void 0 ? void 0 : device.interruptionFromUser());
39582
40561
  canceledDevices.push(device);
39583
40562
  }
39584
- requestQueue.rejectRequest(requestId, hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.ActionCancelled));
40563
+ requestQueue.rejectRequest(requestId, hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.CallQueueActionCancelled));
39585
40564
  }
39586
40565
  }
39587
40566
  requestQueue.abortRequestsByConnectId(connectId);
@@ -39604,7 +40583,7 @@ const cancel = (context, connectId) => {
39604
40583
  device === null || device === void 0 ? void 0 : device.interruptionFromUser();
39605
40584
  canceledDevices.push(device);
39606
40585
  }
39607
- requestQueue.rejectRequest(requestId, hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.ActionCancelled));
40586
+ requestQueue.rejectRequest(requestId, hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.CallQueueActionCancelled));
39608
40587
  }
39609
40588
  }
39610
40589
  }
@@ -39616,7 +40595,7 @@ const cancel = (context, connectId) => {
39616
40595
  }
39617
40596
  });
39618
40597
  requestQueue.getRequestTasksId().forEach(requestId => {
39619
- requestQueue.rejectRequest(requestId, hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.ActionCancelled));
40598
+ requestQueue.rejectRequest(requestId, hardwareShared.ERRORS.TypedError(hardwareShared.HardwareErrorCode.CallQueueActionCancelled));
39620
40599
  });
39621
40600
  }
39622
40601
  }
@@ -39723,7 +40702,19 @@ const onSelectDeviceInBootloaderForWebDeviceHandler = (...[device, callback]) =>
39723
40702
  const uiResp = yield uiPromise.promise;
39724
40703
  callback(null, uiResp.payload.deviceId);
39725
40704
  });
40705
+ const onSelectDeviceForSwitchFirmwareWebDeviceHandler = (...[device, callback]) => __awaiter(void 0, void 0, void 0, function* () {
40706
+ Log.debug('onSelectDeviceForSwitchFirmwareWebDeviceHandler');
40707
+ const uiPromise = createUiPromise(UI_RESPONSE.SELECT_DEVICE_FOR_SWITCH_FIRMWARE_WEB_DEVICE, device);
40708
+ postMessage(createUiMessage(UI_REQUEST.REQUEST_DEVICE_FOR_SWITCH_FIRMWARE_WEB_DEVICE, {
40709
+ device: device.toMessageObject(),
40710
+ }));
40711
+ const uiResp = yield uiPromise.promise;
40712
+ callback(null, uiResp.payload.deviceId);
40713
+ });
39726
40714
  const postMessage = (message) => {
40715
+ if (!_core) {
40716
+ return;
40717
+ }
39727
40718
  _core.emit(CORE_EVENT, message);
39728
40719
  };
39729
40720
  const createUiPromise = (promiseEvent, device) => {
@@ -39737,12 +40728,17 @@ const removeUiPromise = (promise) => {
39737
40728
  };
39738
40729
  class Core extends events.exports {
39739
40730
  constructor() {
39740
- super(...arguments);
40731
+ super();
39741
40732
  this.requestQueue = new RequestQueue();
39742
40733
  this.methodSynchronize = getSynchronize();
40734
+ this.tracingContext = createSdkTracingContext();
40735
+ this.sdkInstanceId = this.tracingContext.sdkInstanceId;
40736
+ Log.debug(`[Core] Created SDK instance: ${this.sdkInstanceId}`);
39743
40737
  }
39744
40738
  getCoreContext() {
39745
40739
  return {
40740
+ sdkInstanceId: this.sdkInstanceId,
40741
+ tracingContext: this.tracingContext,
39746
40742
  requestQueue: this.requestQueue,
39747
40743
  methodSynchronize: this.methodSynchronize,
39748
40744
  getPrePendingCallPromise: () => this.prePendingCallPromise,
@@ -39762,7 +40758,8 @@ class Core extends events.exports {
39762
40758
  switch (message.type) {
39763
40759
  case UI_RESPONSE.RECEIVE_PIN:
39764
40760
  case UI_RESPONSE.RECEIVE_PASSPHRASE:
39765
- case UI_RESPONSE.SELECT_DEVICE_IN_BOOTLOADER_FOR_WEB_DEVICE: {
40761
+ case UI_RESPONSE.SELECT_DEVICE_IN_BOOTLOADER_FOR_WEB_DEVICE:
40762
+ case UI_RESPONSE.SELECT_DEVICE_FOR_SWITCH_FIRMWARE_WEB_DEVICE: {
39766
40763
  const uiPromise = findUiPromise(message.type);
39767
40764
  if (uiPromise) {
39768
40765
  Log.log('receive UI Response: ', message.type);
@@ -39805,6 +40802,10 @@ class Core extends events.exports {
39805
40802
  });
39806
40803
  }
39807
40804
  dispose() {
40805
+ _deviceList = undefined;
40806
+ _connector = undefined;
40807
+ Log.debug(`[Core] Disposing SDK instance: ${this.sdkInstanceId}`);
40808
+ cleanupSdkInstance(this.sdkInstanceId);
39808
40809
  }
39809
40810
  }
39810
40811
  const initCore = () => {
@@ -39825,7 +40826,7 @@ const init = (settings, Transport, plugin) => __awaiter(void 0, void 0, void 0,
39825
40826
  yield DataManager.load(settings);
39826
40827
  initTransport(Transport, plugin);
39827
40828
  }
39828
- catch (_h) {
40829
+ catch (_m) {
39829
40830
  Log.error('DataManager.load error');
39830
40831
  }
39831
40832
  enableLog(DataManager.getSettings('debug'));
@@ -39899,18 +40900,28 @@ exports.UI_RESPONSE = UI_RESPONSE;
39899
40900
  exports.checkNeedUpdateBootForClassicAndMini = checkNeedUpdateBootForClassicAndMini;
39900
40901
  exports.checkNeedUpdateBootForTouch = checkNeedUpdateBootForTouch;
39901
40902
  exports.cleanupCallback = cleanupCallback;
40903
+ exports.cleanupSdkInstance = cleanupSdkInstance;
40904
+ exports.completeRequestContext = completeRequestContext;
39902
40905
  exports.corsValidator = corsValidator;
39903
40906
  exports.createDeviceMessage = createDeviceMessage;
39904
40907
  exports.createErrorMessage = createErrorMessage;
39905
40908
  exports.createFirmwareMessage = createFirmwareMessage;
39906
40909
  exports.createIFrameMessage = createIFrameMessage;
39907
40910
  exports.createLogMessage = createLogMessage;
40911
+ exports.createRequestContext = createRequestContext;
39908
40912
  exports.createResponseMessage = createResponseMessage;
40913
+ exports.createSdkTracingContext = createSdkTracingContext;
39909
40914
  exports.createUiMessage = createUiMessage;
39910
40915
  exports.createUiResponse = createUiResponse;
39911
40916
  exports["default"] = HardwareSdk;
39912
40917
  exports.enableLog = enableLog;
39913
40918
  exports.executeCallback = executeCallback;
40919
+ exports.formatRequestContext = formatRequestContext;
40920
+ exports.generateInstanceId = generateInstanceId;
40921
+ exports.generateSdkInstanceId = generateSdkInstanceId;
40922
+ exports.getActiveRequestsByDeviceInstance = getActiveRequestsByDeviceInstance;
40923
+ exports.getAutoLockOptions = getAutoLockOptions;
40924
+ exports.getAutoShutDownOptions = getAutoShutDownOptions;
39914
40925
  exports.getDeviceBLEFirmwareVersion = getDeviceBLEFirmwareVersion;
39915
40926
  exports.getDeviceBleName = getDeviceBleName;
39916
40927
  exports.getDeviceBoardloaderVersion = getDeviceBoardloaderVersion;
@@ -39928,6 +40939,7 @@ exports.getHDPath = getHDPath;
39928
40939
  exports.getHomeScreenDefaultList = getHomeScreenDefaultList;
39929
40940
  exports.getHomeScreenHex = getHomeScreenHex;
39930
40941
  exports.getHomeScreenSize = getHomeScreenSize;
40942
+ exports.getLanguageConfig = getLanguageConfig;
39931
40943
  exports.getLog = getLog;
39932
40944
  exports.getLogger = getLogger;
39933
40945
  exports.getMethodVersionRange = getMethodVersionRange;
@@ -39948,6 +40960,7 @@ exports.safeThrowError = safeThrowError;
39948
40960
  exports.setLoggerPostMessage = setLoggerPostMessage;
39949
40961
  exports.supportInputPinOnSoftware = supportInputPinOnSoftware;
39950
40962
  exports.switchTransport = switchTransport;
40963
+ exports.updateRequestContext = updateRequestContext;
39951
40964
  exports.versionCompare = versionCompare;
39952
40965
  exports.versionSplit = versionSplit;
39953
40966
  exports.wait = wait;