@onekeyfe/hd-core 1.2.0-alpha.16 → 1.2.0-alpha.160

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 (847) hide show
  1. package/__tests__/AllNetworkGetAddressBase.tracing.test.ts +390 -0
  2. package/__tests__/DeviceCommands.test.ts +586 -9
  3. package/__tests__/DeviceEventRegistration.test.ts +9 -0
  4. package/__tests__/base64Data.test.ts +69 -0
  5. package/__tests__/chain-params-onekey-compatibility.test.ts +229 -0
  6. package/__tests__/check-all-firmware-release-protocol-v2.test.ts +878 -0
  7. package/__tests__/check-firmware-release-protocol-v2.test.ts +270 -0
  8. package/__tests__/connectSettings.test.ts +45 -5
  9. package/__tests__/core-dispose.test.ts +34 -0
  10. package/__tests__/core-error-output.test.ts +39 -0
  11. package/__tests__/core-initialization.test.ts +23 -0
  12. package/__tests__/device-connector-protocol.test.ts +102 -0
  13. package/__tests__/device-features-state.test.ts +78 -0
  14. package/__tests__/device-identity.test.ts +52 -0
  15. package/__tests__/device-initialize-timeout.test.ts +56 -0
  16. package/__tests__/device-lifecycle-events.test.ts +754 -0
  17. package/__tests__/device-pool-state.test.ts +191 -0
  18. package/__tests__/device-settings.test.ts +665 -0
  19. package/__tests__/device-state-contract.test.ts +28 -0
  20. package/__tests__/device-state-events.test.ts +286 -0
  21. package/__tests__/device-state-mapper.test.ts +344 -0
  22. package/__tests__/device-state-projector.test.ts +114 -0
  23. package/__tests__/device-state-store.test.ts +109 -0
  24. package/__tests__/device-utils.test.ts +168 -0
  25. package/__tests__/device-wallet-session-store.test.ts +474 -1
  26. package/__tests__/deviceFeaturesUtils.test.ts +39 -0
  27. package/__tests__/devicePoolBootloaderPath.test.ts +64 -0
  28. package/__tests__/deviceSettings.test.ts +117 -0
  29. package/__tests__/deviceUploadNft.test.ts +348 -0
  30. package/__tests__/evmLedgerLegacySafety.test.ts +12 -6
  31. package/__tests__/evmSignTransaction.test.ts +69 -0
  32. package/__tests__/evmSignTypedData.test.ts +80 -0
  33. package/__tests__/filesystemValidation.test.ts +53 -0
  34. package/__tests__/firmware-update/check-all-firmware-release.test.ts +175 -0
  35. package/__tests__/firmware-update/device-update-bootloader.test.ts +109 -0
  36. package/__tests__/firmware-update/firmware-artifact-source.test.ts +171 -0
  37. package/__tests__/firmware-update/firmware-host-binding.test.ts +79 -0
  38. package/__tests__/firmware-update/firmware-preparation-error.test.ts +27 -0
  39. package/__tests__/firmware-update/firmware-prepared-host-digest.test.ts +583 -0
  40. package/__tests__/firmware-update/firmware-prepared-resource-archive.test.ts +171 -0
  41. package/__tests__/firmware-update/firmware-update-bootloader-poll.test.ts +438 -0
  42. package/__tests__/firmware-update/firmware-update-capabilities.test.ts +13 -0
  43. package/__tests__/firmware-update/firmware-update-plan-bootloader-identity.test.ts +474 -0
  44. package/__tests__/firmware-update/firmware-update-plan.test.ts +819 -0
  45. package/__tests__/firmware-update/firmware-update-prepared-plan.test.ts +297 -0
  46. package/__tests__/firmware-update/firmware-update-prepared-resource-executors.test.ts +326 -0
  47. package/__tests__/firmware-update/firmware-update-v2-download-before-boot.test.ts +457 -0
  48. package/__tests__/firmware-update/firmware-update-v3-reconnect.test.ts +237 -0
  49. package/__tests__/firmware-update/firmware-update-v4-install-poll.test.ts +166 -0
  50. package/__tests__/firmware-update/firmware-update-v4-parameters.test.ts +85 -0
  51. package/__tests__/firmware-update/firmware-upload-source.test.ts +70 -0
  52. package/__tests__/get-device-state.test.ts +617 -0
  53. package/__tests__/homescreen.test.ts +81 -0
  54. package/__tests__/kaspa-public-types.type-test.ts +16 -0
  55. package/__tests__/kaspa-use-tweak-pro2.test.ts +20 -0
  56. package/__tests__/kaspaSignTransaction.test.ts +578 -0
  57. package/__tests__/known-device-public-types.type-test.ts +3 -0
  58. package/__tests__/logBlockEvent.test.ts +140 -1
  59. package/__tests__/method-protocol-support.test.ts +144 -0
  60. package/__tests__/networkUtils.test.ts +406 -0
  61. package/__tests__/open-wallet-session-error-response.test.ts +43 -0
  62. package/__tests__/open-wallet-session.test.ts +1899 -0
  63. package/__tests__/pro2Nft.test.ts +108 -0
  64. package/__tests__/pro2Wallpaper.test.ts +8 -19
  65. package/__tests__/protocol-binding.test.ts +89 -0
  66. package/__tests__/protocol-v2-firmware-targets.test.ts +105 -0
  67. package/__tests__/protocol-v2-ping.test.ts +28 -0
  68. package/__tests__/protocol-v2-resources.test.ts +364 -0
  69. package/__tests__/protocol-v2-ui-lifecycle.test.ts +91 -0
  70. package/__tests__/protocol-v2-unlock-policy.test.ts +507 -0
  71. package/__tests__/protocol-v2.test.ts +7901 -2129
  72. package/__tests__/protocolV2FileWrite.test.ts +221 -3
  73. package/__tests__/protocolV2UiInteraction.test.ts +329 -0
  74. package/__tests__/public-device-state-api.test.ts +275 -0
  75. package/__tests__/public-pro2-api-boundary.test.ts +107 -0
  76. package/__tests__/refresh-device-state.test.ts +103 -0
  77. package/__tests__/request-context-logging.test.ts +16 -0
  78. package/__tests__/resourceBase64Boundary.test.ts +48 -0
  79. package/__tests__/search-devices.test.ts +192 -0
  80. package/__tests__/ton-sign-message.test.ts +84 -0
  81. package/__tests__/tron-sign-message-init.test.ts +74 -0
  82. package/__tests__/uiProgressThrottle.test.ts +74 -0
  83. package/__tests__/uiPromiseRegistry.test.ts +115 -0
  84. package/dist/api/BaseMethod.d.ts +14 -2
  85. package/dist/api/BaseMethod.d.ts.map +1 -1
  86. package/dist/api/CheckAllFirmwareRelease.d.ts +25 -1
  87. package/dist/api/CheckAllFirmwareRelease.d.ts.map +1 -1
  88. package/dist/api/CheckBLEFirmwareRelease.d.ts +3 -2
  89. package/dist/api/CheckBLEFirmwareRelease.d.ts.map +1 -1
  90. package/dist/api/CheckBootloaderRelease.d.ts +2 -1
  91. package/dist/api/CheckBootloaderRelease.d.ts.map +1 -1
  92. package/dist/api/CheckFirmwareRelease.d.ts +3 -2
  93. package/dist/api/CheckFirmwareRelease.d.ts.map +1 -1
  94. package/dist/api/CipherKeyValue.d.ts +1 -0
  95. package/dist/api/CipherKeyValue.d.ts.map +1 -1
  96. package/dist/api/ClearSessionCache.d.ts.map +1 -1
  97. package/dist/api/DetectDeviceConnectProtocol.d.ts +7 -0
  98. package/dist/api/DetectDeviceConnectProtocol.d.ts.map +1 -0
  99. package/dist/api/DirList.d.ts +1 -0
  100. package/dist/api/DirList.d.ts.map +1 -1
  101. package/dist/api/DirMake.d.ts +1 -0
  102. package/dist/api/DirMake.d.ts.map +1 -1
  103. package/dist/api/DirRemove.d.ts +1 -0
  104. package/dist/api/DirRemove.d.ts.map +1 -1
  105. package/dist/api/FileDelete.d.ts +1 -0
  106. package/dist/api/FileDelete.d.ts.map +1 -1
  107. package/dist/api/FileRead.d.ts +1 -0
  108. package/dist/api/FileRead.d.ts.map +1 -1
  109. package/dist/api/FileWrite.d.ts +1 -0
  110. package/dist/api/FileWrite.d.ts.map +1 -1
  111. package/dist/api/FirmwareUpdate.d.ts.map +1 -1
  112. package/dist/api/FirmwareUpdateV2.d.ts +13 -2
  113. package/dist/api/FirmwareUpdateV2.d.ts.map +1 -1
  114. package/dist/api/FirmwareUpdateV3.d.ts +7 -3
  115. package/dist/api/FirmwareUpdateV3.d.ts.map +1 -1
  116. package/dist/api/FirmwareUpdateV4.d.ts +62 -14
  117. package/dist/api/FirmwareUpdateV4.d.ts.map +1 -1
  118. package/dist/api/GetDeviceState.d.ts +8 -0
  119. package/dist/api/GetDeviceState.d.ts.map +1 -0
  120. package/dist/api/GetFeatures.d.ts +1 -1
  121. package/dist/api/GetFeatures.d.ts.map +1 -1
  122. package/dist/api/GetOnekeyFeatures.d.ts.map +1 -1
  123. package/dist/api/GetPassphraseState.d.ts +1 -0
  124. package/dist/api/GetPassphraseState.d.ts.map +1 -1
  125. package/dist/api/OpenWalletSession.d.ts +8 -0
  126. package/dist/api/OpenWalletSession.d.ts.map +1 -0
  127. package/dist/api/PathInfo.d.ts +1 -0
  128. package/dist/api/PathInfo.d.ts.map +1 -1
  129. package/dist/api/PromptWebDeviceAccess.d.ts.map +1 -1
  130. package/dist/api/SearchDevices.d.ts +3 -0
  131. package/dist/api/SearchDevices.d.ts.map +1 -1
  132. package/dist/api/UploadPortfolio.d.ts +1 -2
  133. package/dist/api/UploadPortfolio.d.ts.map +1 -1
  134. package/dist/api/alephium/AlephiumGetAddress.d.ts.map +1 -1
  135. package/dist/api/alephium/AlephiumSignMessage.d.ts.map +1 -1
  136. package/dist/api/alephium/AlephiumSignTransaction.d.ts.map +1 -1
  137. package/dist/api/algo/AlgoGetAddress.d.ts +1 -0
  138. package/dist/api/algo/AlgoGetAddress.d.ts.map +1 -1
  139. package/dist/api/algo/AlgoSignTransaction.d.ts +1 -0
  140. package/dist/api/algo/AlgoSignTransaction.d.ts.map +1 -1
  141. package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts +1 -0
  142. package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts.map +1 -1
  143. package/dist/api/aptos/AptosGetAddress.d.ts +1 -0
  144. package/dist/api/aptos/AptosGetAddress.d.ts.map +1 -1
  145. package/dist/api/aptos/AptosGetPublicKey.d.ts +1 -0
  146. package/dist/api/aptos/AptosGetPublicKey.d.ts.map +1 -1
  147. package/dist/api/aptos/AptosSignInMessage.d.ts +1 -0
  148. package/dist/api/aptos/AptosSignInMessage.d.ts.map +1 -1
  149. package/dist/api/aptos/AptosSignMessage.d.ts +1 -0
  150. package/dist/api/aptos/AptosSignMessage.d.ts.map +1 -1
  151. package/dist/api/aptos/AptosSignTransaction.d.ts +1 -0
  152. package/dist/api/aptos/AptosSignTransaction.d.ts.map +1 -1
  153. package/dist/api/benfen/BenfenGetAddress.d.ts.map +1 -1
  154. package/dist/api/benfen/BenfenGetPublicKey.d.ts.map +1 -1
  155. package/dist/api/benfen/BenfenSignMessage.d.ts.map +1 -1
  156. package/dist/api/benfen/BenfenSignTransaction.d.ts.map +1 -1
  157. package/dist/api/btc/BTCGetAddress.d.ts +1 -0
  158. package/dist/api/btc/BTCGetAddress.d.ts.map +1 -1
  159. package/dist/api/btc/BTCGetPublicKey.d.ts +1 -0
  160. package/dist/api/btc/BTCGetPublicKey.d.ts.map +1 -1
  161. package/dist/api/btc/BTCSignMessage.d.ts +1 -0
  162. package/dist/api/btc/BTCSignMessage.d.ts.map +1 -1
  163. package/dist/api/btc/BTCSignPsbt.d.ts +1 -0
  164. package/dist/api/btc/BTCSignPsbt.d.ts.map +1 -1
  165. package/dist/api/btc/BTCSignTransaction.d.ts +1 -0
  166. package/dist/api/btc/BTCSignTransaction.d.ts.map +1 -1
  167. package/dist/api/btc/BTCVerifyMessage.d.ts +1 -0
  168. package/dist/api/btc/BTCVerifyMessage.d.ts.map +1 -1
  169. package/dist/api/btc/helpers/versionLimit.d.ts +2 -0
  170. package/dist/api/btc/helpers/versionLimit.d.ts.map +1 -1
  171. package/dist/api/cardano/CardanoGetAddress.d.ts +1 -0
  172. package/dist/api/cardano/CardanoGetAddress.d.ts.map +1 -1
  173. package/dist/api/cardano/CardanoGetPublicKey.d.ts +1 -0
  174. package/dist/api/cardano/CardanoGetPublicKey.d.ts.map +1 -1
  175. package/dist/api/cardano/CardanoSignMessage.d.ts +1 -0
  176. package/dist/api/cardano/CardanoSignMessage.d.ts.map +1 -1
  177. package/dist/api/cardano/CardanoSignTransaction.d.ts +1 -0
  178. package/dist/api/cardano/CardanoSignTransaction.d.ts.map +1 -1
  179. package/dist/api/conflux/ConfluxGetAddress.d.ts +2 -0
  180. package/dist/api/conflux/ConfluxGetAddress.d.ts.map +1 -1
  181. package/dist/api/conflux/ConfluxSignMessage.d.ts +2 -0
  182. package/dist/api/conflux/ConfluxSignMessage.d.ts.map +1 -1
  183. package/dist/api/conflux/ConfluxSignMessageCIP23.d.ts +2 -0
  184. package/dist/api/conflux/ConfluxSignMessageCIP23.d.ts.map +1 -1
  185. package/dist/api/conflux/ConfluxSignTransaction.d.ts +2 -0
  186. package/dist/api/conflux/ConfluxSignTransaction.d.ts.map +1 -1
  187. package/dist/api/cosmos/CosmosGetAddress.d.ts +1 -0
  188. package/dist/api/cosmos/CosmosGetAddress.d.ts.map +1 -1
  189. package/dist/api/cosmos/CosmosGetPublicKey.d.ts +1 -0
  190. package/dist/api/cosmos/CosmosGetPublicKey.d.ts.map +1 -1
  191. package/dist/api/cosmos/CosmosSignTransaction.d.ts +1 -0
  192. package/dist/api/cosmos/CosmosSignTransaction.d.ts.map +1 -1
  193. package/dist/api/device/DeviceCancel.d.ts +1 -0
  194. package/dist/api/device/DeviceCancel.d.ts.map +1 -1
  195. package/dist/api/device/DeviceChangePin.d.ts +1 -0
  196. package/dist/api/device/DeviceChangePin.d.ts.map +1 -1
  197. package/dist/api/device/DeviceFullyUploadResource.d.ts +1 -2
  198. package/dist/api/device/DeviceFullyUploadResource.d.ts.map +1 -1
  199. package/dist/api/device/DeviceLock.d.ts +1 -0
  200. package/dist/api/device/DeviceLock.d.ts.map +1 -1
  201. package/dist/api/device/DeviceRebootToBoardloader.d.ts +1 -0
  202. package/dist/api/device/DeviceRebootToBoardloader.d.ts.map +1 -1
  203. package/dist/api/device/DeviceRebootToBootloader.d.ts +1 -0
  204. package/dist/api/device/DeviceRebootToBootloader.d.ts.map +1 -1
  205. package/dist/api/device/DeviceSettings.d.ts +1 -0
  206. package/dist/api/device/DeviceSettings.d.ts.map +1 -1
  207. package/dist/api/device/DeviceSupportFeatures.d.ts +1 -0
  208. package/dist/api/device/DeviceSupportFeatures.d.ts.map +1 -1
  209. package/dist/api/device/DeviceUnlock.d.ts +3 -2
  210. package/dist/api/device/DeviceUnlock.d.ts.map +1 -1
  211. package/dist/api/device/DeviceUpdateBootloader.d.ts +5 -1
  212. package/dist/api/device/DeviceUpdateBootloader.d.ts.map +1 -1
  213. package/dist/api/device/DeviceVerify.d.ts +1 -0
  214. package/dist/api/device/DeviceVerify.d.ts.map +1 -1
  215. package/dist/api/device/DeviceWipe.d.ts +1 -0
  216. package/dist/api/device/DeviceWipe.d.ts.map +1 -1
  217. package/dist/api/device/PreInitialize.d.ts +1 -0
  218. package/dist/api/device/PreInitialize.d.ts.map +1 -1
  219. package/dist/api/dynex/DnxGetAddress.d.ts.map +1 -1
  220. package/dist/api/dynex/DnxSignTransaction.d.ts.map +1 -1
  221. package/dist/api/evm/EVMGetAddress.d.ts +1 -0
  222. package/dist/api/evm/EVMGetAddress.d.ts.map +1 -1
  223. package/dist/api/evm/EVMGetPublicKey.d.ts +1 -0
  224. package/dist/api/evm/EVMGetPublicKey.d.ts.map +1 -1
  225. package/dist/api/evm/EVMSignMessage.d.ts +1 -0
  226. package/dist/api/evm/EVMSignMessage.d.ts.map +1 -1
  227. package/dist/api/evm/EVMSignMessageEIP712.d.ts.map +1 -1
  228. package/dist/api/evm/EVMSignTransaction.d.ts +1 -0
  229. package/dist/api/evm/EVMSignTransaction.d.ts.map +1 -1
  230. package/dist/api/evm/EVMSignTypedData.d.ts +1 -0
  231. package/dist/api/evm/EVMSignTypedData.d.ts.map +1 -1
  232. package/dist/api/evm/EVMVerifyMessage.d.ts +1 -0
  233. package/dist/api/evm/EVMVerifyMessage.d.ts.map +1 -1
  234. package/dist/api/evm/protocol.d.ts +3 -0
  235. package/dist/api/evm/protocol.d.ts.map +1 -0
  236. package/dist/api/filecoin/FilecoinGetAddress.d.ts +1 -0
  237. package/dist/api/filecoin/FilecoinGetAddress.d.ts.map +1 -1
  238. package/dist/api/filecoin/FilecoinSignTransaction.d.ts +1 -0
  239. package/dist/api/filecoin/FilecoinSignTransaction.d.ts.map +1 -1
  240. package/dist/api/firmware/FirmwareArtifactSource.d.ts +29 -0
  241. package/dist/api/firmware/FirmwareArtifactSource.d.ts.map +1 -0
  242. package/dist/api/firmware/FirmwareHostBinding.d.ts +6 -0
  243. package/dist/api/firmware/FirmwareHostBinding.d.ts.map +1 -0
  244. package/dist/api/firmware/FirmwarePreparationError.d.ts +3 -0
  245. package/dist/api/firmware/FirmwarePreparationError.d.ts.map +1 -0
  246. package/dist/api/firmware/FirmwarePreparedResourceArchive.d.ts +11 -0
  247. package/dist/api/firmware/FirmwarePreparedResourceArchive.d.ts.map +1 -0
  248. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts +12 -3
  249. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts.map +1 -1
  250. package/dist/api/firmware/FirmwareUpdateCapabilities.d.ts +3 -0
  251. package/dist/api/firmware/FirmwareUpdateCapabilities.d.ts.map +1 -0
  252. package/dist/api/firmware/FirmwareUpdatePlan.d.ts +57 -0
  253. package/dist/api/firmware/FirmwareUpdatePlan.d.ts.map +1 -0
  254. package/dist/api/firmware/FirmwareUpdatePreparedPlan.d.ts +38 -0
  255. package/dist/api/firmware/FirmwareUpdatePreparedPlan.d.ts.map +1 -0
  256. package/dist/api/firmware/getBinary.d.ts +15 -4
  257. package/dist/api/firmware/getBinary.d.ts.map +1 -1
  258. package/dist/api/firmware/protocolV2Release.d.ts +33 -0
  259. package/dist/api/firmware/protocolV2Release.d.ts.map +1 -0
  260. package/dist/api/firmware/updateBootloader.d.ts +2 -0
  261. package/dist/api/firmware/updateBootloader.d.ts.map +1 -1
  262. package/dist/api/firmware/uploadFirmware.d.ts +9 -1
  263. package/dist/api/firmware/uploadFirmware.d.ts.map +1 -1
  264. package/dist/api/helpers/base64Data.d.ts +16 -0
  265. package/dist/api/helpers/base64Data.d.ts.map +1 -0
  266. package/dist/api/helpers/filesystemValidation.d.ts +3 -0
  267. package/dist/api/helpers/filesystemValidation.d.ts.map +1 -1
  268. package/dist/api/helpers/paramsValidator.d.ts +1 -0
  269. package/dist/api/helpers/paramsValidator.d.ts.map +1 -1
  270. package/dist/api/helpers/protocolV2FileWrite.d.ts +11 -0
  271. package/dist/api/helpers/protocolV2FileWrite.d.ts.map +1 -1
  272. package/dist/api/index.d.ts +5 -29
  273. package/dist/api/index.d.ts.map +1 -1
  274. package/dist/api/kaspa/KaspaGetAddress.d.ts +4 -0
  275. package/dist/api/kaspa/KaspaGetAddress.d.ts.map +1 -1
  276. package/dist/api/kaspa/KaspaSignTransaction.d.ts +9 -1
  277. package/dist/api/kaspa/KaspaSignTransaction.d.ts.map +1 -1
  278. package/dist/api/kaspa/helpers/TransferSerialize.d.ts.map +1 -1
  279. package/dist/api/lightning/LnurlAuth.d.ts +0 -4
  280. package/dist/api/lightning/LnurlAuth.d.ts.map +1 -1
  281. package/dist/api/near/NearGetAddress.d.ts +1 -0
  282. package/dist/api/near/NearGetAddress.d.ts.map +1 -1
  283. package/dist/api/near/NearSignTransaction.d.ts +1 -0
  284. package/dist/api/near/NearSignTransaction.d.ts.map +1 -1
  285. package/dist/api/nem/NEMGetAddress.d.ts +1 -0
  286. package/dist/api/nem/NEMGetAddress.d.ts.map +1 -1
  287. package/dist/api/nem/NEMSignTransaction.d.ts +1 -0
  288. package/dist/api/nem/NEMSignTransaction.d.ts.map +1 -1
  289. package/dist/api/neo/NeoGetAddress.d.ts.map +1 -1
  290. package/dist/api/neo/NeoSignTransaction.d.ts.map +1 -1
  291. package/dist/api/nervos/NervosGetAddress.d.ts.map +1 -1
  292. package/dist/api/nervos/NervosSignTransaction.d.ts.map +1 -1
  293. package/dist/api/nexa/NexaGetAddress.d.ts.map +1 -1
  294. package/dist/api/nexa/NexaSignTransaction.d.ts +1 -0
  295. package/dist/api/nexa/NexaSignTransaction.d.ts.map +1 -1
  296. package/dist/api/nostr/NostrDecryptMessage.d.ts +1 -0
  297. package/dist/api/nostr/NostrDecryptMessage.d.ts.map +1 -1
  298. package/dist/api/nostr/NostrEncryptMessage.d.ts +1 -0
  299. package/dist/api/nostr/NostrEncryptMessage.d.ts.map +1 -1
  300. package/dist/api/nostr/NostrGetPublicKey.d.ts +1 -0
  301. package/dist/api/nostr/NostrGetPublicKey.d.ts.map +1 -1
  302. package/dist/api/nostr/NostrSignEvent.d.ts +1 -0
  303. package/dist/api/nostr/NostrSignEvent.d.ts.map +1 -1
  304. package/dist/api/nostr/NostrSignSchnorr.d.ts +1 -0
  305. package/dist/api/nostr/NostrSignSchnorr.d.ts.map +1 -1
  306. package/dist/api/polkadot/PolkadotGetAddress.d.ts +2 -1
  307. package/dist/api/polkadot/PolkadotGetAddress.d.ts.map +1 -1
  308. package/dist/api/polkadot/PolkadotSignTransaction.d.ts +1 -0
  309. package/dist/api/polkadot/PolkadotSignTransaction.d.ts.map +1 -1
  310. package/dist/api/polkadot/networks.d.ts +1 -1
  311. package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts +1 -0
  312. package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts.map +1 -1
  313. package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts +1 -0
  314. package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts.map +1 -1
  315. package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts +4 -1
  316. package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts.map +1 -1
  317. package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts +1 -0
  318. package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts.map +1 -1
  319. package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts +2 -1
  320. package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts.map +1 -1
  321. package/dist/api/protocol-v2/DeviceInfoGet.d.ts +2 -2
  322. package/dist/api/protocol-v2/DeviceInfoGet.d.ts.map +1 -1
  323. package/dist/api/protocol-v2/DeviceReboot.d.ts +2 -1
  324. package/dist/api/protocol-v2/DeviceReboot.d.ts.map +1 -1
  325. package/dist/api/protocol-v2/DeviceStatusGet.d.ts +1 -0
  326. package/dist/api/protocol-v2/DeviceStatusGet.d.ts.map +1 -1
  327. package/dist/api/protocol-v2/DeviceUploadNft.d.ts +30 -0
  328. package/dist/api/protocol-v2/DeviceUploadNft.d.ts.map +1 -0
  329. package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts +3 -3
  330. package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts.map +1 -1
  331. package/dist/api/protocol-v2/FilesystemFormat.d.ts +1 -0
  332. package/dist/api/protocol-v2/FilesystemFormat.d.ts.map +1 -1
  333. package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts +1 -0
  334. package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts.map +1 -1
  335. package/dist/api/protocol-v2/Ping.d.ts +3 -0
  336. package/dist/api/protocol-v2/Ping.d.ts.map +1 -1
  337. package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts +1 -0
  338. package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts.map +1 -1
  339. package/dist/api/protocol-v2/helpers.d.ts.map +1 -1
  340. package/dist/api/scdo/ScdoGetAddress.d.ts.map +1 -1
  341. package/dist/api/scdo/ScdoSignMessage.d.ts.map +1 -1
  342. package/dist/api/scdo/ScdoSignTransaction.d.ts.map +1 -1
  343. package/dist/api/solana/SolGetAddress.d.ts +1 -0
  344. package/dist/api/solana/SolGetAddress.d.ts.map +1 -1
  345. package/dist/api/solana/SolSignMessage.d.ts +2 -1
  346. package/dist/api/solana/SolSignMessage.d.ts.map +1 -1
  347. package/dist/api/solana/SolSignOffchainMessage.d.ts +2 -1
  348. package/dist/api/solana/SolSignOffchainMessage.d.ts.map +1 -1
  349. package/dist/api/solana/SolSignTransaction.d.ts +3 -2
  350. package/dist/api/solana/SolSignTransaction.d.ts.map +1 -1
  351. package/dist/api/starcoin/StarcoinGetAddress.d.ts +1 -0
  352. package/dist/api/starcoin/StarcoinGetAddress.d.ts.map +1 -1
  353. package/dist/api/starcoin/StarcoinGetPublicKey.d.ts +1 -0
  354. package/dist/api/starcoin/StarcoinGetPublicKey.d.ts.map +1 -1
  355. package/dist/api/starcoin/StarcoinSignMessage.d.ts +1 -0
  356. package/dist/api/starcoin/StarcoinSignMessage.d.ts.map +1 -1
  357. package/dist/api/starcoin/StarcoinSignTransaction.d.ts +1 -0
  358. package/dist/api/starcoin/StarcoinSignTransaction.d.ts.map +1 -1
  359. package/dist/api/starcoin/StarcoinVerifyMessage.d.ts +1 -0
  360. package/dist/api/starcoin/StarcoinVerifyMessage.d.ts.map +1 -1
  361. package/dist/api/stellar/StellarGetAddress.d.ts +1 -2
  362. package/dist/api/stellar/StellarGetAddress.d.ts.map +1 -1
  363. package/dist/api/stellar/StellarSignTransaction.d.ts +2 -3
  364. package/dist/api/stellar/StellarSignTransaction.d.ts.map +1 -1
  365. package/dist/api/sui/SuiGetAddress.d.ts +2 -1
  366. package/dist/api/sui/SuiGetAddress.d.ts.map +1 -1
  367. package/dist/api/sui/SuiGetPublicKey.d.ts +2 -1
  368. package/dist/api/sui/SuiGetPublicKey.d.ts.map +1 -1
  369. package/dist/api/sui/SuiSignMessage.d.ts +2 -1
  370. package/dist/api/sui/SuiSignMessage.d.ts.map +1 -1
  371. package/dist/api/sui/SuiSignTransaction.d.ts +2 -1
  372. package/dist/api/sui/SuiSignTransaction.d.ts.map +1 -1
  373. package/dist/api/ton/TonGetAddress.d.ts +2 -1
  374. package/dist/api/ton/TonGetAddress.d.ts.map +1 -1
  375. package/dist/api/ton/TonSignData.d.ts +1 -0
  376. package/dist/api/ton/TonSignData.d.ts.map +1 -1
  377. package/dist/api/ton/TonSignMessage.d.ts +2 -1
  378. package/dist/api/ton/TonSignMessage.d.ts.map +1 -1
  379. package/dist/api/ton/TonSignProof.d.ts +2 -1
  380. package/dist/api/ton/TonSignProof.d.ts.map +1 -1
  381. package/dist/api/tron/TronGetAddress.d.ts +1 -0
  382. package/dist/api/tron/TronGetAddress.d.ts.map +1 -1
  383. package/dist/api/tron/TronSignMessage.d.ts +6 -1
  384. package/dist/api/tron/TronSignMessage.d.ts.map +1 -1
  385. package/dist/api/tron/TronSignTransaction.d.ts +2 -1
  386. package/dist/api/tron/TronSignTransaction.d.ts.map +1 -1
  387. package/dist/api/utils.d.ts +4 -1
  388. package/dist/api/utils.d.ts.map +1 -1
  389. package/dist/api/xrp/XrpGetAddress.d.ts +1 -0
  390. package/dist/api/xrp/XrpGetAddress.d.ts.map +1 -1
  391. package/dist/api/xrp/XrpSignTransaction.d.ts +1 -0
  392. package/dist/api/xrp/XrpSignTransaction.d.ts.map +1 -1
  393. package/dist/constants/index.d.ts +1 -1
  394. package/dist/constants/index.d.ts.map +1 -1
  395. package/dist/core/RequestQueue.d.ts +0 -2
  396. package/dist/core/RequestQueue.d.ts.map +1 -1
  397. package/dist/core/deviceEventRegistration.d.ts +3 -0
  398. package/dist/core/deviceEventRegistration.d.ts.map +1 -1
  399. package/dist/core/index.d.ts +8 -3
  400. package/dist/core/index.d.ts.map +1 -1
  401. package/dist/core/uiPromiseRegistry.d.ts +6 -0
  402. package/dist/core/uiPromiseRegistry.d.ts.map +1 -0
  403. package/dist/data-manager/DataManager.d.ts +14 -5
  404. package/dist/data-manager/DataManager.d.ts.map +1 -1
  405. package/dist/data-manager/TransportManager.d.ts.map +1 -1
  406. package/dist/data-manager/connectSettings.d.ts.map +1 -1
  407. package/dist/device/Device.d.ts +84 -16
  408. package/dist/device/Device.d.ts.map +1 -1
  409. package/dist/device/DeviceCommands.d.ts +8 -6
  410. package/dist/device/DeviceCommands.d.ts.map +1 -1
  411. package/dist/device/DeviceConnector.d.ts +4 -3
  412. package/dist/device/DeviceConnector.d.ts.map +1 -1
  413. package/dist/device/DeviceFeaturesState.d.ts +3 -0
  414. package/dist/device/DeviceFeaturesState.d.ts.map +1 -0
  415. package/dist/device/DevicePool.d.ts +6 -2
  416. package/dist/device/DevicePool.d.ts.map +1 -1
  417. package/dist/device/DeviceStateMapper.d.ts +13 -0
  418. package/dist/device/DeviceStateMapper.d.ts.map +1 -0
  419. package/dist/device/DeviceStateProjector.d.ts +7 -0
  420. package/dist/device/DeviceStateProjector.d.ts.map +1 -0
  421. package/dist/device/DeviceStateStore.d.ts +21 -0
  422. package/dist/device/DeviceStateStore.d.ts.map +1 -0
  423. package/dist/device/DeviceWalletSessionStore.d.ts +13 -1
  424. package/dist/device/DeviceWalletSessionStore.d.ts.map +1 -1
  425. package/dist/device/cloneDeviceState.d.ts +2 -0
  426. package/dist/device/cloneDeviceState.d.ts.map +1 -0
  427. package/dist/device/deviceIdentity.d.ts +5 -0
  428. package/dist/device/deviceIdentity.d.ts.map +1 -0
  429. package/dist/deviceProfile/buildDeviceFeatures.d.ts +8 -2
  430. package/dist/deviceProfile/buildDeviceFeatures.d.ts.map +1 -1
  431. package/dist/deviceProfile/index.d.ts +0 -1
  432. package/dist/deviceProfile/index.d.ts.map +1 -1
  433. package/dist/deviceProfile/protocolV2DeviceIdentity.d.ts +7 -0
  434. package/dist/deviceProfile/protocolV2DeviceIdentity.d.ts.map +1 -0
  435. package/dist/events/call.d.ts +0 -7
  436. package/dist/events/call.d.ts.map +1 -1
  437. package/dist/events/core.d.ts +2 -2
  438. package/dist/events/core.d.ts.map +1 -1
  439. package/dist/events/device.d.ts +16 -2
  440. package/dist/events/device.d.ts.map +1 -1
  441. package/dist/events/iframe.d.ts +0 -1
  442. package/dist/events/iframe.d.ts.map +1 -1
  443. package/dist/events/logBlockEvent.d.ts +2 -0
  444. package/dist/events/logBlockEvent.d.ts.map +1 -1
  445. package/dist/events/ui-promise.d.ts +4 -2
  446. package/dist/events/ui-promise.d.ts.map +1 -1
  447. package/dist/events/ui-request.d.ts +50 -4
  448. package/dist/events/ui-request.d.ts.map +1 -1
  449. package/dist/events/ui-response.d.ts +10 -2
  450. package/dist/events/ui-response.d.ts.map +1 -1
  451. package/dist/index.d.ts +1743 -830
  452. package/dist/index.d.ts.map +1 -1
  453. package/dist/index.js +11463 -4629
  454. package/dist/inject.d.ts +7 -3
  455. package/dist/inject.d.ts.map +1 -1
  456. package/dist/lowLevelInject.d.ts +1 -2
  457. package/dist/lowLevelInject.d.ts.map +1 -1
  458. package/dist/protocols/protocol-v2/deviceSession.d.ts +7 -0
  459. package/dist/protocols/protocol-v2/deviceSession.d.ts.map +1 -0
  460. package/dist/protocols/protocol-v2/features.d.ts +33 -22
  461. package/dist/protocols/protocol-v2/features.d.ts.map +1 -1
  462. package/dist/protocols/protocol-v2/firmware.d.ts.map +1 -1
  463. package/dist/protocols/protocol-v2/index.d.ts +2 -2
  464. package/dist/protocols/protocol-v2/index.d.ts.map +1 -1
  465. package/dist/protocols/protocol-v2/resources.d.ts +17 -0
  466. package/dist/protocols/protocol-v2/resources.d.ts.map +1 -0
  467. package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts +17 -0
  468. package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts.map +1 -0
  469. package/dist/protocols/protocol-v2/uiInteraction.d.ts +42 -0
  470. package/dist/protocols/protocol-v2/uiInteraction.d.ts.map +1 -0
  471. package/dist/protocols/protocol-v2/unlockPolicy.d.ts +2 -0
  472. package/dist/protocols/protocol-v2/unlockPolicy.d.ts.map +1 -0
  473. package/dist/protocols/protocol-v2/unlockPolicyRunner.d.ts +22 -0
  474. package/dist/protocols/protocol-v2/unlockPolicyRunner.d.ts.map +1 -0
  475. package/dist/protocols/protocol-v2/walletSession.d.ts +18 -4
  476. package/dist/protocols/protocol-v2/walletSession.d.ts.map +1 -1
  477. package/dist/topLevelInject.d.ts.map +1 -1
  478. package/dist/types/api/checkAllFirmwareRelease.d.ts +48 -9
  479. package/dist/types/api/checkAllFirmwareRelease.d.ts.map +1 -1
  480. package/dist/types/api/checkBLEFirmwareRelease.d.ts +2 -13
  481. package/dist/types/api/checkBLEFirmwareRelease.d.ts.map +1 -1
  482. package/dist/types/api/checkBootloaderRelease.d.ts +2 -6
  483. package/dist/types/api/checkBootloaderRelease.d.ts.map +1 -1
  484. package/dist/types/api/checkFirmwareRelease.d.ts +2 -13
  485. package/dist/types/api/checkFirmwareRelease.d.ts.map +1 -1
  486. package/dist/types/api/checkFirmwareTypeAvailable.d.ts +2 -2
  487. package/dist/types/api/checkFirmwareTypeAvailable.d.ts.map +1 -1
  488. package/dist/types/api/detectDeviceConnectProtocol.d.ts +4 -0
  489. package/dist/types/api/detectDeviceConnectProtocol.d.ts.map +1 -0
  490. package/dist/types/api/deviceSettings.d.ts +11 -2
  491. package/dist/types/api/deviceSettings.d.ts.map +1 -1
  492. package/dist/types/api/deviceUnlock.d.ts +6 -2
  493. package/dist/types/api/deviceUnlock.d.ts.map +1 -1
  494. package/dist/types/api/deviceUpdateBootloader.d.ts +6 -0
  495. package/dist/types/api/deviceUpdateBootloader.d.ts.map +1 -1
  496. package/dist/types/api/export.d.ts +8 -3
  497. package/dist/types/api/export.d.ts.map +1 -1
  498. package/dist/types/api/firmwareUpdate.d.ts +67 -5
  499. package/dist/types/api/firmwareUpdate.d.ts.map +1 -1
  500. package/dist/types/api/firmwareUpdateCapabilities.d.ts +9 -0
  501. package/dist/types/api/firmwareUpdateCapabilities.d.ts.map +1 -0
  502. package/dist/types/api/firmwareUpdatePlan.d.ts +28 -0
  503. package/dist/types/api/firmwareUpdatePlan.d.ts.map +1 -0
  504. package/dist/types/api/firmwareUpdatePreparedPlan.d.ts +42 -0
  505. package/dist/types/api/firmwareUpdatePreparedPlan.d.ts.map +1 -0
  506. package/dist/types/api/getDeviceState.d.ts +12 -0
  507. package/dist/types/api/getDeviceState.d.ts.map +1 -0
  508. package/dist/types/api/getFeatures.d.ts.map +1 -1
  509. package/dist/types/api/getOnekeyFeatures.d.ts.map +1 -1
  510. package/dist/types/api/getPassphraseState.d.ts.map +1 -1
  511. package/dist/types/api/index.d.ts +25 -35
  512. package/dist/types/api/index.d.ts.map +1 -1
  513. package/dist/types/api/kaspaSignTransaction.d.ts +42 -4
  514. package/dist/types/api/kaspaSignTransaction.d.ts.map +1 -1
  515. package/dist/types/api/openWalletSession.d.ts +35 -0
  516. package/dist/types/api/openWalletSession.d.ts.map +1 -0
  517. package/dist/types/api/protocolV2.d.ts +11 -93
  518. package/dist/types/api/protocolV2.d.ts.map +1 -1
  519. package/dist/types/api/sessionCache.d.ts +4 -1
  520. package/dist/types/api/sessionCache.d.ts.map +1 -1
  521. package/dist/types/device.d.ts +139 -8
  522. package/dist/types/device.d.ts.map +1 -1
  523. package/dist/types/params.d.ts +1 -0
  524. package/dist/types/params.d.ts.map +1 -1
  525. package/dist/types/settings.d.ts +31 -16
  526. package/dist/types/settings.d.ts.map +1 -1
  527. package/dist/utils/assets.d.ts +2 -1
  528. package/dist/utils/assets.d.ts.map +1 -1
  529. package/dist/utils/deviceFeaturesCompat.d.ts +14 -0
  530. package/dist/utils/deviceFeaturesCompat.d.ts.map +1 -0
  531. package/dist/utils/deviceFeaturesUtils.d.ts +10 -1
  532. package/dist/utils/deviceFeaturesUtils.d.ts.map +1 -1
  533. package/dist/utils/deviceInfoUtils.d.ts +9 -9
  534. package/dist/utils/deviceInfoUtils.d.ts.map +1 -1
  535. package/dist/utils/deviceSettings.d.ts +39 -7
  536. package/dist/utils/deviceSettings.d.ts.map +1 -1
  537. package/dist/utils/deviceVersionUtils.d.ts +7 -5
  538. package/dist/utils/deviceVersionUtils.d.ts.map +1 -1
  539. package/dist/utils/homescreen.d.ts +4 -0
  540. package/dist/utils/homescreen.d.ts.map +1 -1
  541. package/dist/utils/index.d.ts +5 -4
  542. package/dist/utils/index.d.ts.map +1 -1
  543. package/dist/utils/networkUtils.d.ts +10 -1
  544. package/dist/utils/networkUtils.d.ts.map +1 -1
  545. package/dist/utils/patch.d.ts +1 -1
  546. package/dist/utils/patch.d.ts.map +1 -1
  547. package/dist/utils/pro2Nft.d.ts +38 -0
  548. package/dist/utils/pro2Nft.d.ts.map +1 -0
  549. package/dist/utils/pro2Wallpaper.d.ts +10 -0
  550. package/dist/utils/pro2Wallpaper.d.ts.map +1 -1
  551. package/dist/utils/tracing.d.ts.map +1 -1
  552. package/dist/utils/uiProgressThrottle.d.ts +3 -0
  553. package/dist/utils/uiProgressThrottle.d.ts.map +1 -0
  554. package/package.json +6 -4
  555. package/src/api/BaseMethod.ts +45 -23
  556. package/src/api/CheckAllFirmwareRelease.ts +440 -4
  557. package/src/api/CheckBLEFirmwareRelease.ts +37 -5
  558. package/src/api/CheckBootloaderRelease.ts +37 -5
  559. package/src/api/CheckFirmwareRelease.ts +36 -9
  560. package/src/api/CipherKeyValue.ts +4 -0
  561. package/src/api/ClearSessionCache.ts +4 -0
  562. package/src/api/DetectDeviceConnectProtocol.ts +18 -0
  563. package/src/api/DirList.ts +9 -4
  564. package/src/api/DirMake.ts +7 -4
  565. package/src/api/DirRemove.ts +7 -4
  566. package/src/api/FileDelete.ts +7 -4
  567. package/src/api/FileRead.ts +13 -7
  568. package/src/api/FileWrite.ts +7 -4
  569. package/src/api/FirmwareUpdate.ts +30 -15
  570. package/src/api/FirmwareUpdateV2.ts +535 -169
  571. package/src/api/FirmwareUpdateV3.ts +350 -91
  572. package/src/api/FirmwareUpdateV4.ts +2036 -744
  573. package/src/api/GetDeviceState.ts +59 -0
  574. package/src/api/GetFeatures.ts +6 -4
  575. package/src/api/GetOnekeyFeatures.ts +1 -75
  576. package/src/api/GetPassphraseState.ts +36 -12
  577. package/src/api/OpenWalletSession.ts +268 -0
  578. package/src/api/PathInfo.ts +9 -4
  579. package/src/api/PromptWebDeviceAccess.ts +3 -8
  580. package/src/api/SearchDevices.ts +35 -5
  581. package/src/api/UploadPortfolio.ts +30 -4
  582. package/src/api/alephium/AlephiumGetAddress.ts +0 -4
  583. package/src/api/alephium/AlephiumSignMessage.ts +0 -4
  584. package/src/api/alephium/AlephiumSignTransaction.ts +2 -6
  585. package/src/api/algo/AlgoGetAddress.ts +4 -0
  586. package/src/api/algo/AlgoSignTransaction.ts +4 -0
  587. package/src/api/allnetwork/AllNetworkGetAddress.ts +21 -21
  588. package/src/api/allnetwork/AllNetworkGetAddressBase.ts +45 -32
  589. package/src/api/aptos/AptosGetAddress.ts +4 -0
  590. package/src/api/aptos/AptosGetPublicKey.ts +4 -0
  591. package/src/api/aptos/AptosSignInMessage.ts +4 -0
  592. package/src/api/aptos/AptosSignMessage.ts +4 -0
  593. package/src/api/aptos/AptosSignTransaction.ts +4 -0
  594. package/src/api/benfen/BenfenGetAddress.ts +11 -7
  595. package/src/api/benfen/BenfenGetPublicKey.ts +0 -4
  596. package/src/api/benfen/BenfenSignMessage.ts +0 -4
  597. package/src/api/benfen/BenfenSignTransaction.ts +0 -4
  598. package/src/api/btc/BTCGetAddress.ts +8 -1
  599. package/src/api/btc/BTCGetPublicKey.ts +9 -2
  600. package/src/api/btc/BTCSignMessage.ts +8 -1
  601. package/src/api/btc/BTCSignPsbt.ts +4 -0
  602. package/src/api/btc/BTCSignTransaction.ts +8 -1
  603. package/src/api/btc/BTCVerifyMessage.ts +8 -1
  604. package/src/api/btc/helpers/versionLimit.ts +7 -4
  605. package/src/api/cardano/CardanoGetAddress.ts +4 -0
  606. package/src/api/cardano/CardanoGetPublicKey.ts +4 -0
  607. package/src/api/cardano/CardanoSignMessage.ts +4 -0
  608. package/src/api/cardano/CardanoSignTransaction.ts +4 -0
  609. package/src/api/conflux/ConfluxGetAddress.ts +6 -0
  610. package/src/api/conflux/ConfluxSignMessage.ts +6 -0
  611. package/src/api/conflux/ConfluxSignMessageCIP23.ts +6 -0
  612. package/src/api/conflux/ConfluxSignTransaction.ts +8 -5
  613. package/src/api/cosmos/CosmosGetAddress.ts +4 -0
  614. package/src/api/cosmos/CosmosGetPublicKey.ts +4 -0
  615. package/src/api/cosmos/CosmosSignTransaction.ts +4 -0
  616. package/src/api/device/DeviceCancel.ts +5 -0
  617. package/src/api/device/DeviceChangePin.ts +31 -0
  618. package/src/api/device/DeviceFullyUploadResource.ts +4 -5
  619. package/src/api/device/DeviceLock.ts +5 -0
  620. package/src/api/device/DeviceRebootToBoardloader.ts +8 -1
  621. package/src/api/device/DeviceRebootToBootloader.ts +8 -1
  622. package/src/api/device/DeviceSettings.ts +211 -3
  623. package/src/api/device/DeviceSupportFeatures.ts +4 -0
  624. package/src/api/device/DeviceUnlock.ts +21 -3
  625. package/src/api/device/DeviceUpdateBootloader.ts +152 -8
  626. package/src/api/device/DeviceVerify.ts +25 -0
  627. package/src/api/device/DeviceWipe.ts +28 -0
  628. package/src/api/device/PreInitialize.ts +4 -0
  629. package/src/api/dynex/DnxGetAddress.ts +0 -6
  630. package/src/api/dynex/DnxSignTransaction.ts +0 -6
  631. package/src/api/evm/EVMGetAddress.ts +6 -2
  632. package/src/api/evm/EVMGetPublicKey.ts +6 -2
  633. package/src/api/evm/EVMSignMessage.ts +6 -2
  634. package/src/api/evm/EVMSignMessageEIP712.ts +1 -11
  635. package/src/api/evm/EVMSignTransaction.ts +6 -2
  636. package/src/api/evm/EVMSignTypedData.ts +42 -50
  637. package/src/api/evm/EVMVerifyMessage.ts +6 -2
  638. package/src/api/evm/legacyV1/getAddress.ts +2 -2
  639. package/src/api/evm/legacyV1/getPublicKey.ts +2 -2
  640. package/src/api/evm/legacyV1/signMessage.ts +2 -2
  641. package/src/api/evm/legacyV1/signTypedData.ts +2 -2
  642. package/src/api/evm/legacyV1/signTypedHash.ts +2 -2
  643. package/src/api/evm/legacyV1/verifyMessage.ts +2 -2
  644. package/src/api/evm/protocol.ts +6 -0
  645. package/src/api/filecoin/FilecoinGetAddress.ts +4 -0
  646. package/src/api/filecoin/FilecoinSignTransaction.ts +4 -0
  647. package/src/api/firmware/FirmwareArtifactSource.ts +305 -0
  648. package/src/api/firmware/FirmwareHostBinding.ts +123 -0
  649. package/src/api/firmware/FirmwarePreparationError.ts +12 -0
  650. package/src/api/firmware/FirmwarePreparedResourceArchive.ts +196 -0
  651. package/src/api/firmware/FirmwareUpdateBaseMethod.ts +214 -77
  652. package/src/api/firmware/FirmwareUpdateCapabilities.ts +9 -0
  653. package/src/api/firmware/FirmwareUpdatePlan.ts +905 -0
  654. package/src/api/firmware/FirmwareUpdatePreparedPlan.ts +490 -0
  655. package/src/api/firmware/getBinary.ts +8 -3
  656. package/src/api/firmware/protocolV2Release.ts +173 -0
  657. package/src/api/firmware/updateBootloader.ts +19 -4
  658. package/src/api/firmware/uploadFirmware.ts +157 -26
  659. package/src/api/helpers/base64Data.ts +85 -0
  660. package/src/api/helpers/batchGetPublickeys.ts +2 -2
  661. package/src/api/helpers/filesystemValidation.ts +61 -0
  662. package/src/api/helpers/paramsValidator.ts +1 -1
  663. package/src/api/helpers/protocolV2FileWrite.ts +266 -42
  664. package/src/api/index.ts +6 -30
  665. package/src/api/kaspa/KaspaGetAddress.ts +7 -0
  666. package/src/api/kaspa/KaspaSignTransaction.ts +369 -29
  667. package/src/api/kaspa/helpers/TransferSerialize.ts +17 -7
  668. package/src/api/lightning/LnurlAuth.ts +0 -4
  669. package/src/api/near/NearGetAddress.ts +4 -0
  670. package/src/api/near/NearSignTransaction.ts +4 -0
  671. package/src/api/nem/NEMGetAddress.ts +4 -0
  672. package/src/api/nem/NEMSignTransaction.ts +4 -0
  673. package/src/api/neo/NeoGetAddress.ts +0 -4
  674. package/src/api/neo/NeoSignTransaction.ts +0 -4
  675. package/src/api/nervos/NervosGetAddress.ts +0 -4
  676. package/src/api/nervos/NervosSignTransaction.ts +2 -6
  677. package/src/api/nexa/NexaGetAddress.ts +0 -4
  678. package/src/api/nexa/NexaSignTransaction.ts +3 -5
  679. package/src/api/nostr/NostrDecryptMessage.ts +4 -0
  680. package/src/api/nostr/NostrEncryptMessage.ts +4 -0
  681. package/src/api/nostr/NostrGetPublicKey.ts +4 -0
  682. package/src/api/nostr/NostrSignEvent.ts +4 -0
  683. package/src/api/nostr/NostrSignSchnorr.ts +4 -0
  684. package/src/api/polkadot/PolkadotGetAddress.ts +4 -0
  685. package/src/api/polkadot/PolkadotSignTransaction.ts +4 -0
  686. package/src/api/polkadot/networks.ts +3 -3
  687. package/src/api/protocol-v2/DeviceFactoryInfoGet.ts +5 -2
  688. package/src/api/protocol-v2/DeviceFactoryInfoSet.ts +6 -3
  689. package/src/api/protocol-v2/DeviceFirmwareUpdate.ts +13 -32
  690. package/src/api/protocol-v2/DeviceGetFirmwareUpdateStatus.ts +10 -6
  691. package/src/api/protocol-v2/DeviceGetOnboardingStatus.ts +6 -3
  692. package/src/api/protocol-v2/DeviceInfoGet.ts +11 -18
  693. package/src/api/protocol-v2/DeviceReboot.ts +12 -3
  694. package/src/api/protocol-v2/DeviceStatusGet.ts +6 -1
  695. package/src/api/protocol-v2/DeviceUploadNft.ts +249 -0
  696. package/src/api/protocol-v2/DeviceUploadWallpaper.ts +59 -21
  697. package/src/api/protocol-v2/FilesystemFormat.ts +5 -2
  698. package/src/api/protocol-v2/FilesystemPermissionFix.ts +5 -2
  699. package/src/api/protocol-v2/Ping.ts +37 -3
  700. package/src/api/protocol-v2/ProtocolInfoRequest.ts +8 -3
  701. package/src/api/protocol-v2/helpers.ts +1 -1
  702. package/src/api/scdo/ScdoGetAddress.ts +0 -4
  703. package/src/api/scdo/ScdoSignMessage.ts +0 -4
  704. package/src/api/scdo/ScdoSignTransaction.ts +0 -4
  705. package/src/api/solana/SolGetAddress.ts +4 -0
  706. package/src/api/solana/SolSignMessage.ts +5 -1
  707. package/src/api/solana/SolSignOffchainMessage.ts +5 -1
  708. package/src/api/solana/SolSignTransaction.ts +6 -2
  709. package/src/api/starcoin/StarcoinGetAddress.ts +4 -0
  710. package/src/api/starcoin/StarcoinGetPublicKey.ts +4 -0
  711. package/src/api/starcoin/StarcoinSignMessage.ts +4 -0
  712. package/src/api/starcoin/StarcoinSignTransaction.ts +4 -0
  713. package/src/api/starcoin/StarcoinVerifyMessage.ts +4 -0
  714. package/src/api/stellar/StellarGetAddress.ts +1 -10
  715. package/src/api/stellar/StellarSignTransaction.ts +1 -14
  716. package/src/api/sui/SuiGetAddress.ts +5 -1
  717. package/src/api/sui/SuiGetPublicKey.ts +5 -1
  718. package/src/api/sui/SuiSignMessage.ts +5 -1
  719. package/src/api/sui/SuiSignTransaction.ts +5 -1
  720. package/src/api/ton/TonGetAddress.ts +5 -1
  721. package/src/api/ton/TonSignData.ts +5 -1
  722. package/src/api/ton/TonSignMessage.ts +10 -4
  723. package/src/api/ton/TonSignProof.ts +5 -1
  724. package/src/api/tron/TronGetAddress.ts +4 -0
  725. package/src/api/tron/TronSignMessage.ts +19 -8
  726. package/src/api/tron/TronSignTransaction.ts +5 -1
  727. package/src/api/utils.ts +32 -3
  728. package/src/api/xrp/XrpGetAddress.ts +4 -0
  729. package/src/api/xrp/XrpSignTransaction.ts +5 -1
  730. package/src/constants/index.ts +1 -4
  731. package/src/core/RequestQueue.ts +0 -18
  732. package/src/core/deviceEventRegistration.ts +6 -0
  733. package/src/core/index.ts +512 -195
  734. package/src/core/uiPromiseRegistry.ts +63 -0
  735. package/src/data/messages/messages-protocol-v2.json +523 -449
  736. package/src/data/messages/messages.json +286 -1
  737. package/src/data-manager/DataManager.ts +162 -44
  738. package/src/data-manager/TransportManager.ts +10 -2
  739. package/src/data-manager/connectSettings.ts +11 -0
  740. package/src/device/Device.ts +1021 -267
  741. package/src/device/DeviceCommands.ts +204 -162
  742. package/src/device/DeviceConnector.ts +54 -21
  743. package/src/device/DeviceFeaturesState.ts +25 -0
  744. package/src/device/DevicePool.ts +108 -23
  745. package/src/device/DeviceStateMapper.ts +422 -0
  746. package/src/device/DeviceStateProjector.ts +152 -0
  747. package/src/device/DeviceStateStore.ts +232 -0
  748. package/src/device/DeviceWalletSessionStore.ts +72 -6
  749. package/src/device/cloneDeviceState.ts +39 -0
  750. package/src/device/deviceIdentity.ts +18 -0
  751. package/src/deviceProfile/buildDeviceFeatures.ts +215 -192
  752. package/src/deviceProfile/index.ts +0 -1
  753. package/src/deviceProfile/protocolV2DeviceIdentity.ts +35 -0
  754. package/src/events/call.ts +0 -6
  755. package/src/events/core.ts +0 -2
  756. package/src/events/device.ts +22 -1
  757. package/src/events/iframe.ts +0 -1
  758. package/src/events/logBlockEvent.ts +93 -2
  759. package/src/events/ui-promise.ts +4 -2
  760. package/src/events/ui-request.ts +61 -4
  761. package/src/events/ui-response.ts +12 -2
  762. package/src/index.ts +7 -4
  763. package/src/inject.ts +89 -55
  764. package/src/lowLevelInject.ts +11 -7
  765. package/src/protocols/protocol-v2/deviceSession.ts +24 -0
  766. package/src/protocols/protocol-v2/features.ts +118 -52
  767. package/src/protocols/protocol-v2/firmware.ts +3 -1
  768. package/src/protocols/protocol-v2/index.ts +9 -3
  769. package/src/protocols/protocol-v2/resources.ts +165 -0
  770. package/src/protocols/protocol-v2/settingsUnlockPolicy.ts +65 -0
  771. package/src/protocols/protocol-v2/uiInteraction.ts +250 -0
  772. package/src/protocols/protocol-v2/unlockPolicy.ts +1 -0
  773. package/src/protocols/protocol-v2/unlockPolicyRunner.ts +136 -0
  774. package/src/protocols/protocol-v2/walletSession.ts +417 -61
  775. package/src/topLevelInject.ts +11 -6
  776. package/src/types/api/checkAllFirmwareRelease.ts +72 -9
  777. package/src/types/api/checkBLEFirmwareRelease.ts +4 -13
  778. package/src/types/api/checkBootloaderRelease.ts +2 -6
  779. package/src/types/api/checkFirmwareRelease.ts +2 -13
  780. package/src/types/api/checkFirmwareTypeAvailable.ts +2 -2
  781. package/src/types/api/detectDeviceConnectProtocol.ts +6 -0
  782. package/src/types/api/deviceSettings.ts +26 -2
  783. package/src/types/api/deviceUnlock.ts +13 -2
  784. package/src/types/api/deviceUpdateBootloader.ts +7 -0
  785. package/src/types/api/export.ts +33 -1
  786. package/src/types/api/firmwareUpdate.ts +85 -11
  787. package/src/types/api/firmwareUpdateCapabilities.ts +9 -0
  788. package/src/types/api/firmwareUpdatePlan.ts +38 -0
  789. package/src/types/api/firmwareUpdatePreparedPlan.ts +53 -0
  790. package/src/types/api/getDeviceState.ts +19 -0
  791. package/src/types/api/getFeatures.ts +3 -0
  792. package/src/types/api/getOnekeyFeatures.ts +3 -0
  793. package/src/types/api/getPassphraseState.ts +7 -0
  794. package/src/types/api/index.ts +43 -73
  795. package/src/types/api/kaspaSignTransaction.ts +60 -4
  796. package/src/types/api/openWalletSession.ts +54 -0
  797. package/src/types/api/protocolV2.ts +23 -188
  798. package/src/types/api/sessionCache.ts +9 -4
  799. package/src/types/device.ts +211 -9
  800. package/src/types/params.ts +9 -2
  801. package/src/types/settings.ts +37 -25
  802. package/src/utils/assets.ts +4 -1
  803. package/src/utils/deviceFeaturesCompat.ts +196 -0
  804. package/src/utils/deviceFeaturesUtils.ts +42 -9
  805. package/src/utils/deviceInfoUtils.ts +37 -70
  806. package/src/utils/deviceSettings.ts +181 -39
  807. package/src/utils/deviceVersionUtils.ts +25 -44
  808. package/src/utils/findDefectiveBatchDevice.ts +3 -3
  809. package/src/utils/homescreen.ts +40 -0
  810. package/src/utils/index.ts +26 -7
  811. package/src/utils/networkUtils.ts +274 -16
  812. package/src/utils/pro2Nft.ts +165 -0
  813. package/src/utils/pro2Wallpaper.ts +44 -25
  814. package/src/utils/tracing.ts +3 -1
  815. package/src/utils/uiProgressThrottle.ts +63 -0
  816. package/tsconfig.type-tests.json +12 -0
  817. package/__tests__/RequestQueue.test.ts +0 -34
  818. package/dist/api/GetDeviceInfo.d.ts +0 -9
  819. package/dist/api/GetDeviceInfo.d.ts.map +0 -1
  820. package/dist/api/firmware/progressThrottle.d.ts +0 -3
  821. package/dist/api/firmware/progressThrottle.d.ts.map +0 -1
  822. package/dist/api/protocol-v2/DeviceSessionGet.d.ts +0 -6
  823. package/dist/api/protocol-v2/DeviceSessionGet.d.ts.map +0 -1
  824. package/dist/api/protocol-v2/DeviceSettingsGet.d.ts +0 -6
  825. package/dist/api/protocol-v2/DeviceSettingsGet.d.ts.map +0 -1
  826. package/dist/api/protocol-v2/DeviceSettingsPageShow.d.ts +0 -16
  827. package/dist/api/protocol-v2/DeviceSettingsPageShow.d.ts.map +0 -1
  828. package/dist/api/protocol-v2/DeviceSettingsSet.d.ts +0 -12
  829. package/dist/api/protocol-v2/DeviceSettingsSet.d.ts.map +0 -1
  830. package/dist/deviceProfile/buildDeviceProfile.d.ts +0 -21
  831. package/dist/deviceProfile/buildDeviceProfile.d.ts.map +0 -1
  832. package/dist/protocols/protocol-v2/lockedError.d.ts +0 -2
  833. package/dist/protocols/protocol-v2/lockedError.d.ts.map +0 -1
  834. package/dist/protocols/protocol-v2/unlockRetry.d.ts +0 -9
  835. package/dist/protocols/protocol-v2/unlockRetry.d.ts.map +0 -1
  836. package/dist/types/api/getDeviceInfo.d.ts +0 -87
  837. package/dist/types/api/getDeviceInfo.d.ts.map +0 -1
  838. package/src/api/GetDeviceInfo.ts +0 -145
  839. package/src/api/firmware/progressThrottle.ts +0 -44
  840. package/src/api/protocol-v2/DeviceSessionGet.ts +0 -15
  841. package/src/api/protocol-v2/DeviceSettingsGet.ts +0 -16
  842. package/src/api/protocol-v2/DeviceSettingsPageShow.ts +0 -59
  843. package/src/api/protocol-v2/DeviceSettingsSet.ts +0 -39
  844. package/src/deviceProfile/buildDeviceProfile.ts +0 -354
  845. package/src/protocols/protocol-v2/lockedError.ts +0 -10
  846. package/src/protocols/protocol-v2/unlockRetry.ts +0 -36
  847. package/src/types/api/getDeviceInfo.ts +0 -101
