@onekeyfe/hd-core 1.2.0-alpha.5 → 1.2.0-alpha.51

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 (739) hide show
  1. package/__tests__/AllNetworkGetAddressBase.tracing.test.ts +77 -0
  2. package/__tests__/DeviceCommands.test.ts +517 -0
  3. package/__tests__/DeviceEventRegistration.test.ts +43 -0
  4. package/__tests__/chain-params-onekey-compatibility.test.ts +229 -0
  5. package/__tests__/check-all-firmware-release-protocol-v2.test.ts +282 -0
  6. package/__tests__/connectSettings.test.ts +61 -0
  7. package/__tests__/core-dispose.test.ts +34 -0
  8. package/__tests__/core-error-output.test.ts +39 -0
  9. package/__tests__/device-features-state.test.ts +78 -0
  10. package/__tests__/device-identity.test.ts +52 -0
  11. package/__tests__/device-initialize-timeout.test.ts +56 -0
  12. package/__tests__/device-lifecycle-events.test.ts +249 -0
  13. package/__tests__/device-pool-state.test.ts +144 -0
  14. package/__tests__/device-settings.test.ts +416 -0
  15. package/__tests__/device-state-contract.test.ts +27 -0
  16. package/__tests__/device-state-events.test.ts +286 -0
  17. package/__tests__/device-state-mapper.test.ts +261 -0
  18. package/__tests__/device-state-projector.test.ts +94 -0
  19. package/__tests__/device-state-store.test.ts +82 -0
  20. package/__tests__/device-utils.test.ts +107 -0
  21. package/__tests__/device-wallet-session-store.test.ts +478 -0
  22. package/__tests__/deviceFeaturesUtils.test.ts +39 -0
  23. package/__tests__/deviceSettings.test.ts +103 -0
  24. package/__tests__/evmLedgerLegacySafety.test.ts +12 -6
  25. package/__tests__/evmSignTransaction.test.ts +69 -0
  26. package/__tests__/evmSignTypedData.test.ts +80 -0
  27. package/__tests__/filesystemValidation.test.ts +53 -0
  28. package/__tests__/firmware-update/check-all-firmware-release.test.ts +175 -0
  29. package/__tests__/firmware-update/firmware-artifact-source.test.ts +119 -0
  30. package/__tests__/firmware-update/firmware-host-binding.test.ts +70 -0
  31. package/__tests__/firmware-update/firmware-preparation-error.test.ts +27 -0
  32. package/__tests__/firmware-update/firmware-update-bootloader-poll.test.ts +200 -0
  33. package/__tests__/firmware-update/firmware-update-capabilities.test.ts +13 -0
  34. package/__tests__/firmware-update/firmware-update-plan.test.ts +593 -0
  35. package/__tests__/firmware-update/firmware-update-prepared-plan.test.ts +213 -0
  36. package/__tests__/firmware-update/firmware-update-v2-download-before-boot.test.ts +430 -0
  37. package/__tests__/firmware-update/firmware-update-v3-reconnect.test.ts +58 -0
  38. package/__tests__/firmware-update/firmware-upload-source.test.ts +70 -0
  39. package/__tests__/get-device-state.test.ts +458 -0
  40. package/__tests__/homescreen.test.ts +24 -0
  41. package/__tests__/kaspa-public-types.type-test.ts +16 -0
  42. package/__tests__/kaspa-use-tweak-pro2.test.ts +20 -0
  43. package/__tests__/kaspaSignTransaction.test.ts +601 -0
  44. package/__tests__/known-device-public-types.type-test.ts +3 -0
  45. package/__tests__/logBlockEvent.test.ts +128 -1
  46. package/__tests__/method-protocol-support.test.ts +113 -0
  47. package/__tests__/networkUtils.test.ts +406 -0
  48. package/__tests__/open-wallet-session-error-response.test.ts +43 -0
  49. package/__tests__/open-wallet-session.test.ts +1368 -0
  50. package/__tests__/pro2Wallpaper.test.ts +39 -0
  51. package/__tests__/protocol-v2-bootloader-mode.test.ts +37 -0
  52. package/__tests__/protocol-v2-firmware-targets.test.ts +37 -0
  53. package/__tests__/protocol-v2-ping.test.ts +28 -0
  54. package/__tests__/protocol-v2-unlock-policy.test.ts +45 -0
  55. package/__tests__/protocol-v2.test.ts +6103 -2509
  56. package/__tests__/protocolV2FileWrite.test.ts +92 -0
  57. package/__tests__/protocolV2UiInteraction.test.ts +266 -0
  58. package/__tests__/public-device-state-api.test.ts +275 -0
  59. package/__tests__/public-pro2-api-boundary.test.ts +106 -0
  60. package/__tests__/refresh-device-state.test.ts +101 -0
  61. package/__tests__/request-context-logging.test.ts +16 -0
  62. package/__tests__/search-devices.test.ts +136 -0
  63. package/__tests__/tron-sign-message-init.test.ts +74 -0
  64. package/dist/api/BaseMethod.d.ts +14 -1
  65. package/dist/api/BaseMethod.d.ts.map +1 -1
  66. package/dist/api/CheckAllFirmwareRelease.d.ts +24 -1
  67. package/dist/api/CheckAllFirmwareRelease.d.ts.map +1 -1
  68. package/dist/api/CheckBootloaderRelease.d.ts.map +1 -1
  69. package/dist/api/CheckFirmwareRelease.d.ts.map +1 -1
  70. package/dist/api/CipherKeyValue.d.ts +1 -0
  71. package/dist/api/CipherKeyValue.d.ts.map +1 -1
  72. package/dist/api/ClearSessionCache.d.ts +9 -0
  73. package/dist/api/ClearSessionCache.d.ts.map +1 -0
  74. package/dist/api/DirList.d.ts +1 -0
  75. package/dist/api/DirList.d.ts.map +1 -1
  76. package/dist/api/DirMake.d.ts +1 -0
  77. package/dist/api/DirMake.d.ts.map +1 -1
  78. package/dist/api/DirRemove.d.ts +1 -0
  79. package/dist/api/DirRemove.d.ts.map +1 -1
  80. package/dist/api/FileDelete.d.ts +1 -0
  81. package/dist/api/FileDelete.d.ts.map +1 -1
  82. package/dist/api/FileRead.d.ts +1 -0
  83. package/dist/api/FileRead.d.ts.map +1 -1
  84. package/dist/api/FileWrite.d.ts +2 -0
  85. package/dist/api/FileWrite.d.ts.map +1 -1
  86. package/dist/api/FirmwareUpdate.d.ts.map +1 -1
  87. package/dist/api/FirmwareUpdateV2.d.ts +13 -2
  88. package/dist/api/FirmwareUpdateV2.d.ts.map +1 -1
  89. package/dist/api/FirmwareUpdateV3.d.ts +7 -3
  90. package/dist/api/FirmwareUpdateV3.d.ts.map +1 -1
  91. package/dist/api/FirmwareUpdateV4.d.ts +40 -16
  92. package/dist/api/FirmwareUpdateV4.d.ts.map +1 -1
  93. package/dist/api/GetDeviceState.d.ts +8 -0
  94. package/dist/api/GetDeviceState.d.ts.map +1 -0
  95. package/dist/api/GetFeatures.d.ts +1 -1
  96. package/dist/api/GetFeatures.d.ts.map +1 -1
  97. package/dist/api/GetOnekeyFeatures.d.ts.map +1 -1
  98. package/dist/api/GetPassphraseState.d.ts +2 -6
  99. package/dist/api/GetPassphraseState.d.ts.map +1 -1
  100. package/dist/api/OpenWalletSession.d.ts +8 -0
  101. package/dist/api/OpenWalletSession.d.ts.map +1 -0
  102. package/dist/api/PathInfo.d.ts +1 -0
  103. package/dist/api/PathInfo.d.ts.map +1 -1
  104. package/dist/api/PromptWebDeviceAccess.d.ts.map +1 -1
  105. package/dist/api/SearchDevices.d.ts +3 -0
  106. package/dist/api/SearchDevices.d.ts.map +1 -1
  107. package/dist/api/UploadPortfolio.d.ts +17 -0
  108. package/dist/api/UploadPortfolio.d.ts.map +1 -0
  109. package/dist/api/alephium/AlephiumGetAddress.d.ts.map +1 -1
  110. package/dist/api/alephium/AlephiumSignMessage.d.ts.map +1 -1
  111. package/dist/api/alephium/AlephiumSignTransaction.d.ts.map +1 -1
  112. package/dist/api/algo/AlgoGetAddress.d.ts +1 -0
  113. package/dist/api/algo/AlgoGetAddress.d.ts.map +1 -1
  114. package/dist/api/algo/AlgoSignTransaction.d.ts +1 -0
  115. package/dist/api/algo/AlgoSignTransaction.d.ts.map +1 -1
  116. package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts +1 -0
  117. package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts.map +1 -1
  118. package/dist/api/aptos/AptosGetAddress.d.ts +1 -0
  119. package/dist/api/aptos/AptosGetAddress.d.ts.map +1 -1
  120. package/dist/api/aptos/AptosGetPublicKey.d.ts +1 -0
  121. package/dist/api/aptos/AptosGetPublicKey.d.ts.map +1 -1
  122. package/dist/api/aptos/AptosSignInMessage.d.ts +1 -0
  123. package/dist/api/aptos/AptosSignInMessage.d.ts.map +1 -1
  124. package/dist/api/aptos/AptosSignMessage.d.ts +1 -0
  125. package/dist/api/aptos/AptosSignMessage.d.ts.map +1 -1
  126. package/dist/api/aptos/AptosSignTransaction.d.ts +1 -0
  127. package/dist/api/aptos/AptosSignTransaction.d.ts.map +1 -1
  128. package/dist/api/benfen/BenfenGetAddress.d.ts.map +1 -1
  129. package/dist/api/benfen/BenfenGetPublicKey.d.ts.map +1 -1
  130. package/dist/api/benfen/BenfenSignMessage.d.ts.map +1 -1
  131. package/dist/api/benfen/BenfenSignTransaction.d.ts.map +1 -1
  132. package/dist/api/btc/BTCGetAddress.d.ts +1 -0
  133. package/dist/api/btc/BTCGetAddress.d.ts.map +1 -1
  134. package/dist/api/btc/BTCGetPublicKey.d.ts +1 -0
  135. package/dist/api/btc/BTCGetPublicKey.d.ts.map +1 -1
  136. package/dist/api/btc/BTCSignMessage.d.ts +1 -0
  137. package/dist/api/btc/BTCSignMessage.d.ts.map +1 -1
  138. package/dist/api/btc/BTCSignPsbt.d.ts +1 -0
  139. package/dist/api/btc/BTCSignPsbt.d.ts.map +1 -1
  140. package/dist/api/btc/BTCSignTransaction.d.ts +1 -0
  141. package/dist/api/btc/BTCSignTransaction.d.ts.map +1 -1
  142. package/dist/api/btc/BTCVerifyMessage.d.ts +1 -0
  143. package/dist/api/btc/BTCVerifyMessage.d.ts.map +1 -1
  144. package/dist/api/btc/helpers/versionLimit.d.ts +2 -0
  145. package/dist/api/btc/helpers/versionLimit.d.ts.map +1 -1
  146. package/dist/api/cardano/CardanoGetAddress.d.ts +1 -0
  147. package/dist/api/cardano/CardanoGetAddress.d.ts.map +1 -1
  148. package/dist/api/cardano/CardanoGetPublicKey.d.ts +1 -0
  149. package/dist/api/cardano/CardanoGetPublicKey.d.ts.map +1 -1
  150. package/dist/api/cardano/CardanoSignMessage.d.ts +1 -0
  151. package/dist/api/cardano/CardanoSignMessage.d.ts.map +1 -1
  152. package/dist/api/cardano/CardanoSignTransaction.d.ts +1 -0
  153. package/dist/api/cardano/CardanoSignTransaction.d.ts.map +1 -1
  154. package/dist/api/conflux/ConfluxGetAddress.d.ts +2 -0
  155. package/dist/api/conflux/ConfluxGetAddress.d.ts.map +1 -1
  156. package/dist/api/conflux/ConfluxSignMessage.d.ts +2 -0
  157. package/dist/api/conflux/ConfluxSignMessage.d.ts.map +1 -1
  158. package/dist/api/conflux/ConfluxSignMessageCIP23.d.ts +2 -0
  159. package/dist/api/conflux/ConfluxSignMessageCIP23.d.ts.map +1 -1
  160. package/dist/api/conflux/ConfluxSignTransaction.d.ts +2 -0
  161. package/dist/api/conflux/ConfluxSignTransaction.d.ts.map +1 -1
  162. package/dist/api/cosmos/CosmosGetAddress.d.ts +1 -0
  163. package/dist/api/cosmos/CosmosGetAddress.d.ts.map +1 -1
  164. package/dist/api/cosmos/CosmosGetPublicKey.d.ts +1 -0
  165. package/dist/api/cosmos/CosmosGetPublicKey.d.ts.map +1 -1
  166. package/dist/api/cosmos/CosmosSignTransaction.d.ts +1 -0
  167. package/dist/api/cosmos/CosmosSignTransaction.d.ts.map +1 -1
  168. package/dist/api/device/DeviceCancel.d.ts +1 -0
  169. package/dist/api/device/DeviceCancel.d.ts.map +1 -1
  170. package/dist/api/device/DeviceChangePin.d.ts +1 -0
  171. package/dist/api/device/DeviceChangePin.d.ts.map +1 -1
  172. package/dist/api/device/DeviceFullyUploadResource.d.ts +1 -2
  173. package/dist/api/device/DeviceFullyUploadResource.d.ts.map +1 -1
  174. package/dist/api/device/DeviceLock.d.ts +1 -0
  175. package/dist/api/device/DeviceLock.d.ts.map +1 -1
  176. package/dist/api/device/DeviceRebootToBoardloader.d.ts +1 -0
  177. package/dist/api/device/DeviceRebootToBoardloader.d.ts.map +1 -1
  178. package/dist/api/device/DeviceRebootToBootloader.d.ts +1 -0
  179. package/dist/api/device/DeviceRebootToBootloader.d.ts.map +1 -1
  180. package/dist/api/device/DeviceSettings.d.ts +1 -0
  181. package/dist/api/device/DeviceSettings.d.ts.map +1 -1
  182. package/dist/api/device/DeviceSupportFeatures.d.ts +1 -0
  183. package/dist/api/device/DeviceSupportFeatures.d.ts.map +1 -1
  184. package/dist/api/device/DeviceUnlock.d.ts +1 -0
  185. package/dist/api/device/DeviceUnlock.d.ts.map +1 -1
  186. package/dist/api/device/DeviceUpdateBootloader.d.ts +5 -1
  187. package/dist/api/device/DeviceUpdateBootloader.d.ts.map +1 -1
  188. package/dist/api/device/DeviceWipe.d.ts +1 -0
  189. package/dist/api/device/DeviceWipe.d.ts.map +1 -1
  190. package/dist/api/device/PreInitialize.d.ts +1 -0
  191. package/dist/api/device/PreInitialize.d.ts.map +1 -1
  192. package/dist/api/dynex/DnxGetAddress.d.ts.map +1 -1
  193. package/dist/api/dynex/DnxSignTransaction.d.ts.map +1 -1
  194. package/dist/api/evm/EVMGetAddress.d.ts +1 -0
  195. package/dist/api/evm/EVMGetAddress.d.ts.map +1 -1
  196. package/dist/api/evm/EVMGetPublicKey.d.ts +1 -0
  197. package/dist/api/evm/EVMGetPublicKey.d.ts.map +1 -1
  198. package/dist/api/evm/EVMSignMessage.d.ts +1 -0
  199. package/dist/api/evm/EVMSignMessage.d.ts.map +1 -1
  200. package/dist/api/evm/EVMSignMessageEIP712.d.ts.map +1 -1
  201. package/dist/api/evm/EVMSignTransaction.d.ts +1 -0
  202. package/dist/api/evm/EVMSignTransaction.d.ts.map +1 -1
  203. package/dist/api/evm/EVMSignTypedData.d.ts +1 -0
  204. package/dist/api/evm/EVMSignTypedData.d.ts.map +1 -1
  205. package/dist/api/evm/EVMVerifyMessage.d.ts +1 -0
  206. package/dist/api/evm/EVMVerifyMessage.d.ts.map +1 -1
  207. package/dist/api/evm/protocol.d.ts +3 -0
  208. package/dist/api/evm/protocol.d.ts.map +1 -0
  209. package/dist/api/filecoin/FilecoinGetAddress.d.ts +1 -0
  210. package/dist/api/filecoin/FilecoinGetAddress.d.ts.map +1 -1
  211. package/dist/api/filecoin/FilecoinSignTransaction.d.ts +1 -0
  212. package/dist/api/filecoin/FilecoinSignTransaction.d.ts.map +1 -1
  213. package/dist/api/firmware/FirmwareArtifactSource.d.ts +25 -0
  214. package/dist/api/firmware/FirmwareArtifactSource.d.ts.map +1 -0
  215. package/dist/api/firmware/FirmwareHostBinding.d.ts +6 -0
  216. package/dist/api/firmware/FirmwareHostBinding.d.ts.map +1 -0
  217. package/dist/api/firmware/FirmwarePreparationError.d.ts +3 -0
  218. package/dist/api/firmware/FirmwarePreparationError.d.ts.map +1 -0
  219. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts +8 -0
  220. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts.map +1 -1
  221. package/dist/api/firmware/FirmwareUpdateCapabilities.d.ts +3 -0
  222. package/dist/api/firmware/FirmwareUpdateCapabilities.d.ts.map +1 -0
  223. package/dist/api/firmware/FirmwareUpdatePlan.d.ts +25 -0
  224. package/dist/api/firmware/FirmwareUpdatePlan.d.ts.map +1 -0
  225. package/dist/api/firmware/FirmwareUpdatePreparedPlan.d.ts +30 -0
  226. package/dist/api/firmware/FirmwareUpdatePreparedPlan.d.ts.map +1 -0
  227. package/dist/api/firmware/getBinary.d.ts +15 -4
  228. package/dist/api/firmware/getBinary.d.ts.map +1 -1
  229. package/dist/api/firmware/updateBootloader.d.ts +2 -0
  230. package/dist/api/firmware/updateBootloader.d.ts.map +1 -1
  231. package/dist/api/firmware/uploadFirmware.d.ts +9 -1
  232. package/dist/api/firmware/uploadFirmware.d.ts.map +1 -1
  233. package/dist/api/helpers/filesystemValidation.d.ts +3 -0
  234. package/dist/api/helpers/filesystemValidation.d.ts.map +1 -1
  235. package/dist/api/helpers/paramsValidator.d.ts +1 -0
  236. package/dist/api/helpers/paramsValidator.d.ts.map +1 -1
  237. package/dist/api/helpers/protocolV2FileWrite.d.ts +33 -0
  238. package/dist/api/helpers/protocolV2FileWrite.d.ts.map +1 -0
  239. package/dist/api/index.d.ts +7 -25
  240. package/dist/api/index.d.ts.map +1 -1
  241. package/dist/api/kaspa/KaspaGetAddress.d.ts +4 -0
  242. package/dist/api/kaspa/KaspaGetAddress.d.ts.map +1 -1
  243. package/dist/api/kaspa/KaspaSignTransaction.d.ts +9 -1
  244. package/dist/api/kaspa/KaspaSignTransaction.d.ts.map +1 -1
  245. package/dist/api/kaspa/helpers/TransferSerialize.d.ts.map +1 -1
  246. package/dist/api/lightning/LnurlAuth.d.ts +0 -4
  247. package/dist/api/lightning/LnurlAuth.d.ts.map +1 -1
  248. package/dist/api/near/NearGetAddress.d.ts +1 -0
  249. package/dist/api/near/NearGetAddress.d.ts.map +1 -1
  250. package/dist/api/near/NearSignTransaction.d.ts +1 -0
  251. package/dist/api/near/NearSignTransaction.d.ts.map +1 -1
  252. package/dist/api/nem/NEMGetAddress.d.ts +1 -0
  253. package/dist/api/nem/NEMGetAddress.d.ts.map +1 -1
  254. package/dist/api/nem/NEMSignTransaction.d.ts +1 -0
  255. package/dist/api/nem/NEMSignTransaction.d.ts.map +1 -1
  256. package/dist/api/neo/NeoGetAddress.d.ts.map +1 -1
  257. package/dist/api/neo/NeoSignTransaction.d.ts.map +1 -1
  258. package/dist/api/nervos/NervosGetAddress.d.ts.map +1 -1
  259. package/dist/api/nervos/NervosSignTransaction.d.ts.map +1 -1
  260. package/dist/api/nexa/NexaGetAddress.d.ts.map +1 -1
  261. package/dist/api/nexa/NexaSignTransaction.d.ts +1 -0
  262. package/dist/api/nexa/NexaSignTransaction.d.ts.map +1 -1
  263. package/dist/api/nostr/NostrDecryptMessage.d.ts +1 -0
  264. package/dist/api/nostr/NostrDecryptMessage.d.ts.map +1 -1
  265. package/dist/api/nostr/NostrEncryptMessage.d.ts +1 -0
  266. package/dist/api/nostr/NostrEncryptMessage.d.ts.map +1 -1
  267. package/dist/api/nostr/NostrGetPublicKey.d.ts +1 -0
  268. package/dist/api/nostr/NostrGetPublicKey.d.ts.map +1 -1
  269. package/dist/api/nostr/NostrSignEvent.d.ts +1 -0
  270. package/dist/api/nostr/NostrSignEvent.d.ts.map +1 -1
  271. package/dist/api/nostr/NostrSignSchnorr.d.ts +1 -0
  272. package/dist/api/nostr/NostrSignSchnorr.d.ts.map +1 -1
  273. package/dist/api/polkadot/PolkadotGetAddress.d.ts +1 -0
  274. package/dist/api/polkadot/PolkadotGetAddress.d.ts.map +1 -1
  275. package/dist/api/polkadot/PolkadotSignTransaction.d.ts +1 -0
  276. package/dist/api/polkadot/PolkadotSignTransaction.d.ts.map +1 -1
  277. package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts +1 -0
  278. package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts.map +1 -1
  279. package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts +1 -0
  280. package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts.map +1 -1
  281. package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts +1 -0
  282. package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts.map +1 -1
  283. package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts +1 -0
  284. package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts.map +1 -1
  285. package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts +7 -0
  286. package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts.map +1 -0
  287. package/dist/api/protocol-v2/DeviceInfoGet.d.ts +1 -1
  288. package/dist/api/protocol-v2/DeviceInfoGet.d.ts.map +1 -1
  289. package/dist/api/protocol-v2/DeviceReboot.d.ts +1 -0
  290. package/dist/api/protocol-v2/DeviceReboot.d.ts.map +1 -1
  291. package/dist/api/protocol-v2/DeviceStatusGet.d.ts +7 -0
  292. package/dist/api/protocol-v2/DeviceStatusGet.d.ts.map +1 -0
  293. package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts +27 -0
  294. package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts.map +1 -0
  295. package/dist/api/protocol-v2/FilesystemFormat.d.ts +1 -0
  296. package/dist/api/protocol-v2/FilesystemFormat.d.ts.map +1 -1
  297. package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts +1 -0
  298. package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts.map +1 -1
  299. package/dist/api/protocol-v2/Ping.d.ts +3 -0
  300. package/dist/api/protocol-v2/Ping.d.ts.map +1 -1
  301. package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts +1 -0
  302. package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts.map +1 -1
  303. package/dist/api/protocol-v2/helpers.d.ts +1 -1
  304. package/dist/api/protocol-v2/helpers.d.ts.map +1 -1
  305. package/dist/api/scdo/ScdoGetAddress.d.ts.map +1 -1
  306. package/dist/api/scdo/ScdoSignMessage.d.ts.map +1 -1
  307. package/dist/api/scdo/ScdoSignTransaction.d.ts.map +1 -1
  308. package/dist/api/solana/SolGetAddress.d.ts +1 -0
  309. package/dist/api/solana/SolGetAddress.d.ts.map +1 -1
  310. package/dist/api/solana/SolSignMessage.d.ts +1 -0
  311. package/dist/api/solana/SolSignMessage.d.ts.map +1 -1
  312. package/dist/api/solana/SolSignOffchainMessage.d.ts +1 -0
  313. package/dist/api/solana/SolSignOffchainMessage.d.ts.map +1 -1
  314. package/dist/api/solana/SolSignTransaction.d.ts +1 -0
  315. package/dist/api/solana/SolSignTransaction.d.ts.map +1 -1
  316. package/dist/api/starcoin/StarcoinGetAddress.d.ts +1 -0
  317. package/dist/api/starcoin/StarcoinGetAddress.d.ts.map +1 -1
  318. package/dist/api/starcoin/StarcoinGetPublicKey.d.ts +1 -0
  319. package/dist/api/starcoin/StarcoinGetPublicKey.d.ts.map +1 -1
  320. package/dist/api/starcoin/StarcoinSignMessage.d.ts +1 -0
  321. package/dist/api/starcoin/StarcoinSignMessage.d.ts.map +1 -1
  322. package/dist/api/starcoin/StarcoinSignTransaction.d.ts +1 -0
  323. package/dist/api/starcoin/StarcoinSignTransaction.d.ts.map +1 -1
  324. package/dist/api/starcoin/StarcoinVerifyMessage.d.ts +1 -0
  325. package/dist/api/starcoin/StarcoinVerifyMessage.d.ts.map +1 -1
  326. package/dist/api/stellar/StellarGetAddress.d.ts +1 -2
  327. package/dist/api/stellar/StellarGetAddress.d.ts.map +1 -1
  328. package/dist/api/stellar/StellarSignTransaction.d.ts +2 -3
  329. package/dist/api/stellar/StellarSignTransaction.d.ts.map +1 -1
  330. package/dist/api/sui/SuiGetAddress.d.ts +1 -0
  331. package/dist/api/sui/SuiGetAddress.d.ts.map +1 -1
  332. package/dist/api/sui/SuiGetPublicKey.d.ts +1 -0
  333. package/dist/api/sui/SuiGetPublicKey.d.ts.map +1 -1
  334. package/dist/api/sui/SuiSignMessage.d.ts +1 -0
  335. package/dist/api/sui/SuiSignMessage.d.ts.map +1 -1
  336. package/dist/api/sui/SuiSignTransaction.d.ts +1 -0
  337. package/dist/api/sui/SuiSignTransaction.d.ts.map +1 -1
  338. package/dist/api/ton/TonGetAddress.d.ts +1 -0
  339. package/dist/api/ton/TonGetAddress.d.ts.map +1 -1
  340. package/dist/api/ton/TonSignData.d.ts +1 -0
  341. package/dist/api/ton/TonSignData.d.ts.map +1 -1
  342. package/dist/api/ton/TonSignMessage.d.ts +1 -0
  343. package/dist/api/ton/TonSignMessage.d.ts.map +1 -1
  344. package/dist/api/ton/TonSignProof.d.ts +1 -0
  345. package/dist/api/ton/TonSignProof.d.ts.map +1 -1
  346. package/dist/api/tron/TronGetAddress.d.ts +1 -0
  347. package/dist/api/tron/TronGetAddress.d.ts.map +1 -1
  348. package/dist/api/tron/TronSignMessage.d.ts +5 -0
  349. package/dist/api/tron/TronSignMessage.d.ts.map +1 -1
  350. package/dist/api/tron/TronSignTransaction.d.ts +1 -0
  351. package/dist/api/tron/TronSignTransaction.d.ts.map +1 -1
  352. package/dist/api/utils.d.ts +2 -1
  353. package/dist/api/utils.d.ts.map +1 -1
  354. package/dist/api/xrp/XrpGetAddress.d.ts +1 -0
  355. package/dist/api/xrp/XrpGetAddress.d.ts.map +1 -1
  356. package/dist/api/xrp/XrpSignTransaction.d.ts +1 -0
  357. package/dist/api/xrp/XrpSignTransaction.d.ts.map +1 -1
  358. package/dist/constants/index.d.ts +1 -1
  359. package/dist/constants/index.d.ts.map +1 -1
  360. package/dist/core/RequestQueue.d.ts.map +1 -1
  361. package/dist/core/deviceEventRegistration.d.ts +11 -0
  362. package/dist/core/deviceEventRegistration.d.ts.map +1 -0
  363. package/dist/core/index.d.ts +3 -1
  364. package/dist/core/index.d.ts.map +1 -1
  365. package/dist/data-manager/DataManager.d.ts +1 -0
  366. package/dist/data-manager/DataManager.d.ts.map +1 -1
  367. package/dist/data-manager/connectSettings.d.ts.map +1 -1
  368. package/dist/device/Device.d.ts +45 -14
  369. package/dist/device/Device.d.ts.map +1 -1
  370. package/dist/device/DeviceCommands.d.ts +8 -6
  371. package/dist/device/DeviceCommands.d.ts.map +1 -1
  372. package/dist/device/DeviceConnector.d.ts +1 -1
  373. package/dist/device/DeviceConnector.d.ts.map +1 -1
  374. package/dist/device/DeviceFeaturesState.d.ts +3 -0
  375. package/dist/device/DeviceFeaturesState.d.ts.map +1 -0
  376. package/dist/device/DevicePool.d.ts +5 -2
  377. package/dist/device/DevicePool.d.ts.map +1 -1
  378. package/dist/device/DeviceStateMapper.d.ts +13 -0
  379. package/dist/device/DeviceStateMapper.d.ts.map +1 -0
  380. package/dist/device/DeviceStateProjector.d.ts +7 -0
  381. package/dist/device/DeviceStateProjector.d.ts.map +1 -0
  382. package/dist/device/DeviceStateStore.d.ts +21 -0
  383. package/dist/device/DeviceStateStore.d.ts.map +1 -0
  384. package/dist/device/DeviceWalletSessionStore.d.ts +27 -0
  385. package/dist/device/DeviceWalletSessionStore.d.ts.map +1 -0
  386. package/dist/device/cloneDeviceState.d.ts +2 -0
  387. package/dist/device/cloneDeviceState.d.ts.map +1 -0
  388. package/dist/device/deviceIdentity.d.ts +5 -0
  389. package/dist/device/deviceIdentity.d.ts.map +1 -0
  390. package/dist/deviceProfile/buildDeviceFeatures.d.ts +9 -3
  391. package/dist/deviceProfile/buildDeviceFeatures.d.ts.map +1 -1
  392. package/dist/deviceProfile/index.d.ts +0 -1
  393. package/dist/deviceProfile/index.d.ts.map +1 -1
  394. package/dist/deviceProfile/protocolV2DeviceIdentity.d.ts +7 -0
  395. package/dist/deviceProfile/protocolV2DeviceIdentity.d.ts.map +1 -0
  396. package/dist/events/device.d.ts +12 -2
  397. package/dist/events/device.d.ts.map +1 -1
  398. package/dist/events/logBlockEvent.d.ts +2 -0
  399. package/dist/events/logBlockEvent.d.ts.map +1 -1
  400. package/dist/events/ui-request.d.ts +19 -2
  401. package/dist/events/ui-request.d.ts.map +1 -1
  402. package/dist/index.d.ts +1564 -739
  403. package/dist/index.d.ts.map +1 -1
  404. package/dist/index.js +9212 -3918
  405. package/dist/inject.d.ts.map +1 -1
  406. package/dist/lowLevelInject.d.ts.map +1 -1
  407. package/dist/protocols/protocol-v2/deviceSession.d.ts +7 -0
  408. package/dist/protocols/protocol-v2/deviceSession.d.ts.map +1 -0
  409. package/dist/protocols/protocol-v2/features.d.ts +25 -17
  410. package/dist/protocols/protocol-v2/features.d.ts.map +1 -1
  411. package/dist/protocols/protocol-v2/index.d.ts +3 -2
  412. package/dist/protocols/protocol-v2/index.d.ts.map +1 -1
  413. package/dist/protocols/protocol-v2/lockedError.d.ts +2 -0
  414. package/dist/protocols/protocol-v2/lockedError.d.ts.map +1 -0
  415. package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts +17 -0
  416. package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts.map +1 -0
  417. package/dist/protocols/protocol-v2/uiInteraction.d.ts +39 -0
  418. package/dist/protocols/protocol-v2/uiInteraction.d.ts.map +1 -0
  419. package/dist/protocols/protocol-v2/unlockPolicy.d.ts +4 -0
  420. package/dist/protocols/protocol-v2/unlockPolicy.d.ts.map +1 -0
  421. package/dist/protocols/protocol-v2/unlockRetry.d.ts +10 -0
  422. package/dist/protocols/protocol-v2/unlockRetry.d.ts.map +1 -0
  423. package/dist/protocols/protocol-v2/walletSession.d.ts +22 -0
  424. package/dist/protocols/protocol-v2/walletSession.d.ts.map +1 -0
  425. package/dist/topLevelInject.d.ts.map +1 -1
  426. package/dist/types/api/checkAllFirmwareRelease.d.ts +29 -4
  427. package/dist/types/api/checkAllFirmwareRelease.d.ts.map +1 -1
  428. package/dist/types/api/deviceSettings.d.ts +11 -2
  429. package/dist/types/api/deviceSettings.d.ts.map +1 -1
  430. package/dist/types/api/deviceUnlock.d.ts +1 -1
  431. package/dist/types/api/deviceUnlock.d.ts.map +1 -1
  432. package/dist/types/api/deviceUpdateBootloader.d.ts +6 -0
  433. package/dist/types/api/deviceUpdateBootloader.d.ts.map +1 -1
  434. package/dist/types/api/export.d.ts +6 -2
  435. package/dist/types/api/export.d.ts.map +1 -1
  436. package/dist/types/api/firmwareUpdate.d.ts +75 -1
  437. package/dist/types/api/firmwareUpdate.d.ts.map +1 -1
  438. package/dist/types/api/firmwareUpdateCapabilities.d.ts +9 -0
  439. package/dist/types/api/firmwareUpdateCapabilities.d.ts.map +1 -0
  440. package/dist/types/api/firmwareUpdatePlan.d.ts +28 -0
  441. package/dist/types/api/firmwareUpdatePlan.d.ts.map +1 -0
  442. package/dist/types/api/firmwareUpdatePreparedPlan.d.ts +42 -0
  443. package/dist/types/api/firmwareUpdatePreparedPlan.d.ts.map +1 -0
  444. package/dist/types/api/getDeviceState.d.ts +12 -0
  445. package/dist/types/api/getDeviceState.d.ts.map +1 -0
  446. package/dist/types/api/getFeatures.d.ts.map +1 -1
  447. package/dist/types/api/getOnekeyFeatures.d.ts.map +1 -1
  448. package/dist/types/api/getPassphraseState.d.ts +2 -10
  449. package/dist/types/api/getPassphraseState.d.ts.map +1 -1
  450. package/dist/types/api/index.d.ts +27 -31
  451. package/dist/types/api/index.d.ts.map +1 -1
  452. package/dist/types/api/kaspaSignTransaction.d.ts +42 -4
  453. package/dist/types/api/kaspaSignTransaction.d.ts.map +1 -1
  454. package/dist/types/api/openWalletSession.d.ts +35 -0
  455. package/dist/types/api/openWalletSession.d.ts.map +1 -0
  456. package/dist/types/api/protocolV2.d.ts +15 -84
  457. package/dist/types/api/protocolV2.d.ts.map +1 -1
  458. package/dist/types/api/sessionCache.d.ts +13 -0
  459. package/dist/types/api/sessionCache.d.ts.map +1 -0
  460. package/dist/types/device.d.ts +132 -8
  461. package/dist/types/device.d.ts.map +1 -1
  462. package/dist/types/params.d.ts.map +1 -1
  463. package/dist/types/settings.d.ts +20 -14
  464. package/dist/types/settings.d.ts.map +1 -1
  465. package/dist/utils/assets.d.ts +2 -1
  466. package/dist/utils/assets.d.ts.map +1 -1
  467. package/dist/utils/deviceFeaturesCompat.d.ts +13 -0
  468. package/dist/utils/deviceFeaturesCompat.d.ts.map +1 -0
  469. package/dist/utils/deviceFeaturesUtils.d.ts +6 -3
  470. package/dist/utils/deviceFeaturesUtils.d.ts.map +1 -1
  471. package/dist/utils/deviceInfoUtils.d.ts +9 -9
  472. package/dist/utils/deviceInfoUtils.d.ts.map +1 -1
  473. package/dist/utils/deviceSettings.d.ts +38 -7
  474. package/dist/utils/deviceSettings.d.ts.map +1 -1
  475. package/dist/utils/deviceVersionUtils.d.ts +7 -5
  476. package/dist/utils/deviceVersionUtils.d.ts.map +1 -1
  477. package/dist/utils/homescreen.d.ts.map +1 -1
  478. package/dist/utils/index.d.ts +5 -2
  479. package/dist/utils/index.d.ts.map +1 -1
  480. package/dist/utils/networkUtils.d.ts +10 -1
  481. package/dist/utils/networkUtils.d.ts.map +1 -1
  482. package/dist/utils/patch.d.ts +1 -1
  483. package/dist/utils/patch.d.ts.map +1 -1
  484. package/dist/utils/pro2Wallpaper.d.ts +12 -0
  485. package/dist/utils/pro2Wallpaper.d.ts.map +1 -0
  486. package/dist/utils/tracing.d.ts.map +1 -1
  487. package/package.json +4 -4
  488. package/src/api/BaseMethod.ts +52 -17
  489. package/src/api/CheckAllFirmwareRelease.ts +344 -4
  490. package/src/api/CheckBootloaderRelease.ts +1 -2
  491. package/src/api/CheckFirmwareRelease.ts +1 -2
  492. package/src/api/CipherKeyValue.ts +4 -0
  493. package/src/api/ClearSessionCache.ts +32 -0
  494. package/src/api/DirList.ts +9 -4
  495. package/src/api/DirMake.ts +7 -4
  496. package/src/api/DirRemove.ts +7 -4
  497. package/src/api/FileDelete.ts +7 -4
  498. package/src/api/FileRead.ts +15 -9
  499. package/src/api/FileWrite.ts +26 -181
  500. package/src/api/FirmwareUpdate.ts +24 -13
  501. package/src/api/FirmwareUpdateV2.ts +383 -113
  502. package/src/api/FirmwareUpdateV3.ts +266 -68
  503. package/src/api/FirmwareUpdateV4.ts +1222 -635
  504. package/src/api/GetDeviceState.ts +59 -0
  505. package/src/api/GetFeatures.ts +6 -4
  506. package/src/api/GetOnekeyFeatures.ts +1 -75
  507. package/src/api/GetPassphraseState.ts +30 -21
  508. package/src/api/OpenWalletSession.ts +214 -0
  509. package/src/api/PathInfo.ts +9 -4
  510. package/src/api/PromptWebDeviceAccess.ts +2 -7
  511. package/src/api/SearchDevices.ts +29 -4
  512. package/src/api/UploadPortfolio.ts +40 -0
  513. package/src/api/alephium/AlephiumGetAddress.ts +0 -4
  514. package/src/api/alephium/AlephiumSignMessage.ts +0 -4
  515. package/src/api/alephium/AlephiumSignTransaction.ts +2 -6
  516. package/src/api/algo/AlgoGetAddress.ts +4 -0
  517. package/src/api/algo/AlgoSignTransaction.ts +4 -0
  518. package/src/api/allnetwork/AllNetworkGetAddressBase.ts +9 -21
  519. package/src/api/aptos/AptosGetAddress.ts +4 -0
  520. package/src/api/aptos/AptosGetPublicKey.ts +4 -0
  521. package/src/api/aptos/AptosSignInMessage.ts +4 -0
  522. package/src/api/aptos/AptosSignMessage.ts +4 -0
  523. package/src/api/aptos/AptosSignTransaction.ts +4 -0
  524. package/src/api/benfen/BenfenGetAddress.ts +11 -7
  525. package/src/api/benfen/BenfenGetPublicKey.ts +0 -4
  526. package/src/api/benfen/BenfenSignMessage.ts +0 -4
  527. package/src/api/benfen/BenfenSignTransaction.ts +0 -4
  528. package/src/api/btc/BTCGetAddress.ts +8 -1
  529. package/src/api/btc/BTCGetPublicKey.ts +9 -2
  530. package/src/api/btc/BTCSignMessage.ts +8 -1
  531. package/src/api/btc/BTCSignPsbt.ts +4 -0
  532. package/src/api/btc/BTCSignTransaction.ts +8 -1
  533. package/src/api/btc/BTCVerifyMessage.ts +8 -1
  534. package/src/api/btc/helpers/versionLimit.ts +7 -4
  535. package/src/api/cardano/CardanoGetAddress.ts +4 -0
  536. package/src/api/cardano/CardanoGetPublicKey.ts +4 -0
  537. package/src/api/cardano/CardanoSignMessage.ts +5 -1
  538. package/src/api/cardano/CardanoSignTransaction.ts +5 -1
  539. package/src/api/conflux/ConfluxGetAddress.ts +6 -0
  540. package/src/api/conflux/ConfluxSignMessage.ts +6 -0
  541. package/src/api/conflux/ConfluxSignMessageCIP23.ts +6 -0
  542. package/src/api/conflux/ConfluxSignTransaction.ts +8 -5
  543. package/src/api/cosmos/CosmosGetAddress.ts +4 -0
  544. package/src/api/cosmos/CosmosGetPublicKey.ts +4 -0
  545. package/src/api/cosmos/CosmosSignTransaction.ts +4 -0
  546. package/src/api/device/DeviceCancel.ts +5 -0
  547. package/src/api/device/DeviceChangePin.ts +28 -0
  548. package/src/api/device/DeviceFullyUploadResource.ts +4 -5
  549. package/src/api/device/DeviceLock.ts +5 -0
  550. package/src/api/device/DeviceRebootToBoardloader.ts +5 -0
  551. package/src/api/device/DeviceRebootToBootloader.ts +5 -0
  552. package/src/api/device/DeviceSettings.ts +194 -1
  553. package/src/api/device/DeviceSupportFeatures.ts +4 -0
  554. package/src/api/device/DeviceUnlock.ts +13 -0
  555. package/src/api/device/DeviceUpdateBootloader.ts +123 -8
  556. package/src/api/device/DeviceWipe.ts +25 -0
  557. package/src/api/device/PreInitialize.ts +4 -0
  558. package/src/api/dynex/DnxGetAddress.ts +0 -6
  559. package/src/api/dynex/DnxSignTransaction.ts +0 -6
  560. package/src/api/evm/EVMGetAddress.ts +6 -2
  561. package/src/api/evm/EVMGetPublicKey.ts +6 -2
  562. package/src/api/evm/EVMSignMessage.ts +6 -2
  563. package/src/api/evm/EVMSignMessageEIP712.ts +1 -11
  564. package/src/api/evm/EVMSignTransaction.ts +6 -2
  565. package/src/api/evm/EVMSignTypedData.ts +42 -50
  566. package/src/api/evm/EVMVerifyMessage.ts +6 -2
  567. package/src/api/evm/legacyV1/getAddress.ts +2 -2
  568. package/src/api/evm/legacyV1/getPublicKey.ts +2 -2
  569. package/src/api/evm/legacyV1/signMessage.ts +2 -2
  570. package/src/api/evm/legacyV1/signTypedData.ts +2 -2
  571. package/src/api/evm/legacyV1/signTypedHash.ts +2 -2
  572. package/src/api/evm/legacyV1/verifyMessage.ts +2 -2
  573. package/src/api/evm/protocol.ts +6 -0
  574. package/src/api/filecoin/FilecoinGetAddress.ts +4 -0
  575. package/src/api/filecoin/FilecoinSignTransaction.ts +4 -0
  576. package/src/api/firmware/FirmwareArtifactSource.ts +278 -0
  577. package/src/api/firmware/FirmwareHostBinding.ts +100 -0
  578. package/src/api/firmware/FirmwarePreparationError.ts +12 -0
  579. package/src/api/firmware/FirmwareUpdateBaseMethod.ts +75 -4
  580. package/src/api/firmware/FirmwareUpdateCapabilities.ts +9 -0
  581. package/src/api/firmware/FirmwareUpdatePlan.ts +745 -0
  582. package/src/api/firmware/FirmwareUpdatePreparedPlan.ts +392 -0
  583. package/src/api/firmware/getBinary.ts +8 -3
  584. package/src/api/firmware/updateBootloader.ts +19 -4
  585. package/src/api/firmware/uploadFirmware.ts +140 -22
  586. package/src/api/helpers/batchGetPublickeys.ts +2 -2
  587. package/src/api/helpers/filesystemValidation.ts +61 -0
  588. package/src/api/helpers/paramsValidator.ts +1 -1
  589. package/src/api/helpers/protocolV2FileWrite.ts +199 -0
  590. package/src/api/index.ts +8 -26
  591. package/src/api/kaspa/KaspaGetAddress.ts +7 -0
  592. package/src/api/kaspa/KaspaSignTransaction.ts +380 -29
  593. package/src/api/kaspa/helpers/TransferSerialize.ts +17 -7
  594. package/src/api/lightning/LnurlAuth.ts +0 -4
  595. package/src/api/near/NearGetAddress.ts +4 -0
  596. package/src/api/near/NearSignTransaction.ts +4 -0
  597. package/src/api/nem/NEMGetAddress.ts +4 -0
  598. package/src/api/nem/NEMSignTransaction.ts +4 -0
  599. package/src/api/neo/NeoGetAddress.ts +0 -4
  600. package/src/api/neo/NeoSignTransaction.ts +0 -4
  601. package/src/api/nervos/NervosGetAddress.ts +0 -4
  602. package/src/api/nervos/NervosSignTransaction.ts +2 -6
  603. package/src/api/nexa/NexaGetAddress.ts +0 -4
  604. package/src/api/nexa/NexaSignTransaction.ts +3 -5
  605. package/src/api/nostr/NostrDecryptMessage.ts +4 -0
  606. package/src/api/nostr/NostrEncryptMessage.ts +4 -0
  607. package/src/api/nostr/NostrGetPublicKey.ts +4 -0
  608. package/src/api/nostr/NostrSignEvent.ts +4 -0
  609. package/src/api/nostr/NostrSignSchnorr.ts +4 -0
  610. package/src/api/polkadot/PolkadotGetAddress.ts +4 -0
  611. package/src/api/polkadot/PolkadotSignTransaction.ts +4 -0
  612. package/src/api/protocol-v2/DeviceFactoryInfoGet.ts +5 -2
  613. package/src/api/protocol-v2/DeviceFactoryInfoSet.ts +5 -2
  614. package/src/api/protocol-v2/DeviceFirmwareUpdate.ts +8 -5
  615. package/src/api/protocol-v2/DeviceGetFirmwareUpdateStatus.ts +10 -6
  616. package/src/api/protocol-v2/DeviceGetOnboardingStatus.ts +21 -0
  617. package/src/api/protocol-v2/DeviceInfoGet.ts +8 -15
  618. package/src/api/protocol-v2/DeviceReboot.ts +7 -3
  619. package/src/api/protocol-v2/DeviceStatusGet.ts +19 -0
  620. package/src/api/protocol-v2/DeviceUploadWallpaper.ts +134 -0
  621. package/src/api/protocol-v2/FilesystemFormat.ts +9 -3
  622. package/src/api/protocol-v2/FilesystemPermissionFix.ts +5 -2
  623. package/src/api/protocol-v2/Ping.ts +37 -3
  624. package/src/api/protocol-v2/ProtocolInfoRequest.ts +5 -2
  625. package/src/api/protocol-v2/helpers.ts +17 -17
  626. package/src/api/scdo/ScdoGetAddress.ts +0 -4
  627. package/src/api/scdo/ScdoSignMessage.ts +0 -4
  628. package/src/api/scdo/ScdoSignTransaction.ts +0 -4
  629. package/src/api/solana/SolGetAddress.ts +4 -0
  630. package/src/api/solana/SolSignMessage.ts +4 -0
  631. package/src/api/solana/SolSignOffchainMessage.ts +4 -0
  632. package/src/api/solana/SolSignTransaction.ts +4 -0
  633. package/src/api/starcoin/StarcoinGetAddress.ts +4 -0
  634. package/src/api/starcoin/StarcoinGetPublicKey.ts +4 -0
  635. package/src/api/starcoin/StarcoinSignMessage.ts +4 -0
  636. package/src/api/starcoin/StarcoinSignTransaction.ts +4 -0
  637. package/src/api/starcoin/StarcoinVerifyMessage.ts +4 -0
  638. package/src/api/stellar/StellarGetAddress.ts +1 -10
  639. package/src/api/stellar/StellarSignTransaction.ts +1 -14
  640. package/src/api/sui/SuiGetAddress.ts +4 -0
  641. package/src/api/sui/SuiGetPublicKey.ts +4 -0
  642. package/src/api/sui/SuiSignMessage.ts +4 -0
  643. package/src/api/sui/SuiSignTransaction.ts +4 -0
  644. package/src/api/ton/TonGetAddress.ts +4 -0
  645. package/src/api/ton/TonSignData.ts +5 -1
  646. package/src/api/ton/TonSignMessage.ts +4 -0
  647. package/src/api/ton/TonSignProof.ts +4 -0
  648. package/src/api/tron/TronGetAddress.ts +4 -0
  649. package/src/api/tron/TronSignMessage.ts +18 -7
  650. package/src/api/tron/TronSignTransaction.ts +4 -0
  651. package/src/api/utils.ts +7 -3
  652. package/src/api/xrp/XrpGetAddress.ts +4 -0
  653. package/src/api/xrp/XrpSignTransaction.ts +5 -1
  654. package/src/constants/index.ts +1 -4
  655. package/src/core/RequestQueue.ts +1 -0
  656. package/src/core/deviceEventRegistration.ts +23 -0
  657. package/src/core/index.ts +164 -53
  658. package/src/data/messages/messages-protocol-v2.json +1155 -483
  659. package/src/data/messages/messages.json +286 -1
  660. package/src/data-manager/DataManager.ts +39 -39
  661. package/src/data-manager/TransportManager.ts +1 -1
  662. package/src/data-manager/connectSettings.ts +15 -0
  663. package/src/device/Device.ts +652 -281
  664. package/src/device/DeviceCommands.ts +166 -158
  665. package/src/device/DeviceConnector.ts +10 -7
  666. package/src/device/DeviceFeaturesState.ts +25 -0
  667. package/src/device/DevicePool.ts +66 -16
  668. package/src/device/DeviceStateMapper.ts +374 -0
  669. package/src/device/DeviceStateProjector.ts +94 -0
  670. package/src/device/DeviceStateStore.ts +201 -0
  671. package/src/device/DeviceWalletSessionStore.ts +144 -0
  672. package/src/device/cloneDeviceState.ts +39 -0
  673. package/src/device/deviceIdentity.ts +18 -0
  674. package/src/deviceProfile/buildDeviceFeatures.ts +224 -190
  675. package/src/deviceProfile/index.ts +0 -1
  676. package/src/deviceProfile/protocolV2DeviceIdentity.ts +32 -0
  677. package/src/events/device.ts +18 -1
  678. package/src/events/logBlockEvent.ts +79 -2
  679. package/src/events/ui-request.ts +25 -2
  680. package/src/index.ts +5 -0
  681. package/src/inject.ts +37 -43
  682. package/src/lowLevelInject.ts +5 -1
  683. package/src/protocols/protocol-v2/deviceSession.ts +24 -0
  684. package/src/protocols/protocol-v2/features.ts +96 -32
  685. package/src/protocols/protocol-v2/firmware.ts +1 -1
  686. package/src/protocols/protocol-v2/index.ts +8 -1
  687. package/src/protocols/protocol-v2/lockedError.ts +10 -0
  688. package/src/protocols/protocol-v2/settingsUnlockPolicy.ts +65 -0
  689. package/src/protocols/protocol-v2/uiInteraction.ts +210 -0
  690. package/src/protocols/protocol-v2/unlockPolicy.ts +105 -0
  691. package/src/protocols/protocol-v2/unlockRetry.ts +109 -0
  692. package/src/protocols/protocol-v2/walletSession.ts +285 -0
  693. package/src/topLevelInject.ts +5 -1
  694. package/src/types/api/checkAllFirmwareRelease.ts +50 -4
  695. package/src/types/api/deviceSettings.ts +26 -2
  696. package/src/types/api/deviceUnlock.ts +1 -1
  697. package/src/types/api/deviceUpdateBootloader.ts +6 -0
  698. package/src/types/api/export.ts +26 -0
  699. package/src/types/api/firmwareUpdate.ts +99 -5
  700. package/src/types/api/firmwareUpdateCapabilities.ts +9 -0
  701. package/src/types/api/firmwareUpdatePlan.ts +38 -0
  702. package/src/types/api/firmwareUpdatePreparedPlan.ts +53 -0
  703. package/src/types/api/getDeviceState.ts +19 -0
  704. package/src/types/api/getFeatures.ts +3 -0
  705. package/src/types/api/getOnekeyFeatures.ts +3 -0
  706. package/src/types/api/getPassphraseState.ts +9 -11
  707. package/src/types/api/index.ts +39 -64
  708. package/src/types/api/kaspaSignTransaction.ts +60 -4
  709. package/src/types/api/openWalletSession.ts +54 -0
  710. package/src/types/api/protocolV2.ts +24 -145
  711. package/src/types/api/sessionCache.ts +19 -0
  712. package/src/types/device.ts +185 -7
  713. package/src/types/params.ts +3 -2
  714. package/src/types/settings.ts +30 -16
  715. package/src/utils/assets.ts +4 -1
  716. package/src/utils/deviceFeaturesCompat.ts +180 -0
  717. package/src/utils/deviceFeaturesUtils.ts +52 -45
  718. package/src/utils/deviceInfoUtils.ts +27 -69
  719. package/src/utils/deviceSettings.ts +171 -39
  720. package/src/utils/deviceVersionUtils.ts +25 -44
  721. package/src/utils/findDefectiveBatchDevice.ts +3 -3
  722. package/src/utils/homescreen.ts +10 -0
  723. package/src/utils/index.ts +21 -2
  724. package/src/utils/networkUtils.ts +274 -16
  725. package/src/utils/pro2Wallpaper.ts +103 -0
  726. package/src/utils/tracing.ts +3 -1
  727. package/tsconfig.type-tests.json +12 -0
  728. package/dist/api/GetDeviceInfo.d.ts +0 -9
  729. package/dist/api/GetDeviceInfo.d.ts.map +0 -1
  730. package/dist/api/protocol-v2/FilesystemDiskControl.d.ts +0 -13
  731. package/dist/api/protocol-v2/FilesystemDiskControl.d.ts.map +0 -1
  732. package/dist/deviceProfile/buildDeviceProfile.d.ts +0 -21
  733. package/dist/deviceProfile/buildDeviceProfile.d.ts.map +0 -1
  734. package/dist/types/api/getDeviceInfo.d.ts +0 -87
  735. package/dist/types/api/getDeviceInfo.d.ts.map +0 -1
  736. package/src/api/GetDeviceInfo.ts +0 -145
  737. package/src/api/protocol-v2/FilesystemDiskControl.ts +0 -50
  738. package/src/deviceProfile/buildDeviceProfile.ts +0 -352
  739. package/src/types/api/getDeviceInfo.ts +0 -101
