@onekeyfe/hd-core 1.1.34-alpha.2 → 1.1.34-alpha.3

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 (613) hide show
  1. package/__tests__/AllNetworkGetAddressBase.tracing.test.ts +75 -0
  2. package/__tests__/DeviceCommands.test.ts +217 -0
  3. package/__tests__/RequestQueue.test.ts +140 -0
  4. package/__tests__/UploadPortfolio.test.ts +46 -0
  5. package/__tests__/connectSettings.test.ts +61 -0
  6. package/__tests__/device-lifecycle-events.test.ts +117 -0
  7. package/__tests__/device-pool-state.test.ts +132 -0
  8. package/__tests__/device-settings.test.ts +286 -0
  9. package/__tests__/device-state-mapper.test.ts +229 -0
  10. package/__tests__/device-utils.test.ts +106 -0
  11. package/__tests__/device-wallet-session-store.test.ts +191 -0
  12. package/__tests__/evmLedgerLegacySafety.test.ts +15 -4
  13. package/__tests__/evmSignTransaction.test.ts +1 -1
  14. package/__tests__/evmSignTypedData.test.ts +1 -1
  15. package/__tests__/filesystemValidation.test.ts +53 -0
  16. package/__tests__/firmware-update/firmware-artifact-source.test.ts +119 -0
  17. package/__tests__/firmware-update/firmware-checkpoint.test.ts +105 -0
  18. package/__tests__/firmware-update/firmware-host-binding.test.ts +73 -0
  19. package/__tests__/firmware-update/firmware-update-capabilities.test.ts +17 -0
  20. package/__tests__/firmware-update/firmware-update-plan.test.ts +358 -0
  21. package/__tests__/firmware-update/firmware-update-prepared-plan.test.ts +200 -0
  22. package/__tests__/firmware-update/firmware-update-recovery.test.ts +81 -0
  23. package/__tests__/firmware-update/firmware-update-v2-download-before-boot.test.ts +48 -31
  24. package/__tests__/firmware-update/firmware-upload-source.test.ts +70 -0
  25. package/__tests__/get-device-state.test.ts +403 -0
  26. package/__tests__/logBlockEvent.test.ts +61 -0
  27. package/__tests__/logger.test.ts +34 -0
  28. package/__tests__/open-wallet-session.test.ts +565 -0
  29. package/__tests__/preInitialize.test.ts +33 -0
  30. package/__tests__/pro2Wallpaper.test.ts +39 -0
  31. package/__tests__/protocol-v2-bootloader-mode.test.ts +37 -0
  32. package/__tests__/protocol-v2-firmware-targets.test.ts +19 -0
  33. package/__tests__/protocol-v2.test.ts +6008 -0
  34. package/__tests__/protocolV2FileWrite.test.ts +67 -0
  35. package/__tests__/public-pro2-api-boundary.test.ts +66 -0
  36. package/__tests__/search-devices.test.ts +136 -0
  37. package/dist/api/BaseMethod.d.ts +12 -0
  38. package/dist/api/BaseMethod.d.ts.map +1 -1
  39. package/dist/api/CheckAllFirmwareRelease.d.ts.map +1 -1
  40. package/dist/api/CheckBootloaderRelease.d.ts.map +1 -1
  41. package/dist/api/CheckFirmwareRelease.d.ts.map +1 -1
  42. package/dist/api/ClearSessionCache.d.ts +9 -0
  43. package/dist/api/ClearSessionCache.d.ts.map +1 -0
  44. package/dist/api/DirList.d.ts +10 -0
  45. package/dist/api/DirList.d.ts.map +1 -0
  46. package/dist/api/DirMake.d.ts +9 -0
  47. package/dist/api/DirMake.d.ts.map +1 -0
  48. package/dist/api/DirRemove.d.ts +9 -0
  49. package/dist/api/DirRemove.d.ts.map +1 -0
  50. package/dist/api/FileDelete.d.ts +9 -0
  51. package/dist/api/FileDelete.d.ts.map +1 -0
  52. package/dist/api/FileRead.d.ts +19 -0
  53. package/dist/api/FileRead.d.ts.map +1 -0
  54. package/dist/api/FileWrite.d.ts +25 -0
  55. package/dist/api/FileWrite.d.ts.map +1 -0
  56. package/dist/api/FirmwareUpdate.d.ts.map +1 -1
  57. package/dist/api/FirmwareUpdateV2.d.ts +14 -3
  58. package/dist/api/FirmwareUpdateV2.d.ts.map +1 -1
  59. package/dist/api/FirmwareUpdateV3.d.ts +10 -3
  60. package/dist/api/FirmwareUpdateV3.d.ts.map +1 -1
  61. package/dist/api/FirmwareUpdateV4.d.ts +75 -0
  62. package/dist/api/FirmwareUpdateV4.d.ts.map +1 -0
  63. package/dist/api/GetDeviceState.d.ts +7 -0
  64. package/dist/api/GetDeviceState.d.ts.map +1 -0
  65. package/dist/api/GetFeatures.d.ts +1 -1
  66. package/dist/api/GetFeatures.d.ts.map +1 -1
  67. package/dist/api/GetOnekeyFeatures.d.ts.map +1 -1
  68. package/dist/api/GetPassphraseState.d.ts.map +1 -1
  69. package/dist/api/OpenWalletSession.d.ts +14 -0
  70. package/dist/api/OpenWalletSession.d.ts.map +1 -0
  71. package/dist/api/PathInfo.d.ts +10 -0
  72. package/dist/api/PathInfo.d.ts.map +1 -0
  73. package/dist/api/PromptWebDeviceAccess.d.ts.map +1 -1
  74. package/dist/api/SearchDevices.d.ts +5 -1
  75. package/dist/api/SearchDevices.d.ts.map +1 -1
  76. package/dist/api/UploadPortfolio.d.ts +18 -0
  77. package/dist/api/UploadPortfolio.d.ts.map +1 -0
  78. package/dist/api/alephium/AlephiumGetAddress.d.ts +2 -6
  79. package/dist/api/alephium/AlephiumGetAddress.d.ts.map +1 -1
  80. package/dist/api/alephium/AlephiumSignMessage.d.ts +2 -5
  81. package/dist/api/alephium/AlephiumSignMessage.d.ts.map +1 -1
  82. package/dist/api/alephium/AlephiumSignTransaction.d.ts +5 -8
  83. package/dist/api/alephium/AlephiumSignTransaction.d.ts.map +1 -1
  84. package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts.map +1 -1
  85. package/dist/api/aptos/AptosGetAddress.d.ts.map +1 -1
  86. package/dist/api/benfen/BenfenGetAddress.d.ts +2 -9
  87. package/dist/api/benfen/BenfenGetAddress.d.ts.map +1 -1
  88. package/dist/api/benfen/BenfenGetPublicKey.d.ts +2 -9
  89. package/dist/api/benfen/BenfenGetPublicKey.d.ts.map +1 -1
  90. package/dist/api/benfen/BenfenSignMessage.d.ts +2 -8
  91. package/dist/api/benfen/BenfenSignMessage.d.ts.map +1 -1
  92. package/dist/api/benfen/BenfenSignTransaction.d.ts +2 -8
  93. package/dist/api/benfen/BenfenSignTransaction.d.ts.map +1 -1
  94. package/dist/api/btc/BTCGetAddress.d.ts +1 -11
  95. package/dist/api/btc/BTCGetAddress.d.ts.map +1 -1
  96. package/dist/api/btc/BTCGetPublicKey.d.ts +1 -11
  97. package/dist/api/btc/BTCGetPublicKey.d.ts.map +1 -1
  98. package/dist/api/btc/BTCSignMessage.d.ts +1 -15
  99. package/dist/api/btc/BTCSignMessage.d.ts.map +1 -1
  100. package/dist/api/btc/BTCSignPsbt.d.ts.map +1 -1
  101. package/dist/api/btc/BTCSignTransaction.d.ts +1 -11
  102. package/dist/api/btc/BTCSignTransaction.d.ts.map +1 -1
  103. package/dist/api/btc/BTCVerifyMessage.d.ts +1 -11
  104. package/dist/api/btc/BTCVerifyMessage.d.ts.map +1 -1
  105. package/dist/api/btc/helpers/versionLimit.d.ts +2 -11
  106. package/dist/api/btc/helpers/versionLimit.d.ts.map +1 -1
  107. package/dist/api/cardano/CardanoSignTransaction.d.ts.map +1 -1
  108. package/dist/api/conflux/ConfluxSignTransaction.d.ts.map +1 -1
  109. package/dist/api/device/DeviceCancel.d.ts.map +1 -1
  110. package/dist/api/device/DeviceChangePin.d.ts.map +1 -1
  111. package/dist/api/device/DeviceFullyUploadResource.d.ts +1 -2
  112. package/dist/api/device/DeviceFullyUploadResource.d.ts.map +1 -1
  113. package/dist/api/device/DeviceLock.d.ts.map +1 -1
  114. package/dist/api/device/DeviceRebootToBoardloader.d.ts +1 -1
  115. package/dist/api/device/DeviceRebootToBoardloader.d.ts.map +1 -1
  116. package/dist/api/device/DeviceRebootToBootloader.d.ts.map +1 -1
  117. package/dist/api/device/DeviceSettings.d.ts.map +1 -1
  118. package/dist/api/device/DeviceSupportFeatures.d.ts.map +1 -1
  119. package/dist/api/device/DeviceUnlock.d.ts +1 -1
  120. package/dist/api/device/DeviceUnlock.d.ts.map +1 -1
  121. package/dist/api/device/DeviceUpdateBootloader.d.ts +7 -1
  122. package/dist/api/device/DeviceUpdateBootloader.d.ts.map +1 -1
  123. package/dist/api/device/DeviceUploadResource.d.ts.map +1 -1
  124. package/dist/api/device/DeviceVerify.d.ts.map +1 -1
  125. package/dist/api/device/DeviceWipe.d.ts.map +1 -1
  126. package/dist/api/dynex/DnxGetAddress.d.ts.map +1 -1
  127. package/dist/api/dynex/DnxSignTransaction.d.ts.map +1 -1
  128. package/dist/api/evm/EVMGetPublicKey.d.ts.map +1 -1
  129. package/dist/api/evm/EVMSignMessageEIP712.d.ts +2 -8
  130. package/dist/api/evm/EVMSignMessageEIP712.d.ts.map +1 -1
  131. package/dist/api/evm/EVMSignTypedData.d.ts.map +1 -1
  132. package/dist/api/evm/latest/signTypedData.d.ts +1 -1
  133. package/dist/api/evm/latest/signTypedData.d.ts.map +1 -1
  134. package/dist/api/evm/latest/signTypedHash.d.ts.map +1 -1
  135. package/dist/api/evm/legacyV1/getAddress.d.ts.map +1 -1
  136. package/dist/api/evm/legacyV1/getPublicKey.d.ts.map +1 -1
  137. package/dist/api/evm/legacyV1/signMessage.d.ts.map +1 -1
  138. package/dist/api/evm/legacyV1/signTypedData.d.ts +1 -1
  139. package/dist/api/evm/legacyV1/signTypedData.d.ts.map +1 -1
  140. package/dist/api/evm/legacyV1/signTypedHash.d.ts.map +1 -1
  141. package/dist/api/evm/legacyV1/verifyMessage.d.ts.map +1 -1
  142. package/dist/api/firmware/FirmwareArtifactSource.d.ts +26 -0
  143. package/dist/api/firmware/FirmwareArtifactSource.d.ts.map +1 -0
  144. package/dist/api/firmware/FirmwareCheckpoint.d.ts +15 -0
  145. package/dist/api/firmware/FirmwareCheckpoint.d.ts.map +1 -0
  146. package/dist/api/firmware/FirmwareHostBinding.d.ts +6 -0
  147. package/dist/api/firmware/FirmwareHostBinding.d.ts.map +1 -0
  148. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts +10 -1
  149. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts.map +1 -1
  150. package/dist/api/firmware/FirmwareUpdateCapabilities.d.ts +3 -0
  151. package/dist/api/firmware/FirmwareUpdateCapabilities.d.ts.map +1 -0
  152. package/dist/api/firmware/FirmwareUpdatePlan.d.ts +29 -0
  153. package/dist/api/firmware/FirmwareUpdatePlan.d.ts.map +1 -0
  154. package/dist/api/firmware/FirmwareUpdatePreparedPlan.d.ts +25 -0
  155. package/dist/api/firmware/FirmwareUpdatePreparedPlan.d.ts.map +1 -0
  156. package/dist/api/firmware/bootloaderHelper.d.ts.map +1 -1
  157. package/dist/api/firmware/getBinary.d.ts +11 -0
  158. package/dist/api/firmware/getBinary.d.ts.map +1 -1
  159. package/dist/api/firmware/progressThrottle.d.ts +3 -0
  160. package/dist/api/firmware/progressThrottle.d.ts.map +1 -0
  161. package/dist/api/firmware/updateBootloader.d.ts +2 -0
  162. package/dist/api/firmware/updateBootloader.d.ts.map +1 -1
  163. package/dist/api/firmware/uploadFirmware.d.ts +9 -1
  164. package/dist/api/firmware/uploadFirmware.d.ts.map +1 -1
  165. package/dist/api/helpers/batchGetPublickeys.d.ts +3 -0
  166. package/dist/api/helpers/batchGetPublickeys.d.ts.map +1 -1
  167. package/dist/api/helpers/filesystemValidation.d.ts +10 -0
  168. package/dist/api/helpers/filesystemValidation.d.ts.map +1 -0
  169. package/dist/api/helpers/protocolV2FileWrite.d.ts +33 -0
  170. package/dist/api/helpers/protocolV2FileWrite.d.ts.map +1 -0
  171. package/dist/api/index.d.ts +29 -0
  172. package/dist/api/index.d.ts.map +1 -1
  173. package/dist/api/kaspa/KaspaSignTransaction.d.ts.map +1 -1
  174. package/dist/api/lightning/LnurlAuth.d.ts +4 -0
  175. package/dist/api/lightning/LnurlAuth.d.ts.map +1 -1
  176. package/dist/api/neo/NeoGetAddress.d.ts +2 -8
  177. package/dist/api/neo/NeoGetAddress.d.ts.map +1 -1
  178. package/dist/api/neo/NeoSignTransaction.d.ts +2 -8
  179. package/dist/api/neo/NeoSignTransaction.d.ts.map +1 -1
  180. package/dist/api/nervos/NervosGetAddress.d.ts +2 -9
  181. package/dist/api/nervos/NervosGetAddress.d.ts.map +1 -1
  182. package/dist/api/nervos/NervosSignTransaction.d.ts +9 -12
  183. package/dist/api/nervos/NervosSignTransaction.d.ts.map +1 -1
  184. package/dist/api/nexa/NexaGetAddress.d.ts +2 -8
  185. package/dist/api/nexa/NexaGetAddress.d.ts.map +1 -1
  186. package/dist/api/nexa/NexaSignTransaction.d.ts +2 -9
  187. package/dist/api/nexa/NexaSignTransaction.d.ts.map +1 -1
  188. package/dist/api/polkadot/PolkadotGetAddress.d.ts +3 -0
  189. package/dist/api/polkadot/PolkadotGetAddress.d.ts.map +1 -1
  190. package/dist/api/polkadot/networks.d.ts +3 -0
  191. package/dist/api/polkadot/networks.d.ts.map +1 -1
  192. package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts +6 -0
  193. package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts.map +1 -0
  194. package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts +7 -0
  195. package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts.map +1 -0
  196. package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts +7 -0
  197. package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts.map +1 -0
  198. package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts +7 -0
  199. package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts.map +1 -0
  200. package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts +6 -0
  201. package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts.map +1 -0
  202. package/dist/api/protocol-v2/DeviceInfoGet.d.ts +28 -0
  203. package/dist/api/protocol-v2/DeviceInfoGet.d.ts.map +1 -0
  204. package/dist/api/protocol-v2/DeviceReboot.d.ts +7 -0
  205. package/dist/api/protocol-v2/DeviceReboot.d.ts.map +1 -0
  206. package/dist/api/protocol-v2/DeviceSessionOpen.d.ts +28 -0
  207. package/dist/api/protocol-v2/DeviceSessionOpen.d.ts.map +1 -0
  208. package/dist/api/protocol-v2/DeviceSettingsGet.d.ts +6 -0
  209. package/dist/api/protocol-v2/DeviceSettingsGet.d.ts.map +1 -0
  210. package/dist/api/protocol-v2/DeviceSettingsPageShow.d.ts +16 -0
  211. package/dist/api/protocol-v2/DeviceSettingsPageShow.d.ts.map +1 -0
  212. package/dist/api/protocol-v2/DeviceSettingsSet.d.ts +12 -0
  213. package/dist/api/protocol-v2/DeviceSettingsSet.d.ts.map +1 -0
  214. package/dist/api/protocol-v2/DeviceStatusGet.d.ts +6 -0
  215. package/dist/api/protocol-v2/DeviceStatusGet.d.ts.map +1 -0
  216. package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts +26 -0
  217. package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts.map +1 -0
  218. package/dist/api/protocol-v2/FilesystemFormat.d.ts +6 -0
  219. package/dist/api/protocol-v2/FilesystemFormat.d.ts.map +1 -0
  220. package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts +6 -0
  221. package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts.map +1 -0
  222. package/dist/api/protocol-v2/Ping.d.ts +8 -0
  223. package/dist/api/protocol-v2/Ping.d.ts.map +1 -0
  224. package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts +6 -0
  225. package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts.map +1 -0
  226. package/dist/api/protocol-v2/helpers.d.ts +42 -0
  227. package/dist/api/protocol-v2/helpers.d.ts.map +1 -0
  228. package/dist/api/scdo/ScdoGetAddress.d.ts +2 -6
  229. package/dist/api/scdo/ScdoGetAddress.d.ts.map +1 -1
  230. package/dist/api/scdo/ScdoSignMessage.d.ts +2 -5
  231. package/dist/api/scdo/ScdoSignMessage.d.ts.map +1 -1
  232. package/dist/api/scdo/ScdoSignTransaction.d.ts +2 -5
  233. package/dist/api/scdo/ScdoSignTransaction.d.ts.map +1 -1
  234. package/dist/api/solana/SolGetAddress.d.ts +1 -0
  235. package/dist/api/solana/SolGetAddress.d.ts.map +1 -1
  236. package/dist/api/solana/SolSignMessage.d.ts +3 -0
  237. package/dist/api/solana/SolSignMessage.d.ts.map +1 -1
  238. package/dist/api/solana/SolSignOffchainMessage.d.ts +3 -0
  239. package/dist/api/solana/SolSignOffchainMessage.d.ts.map +1 -1
  240. package/dist/api/solana/SolSignTransaction.d.ts +6 -0
  241. package/dist/api/solana/SolSignTransaction.d.ts.map +1 -1
  242. package/dist/api/stellar/StellarGetAddress.d.ts +2 -1
  243. package/dist/api/stellar/StellarGetAddress.d.ts.map +1 -1
  244. package/dist/api/stellar/StellarSignTransaction.d.ts +3 -2
  245. package/dist/api/stellar/StellarSignTransaction.d.ts.map +1 -1
  246. package/dist/api/sui/SuiGetAddress.d.ts +3 -0
  247. package/dist/api/sui/SuiGetAddress.d.ts.map +1 -1
  248. package/dist/api/sui/SuiGetPublicKey.d.ts +3 -0
  249. package/dist/api/sui/SuiGetPublicKey.d.ts.map +1 -1
  250. package/dist/api/sui/SuiSignMessage.d.ts +3 -0
  251. package/dist/api/sui/SuiSignMessage.d.ts.map +1 -1
  252. package/dist/api/sui/SuiSignTransaction.d.ts +5 -2
  253. package/dist/api/sui/SuiSignTransaction.d.ts.map +1 -1
  254. package/dist/api/ton/TonGetAddress.d.ts +3 -0
  255. package/dist/api/ton/TonGetAddress.d.ts.map +1 -1
  256. package/dist/api/ton/TonSignData.d.ts +1 -0
  257. package/dist/api/ton/TonSignData.d.ts.map +1 -1
  258. package/dist/api/ton/TonSignMessage.d.ts +3 -0
  259. package/dist/api/ton/TonSignMessage.d.ts.map +1 -1
  260. package/dist/api/ton/TonSignProof.d.ts +3 -0
  261. package/dist/api/ton/TonSignProof.d.ts.map +1 -1
  262. package/dist/api/tron/TronSignMessage.d.ts +3 -0
  263. package/dist/api/tron/TronSignMessage.d.ts.map +1 -1
  264. package/dist/api/tron/TronSignTransaction.d.ts +3 -0
  265. package/dist/api/tron/TronSignTransaction.d.ts.map +1 -1
  266. package/dist/api/utils.d.ts +2 -1
  267. package/dist/api/utils.d.ts.map +1 -1
  268. package/dist/constants/index.d.ts +2 -1
  269. package/dist/constants/index.d.ts.map +1 -1
  270. package/dist/core/RequestQueue.d.ts +19 -1
  271. package/dist/core/RequestQueue.d.ts.map +1 -1
  272. package/dist/core/deviceEventRegistration.d.ts +11 -0
  273. package/dist/core/deviceEventRegistration.d.ts.map +1 -0
  274. package/dist/core/index.d.ts +4 -1
  275. package/dist/core/index.d.ts.map +1 -1
  276. package/dist/data-manager/DataManager.d.ts +9 -5
  277. package/dist/data-manager/DataManager.d.ts.map +1 -1
  278. package/dist/data-manager/MessagesConfig.d.ts +2 -2
  279. package/dist/data-manager/MessagesConfig.d.ts.map +1 -1
  280. package/dist/data-manager/TransportManager.d.ts +5 -4
  281. package/dist/data-manager/TransportManager.d.ts.map +1 -1
  282. package/dist/data-manager/connectSettings.d.ts.map +1 -1
  283. package/dist/device/Device.d.ts +60 -16
  284. package/dist/device/Device.d.ts.map +1 -1
  285. package/dist/device/DeviceCommands.d.ts +16 -14
  286. package/dist/device/DeviceCommands.d.ts.map +1 -1
  287. package/dist/device/DeviceConnector.d.ts +2 -1
  288. package/dist/device/DeviceConnector.d.ts.map +1 -1
  289. package/dist/device/DeviceFeaturesState.d.ts +4 -0
  290. package/dist/device/DeviceFeaturesState.d.ts.map +1 -0
  291. package/dist/device/DevicePool.d.ts +4 -2
  292. package/dist/device/DevicePool.d.ts.map +1 -1
  293. package/dist/device/DeviceStateMapper.d.ts +13 -0
  294. package/dist/device/DeviceStateMapper.d.ts.map +1 -0
  295. package/dist/device/DeviceStateProjector.d.ts +7 -0
  296. package/dist/device/DeviceStateProjector.d.ts.map +1 -0
  297. package/dist/device/DeviceStateStore.d.ts +21 -0
  298. package/dist/device/DeviceStateStore.d.ts.map +1 -0
  299. package/dist/device/DeviceWalletSessionStore.d.ts +15 -0
  300. package/dist/device/DeviceWalletSessionStore.d.ts.map +1 -0
  301. package/dist/device/cloneDeviceState.d.ts +2 -0
  302. package/dist/device/cloneDeviceState.d.ts.map +1 -0
  303. package/dist/device/deviceIdentity.d.ts +5 -0
  304. package/dist/device/deviceIdentity.d.ts.map +1 -0
  305. package/dist/deviceProfile/buildDeviceFeatures.d.ts +12 -0
  306. package/dist/deviceProfile/buildDeviceFeatures.d.ts.map +1 -0
  307. package/dist/deviceProfile/index.d.ts +2 -0
  308. package/dist/deviceProfile/index.d.ts.map +1 -0
  309. package/dist/events/call.d.ts +7 -0
  310. package/dist/events/call.d.ts.map +1 -1
  311. package/dist/events/core.d.ts +2 -2
  312. package/dist/events/core.d.ts.map +1 -1
  313. package/dist/events/device.d.ts +11 -2
  314. package/dist/events/device.d.ts.map +1 -1
  315. package/dist/events/iframe.d.ts +1 -0
  316. package/dist/events/iframe.d.ts.map +1 -1
  317. package/dist/events/logBlockEvent.d.ts +1 -0
  318. package/dist/events/logBlockEvent.d.ts.map +1 -1
  319. package/dist/events/ui-request.d.ts +26 -2
  320. package/dist/events/ui-request.d.ts.map +1 -1
  321. package/dist/index.d.ts +1797 -451
  322. package/dist/index.d.ts.map +1 -1
  323. package/dist/index.js +26905 -5611
  324. package/dist/inject.d.ts +3 -2
  325. package/dist/inject.d.ts.map +1 -1
  326. package/dist/lowLevelInject.d.ts +2 -1
  327. package/dist/lowLevelInject.d.ts.map +1 -1
  328. package/dist/protocols/protocol-v2/deviceSession.d.ts +7 -0
  329. package/dist/protocols/protocol-v2/deviceSession.d.ts.map +1 -0
  330. package/dist/protocols/protocol-v2/features.d.ts +88 -0
  331. package/dist/protocols/protocol-v2/features.d.ts.map +1 -0
  332. package/dist/protocols/protocol-v2/firmware.d.ts +15 -0
  333. package/dist/protocols/protocol-v2/firmware.d.ts.map +1 -0
  334. package/dist/protocols/protocol-v2/index.d.ts +5 -0
  335. package/dist/protocols/protocol-v2/index.d.ts.map +1 -0
  336. package/dist/protocols/protocol-v2/lockedError.d.ts +2 -0
  337. package/dist/protocols/protocol-v2/lockedError.d.ts.map +1 -0
  338. package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts +16 -0
  339. package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts.map +1 -0
  340. package/dist/protocols/protocol-v2/uiInteraction.d.ts +39 -0
  341. package/dist/protocols/protocol-v2/uiInteraction.d.ts.map +1 -0
  342. package/dist/protocols/protocol-v2/unlockRetry.d.ts +11 -0
  343. package/dist/protocols/protocol-v2/unlockRetry.d.ts.map +1 -0
  344. package/dist/protocols/protocol-v2/walletSession.d.ts +21 -0
  345. package/dist/protocols/protocol-v2/walletSession.d.ts.map +1 -0
  346. package/dist/topLevelInject.d.ts.map +1 -1
  347. package/dist/types/api/checkAllFirmwareRelease.d.ts +4 -2
  348. package/dist/types/api/checkAllFirmwareRelease.d.ts.map +1 -1
  349. package/dist/types/api/deviceSettings.d.ts +9 -0
  350. package/dist/types/api/deviceSettings.d.ts.map +1 -1
  351. package/dist/types/api/deviceUnlock.d.ts +1 -1
  352. package/dist/types/api/deviceUnlock.d.ts.map +1 -1
  353. package/dist/types/api/deviceUpdateBootloader.d.ts +6 -1
  354. package/dist/types/api/deviceUpdateBootloader.d.ts.map +1 -1
  355. package/dist/types/api/export.d.ts +4 -1
  356. package/dist/types/api/export.d.ts.map +1 -1
  357. package/dist/types/api/firmwareUpdate.d.ts +114 -1
  358. package/dist/types/api/firmwareUpdate.d.ts.map +1 -1
  359. package/dist/types/api/firmwareUpdateCapabilities.d.ts +13 -0
  360. package/dist/types/api/firmwareUpdateCapabilities.d.ts.map +1 -0
  361. package/dist/types/api/firmwareUpdatePlan.d.ts +35 -0
  362. package/dist/types/api/firmwareUpdatePlan.d.ts.map +1 -0
  363. package/dist/types/api/firmwareUpdatePreparedPlan.d.ts +43 -0
  364. package/dist/types/api/firmwareUpdatePreparedPlan.d.ts.map +1 -0
  365. package/dist/types/api/getDeviceState.d.ts +12 -0
  366. package/dist/types/api/getDeviceState.d.ts.map +1 -0
  367. package/dist/types/api/getFeatures.d.ts.map +1 -1
  368. package/dist/types/api/getOnekeyFeatures.d.ts.map +1 -1
  369. package/dist/types/api/getPassphraseState.d.ts +2 -1
  370. package/dist/types/api/getPassphraseState.d.ts.map +1 -1
  371. package/dist/types/api/index.d.ts +48 -2
  372. package/dist/types/api/index.d.ts.map +1 -1
  373. package/dist/types/api/openWalletSession.d.ts +35 -0
  374. package/dist/types/api/openWalletSession.d.ts.map +1 -0
  375. package/dist/types/api/protocolV2.d.ts +113 -0
  376. package/dist/types/api/protocolV2.d.ts.map +1 -0
  377. package/dist/types/api/searchDevices.d.ts +2 -2
  378. package/dist/types/api/searchDevices.d.ts.map +1 -1
  379. package/dist/types/api/sessionCache.d.ts +10 -0
  380. package/dist/types/api/sessionCache.d.ts.map +1 -0
  381. package/dist/types/device.d.ts +207 -5
  382. package/dist/types/device.d.ts.map +1 -1
  383. package/dist/types/params.d.ts +3 -0
  384. package/dist/types/params.d.ts.map +1 -1
  385. package/dist/types/settings.d.ts +33 -0
  386. package/dist/types/settings.d.ts.map +1 -1
  387. package/dist/utils/capabilitieUtils.d.ts.map +1 -1
  388. package/dist/utils/deviceFeaturesCompat.d.ts +13 -0
  389. package/dist/utils/deviceFeaturesCompat.d.ts.map +1 -0
  390. package/dist/utils/deviceFeaturesUtils.d.ts +17 -9
  391. package/dist/utils/deviceFeaturesUtils.d.ts.map +1 -1
  392. package/dist/utils/deviceInfoUtils.d.ts +10 -8
  393. package/dist/utils/deviceInfoUtils.d.ts.map +1 -1
  394. package/dist/utils/deviceSettings.d.ts +2 -0
  395. package/dist/utils/deviceSettings.d.ts.map +1 -1
  396. package/dist/utils/deviceVersionUtils.d.ts +6 -5
  397. package/dist/utils/deviceVersionUtils.d.ts.map +1 -1
  398. package/dist/utils/findDefectiveBatchDevice.d.ts +1 -1
  399. package/dist/utils/homescreen.d.ts.map +1 -1
  400. package/dist/utils/index.d.ts +3 -1
  401. package/dist/utils/index.d.ts.map +1 -1
  402. package/dist/utils/patch.d.ts +1 -1
  403. package/dist/utils/patch.d.ts.map +1 -1
  404. package/dist/utils/pro2Wallpaper.d.ts +12 -0
  405. package/dist/utils/pro2Wallpaper.d.ts.map +1 -0
  406. package/dist/utils/tracing.d.ts.map +1 -1
  407. package/dist/utils/versionUtils.d.ts +1 -1
  408. package/package.json +4 -4
  409. package/src/api/BaseMethod.ts +60 -23
  410. package/src/api/CheckAllFirmwareRelease.ts +16 -3
  411. package/src/api/CheckBootloaderRelease.ts +1 -2
  412. package/src/api/CheckFirmwareRelease.ts +1 -2
  413. package/src/api/ClearSessionCache.ts +28 -0
  414. package/src/api/DirList.ts +33 -0
  415. package/src/api/DirMake.ts +23 -0
  416. package/src/api/DirRemove.ts +23 -0
  417. package/src/api/FileDelete.ts +23 -0
  418. package/src/api/FileRead.ts +183 -0
  419. package/src/api/FileWrite.ts +71 -0
  420. package/src/api/FirmwareUpdate.ts +15 -7
  421. package/src/api/FirmwareUpdateV2.ts +354 -148
  422. package/src/api/FirmwareUpdateV3.ts +376 -62
  423. package/src/api/FirmwareUpdateV4.ts +2279 -0
  424. package/src/api/GetDeviceState.ts +55 -0
  425. package/src/api/GetFeatures.ts +12 -4
  426. package/src/api/GetOnekeyFeatures.ts +15 -3
  427. package/src/api/GetPassphraseState.ts +9 -10
  428. package/src/api/OpenWalletSession.ts +211 -0
  429. package/src/api/PathInfo.ts +41 -0
  430. package/src/api/PromptWebDeviceAccess.ts +10 -1
  431. package/src/api/SearchDevices.ts +33 -3
  432. package/src/api/UploadPortfolio.ts +50 -0
  433. package/src/api/alephium/AlephiumGetAddress.ts +6 -2
  434. package/src/api/alephium/AlephiumSignMessage.ts +6 -1
  435. package/src/api/alephium/AlephiumSignTransaction.ts +15 -4
  436. package/src/api/allnetwork/AllNetworkGetAddressBase.ts +25 -21
  437. package/src/api/aptos/AptosGetAddress.ts +2 -3
  438. package/src/api/benfen/BenfenGetAddress.ts +11 -7
  439. package/src/api/benfen/BenfenGetPublicKey.ts +6 -2
  440. package/src/api/benfen/BenfenSignMessage.ts +6 -1
  441. package/src/api/benfen/BenfenSignTransaction.ts +6 -1
  442. package/src/api/btc/BTCGetPublicKey.ts +3 -2
  443. package/src/api/btc/BTCSignPsbt.ts +1 -2
  444. package/src/api/btc/helpers/versionLimit.ts +7 -1
  445. package/src/api/cardano/CardanoSignTransaction.ts +2 -4
  446. package/src/api/conflux/ConfluxSignTransaction.ts +5 -2
  447. package/src/api/device/DeviceCancel.ts +1 -0
  448. package/src/api/device/DeviceChangePin.ts +24 -0
  449. package/src/api/device/DeviceFullyUploadResource.ts +6 -7
  450. package/src/api/device/DeviceLock.ts +2 -3
  451. package/src/api/device/DeviceRebootToBoardloader.ts +11 -1
  452. package/src/api/device/DeviceRebootToBootloader.ts +11 -1
  453. package/src/api/device/DeviceSettings.ts +121 -0
  454. package/src/api/device/DeviceSupportFeatures.ts +2 -13
  455. package/src/api/device/DeviceUnlock.ts +9 -0
  456. package/src/api/device/DeviceUpdateBootloader.ts +175 -11
  457. package/src/api/device/DeviceUploadResource.ts +4 -5
  458. package/src/api/device/DeviceVerify.ts +1 -2
  459. package/src/api/device/DeviceWipe.ts +19 -0
  460. package/src/api/dynex/DnxGetAddress.ts +6 -0
  461. package/src/api/dynex/DnxSignTransaction.ts +6 -0
  462. package/src/api/evm/EVMGetAddress.ts +1 -1
  463. package/src/api/evm/EVMGetPublicKey.ts +3 -4
  464. package/src/api/evm/EVMSignMessage.ts +1 -1
  465. package/src/api/evm/EVMSignMessageEIP712.ts +14 -1
  466. package/src/api/evm/EVMSignTransaction.ts +1 -1
  467. package/src/api/evm/EVMSignTypedData.ts +30 -18
  468. package/src/api/evm/EVMVerifyMessage.ts +1 -1
  469. package/src/api/evm/latest/signTypedHash.ts +2 -4
  470. package/src/api/evm/legacyV1/getAddress.ts +5 -3
  471. package/src/api/evm/legacyV1/getPublicKey.ts +5 -3
  472. package/src/api/evm/legacyV1/signMessage.ts +5 -3
  473. package/src/api/evm/legacyV1/signTypedData.ts +9 -8
  474. package/src/api/evm/legacyV1/signTypedHash.ts +7 -7
  475. package/src/api/evm/legacyV1/verifyMessage.ts +5 -3
  476. package/src/api/firmware/FirmwareArtifactSource.ts +278 -0
  477. package/src/api/firmware/FirmwareCheckpoint.ts +188 -0
  478. package/src/api/firmware/FirmwareHostBinding.ts +108 -0
  479. package/src/api/firmware/FirmwareUpdateBaseMethod.ts +83 -15
  480. package/src/api/firmware/FirmwareUpdateCapabilities.ts +13 -0
  481. package/src/api/firmware/FirmwareUpdatePlan.ts +729 -0
  482. package/src/api/firmware/FirmwareUpdatePreparedPlan.ts +403 -0
  483. package/src/api/firmware/bootloaderHelper.ts +3 -2
  484. package/src/api/firmware/getBinary.ts +1 -1
  485. package/src/api/firmware/progressThrottle.ts +44 -0
  486. package/src/api/firmware/releaseHelper.ts +3 -3
  487. package/src/api/firmware/updateBootloader.ts +19 -4
  488. package/src/api/firmware/uploadFirmware.ts +148 -34
  489. package/src/api/helpers/batchGetPublickeys.ts +51 -6
  490. package/src/api/helpers/filesystemValidation.ts +112 -0
  491. package/src/api/helpers/protocolV2FileWrite.ts +193 -0
  492. package/src/api/index.ts +32 -0
  493. package/src/api/kaspa/KaspaSignTransaction.ts +2 -3
  494. package/src/api/lightning/LnurlAuth.ts +4 -0
  495. package/src/api/neo/NeoGetAddress.ts +6 -1
  496. package/src/api/neo/NeoSignTransaction.ts +6 -1
  497. package/src/api/nervos/NervosGetAddress.ts +6 -2
  498. package/src/api/nervos/NervosSignTransaction.ts +14 -4
  499. package/src/api/nexa/NexaGetAddress.ts +6 -2
  500. package/src/api/nexa/NexaSignTransaction.ts +11 -12
  501. package/src/api/polkadot/networks.ts +9 -0
  502. package/src/api/protocol-v2/DeviceFactoryInfoGet.ts +20 -0
  503. package/src/api/protocol-v2/DeviceFactoryInfoSet.ts +32 -0
  504. package/src/api/protocol-v2/DeviceFirmwareUpdate.ts +61 -0
  505. package/src/api/protocol-v2/DeviceGetFirmwareUpdateStatus.ts +55 -0
  506. package/src/api/protocol-v2/DeviceGetOnboardingStatus.ts +18 -0
  507. package/src/api/protocol-v2/DeviceInfoGet.ts +145 -0
  508. package/src/api/protocol-v2/DeviceReboot.ts +26 -0
  509. package/src/api/protocol-v2/DeviceSessionOpen.ts +102 -0
  510. package/src/api/protocol-v2/DeviceSettingsGet.ts +18 -0
  511. package/src/api/protocol-v2/DeviceSettingsPageShow.ts +70 -0
  512. package/src/api/protocol-v2/DeviceSettingsSet.ts +44 -0
  513. package/src/api/protocol-v2/DeviceStatusGet.ts +16 -0
  514. package/src/api/protocol-v2/DeviceUploadWallpaper.ts +131 -0
  515. package/src/api/protocol-v2/FilesystemFormat.ts +19 -0
  516. package/src/api/protocol-v2/FilesystemPermissionFix.ts +16 -0
  517. package/src/api/protocol-v2/Ping.ts +18 -0
  518. package/src/api/protocol-v2/ProtocolInfoRequest.ts +16 -0
  519. package/src/api/protocol-v2/helpers.ts +203 -0
  520. package/src/api/scdo/ScdoGetAddress.ts +6 -2
  521. package/src/api/scdo/ScdoSignMessage.ts +6 -1
  522. package/src/api/scdo/ScdoSignTransaction.ts +6 -2
  523. package/src/api/solana/SolGetAddress.ts +4 -0
  524. package/src/api/solana/SolSignMessage.ts +3 -0
  525. package/src/api/solana/SolSignOffchainMessage.ts +3 -0
  526. package/src/api/solana/SolSignTransaction.ts +6 -0
  527. package/src/api/stellar/StellarGetAddress.ts +10 -1
  528. package/src/api/stellar/StellarSignTransaction.ts +14 -1
  529. package/src/api/sui/SuiGetAddress.ts +5 -3
  530. package/src/api/sui/SuiGetPublicKey.ts +3 -0
  531. package/src/api/sui/SuiSignMessage.ts +3 -0
  532. package/src/api/sui/SuiSignTransaction.ts +14 -12
  533. package/src/api/ton/TonGetAddress.ts +3 -0
  534. package/src/api/ton/TonSignData.ts +6 -3
  535. package/src/api/ton/TonSignMessage.ts +6 -5
  536. package/src/api/ton/TonSignProof.ts +3 -0
  537. package/src/api/tron/TronSignMessage.ts +4 -1
  538. package/src/api/tron/TronSignTransaction.ts +3 -0
  539. package/src/api/utils.ts +7 -3
  540. package/src/api/xrp/XrpSignTransaction.ts +1 -1
  541. package/src/constants/index.ts +7 -1
  542. package/src/core/RequestQueue.ts +124 -4
  543. package/src/core/deviceEventRegistration.ts +23 -0
  544. package/src/core/index.ts +253 -125
  545. package/src/data/messages/messages-protocol-v2.json +13544 -0
  546. package/src/data-manager/DataManager.ts +61 -49
  547. package/src/data-manager/MessagesConfig.ts +14 -14
  548. package/src/data-manager/TransportManager.ts +38 -12
  549. package/src/data-manager/connectSettings.ts +15 -0
  550. package/src/device/Device.ts +759 -164
  551. package/src/device/DeviceCommands.ts +245 -36
  552. package/src/device/DeviceConnector.ts +29 -4
  553. package/src/device/DeviceFeaturesState.ts +34 -0
  554. package/src/device/DevicePool.ts +69 -21
  555. package/src/device/DeviceStateMapper.ts +348 -0
  556. package/src/device/DeviceStateProjector.ts +95 -0
  557. package/src/device/DeviceStateStore.ts +201 -0
  558. package/src/device/DeviceWalletSessionStore.ts +78 -0
  559. package/src/device/cloneDeviceState.ts +39 -0
  560. package/src/device/deviceIdentity.ts +18 -0
  561. package/src/deviceProfile/buildDeviceFeatures.ts +391 -0
  562. package/src/deviceProfile/index.ts +4 -0
  563. package/src/events/call.ts +6 -0
  564. package/src/events/core.ts +2 -0
  565. package/src/events/device.ts +17 -1
  566. package/src/events/iframe.ts +1 -0
  567. package/src/events/logBlockEvent.ts +30 -0
  568. package/src/events/ui-request.ts +32 -2
  569. package/src/index.ts +9 -0
  570. package/src/inject.ts +75 -3
  571. package/src/lowLevelInject.ts +8 -1
  572. package/src/protocols/protocol-v2/deviceSession.ts +24 -0
  573. package/src/protocols/protocol-v2/features.ts +163 -0
  574. package/src/protocols/protocol-v2/firmware.ts +21 -0
  575. package/src/protocols/protocol-v2/index.ts +18 -0
  576. package/src/protocols/protocol-v2/lockedError.ts +10 -0
  577. package/src/protocols/protocol-v2/settingsUnlockPolicy.ts +61 -0
  578. package/src/protocols/protocol-v2/uiInteraction.ts +210 -0
  579. package/src/protocols/protocol-v2/unlockRetry.ts +76 -0
  580. package/src/protocols/protocol-v2/walletSession.ts +202 -0
  581. package/src/topLevelInject.ts +7 -1
  582. package/src/types/api/checkAllFirmwareRelease.ts +4 -2
  583. package/src/types/api/deviceSettings.ts +9 -0
  584. package/src/types/api/deviceUnlock.ts +1 -1
  585. package/src/types/api/deviceUpdateBootloader.ts +10 -1
  586. package/src/types/api/export.ts +25 -0
  587. package/src/types/api/firmwareUpdate.ts +163 -1
  588. package/src/types/api/firmwareUpdateCapabilities.ts +13 -0
  589. package/src/types/api/firmwareUpdatePlan.ts +52 -0
  590. package/src/types/api/firmwareUpdatePreparedPlan.ts +55 -0
  591. package/src/types/api/getDeviceState.ts +19 -0
  592. package/src/types/api/getFeatures.ts +3 -0
  593. package/src/types/api/getOnekeyFeatures.ts +3 -0
  594. package/src/types/api/getPassphraseState.ts +10 -2
  595. package/src/types/api/index.ts +89 -2
  596. package/src/types/api/openWalletSession.ts +54 -0
  597. package/src/types/api/protocolV2.ts +244 -0
  598. package/src/types/api/searchDevices.ts +2 -2
  599. package/src/types/api/sessionCache.ts +14 -0
  600. package/src/types/device.ts +266 -5
  601. package/src/types/params.ts +11 -0
  602. package/src/types/settings.ts +54 -29
  603. package/src/utils/capabilitieUtils.ts +1 -2
  604. package/src/utils/deviceFeaturesCompat.ts +173 -0
  605. package/src/utils/deviceFeaturesUtils.ts +122 -84
  606. package/src/utils/deviceInfoUtils.ts +38 -87
  607. package/src/utils/deviceSettings.ts +48 -0
  608. package/src/utils/deviceVersionUtils.ts +25 -62
  609. package/src/utils/findDefectiveBatchDevice.ts +8 -8
  610. package/src/utils/homescreen.ts +10 -0
  611. package/src/utils/index.ts +4 -0
  612. package/src/utils/pro2Wallpaper.ts +109 -0
  613. package/src/utils/tracing.ts +3 -1