@@ -9,20 +9,33 @@ import {
9
9
  getDeviceBLEFirmwareVersion,
10
10
  getDeviceBootloaderVersion,
11
11
  getDeviceFirmwareVersion,
12
- getDeviceType,
13
- getFirmwareType,
12
+ getDeviceUUID,
14
13
  getLogger,
15
14
  } from '../utils';
16
15
  import { getBinary, getSysResourceBinary } from './firmware/getBinary';
16
+ import { normalizeFirmwarePreparationError } from './firmware/FirmwarePreparationError';
17
17
  import { DataManager } from '../data-manager';
18
18
  import { FirmwareUpdateBaseMethod } from './firmware/FirmwareUpdateBaseMethod';
19
19
  import { DevicePool } from '../device/DevicePool';
20
20
  import { DEVICE } from '../events';
21
21
  import { buildProtocolV1FeaturesPayload } from '../deviceProfile';
22
-
23
- import type { FirmwareUpdateV3Params } from '../types/api/firmwareUpdate';
22
+ import { openFirmwareByteSource } from './firmware/FirmwareArtifactSource';
23
+ import { resolveFirmwareUpdateHostBinding } from './firmware/FirmwareHostBinding';
24
+ import { readVerifiedPreparedResourceArchive } from './firmware/FirmwarePreparedResourceArchive';
25
+ import {
26
+ assertFirmwareUpdatePreparedPlanBinding,
27
+ assertFirmwareUpdatePreparedPlanDeviceIdentity,
28
+ getFirmwareUpdatePreparedRawArtifact,
29
+ validateFirmwareUpdatePreparedPlan,
30
+ } from './firmware/FirmwareUpdatePreparedPlan';
31
+
32
+ import type {
33
+ FirmwareArtifactReference,
34
+ FirmwareUpdateV3Params,
35
+ } from '../types/api/firmwareUpdate';
24
36
  import type { Deferred, EFirmwareType } from '@onekeyfe/hd-shared';
