@onekeyfe/hd-core 1.2.0-alpha.24 → 1.2.0-alpha.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (493) hide show
  1. package/__tests__/AllNetworkGetAddressBase.tracing.test.ts +2 -0
  2. package/__tests__/chain-params-onekey-compatibility.test.ts +229 -0
  3. package/__tests__/connectSettings.test.ts +47 -5
  4. package/__tests__/device-state-events.test.ts +124 -0
  5. package/__tests__/evmLedgerLegacySafety.test.ts +3 -1
  6. package/__tests__/firmware-update/check-all-firmware-release.test.ts +127 -0
  7. package/__tests__/firmware-update/firmware-artifact-source.test.ts +119 -0
  8. package/__tests__/firmware-update/firmware-host-binding.test.ts +70 -0
  9. package/__tests__/firmware-update/firmware-update-capabilities.test.ts +13 -0
  10. package/__tests__/firmware-update/firmware-update-plan.test.ts +354 -0
  11. package/__tests__/firmware-update/firmware-update-prepared-plan.test.ts +213 -0
  12. package/__tests__/firmware-update/firmware-update-v2-download-before-boot.test.ts +39 -30
  13. package/__tests__/firmware-update/firmware-upload-source.test.ts +70 -0
  14. package/__tests__/kaspa-public-types.type-test.ts +16 -0
  15. package/__tests__/kaspaSignTransaction.test.ts +4 -3
  16. package/__tests__/method-protocol-support.test.ts +113 -0
  17. package/__tests__/protocol-v2.test.ts +400 -123
  18. package/__tests__/public-device-state-api.test.ts +10 -8
  19. package/__tests__/tron-sign-message-init.test.ts +74 -0
  20. package/dist/api/BaseMethod.d.ts +6 -2
  21. package/dist/api/BaseMethod.d.ts.map +1 -1
  22. package/dist/api/CheckAllFirmwareRelease.d.ts.map +1 -1
  23. package/dist/api/CipherKeyValue.d.ts +1 -0
  24. package/dist/api/CipherKeyValue.d.ts.map +1 -1
  25. package/dist/api/DirList.d.ts +1 -0
  26. package/dist/api/DirList.d.ts.map +1 -1
  27. package/dist/api/DirMake.d.ts +1 -0
  28. package/dist/api/DirMake.d.ts.map +1 -1
  29. package/dist/api/DirRemove.d.ts +1 -0
  30. package/dist/api/DirRemove.d.ts.map +1 -1
  31. package/dist/api/FileDelete.d.ts +1 -0
  32. package/dist/api/FileDelete.d.ts.map +1 -1
  33. package/dist/api/FileRead.d.ts +1 -0
  34. package/dist/api/FileRead.d.ts.map +1 -1
  35. package/dist/api/FileWrite.d.ts +1 -0
  36. package/dist/api/FileWrite.d.ts.map +1 -1
  37. package/dist/api/FirmwareUpdate.d.ts.map +1 -1
  38. package/dist/api/FirmwareUpdateV2.d.ts +11 -0
  39. package/dist/api/FirmwareUpdateV2.d.ts.map +1 -1
  40. package/dist/api/FirmwareUpdateV3.d.ts +7 -3
  41. package/dist/api/FirmwareUpdateV3.d.ts.map +1 -1
  42. package/dist/api/FirmwareUpdateV4.d.ts +23 -5
  43. package/dist/api/FirmwareUpdateV4.d.ts.map +1 -1
  44. package/dist/api/GetDeviceState.d.ts +1 -0
  45. package/dist/api/GetDeviceState.d.ts.map +1 -1
  46. package/dist/api/GetFeatures.d.ts.map +1 -1
  47. package/dist/api/GetOnekeyFeatures.d.ts.map +1 -1
  48. package/dist/api/GetPassphraseState.d.ts +1 -0
  49. package/dist/api/GetPassphraseState.d.ts.map +1 -1
  50. package/dist/api/OpenWalletSession.d.ts +1 -0
  51. package/dist/api/OpenWalletSession.d.ts.map +1 -1
  52. package/dist/api/PathInfo.d.ts +1 -0
  53. package/dist/api/PathInfo.d.ts.map +1 -1
  54. package/dist/api/alephium/AlephiumGetAddress.d.ts.map +1 -1
  55. package/dist/api/alephium/AlephiumSignMessage.d.ts.map +1 -1
  56. package/dist/api/alephium/AlephiumSignTransaction.d.ts.map +1 -1
  57. package/dist/api/algo/AlgoGetAddress.d.ts +1 -0
  58. package/dist/api/algo/AlgoGetAddress.d.ts.map +1 -1
  59. package/dist/api/algo/AlgoSignTransaction.d.ts +1 -0
  60. package/dist/api/algo/AlgoSignTransaction.d.ts.map +1 -1
  61. package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts +1 -0
  62. package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts.map +1 -1
  63. package/dist/api/aptos/AptosGetAddress.d.ts +1 -0
  64. package/dist/api/aptos/AptosGetAddress.d.ts.map +1 -1
  65. package/dist/api/aptos/AptosGetPublicKey.d.ts +1 -0
  66. package/dist/api/aptos/AptosGetPublicKey.d.ts.map +1 -1
  67. package/dist/api/aptos/AptosSignInMessage.d.ts +1 -0
  68. package/dist/api/aptos/AptosSignInMessage.d.ts.map +1 -1
  69. package/dist/api/aptos/AptosSignMessage.d.ts +1 -0
  70. package/dist/api/aptos/AptosSignMessage.d.ts.map +1 -1
  71. package/dist/api/aptos/AptosSignTransaction.d.ts +1 -0
  72. package/dist/api/aptos/AptosSignTransaction.d.ts.map +1 -1
  73. package/dist/api/benfen/BenfenGetAddress.d.ts.map +1 -1
  74. package/dist/api/benfen/BenfenGetPublicKey.d.ts.map +1 -1
  75. package/dist/api/benfen/BenfenSignMessage.d.ts.map +1 -1
  76. package/dist/api/benfen/BenfenSignTransaction.d.ts.map +1 -1
  77. package/dist/api/btc/BTCGetAddress.d.ts +1 -0
  78. package/dist/api/btc/BTCGetAddress.d.ts.map +1 -1
  79. package/dist/api/btc/BTCGetPublicKey.d.ts +1 -0
  80. package/dist/api/btc/BTCGetPublicKey.d.ts.map +1 -1
  81. package/dist/api/btc/BTCSignMessage.d.ts +1 -0
  82. package/dist/api/btc/BTCSignMessage.d.ts.map +1 -1
  83. package/dist/api/btc/BTCSignPsbt.d.ts +1 -0
  84. package/dist/api/btc/BTCSignPsbt.d.ts.map +1 -1
  85. package/dist/api/btc/BTCSignTransaction.d.ts +1 -0
  86. package/dist/api/btc/BTCSignTransaction.d.ts.map +1 -1
  87. package/dist/api/btc/BTCVerifyMessage.d.ts +1 -0
  88. package/dist/api/btc/BTCVerifyMessage.d.ts.map +1 -1
  89. package/dist/api/btc/helpers/versionLimit.d.ts +2 -0
  90. package/dist/api/btc/helpers/versionLimit.d.ts.map +1 -1
  91. package/dist/api/cardano/CardanoGetAddress.d.ts +1 -0
  92. package/dist/api/cardano/CardanoGetAddress.d.ts.map +1 -1
  93. package/dist/api/cardano/CardanoGetPublicKey.d.ts +1 -0
  94. package/dist/api/cardano/CardanoGetPublicKey.d.ts.map +1 -1
  95. package/dist/api/cardano/CardanoSignMessage.d.ts +1 -0
  96. package/dist/api/cardano/CardanoSignMessage.d.ts.map +1 -1
  97. package/dist/api/cardano/CardanoSignTransaction.d.ts +1 -0
  98. package/dist/api/cardano/CardanoSignTransaction.d.ts.map +1 -1
  99. package/dist/api/conflux/ConfluxGetAddress.d.ts +1 -0
  100. package/dist/api/conflux/ConfluxGetAddress.d.ts.map +1 -1
  101. package/dist/api/conflux/ConfluxSignMessage.d.ts +1 -0
  102. package/dist/api/conflux/ConfluxSignMessage.d.ts.map +1 -1
  103. package/dist/api/conflux/ConfluxSignMessageCIP23.d.ts +1 -0
  104. package/dist/api/conflux/ConfluxSignMessageCIP23.d.ts.map +1 -1
  105. package/dist/api/conflux/ConfluxSignTransaction.d.ts +1 -0
  106. package/dist/api/conflux/ConfluxSignTransaction.d.ts.map +1 -1
  107. package/dist/api/cosmos/CosmosGetAddress.d.ts +1 -0
  108. package/dist/api/cosmos/CosmosGetAddress.d.ts.map +1 -1
  109. package/dist/api/cosmos/CosmosGetPublicKey.d.ts +1 -0
  110. package/dist/api/cosmos/CosmosGetPublicKey.d.ts.map +1 -1
  111. package/dist/api/cosmos/CosmosSignTransaction.d.ts +1 -0
  112. package/dist/api/cosmos/CosmosSignTransaction.d.ts.map +1 -1
  113. package/dist/api/device/DeviceCancel.d.ts +1 -0
  114. package/dist/api/device/DeviceCancel.d.ts.map +1 -1
  115. package/dist/api/device/DeviceChangePin.d.ts +1 -0
  116. package/dist/api/device/DeviceChangePin.d.ts.map +1 -1
  117. package/dist/api/device/DeviceLock.d.ts +1 -0
  118. package/dist/api/device/DeviceLock.d.ts.map +1 -1
  119. package/dist/api/device/DeviceRebootToBoardloader.d.ts +1 -0
  120. package/dist/api/device/DeviceRebootToBoardloader.d.ts.map +1 -1
  121. package/dist/api/device/DeviceRebootToBootloader.d.ts +1 -0
  122. package/dist/api/device/DeviceRebootToBootloader.d.ts.map +1 -1
  123. package/dist/api/device/DeviceSettings.d.ts +1 -0
  124. package/dist/api/device/DeviceSettings.d.ts.map +1 -1
  125. package/dist/api/device/DeviceSupportFeatures.d.ts +1 -0
  126. package/dist/api/device/DeviceSupportFeatures.d.ts.map +1 -1
  127. package/dist/api/device/DeviceUnlock.d.ts +1 -0
  128. package/dist/api/device/DeviceUnlock.d.ts.map +1 -1
  129. package/dist/api/device/DeviceUpdateBootloader.d.ts +5 -1
  130. package/dist/api/device/DeviceUpdateBootloader.d.ts.map +1 -1
  131. package/dist/api/device/DeviceWipe.d.ts +1 -0
  132. package/dist/api/device/DeviceWipe.d.ts.map +1 -1
  133. package/dist/api/device/PreInitialize.d.ts +1 -0
  134. package/dist/api/device/PreInitialize.d.ts.map +1 -1
  135. package/dist/api/dynex/DnxGetAddress.d.ts.map +1 -1
  136. package/dist/api/dynex/DnxSignTransaction.d.ts.map +1 -1
  137. package/dist/api/evm/EVMGetAddress.d.ts +1 -0
  138. package/dist/api/evm/EVMGetAddress.d.ts.map +1 -1
  139. package/dist/api/evm/EVMGetPublicKey.d.ts +1 -0
  140. package/dist/api/evm/EVMGetPublicKey.d.ts.map +1 -1
  141. package/dist/api/evm/EVMSignMessage.d.ts +1 -0
  142. package/dist/api/evm/EVMSignMessage.d.ts.map +1 -1
  143. package/dist/api/evm/EVMSignMessageEIP712.d.ts.map +1 -1
  144. package/dist/api/evm/EVMSignTransaction.d.ts +1 -0
  145. package/dist/api/evm/EVMSignTransaction.d.ts.map +1 -1
  146. package/dist/api/evm/EVMSignTypedData.d.ts +1 -0
  147. package/dist/api/evm/EVMSignTypedData.d.ts.map +1 -1
  148. package/dist/api/evm/EVMVerifyMessage.d.ts +1 -0
  149. package/dist/api/evm/EVMVerifyMessage.d.ts.map +1 -1
  150. package/dist/api/filecoin/FilecoinGetAddress.d.ts +1 -0
  151. package/dist/api/filecoin/FilecoinGetAddress.d.ts.map +1 -1
  152. package/dist/api/filecoin/FilecoinSignTransaction.d.ts +1 -0
  153. package/dist/api/filecoin/FilecoinSignTransaction.d.ts.map +1 -1
  154. package/dist/api/firmware/FirmwareArtifactSource.d.ts +25 -0
  155. package/dist/api/firmware/FirmwareArtifactSource.d.ts.map +1 -0
  156. package/dist/api/firmware/FirmwareHostBinding.d.ts +6 -0
  157. package/dist/api/firmware/FirmwareHostBinding.d.ts.map +1 -0
  158. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts +7 -0
  159. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts.map +1 -1
  160. package/dist/api/firmware/FirmwareUpdateCapabilities.d.ts +3 -0
  161. package/dist/api/firmware/FirmwareUpdateCapabilities.d.ts.map +1 -0
  162. package/dist/api/firmware/FirmwareUpdatePlan.d.ts +23 -0
  163. package/dist/api/firmware/FirmwareUpdatePlan.d.ts.map +1 -0
  164. package/dist/api/firmware/FirmwareUpdatePreparedPlan.d.ts +30 -0
  165. package/dist/api/firmware/FirmwareUpdatePreparedPlan.d.ts.map +1 -0
  166. package/dist/api/firmware/getBinary.d.ts +7 -0
  167. package/dist/api/firmware/getBinary.d.ts.map +1 -1
  168. package/dist/api/firmware/updateBootloader.d.ts +2 -0
  169. package/dist/api/firmware/updateBootloader.d.ts.map +1 -1
  170. package/dist/api/firmware/uploadFirmware.d.ts +9 -1
  171. package/dist/api/firmware/uploadFirmware.d.ts.map +1 -1
  172. package/dist/api/kaspa/KaspaGetAddress.d.ts +1 -0
  173. package/dist/api/kaspa/KaspaGetAddress.d.ts.map +1 -1
  174. package/dist/api/kaspa/KaspaSignTransaction.d.ts +1 -0
  175. package/dist/api/kaspa/KaspaSignTransaction.d.ts.map +1 -1
  176. package/dist/api/kaspa/helpers/TransferSerialize.d.ts.map +1 -1
  177. package/dist/api/lightning/LnurlAuth.d.ts +0 -4
  178. package/dist/api/lightning/LnurlAuth.d.ts.map +1 -1
  179. package/dist/api/near/NearGetAddress.d.ts +1 -0
  180. package/dist/api/near/NearGetAddress.d.ts.map +1 -1
  181. package/dist/api/near/NearSignTransaction.d.ts +1 -0
  182. package/dist/api/near/NearSignTransaction.d.ts.map +1 -1
  183. package/dist/api/nem/NEMGetAddress.d.ts +1 -0
  184. package/dist/api/nem/NEMGetAddress.d.ts.map +1 -1
  185. package/dist/api/nem/NEMSignTransaction.d.ts +1 -0
  186. package/dist/api/nem/NEMSignTransaction.d.ts.map +1 -1
  187. package/dist/api/neo/NeoGetAddress.d.ts.map +1 -1
  188. package/dist/api/neo/NeoSignTransaction.d.ts.map +1 -1
  189. package/dist/api/nervos/NervosGetAddress.d.ts.map +1 -1
  190. package/dist/api/nervos/NervosSignTransaction.d.ts.map +1 -1
  191. package/dist/api/nexa/NexaGetAddress.d.ts.map +1 -1
  192. package/dist/api/nexa/NexaSignTransaction.d.ts.map +1 -1
  193. package/dist/api/nostr/NostrDecryptMessage.d.ts +1 -0
  194. package/dist/api/nostr/NostrDecryptMessage.d.ts.map +1 -1
  195. package/dist/api/nostr/NostrEncryptMessage.d.ts +1 -0
  196. package/dist/api/nostr/NostrEncryptMessage.d.ts.map +1 -1
  197. package/dist/api/nostr/NostrGetPublicKey.d.ts +1 -0
  198. package/dist/api/nostr/NostrGetPublicKey.d.ts.map +1 -1
  199. package/dist/api/nostr/NostrSignEvent.d.ts +1 -0
  200. package/dist/api/nostr/NostrSignEvent.d.ts.map +1 -1
  201. package/dist/api/nostr/NostrSignSchnorr.d.ts +1 -0
  202. package/dist/api/nostr/NostrSignSchnorr.d.ts.map +1 -1
  203. package/dist/api/polkadot/PolkadotGetAddress.d.ts +1 -0
  204. package/dist/api/polkadot/PolkadotGetAddress.d.ts.map +1 -1
  205. package/dist/api/polkadot/PolkadotSignTransaction.d.ts +1 -0
  206. package/dist/api/polkadot/PolkadotSignTransaction.d.ts.map +1 -1
  207. package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts +1 -0
  208. package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts.map +1 -1
  209. package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts +1 -0
  210. package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts.map +1 -1
  211. package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts +1 -0
  212. package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts.map +1 -1
  213. package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts +1 -0
  214. package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts.map +1 -1
  215. package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts +1 -0
  216. package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts.map +1 -1
  217. package/dist/api/protocol-v2/DeviceInfoGet.d.ts +1 -0
  218. package/dist/api/protocol-v2/DeviceInfoGet.d.ts.map +1 -1
  219. package/dist/api/protocol-v2/DeviceReboot.d.ts +1 -0
  220. package/dist/api/protocol-v2/DeviceReboot.d.ts.map +1 -1
  221. package/dist/api/protocol-v2/DeviceStatusGet.d.ts +1 -0
  222. package/dist/api/protocol-v2/DeviceStatusGet.d.ts.map +1 -1
  223. package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts +1 -0
  224. package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts.map +1 -1
  225. package/dist/api/protocol-v2/FilesystemFormat.d.ts +1 -0
  226. package/dist/api/protocol-v2/FilesystemFormat.d.ts.map +1 -1
  227. package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts +1 -0
  228. package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts.map +1 -1
  229. package/dist/api/protocol-v2/Ping.d.ts +1 -0
  230. package/dist/api/protocol-v2/Ping.d.ts.map +1 -1
  231. package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts +1 -0
  232. package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts.map +1 -1
  233. package/dist/api/scdo/ScdoGetAddress.d.ts.map +1 -1
  234. package/dist/api/scdo/ScdoSignMessage.d.ts.map +1 -1
  235. package/dist/api/scdo/ScdoSignTransaction.d.ts.map +1 -1
  236. package/dist/api/solana/SolGetAddress.d.ts +1 -0
  237. package/dist/api/solana/SolGetAddress.d.ts.map +1 -1
  238. package/dist/api/solana/SolSignMessage.d.ts +1 -0
  239. package/dist/api/solana/SolSignMessage.d.ts.map +1 -1
  240. package/dist/api/solana/SolSignOffchainMessage.d.ts +1 -0
  241. package/dist/api/solana/SolSignOffchainMessage.d.ts.map +1 -1
  242. package/dist/api/solana/SolSignTransaction.d.ts +1 -0
  243. package/dist/api/solana/SolSignTransaction.d.ts.map +1 -1
  244. package/dist/api/starcoin/StarcoinGetAddress.d.ts +1 -0
  245. package/dist/api/starcoin/StarcoinGetAddress.d.ts.map +1 -1
  246. package/dist/api/starcoin/StarcoinGetPublicKey.d.ts +1 -0
  247. package/dist/api/starcoin/StarcoinGetPublicKey.d.ts.map +1 -1
  248. package/dist/api/starcoin/StarcoinSignMessage.d.ts +1 -0
  249. package/dist/api/starcoin/StarcoinSignMessage.d.ts.map +1 -1
  250. package/dist/api/starcoin/StarcoinSignTransaction.d.ts +1 -0
  251. package/dist/api/starcoin/StarcoinSignTransaction.d.ts.map +1 -1
  252. package/dist/api/starcoin/StarcoinVerifyMessage.d.ts +1 -0
  253. package/dist/api/starcoin/StarcoinVerifyMessage.d.ts.map +1 -1
  254. package/dist/api/stellar/StellarGetAddress.d.ts +1 -2
  255. package/dist/api/stellar/StellarGetAddress.d.ts.map +1 -1
  256. package/dist/api/stellar/StellarSignTransaction.d.ts +2 -3
  257. package/dist/api/stellar/StellarSignTransaction.d.ts.map +1 -1
  258. package/dist/api/sui/SuiGetAddress.d.ts +1 -0
  259. package/dist/api/sui/SuiGetAddress.d.ts.map +1 -1
  260. package/dist/api/sui/SuiGetPublicKey.d.ts +1 -0
  261. package/dist/api/sui/SuiGetPublicKey.d.ts.map +1 -1
  262. package/dist/api/sui/SuiSignMessage.d.ts +1 -0
  263. package/dist/api/sui/SuiSignMessage.d.ts.map +1 -1
  264. package/dist/api/sui/SuiSignTransaction.d.ts +1 -0
  265. package/dist/api/sui/SuiSignTransaction.d.ts.map +1 -1
  266. package/dist/api/ton/TonGetAddress.d.ts +1 -0
  267. package/dist/api/ton/TonGetAddress.d.ts.map +1 -1
  268. package/dist/api/ton/TonSignData.d.ts +1 -0
  269. package/dist/api/ton/TonSignData.d.ts.map +1 -1
  270. package/dist/api/ton/TonSignMessage.d.ts +1 -0
  271. package/dist/api/ton/TonSignMessage.d.ts.map +1 -1
  272. package/dist/api/ton/TonSignProof.d.ts +1 -0
  273. package/dist/api/ton/TonSignProof.d.ts.map +1 -1
  274. package/dist/api/tron/TronGetAddress.d.ts +1 -0
  275. package/dist/api/tron/TronGetAddress.d.ts.map +1 -1
  276. package/dist/api/tron/TronSignMessage.d.ts +5 -0
  277. package/dist/api/tron/TronSignMessage.d.ts.map +1 -1
  278. package/dist/api/tron/TronSignTransaction.d.ts +1 -0
  279. package/dist/api/tron/TronSignTransaction.d.ts.map +1 -1
  280. package/dist/api/xrp/XrpGetAddress.d.ts +1 -0
  281. package/dist/api/xrp/XrpGetAddress.d.ts.map +1 -1
  282. package/dist/api/xrp/XrpSignTransaction.d.ts +1 -0
  283. package/dist/api/xrp/XrpSignTransaction.d.ts.map +1 -1
  284. package/dist/core/index.d.ts.map +1 -1
  285. package/dist/data-manager/DataManager.d.ts +1 -0
  286. package/dist/data-manager/DataManager.d.ts.map +1 -1
  287. package/dist/data-manager/connectSettings.d.ts.map +1 -1
  288. package/dist/device/Device.d.ts +3 -1
  289. package/dist/device/Device.d.ts.map +1 -1
  290. package/dist/index.d.ts +271 -87
  291. package/dist/index.d.ts.map +1 -1
  292. package/dist/index.js +2864 -893
  293. package/dist/inject.d.ts.map +1 -1
  294. package/dist/lowLevelInject.d.ts.map +1 -1
  295. package/dist/protocols/protocol-v2/unlockRetry.d.ts.map +1 -1
  296. package/dist/topLevelInject.d.ts.map +1 -1
  297. package/dist/types/api/checkAllFirmwareRelease.d.ts +3 -0
  298. package/dist/types/api/checkAllFirmwareRelease.d.ts.map +1 -1
  299. package/dist/types/api/deviceUpdateBootloader.d.ts +6 -0
  300. package/dist/types/api/deviceUpdateBootloader.d.ts.map +1 -1
  301. package/dist/types/api/export.d.ts +5 -2
  302. package/dist/types/api/export.d.ts.map +1 -1
  303. package/dist/types/api/firmwareUpdate.d.ts +69 -0
  304. package/dist/types/api/firmwareUpdate.d.ts.map +1 -1
  305. package/dist/types/api/firmwareUpdateCapabilities.d.ts +9 -0
  306. package/dist/types/api/firmwareUpdateCapabilities.d.ts.map +1 -0
  307. package/dist/types/api/firmwareUpdatePlan.d.ts +27 -0
  308. package/dist/types/api/firmwareUpdatePlan.d.ts.map +1 -0
  309. package/dist/types/api/firmwareUpdatePreparedPlan.d.ts +42 -0
  310. package/dist/types/api/firmwareUpdatePreparedPlan.d.ts.map +1 -0
  311. package/dist/types/api/index.d.ts +9 -1
  312. package/dist/types/api/index.d.ts.map +1 -1
  313. package/dist/types/api/kaspaSignTransaction.d.ts +15 -2
  314. package/dist/types/api/kaspaSignTransaction.d.ts.map +1 -1
  315. package/dist/types/device.d.ts +0 -1
  316. package/dist/types/device.d.ts.map +1 -1
  317. package/dist/types/settings.d.ts +13 -0
  318. package/dist/types/settings.d.ts.map +1 -1
  319. package/dist/utils/deviceInfoUtils.d.ts +0 -1
  320. package/dist/utils/deviceInfoUtils.d.ts.map +1 -1
  321. package/dist/utils/deviceVersionUtils.d.ts +1 -0
  322. package/dist/utils/deviceVersionUtils.d.ts.map +1 -1
  323. package/dist/utils/index.d.ts +1 -1
  324. package/dist/utils/index.d.ts.map +1 -1
  325. package/package.json +4 -4
  326. package/src/api/BaseMethod.ts +21 -18
  327. package/src/api/CheckAllFirmwareRelease.ts +44 -4
  328. package/src/api/CipherKeyValue.ts +4 -0
  329. package/src/api/DirList.ts +4 -1
  330. package/src/api/DirMake.ts +4 -1
  331. package/src/api/DirRemove.ts +4 -1
  332. package/src/api/FileDelete.ts +4 -1
  333. package/src/api/FileRead.ts +4 -1
  334. package/src/api/FileWrite.ts +4 -1
  335. package/src/api/FirmwareUpdate.ts +0 -8
  336. package/src/api/FirmwareUpdateV2.ts +292 -120
  337. package/src/api/FirmwareUpdateV3.ts +256 -61
  338. package/src/api/FirmwareUpdateV4.ts +767 -289
  339. package/src/api/GetDeviceState.ts +4 -0
  340. package/src/api/GetFeatures.ts +1 -4
  341. package/src/api/GetOnekeyFeatures.ts +0 -5
  342. package/src/api/GetPassphraseState.ts +4 -0
  343. package/src/api/OpenWalletSession.ts +4 -0
  344. package/src/api/PathInfo.ts +4 -1
  345. package/src/api/UploadPortfolio.ts +1 -1
  346. package/src/api/alephium/AlephiumGetAddress.ts +0 -4
  347. package/src/api/alephium/AlephiumSignMessage.ts +0 -4
  348. package/src/api/alephium/AlephiumSignTransaction.ts +0 -4
  349. package/src/api/algo/AlgoGetAddress.ts +4 -0
  350. package/src/api/algo/AlgoSignTransaction.ts +4 -0
  351. package/src/api/allnetwork/AllNetworkGetAddressBase.ts +5 -13
  352. package/src/api/aptos/AptosGetAddress.ts +4 -0
  353. package/src/api/aptos/AptosGetPublicKey.ts +4 -0
  354. package/src/api/aptos/AptosSignInMessage.ts +4 -0
  355. package/src/api/aptos/AptosSignMessage.ts +4 -0
  356. package/src/api/aptos/AptosSignTransaction.ts +4 -0
  357. package/src/api/benfen/BenfenGetAddress.ts +11 -7
  358. package/src/api/benfen/BenfenGetPublicKey.ts +0 -4
  359. package/src/api/benfen/BenfenSignMessage.ts +0 -4
  360. package/src/api/benfen/BenfenSignTransaction.ts +0 -4
  361. package/src/api/btc/BTCGetAddress.ts +8 -1
  362. package/src/api/btc/BTCGetPublicKey.ts +8 -1
  363. package/src/api/btc/BTCSignMessage.ts +8 -1
  364. package/src/api/btc/BTCSignPsbt.ts +4 -0
  365. package/src/api/btc/BTCSignTransaction.ts +8 -1
  366. package/src/api/btc/BTCVerifyMessage.ts +8 -1
  367. package/src/api/btc/helpers/versionLimit.ts +7 -4
  368. package/src/api/cardano/CardanoGetAddress.ts +4 -0
  369. package/src/api/cardano/CardanoGetPublicKey.ts +4 -0
  370. package/src/api/cardano/CardanoSignMessage.ts +4 -0
  371. package/src/api/cardano/CardanoSignTransaction.ts +4 -0
  372. package/src/api/conflux/ConfluxGetAddress.ts +4 -0
  373. package/src/api/conflux/ConfluxSignMessage.ts +4 -0
  374. package/src/api/conflux/ConfluxSignMessageCIP23.ts +4 -0
  375. package/src/api/conflux/ConfluxSignTransaction.ts +6 -5
  376. package/src/api/cosmos/CosmosGetAddress.ts +4 -0
  377. package/src/api/cosmos/CosmosGetPublicKey.ts +4 -0
  378. package/src/api/cosmos/CosmosSignTransaction.ts +4 -0
  379. package/src/api/device/DeviceCancel.ts +4 -0
  380. package/src/api/device/DeviceChangePin.ts +4 -0
  381. package/src/api/device/DeviceLock.ts +4 -0
  382. package/src/api/device/DeviceRebootToBoardloader.ts +4 -0
  383. package/src/api/device/DeviceRebootToBootloader.ts +4 -0
  384. package/src/api/device/DeviceSettings.ts +4 -0
  385. package/src/api/device/DeviceSupportFeatures.ts +4 -0
  386. package/src/api/device/DeviceUnlock.ts +4 -0
  387. package/src/api/device/DeviceUpdateBootloader.ts +122 -6
  388. package/src/api/device/DeviceWipe.ts +4 -0
  389. package/src/api/device/PreInitialize.ts +4 -0
  390. package/src/api/dynex/DnxGetAddress.ts +0 -6
  391. package/src/api/dynex/DnxSignTransaction.ts +0 -6
  392. package/src/api/evm/EVMGetAddress.ts +4 -0
  393. package/src/api/evm/EVMGetPublicKey.ts +4 -0
  394. package/src/api/evm/EVMSignMessage.ts +4 -0
  395. package/src/api/evm/EVMSignMessageEIP712.ts +1 -11
  396. package/src/api/evm/EVMSignTransaction.ts +4 -0
  397. package/src/api/evm/EVMSignTypedData.ts +4 -0
  398. package/src/api/evm/EVMVerifyMessage.ts +4 -0
  399. package/src/api/filecoin/FilecoinGetAddress.ts +4 -0
  400. package/src/api/filecoin/FilecoinSignTransaction.ts +4 -0
  401. package/src/api/firmware/FirmwareArtifactSource.ts +278 -0
  402. package/src/api/firmware/FirmwareHostBinding.ts +100 -0
  403. package/src/api/firmware/FirmwareUpdateBaseMethod.ts +50 -0
  404. package/src/api/firmware/FirmwareUpdateCapabilities.ts +9 -0
  405. package/src/api/firmware/FirmwareUpdatePlan.ts +628 -0
  406. package/src/api/firmware/FirmwareUpdatePreparedPlan.ts +392 -0
  407. package/src/api/firmware/updateBootloader.ts +19 -4
  408. package/src/api/firmware/uploadFirmware.ts +140 -22
  409. package/src/api/kaspa/KaspaGetAddress.ts +4 -0
  410. package/src/api/kaspa/KaspaSignTransaction.ts +37 -15
  411. package/src/api/kaspa/helpers/TransferSerialize.ts +3 -7
  412. package/src/api/lightning/LnurlAuth.ts +0 -4
  413. package/src/api/near/NearGetAddress.ts +4 -0
  414. package/src/api/near/NearSignTransaction.ts +4 -0
  415. package/src/api/nem/NEMGetAddress.ts +4 -0
  416. package/src/api/nem/NEMSignTransaction.ts +4 -0
  417. package/src/api/neo/NeoGetAddress.ts +0 -4
  418. package/src/api/neo/NeoSignTransaction.ts +0 -4
  419. package/src/api/nervos/NervosGetAddress.ts +0 -4
  420. package/src/api/nervos/NervosSignTransaction.ts +0 -4
  421. package/src/api/nexa/NexaGetAddress.ts +0 -4
  422. package/src/api/nexa/NexaSignTransaction.ts +0 -4
  423. package/src/api/nostr/NostrDecryptMessage.ts +4 -0
  424. package/src/api/nostr/NostrEncryptMessage.ts +4 -0
  425. package/src/api/nostr/NostrGetPublicKey.ts +4 -0
  426. package/src/api/nostr/NostrSignEvent.ts +4 -0
  427. package/src/api/nostr/NostrSignSchnorr.ts +4 -0
  428. package/src/api/polkadot/PolkadotGetAddress.ts +4 -0
  429. package/src/api/polkadot/PolkadotSignTransaction.ts +4 -0
  430. package/src/api/protocol-v2/DeviceFactoryInfoGet.ts +4 -1
  431. package/src/api/protocol-v2/DeviceFactoryInfoSet.ts +4 -1
  432. package/src/api/protocol-v2/DeviceFirmwareUpdate.ts +4 -1
  433. package/src/api/protocol-v2/DeviceGetFirmwareUpdateStatus.ts +4 -1
  434. package/src/api/protocol-v2/DeviceGetOnboardingStatus.ts +4 -1
  435. package/src/api/protocol-v2/DeviceInfoGet.ts +4 -8
  436. package/src/api/protocol-v2/DeviceReboot.ts +4 -2
  437. package/src/api/protocol-v2/DeviceStatusGet.ts +4 -1
  438. package/src/api/protocol-v2/DeviceUploadWallpaper.ts +4 -1
  439. package/src/api/protocol-v2/FilesystemFormat.ts +4 -1
  440. package/src/api/protocol-v2/FilesystemPermissionFix.ts +4 -1
  441. package/src/api/protocol-v2/Ping.ts +4 -1
  442. package/src/api/protocol-v2/ProtocolInfoRequest.ts +4 -1
  443. package/src/api/scdo/ScdoGetAddress.ts +0 -4
  444. package/src/api/scdo/ScdoSignMessage.ts +0 -4
  445. package/src/api/scdo/ScdoSignTransaction.ts +0 -4
  446. package/src/api/solana/SolGetAddress.ts +4 -0
  447. package/src/api/solana/SolSignMessage.ts +4 -0
  448. package/src/api/solana/SolSignOffchainMessage.ts +4 -0
  449. package/src/api/solana/SolSignTransaction.ts +4 -0
  450. package/src/api/starcoin/StarcoinGetAddress.ts +4 -0
  451. package/src/api/starcoin/StarcoinGetPublicKey.ts +4 -0
  452. package/src/api/starcoin/StarcoinSignMessage.ts +4 -0
  453. package/src/api/starcoin/StarcoinSignTransaction.ts +4 -0
  454. package/src/api/starcoin/StarcoinVerifyMessage.ts +4 -0
  455. package/src/api/stellar/StellarGetAddress.ts +1 -10
  456. package/src/api/stellar/StellarSignTransaction.ts +1 -14
  457. package/src/api/sui/SuiGetAddress.ts +4 -0
  458. package/src/api/sui/SuiGetPublicKey.ts +4 -0
  459. package/src/api/sui/SuiSignMessage.ts +4 -0
  460. package/src/api/sui/SuiSignTransaction.ts +4 -0
  461. package/src/api/ton/TonGetAddress.ts +4 -0
  462. package/src/api/ton/TonSignData.ts +5 -1
  463. package/src/api/ton/TonSignMessage.ts +4 -0
  464. package/src/api/ton/TonSignProof.ts +4 -0
  465. package/src/api/tron/TronGetAddress.ts +4 -0
  466. package/src/api/tron/TronSignMessage.ts +18 -7
  467. package/src/api/tron/TronSignTransaction.ts +4 -0
  468. package/src/api/xrp/XrpGetAddress.ts +4 -0
  469. package/src/api/xrp/XrpSignTransaction.ts +5 -1
  470. package/src/core/index.ts +4 -17
  471. package/src/data-manager/DataManager.ts +33 -33
  472. package/src/data-manager/connectSettings.ts +11 -0
  473. package/src/device/Device.ts +53 -53
  474. package/src/index.ts +5 -0
  475. package/src/inject.ts +22 -2
  476. package/src/lowLevelInject.ts +5 -1
  477. package/src/protocols/protocol-v2/unlockRetry.ts +18 -11
  478. package/src/topLevelInject.ts +5 -1
  479. package/src/types/api/checkAllFirmwareRelease.ts +3 -0
  480. package/src/types/api/deviceUpdateBootloader.ts +6 -0
  481. package/src/types/api/export.ts +20 -0
  482. package/src/types/api/firmwareUpdate.ts +76 -0
  483. package/src/types/api/firmwareUpdateCapabilities.ts +9 -0
  484. package/src/types/api/firmwareUpdatePlan.ts +36 -0
  485. package/src/types/api/firmwareUpdatePreparedPlan.ts +53 -0
  486. package/src/types/api/index.ts +14 -0
  487. package/src/types/api/kaspaSignTransaction.ts +20 -2
  488. package/src/types/device.ts +0 -1
  489. package/src/types/settings.ts +13 -0
  490. package/src/utils/deviceInfoUtils.ts +0 -3
  491. package/src/utils/deviceVersionUtils.ts +1 -1
  492. package/src/utils/index.ts +0 -1
  493. package/tsconfig.type-tests.json +8 -0