@@ -9,7 +9,6 @@ import {
9
9
  getDeviceBLEFirmwareVersion,
10
10
  getDeviceBootloaderVersion,
11
11
  getDeviceFirmwareVersion,
12
- getDeviceType,
13
12
  getFirmwareType,
14
13
  getLogger,
15
14
  } from '../utils';
@@ -18,10 +17,23 @@ import { DataManager } from '../data-manager';
18
17
  import { FirmwareUpdateBaseMethod } from './firmware/FirmwareUpdateBaseMethod';
19
18
  import { DevicePool } from '../device/DevicePool';
20
19
  import { DEVICE } from '../events';
21
-
22
- import type { FirmwareUpdateV3Params } from '../types/api/firmwareUpdate';
20
+ import { buildProtocolV1FeaturesPayload } from '../deviceProfile';
21
+ import { openFirmwareByteSource } from './firmware/FirmwareArtifactSource';
22
+ import { FirmwareCheckpointWriter } from './firmware/FirmwareCheckpoint';
23
+ import { resolveFirmwareUpdateHostBinding } from './firmware/FirmwareHostBinding';
24
+ import {
25
+ assertFirmwareUpdatePreparedPlanBinding,
26
+ getFirmwareUpdateResourceName,
27
+ } from './firmware/FirmwareUpdatePreparedPlan';
28
+
29
+ import type {
30
+ FirmwareArtifactReference,
31
+ FirmwareUpdateV3Params,
32
+ } from '../types/api/firmwareUpdate';
23
33
  import type { Deferred, EFirmwareType } from '@onekeyfe/hd-shared';