25
37
  import type { TypedResponseMessage } from '../device/DeviceCommands';
38
+ import type { FirmwareByteSource } from './firmware/FirmwareArtifactSource';
26
39
 
27
40
  const Log = getLogger(LoggerNames.Method);
28
41
 
@@ -44,6 +57,8 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
44
57
 
45
58
  private isSwitchFirmware = false;
46
59
 
60
+ private artifactSources: FirmwareByteSource[] = [];
61
+
47
62
  init() {
48
63
  this.allowDeviceMode = [UI_REQUEST.BOOTLOADER, UI_REQUEST.NOT_INITIALIZE];
49
64
  this.requireDeviceMode = [];
@@ -64,8 +79,97 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
64
79
  { name: 'firmwareType', type: 'string' },
65
80
  { name: 'platform', type: 'string' },
66
81
  ]);
82
+ const hasPreparedPlan = payload.preparedPlan !== undefined;
83
+ if (!hasPreparedPlan && payload.artifacts !== undefined) {
84
+ throw ERRORS.TypedError(
85
+ HardwareErrorCode.CallMethodInvalidParameter,
86
+ 'Firmware artifacts require a prepared plan'
87
+ );
88
+ }
89
+ const preparedPlan = hasPreparedPlan
90
+ ? validateFirmwareUpdatePreparedPlan(payload.preparedPlan)
91
+ : undefined;
92
+ const hasLegacyInputs = [
93
+ payload.bleVersion,
94
+ payload.bleBinary,
95
+ payload.firmwareVersion,
96
+ payload.firmwareBinary,
97
+ payload.resourceBinary,
98
+ payload.bootloaderVersion,
99
+ payload.bootloaderBinary,
100
+ ].some(input => input !== undefined);
101
+ if (preparedPlan && hasLegacyInputs) {
102
+ throw ERRORS.TypedError(
103
+ HardwareErrorCode.CallMethodInvalidParameter,
104
+ 'Prepared firmware plans cannot be combined with legacy firmware inputs'
105
+ );
106
+ }
107
+ const artifactReader = preparedPlan
108
+ ? resolveFirmwareUpdateHostBinding(
109
+ payload.hostBindingGeneration,
110
+ preparedPlan.preparedPlanDigest
111
+ ).artifactReader
112
+ : payload.artifactReader;
113
+ const preparedArtifacts: NonNullable<FirmwareUpdateV3Params['artifacts']> = {};
114
+ if (preparedPlan) {
115
+ const componentTargets = ['bootloader', 'firmware', 'ble'] as const;
116
+ const supportedTargets = new Set<string>([...componentTargets, 'resource']);
117
+ const unsupportedTarget = preparedPlan.targetsToUpdate.find(
118
+ target => !supportedTargets.has(target)
119
+ );
120
+ if (unsupportedTarget) {
121
+ throw ERRORS.TypedError(
122
+ HardwareErrorCode.RuntimeError,
123
+ `Firmware prepared plan target ${unsupportedTarget} is not supported by V3`,
124
+ { firmwareUpdateCode: 'FirmwarePreparedPlanInvalid' }
125
+ );
126
+ }
127
+ for (const target of componentTargets) {
128
+ if (preparedPlan.targetsToUpdate.includes(target)) {
129
+ preparedArtifacts[target] = getFirmwareUpdatePreparedRawArtifact({
130
+ preparedPlan,
131
+ target,
132
+ role: target,
133
+ }).artifact;
134
+ }
135
+ }
136
+ const resourceBindings = (payload.artifacts?.resourceEntries ?? []).map(
137
+ (entry: { entryName: string; artifact: FirmwareArtifactReference }) => ({
138
+ target: 'resource' as const,
139
+ entryName: entry.entryName,
140
+ artifact: entry.artifact,
141
+ })
142
+ );
143
+ assertFirmwareUpdatePreparedPlanBinding({
144
+ preparedPlan,
145
+ executor: 'v3',
146
+ platform: payload.platform,
147
+ scopeTargets: [
148
+ 'bootloader',
149
+ 'firmware',
150
+ 'ble',
151
+ ...(resourceBindings.length ? (['resource'] as const) : []),
152
+ ],
153
+ bindings: [
154
+ ...componentTargets.flatMap(target => {
155
+ const plannedArtifact = preparedArtifacts[target];
156
+ const suppliedArtifact = payload.artifacts?.[target];
157
+ return plannedArtifact || suppliedArtifact
158
+ ? [
159
+ {
160
+ target,
161
+ artifact: suppliedArtifact ?? (plannedArtifact as FirmwareArtifactReference),
162
+ },
163
+ ]
164
+ : [];
165
+ }),
166
+ ...resourceBindings,
167
+ ],
168
+ });
169
+ }
67
170
 