@@ -9,6 +9,7 @@ import {
9
9
  getDeviceBLEFirmwareVersion,
10
10
  getDeviceBootloaderVersion,
11
11
  getDeviceFirmwareVersion,
12
+ getDeviceUUID,
12
13
  getLogger,
13
14
  } from '../utils';
14
15
  import { getBinary, getSysResourceBinary } from './firmware/getBinary';
@@ -17,10 +18,21 @@ import { FirmwareUpdateBaseMethod } from './firmware/FirmwareUpdateBaseMethod';
17
18
  import { DevicePool } from '../device/DevicePool';
18
19
  import { DEVICE } from '../events';
19
20
  import { buildProtocolV1FeaturesPayload } from '../deviceProfile';
20
-
21
- import type { FirmwareUpdateV3Params } from '../types/api/firmwareUpdate';
21
+ import { openFirmwareByteSource } from './firmware/FirmwareArtifactSource';
22
+ import { resolveFirmwareUpdateHostBinding } from './firmware/FirmwareHostBinding';
23
+ import {
24
+ assertFirmwareUpdatePreparedPlanDeviceIdentity,
25
+ assertFirmwareUpdatePreparedPlanBinding,
26
+ getFirmwareUpdateResourceName,
27
+ } from './firmware/FirmwareUpdatePreparedPlan';
28
+
29
+ import type {
30
+ FirmwareArtifactReference,
31
+ FirmwareUpdateV3Params,
32
+ } from '../types/api/firmwareUpdate';
22
33
  import type { Deferred, EFirmwareType } from '@onekeyfe/hd-shared';