24
34
  import type { TypedResponseMessage } from '../device/DeviceCommands';
35
+ import type { FirmwareByteSource } from './firmware/FirmwareArtifactSource';
36
+ import type { Features } from '../types';
25
37
 
26
38
  const Log = getLogger(LoggerNames.Method);
27
39
 
@@ -43,6 +55,10 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
43
55
 
44
56
  private isSwitchFirmware = false;
45
57
 
58
+ private artifactSources: FirmwareByteSource[] = [];
59
+
60
+ private checkpointWriter?: FirmwareCheckpointWriter;
61
+
46
62
  init() {
47
63
  this.allowDeviceMode = [UI_REQUEST.BOOTLOADER, UI_REQUEST.NOT_INITIALIZE];
48
64
  this.requireDeviceMode = [];
@@ -63,8 +79,55 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
63
79
  { name: 'firmwareType', type: 'string' },
64
80
  { name: 'platform', type: 'string' },
65
81
  ]);
82
+ const hostBinding =
83
+ payload.artifacts || payload.preparedPlan
84
+ ? resolveFirmwareUpdateHostBinding(payload.hostBindingGeneration)
85
+ : undefined;
86
+ if (hostBinding) {
87
+ assertFirmwareUpdatePreparedPlanBinding({
88
+ preparedPlan: payload.preparedPlan,
89
+ executor: 'v3',
90
+ platform: payload.platform,
91
+ scopeTargets: ['bootloader', 'firmware', 'resource', 'ble'],
92
+ bindings: [
93
+ ...(payload.artifacts?.bootloader
94
+ ? [
95
+ {
96
+ target: 'bootloader' as const,
97
+ artifact: payload.artifacts.bootloader,
98
+ },
99
+ ]
100
+ : []),
101
+ ...(payload.artifacts?.firmware
102
+ ? [
103
+ {
104
+ target: 'firmware' as const,
105
+ artifact: payload.artifacts.firmware,
106
+ },
107
+ ]
108
+ : []),
109
+ ...(payload.artifacts?.ble
110
+ ? [
111
+ {
112
+ target: 'ble' as const,
113
+ artifact: payload.artifacts.ble,
114
+ },
115
+ ]
116
+ : []),
117
+ ...(payload.artifacts?.resourceEntries ?? []).map(
118
+ (entry: { entryName: string; artifact: FirmwareArtifactReference }) => ({
119
+ target: 'resource' as const,
120
+ entryName: entry.entryName,
121
+ artifact: entry.artifact,
122
+ })
123
+ ),
124
+ ],
125
+ });
126
+ }
66
127
 