68
171
  this.params = {
172
+ preparedPlan,
69
173
  bleBinary: payload.bleBinary,
70
174
  firmwareBinary: payload.firmwareBinary,
71
175
  forcedUpdateRes: payload.forcedUpdateRes,
@@ -74,18 +178,14 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
74
178
  bootloaderBinary: payload.bootloaderBinary,
75
179
  firmwareVersion: payload.firmwareVersion,
76
180
  resourceBinary: payload.resourceBinary,
77
- firmwareType: payload.firmwareType,
181
+ firmwareType: preparedPlan?.firmwareType ?? payload.firmwareType,
78
182
  platform: payload.platform,
183
+ artifactReader,
184
+ artifacts: preparedPlan ? preparedArtifacts : undefined,
79
185
  };
80
186
  }
81
187
 
82
188
  async run() {
83
- if (this.device.isProtocolV2()) {
84
- throw ERRORS.TypedError(
85
- HardwareErrorCode.RuntimeError,
86
- 'Protocol V2 firmware update must use firmwareUpdateV4'
87
- );
88
- }
89
189
  Log.debug('FirmwareUpdateV3 strategy: Protocol V1');
90
190
  return this.runProtocolV1();
91
191
  }
@@ -97,47 +197,61 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
97
197
  const { device } = this;