23
34
  import type { TypedResponseMessage } from '../device/DeviceCommands';
35
+ import type { FirmwareByteSource } from './firmware/FirmwareArtifactSource';
24
36
 
25
37
  const Log = getLogger(LoggerNames.Method);
26
38
 
@@ -42,6 +54,8 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
42
54
 
43
55
  private isSwitchFirmware = false;
44
56
 
57
+ private artifactSources: FirmwareByteSource[] = [];
58
+
45
59
  init() {
46
60
  this.allowDeviceMode = [UI_REQUEST.BOOTLOADER, UI_REQUEST.NOT_INITIALIZE];
47
61
  this.requireDeviceMode = [];
@@ -62,8 +76,54 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
62
76
  { name: 'firmwareType', type: 'string' },
63
77
  { name: 'platform', type: 'string' },
64
78
  ]);
79
+ const hostBinding =
80
+ payload.artifacts || payload.preparedPlan
81
+ ? resolveFirmwareUpdateHostBinding(payload.hostBindingGeneration)
82
+ : undefined;
83
+ if (hostBinding) {
84
+ assertFirmwareUpdatePreparedPlanBinding({
85
+ preparedPlan: payload.preparedPlan,
86
+ executor: 'v3',
87
+ platform: payload.platform,
88
+ scopeTargets: ['bootloader', 'firmware', 'resource', 'ble'],
89
+ bindings: [
90
+ ...(payload.artifacts?.bootloader
91
+ ? [
92
+ {
93
+ target: 'bootloader' as const,
94
+ artifact: payload.artifacts.bootloader,
95
+ },
96
+ ]
97
+ : []),
98
+ ...(payload.artifacts?.firmware
99
+ ? [
100
+ {
101
+ target: 'firmware' as const,
102
+ artifact: payload.artifacts.firmware,
103
+ },
104
+ ]
105
+ : []),
106
+ ...(payload.artifacts?.ble
107
+ ? [
108
+ {
109
+ target: 'ble' as const,
110
+ artifact: payload.artifacts.ble,
111
+ },
112
+ ]
113
+ : []),
114
+ ...(payload.artifacts?.resourceEntries ?? []).map(
115
+ (entry: { entryName: string; artifact: FirmwareArtifactReference }) => ({
116
+ target: 'resource' as const,
117
+ entryName: entry.entryName,
118
+ artifact: entry.artifact,
119
+ })
120
+ ),
121
+ ],
122
+ });
123
+ }
65
124
 