67
128
  this.params = {
129
+ preparedPlan: payload.preparedPlan,
130
+ hostBindingGeneration: payload.hostBindingGeneration,
68
131
  bleBinary: payload.bleBinary,
69
132
  firmwareBinary: payload.firmwareBinary,
70
133
  forcedUpdateRes: payload.forcedUpdateRes,
@@ -75,15 +138,37 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
75
138
  resourceBinary: payload.resourceBinary,
76
139
  firmwareType: payload.firmwareType,
77
140
  platform: payload.platform,
141
+ artifactReader: hostBinding?.artifactReader ?? payload.artifactReader,
142
+ artifacts: payload.artifacts,
143
+ checkpointSink: hostBinding?.checkpointSink ?? payload.checkpointSink,
144
+ checkpointSequenceStart: payload.checkpointSequenceStart,
145
+ resumeCheckpoint: payload.resumeCheckpoint,
78
146
  };
79
147
  }
80
148
 
81
149
  async run() {
150
+ if (this.device.isProtocolV2()) {
151
+ throw ERRORS.TypedError(
152
+ HardwareErrorCode.RuntimeError,
153
+ 'Protocol V2 firmware update must use firmwareUpdateV4'
154
+ );
155
+ }
156
+ Log.debug('FirmwareUpdateV3 strategy: Protocol V1');
157
+ return this.runProtocolV1();
158
+ }
159
+
160
+ /**
161
+ * Protocol V1 firmware update strategy for existing Pro devices.
162
+ */
163
+ private async runProtocolV1() {
82
164
  const { device } = this;
83
165
  const { features } = device;
166
+ this.checkpointWriter = new FirmwareCheckpointWriter(this.params, {
167
+ required: !!this.params.artifactReader,
168
+ });
84
169
 
85
- const deviceType = getDeviceType(features);
86
- const bootloaderCurrVersion = getDeviceBootloaderVersion(features).join('.');
170
+ const deviceType = device.getCurrentDeviceType();
171
+ const bootloaderCurrVersion = device.getCurrentBootloaderVersionString() ?? '0.0.0';
87
172
 
88
173
  this.validateDeviceAndVersion(deviceType, bootloaderCurrVersion);
89
174
 
@@ -91,38 +176,98 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
91
176
  throw ERRORS.TypedError(HardwareErrorCode.RuntimeError, 'Device features not available');
92
177
  }