98
198
  const { features } = device;
99
199
 
100
- const deviceType = getDeviceType(features);
101
- const bootloaderCurrVersion = getDeviceBootloaderVersion(features).join('.');
200
+ const deviceType = device.getCurrentDeviceType();
201
+ const bootloaderCurrVersion = device.getCurrentBootloaderVersionString() ?? '0.0.0';
102
202
 
103
203
  this.validateDeviceAndVersion(deviceType, bootloaderCurrVersion);
104
204
 
105
205
  if (!features) {
106
206
  throw ERRORS.TypedError(HardwareErrorCode.RuntimeError, 'Device features not available');
107
207
  }
208
+ if (this.params.preparedPlan) {
209
+ assertFirmwareUpdatePreparedPlanDeviceIdentity({
210
+ preparedPlan: this.params.preparedPlan,
211
+ deviceIdentity: getDeviceUUID(features) || undefined,
212
+ });
213
+ }
108
214
 
109
- const deviceFirmwareType = getFirmwareType(features);
215
+ const deviceFirmwareType = device.getCurrentFirmwareType();
110
216
  const firmwareType = this.params.firmwareType ?? deviceFirmwareType;
111
217
  this.isSwitchFirmware = firmwareType !== deviceFirmwareType;
112
218
 
113
219
  let resourceBinary: ArrayBuffer | null = null;