66
125
  this.params = {
126
+ preparedPlan: payload.preparedPlan,
67
127
  bleBinary: payload.bleBinary,
68
128
  firmwareBinary: payload.firmwareBinary,
69
129
  forcedUpdateRes: payload.forcedUpdateRes,
@@ -74,16 +134,12 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
74
134
  resourceBinary: payload.resourceBinary,
75
135
  firmwareType: payload.firmwareType,
76
136
  platform: payload.platform,
137
+ artifactReader: hostBinding?.artifactReader ?? payload.artifactReader,
138
+ artifacts: payload.artifacts,
77
139
  };
78
140
  }
79
141
 
80
142
  async run() {
81
- if (this.device.isProtocolV2()) {
82
- throw ERRORS.TypedError(
83
- HardwareErrorCode.RuntimeError,
84
- 'Protocol V2 firmware update must use firmwareUpdateV4'
85
- );
86
- }
87
143
  Log.debug('FirmwareUpdateV3 strategy: Protocol V1');
88
144
  return this.runProtocolV1();
89
145
  }
@@ -103,39 +159,53 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
103
159
  if (!features) {
104
160
  throw ERRORS.TypedError(HardwareErrorCode.RuntimeError, 'Device features not available');
105
161
  }
162
+ if (this.params.preparedPlan) {
163
+ assertFirmwareUpdatePreparedPlanDeviceIdentity({
164
+ preparedPlan: this.params.preparedPlan,
165
+ deviceIdentity: getDeviceUUID(features) || undefined,
166
+ });
167
+ }
106
168
 