@@ -14,24 +14,45 @@ import { BaseMethod } from './BaseMethod';
14
14
  import { validateParams } from './helpers/paramsValidator';
15
15
  import { DevicePool } from '../device/DevicePool';
16
16
  import { getBinary, getInfo, getSysResourceBinary } from './firmware/getBinary';
17
- import { updateResources, uploadFirmware } from './firmware/uploadFirmware';
17
+ import { normalizeFirmwarePreparationError } from './firmware/FirmwarePreparationError';
18
18
  import {
19
- LoggerNames,
20
- getDeviceBootloaderVersion,
21
- getDeviceFirmwareVersion,
22
- getDeviceUUID,
23
- getLogger,
24
- wait,
25
- } from '../utils';
19
+ updateResources,
20
+ updateResourcesFromSources,
21
+ uploadFirmwareFromSource,
22
+ } from './firmware/uploadFirmware';
23
+ import { BOOTLOADER_POLL_INITIALIZE_TIMEOUT_MS } from './firmware/FirmwareUpdateBaseMethod';
24
+ import { LoggerNames, getDeviceUUID, getLogger, wait } from '../utils';
26
25
  import { FirmwareUpdateTipMessage, createUiMessage } from '../events/ui-request';
27
26
  import { DeviceModelToTypes } from '../types';