114
- let fwBinaryMap: { fileName: string; binary: ArrayBuffer }[] = [];
115
- let bootloaderBinary: ArrayBuffer | null = null;
220
+ let resourceEntries: Array<{ entryName: string; source: FirmwareByteSource }> = [];
221
+ let fwSources: Array<{ fileName: string; source: FirmwareByteSource }> = [];
222
+ let bootloaderSource: FirmwareByteSource | null = null;
116
223
  try {
117
224
  this.postTipMessage(FirmwareUpdateTipMessage.StartDownloadFirmware);
118
- resourceBinary = await this.prepareResourceBinary(firmwareType);
119
- fwBinaryMap = await this.prepareFirmwareAndBleBinary(firmwareType);
120
- bootloaderBinary = await this.prepareBootloaderBinary(firmwareType);
225
+ const resourceInput = await this.prepareResourceInput(firmwareType);
226
+ resourceBinary = resourceInput.resourceBinary;
227
+ resourceEntries = resourceInput.resourceEntries;
228
+ fwSources = await this.prepareFirmwareAndBleSources(firmwareType);
229
+ bootloaderSource = await this.prepareBootloaderSource(firmwareType);
121
230
  this.postTipMessage(FirmwareUpdateTipMessage.FinishDownloadFirmware);
122
231
  } catch (err) {
123
- throw ERRORS.TypedError(HardwareErrorCode.FirmwareUpdateDownloadFailed, err.message ?? err);
232
+ await this.closeArtifactSources();
233
+ throw normalizeFirmwarePreparationError(err);
124
234
  }
