@onekeyfe/hd-core 1.2.0-alpha.6 → 1.2.0-alpha.62

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