28
27
  import { DataManager } from '../data-manager';
29
28
  import { DEVICE } from '../events';
29
+ import { type FirmwareByteSource, openFirmwareByteSource } from './firmware/FirmwareArtifactSource';
30
+ import { resolveFirmwareUpdateHostBinding } from './firmware/FirmwareHostBinding';
31
+ import {
32
+ assertFirmwareUpdatePreparedPlanBinding,
33
+ assertFirmwareUpdatePreparedPlanDeviceIdentity,
34
+ getFirmwareUpdateResourceName,
35
+ } from './firmware/FirmwareUpdatePreparedPlan';
30
36
 
31
37
  import type { Features, KnownDevice } from '../types';
38
+ import type { FirmwareBinary } from './firmware/getBinary';
39
+ import type {
40
+ FirmwareArtifactReader,
41
+ FirmwareArtifactReference,
42
+ } from '../types/api/firmwareUpdate';
43
+ import type { FirmwareUpdatePreparedPlan } from '../types/api/firmwareUpdatePreparedPlan';
32
44
 
33
45
  type Params = {
34
46
  binary?: ArrayBuffer;
47
+ artifact?: FirmwareArtifactReference;
48
+ resourceArtifact?: FirmwareArtifactReference;
49
+ resourceEntries?: Array<{
50
+ entryName: string;
51
+ artifact: FirmwareArtifactReference;
52
+ }>;
53
+ artifactReader?: FirmwareArtifactReader;
54
+ preparedPlan?: FirmwareUpdatePreparedPlan;
55
+ platform?: FirmwareUpdatePreparedPlan['platform'];
35
56
  version?: number[];
36
57
  updateType: 'firmware' | 'ble';
37
58
  forcedUpdateRes?: boolean;
@@ -41,6 +62,84 @@ type Params = {
41
62
 
42
63
  const Log = getLogger(LoggerNames.Method);
43
64
 
65
+ const FIRMWARE_DOWNLOAD_REQUEST_OPTIONS = {
66
+ connectTimeoutMs: 60_000,
67
+ readTimeoutMs: 60_000,
68
+ overallTimeoutMs: 180_000,
69
+ maxRetries: 2,
70
+ retryDelayMs: 500,
71
+ } as const;
72
+
73
+ const normalizeFirmwareBinary = (binary: unknown): FirmwareBinary | undefined => {
74
+ if (typeof binary !== 'object' || binary === null) {
75
+ return undefined;
76
+ }
77
+
78
+ const isNodeBuffer =
79
+ typeof Buffer !== 'undefined' &&
80
+ typeof Buffer.isBuffer === 'function' &&
81
+ Buffer.isBuffer(binary);
82
+ if (isNodeBuffer) {
83
+ return binary.byteLength > 0 ? binary : undefined;
84
+ }
85
+
86
+ if (typeof ArrayBuffer !== 'undefined' && binary instanceof ArrayBuffer) {
87
+ return binary.byteLength > 0 ? binary : undefined;
88
+ }
89
+
90
+ if (
91
+ typeof ArrayBuffer !== 'undefined' &&
92
+ typeof ArrayBuffer.isView === 'function' &&
93
+ ArrayBuffer.isView(binary)
94
+ ) {
95
+ if (binary.byteLength <= 0) {
96
+ return undefined;
97
+ }
98
+ const source = new Uint8Array(binary.buffer, binary.byteOffset, binary.byteLength);
99
+ const normalized = new Uint8Array(binary.byteLength);
100
+ normalized.set(source);
101
+ return normalized.buffer;
102
+ }
103
+
104
+ const customBuffer = binary as {
105
+ [index: number]: unknown;
106
+ byteLength?: unknown;
107
+ constructor?: {
108
+ isBuffer?: (value: unknown) => boolean;
109
+ };
110
+ length?: unknown;
111
+ };
112
+ if (
113
+ typeof customBuffer.constructor?.isBuffer !== 'function' ||
114
+ !customBuffer.constructor.isBuffer(binary) ||
115
+ typeof customBuffer.byteLength !== 'number' ||
116
+ !Number.isSafeInteger(customBuffer.byteLength) ||
117
+ customBuffer.byteLength <= 0 ||
118
+ typeof customBuffer.length !== 'number' ||
119
+ customBuffer.length !== customBuffer.byteLength
120
+ ) {
121
+ return undefined;
122
+ }
123
+
124
+ const { byteLength } = customBuffer;
125
+ const normalized = new Uint8Array(byteLength);
126
+ for (let index = 0; index < byteLength; index += 1) {
127
+ const { [index]: byte } = customBuffer;
128
+ if (typeof byte !== 'number' || !Number.isInteger(byte) || byte < 0 || byte > 255) {
129
+ return undefined;
130
+ }
131
+ normalized[index] = byte;
132
+ }
133
+ return normalized.buffer;
134
+ };
135
+
136
+ const toArrayBuffer = (binary: FirmwareBinary): ArrayBuffer => {
137
+ if (binary instanceof ArrayBuffer) {
138
+ return binary;
139
+ }
140
+ return new Uint8Array(binary.buffer, binary.byteOffset, binary.byteLength).slice().buffer;
141
+ };
142
+
44
143
  export default class FirmwareUpdateV2 extends BaseMethod<Params> {
45
144
  checkPromise: Deferred<any> | null = null;
46
145
 
@@ -87,6 +186,38 @@ export default class FirmwareUpdateV2 extends BaseMethod<Params> {
87
186
  binary: payload.binary,
88
187
  };
89
188
  }
189
+
190
+ if ('artifact' in payload) {
191
+ const hostBinding = resolveFirmwareUpdateHostBinding(payload.hostBindingGeneration);
192
+ const target = payload.isUpdateBootloader ? 'bootloader' : payload.updateType;
193
+ const resourceBindings = [
194
+ ...(payload.resourceArtifact
195
+ ? [{ target: 'resource' as const, artifact: payload.resourceArtifact }]
196
+ : []),
197
+ ...(payload.resourceEntries ?? []).map(
198
+ (entry: { entryName: string; artifact: FirmwareArtifactReference }) => ({
199
+ target: 'resource' as const,
200
+ entryName: entry.entryName,
201
+ artifact: entry.artifact,
202
+ })
203
+ ),
204
+ ];
205
+ assertFirmwareUpdatePreparedPlanBinding({
206
+ preparedPlan: payload.preparedPlan,
207
+ executor: 'v2',
208
+ platform: payload.platform,
209
+ scopeTargets: [target, ...(target === 'firmware' ? (['resource'] as const) : [])],
210
+ bindings: [{ target, artifact: payload.artifact }, ...resourceBindings],
211
+ });
212
+ this.params = {
213
+ ...this.params,
214
+ preparedPlan: payload.preparedPlan,
215
+ artifact: payload.artifact,
216
+ resourceArtifact: payload.resourceArtifact,
217
+ resourceEntries: payload.resourceEntries,
218
+ artifactReader: hostBinding.artifactReader,
219
+ };
220
+ }
90
221
  }
91
222
 
92
223
  postTipMessage = (message: string) => {
@@ -122,6 +253,10 @@ export default class FirmwareUpdateV2 extends BaseMethod<Params> {
122
253
  this.checkPromise = createDeferred();
123
254
  const env = DataManager.getSettings('env');
124
255
  const isBleReconnect = connectId && DataManager.isBleConnect(env);
256
+ // Tracks the in-flight BLE probe so interval ticks never overlap: a superseded
257
+ // Initialize left pending on the V1 transport is exactly what later times out
258
+ // and used to tear down the connection mid-firmware-upload.
259
+ let bleProbeInFlight = false;
125
260
 
126
261
  Log.log('FirmwareUpdateV2 [checkDeviceToBootloader] isBleReconnect: ', isBleReconnect);
127
262
 
@@ -169,13 +304,18 @@ export default class FirmwareUpdateV2 extends BaseMethod<Params> {
169
304
  }
170
305
 
171
306
  if (isBleReconnect) {
307
+ if (bleProbeInFlight) return;
308
+ bleProbeInFlight = true;
172
309
  try {
173
310
  await this.device.deviceConnector?.acquire(
174
311
  this.device.originalDescriptor.id,
175
312
  null,
176
313
  true
177
314
  );
178
- await this.device.initialize();
315
+ // Bound each probe so a request the rebooting device never received
316
+ // frees the slot for the next tick instead of hanging into the
317
+ // 30s reboot budget.
318
+ await this.device.initialize({ timeoutMs: BOOTLOADER_POLL_INITIALIZE_TIMEOUT_MS });
179
319
  if (this.device.isBootloader()) {
180
320
  clearInterval(intervalTimer);
181
321
  this.checkPromise?.resolve(true);
@@ -183,6 +323,8 @@ export default class FirmwareUpdateV2 extends BaseMethod<Params> {
183
323
  } catch (e) {
184
324
  // ignore error because of device is not connected
185
325
  Log.log('catch Bluetooth error when device is restarting: ', e);
326
+ } finally {
327
+ bleProbeInFlight = false;
186
328
  }
187
329
  } else {
188
330
  await this._checkDeviceInBootloaderMode(connectId, intervalTimer, timeoutTimer);
@@ -223,22 +365,22 @@ export default class FirmwareUpdateV2 extends BaseMethod<Params> {
223
365
  return false;
224
366
  }
225
367
 
226
- isEnteredManuallyBoot(features: Features) {
368
+ isEnteredManuallyBoot() {
227
369
  const deviceType = this.device.getCurrentDeviceType();
228
370
  const isMini = deviceType === EDeviceType.Mini;
229
371
  const isBoot183ClassicUpBle =
230
372
  this.params.updateType === 'firmware' &&
231
373
  deviceType === EDeviceType.Classic &&
232
- getDeviceBootloaderVersion(features).join('.') === '1.8.3';
374
+ this.device.getCurrentBootloaderVersionString() === '1.8.3';
233
375
  return isMini || isBoot183ClassicUpBle;
234
376
  }
235
377
 
236
- isSupportResourceUpdate(features: Features, updateType: string) {
378
+ isSupportResourceUpdate(updateType: string) {
237
379
  if (updateType !== 'firmware') return false;
238
380
 
239
381
  const deviceType = this.device.getCurrentDeviceType();
240
382
  const isTouchMode = deviceType === EDeviceType.Touch || deviceType === EDeviceType.Pro;
241
- const currentVersion = getDeviceFirmwareVersion(features).join('.');
383
+ const currentVersion = this.device.getCurrentFirmwareVersionString() ?? '0.0.0';
242
384
 
243
385
  return isTouchMode && semver.gte(currentVersion, '3.2.0');
244
386
  }
@@ -250,7 +392,7 @@ export default class FirmwareUpdateV2 extends BaseMethod<Params> {
250
392
  checkVersionForCopyTouchResource(features: Features | undefined, firmwareType: EFirmwareType) {
251
393
  if (!features) return;
252
394
  const deviceType = this.device.getCurrentDeviceType();
253
- const currentVersion = getDeviceFirmwareVersion(features).join('.');
395
+ const currentVersion = this.device.getCurrentFirmwareVersionString() ?? '0.0.0';
254
396
  const targetVersion = this.params.version?.join('.');
255
397
  const { updateType } = this.params;
256
398
 
@@ -276,136 +418,264 @@ export default class FirmwareUpdateV2 extends BaseMethod<Params> {
276
418
  const { features, commands } = device;
277
419
  const deviceType = device.getCurrentDeviceType();
278
420
 
279
- // Protocol V2 (Pro2) 固件升级走 DeviceFirmwareUpdate 流程,禁止进入 legacy 入口
421
+ // Protocol V2 (Pro2) uses DeviceFirmwareUpdate and must not enter this legacy flow.
280
422
  if (device.isProtocolV2()) {
281
423
  throw ERRORS.TypedError(
282
424
  HardwareErrorCode.RuntimeError,
283
425
  'Protocol V2 firmware update must use firmwareUpdateV4'
284
426
  );
285
427
  }
428
+ if (params.preparedPlan) {
429
+ assertFirmwareUpdatePreparedPlanDeviceIdentity({
430
+ preparedPlan: params.preparedPlan,
431
+ deviceIdentity: getDeviceUUID(features) || undefined,
432
+ });
433
+ }
286
434
 
287
435
  const deviceFirmwareType = device.getCurrentFirmwareType();
288
436
  const firmwareType = params.firmwareType ?? deviceFirmwareType;
289
437
 
290
438
  this.checkVersionForCopyTouchResource(features, firmwareType);
291
439
 
292
- if (!device.isBootloader() && features) {
293
- const uuid = getDeviceUUID(features);
294
- // should go to bootloader mode manually
295
- if (this.isEnteredManuallyBoot(features)) {
296
- return Promise.reject(ERRORS.TypedError(HardwareErrorCode.FirmwareUpdateManuallyEnterBoot));
297
- }
440
+ let preparedSource: FirmwareByteSource | undefined;
441
+ try {
442
+ const acquireFirmwareSource = async (): Promise<FirmwareByteSource> => {
443
+ try {
444
+ if (preparedSource) {
445
+ return preparedSource;
446
+ }
447
+
448
+ if (params.binary !== undefined) {
449
+ const binary = normalizeFirmwareBinary(params.binary);
450
+ if (!binary) {
451
+ throw new Error('firmware binary is empty or invalid');
452
+ }
453
+ const source = await openFirmwareByteSource({
454
+ binary: toArrayBuffer(binary),
455
+ });
456
+ if (!source) {
457
+ throw new Error('firmware binary is empty or invalid');
458
+ }
459
+ preparedSource = source;
460
+ return source;
461
+ }
298
462
 
299
- // check & upgrade firmware resource
300
- if (features && this.isSupportResourceUpdate(features, params.updateType)) {
301
- this.postTipMessage('CheckLatestUiResource');
302
- const resourceUrl = DataManager.getSysResourcesLatestRelease({
303
- features,
304
- forcedUpdateRes: params.forcedUpdateRes,
305
- firmwareType,
306
- });
307
- if (resourceUrl) {
308
- this.postTipMessage('DownloadLatestUiResource');
309
- const resource = await getSysResourceBinary(resourceUrl);
310
- this.postTipMessage('DownloadLatestUiResourceSuccess');
311
- if (resource) {
312
- await updateResources(
313
- this.device.getCommands().typedCall.bind(this.device.getCommands()),
314
- this.postMessage,
315
- device,
316
- resource.binary
463
+ if (params.artifact) {
464
+ const source = await openFirmwareByteSource({
465
+ artifact: params.artifact,
466
+ reader: params.artifactReader,
467
+ });
468
+ if (!source) {
469
+ throw new Error('firmware artifact is not prepared');
470
+ }
471
+ preparedSource = source;
472
+ return source;
473
+ }
474
+
475
+ if (!device.features) {
476
+ throw ERRORS.TypedError(
477
+ HardwareErrorCode.RuntimeError,
478
+ 'no features found for this device'
317
479
  );
318
480
  }
319
- }
320
- }
321
481
 
322
- // check if the device commands has been disposed
323
- this.device?.commands?.checkDisposed();
482
+ if (
483
+ params.artifactReader ||
484
+ DataManager.getSettings('firmwareManifestMode') === 'external-only'
485
+ ) {
486
+ throw ERRORS.TypedError(
487
+ HardwareErrorCode.RuntimeError,
488
+ 'Firmware must be prepared by the external firmware host',
489
+ {
490
+ firmwareUpdateCode: 'FirmwareArtifactsNotPrepared',
491
+ artifactName: 'firmware',
492
+ }
493
+ );
494
+ }
324
495
 
325
- // auto go to bootloader mode
326
- try {
327
- this.postTipMessage('AutoRebootToBootloader');
328
- const bootRes = await commands.typedCall('DeviceBackToBoot', 'Success');
329
- // @ts-expect-error
330
- if (bootRes.type === 'CallMethodError') {
331
- throw ERRORS.TypedError(HardwareErrorCode.FirmwareUpdateAutoEnterBootFailure);
496
+ this.postTipMessage('DownloadFirmware');
497
+ const firmware = await getBinary({
498
+ features: device.features,
499
+ version: params.version,
500
+ updateType: params.updateType,
501
+ isUpdateBootloader: params.isUpdateBootloader,
502
+ firmwareType,
503
+ requestOptions: FIRMWARE_DOWNLOAD_REQUEST_OPTIONS,
504
+ });
505
+ const binary = normalizeFirmwareBinary(firmware.binary);
506
+ if (!binary) {
507
+ throw new Error('downloaded firmware binary is empty or invalid');
508
+ }
509
+ const source = await openFirmwareByteSource({
510
+ binary: toArrayBuffer(binary),
511
+ });
512
+ if (!source) {
513
+ throw new Error('downloaded firmware binary is empty or invalid');
514
+ }
515
+ preparedSource = source;
516
+ this.postTipMessage('DownloadFirmwareSuccess');
517
+ return source;
518
+ } catch (err) {
519
+ throw normalizeFirmwarePreparationError(err);
332
520
  }
333
- this.postTipMessage('GoToBootloaderSuccess');
334
- this.checkDeviceToBootloader(this.payload.connectId);
521
+ };
335
522
 
336
- // force clean classic device cache so that the device can initialize again
337
- if (DeviceModelToTypes.model_classic.includes(deviceType)) {
338
- DevicePool.clearDeviceCache(uuid);
523
+ if (!device.isBootloader() && features) {
524
+ const serialNo = device.getCurrentSerialNo();
525
+ // should go to bootloader mode manually
526
+ if (this.isEnteredManuallyBoot()) {
527
+ throw ERRORS.TypedError(HardwareErrorCode.FirmwareUpdateManuallyEnterBoot);
339
528
  }
340
- delete DevicePool.devicesCache[''];
341
- await this.checkPromise?.promise;
342
- this.checkPromise = null;
343
-
344
- // check if the device commands has been disposed
345
- this.device?.commands?.checkDisposed();
346
529
 
347
- /**
348
- * Touch 1 with bootloader v2.5.0 issue: BLE chip need more time for looking up name, here change the delay time to 3000ms after rebooting.
349
- */
350
- const isTouch = DeviceModelToTypes.model_touch.includes(deviceType);
351
- await wait(isTouch ? 3000 : 1500);
352
- } catch (e) {
353
- if (e instanceof HardwareError) {
354
- return Promise.reject(e);
530
+ // All network-backed input must be ready before the first device mutation.
531
+ await acquireFirmwareSource();
532
+
533
+ // check & upgrade firmware resource
534
+ if (this.isSupportResourceUpdate(params.updateType)) {
535
+ this.postTipMessage('CheckLatestUiResource');
536
+ const resourceUrl = DataManager.getSysResourcesLatestRelease({
537
+ features,
538
+ forcedUpdateRes: params.forcedUpdateRes,
539
+ firmwareType,
540
+ });
541
+ if (resourceUrl) {
542
+ this.postTipMessage('DownloadLatestUiResource');
543
+ if (params.resourceEntries?.length) {
544
+ const sources: Array<{
545
+ entryName: string;
546
+ source: FirmwareByteSource;
547
+ }> = [];
548
+ try {
549
+ for (const entry of params.resourceEntries) {
550
+ const resourceName = getFirmwareUpdateResourceName(entry.entryName);
551
+ const source = await openFirmwareByteSource({
552
+ artifact: entry.artifact,
553
+ reader: params.artifactReader,
554
+ });
555
+ if (!source) {
556
+ throw new Error('Firmware resource entry is not prepared');
557
+ }
558
+ sources.push({ entryName: resourceName, source });
559
+ }
560
+ await updateResourcesFromSources(
561
+ this.device.getCommands().typedCall.bind(this.device.getCommands()),
562
+ this.postMessage,
563
+ device,
564
+ sources.map(entry => ({
565
+ entryName: entry.entryName,
566
+ source: entry.source,
567
+ }))
568
+ );
569
+ } finally {
570
+ await Promise.all(
571
+ sources.map(entry => entry.source.close().catch(() => undefined))
572
+ );
573
+ }
574
+ this.postTipMessage('DownloadLatestUiResourceSuccess');
575
+ } else {
576
+ let resourceBinary: ArrayBuffer | Buffer;
577
+ if (params.resourceArtifact) {
578
+ throw ERRORS.TypedError(
579
+ HardwareErrorCode.RuntimeError,
580
+ 'Firmware resource archive must be materialized into prepared entries',
581
+ {
582
+ firmwareUpdateCode: 'FirmwareArtifactsNotPrepared',
583
+ artifactName: 'resource',
584
+ }
585
+ );
586
+ } else {
587
+ if (
588
+ params.artifactReader ||
589
+ DataManager.getSettings('firmwareManifestMode') === 'external-only'
590
+ ) {
591
+ throw ERRORS.TypedError(
592
+ HardwareErrorCode.RuntimeError,
593
+ 'Firmware resource must be prepared by the external firmware host',
594
+ {
595
+ firmwareUpdateCode: 'FirmwareArtifactsNotPrepared',
596
+ artifactName: 'resource',
597
+ }
598
+ );
599
+ }
600
+ resourceBinary = (await getSysResourceBinary(resourceUrl)).binary;
601
+ }
602
+ this.postTipMessage('DownloadLatestUiResourceSuccess');
603
+ await updateResources(
604
+ this.device.getCommands().typedCall.bind(this.device.getCommands()),
605
+ this.postMessage,
606
+ device,
607
+ resourceBinary
608
+ );
609
+ }
610
+ }
355
611
  }
356
- console.log('auto go to bootloader mode failed: ', e);
357
- return Promise.reject(
358
- ERRORS.TypedError(HardwareErrorCode.FirmwareUpdateAutoEnterBootFailure)
359
- );
360
- }
361
- }
362
612
 
363
- let binary;
613
+ // The request may outlive the current transport command instance.
614
+ this.device?.commands?.checkDisposed();
364
615
 
365
- try {
366
- if (params.binary) {
367
- binary = this.params.binary;
368
- } else {
369
- if (!device.features) {
370
- throw ERRORS.TypedError(
371
- HardwareErrorCode.RuntimeError,
372
- 'no features found for this device'
616
+ // auto go to bootloader mode
617
+ try {
618
+ this.postTipMessage('AutoRebootToBootloader');
619
+ const bootRes = await commands.typedCall('DeviceBackToBoot', 'Success');
620
+ // @ts-expect-error
621
+ if (bootRes.type === 'CallMethodError') {
622
+ throw ERRORS.TypedError(HardwareErrorCode.FirmwareUpdateAutoEnterBootFailure);
623
+ }
624
+ this.postTipMessage('GoToBootloaderSuccess');
625
+ this.checkDeviceToBootloader(this.payload.connectId);
626
+
627
+ // force clean classic device cache so that the device can initialize again
628
+ if (DeviceModelToTypes.model_classic.includes(deviceType)) {
629
+ DevicePool.clearDeviceCache(serialNo);
630
+ }
631
+ delete DevicePool.devicesCache[''];
632
+ await this.checkPromise?.promise;
633
+ this.checkPromise = null;
634
+
635
+ // check if the device commands has been disposed
636
+ this.device?.commands?.checkDisposed();
637
+
638
+ /**
639
+ * Touch 1 with bootloader v2.5.0 issue: BLE chip need more time for looking up name, here change the delay time to 3000ms after rebooting.
640
+ */
641
+ const isTouch = DeviceModelToTypes.model_touch.includes(deviceType);
642
+ await wait(isTouch ? 3000 : 1500);
643
+ } catch (e) {
644
+ if (e instanceof HardwareError) {
645
+ return Promise.reject(e);
646
+ }
647
+ console.log('auto go to bootloader mode failed: ', e);
648
+ return Promise.reject(
649
+ ERRORS.TypedError(HardwareErrorCode.FirmwareUpdateAutoEnterBootFailure)
373
650
  );
374
651
  }
375
- this.postTipMessage('DownloadFirmware');
376
-
377
- const firmware = await getBinary({
378
- features: device.features,
379
- version: params.version,
380
- updateType: params.updateType,
381
- isUpdateBootloader: params.isUpdateBootloader,
382
- firmwareType,
383
- });
384
- binary = firmware.binary;
385
- this.postTipMessage('DownloadFirmwareSuccess');
386
652
  }
387
- } catch (err) {
388
- throw ERRORS.TypedError(HardwareErrorCode.FirmwareUpdateDownloadFailed, err.message ?? err);
389
- }
390
653
 
391
- // check if the device commands has been disposed
392
- this.device?.commands?.checkDisposed();
654
+ // Devices already in bootloader mode still acquire through the same helper.
655
+ const source = await acquireFirmwareSource();
393
656
 
394
- await this.device.acquire();
657
+ // check if the device commands has been disposed
658
+ this.device?.commands?.checkDisposed();
395
659
 
396
- const response = await uploadFirmware(
397
- params.updateType,
398
- this.device.getCommands().typedCall.bind(this.device.getCommands()),
399
- this.postMessage,
400
- device,
401
- { payload: binary, rebootOnSuccess: true },
402
- params.isUpdateBootloader
403
- );
660
+ await this.device.acquire();
404
661
 
405
- if (this.connectId) {
406
- DevicePool.clearDeviceCache(this.connectId);
407
- }
662
+ const response = await uploadFirmwareFromSource(
663
+ params.updateType,
664
+ this.device.getCommands().typedCall.bind(this.device.getCommands()),
665
+ this.postMessage,
666
+ device,
667
+ source,
668
+ true,
669
+ params.isUpdateBootloader
670
+ );
671
+
672
+ if (this.connectId) {
673
+ DevicePool.clearDeviceCache(this.connectId);
674
+ }
408
675
 
409
- return response;
676
+ return response;
677
+ } finally {
678
+ await preparedSource?.close().catch(() => undefined);
679
+ }
410
680
  }
411
681
  }