125
235
 
126
- if (!bootloaderBinary && fwBinaryMap.length === 0) {
236
+ if (!bootloaderSource && fwSources.length === 0) {
237
+ await this.closeArtifactSources();
127
238
  throw ERRORS.TypedError(
128
239
  HardwareErrorCode.FirmwareUpdateDownloadFailed,
129
240
  'No firmware to update'
130
241
  );
131
242
  }
132
243
 
133
- await this.enterBootloaderMode();
134
-
135
- const updateResult = await this.executeUpdate({
136
- resourceBinary,
137
- fwBinaryMap,
138
- bootloaderBinary,
139
- });
140
- return updateResult;
244
+ try {
245
+ await this.enterBootloaderMode();
246
+ return await this.executeUpdate({
247
+ resourceBinary,
248
+ resourceEntries,
249
+ fwSources,
250
+ bootloaderSource,
251
+ });
252
+ } finally {
253
+ await this.closeArtifactSources();
254
+ }
141
255
  }
142
256
 
143
257
  private validateDeviceAndVersion(deviceType: EDeviceType, bootloaderVersion: string) {
@@ -157,12 +271,81 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
157
271
  }
158
272
  }
159
273
 
160
- private async prepareResourceBinary(firmwareType: EFirmwareType) {
274
+ private async openArtifactSource(
275
+ binary: ArrayBuffer | undefined,
276
+ artifact: FirmwareArtifactReference | undefined
277
+ ) {
278
+ const source = await openFirmwareByteSource({
279
+ binary,
280
+ artifact,
281
+ reader: this.params.artifactReader,
282
+ });
283
+ if (source) {
284
+ this.artifactSources.push(source);
285
+ }
286
+ return source;
287
+ }
288
+
289
+ private async closeArtifactSources() {
290
+ const sources = this.artifactSources.splice(0);
291
+ await Promise.all(sources.map(source => source.close().catch(() => undefined)));
292
+ }
293
+
294
+ private assertSdkDownloadAllowed(artifactName: string) {
295
+ if (
296
+ this.params.artifactReader ||
297
+ DataManager.getSettings('firmwareManifestMode') === 'external-only'
298
+ ) {
299
+ throw ERRORS.TypedError(
300
+ HardwareErrorCode.RuntimeError,
301
+ `${artifactName} must be prepared by the external firmware host`,
302
+ {
303
+ firmwareUpdateCode: 'FirmwareArtifactsNotPrepared',
304
+ artifactName,
305
+ }
306
+ );
307
+ }
308
+ }
309
+
310
+ private async prepareResourceInput(firmwareType: EFirmwareType) {
311
+ if (this.params.preparedPlan?.targetsToUpdate.includes('resource')) {
312
+ const verifiedEntries = await readVerifiedPreparedResourceArchive({
313
+ preparedPlan: this.params.preparedPlan,
314
+ reader: this.params.artifactReader,
315
+ });
316
+ const resourceEntries: Array<{ entryName: string; source: FirmwareByteSource }> = [];
317
+ for (const entry of verifiedEntries) {
318
+ const source = await this.openArtifactSource(entry.binary, undefined);
319
+ if (!source) {
320
+ throw ERRORS.TypedError(
321
+ HardwareErrorCode.RuntimeError,
322
+ `Firmware resource entry ${entry.entryName} is empty`,
323
+ {
324
+ firmwareUpdateCode: 'FirmwareArtifactReceiptMismatch',
325
+ artifactName: 'resource',
326
+ }
327
+ );
328
+ }
329
+ resourceEntries.push({ entryName: entry.entryName, source });
330
+ }
331
+ return {
332
+ resourceBinary: null,
333
+ resourceEntries,
334
+ };
335
+ }
161
336
  if (this.params.resourceBinary) {
162
- return this.params.resourceBinary;
337
+ return {
338
+ resourceBinary: this.params.resourceBinary,
339
+ resourceEntries: [],
340
+ };
163
341
  }
164
342
  const { features } = this.device;
165
- if (!features) return null;
343
+ if (!features) {
344
+ return {
345
+ resourceBinary: null,
346
+ resourceEntries: [],
347
+ };
348
+ }
166
349
  const resourceUrl = DataManager.getSysResourcesLatestRelease({
167
350
  features,
168
351
  forcedUpdateRes: this.params.forcedUpdateRes,
@@ -170,16 +353,27 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
170
353
  });
171
354
 
172
355
  if (resourceUrl) {
173
- const resource = (await getSysResourceBinary(resourceUrl)).binary;
174
- return resource;
356
+ this.assertSdkDownloadAllowed('resource');
357
+ return {
358
+ resourceBinary: (await getSysResourceBinary(resourceUrl)).binary,
359
+ resourceEntries: [],
360
+ };
175
361
  }
176
362
  Log.warn('No resource url found');
177
- return null;
363
+ return {
364
+ resourceBinary: null,
365
+ resourceEntries: [],
366
+ };
178
367
  }
179
368
 
180
- private async prepareBootloaderBinary(firmwareType: EFirmwareType): Promise<ArrayBuffer | null> {
181
- if (this.params.bootloaderBinary) {
182
- return this.params.bootloaderBinary;
369
+ private async prepareBootloaderSource(
370
+ firmwareType: EFirmwareType
371
+ ): Promise<FirmwareByteSource | null> {
372
+ if (this.params.bootloaderBinary || this.params.artifacts?.bootloader) {
373
+ return this.openArtifactSource(
374
+ this.params.bootloaderBinary,
375
+ this.params.artifacts?.bootloader
376
+ );
183
377
  }
184
378
  const { features } = this.device;
185
379
  if (!features) return null;
@@ -187,23 +381,35 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
187
381
  if (this.params.bootloaderVersion) {
188
382
  const bootResourceUrl = DataManager.getBootloaderResource(features, firmwareType);
189
383
  if (bootResourceUrl) {
384
+ this.assertSdkDownloadAllowed('bootloader');
190
385
  const bootBinary = (await getSysResourceBinary(bootResourceUrl)).binary;
191
- return bootBinary;
386
+ return this.openArtifactSource(bootBinary, undefined);
192
387
  }
193
388
  }
194
389
  return null;
195
390
  }
196
391
 
197
- private async prepareFirmwareAndBleBinary(firmwareType: EFirmwareType) {
198
- const fwBinaryMap: { fileName: string; binary: ArrayBuffer }[] = [];
199
- if (this.params.firmwareBinary) {
200
- fwBinaryMap.push({
392
+ private async prepareFirmwareAndBleSources(firmwareType: EFirmwareType) {
393
+ const fwSources: Array<{ fileName: string; source: FirmwareByteSource }> = [];
394
+ if (this.params.firmwareBinary || this.params.artifacts?.firmware) {
395
+ const source = await this.openArtifactSource(
396
+ this.params.firmwareBinary,
397
+ this.params.artifacts?.firmware
398
+ );
399
+ if (!source) {
400
+ throw ERRORS.TypedError(
401
+ HardwareErrorCode.RuntimeError,
402
+ 'Firmware artifact is not prepared'
403
+ );
404
+ }
405
+ fwSources.push({
201
406
  fileName: 'firmware.bin',
202
- binary: this.params.firmwareBinary,
407
+ source,
203
408
  });
204
409
  } else if (this.params.firmwareVersion) {
205
410
  const { features } = this.device;
206
411
  if (features) {
412
+ this.assertSdkDownloadAllowed('firmware');
207
413
  const firmwareBinary = (
208
414
  await getBinary({
209
415
  features,
@@ -213,44 +419,65 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
213
419
  firmwareType,
214
420
  })
215
421
  ).binary;
216
- fwBinaryMap.push({
422
+ const source = await this.openArtifactSource(firmwareBinary, undefined);
423
+ if (!source) {
424
+ throw ERRORS.TypedError(
425
+ HardwareErrorCode.RuntimeError,
426
+ 'Firmware binary is not prepared'
427
+ );
428
+ }
429
+ fwSources.push({
217
430
  fileName: 'firmware.bin',
218
- binary: firmwareBinary,
431
+ source,
219
432
  });
220
433
  }
221
434
  }
222
435
 
223
- if (this.params.bleBinary) {
224
- fwBinaryMap.push({
436
+ if (this.params.bleBinary || this.params.artifacts?.ble) {
437
+ const source = await this.openArtifactSource(
438
+ this.params.bleBinary,
439
+ this.params.artifacts?.ble
440
+ );
441
+ if (!source) {
442
+ throw ERRORS.TypedError(HardwareErrorCode.RuntimeError, 'BLE artifact is not prepared');
443
+ }
444
+ fwSources.push({
225
445
  fileName: 'ble-firmware.bin',
226
- binary: this.params.bleBinary,
446
+ source,
227
447
  });
228
448
  } else if (this.params.bleVersion) {
229
449
  const { features } = this.device;
230
450
  if (features) {
451
+ this.assertSdkDownloadAllowed('ble');
231
452
  const bleBinary = await getBinary({
232
453
  features,
233
454
  version: this.params.bleVersion,
234
455
  updateType: 'ble',
235
456
  firmwareType,
236
457
  });
237
- fwBinaryMap.push({
458
+ const source = await this.openArtifactSource(bleBinary.binary, undefined);
459
+ if (!source) {
460
+ throw ERRORS.TypedError(HardwareErrorCode.RuntimeError, 'BLE binary is not prepared');
461
+ }
462
+ fwSources.push({
238
463
  fileName: 'ble-firmware.bin',
239
- binary: bleBinary.binary,
464
+ source,
240
465
  });
241
466
  }
242
467
  }
243
- return fwBinaryMap;
468
+ return fwSources;
244
469
  }
245
470
 
246
471
  private async executeUpdate({
247
472
  resourceBinary,
248
- fwBinaryMap,
249
- bootloaderBinary,
473
+ resourceEntries,
474
+ fwSources,
475
+ bootloaderSource,
250
476
  }: {
251
477
  resourceBinary: ArrayBuffer | null;
252
- fwBinaryMap: { fileName: string; binary: ArrayBuffer }[];
253
- bootloaderBinary: ArrayBuffer | null;
478
+ resourceEntries: Array<{ entryName: string; source: FirmwareByteSource }>;
479
+ fwSources: Array<{ fileName: string; source: FirmwareByteSource }>;
480
+ bootloaderSource: FirmwareByteSource | null;
254
481
  }) {
255
482
  let totalSize = 0;
256
483
  let processedSize = 0;
@@ -258,11 +485,14 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
258
485
  if (resourceBinary) {
259
486
  totalSize += resourceBinary.byteLength;
260
487
  }
261
- for (const fwbinary of fwBinaryMap) {
262
- totalSize += fwbinary.binary.byteLength;
488
+ for (const entry of resourceEntries) {
489
+ totalSize += entry.source.size;
263
490
  }
264
- if (bootloaderBinary) {
265
- totalSize += bootloaderBinary.byteLength;
491
+ for (const firmware of fwSources) {
492
+ totalSize += firmware.source.size;
493
+ }
494
+ if (bootloaderSource) {
495
+ totalSize += bootloaderSource.size;
266
496
  }
267
497
 
268
498
  this.postTipMessage(FirmwareUpdateTipMessage.StartTransferData);
@@ -285,9 +515,18 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
285
515
  }
286
516
  }
287
517
 
288
- if (bootloaderBinary) {
289
- processedSize = await this.emmcCommonUpdateProcess({
290
- payload: bootloaderBinary,
518
+ for (const entry of resourceEntries) {
519
+ processedSize = await this.emmcCommonUpdateProcessFromSource({
520
+ source: entry.source,
521
+ filePath: `0:res/${entry.entryName}`,
522
+ processedSize,
523
+ totalSize,
524
+ });
525
+ }
526
+
527
+ if (bootloaderSource) {
528
+ processedSize = await this.emmcCommonUpdateProcessFromSource({
529
+ source: bootloaderSource,
291
530
  filePath: `0:boot/bootloader.bin`,
292
531
  processedSize,
293
532
  totalSize,
@@ -296,11 +535,11 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
296
535
 
297
536
  await this.createUpdatesFolderIfNotExists(`0:updates/`);
298
537
 
299
- for (const fwbinary of fwBinaryMap) {
300
- if (fwbinary) {
301
- processedSize = await this.emmcCommonUpdateProcess({
302
- payload: fwbinary.binary,
303
- filePath: `0:updates/${fwbinary.fileName}`,
538
+ for (const firmware of fwSources) {
539
+ if (firmware) {
540
+ processedSize = await this.emmcCommonUpdateProcessFromSource({
541
+ source: firmware.source,
542
+ filePath: `0:updates/${firmware.fileName}`,
304
543
  processedSize,
305
544
  totalSize,
306
545
  });
@@ -327,6 +566,7 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
327
566
  HardwareErrorCode.BlePermissionError,
328
567
  HardwareErrorCode.BleLocationError,
329
568
  HardwareErrorCode.BleDeviceBondError,
569
+ HardwareErrorCode.BlePeerRemovedPairingInformation,
330
570
  HardwareErrorCode.BleCharacteristicNotifyError,
331
571
  HardwareErrorCode.BleTimeoutError,
332
572
  HardwareErrorCode.BleWriteCharacteristicError,
@@ -370,29 +610,40 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
370
610
  try {
371
611
  const typedCall = this.device.getCommands().typedCall.bind(this.device.getCommands());
372
612
  const timeoutMs = 3000;
373
- const featuresRes = await Promise.race<TypedResponseMessage<'Features'>>([
374
- typedCall('GetFeatures', 'Features', {}),
375
- new Promise<never>((_, reject) => {
376
- setTimeout(
377
- () =>
378
- reject(
379
- ERRORS.TypedError(
380
- HardwareErrorCode.CallMethodNotResponse,
381
- 'GetFeatures timeout',
382
- { method: 'GetFeatures', timeoutMs }
383
- )
384
- ),
385
- timeoutMs
386
- );
387
- }),
388
- ]);
613
+ const isBrowserWebUsb = DataManager.isBrowserWebUsb(DataManager.getSettings('env'));
614
+ const getFeaturesPromise = isBrowserWebUsb
615
+ ? typedCall('GetFeatures', 'Features', {}, { timeoutMs })
616
+ : typedCall('GetFeatures', 'Features', {});
617
+ // WebUSB owns timeout cleanup so a reboot cannot leave a pending transfer blocking reconnect.
618
+ const featuresRes = isBrowserWebUsb
619
+ ? await getFeaturesPromise
620
+ : await Promise.race<TypedResponseMessage<'Features'>>([
621
+ getFeaturesPromise,
622
+ new Promise<never>((_, reject) => {
623
+ setTimeout(
624
+ () =>
625
+ reject(
626
+ ERRORS.TypedError(
627
+ HardwareErrorCode.CallMethodNotResponse,
628
+ 'GetFeatures timeout',
629
+ { method: 'GetFeatures', timeoutMs }
630
+ )
631
+ ),
632
+ timeoutMs
633
+ );
634
+ }),
635
+ ]);
389
636
  getFeaturesTimeoutCount = 0;
390
637
  const features = buildProtocolV1FeaturesPayload(featuresRes.message, this.device.features);
391
638
  const bootloaderVersion = getDeviceBootloaderVersion(features).join('.');
392
639
  const bleVersion = getDeviceBLEFirmwareVersion(features).join('.');
393
640
  const firmwareVersion = getDeviceFirmwareVersion(features).join('.');
394
- // Treat update as complete once firmware version becomes non-zero
395
- if (firmwareVersion !== '0.0.0') {
641
+ // Browser WebUSB may read updater Features before the final reboot. Do not let cached
642
+ // pre-update versions promote a current 0.0.0 response to install completion.
643
+ const completionFirmwareVersion = isBrowserWebUsb
644
+ ? getDeviceFirmwareVersion(featuresRes.message).join('.')
645
+ : firmwareVersion;
646
+ if (completionFirmwareVersion !== '0.0.0') {
396
647
  this.postTipMessage(FirmwareUpdateTipMessage.FirmwareUpdateCompleted);
397
648
  DevicePool.resetState();
398
649
  return {
@@ -401,7 +652,6 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
401
652
  firmwareVersion,
402
653
  };
403
654
  }
404
- // Still in update mode; continue polling (e.g., iOS may return firmwareVersion 0.0.0 during switches)
405
655
  await wait(1000);
406
656
  } catch (error) {
407
657
  Log.log('getFeatures error', error);
@@ -431,7 +681,8 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
431
681
  * 2. While including bootloader upgrade
432
682
  */
433
683
  const reconnectTimeout =
434
- this.isBleReconnect() && (this.params.bleBinary || this.params.bleVersion)
684
+ this.isBleReconnect() &&
685
+ (this.params.bleBinary || this.params.bleVersion || this.params.artifacts?.ble)
435
686
  ? 3 * 60 * 1000 // 3 minutes for BLE reconnect
436
687
  : 60 * 1000; // 1 minute for normal reconnect
437
688
 
@@ -511,7 +762,8 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
511
762
  await this.device.deviceConnector?.acquire(
512
763
  this.device.originalDescriptor.id,
513
764
  null,
514
- true
765
+ true,
766
+ this.payload.connectProtocol ?? this.device.originalDescriptor.protocolType
515
767
  );
516
768
  const typedCall = this.device.getCommands().typedCall.bind(this.device.getCommands());
517
769
  await Promise.race([
@@ -548,11 +800,18 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
548
800
  webUsbCheckCount = 0;
549
801
  }
550
802
 
551
- const { deviceList } = await DevicePool.getDevices(devicesDescriptor, this.connectId);
803
+ const { deviceList } = await DevicePool.getDevices(devicesDescriptor, this.connectId, {
804
+ connectProtocol:
805
+ this.payload.connectProtocol ?? this.device.originalDescriptor.protocolType,
806
+ });
552
807
 
553
808
  if (deviceList.length === 1) {
554
809
  this.device.updateFromCache(deviceList[0]);
555
- await this.device.acquire();
810
+ // Reconnect failures are expected while installation still owns USB.
811
+ // Keep them in this polling loop instead of rejecting the active firmware run.
812
+ await this.device.acquire(undefined, {
813
+ throwOnRunPromiseError: true,
814
+ });
556
815
  this.device.commands.disposed = false;
557
816
  this.device.getCommands().mainId = this.device.mainId ?? '';
558
817
  return;