93
178
 
94
- const deviceFirmwareType = getFirmwareType(features);
179
+ const deviceFirmwareType = device.getCurrentFirmwareType();
95
180
  const firmwareType = this.params.firmwareType ?? deviceFirmwareType;
96
181
  this.isSwitchFirmware = firmwareType !== deviceFirmwareType;
97
182
 
183
+ const reconciled = await this.reconcileInterruptedInstall(features);
184
+ if (reconciled) return reconciled;
185
+
98
186
  let resourceBinary: ArrayBuffer | null = null;
99
- let fwBinaryMap: { fileName: string; binary: ArrayBuffer }[] = [];
100
- let bootloaderBinary: ArrayBuffer | null = null;
187
+ let resourceEntries: Array<{ entryName: string; source: FirmwareByteSource }> = [];
188
+ let fwSources: Array<{ fileName: string; source: FirmwareByteSource }> = [];
189
+ let bootloaderSource: FirmwareByteSource | null = null;
101
190
  try {
102
191
  this.postTipMessage(FirmwareUpdateTipMessage.StartDownloadFirmware);
103
- resourceBinary = await this.prepareResourceBinary(firmwareType);
104
- fwBinaryMap = await this.prepareFirmwareAndBleBinary(firmwareType);
105
- bootloaderBinary = await this.prepareBootloaderBinary(firmwareType);
192
+ const resourceInput = await this.prepareResourceInput(firmwareType);
193
+ resourceBinary = resourceInput.resourceBinary;
194
+ resourceEntries = resourceInput.resourceEntries;
195
+ fwSources = await this.prepareFirmwareAndBleSources(firmwareType);
196
+ bootloaderSource = await this.prepareBootloaderSource(firmwareType);
106
197
  this.postTipMessage(FirmwareUpdateTipMessage.FinishDownloadFirmware);
107
198
  } catch (err) {
199
+ await this.closeArtifactSources();
108
200
  throw ERRORS.TypedError(HardwareErrorCode.FirmwareUpdateDownloadFailed, err.message ?? err);
109
201
  }