107
169
  const deviceFirmwareType = device.getCurrentFirmwareType();
108
170
  const firmwareType = this.params.firmwareType ?? deviceFirmwareType;
109
171
  this.isSwitchFirmware = firmwareType !== deviceFirmwareType;
110
172
 
111
173
  let resourceBinary: ArrayBuffer | null = null;
112
- let fwBinaryMap: { fileName: string; binary: ArrayBuffer }[] = [];
113
- let bootloaderBinary: ArrayBuffer | null = null;
174
+ let resourceEntries: Array<{ entryName: string; source: FirmwareByteSource }> = [];
175
+ let fwSources: Array<{ fileName: string; source: FirmwareByteSource }> = [];
176
+ let bootloaderSource: FirmwareByteSource | null = null;
114
177
  try {
115
178
  this.postTipMessage(FirmwareUpdateTipMessage.StartDownloadFirmware);
116
- resourceBinary = await this.prepareResourceBinary(firmwareType);
117
- fwBinaryMap = await this.prepareFirmwareAndBleBinary(firmwareType);
118
- bootloaderBinary = await this.prepareBootloaderBinary(firmwareType);
179
+ const resourceInput = await this.prepareResourceInput(firmwareType);
180
+ resourceBinary = resourceInput.resourceBinary;
181
+ resourceEntries = resourceInput.resourceEntries;
182
+ fwSources = await this.prepareFirmwareAndBleSources(firmwareType);
183
+ bootloaderSource = await this.prepareBootloaderSource(firmwareType);
119
184
  this.postTipMessage(FirmwareUpdateTipMessage.FinishDownloadFirmware);
120
185
  } catch (err) {
186
+ await this.closeArtifactSources();
121
187
  throw ERRORS.TypedError(HardwareErrorCode.FirmwareUpdateDownloadFailed, err.message ?? err);
122
188
  }