110
202
 
111
- if (!bootloaderBinary && fwBinaryMap.length === 0) {
203
+ if (!bootloaderSource && fwSources.length === 0) {
204
+ await this.closeArtifactSources();
112
205
  throw ERRORS.TypedError(
113
206
  HardwareErrorCode.FirmwareUpdateDownloadFailed,
114
207
  'No firmware to update'
115
208
  );
116
209
  }
117
210
 
118
- await this.enterBootloaderMode();
211
+ try {
212
+ await this.enterBootloaderMode(this.checkpointWriter);
213
+ return await this.executeUpdate({
214
+ resourceBinary,
215
+ resourceEntries,
216
+ fwSources,
217
+ bootloaderSource,
218
+ });
219
+ } finally {
220
+ await this.closeArtifactSources();
221
+ }
222
+ }
119
223
 
120
- const updateResult = await this.executeUpdate({
121
- resourceBinary,
122
- fwBinaryMap,
123
- bootloaderBinary,
124
- });
125
- return updateResult;
224
+ private async reconcileInterruptedInstall(features: Features) {
225
+ const checkpoint = this.params.resumeCheckpoint;
226
+ if (
227
+ !checkpoint ||
228
+ !['INSTALL_REQUESTED', 'INSTALL_ACCEPTED', 'FINAL_VERIFIED'].includes(checkpoint.stage)
229
+ ) {
230
+ return undefined;
231
+ }
232
+
233
+ const versions = {
234
+ bootloaderVersion: getDeviceBootloaderVersion(features).join('.'),
235
+ bleVersion: getDeviceBLEFirmwareVersion(features).join('.'),
236
+ firmwareVersion: getDeviceFirmwareVersion(features).join('.'),
237
+ };
238
+ const expectedVersions = [
239
+ [this.params.bootloaderVersion, versions.bootloaderVersion],
240
+ [this.params.bleVersion, versions.bleVersion],
241
+ [this.params.firmwareVersion, versions.firmwareVersion],
242
+ ] as const;
243
+ const hasExpectedVersion = expectedVersions.some(([expected]) => !!expected);
244
+ const versionsMatch =
245
+ hasExpectedVersion &&
246
+ expectedVersions.every(([expected, actual]) => !expected || expected.join('.') === actual);
247
+ const firmwareTypeMatches =
248
+ this.params.firmwareType === undefined ||
249
+ getFirmwareType(features) === this.params.firmwareType;
250
+
251
+ if (versionsMatch && firmwareTypeMatches) {
252
+ await this.checkpointWriter?.commit({
253
+ stage: 'FINAL_VERIFIED',
254
+ target: 'firmware',
255
+ });
256
+ return versions;
257
+ }
258
+
259
+ throw ERRORS.TypedError(
260
+ HardwareErrorCode.RuntimeError,
261
+ checkpoint.stage === 'FINAL_VERIFIED'
262
+ ? 'Firmware recovery final state conflicts with the checkpoint'
263
+ : 'Firmware install status cannot be safely reconciled',
264
+ {
265
+ firmwareUpdateCode:
266
+ checkpoint.stage === 'FINAL_VERIFIED'
267
+ ? 'FirmwareTransactionConflict'
268
+ : 'FirmwareReconciliationUnavailable',
269
+ }
270
+ );
126
271
  }