123
189
 
124
- if (!bootloaderBinary && fwBinaryMap.length === 0) {
190
+ if (!bootloaderSource && fwSources.length === 0) {
191
+ await this.closeArtifactSources();
125
192
  throw ERRORS.TypedError(
126
193
  HardwareErrorCode.FirmwareUpdateDownloadFailed,
127
194
  'No firmware to update'
128
195
  );
129
196
  }
130
197
 
131
- await this.enterBootloaderMode();
132
-
133
- const updateResult = await this.executeUpdate({
134
- resourceBinary,
135
- fwBinaryMap,
136
- bootloaderBinary,
137
- });
138
- return updateResult;
198
+ try {
199
+ await this.enterBootloaderMode();
200
+ return await this.executeUpdate({
201
+ resourceBinary,
202
+ resourceEntries,
203
+ fwSources,
204
+ bootloaderSource,
205
+ });
206
+ } finally {
207
+ await this.closeArtifactSources();
208
+ }
139
209
  }
140
210
 
141
211
  private validateDeviceAndVersion(deviceType: EDeviceType, bootloaderVersion: string) {
@@ -155,12 +225,81 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
155
225
  }
156
226
  }
157
227
 
158
- private async prepareResourceBinary(firmwareType: EFirmwareType) {
228
+ private async openArtifactSource(
229
+ binary: ArrayBuffer | undefined,
230
+ artifact: FirmwareArtifactReference | undefined
231
+ ) {
232
+ const source = await openFirmwareByteSource({
233
+ binary,
234
+ artifact,
235
+ reader: this.params.artifactReader,
236
+ });
237
+ if (source) {
238
+ this.artifactSources.push(source);
239
+ }
240
+ return source;
241
+ }
242
+
243
+ private async closeArtifactSources() {
244
+ const sources = this.artifactSources.splice(0);
245
+ await Promise.all(sources.map(source => source.close().catch(() => undefined)));
246
+ }
247
+
248
+ private assertSdkDownloadAllowed(artifactName: string) {
249
+ if (
250
+ this.params.artifactReader ||
251
+ DataManager.getSettings('firmwareManifestMode') === 'external-only'
252
+ ) {
253
+ throw ERRORS.TypedError(
254
+ HardwareErrorCode.RuntimeError,
255
+ `${artifactName} must be prepared by the external firmware host`,
256
+ {
257
+ firmwareUpdateCode: 'FirmwareArtifactsNotPrepared',
258
+ artifactName,
259
+ }
260
+ );
261
+ }
262
+ }
263
+
264
+ private async prepareResourceInput(firmwareType: EFirmwareType) {
265
+ const preparedEntries = this.params.artifacts?.resourceEntries;
266
+ if (preparedEntries?.length && this.params.resourceBinary) {
267
+ throw ERRORS.TypedError(
268
+ HardwareErrorCode.RuntimeError,
269
+ 'Firmware resource input must not contain both archive binary and prepared entries'
270
+ );
271
+ }
272
+ if (preparedEntries?.length) {
273
+ const resourceEntries: Array<{ entryName: string; source: FirmwareByteSource }> = [];
274
+ for (const entry of preparedEntries) {
275
+ const resourceName = getFirmwareUpdateResourceName(entry.entryName);
276
+ const source = await this.openArtifactSource(undefined, entry.artifact);
277
+ if (!source) {
278
+ throw ERRORS.TypedError(
279
+ HardwareErrorCode.RuntimeError,
280
+ `Firmware resource entry ${entry.entryName} is not prepared`
281
+ );
282
+ }
283
+ resourceEntries.push({ entryName: resourceName, source });
284
+ }
285
+ return {
286
+ resourceBinary: null,
287
+ resourceEntries,
288
+ };
289
+ }
159
290
  if (this.params.resourceBinary) {
160
- return this.params.resourceBinary;
291
+ return {
292
+ resourceBinary: this.params.resourceBinary,
293
+ resourceEntries: [],
294
+ };
161
295
  }
162
296
  const { features } = this.device;
163
- if (!features) return null;
297
+ if (!features) {
298
+ return {
299
+ resourceBinary: null,
300
+ resourceEntries: [],
301
+ };
302
+ }
164
303
  const resourceUrl = DataManager.getSysResourcesLatestRelease({
165
304
  features,
166
305
  forcedUpdateRes: this.params.forcedUpdateRes,
@@ -168,16 +307,27 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
168
307
  });
169
308
 
170
309
  if (resourceUrl) {
171
- const resource = (await getSysResourceBinary(resourceUrl)).binary;
172
- return resource;
310
+ this.assertSdkDownloadAllowed('resource');
311
+ return {
312
+ resourceBinary: (await getSysResourceBinary(resourceUrl)).binary,
313
+ resourceEntries: [],
314
+ };
173
315
  }
174
316
  Log.warn('No resource url found');
175
- return null;
317
+ return {
318
+ resourceBinary: null,
319
+ resourceEntries: [],
320
+ };
176
321
  }
177
322
 
178
- private async prepareBootloaderBinary(firmwareType: EFirmwareType): Promise<ArrayBuffer | null> {
179
- if (this.params.bootloaderBinary) {
180
- return this.params.bootloaderBinary;
323
+ private async prepareBootloaderSource(
324
+ firmwareType: EFirmwareType
325
+ ): Promise<FirmwareByteSource | null> {
326
+ if (this.params.bootloaderBinary || this.params.artifacts?.bootloader) {
327
+ return this.openArtifactSource(
328
+ this.params.bootloaderBinary,
329
+ this.params.artifacts?.bootloader
330
+ );
181
331
  }
182
332
  const { features } = this.device;
183
333
  if (!features) return null;
@@ -185,23 +335,35 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
185
335
  if (this.params.bootloaderVersion) {
186
336
  const bootResourceUrl = DataManager.getBootloaderResource(features, firmwareType);
187
337
  if (bootResourceUrl) {
338
+ this.assertSdkDownloadAllowed('bootloader');
188
339
  const bootBinary = (await getSysResourceBinary(bootResourceUrl)).binary;
189
- return bootBinary;
340
+ return this.openArtifactSource(bootBinary, undefined);
190
341
  }
191
342
  }
192
343
  return null;
193
344
  }
194
345
 
195
- private async prepareFirmwareAndBleBinary(firmwareType: EFirmwareType) {
196
- const fwBinaryMap: { fileName: string; binary: ArrayBuffer }[] = [];
197
- if (this.params.firmwareBinary) {
198
- fwBinaryMap.push({
346
+ private async prepareFirmwareAndBleSources(firmwareType: EFirmwareType) {
347
+ const fwSources: Array<{ fileName: string; source: FirmwareByteSource }> = [];
348
+ if (this.params.firmwareBinary || this.params.artifacts?.firmware) {
349
+ const source = await this.openArtifactSource(
350
+ this.params.firmwareBinary,
351
+ this.params.artifacts?.firmware
352
+ );
353
+ if (!source) {
354
+ throw ERRORS.TypedError(
355
+ HardwareErrorCode.RuntimeError,
356
+ 'Firmware artifact is not prepared'
357
+ );
358
+ }
359
+ fwSources.push({
199
360
  fileName: 'firmware.bin',
200
- binary: this.params.firmwareBinary,
361
+ source,
201
362
  });
202
363
  } else if (this.params.firmwareVersion) {
203
364
  const { features } = this.device;
204
365
  if (features) {
366
+ this.assertSdkDownloadAllowed('firmware');
205
367
  const firmwareBinary = (
206
368
  await getBinary({
207
369
  features,
@@ -211,44 +373,65 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
211
373
  firmwareType,
212
374
  })
213
375
  ).binary;
214
- fwBinaryMap.push({
376
+ const source = await this.openArtifactSource(firmwareBinary, undefined);
377
+ if (!source) {
378
+ throw ERRORS.TypedError(
379
+ HardwareErrorCode.RuntimeError,
380
+ 'Firmware binary is not prepared'
381
+ );
382
+ }
383
+ fwSources.push({
215
384
  fileName: 'firmware.bin',
216
- binary: firmwareBinary,
385
+ source,
217
386
  });
218
387
  }
219
388
  }
220
389
 
221
- if (this.params.bleBinary) {
222
- fwBinaryMap.push({
390
+ if (this.params.bleBinary || this.params.artifacts?.ble) {
391
+ const source = await this.openArtifactSource(
392
+ this.params.bleBinary,
393
+ this.params.artifacts?.ble
394
+ );
395
+ if (!source) {
396
+ throw ERRORS.TypedError(HardwareErrorCode.RuntimeError, 'BLE artifact is not prepared');
397
+ }
398
+ fwSources.push({
223
399
  fileName: 'ble-firmware.bin',
224
- binary: this.params.bleBinary,
400
+ source,
225
401
  });
226
402
  } else if (this.params.bleVersion) {
227
403
  const { features } = this.device;
228
404
  if (features) {
405
+ this.assertSdkDownloadAllowed('ble');
229
406
  const bleBinary = await getBinary({
230
407
  features,
231
408
  version: this.params.bleVersion,
232
409
  updateType: 'ble',
233
410
  firmwareType,
234
411
  });
235
- fwBinaryMap.push({
412
+ const source = await this.openArtifactSource(bleBinary.binary, undefined);
413
+ if (!source) {
414
+ throw ERRORS.TypedError(HardwareErrorCode.RuntimeError, 'BLE binary is not prepared');
415
+ }
416
+ fwSources.push({
236
417
  fileName: 'ble-firmware.bin',
237
- binary: bleBinary.binary,
418
+ source,
238
419
  });
239
420
  }
240
421
  }
241
- return fwBinaryMap;
422
+ return fwSources;
242
423
  }
243
424
 
244
425
  private async executeUpdate({
245
426
  resourceBinary,
246
- fwBinaryMap,
247
- bootloaderBinary,
427
+ resourceEntries,
428
+ fwSources,
429
+ bootloaderSource,
248
430
  }: {
249
431
  resourceBinary: ArrayBuffer | null;
250
- fwBinaryMap: { fileName: string; binary: ArrayBuffer }[];
251
- bootloaderBinary: ArrayBuffer | null;
432
+ resourceEntries: Array<{ entryName: string; source: FirmwareByteSource }>;
433
+ fwSources: Array<{ fileName: string; source: FirmwareByteSource }>;
434
+ bootloaderSource: FirmwareByteSource | null;
252
435
  }) {
253
436
  let totalSize = 0;
254
437
  let processedSize = 0;
@@ -256,11 +439,14 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
256
439
  if (resourceBinary) {
257
440
  totalSize += resourceBinary.byteLength;
258
441
  }
259
- for (const fwbinary of fwBinaryMap) {
260
- totalSize += fwbinary.binary.byteLength;
442
+ for (const entry of resourceEntries) {
443
+ totalSize += entry.source.size;
444
+ }
445
+ for (const firmware of fwSources) {
446
+ totalSize += firmware.source.size;
261
447
  }
262
- if (bootloaderBinary) {
263
- totalSize += bootloaderBinary.byteLength;
448
+ if (bootloaderSource) {
449
+ totalSize += bootloaderSource.size;
264
450
  }
265
451
 
266
452
  this.postTipMessage(FirmwareUpdateTipMessage.StartTransferData);
@@ -283,9 +469,18 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
283
469
  }
284
470
  }
285
471
 
286
- if (bootloaderBinary) {
287
- processedSize = await this.emmcCommonUpdateProcess({
288
- payload: bootloaderBinary,
472
+ for (const entry of resourceEntries) {
473
+ processedSize = await this.emmcCommonUpdateProcessFromSource({
474
+ source: entry.source,
475
+ filePath: `0:res/${entry.entryName}`,
476
+ processedSize,
477
+ totalSize,
478
+ });
479
+ }
480
+
481
+ if (bootloaderSource) {
482
+ processedSize = await this.emmcCommonUpdateProcessFromSource({
483
+ source: bootloaderSource,
289
484
  filePath: `0:boot/bootloader.bin`,
290
485
  processedSize,
291
486
  totalSize,
@@ -294,11 +489,11 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
294
489
 
295
490
  await this.createUpdatesFolderIfNotExists(`0:updates/`);
296
491
 
297
- for (const fwbinary of fwBinaryMap) {
298
- if (fwbinary) {
299
- processedSize = await this.emmcCommonUpdateProcess({
300
- payload: fwbinary.binary,
301
- filePath: `0:updates/${fwbinary.fileName}`,
492
+ for (const firmware of fwSources) {
493
+ if (firmware) {
494
+ processedSize = await this.emmcCommonUpdateProcessFromSource({
495
+ source: firmware.source,
496
+ filePath: `0:updates/${firmware.fileName}`,
302
497
  processedSize,
303
498
  totalSize,
304
499
  });