127
272
 
128
273
  private validateDeviceAndVersion(deviceType: EDeviceType, bootloaderVersion: string) {
@@ -142,12 +287,81 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
142
287
  }
143
288
  }
144
289
 
145
- private async prepareResourceBinary(firmwareType: EFirmwareType) {
290
+ private async openArtifactSource(
291
+ binary: ArrayBuffer | undefined,
292
+ artifact: FirmwareArtifactReference | undefined
293
+ ) {
294
+ const source = await openFirmwareByteSource({
295
+ binary,
296
+ artifact,
297
+ reader: this.params.artifactReader,
298
+ });
299
+ if (source) {
300
+ this.artifactSources.push(source);
301
+ }
302
+ return source;
303
+ }
304
+
305
+ private async closeArtifactSources() {
306
+ const sources = this.artifactSources.splice(0);
307
+ await Promise.all(sources.map(source => source.close().catch(() => undefined)));
308
+ }
309
+
310
+ private assertSdkDownloadAllowed(artifactName: string) {
311
+ if (
312
+ this.params.artifactReader ||
313
+ DataManager.getSettings('firmwareManifestMode') === 'external-only'
314
+ ) {
315
+ throw ERRORS.TypedError(
316
+ HardwareErrorCode.RuntimeError,
317
+ `${artifactName} must be prepared by the external firmware host`,
318
+ {
319
+ firmwareUpdateCode: 'FirmwareArtifactsNotPrepared',
320
+ artifactName,
321
+ }
322
+ );
323
+ }
324
+ }
325
+
326
+ private async prepareResourceInput(firmwareType: EFirmwareType) {
327
+ const preparedEntries = this.params.artifacts?.resourceEntries;
328
+ if (preparedEntries?.length && this.params.resourceBinary) {
329
+ throw ERRORS.TypedError(
330
+ HardwareErrorCode.RuntimeError,
331
+ 'Firmware resource input must not contain both archive binary and prepared entries'
332
+ );
333
+ }
334
+ if (preparedEntries?.length) {
335
+ const resourceEntries: Array<{ entryName: string; source: FirmwareByteSource }> = [];
336
+ for (const entry of preparedEntries) {
337
+ const resourceName = getFirmwareUpdateResourceName(entry.entryName);
338
+ const source = await this.openArtifactSource(undefined, entry.artifact);
339
+ if (!source) {
340
+ throw ERRORS.TypedError(
341
+ HardwareErrorCode.RuntimeError,
342
+ `Firmware resource entry ${entry.entryName} is not prepared`
343
+ );
344
+ }
345
+ resourceEntries.push({ entryName: resourceName, source });
346
+ }
347
+ return {
348
+ resourceBinary: null,
349
+ resourceEntries,
350
+ };
351
+ }
146
352
  if (this.params.resourceBinary) {
147
- return this.params.resourceBinary;
353
+ return {
354
+ resourceBinary: this.params.resourceBinary,
355
+ resourceEntries: [],
356
+ };
148
357
  }
149
358
  const { features } = this.device;
150
- if (!features) return null;
359
+ if (!features) {
360
+ return {
361
+ resourceBinary: null,
362
+ resourceEntries: [],
363
+ };
364
+ }
151
365
  const resourceUrl = DataManager.getSysResourcesLatestRelease({
152
366
  features,
153
367
  forcedUpdateRes: this.params.forcedUpdateRes,
@@ -155,16 +369,27 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
155
369
  });
156
370
 
157
371
  if (resourceUrl) {
158
- const resource = (await getSysResourceBinary(resourceUrl)).binary;
159
- return resource;
372
+ this.assertSdkDownloadAllowed('resource');
373
+ return {
374
+ resourceBinary: (await getSysResourceBinary(resourceUrl)).binary,
375
+ resourceEntries: [],
376
+ };
160
377
  }
161
378
  Log.warn('No resource url found');
162
- return null;
379
+ return {
380
+ resourceBinary: null,
381
+ resourceEntries: [],
382
+ };
163
383
  }
164
384
 
165
- private async prepareBootloaderBinary(firmwareType: EFirmwareType): Promise<ArrayBuffer | null> {
166
- if (this.params.bootloaderBinary) {
167
- return this.params.bootloaderBinary;
385
+ private async prepareBootloaderSource(
386
+ firmwareType: EFirmwareType
387
+ ): Promise<FirmwareByteSource | null> {
388
+ if (this.params.bootloaderBinary || this.params.artifacts?.bootloader) {
389
+ return this.openArtifactSource(
390
+ this.params.bootloaderBinary,
391
+ this.params.artifacts?.bootloader
392
+ );
168
393
  }
169
394
  const { features } = this.device;
170
395
  if (!features) return null;
@@ -172,23 +397,35 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
172
397
  if (this.params.bootloaderVersion) {
173
398
  const bootResourceUrl = DataManager.getBootloaderResource(features, firmwareType);
174
399
  if (bootResourceUrl) {
400
+ this.assertSdkDownloadAllowed('bootloader');
175
401
  const bootBinary = (await getSysResourceBinary(bootResourceUrl)).binary;
176
- return bootBinary;
402
+ return this.openArtifactSource(bootBinary, undefined);
177
403
  }
178
404
  }
179
405
  return null;
180
406
  }
181
407
 
182
- private async prepareFirmwareAndBleBinary(firmwareType: EFirmwareType) {
183
- const fwBinaryMap: { fileName: string; binary: ArrayBuffer }[] = [];
184
- if (this.params.firmwareBinary) {
185
- fwBinaryMap.push({
408
+ private async prepareFirmwareAndBleSources(firmwareType: EFirmwareType) {
409
+ const fwSources: Array<{ fileName: string; source: FirmwareByteSource }> = [];
410
+ if (this.params.firmwareBinary || this.params.artifacts?.firmware) {
411
+ const source = await this.openArtifactSource(
412
+ this.params.firmwareBinary,
413
+ this.params.artifacts?.firmware
414
+ );
415
+ if (!source) {
416
+ throw ERRORS.TypedError(
417
+ HardwareErrorCode.RuntimeError,
418
+ 'Firmware artifact is not prepared'
419
+ );
420
+ }
421
+ fwSources.push({
186
422
  fileName: 'firmware.bin',
187
- binary: this.params.firmwareBinary,
423
+ source,
188
424
  });
189
425
  } else if (this.params.firmwareVersion) {
190
426
  const { features } = this.device;
191
427
  if (features) {
428
+ this.assertSdkDownloadAllowed('firmware');
192
429
  const firmwareBinary = (
193
430
  await getBinary({
194
431
  features,
@@ -198,44 +435,65 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
198
435
  firmwareType,
199
436
  })
200
437
  ).binary;
201
- fwBinaryMap.push({
438
+ const source = await this.openArtifactSource(firmwareBinary, undefined);
439
+ if (!source) {
440
+ throw ERRORS.TypedError(
441
+ HardwareErrorCode.RuntimeError,
442
+ 'Firmware binary is not prepared'
443
+ );
444
+ }
445
+ fwSources.push({
202
446
  fileName: 'firmware.bin',
203
- binary: firmwareBinary,
447
+ source,
204
448
  });
205
449
  }
206
450
  }
207
451
 
208
- if (this.params.bleBinary) {
209
- fwBinaryMap.push({
452
+ if (this.params.bleBinary || this.params.artifacts?.ble) {
453
+ const source = await this.openArtifactSource(
454
+ this.params.bleBinary,
455
+ this.params.artifacts?.ble
456
+ );
457
+ if (!source) {
458
+ throw ERRORS.TypedError(HardwareErrorCode.RuntimeError, 'BLE artifact is not prepared');
459
+ }
460
+ fwSources.push({
210
461
  fileName: 'ble-firmware.bin',
211
- binary: this.params.bleBinary,
462
+ source,
212
463
  });
213
464
  } else if (this.params.bleVersion) {
214
465
  const { features } = this.device;
215
466
  if (features) {
467
+ this.assertSdkDownloadAllowed('ble');
216
468
  const bleBinary = await getBinary({
217
469
  features,
218
470
  version: this.params.bleVersion,
219
471
  updateType: 'ble',
220
472
  firmwareType,
221
473
  });
222
- fwBinaryMap.push({
474
+ const source = await this.openArtifactSource(bleBinary.binary, undefined);
475
+ if (!source) {
476
+ throw ERRORS.TypedError(HardwareErrorCode.RuntimeError, 'BLE binary is not prepared');
477
+ }
478
+ fwSources.push({
223
479
  fileName: 'ble-firmware.bin',
224
- binary: bleBinary.binary,
480
+ source,
225
481
  });
226
482
  }
227
483
  }
228
- return fwBinaryMap;
484
+ return fwSources;
229
485
  }
230
486
 
231
487
  private async executeUpdate({
232
488
  resourceBinary,
233
- fwBinaryMap,
234
- bootloaderBinary,
489
+ resourceEntries,
490
+ fwSources,
491
+ bootloaderSource,
235
492
  }: {
236
493
  resourceBinary: ArrayBuffer | null;
237
- fwBinaryMap: { fileName: string; binary: ArrayBuffer }[];
238
- bootloaderBinary: ArrayBuffer | null;
494
+ resourceEntries: Array<{ entryName: string; source: FirmwareByteSource }>;
495
+ fwSources: Array<{ fileName: string; source: FirmwareByteSource }>;
496
+ bootloaderSource: FirmwareByteSource | null;
239
497
  }) {
240
498
  let totalSize = 0;
241
499
  let processedSize = 0;
@@ -243,14 +501,18 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
243
501
  if (resourceBinary) {
244
502
  totalSize += resourceBinary.byteLength;
245
503
  }
246
- for (const fwbinary of fwBinaryMap) {
247
- totalSize += fwbinary.binary.byteLength;
504
+ for (const entry of resourceEntries) {
505
+ totalSize += entry.source.size;
248
506
  }
249
- if (bootloaderBinary) {
250
- totalSize += bootloaderBinary.byteLength;
507
+ for (const firmware of fwSources) {
508
+ totalSize += firmware.source.size;
509
+ }
510
+ if (bootloaderSource) {
511
+ totalSize += bootloaderSource.size;
251
512
  }
252
513
 
253
514
  this.postTipMessage(FirmwareUpdateTipMessage.StartTransferData);
515
+
254
516
  // Process resource zip contents
255
517
  if (resourceBinary) {
256
518
  const file = await JSZip.loadAsync(resourceBinary);
@@ -259,43 +521,91 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
259
521
  const name = fileName.split('/').pop();
260
522
  if (!file.dir && fileName.indexOf('__MACOSX') === -1 && name) {
261
523
  const data = await file.async('arraybuffer');
524
+ await this.checkpointWriter?.commit({
525
+ stage: 'FILE_TRANSFER_STARTED',
526
+ target: `resource:${name}`,
527
+ });
262
528
  processedSize = await this.emmcCommonUpdateProcess({
263
529
  payload: data,
264
530
  filePath: `0:res/${name}`,
265
531
  processedSize,
266
532
  totalSize,
267
533
  });
534
+ await this.checkpointWriter?.commit({
535
+ stage: 'FILE_TRANSFER_COMPLETED',
536
+ target: `resource:${name}`,
537
+ });
268
538
  }
269
539
  }
270
540
  }
271
541
 
272
- if (bootloaderBinary) {
273
- processedSize = await this.emmcCommonUpdateProcess({
274
- payload: bootloaderBinary,
542
+ for (const entry of resourceEntries) {
543
+ await this.checkpointWriter?.commit({
544
+ stage: 'FILE_TRANSFER_STARTED',
545
+ target: `resource:${entry.entryName}`,
546
+ });
547
+ processedSize = await this.emmcCommonUpdateProcessFromSource({
548
+ source: entry.source,
549
+ filePath: `0:res/${entry.entryName}`,
550
+ processedSize,
551
+ totalSize,
552
+ });
553
+ await this.checkpointWriter?.commit({
554
+ stage: 'FILE_TRANSFER_COMPLETED',
555
+ target: `resource:${entry.entryName}`,
556
+ });
557
+ }
558
+
559
+ if (bootloaderSource) {
560
+ await this.checkpointWriter?.commit({
561
+ stage: 'FILE_TRANSFER_STARTED',
562
+ target: 'bootloader',
563
+ });
564
+ processedSize = await this.emmcCommonUpdateProcessFromSource({
565
+ source: bootloaderSource,
275
566
  filePath: `0:boot/bootloader.bin`,
276
567
  processedSize,
277
568
  totalSize,
278
569
  });
570
+ await this.checkpointWriter?.commit({
571
+ stage: 'FILE_TRANSFER_COMPLETED',
572
+ target: 'bootloader',
573
+ });
279
574
  }
280
575
 
281
576
  await this.createUpdatesFolderIfNotExists(`0:updates/`);
282
577
 
283
- for (const fwbinary of fwBinaryMap) {
284
- if (fwbinary) {
285
- processedSize = await this.emmcCommonUpdateProcess({
286
- payload: fwbinary.binary,
287
- filePath: `0:updates/${fwbinary.fileName}`,
578
+ for (const firmware of fwSources) {
579
+ if (firmware) {
580
+ const target = firmware.fileName === 'ble-firmware.bin' ? 'ble' : 'firmware';
581
+ await this.checkpointWriter?.commit({
582
+ stage: 'FILE_TRANSFER_STARTED',
583
+ target,
584
+ });
585
+ processedSize = await this.emmcCommonUpdateProcessFromSource({
586
+ source: firmware.source,
587
+ filePath: `0:updates/${firmware.fileName}`,
288
588
  processedSize,
289
589
  totalSize,
290
590
  });
591
+ await this.checkpointWriter?.commit({
592
+ stage: 'FILE_TRANSFER_COMPLETED',
593
+ target,
594
+ });
291
595
  }
292
596
  }
293
597
 
294
- // trigger firmware update, support folder updates
598
+ // trigger firmware update
295
599
  try {
296
600
  this.postTipMessage(FirmwareUpdateTipMessage.ConfirmOnDevice);
297
- await this.startEmmcFirmwareUpdate({
298
- path: '0:updates',
601
+ await this.checkpointWriter?.commit({
602
+ stage: 'INSTALL_REQUESTED',
603
+ target: 'firmware',
604
+ });
605
+ await this.startEmmcFirmwareUpdate({ path: '0:updates' });
606
+ await this.checkpointWriter?.commit({
607
+ stage: 'INSTALL_ACCEPTED',
608
+ target: 'firmware',
299
609
  });
300
610
  } catch (error) {
301
611
  Log.error('triggerFirmwareUpdateEmmc error: ', error);
@@ -373,7 +683,7 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
373
683
  }),
374
684
  ]);
375
685
  getFeaturesTimeoutCount = 0;
376
- const features = featuresRes.message;
686
+ const features = buildProtocolV1FeaturesPayload(featuresRes.message, this.device.features);
377
687
  const bootloaderVersion = getDeviceBootloaderVersion(features).join('.');
378
688
  const bleVersion = getDeviceBLEFirmwareVersion(features).join('.');
379
689
  const firmwareVersion = getDeviceFirmwareVersion(features).join('.');
@@ -381,6 +691,10 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
381
691
  if (firmwareVersion !== '0.0.0') {
382
692
  this.postTipMessage(FirmwareUpdateTipMessage.FirmwareUpdateCompleted);
383
693
  DevicePool.resetState();
694
+ await this.checkpointWriter?.commit({
695
+ stage: 'FINAL_VERIFIED',
696
+ target: 'firmware',
697
+ });
384
698
  return {
385
699
  bootloaderVersion,
386
700
  bleVersion,