@onekeyfe/hd-core 1.2.0-alpha.8 → 1.2.0-alpha.81

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 (810) hide show
  1. package/__tests__/AllNetworkGetAddressBase.tracing.test.ts +390 -0
  2. package/__tests__/DeviceCommands.test.ts +563 -0
  3. package/__tests__/DeviceEventRegistration.test.ts +49 -0
  4. package/__tests__/chain-params-onekey-compatibility.test.ts +229 -0
  5. package/__tests__/check-all-firmware-release-protocol-v2.test.ts +492 -0
  6. package/__tests__/check-firmware-release-protocol-v2.test.ts +164 -0
  7. package/__tests__/connectSettings.test.ts +45 -5
  8. package/__tests__/core-dispose.test.ts +34 -0
  9. package/__tests__/core-error-output.test.ts +39 -0
  10. package/__tests__/core-initialization.test.ts +23 -0
  11. package/__tests__/device-connector-protocol.test.ts +81 -0
  12. package/__tests__/device-features-state.test.ts +78 -0
  13. package/__tests__/device-identity.test.ts +52 -0
  14. package/__tests__/device-initialize-timeout.test.ts +56 -0
  15. package/__tests__/device-lifecycle-events.test.ts +351 -0
  16. package/__tests__/device-pool-state.test.ts +166 -0
  17. package/__tests__/device-settings.test.ts +437 -0
  18. package/__tests__/device-state-contract.test.ts +28 -0
  19. package/__tests__/device-state-events.test.ts +286 -0
  20. package/__tests__/device-state-mapper.test.ts +288 -0
  21. package/__tests__/device-state-projector.test.ts +114 -0
  22. package/__tests__/device-state-store.test.ts +109 -0
  23. package/__tests__/device-utils.test.ts +154 -0
  24. package/__tests__/device-wallet-session-store.test.ts +478 -0
  25. package/__tests__/deviceFeaturesUtils.test.ts +39 -0
  26. package/__tests__/devicePoolBootloaderPath.test.ts +64 -0
  27. package/__tests__/deviceSettings.test.ts +113 -0
  28. package/__tests__/deviceUploadNft.test.ts +316 -0
  29. package/__tests__/evmLedgerLegacySafety.test.ts +12 -6
  30. package/__tests__/evmSignTransaction.test.ts +69 -0
  31. package/__tests__/evmSignTypedData.test.ts +80 -0
  32. package/__tests__/filesystemValidation.test.ts +53 -0
  33. package/__tests__/firmware-update/check-all-firmware-release.test.ts +175 -0
  34. package/__tests__/firmware-update/device-update-bootloader.test.ts +87 -0
  35. package/__tests__/firmware-update/firmware-artifact-source.test.ts +119 -0
  36. package/__tests__/firmware-update/firmware-host-binding.test.ts +70 -0
  37. package/__tests__/firmware-update/firmware-preparation-error.test.ts +27 -0
  38. package/__tests__/firmware-update/firmware-update-bootloader-poll.test.ts +200 -0
  39. package/__tests__/firmware-update/firmware-update-capabilities.test.ts +13 -0
  40. package/__tests__/firmware-update/firmware-update-plan-bootloader-identity.test.ts +394 -0
  41. package/__tests__/firmware-update/firmware-update-plan.test.ts +593 -0
  42. package/__tests__/firmware-update/firmware-update-prepared-plan.test.ts +231 -0
  43. package/__tests__/firmware-update/firmware-update-v2-download-before-boot.test.ts +457 -0
  44. package/__tests__/firmware-update/firmware-update-v3-reconnect.test.ts +121 -0
  45. package/__tests__/firmware-update/firmware-upload-source.test.ts +70 -0
  46. package/__tests__/get-device-state.test.ts +578 -0
  47. package/__tests__/homescreen.test.ts +81 -0
  48. package/__tests__/kaspa-public-types.type-test.ts +16 -0
  49. package/__tests__/kaspa-use-tweak-pro2.test.ts +20 -0
  50. package/__tests__/kaspaSignTransaction.test.ts +578 -0
  51. package/__tests__/known-device-public-types.type-test.ts +3 -0
  52. package/__tests__/logBlockEvent.test.ts +128 -1
  53. package/__tests__/method-protocol-support.test.ts +144 -0
  54. package/__tests__/networkUtils.test.ts +406 -0
  55. package/__tests__/open-wallet-session-error-response.test.ts +43 -0
  56. package/__tests__/open-wallet-session.test.ts +1899 -0
  57. package/__tests__/pro2Nft.test.ts +108 -0
  58. package/__tests__/pro2Wallpaper.test.ts +39 -0
  59. package/__tests__/protocol-binding.test.ts +89 -0
  60. package/__tests__/protocol-v2-bootloader-mode.test.ts +37 -0
  61. package/__tests__/protocol-v2-firmware-targets.test.ts +85 -0
  62. package/__tests__/protocol-v2-ping.test.ts +28 -0
  63. package/__tests__/protocol-v2-resources.test.ts +250 -0
  64. package/__tests__/protocol-v2-ui-lifecycle.test.ts +91 -0
  65. package/__tests__/protocol-v2-unlock-policy.test.ts +308 -0
  66. package/__tests__/protocol-v2.test.ts +7034 -2497
  67. package/__tests__/protocolV2FileWrite.test.ts +285 -0
  68. package/__tests__/protocolV2UiInteraction.test.ts +329 -0
  69. package/__tests__/public-device-state-api.test.ts +275 -0
  70. package/__tests__/public-pro2-api-boundary.test.ts +107 -0
  71. package/__tests__/refresh-device-state.test.ts +101 -0
  72. package/__tests__/request-context-logging.test.ts +16 -0
  73. package/__tests__/search-devices.test.ts +145 -0
  74. package/__tests__/tron-sign-message-init.test.ts +74 -0
  75. package/__tests__/uiProgressThrottle.test.ts +74 -0
  76. package/__tests__/uiPromiseRegistry.test.ts +115 -0
  77. package/dist/api/BaseMethod.d.ts +16 -1
  78. package/dist/api/BaseMethod.d.ts.map +1 -1
  79. package/dist/api/CheckAllFirmwareRelease.d.ts +25 -1
  80. package/dist/api/CheckAllFirmwareRelease.d.ts.map +1 -1
  81. package/dist/api/CheckBLEFirmwareRelease.d.ts +2 -1
  82. package/dist/api/CheckBLEFirmwareRelease.d.ts.map +1 -1
  83. package/dist/api/CheckBootloaderRelease.d.ts +3 -2
  84. package/dist/api/CheckBootloaderRelease.d.ts.map +1 -1
  85. package/dist/api/CheckFirmwareRelease.d.ts +2 -1
  86. package/dist/api/CheckFirmwareRelease.d.ts.map +1 -1
  87. package/dist/api/CipherKeyValue.d.ts +1 -0
  88. package/dist/api/CipherKeyValue.d.ts.map +1 -1
  89. package/dist/api/ClearSessionCache.d.ts +9 -0
  90. package/dist/api/ClearSessionCache.d.ts.map +1 -0
  91. package/dist/api/DetectDeviceConnectProtocol.d.ts +7 -0
  92. package/dist/api/DetectDeviceConnectProtocol.d.ts.map +1 -0
  93. package/dist/api/DirList.d.ts +1 -0
  94. package/dist/api/DirList.d.ts.map +1 -1
  95. package/dist/api/DirMake.d.ts +1 -0
  96. package/dist/api/DirMake.d.ts.map +1 -1
  97. package/dist/api/DirRemove.d.ts +1 -0
  98. package/dist/api/DirRemove.d.ts.map +1 -1
  99. package/dist/api/FileDelete.d.ts +1 -0
  100. package/dist/api/FileDelete.d.ts.map +1 -1
  101. package/dist/api/FileRead.d.ts +1 -0
  102. package/dist/api/FileRead.d.ts.map +1 -1
  103. package/dist/api/FileWrite.d.ts +2 -0
  104. package/dist/api/FileWrite.d.ts.map +1 -1
  105. package/dist/api/FirmwareUpdate.d.ts.map +1 -1
  106. package/dist/api/FirmwareUpdateV2.d.ts +12 -2
  107. package/dist/api/FirmwareUpdateV2.d.ts.map +1 -1
  108. package/dist/api/FirmwareUpdateV3.d.ts +7 -3
  109. package/dist/api/FirmwareUpdateV3.d.ts.map +1 -1
  110. package/dist/api/FirmwareUpdateV4.d.ts +47 -18
  111. package/dist/api/FirmwareUpdateV4.d.ts.map +1 -1
  112. package/dist/api/GetDeviceState.d.ts +8 -0
  113. package/dist/api/GetDeviceState.d.ts.map +1 -0
  114. package/dist/api/GetFeatures.d.ts +1 -1
  115. package/dist/api/GetFeatures.d.ts.map +1 -1
  116. package/dist/api/GetOnekeyFeatures.d.ts.map +1 -1
  117. package/dist/api/GetPassphraseState.d.ts +2 -6
  118. package/dist/api/GetPassphraseState.d.ts.map +1 -1
  119. package/dist/api/OpenWalletSession.d.ts +8 -0
  120. package/dist/api/OpenWalletSession.d.ts.map +1 -0
  121. package/dist/api/PathInfo.d.ts +1 -0
  122. package/dist/api/PathInfo.d.ts.map +1 -1
  123. package/dist/api/PromptWebDeviceAccess.d.ts.map +1 -1
  124. package/dist/api/SearchDevices.d.ts +3 -0
  125. package/dist/api/SearchDevices.d.ts.map +1 -1
  126. package/dist/api/UploadPortfolio.d.ts +17 -0
  127. package/dist/api/UploadPortfolio.d.ts.map +1 -0
  128. package/dist/api/alephium/AlephiumGetAddress.d.ts.map +1 -1
  129. package/dist/api/alephium/AlephiumSignMessage.d.ts.map +1 -1
  130. package/dist/api/alephium/AlephiumSignTransaction.d.ts.map +1 -1
  131. package/dist/api/algo/AlgoGetAddress.d.ts +1 -0
  132. package/dist/api/algo/AlgoGetAddress.d.ts.map +1 -1
  133. package/dist/api/algo/AlgoSignTransaction.d.ts +1 -0
  134. package/dist/api/algo/AlgoSignTransaction.d.ts.map +1 -1
  135. package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts +1 -0
  136. package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts.map +1 -1
  137. package/dist/api/aptos/AptosGetAddress.d.ts +1 -0
  138. package/dist/api/aptos/AptosGetAddress.d.ts.map +1 -1
  139. package/dist/api/aptos/AptosGetPublicKey.d.ts +1 -0
  140. package/dist/api/aptos/AptosGetPublicKey.d.ts.map +1 -1
  141. package/dist/api/aptos/AptosSignInMessage.d.ts +1 -0
  142. package/dist/api/aptos/AptosSignInMessage.d.ts.map +1 -1
  143. package/dist/api/aptos/AptosSignMessage.d.ts +1 -0
  144. package/dist/api/aptos/AptosSignMessage.d.ts.map +1 -1
  145. package/dist/api/aptos/AptosSignTransaction.d.ts +1 -0
  146. package/dist/api/aptos/AptosSignTransaction.d.ts.map +1 -1
  147. package/dist/api/benfen/BenfenGetAddress.d.ts.map +1 -1
  148. package/dist/api/benfen/BenfenGetPublicKey.d.ts.map +1 -1
  149. package/dist/api/benfen/BenfenSignMessage.d.ts.map +1 -1
  150. package/dist/api/benfen/BenfenSignTransaction.d.ts.map +1 -1
  151. package/dist/api/btc/BTCGetAddress.d.ts +1 -0
  152. package/dist/api/btc/BTCGetAddress.d.ts.map +1 -1
  153. package/dist/api/btc/BTCGetPublicKey.d.ts +1 -0
  154. package/dist/api/btc/BTCGetPublicKey.d.ts.map +1 -1
  155. package/dist/api/btc/BTCSignMessage.d.ts +1 -0
  156. package/dist/api/btc/BTCSignMessage.d.ts.map +1 -1
  157. package/dist/api/btc/BTCSignPsbt.d.ts +1 -0
  158. package/dist/api/btc/BTCSignPsbt.d.ts.map +1 -1
  159. package/dist/api/btc/BTCSignTransaction.d.ts +1 -0
  160. package/dist/api/btc/BTCSignTransaction.d.ts.map +1 -1
  161. package/dist/api/btc/BTCVerifyMessage.d.ts +1 -0
  162. package/dist/api/btc/BTCVerifyMessage.d.ts.map +1 -1
  163. package/dist/api/btc/helpers/versionLimit.d.ts +2 -0
  164. package/dist/api/btc/helpers/versionLimit.d.ts.map +1 -1
  165. package/dist/api/cardano/CardanoGetAddress.d.ts +1 -0
  166. package/dist/api/cardano/CardanoGetAddress.d.ts.map +1 -1
  167. package/dist/api/cardano/CardanoGetPublicKey.d.ts +1 -0
  168. package/dist/api/cardano/CardanoGetPublicKey.d.ts.map +1 -1
  169. package/dist/api/cardano/CardanoSignMessage.d.ts +1 -0
  170. package/dist/api/cardano/CardanoSignMessage.d.ts.map +1 -1
  171. package/dist/api/cardano/CardanoSignTransaction.d.ts +1 -0
  172. package/dist/api/cardano/CardanoSignTransaction.d.ts.map +1 -1
  173. package/dist/api/conflux/ConfluxGetAddress.d.ts +2 -0
  174. package/dist/api/conflux/ConfluxGetAddress.d.ts.map +1 -1
  175. package/dist/api/conflux/ConfluxSignMessage.d.ts +2 -0
  176. package/dist/api/conflux/ConfluxSignMessage.d.ts.map +1 -1
  177. package/dist/api/conflux/ConfluxSignMessageCIP23.d.ts +2 -0
  178. package/dist/api/conflux/ConfluxSignMessageCIP23.d.ts.map +1 -1
  179. package/dist/api/conflux/ConfluxSignTransaction.d.ts +2 -0
  180. package/dist/api/conflux/ConfluxSignTransaction.d.ts.map +1 -1
  181. package/dist/api/cosmos/CosmosGetAddress.d.ts +1 -0
  182. package/dist/api/cosmos/CosmosGetAddress.d.ts.map +1 -1
  183. package/dist/api/cosmos/CosmosGetPublicKey.d.ts +1 -0
  184. package/dist/api/cosmos/CosmosGetPublicKey.d.ts.map +1 -1
  185. package/dist/api/cosmos/CosmosSignTransaction.d.ts +1 -0
  186. package/dist/api/cosmos/CosmosSignTransaction.d.ts.map +1 -1
  187. package/dist/api/device/DeviceCancel.d.ts +1 -0
  188. package/dist/api/device/DeviceCancel.d.ts.map +1 -1
  189. package/dist/api/device/DeviceChangePin.d.ts +1 -0
  190. package/dist/api/device/DeviceChangePin.d.ts.map +1 -1
  191. package/dist/api/device/DeviceFullyUploadResource.d.ts +1 -2
  192. package/dist/api/device/DeviceFullyUploadResource.d.ts.map +1 -1
  193. package/dist/api/device/DeviceLock.d.ts +1 -0
  194. package/dist/api/device/DeviceLock.d.ts.map +1 -1
  195. package/dist/api/device/DeviceRebootToBoardloader.d.ts +1 -0
  196. package/dist/api/device/DeviceRebootToBoardloader.d.ts.map +1 -1
  197. package/dist/api/device/DeviceRebootToBootloader.d.ts +1 -0
  198. package/dist/api/device/DeviceRebootToBootloader.d.ts.map +1 -1
  199. package/dist/api/device/DeviceSettings.d.ts +1 -0
  200. package/dist/api/device/DeviceSettings.d.ts.map +1 -1
  201. package/dist/api/device/DeviceSupportFeatures.d.ts +1 -0
  202. package/dist/api/device/DeviceSupportFeatures.d.ts.map +1 -1
  203. package/dist/api/device/DeviceUnlock.d.ts +3 -2
  204. package/dist/api/device/DeviceUnlock.d.ts.map +1 -1
  205. package/dist/api/device/DeviceUpdateBootloader.d.ts +5 -1
  206. package/dist/api/device/DeviceUpdateBootloader.d.ts.map +1 -1
  207. package/dist/api/device/DeviceWipe.d.ts +1 -0
  208. package/dist/api/device/DeviceWipe.d.ts.map +1 -1
  209. package/dist/api/device/PreInitialize.d.ts +1 -0
  210. package/dist/api/device/PreInitialize.d.ts.map +1 -1
  211. package/dist/api/dynex/DnxGetAddress.d.ts.map +1 -1
  212. package/dist/api/dynex/DnxSignTransaction.d.ts.map +1 -1
  213. package/dist/api/evm/EVMGetAddress.d.ts +1 -0
  214. package/dist/api/evm/EVMGetAddress.d.ts.map +1 -1
  215. package/dist/api/evm/EVMGetPublicKey.d.ts +1 -0
  216. package/dist/api/evm/EVMGetPublicKey.d.ts.map +1 -1
  217. package/dist/api/evm/EVMSignMessage.d.ts +1 -0
  218. package/dist/api/evm/EVMSignMessage.d.ts.map +1 -1
  219. package/dist/api/evm/EVMSignMessageEIP712.d.ts.map +1 -1
  220. package/dist/api/evm/EVMSignTransaction.d.ts +1 -0
  221. package/dist/api/evm/EVMSignTransaction.d.ts.map +1 -1
  222. package/dist/api/evm/EVMSignTypedData.d.ts +1 -0
  223. package/dist/api/evm/EVMSignTypedData.d.ts.map +1 -1
  224. package/dist/api/evm/EVMVerifyMessage.d.ts +1 -0
  225. package/dist/api/evm/EVMVerifyMessage.d.ts.map +1 -1
  226. package/dist/api/evm/protocol.d.ts +3 -0
  227. package/dist/api/evm/protocol.d.ts.map +1 -0
  228. package/dist/api/filecoin/FilecoinGetAddress.d.ts +1 -0
  229. package/dist/api/filecoin/FilecoinGetAddress.d.ts.map +1 -1
  230. package/dist/api/filecoin/FilecoinSignTransaction.d.ts +1 -0
  231. package/dist/api/filecoin/FilecoinSignTransaction.d.ts.map +1 -1
  232. package/dist/api/firmware/FirmwareArtifactSource.d.ts +25 -0
  233. package/dist/api/firmware/FirmwareArtifactSource.d.ts.map +1 -0
  234. package/dist/api/firmware/FirmwareHostBinding.d.ts +6 -0
  235. package/dist/api/firmware/FirmwareHostBinding.d.ts.map +1 -0
  236. package/dist/api/firmware/FirmwarePreparationError.d.ts +3 -0
  237. package/dist/api/firmware/FirmwarePreparationError.d.ts.map +1 -0
  238. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts +12 -3
  239. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts.map +1 -1
  240. package/dist/api/firmware/FirmwareUpdateCapabilities.d.ts +3 -0
  241. package/dist/api/firmware/FirmwareUpdateCapabilities.d.ts.map +1 -0
  242. package/dist/api/firmware/FirmwareUpdatePlan.d.ts +25 -0
  243. package/dist/api/firmware/FirmwareUpdatePlan.d.ts.map +1 -0
  244. package/dist/api/firmware/FirmwareUpdatePreparedPlan.d.ts +32 -0
  245. package/dist/api/firmware/FirmwareUpdatePreparedPlan.d.ts.map +1 -0
  246. package/dist/api/firmware/getBinary.d.ts +15 -4
  247. package/dist/api/firmware/getBinary.d.ts.map +1 -1
  248. package/dist/api/firmware/protocolV2Release.d.ts +33 -0
  249. package/dist/api/firmware/protocolV2Release.d.ts.map +1 -0
  250. package/dist/api/firmware/updateBootloader.d.ts +2 -0
  251. package/dist/api/firmware/updateBootloader.d.ts.map +1 -1
  252. package/dist/api/firmware/uploadFirmware.d.ts +9 -1
  253. package/dist/api/firmware/uploadFirmware.d.ts.map +1 -1
  254. package/dist/api/helpers/filesystemValidation.d.ts +3 -0
  255. package/dist/api/helpers/filesystemValidation.d.ts.map +1 -1
  256. package/dist/api/helpers/paramsValidator.d.ts +1 -0
  257. package/dist/api/helpers/paramsValidator.d.ts.map +1 -1
  258. package/dist/api/helpers/protocolV2FileWrite.d.ts +43 -0
  259. package/dist/api/helpers/protocolV2FileWrite.d.ts.map +1 -0
  260. package/dist/api/index.d.ts +9 -25
  261. package/dist/api/index.d.ts.map +1 -1
  262. package/dist/api/kaspa/KaspaGetAddress.d.ts +4 -0
  263. package/dist/api/kaspa/KaspaGetAddress.d.ts.map +1 -1
  264. package/dist/api/kaspa/KaspaSignTransaction.d.ts +9 -1
  265. package/dist/api/kaspa/KaspaSignTransaction.d.ts.map +1 -1
  266. package/dist/api/kaspa/helpers/TransferSerialize.d.ts.map +1 -1
  267. package/dist/api/lightning/LnurlAuth.d.ts +0 -4
  268. package/dist/api/lightning/LnurlAuth.d.ts.map +1 -1
  269. package/dist/api/near/NearGetAddress.d.ts +1 -0
  270. package/dist/api/near/NearGetAddress.d.ts.map +1 -1
  271. package/dist/api/near/NearSignTransaction.d.ts +1 -0
  272. package/dist/api/near/NearSignTransaction.d.ts.map +1 -1
  273. package/dist/api/nem/NEMGetAddress.d.ts +1 -0
  274. package/dist/api/nem/NEMGetAddress.d.ts.map +1 -1
  275. package/dist/api/nem/NEMSignTransaction.d.ts +1 -0
  276. package/dist/api/nem/NEMSignTransaction.d.ts.map +1 -1
  277. package/dist/api/neo/NeoGetAddress.d.ts.map +1 -1
  278. package/dist/api/neo/NeoSignTransaction.d.ts.map +1 -1
  279. package/dist/api/nervos/NervosGetAddress.d.ts.map +1 -1
  280. package/dist/api/nervos/NervosSignTransaction.d.ts.map +1 -1
  281. package/dist/api/nexa/NexaGetAddress.d.ts.map +1 -1
  282. package/dist/api/nexa/NexaSignTransaction.d.ts +1 -0
  283. package/dist/api/nexa/NexaSignTransaction.d.ts.map +1 -1
  284. package/dist/api/nostr/NostrDecryptMessage.d.ts +1 -0
  285. package/dist/api/nostr/NostrDecryptMessage.d.ts.map +1 -1
  286. package/dist/api/nostr/NostrEncryptMessage.d.ts +1 -0
  287. package/dist/api/nostr/NostrEncryptMessage.d.ts.map +1 -1
  288. package/dist/api/nostr/NostrGetPublicKey.d.ts +1 -0
  289. package/dist/api/nostr/NostrGetPublicKey.d.ts.map +1 -1
  290. package/dist/api/nostr/NostrSignEvent.d.ts +1 -0
  291. package/dist/api/nostr/NostrSignEvent.d.ts.map +1 -1
  292. package/dist/api/nostr/NostrSignSchnorr.d.ts +1 -0
  293. package/dist/api/nostr/NostrSignSchnorr.d.ts.map +1 -1
  294. package/dist/api/polkadot/PolkadotGetAddress.d.ts +2 -1
  295. package/dist/api/polkadot/PolkadotGetAddress.d.ts.map +1 -1
  296. package/dist/api/polkadot/PolkadotSignTransaction.d.ts +1 -0
  297. package/dist/api/polkadot/PolkadotSignTransaction.d.ts.map +1 -1
  298. package/dist/api/polkadot/networks.d.ts +1 -1
  299. package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts +1 -0
  300. package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts.map +1 -1
  301. package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts +1 -0
  302. package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts.map +1 -1
  303. package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts +1 -0
  304. package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts.map +1 -1
  305. package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts +1 -0
  306. package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts.map +1 -1
  307. package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts +7 -0
  308. package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts.map +1 -0
  309. package/dist/api/protocol-v2/DeviceInfoGet.d.ts +1 -1
  310. package/dist/api/protocol-v2/DeviceInfoGet.d.ts.map +1 -1
  311. package/dist/api/protocol-v2/DeviceReboot.d.ts +1 -0
  312. package/dist/api/protocol-v2/DeviceReboot.d.ts.map +1 -1
  313. package/dist/api/protocol-v2/DeviceStatusGet.d.ts +7 -0
  314. package/dist/api/protocol-v2/DeviceStatusGet.d.ts.map +1 -0
  315. package/dist/api/protocol-v2/DeviceUploadNft.d.ts +31 -0
  316. package/dist/api/protocol-v2/DeviceUploadNft.d.ts.map +1 -0
  317. package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts +27 -0
  318. package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts.map +1 -0
  319. package/dist/api/protocol-v2/FilesystemFormat.d.ts +1 -0
  320. package/dist/api/protocol-v2/FilesystemFormat.d.ts.map +1 -1
  321. package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts +1 -0
  322. package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts.map +1 -1
  323. package/dist/api/protocol-v2/Ping.d.ts +3 -0
  324. package/dist/api/protocol-v2/Ping.d.ts.map +1 -1
  325. package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts +1 -0
  326. package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts.map +1 -1
  327. package/dist/api/protocol-v2/helpers.d.ts +1 -1
  328. package/dist/api/protocol-v2/helpers.d.ts.map +1 -1
  329. package/dist/api/scdo/ScdoGetAddress.d.ts.map +1 -1
  330. package/dist/api/scdo/ScdoSignMessage.d.ts.map +1 -1
  331. package/dist/api/scdo/ScdoSignTransaction.d.ts.map +1 -1
  332. package/dist/api/solana/SolGetAddress.d.ts +1 -0
  333. package/dist/api/solana/SolGetAddress.d.ts.map +1 -1
  334. package/dist/api/solana/SolSignMessage.d.ts +2 -1
  335. package/dist/api/solana/SolSignMessage.d.ts.map +1 -1
  336. package/dist/api/solana/SolSignOffchainMessage.d.ts +2 -1
  337. package/dist/api/solana/SolSignOffchainMessage.d.ts.map +1 -1
  338. package/dist/api/solana/SolSignTransaction.d.ts +3 -2
  339. package/dist/api/solana/SolSignTransaction.d.ts.map +1 -1
  340. package/dist/api/starcoin/StarcoinGetAddress.d.ts +1 -0
  341. package/dist/api/starcoin/StarcoinGetAddress.d.ts.map +1 -1
  342. package/dist/api/starcoin/StarcoinGetPublicKey.d.ts +1 -0
  343. package/dist/api/starcoin/StarcoinGetPublicKey.d.ts.map +1 -1
  344. package/dist/api/starcoin/StarcoinSignMessage.d.ts +1 -0
  345. package/dist/api/starcoin/StarcoinSignMessage.d.ts.map +1 -1
  346. package/dist/api/starcoin/StarcoinSignTransaction.d.ts +1 -0
  347. package/dist/api/starcoin/StarcoinSignTransaction.d.ts.map +1 -1
  348. package/dist/api/starcoin/StarcoinVerifyMessage.d.ts +1 -0
  349. package/dist/api/starcoin/StarcoinVerifyMessage.d.ts.map +1 -1
  350. package/dist/api/stellar/StellarGetAddress.d.ts +1 -2
  351. package/dist/api/stellar/StellarGetAddress.d.ts.map +1 -1
  352. package/dist/api/stellar/StellarSignTransaction.d.ts +2 -3
  353. package/dist/api/stellar/StellarSignTransaction.d.ts.map +1 -1
  354. package/dist/api/sui/SuiGetAddress.d.ts +2 -1
  355. package/dist/api/sui/SuiGetAddress.d.ts.map +1 -1
  356. package/dist/api/sui/SuiGetPublicKey.d.ts +2 -1
  357. package/dist/api/sui/SuiGetPublicKey.d.ts.map +1 -1
  358. package/dist/api/sui/SuiSignMessage.d.ts +2 -1
  359. package/dist/api/sui/SuiSignMessage.d.ts.map +1 -1
  360. package/dist/api/sui/SuiSignTransaction.d.ts +2 -1
  361. package/dist/api/sui/SuiSignTransaction.d.ts.map +1 -1
  362. package/dist/api/ton/TonGetAddress.d.ts +2 -1
  363. package/dist/api/ton/TonGetAddress.d.ts.map +1 -1
  364. package/dist/api/ton/TonSignData.d.ts +1 -0
  365. package/dist/api/ton/TonSignData.d.ts.map +1 -1
  366. package/dist/api/ton/TonSignMessage.d.ts +2 -1
  367. package/dist/api/ton/TonSignMessage.d.ts.map +1 -1
  368. package/dist/api/ton/TonSignProof.d.ts +2 -1
  369. package/dist/api/ton/TonSignProof.d.ts.map +1 -1
  370. package/dist/api/tron/TronGetAddress.d.ts +1 -0
  371. package/dist/api/tron/TronGetAddress.d.ts.map +1 -1
  372. package/dist/api/tron/TronSignMessage.d.ts +6 -1
  373. package/dist/api/tron/TronSignMessage.d.ts.map +1 -1
  374. package/dist/api/tron/TronSignTransaction.d.ts +2 -1
  375. package/dist/api/tron/TronSignTransaction.d.ts.map +1 -1
  376. package/dist/api/utils.d.ts +4 -1
  377. package/dist/api/utils.d.ts.map +1 -1
  378. package/dist/api/xrp/XrpGetAddress.d.ts +1 -0
  379. package/dist/api/xrp/XrpGetAddress.d.ts.map +1 -1
  380. package/dist/api/xrp/XrpSignTransaction.d.ts +1 -0
  381. package/dist/api/xrp/XrpSignTransaction.d.ts.map +1 -1
  382. package/dist/constants/index.d.ts +1 -1
  383. package/dist/constants/index.d.ts.map +1 -1
  384. package/dist/core/RequestQueue.d.ts.map +1 -1
  385. package/dist/core/deviceEventRegistration.d.ts +13 -0
  386. package/dist/core/deviceEventRegistration.d.ts.map +1 -0
  387. package/dist/core/index.d.ts +3 -1
  388. package/dist/core/index.d.ts.map +1 -1
  389. package/dist/core/uiPromiseRegistry.d.ts +6 -0
  390. package/dist/core/uiPromiseRegistry.d.ts.map +1 -0
  391. package/dist/data-manager/DataManager.d.ts +9 -3
  392. package/dist/data-manager/DataManager.d.ts.map +1 -1
  393. package/dist/data-manager/TransportManager.d.ts.map +1 -1
  394. package/dist/data-manager/connectSettings.d.ts.map +1 -1
  395. package/dist/device/Device.d.ts +72 -17
  396. package/dist/device/Device.d.ts.map +1 -1
  397. package/dist/device/DeviceCommands.d.ts +8 -6
  398. package/dist/device/DeviceCommands.d.ts.map +1 -1
  399. package/dist/device/DeviceConnector.d.ts +4 -3
  400. package/dist/device/DeviceConnector.d.ts.map +1 -1
  401. package/dist/device/DeviceFeaturesState.d.ts +3 -0
  402. package/dist/device/DeviceFeaturesState.d.ts.map +1 -0
  403. package/dist/device/DevicePool.d.ts +6 -2
  404. package/dist/device/DevicePool.d.ts.map +1 -1
  405. package/dist/device/DeviceStateMapper.d.ts +13 -0
  406. package/dist/device/DeviceStateMapper.d.ts.map +1 -0
  407. package/dist/device/DeviceStateProjector.d.ts +7 -0
  408. package/dist/device/DeviceStateProjector.d.ts.map +1 -0
  409. package/dist/device/DeviceStateStore.d.ts +21 -0
  410. package/dist/device/DeviceStateStore.d.ts.map +1 -0
  411. package/dist/device/DeviceWalletSessionStore.d.ts +27 -0
  412. package/dist/device/DeviceWalletSessionStore.d.ts.map +1 -0
  413. package/dist/device/cloneDeviceState.d.ts +2 -0
  414. package/dist/device/cloneDeviceState.d.ts.map +1 -0
  415. package/dist/device/deviceIdentity.d.ts +5 -0
  416. package/dist/device/deviceIdentity.d.ts.map +1 -0
  417. package/dist/deviceProfile/buildDeviceFeatures.d.ts +9 -3
  418. package/dist/deviceProfile/buildDeviceFeatures.d.ts.map +1 -1
  419. package/dist/deviceProfile/index.d.ts +0 -1
  420. package/dist/deviceProfile/index.d.ts.map +1 -1
  421. package/dist/deviceProfile/protocolV2DeviceIdentity.d.ts +7 -0
  422. package/dist/deviceProfile/protocolV2DeviceIdentity.d.ts.map +1 -0
  423. package/dist/events/device.d.ts +16 -2
  424. package/dist/events/device.d.ts.map +1 -1
  425. package/dist/events/logBlockEvent.d.ts +2 -0
  426. package/dist/events/logBlockEvent.d.ts.map +1 -1
  427. package/dist/events/ui-promise.d.ts +4 -2
  428. package/dist/events/ui-promise.d.ts.map +1 -1
  429. package/dist/events/ui-request.d.ts +50 -4
  430. package/dist/events/ui-request.d.ts.map +1 -1
  431. package/dist/events/ui-response.d.ts +10 -2
  432. package/dist/events/ui-response.d.ts.map +1 -1
  433. package/dist/index.d.ts +1818 -770
  434. package/dist/index.d.ts.map +1 -1
  435. package/dist/index.js +11157 -4209
  436. package/dist/inject.d.ts +6 -1
  437. package/dist/inject.d.ts.map +1 -1
  438. package/dist/lowLevelInject.d.ts.map +1 -1
  439. package/dist/protocols/protocol-v2/deviceSession.d.ts +7 -0
  440. package/dist/protocols/protocol-v2/deviceSession.d.ts.map +1 -0
  441. package/dist/protocols/protocol-v2/features.d.ts +21 -17
  442. package/dist/protocols/protocol-v2/features.d.ts.map +1 -1
  443. package/dist/protocols/protocol-v2/firmware.d.ts.map +1 -1
  444. package/dist/protocols/protocol-v2/index.d.ts +3 -2
  445. package/dist/protocols/protocol-v2/index.d.ts.map +1 -1
  446. package/dist/protocols/protocol-v2/resources.d.ts +29 -0
  447. package/dist/protocols/protocol-v2/resources.d.ts.map +1 -0
  448. package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts +17 -0
  449. package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts.map +1 -0
  450. package/dist/protocols/protocol-v2/uiInteraction.d.ts +42 -0
  451. package/dist/protocols/protocol-v2/uiInteraction.d.ts.map +1 -0
  452. package/dist/protocols/protocol-v2/unlockPolicy.d.ts +2 -0
  453. package/dist/protocols/protocol-v2/unlockPolicy.d.ts.map +1 -0
  454. package/dist/protocols/protocol-v2/unlockPolicyRunner.d.ts +22 -0
  455. package/dist/protocols/protocol-v2/unlockPolicyRunner.d.ts.map +1 -0
  456. package/dist/protocols/protocol-v2/walletSession.d.ts +27 -0
  457. package/dist/protocols/protocol-v2/walletSession.d.ts.map +1 -0
  458. package/dist/topLevelInject.d.ts.map +1 -1
  459. package/dist/types/api/checkAllFirmwareRelease.d.ts +48 -9
  460. package/dist/types/api/checkAllFirmwareRelease.d.ts.map +1 -1
  461. package/dist/types/api/checkBLEFirmwareRelease.d.ts +2 -13
  462. package/dist/types/api/checkBLEFirmwareRelease.d.ts.map +1 -1
  463. package/dist/types/api/checkBootloaderRelease.d.ts +2 -6
  464. package/dist/types/api/checkBootloaderRelease.d.ts.map +1 -1
  465. package/dist/types/api/checkFirmwareRelease.d.ts +2 -13
  466. package/dist/types/api/checkFirmwareRelease.d.ts.map +1 -1
  467. package/dist/types/api/checkFirmwareTypeAvailable.d.ts +2 -2
  468. package/dist/types/api/checkFirmwareTypeAvailable.d.ts.map +1 -1
  469. package/dist/types/api/detectDeviceConnectProtocol.d.ts +4 -0
  470. package/dist/types/api/detectDeviceConnectProtocol.d.ts.map +1 -0
  471. package/dist/types/api/deviceSettings.d.ts +11 -2
  472. package/dist/types/api/deviceSettings.d.ts.map +1 -1
  473. package/dist/types/api/deviceUnlock.d.ts +6 -2
  474. package/dist/types/api/deviceUnlock.d.ts.map +1 -1
  475. package/dist/types/api/deviceUpdateBootloader.d.ts +6 -0
  476. package/dist/types/api/deviceUpdateBootloader.d.ts.map +1 -1
  477. package/dist/types/api/export.d.ts +9 -3
  478. package/dist/types/api/export.d.ts.map +1 -1
  479. package/dist/types/api/firmwareUpdate.d.ts +76 -1
  480. package/dist/types/api/firmwareUpdate.d.ts.map +1 -1
  481. package/dist/types/api/firmwareUpdateCapabilities.d.ts +9 -0
  482. package/dist/types/api/firmwareUpdateCapabilities.d.ts.map +1 -0
  483. package/dist/types/api/firmwareUpdatePlan.d.ts +28 -0
  484. package/dist/types/api/firmwareUpdatePlan.d.ts.map +1 -0
  485. package/dist/types/api/firmwareUpdatePreparedPlan.d.ts +42 -0
  486. package/dist/types/api/firmwareUpdatePreparedPlan.d.ts.map +1 -0
  487. package/dist/types/api/getDeviceState.d.ts +12 -0
  488. package/dist/types/api/getDeviceState.d.ts.map +1 -0
  489. package/dist/types/api/getFeatures.d.ts.map +1 -1
  490. package/dist/types/api/getOnekeyFeatures.d.ts.map +1 -1
  491. package/dist/types/api/getPassphraseState.d.ts +2 -10
  492. package/dist/types/api/getPassphraseState.d.ts.map +1 -1
  493. package/dist/types/api/index.d.ts +34 -31
  494. package/dist/types/api/index.d.ts.map +1 -1
  495. package/dist/types/api/kaspaSignTransaction.d.ts +42 -4
  496. package/dist/types/api/kaspaSignTransaction.d.ts.map +1 -1
  497. package/dist/types/api/openWalletSession.d.ts +35 -0
  498. package/dist/types/api/openWalletSession.d.ts.map +1 -0
  499. package/dist/types/api/protocolV2.d.ts +18 -84
  500. package/dist/types/api/protocolV2.d.ts.map +1 -1
  501. package/dist/types/api/protocolV2ResourceManifest.d.ts +17 -0
  502. package/dist/types/api/protocolV2ResourceManifest.d.ts.map +1 -0
  503. package/dist/types/api/sessionCache.d.ts +13 -0
  504. package/dist/types/api/sessionCache.d.ts.map +1 -0
  505. package/dist/types/device.d.ts +142 -10
  506. package/dist/types/device.d.ts.map +1 -1
  507. package/dist/types/params.d.ts +1 -0
  508. package/dist/types/params.d.ts.map +1 -1
  509. package/dist/types/settings.d.ts +69 -22
  510. package/dist/types/settings.d.ts.map +1 -1
  511. package/dist/utils/assets.d.ts +2 -1
  512. package/dist/utils/assets.d.ts.map +1 -1
  513. package/dist/utils/deviceFeaturesCompat.d.ts +14 -0
  514. package/dist/utils/deviceFeaturesCompat.d.ts.map +1 -0
  515. package/dist/utils/deviceFeaturesUtils.d.ts +10 -3
  516. package/dist/utils/deviceFeaturesUtils.d.ts.map +1 -1
  517. package/dist/utils/deviceInfoUtils.d.ts +9 -9
  518. package/dist/utils/deviceInfoUtils.d.ts.map +1 -1
  519. package/dist/utils/deviceSettings.d.ts +38 -7
  520. package/dist/utils/deviceSettings.d.ts.map +1 -1
  521. package/dist/utils/deviceVersionUtils.d.ts +7 -5
  522. package/dist/utils/deviceVersionUtils.d.ts.map +1 -1
  523. package/dist/utils/homescreen.d.ts +4 -0
  524. package/dist/utils/homescreen.d.ts.map +1 -1
  525. package/dist/utils/index.d.ts +6 -3
  526. package/dist/utils/index.d.ts.map +1 -1
  527. package/dist/utils/networkUtils.d.ts +10 -1
  528. package/dist/utils/networkUtils.d.ts.map +1 -1
  529. package/dist/utils/patch.d.ts +1 -1
  530. package/dist/utils/patch.d.ts.map +1 -1
  531. package/dist/utils/pro2Nft.d.ts +31 -0
  532. package/dist/utils/pro2Nft.d.ts.map +1 -0
  533. package/dist/utils/pro2Wallpaper.d.ts +22 -0
  534. package/dist/utils/pro2Wallpaper.d.ts.map +1 -0
  535. package/dist/utils/tracing.d.ts.map +1 -1
  536. package/dist/utils/uiProgressThrottle.d.ts +3 -0
  537. package/dist/utils/uiProgressThrottle.d.ts.map +1 -0
  538. package/package.json +4 -4
  539. package/src/api/BaseMethod.ts +53 -20
  540. package/src/api/CheckAllFirmwareRelease.ts +380 -4
  541. package/src/api/CheckBLEFirmwareRelease.ts +41 -3
  542. package/src/api/CheckBootloaderRelease.ts +41 -3
  543. package/src/api/CheckFirmwareRelease.ts +38 -5
  544. package/src/api/CipherKeyValue.ts +4 -0
  545. package/src/api/ClearSessionCache.ts +32 -0
  546. package/src/api/DetectDeviceConnectProtocol.ts +18 -0
  547. package/src/api/DirList.ts +9 -4
  548. package/src/api/DirMake.ts +7 -4
  549. package/src/api/DirRemove.ts +7 -4
  550. package/src/api/FileDelete.ts +7 -4
  551. package/src/api/FileRead.ts +15 -9
  552. package/src/api/FileWrite.ts +26 -181
  553. package/src/api/FirmwareUpdate.ts +30 -15
  554. package/src/api/FirmwareUpdateV2.ts +385 -115
  555. package/src/api/FirmwareUpdateV3.ts +274 -71
  556. package/src/api/FirmwareUpdateV4.ts +1465 -660
  557. package/src/api/GetDeviceState.ts +59 -0
  558. package/src/api/GetFeatures.ts +6 -4
  559. package/src/api/GetOnekeyFeatures.ts +1 -75
  560. package/src/api/GetPassphraseState.ts +36 -21
  561. package/src/api/OpenWalletSession.ts +268 -0
  562. package/src/api/PathInfo.ts +9 -4
  563. package/src/api/PromptWebDeviceAccess.ts +2 -7
  564. package/src/api/SearchDevices.ts +31 -4
  565. package/src/api/UploadPortfolio.ts +58 -0
  566. package/src/api/alephium/AlephiumGetAddress.ts +0 -4
  567. package/src/api/alephium/AlephiumSignMessage.ts +0 -4
  568. package/src/api/alephium/AlephiumSignTransaction.ts +2 -6
  569. package/src/api/algo/AlgoGetAddress.ts +4 -0
  570. package/src/api/algo/AlgoSignTransaction.ts +4 -0
  571. package/src/api/allnetwork/AllNetworkGetAddress.ts +21 -21
  572. package/src/api/allnetwork/AllNetworkGetAddressBase.ts +45 -32
  573. package/src/api/aptos/AptosGetAddress.ts +4 -0
  574. package/src/api/aptos/AptosGetPublicKey.ts +4 -0
  575. package/src/api/aptos/AptosSignInMessage.ts +4 -0
  576. package/src/api/aptos/AptosSignMessage.ts +4 -0
  577. package/src/api/aptos/AptosSignTransaction.ts +4 -0
  578. package/src/api/benfen/BenfenGetAddress.ts +11 -7
  579. package/src/api/benfen/BenfenGetPublicKey.ts +0 -4
  580. package/src/api/benfen/BenfenSignMessage.ts +0 -4
  581. package/src/api/benfen/BenfenSignTransaction.ts +0 -4
  582. package/src/api/btc/BTCGetAddress.ts +8 -1
  583. package/src/api/btc/BTCGetPublicKey.ts +9 -2
  584. package/src/api/btc/BTCSignMessage.ts +8 -1
  585. package/src/api/btc/BTCSignPsbt.ts +4 -0
  586. package/src/api/btc/BTCSignTransaction.ts +8 -1
  587. package/src/api/btc/BTCVerifyMessage.ts +8 -1
  588. package/src/api/btc/helpers/versionLimit.ts +7 -4
  589. package/src/api/cardano/CardanoGetAddress.ts +4 -0
  590. package/src/api/cardano/CardanoGetPublicKey.ts +4 -0
  591. package/src/api/cardano/CardanoSignMessage.ts +5 -1
  592. package/src/api/cardano/CardanoSignTransaction.ts +5 -1
  593. package/src/api/conflux/ConfluxGetAddress.ts +6 -0
  594. package/src/api/conflux/ConfluxSignMessage.ts +6 -0
  595. package/src/api/conflux/ConfluxSignMessageCIP23.ts +6 -0
  596. package/src/api/conflux/ConfluxSignTransaction.ts +8 -5
  597. package/src/api/cosmos/CosmosGetAddress.ts +4 -0
  598. package/src/api/cosmos/CosmosGetPublicKey.ts +4 -0
  599. package/src/api/cosmos/CosmosSignTransaction.ts +4 -0
  600. package/src/api/device/DeviceCancel.ts +5 -0
  601. package/src/api/device/DeviceChangePin.ts +28 -0
  602. package/src/api/device/DeviceFullyUploadResource.ts +4 -5
  603. package/src/api/device/DeviceLock.ts +5 -0
  604. package/src/api/device/DeviceRebootToBoardloader.ts +5 -0
  605. package/src/api/device/DeviceRebootToBootloader.ts +5 -0
  606. package/src/api/device/DeviceSettings.ts +195 -1
  607. package/src/api/device/DeviceSupportFeatures.ts +4 -0
  608. package/src/api/device/DeviceUnlock.ts +21 -3
  609. package/src/api/device/DeviceUpdateBootloader.ts +126 -8
  610. package/src/api/device/DeviceWipe.ts +25 -0
  611. package/src/api/device/PreInitialize.ts +4 -0
  612. package/src/api/dynex/DnxGetAddress.ts +0 -6
  613. package/src/api/dynex/DnxSignTransaction.ts +0 -6
  614. package/src/api/evm/EVMGetAddress.ts +6 -2
  615. package/src/api/evm/EVMGetPublicKey.ts +6 -2
  616. package/src/api/evm/EVMSignMessage.ts +6 -2
  617. package/src/api/evm/EVMSignMessageEIP712.ts +1 -11
  618. package/src/api/evm/EVMSignTransaction.ts +6 -2
  619. package/src/api/evm/EVMSignTypedData.ts +42 -50
  620. package/src/api/evm/EVMVerifyMessage.ts +6 -2
  621. package/src/api/evm/legacyV1/getAddress.ts +2 -2
  622. package/src/api/evm/legacyV1/getPublicKey.ts +2 -2
  623. package/src/api/evm/legacyV1/signMessage.ts +2 -2
  624. package/src/api/evm/legacyV1/signTypedData.ts +2 -2
  625. package/src/api/evm/legacyV1/signTypedHash.ts +2 -2
  626. package/src/api/evm/legacyV1/verifyMessage.ts +2 -2
  627. package/src/api/evm/protocol.ts +6 -0
  628. package/src/api/filecoin/FilecoinGetAddress.ts +4 -0
  629. package/src/api/filecoin/FilecoinSignTransaction.ts +4 -0
  630. package/src/api/firmware/FirmwareArtifactSource.ts +278 -0
  631. package/src/api/firmware/FirmwareHostBinding.ts +100 -0
  632. package/src/api/firmware/FirmwarePreparationError.ts +12 -0
  633. package/src/api/firmware/FirmwareUpdateBaseMethod.ts +102 -16
  634. package/src/api/firmware/FirmwareUpdateCapabilities.ts +9 -0
  635. package/src/api/firmware/FirmwareUpdatePlan.ts +772 -0
  636. package/src/api/firmware/FirmwareUpdatePreparedPlan.ts +449 -0
  637. package/src/api/firmware/getBinary.ts +8 -3
  638. package/src/api/firmware/protocolV2Release.ts +166 -0
  639. package/src/api/firmware/updateBootloader.ts +19 -4
  640. package/src/api/firmware/uploadFirmware.ts +157 -26
  641. package/src/api/helpers/batchGetPublickeys.ts +2 -2
  642. package/src/api/helpers/filesystemValidation.ts +61 -0
  643. package/src/api/helpers/paramsValidator.ts +1 -1
  644. package/src/api/helpers/protocolV2FileWrite.ts +392 -0
  645. package/src/api/index.ts +10 -26
  646. package/src/api/kaspa/KaspaGetAddress.ts +7 -0
  647. package/src/api/kaspa/KaspaSignTransaction.ts +369 -29
  648. package/src/api/kaspa/helpers/TransferSerialize.ts +17 -7
  649. package/src/api/lightning/LnurlAuth.ts +0 -4
  650. package/src/api/near/NearGetAddress.ts +4 -0
  651. package/src/api/near/NearSignTransaction.ts +4 -0
  652. package/src/api/nem/NEMGetAddress.ts +4 -0
  653. package/src/api/nem/NEMSignTransaction.ts +4 -0
  654. package/src/api/neo/NeoGetAddress.ts +0 -4
  655. package/src/api/neo/NeoSignTransaction.ts +0 -4
  656. package/src/api/nervos/NervosGetAddress.ts +0 -4
  657. package/src/api/nervos/NervosSignTransaction.ts +2 -6
  658. package/src/api/nexa/NexaGetAddress.ts +0 -4
  659. package/src/api/nexa/NexaSignTransaction.ts +3 -5
  660. package/src/api/nostr/NostrDecryptMessage.ts +4 -0
  661. package/src/api/nostr/NostrEncryptMessage.ts +4 -0
  662. package/src/api/nostr/NostrGetPublicKey.ts +4 -0
  663. package/src/api/nostr/NostrSignEvent.ts +4 -0
  664. package/src/api/nostr/NostrSignSchnorr.ts +4 -0
  665. package/src/api/polkadot/PolkadotGetAddress.ts +4 -0
  666. package/src/api/polkadot/PolkadotSignTransaction.ts +4 -0
  667. package/src/api/polkadot/networks.ts +3 -3
  668. package/src/api/protocol-v2/DeviceFactoryInfoGet.ts +5 -2
  669. package/src/api/protocol-v2/DeviceFactoryInfoSet.ts +5 -2
  670. package/src/api/protocol-v2/DeviceFirmwareUpdate.ts +8 -5
  671. package/src/api/protocol-v2/DeviceGetFirmwareUpdateStatus.ts +10 -6
  672. package/src/api/protocol-v2/DeviceGetOnboardingStatus.ts +21 -0
  673. package/src/api/protocol-v2/DeviceInfoGet.ts +8 -15
  674. package/src/api/protocol-v2/DeviceReboot.ts +7 -3
  675. package/src/api/protocol-v2/DeviceStatusGet.ts +19 -0
  676. package/src/api/protocol-v2/DeviceUploadNft.ts +197 -0
  677. package/src/api/protocol-v2/DeviceUploadWallpaper.ts +134 -0
  678. package/src/api/protocol-v2/FilesystemFormat.ts +9 -3
  679. package/src/api/protocol-v2/FilesystemPermissionFix.ts +5 -2
  680. package/src/api/protocol-v2/Ping.ts +37 -3
  681. package/src/api/protocol-v2/ProtocolInfoRequest.ts +8 -3
  682. package/src/api/protocol-v2/helpers.ts +17 -17
  683. package/src/api/scdo/ScdoGetAddress.ts +0 -4
  684. package/src/api/scdo/ScdoSignMessage.ts +0 -4
  685. package/src/api/scdo/ScdoSignTransaction.ts +0 -4
  686. package/src/api/solana/SolGetAddress.ts +4 -0
  687. package/src/api/solana/SolSignMessage.ts +5 -1
  688. package/src/api/solana/SolSignOffchainMessage.ts +5 -1
  689. package/src/api/solana/SolSignTransaction.ts +6 -2
  690. package/src/api/starcoin/StarcoinGetAddress.ts +4 -0
  691. package/src/api/starcoin/StarcoinGetPublicKey.ts +4 -0
  692. package/src/api/starcoin/StarcoinSignMessage.ts +4 -0
  693. package/src/api/starcoin/StarcoinSignTransaction.ts +4 -0
  694. package/src/api/starcoin/StarcoinVerifyMessage.ts +4 -0
  695. package/src/api/stellar/StellarGetAddress.ts +1 -10
  696. package/src/api/stellar/StellarSignTransaction.ts +1 -14
  697. package/src/api/sui/SuiGetAddress.ts +5 -1
  698. package/src/api/sui/SuiGetPublicKey.ts +5 -1
  699. package/src/api/sui/SuiSignMessage.ts +5 -1
  700. package/src/api/sui/SuiSignTransaction.ts +5 -1
  701. package/src/api/ton/TonGetAddress.ts +5 -1
  702. package/src/api/ton/TonSignData.ts +5 -1
  703. package/src/api/ton/TonSignMessage.ts +5 -1
  704. package/src/api/ton/TonSignProof.ts +5 -1
  705. package/src/api/tron/TronGetAddress.ts +4 -0
  706. package/src/api/tron/TronSignMessage.ts +19 -8
  707. package/src/api/tron/TronSignTransaction.ts +5 -1
  708. package/src/api/utils.ts +32 -3
  709. package/src/api/xrp/XrpGetAddress.ts +4 -0
  710. package/src/api/xrp/XrpSignTransaction.ts +5 -1
  711. package/src/constants/index.ts +1 -4
  712. package/src/core/RequestQueue.ts +1 -0
  713. package/src/core/deviceEventRegistration.ts +27 -0
  714. package/src/core/index.ts +381 -152
  715. package/src/core/uiPromiseRegistry.ts +63 -0
  716. package/src/data/messages/messages-protocol-v2.json +1138 -441
  717. package/src/data/messages/messages.json +286 -1
  718. package/src/data-manager/DataManager.ts +132 -41
  719. package/src/data-manager/TransportManager.ts +7 -1
  720. package/src/data-manager/connectSettings.ts +11 -0
  721. package/src/device/Device.ts +898 -296
  722. package/src/device/DeviceCommands.ts +193 -158
  723. package/src/device/DeviceConnector.ts +44 -21
  724. package/src/device/DeviceFeaturesState.ts +25 -0
  725. package/src/device/DevicePool.ts +101 -23
  726. package/src/device/DeviceStateMapper.ts +416 -0
  727. package/src/device/DeviceStateProjector.ts +152 -0
  728. package/src/device/DeviceStateStore.ts +232 -0
  729. package/src/device/DeviceWalletSessionStore.ts +144 -0
  730. package/src/device/cloneDeviceState.ts +39 -0
  731. package/src/device/deviceIdentity.ts +18 -0
  732. package/src/deviceProfile/buildDeviceFeatures.ts +223 -189
  733. package/src/deviceProfile/index.ts +0 -1
  734. package/src/deviceProfile/protocolV2DeviceIdentity.ts +35 -0
  735. package/src/events/device.ts +22 -1
  736. package/src/events/logBlockEvent.ts +80 -2
  737. package/src/events/ui-promise.ts +4 -2
  738. package/src/events/ui-request.ts +61 -4
  739. package/src/events/ui-response.ts +12 -2
  740. package/src/index.ts +12 -0
  741. package/src/inject.ts +97 -45
  742. package/src/lowLevelInject.ts +11 -4
  743. package/src/protocols/protocol-v2/deviceSession.ts +24 -0
  744. package/src/protocols/protocol-v2/features.ts +100 -33
  745. package/src/protocols/protocol-v2/firmware.ts +3 -1
  746. package/src/protocols/protocol-v2/index.ts +8 -1
  747. package/src/protocols/protocol-v2/resources.ts +257 -0
  748. package/src/protocols/protocol-v2/settingsUnlockPolicy.ts +65 -0
  749. package/src/protocols/protocol-v2/uiInteraction.ts +250 -0
  750. package/src/protocols/protocol-v2/unlockPolicy.ts +1 -0
  751. package/src/protocols/protocol-v2/unlockPolicyRunner.ts +131 -0
  752. package/src/protocols/protocol-v2/walletSession.ts +463 -0
  753. package/src/topLevelInject.ts +11 -4
  754. package/src/types/api/checkAllFirmwareRelease.ts +72 -9
  755. package/src/types/api/checkBLEFirmwareRelease.ts +4 -13
  756. package/src/types/api/checkBootloaderRelease.ts +2 -6
  757. package/src/types/api/checkFirmwareRelease.ts +2 -13
  758. package/src/types/api/checkFirmwareTypeAvailable.ts +2 -2
  759. package/src/types/api/detectDeviceConnectProtocol.ts +6 -0
  760. package/src/types/api/deviceSettings.ts +26 -2
  761. package/src/types/api/deviceUnlock.ts +13 -2
  762. package/src/types/api/deviceUpdateBootloader.ts +6 -0
  763. package/src/types/api/export.ts +37 -1
  764. package/src/types/api/firmwareUpdate.ts +101 -5
  765. package/src/types/api/firmwareUpdateCapabilities.ts +9 -0
  766. package/src/types/api/firmwareUpdatePlan.ts +38 -0
  767. package/src/types/api/firmwareUpdatePreparedPlan.ts +53 -0
  768. package/src/types/api/getDeviceState.ts +19 -0
  769. package/src/types/api/getFeatures.ts +3 -0
  770. package/src/types/api/getOnekeyFeatures.ts +3 -0
  771. package/src/types/api/getPassphraseState.ts +9 -11
  772. package/src/types/api/index.ts +54 -64
  773. package/src/types/api/kaspaSignTransaction.ts +60 -4
  774. package/src/types/api/openWalletSession.ts +54 -0
  775. package/src/types/api/protocolV2.ts +33 -141
  776. package/src/types/api/protocolV2ResourceManifest.ts +19 -0
  777. package/src/types/api/sessionCache.ts +19 -0
  778. package/src/types/device.ts +216 -10
  779. package/src/types/params.ts +9 -2
  780. package/src/types/settings.ts +86 -24
  781. package/src/utils/assets.ts +4 -1
  782. package/src/utils/deviceFeaturesCompat.ts +191 -0
  783. package/src/utils/deviceFeaturesUtils.ts +65 -47
  784. package/src/utils/deviceInfoUtils.ts +29 -69
  785. package/src/utils/deviceSettings.ts +174 -39
  786. package/src/utils/deviceVersionUtils.ts +25 -44
  787. package/src/utils/findDefectiveBatchDevice.ts +3 -3
  788. package/src/utils/homescreen.ts +40 -0
  789. package/src/utils/index.ts +27 -3
  790. package/src/utils/networkUtils.ts +274 -16
  791. package/src/utils/pro2Nft.ts +142 -0
  792. package/src/utils/pro2Wallpaper.ts +130 -0
  793. package/src/utils/tracing.ts +3 -1
  794. package/src/utils/uiProgressThrottle.ts +63 -0
  795. package/tsconfig.type-tests.json +12 -0
  796. package/dist/api/GetDeviceInfo.d.ts +0 -9
  797. package/dist/api/GetDeviceInfo.d.ts.map +0 -1
  798. package/dist/api/firmware/progressThrottle.d.ts +0 -3
  799. package/dist/api/firmware/progressThrottle.d.ts.map +0 -1
  800. package/dist/api/protocol-v2/FilesystemDiskControl.d.ts +0 -13
  801. package/dist/api/protocol-v2/FilesystemDiskControl.d.ts.map +0 -1
  802. package/dist/deviceProfile/buildDeviceProfile.d.ts +0 -21
  803. package/dist/deviceProfile/buildDeviceProfile.d.ts.map +0 -1
  804. package/dist/types/api/getDeviceInfo.d.ts +0 -87
  805. package/dist/types/api/getDeviceInfo.d.ts.map +0 -1
  806. package/src/api/GetDeviceInfo.ts +0 -145
  807. package/src/api/firmware/progressThrottle.ts +0 -44
  808. package/src/api/protocol-v2/FilesystemDiskControl.ts +0 -50
  809. package/src/deviceProfile/buildDeviceProfile.ts +0 -352
  810. package/src/types/api/getDeviceInfo.ts +0 -101
@@ -0,0 +1,6 @@
1
+ import TransportManager from '../../data-manager/TransportManager';
2
+
3
+ import type { Device } from '../../device/Device';
4
+
5
+ export const shouldUseLegacyV1EvmMessages = (device: Pick<Device, 'isProtocolV2'>): boolean =>
6
+ !device.isProtocolV2() && TransportManager.getProtocolV1MessageSchema() === 'v1LegacySchema';
@@ -7,6 +7,10 @@ import type { FilecoinGetAddress as HardwareFilecoinGetAddress } from '@onekeyfe
7
7
  import type { FilecoinAddress, FilecoinGetAddressParams } from '../../types';
8
8
 
9
9
  export default class FilecoinGetAddress extends BaseMethod<HardwareFilecoinGetAddress[]> {
10
+ getSupportedProtocols() {
11
+ return ['V1', 'V2'] as const;
12
+ }
13
+
10
14
  hasBundle = false;
11
15
 
12
16
  init() {
@@ -7,6 +7,10 @@ import type { FilecoinSignTransactionParams } from '../../types';
7
7
  import type { FilecoinSignTx as HardwareFilecoinSignTx } from '@onekeyfe/hd-transport';
8
8
 
9
9
  export default class FilecoinSignTransaction extends BaseMethod<HardwareFilecoinSignTx> {
10
+ getSupportedProtocols() {
11
+ return ['V1', 'V2'] as const;
12
+ }
13
+
10
14
  hasBundle = false;
11
15
 
12
16
  init() {
@@ -0,0 +1,278 @@
1
+ import { ERRORS, HardwareErrorCode } from '@onekeyfe/hd-shared';
2
+
3
+ import type {
4
+ FirmwareArtifactReader,
5
+ FirmwareArtifactReference,
6
+ } from '../../types/api/firmwareUpdate';
7
+
8
+ export const MAX_FIRMWARE_ARTIFACT_READ_BYTES = 256 * 1024;
9
+
10
+ export interface FirmwareByteSource {
11
+ readonly size: number;
12
+ readAt(offset: number, length: number): Promise<ArrayBuffer>;
13
+ close(): Promise<void>;
14
+ }
15
+
16
+ const artifactError = (
17
+ code:
18
+ | 'FirmwareArtifactReceiptMismatch'
19
+ | 'FirmwareArtifactReaderInvalid'
20
+ | 'FirmwareArtifactReadOutOfBounds'
21
+ | 'FirmwareArtifactReadTooLarge',
22
+ message: string
23
+ ): never => {
24
+ throw ERRORS.TypedError(HardwareErrorCode.RuntimeError, message, {
25
+ firmwareUpdateCode: code,
26
+ });
27
+ };
28
+
29
+ const assertSafeSize = (value: number, name: string) => {
30
+ if (!Number.isSafeInteger(value) || value <= 0) {
31
+ artifactError('FirmwareArtifactReceiptMismatch', `${name} must be a positive safe integer`);
32
+ }
33
+ };
34
+
35
+ export const assertFirmwareArtifactReference = (
36
+ artifact: FirmwareArtifactReference
37
+ ): FirmwareArtifactReference => {
38
+ if (
39
+ !artifact ||
40
+ typeof artifact.artifactRef !== 'string' ||
41
+ artifact.artifactRef.length === 0 ||
42
+ artifact.artifactRef.length > 160 ||
43
+ artifact.artifactRef.includes('/') ||
44
+ artifact.artifactRef.includes('\\')
45
+ ) {
46
+ artifactError(
47
+ 'FirmwareArtifactReceiptMismatch',
48
+ 'Firmware artifactRef must be an opaque identifier'
49
+ );
50
+ }
51
+ assertSafeSize(artifact.size, 'Firmware artifact size');
52
+ if (typeof artifact.sha256 !== 'string' || !/^[a-f0-9]{64}$/i.test(artifact.sha256)) {
53
+ artifactError(
54
+ 'FirmwareArtifactReceiptMismatch',
55
+ 'Firmware artifact sha256 must be a 32-byte hexadecimal digest'
56
+ );
57
+ }
58
+ return artifact;
59
+ };
60
+
61
+ const assertFirmwareArtifactRead = (size: number, offset: number, length: number) => {
62
+ if (
63
+ !Number.isSafeInteger(offset) ||
64
+ offset < 0 ||
65
+ offset >= size ||
66
+ !Number.isSafeInteger(length) ||
67
+ length <= 0 ||
68
+ offset + length > size
69
+ ) {
70
+ artifactError(
71
+ 'FirmwareArtifactReadOutOfBounds',
72
+ `Firmware artifact read is outside size ${size}: offset=${offset}, length=${length}`
73
+ );
74
+ }
75
+ if (length > MAX_FIRMWARE_ARTIFACT_READ_BYTES) {
76
+ artifactError(
77
+ 'FirmwareArtifactReadTooLarge',
78
+ `Firmware artifact read length ${length} exceeds ${MAX_FIRMWARE_ARTIFACT_READ_BYTES}`
79
+ );
80
+ }
81
+ };
82
+
83
+ const createMemoryFirmwareByteSource = (binary: ArrayBuffer): FirmwareByteSource => {
84
+ let bytes: Uint8Array | null = new Uint8Array(binary);
85
+ const { byteLength: size } = binary;
86
+ assertSafeSize(size, 'Firmware binary size');
87
+ return {
88
+ size,
89
+ readAt: (offset, length) => {
90
+ if (!bytes) {
91
+ return Promise.reject(
92
+ ERRORS.TypedError(HardwareErrorCode.RuntimeError, 'Firmware byte source is closed', {
93
+ firmwareUpdateCode: 'FirmwareArtifactReaderInvalid',
94
+ })
95
+ );
96
+ }
97
+ assertFirmwareArtifactRead(size, offset, length);
98
+ return Promise.resolve(bytes.slice(offset, offset + length).buffer);
99
+ },
100
+ close: () => {
101
+ bytes = null;
102
+ return Promise.resolve();
103
+ },
104
+ };
105
+ };
106
+
107
+ class ReaderFirmwareByteSource implements FirmwareByteSource {
108
+ readonly size: number;
109
+
110
+ private closed = false;
111
+
112
+ private reading = false;
113
+
114
+ private constructor(
115
+ private readonly reader: FirmwareArtifactReader,
116
+ private readonly readerId: string,
117
+ size: number
118
+ ) {
119
+ this.size = size;
120
+ }
121
+
122
+ static async open(
123
+ artifact: FirmwareArtifactReference,
124
+ reader: FirmwareArtifactReader
125
+ ): Promise<ReaderFirmwareByteSource> {
126
+ const opened = await reader.open({ artifactRef: artifact.artifactRef });
127
+ if (
128
+ !opened ||
129
+ typeof opened.readerId !== 'string' ||
130
+ opened.readerId.length === 0 ||
131
+ !Number.isSafeInteger(opened.size) ||
132
+ opened.size !== artifact.size
133
+ ) {
134
+ if (opened?.readerId) {
135
+ await reader.close({ readerId: opened.readerId }).catch(() => undefined);
136
+ }
137
+ return artifactError(
138
+ 'FirmwareArtifactReceiptMismatch',
139
+ `Firmware artifact opened with size ${opened?.size ?? 'unknown'}, expected ${artifact.size}`
140
+ );
141
+ }
142
+ return new ReaderFirmwareByteSource(reader, opened.readerId, opened.size);
143
+ }
144
+
145
+ async readAt(offset: number, length: number): Promise<ArrayBuffer> {
146
+ if (this.closed) {
147
+ return artifactError('FirmwareArtifactReaderInvalid', 'Firmware artifact reader is closed');
148
+ }
149
+ if (this.reading) {
150
+ return artifactError(
151
+ 'FirmwareArtifactReaderInvalid',
152
+ 'Firmware artifact reader only permits one in-flight read'
153
+ );
154
+ }
155
+ assertFirmwareArtifactRead(this.size, offset, length);
156
+ this.reading = true;
157
+ try {
158
+ const result = await this.reader.read({
159
+ readerId: this.readerId,
160
+ offset,
161
+ length,
162
+ });
163
+ const expectedEof = offset + length === this.size;
164
+ if (
165
+ !result ||
166
+ !(result.data instanceof ArrayBuffer) ||
167
+ result.data.byteLength !== length ||
168
+ result.bytesRead !== length ||
169
+ result.eof !== expectedEof
170
+ ) {
171
+ return artifactError(
172
+ 'FirmwareArtifactReaderInvalid',
173
+ 'Firmware artifact reader returned an invalid read result'
174
+ );
175
+ }
176
+ return result.data;
177
+ } finally {
178
+ this.reading = false;
179
+ }
180
+ }
181
+
182
+ async close(): Promise<void> {
183
+ if (this.closed) {
184
+ return;
185
+ }
186
+ this.closed = true;
187
+ await this.reader.close({ readerId: this.readerId });
188
+ }
189
+ }
190
+
191
+ export const openFirmwareByteSource = async ({
192
+ binary,
193
+ artifact,
194
+ reader,
195
+ }: {
196
+ binary?: ArrayBuffer;
197
+ artifact?: FirmwareArtifactReference;
198
+ reader?: FirmwareArtifactReader;
199
+ }): Promise<FirmwareByteSource | null> => {
200
+ if (binary && artifact) {
201
+ return artifactError(
202
+ 'FirmwareArtifactReceiptMismatch',
203
+ 'Firmware input must not contain both binary and artifactRef'
204
+ );
205
+ }
206
+ if (binary) {
207
+ return createMemoryFirmwareByteSource(binary);
208
+ }
209
+ if (!artifact) {
210
+ return null;
211
+ }
212
+ assertFirmwareArtifactReference(artifact);
213
+ if (!reader) {
214
+ return artifactError(
215
+ 'FirmwareArtifactReaderInvalid',
216
+ 'Firmware artifact reader is required for artifactRef input'
217
+ );
218
+ }
219
+ return ReaderFirmwareByteSource.open(artifact, reader);
220
+ };
221
+
222
+ export const readFirmwareByteSourceFully = async (
223
+ source: FirmwareByteSource
224
+ ): Promise<ArrayBuffer> => {
225
+ const output = new Uint8Array(source.size);
226
+ let offset = 0;
227
+ while (offset < source.size) {
228
+ const length = Math.min(MAX_FIRMWARE_ARTIFACT_READ_BYTES, source.size - offset);
229
+ output.set(new Uint8Array(await source.readAt(offset, length)), offset);
230
+ offset += length;
231
+ }
232
+ return output.buffer;
233
+ };
234
+
235
+ export const writeFirmwareByteSource = async ({
236
+ source,
237
+ chunkSize,
238
+ write,
239
+ }: {
240
+ source: FirmwareByteSource;
241
+ chunkSize: number;
242
+ write: (input: {
243
+ data: ArrayBuffer;
244
+ sourceOffset: number;
245
+ length: number;
246
+ first: boolean;
247
+ }) => Promise<number>;
248
+ }) => {
249
+ if (
250
+ !Number.isSafeInteger(chunkSize) ||
251
+ chunkSize <= 0 ||
252
+ chunkSize > MAX_FIRMWARE_ARTIFACT_READ_BYTES
253
+ ) {
254
+ return artifactError(
255
+ 'FirmwareArtifactReadTooLarge',
256
+ `Firmware artifact chunk size must be between 1 and ${MAX_FIRMWARE_ARTIFACT_READ_BYTES}`
257
+ );
258
+ }
259
+ let offset = 0;
260
+ while (offset < source.size) {
261
+ const length = Math.min(chunkSize, source.size - offset);
262
+ const data = await source.readAt(offset, length);
263
+ const processed = await write({
264
+ data,
265
+ sourceOffset: offset,
266
+ length,
267
+ first: offset === 0,
268
+ });
269
+ if (processed !== length) {
270
+ return artifactError(
271
+ 'FirmwareArtifactReaderInvalid',
272
+ `Firmware artifact writer processed ${processed} bytes, expected ${length}`
273
+ );
274
+ }
275
+ offset += length;
276
+ }
277
+ return offset;
278
+ };
@@ -0,0 +1,100 @@
1
+ import { ERRORS, HardwareErrorCode } from '@onekeyfe/hd-shared';
2
+
3
+ import type { FirmwareUpdateHostBinding } from '../../types/api/firmwareUpdate';
4
+
5
+ const bindingError = (message: string): never => {
6
+ throw ERRORS.TypedError(HardwareErrorCode.RuntimeError, message, {
7
+ firmwareUpdateCode: 'FirmwareArtifactReaderInvalid',
8
+ });
9
+ };
10
+
11
+ class FirmwareHostBindingRegistry {
12
+ private generation = 0;
13
+
14
+ private binding?: FirmwareUpdateHostBinding;
15
+
16
+ register(binding: FirmwareUpdateHostBinding): number {
17
+ if (
18
+ !binding ||
19
+ typeof binding.artifactReader?.open !== 'function' ||
20
+ typeof binding.artifactReader.read !== 'function' ||
21
+ typeof binding.artifactReader.close !== 'function'
22
+ ) {
23
+ return bindingError('Firmware host binding is invalid');
24
+ }
25
+ this.generation += 1;
26
+ this.binding = binding;
27
+ return this.generation;
28
+ }
29
+
30
+ unregister(generation?: number): boolean {
31
+ if (generation !== undefined && generation !== this.generation) {
32
+ return false;
33
+ }
34
+ this.generation += 1;
35
+ this.binding = undefined;
36
+ return true;
37
+ }
38
+
39
+ getGeneration(): number {
40
+ return this.generation;
41
+ }
42
+
43
+ resolve(generation: number): FirmwareUpdateHostBinding {
44
+ if (
45
+ !Number.isSafeInteger(generation) ||
46
+ generation <= 0 ||
47
+ generation !== this.generation ||
48
+ !this.binding
49
+ ) {
50
+ return bindingError(`Firmware host binding generation ${generation} is stale`);
51
+ }
52
+ const { binding } = this;
53
+ const assertCurrent = () => {
54
+ if (generation !== this.generation || binding !== this.binding) {
55
+ bindingError(`Firmware host binding generation ${generation} is stale`);
56
+ }
57
+ };
58
+ return {
59
+ artifactReader: {
60
+ open: async input => {
61
+ assertCurrent();
62
+ const opened = await binding.artifactReader.open(input);
63
+ try {
64
+ assertCurrent();
65
+ } catch (error) {
66
+ if (opened?.readerId) {
67
+ await binding.artifactReader
68
+ .close({ readerId: opened.readerId })
69
+ .catch(() => undefined);
70
+ }
71
+ throw error;
72
+ }
73
+ return opened;
74
+ },
75
+ read: async input => {
76
+ assertCurrent();
77
+ const result = await binding.artifactReader.read(input);
78
+ assertCurrent();
79
+ return result;
80
+ },
81
+ close: input => binding.artifactReader.close(input),
82
+ },
83
+ };
84
+ }
85
+ }
86
+
87
+ const firmwareHostBindingRegistry = new FirmwareHostBindingRegistry();
88
+
89
+ export const registerFirmwareUpdateHostBinding = (binding: FirmwareUpdateHostBinding): number =>
90
+ firmwareHostBindingRegistry.register(binding);
91
+
92
+ export const unregisterFirmwareUpdateHostBinding = (generation?: number): boolean =>
93
+ firmwareHostBindingRegistry.unregister(generation);
94
+
95
+ export const getFirmwareUpdateHostBindingGeneration = (): number =>
96
+ firmwareHostBindingRegistry.getGeneration();
97
+
98
+ export const resolveFirmwareUpdateHostBinding = (
99
+ generation: number | undefined
100
+ ): FirmwareUpdateHostBinding => firmwareHostBindingRegistry.resolve(generation ?? Number.NaN);
@@ -0,0 +1,12 @@
1
+ import { ERRORS, HardwareError, HardwareErrorCode } from '@onekeyfe/hd-shared';
2
+
3
+ export const normalizeFirmwarePreparationError = (error: unknown) => {
4
+ if (error instanceof HardwareError && error.params?.firmwareUpdateCode) {
5
+ return error;
6
+ }
7
+
8
+ return ERRORS.TypedError(
9
+ HardwareErrorCode.FirmwareUpdateDownloadFailed,
10
+ error instanceof Error ? error.message : String(error)
11
+ );
12
+ };
@@ -8,14 +8,15 @@ import {
8
8
 
9
9
  import { FirmwareUpdateTipMessage, UI_REQUEST, createUiMessage } from '../../events/ui-request';
10
10
  import { DevicePool } from '../../device/DevicePool';
11
- import { LoggerNames, getDeviceUUID, getLogger, wait } from '../../utils';
11
+ import { LoggerNames, getLogger, wait } from '../../utils';
12
12
  import { DeviceModelToTypes } from '../../types';
13
13
  import { DataManager } from '../../data-manager';
14
14
  import { BaseMethod } from '../BaseMethod';
15
15
  import { DEVICE } from '../../events';
16
- import { createFirmwareProgressThrottle } from './progressThrottle';
16
+ import { writeFirmwareByteSource } from './FirmwareArtifactSource';
17
17
 
18
18
  import type {
19
+ FirmwareProgress,
19
20
  IFirmwareUpdateProgressType,
20
21
  IFirmwareUpdateTipMessage,
21
22
  } from '../../events/ui-request';
@@ -24,11 +25,27 @@ import type { RebootType } from '@onekeyfe/hd-transport';
24
25
  import type { Deferred } from '@onekeyfe/hd-shared';
25
26
  import type { KnownDevice } from '../../types';
26
27
  import type { TypedResponseMessage } from '../../device/DeviceCommands';
28
+ import type { FirmwareByteSource } from './FirmwareArtifactSource';
27
29
 
28
30
  const Log = getLogger(LoggerNames.Method);
29
31
  const SESSION_ERROR = 'session not found';
30
32
  const FIRMWARE_UPDATE_CONFIRM = 'Firmware install confirmed';
31
33
 
34
+ /**
35
+ * Response timeout for each Initialize probe while polling a rebooting device over BLE.
36
+ * Overlap safety comes from the poll's in-flight guard, not from this value. Keep it
37
+ * well below the 30s reboot budget so several attempts fit: a probe written into the
38
+ * dying pre-reboot connection is never answered, and its timeout tears that stale link
39
+ * down so the next tick reconnects fresh. Raise it only if a device model is proven to
40
+ * answer bootloader Initialize slower than this on a fresh connection.
41
+ */
42
+ export const BOOTLOADER_POLL_INITIALIZE_TIMEOUT_MS = 5000;
43
+
44
+ type FirmwareTransferMetrics = Pick<
45
+ FirmwareProgress['payload'],
46
+ 'transferredBytes' | 'totalBytes' | 'rateBytesPerSecond' | 'elapsedMs'
47
+ >;
48
+
32
49
  const isDeviceDisconnectedError = (error: unknown) => {
33
50
  const message = error instanceof Error ? error.message : String(error ?? '');
34
51
  return (
@@ -41,8 +58,6 @@ const isDeviceDisconnectedError = (error: unknown) => {
41
58
  export class FirmwareUpdateBaseMethod<Params> extends BaseMethod<Params> {
42
59
  checkPromise: Deferred<any> | null = null;
43
60
 
44
- private shouldPostFirmwareProgress = createFirmwareProgressThrottle();
45
-
46
61
  init(): void {}
47
62
 
48
63
  run(): Promise<any> {
@@ -85,16 +100,17 @@ export class FirmwareUpdateBaseMethod<Params> extends BaseMethod<Params> {
85
100
  * @description Post the progress message
86
101
  * @param progress Post the percentage of the progress
87
102
  */
88
- postProgressMessage = (progress: number, progressType: IFirmwareUpdateProgressType) => {
89
- if (!this.shouldPostFirmwareProgress(progress, progressType)) {
90
- return;
91
- }
92
-
103
+ postProgressMessage = (
104
+ progress: number,
105
+ progressType: IFirmwareUpdateProgressType,
106
+ metrics?: FirmwareTransferMetrics
107
+ ) => {
93
108
  this.postMessage(
94
109
  createUiMessage(UI_REQUEST.FIRMWARE_PROGRESS, {
95
110
  device: this.device.toMessageObject() as KnownDevice,
96
111
  progress,
97
112
  progressType,
113
+ ...metrics,
98
114
  })
99
115
  );
100
116
  };
@@ -139,6 +155,10 @@ export class FirmwareUpdateBaseMethod<Params> extends BaseMethod<Params> {
139
155
  this.checkPromise = createDeferred();
140
156
  const env = DataManager.getSettings('env');
141
157
  const isBleReconnect = connectId && DataManager.isBleConnect(env);
158
+ // Tracks the in-flight BLE probe so interval ticks never overlap: a superseded
159
+ // Initialize left pending on the V1 transport is exactly what later times out
160
+ // and used to tear down the connection mid-firmware-upload.
161
+ let bleProbeInFlight = false;
142
162
 
143
163
  Log.log('FirmwareUpdateBaseMethod [checkDeviceToBootloader] isBleReconnect: ', isBleReconnect);
144
164
 
@@ -194,13 +214,19 @@ export class FirmwareUpdateBaseMethod<Params> extends BaseMethod<Params> {
194
214
  }
195
215
 
196
216
  if (isBleReconnect) {
217
+ if (bleProbeInFlight) return;
218
+ bleProbeInFlight = true;
197
219
  try {
198
220
  await this.device.deviceConnector?.acquire(
199
221
  this.device.originalDescriptor.id,
200
222
  null,
201
- true
223
+ true,
224
+ this.payload.connectProtocol ?? this.device.originalDescriptor.protocolType
202
225
  );
203
- await this.device.initialize();
226
+ // Bound each probe so a request the rebooting device never received
227
+ // frees the slot for the next tick instead of hanging into the
228
+ // 30s reboot budget.
229
+ await this.device.initialize({ timeoutMs: BOOTLOADER_POLL_INITIALIZE_TIMEOUT_MS });
204
230
  if (this.device.isBootloader()) {
205
231
  clearInterval(intervalTimer);
206
232
  this.checkPromise?.resolve(true);
@@ -208,6 +234,8 @@ export class FirmwareUpdateBaseMethod<Params> extends BaseMethod<Params> {
208
234
  } catch (e) {
209
235
  // ignore error because of device is not connected
210
236
  Log.log('catch Bluetooth error when device is restarting: ', e);
237
+ } finally {
238
+ bleProbeInFlight = false;
211
239
  }
212
240
  } else {
213
241
  await this._checkDeviceInBootloaderMode(connectId, intervalTimer, timeoutTimer);
@@ -232,7 +260,9 @@ export class FirmwareUpdateBaseMethod<Params> extends BaseMethod<Params> {
232
260
  ) {
233
261
  const deviceDiff = await this.device.deviceConnector?.enumerate();
234
262
  const devicesDescriptor = deviceDiff?.descriptors ?? [];
235
- const { deviceList } = await DevicePool.getDevices(devicesDescriptor, connectId);
263
+ const { deviceList } = await DevicePool.getDevices(devicesDescriptor, connectId, {
264
+ connectProtocol: this.payload.connectProtocol ?? this.device.originalDescriptor.protocolType,
265
+ });
236
266
 
237
267
  if (deviceList.length === 1 && deviceList[0]?.isBootloader()) {
238
268
  // should update current device from cache
@@ -251,7 +281,7 @@ export class FirmwareUpdateBaseMethod<Params> extends BaseMethod<Params> {
251
281
  async enterBootloaderMode() {
252
282
  const typedCall = this.device.getCommands().typedCall.bind(this.device.getCommands());
253
283
  if (this.device.features && !this.device.isBootloader()) {
254
- const uuid = getDeviceUUID(this.device.features);
284
+ const serialNo = this.device.getCurrentSerialNo();
255
285
  const deviceType = this.device.getCurrentDeviceType();
256
286
  // auto go to bootloader mode
257
287
  try {
@@ -266,7 +296,7 @@ export class FirmwareUpdateBaseMethod<Params> extends BaseMethod<Params> {
266
296
 
267
297
  // force clean classic device cache so that the device can initialize again
268
298
  if (DeviceModelToTypes.model_classic.includes(deviceType)) {
269
- DevicePool.clearDeviceCache(uuid);
299
+ DevicePool.clearDeviceCache(serialNo);
270
300
  }
271
301
  delete DevicePool.devicesCache[''];
272
302
  await this.checkPromise?.promise;
@@ -387,6 +417,54 @@ export class FirmwareUpdateBaseMethod<Params> extends BaseMethod<Params> {
387
417
  return totalSize !== undefined ? (processedSize ?? 0) + payload.byteLength : 0;
388
418
  }
389
419
 
420
+ async emmcCommonUpdateProcessFromSource({
421
+ source,
422
+ filePath,
423
+ processedSize,
424
+ totalSize,
425
+ }: {
426
+ source: FirmwareByteSource;
427
+ filePath: string;
428
+ processedSize?: number;
429
+ totalSize?: number;
430
+ }) {
431
+ if (!filePath.startsWith('0:')) {
432
+ throw new Error('filePath must start with 0:');
433
+ }
434
+ const env = DataManager.getSettings('env');
435
+ const chunkSize = 1024 * (DataManager.isBleConnect(env) ? 16 : 128);
436
+
437
+ await writeFirmwareByteSource({
438
+ source,
439
+ chunkSize,
440
+ write: async ({ data, sourceOffset, length, first }) => {
441
+ const progress =
442
+ totalSize !== undefined && processedSize !== undefined
443
+ ? Math.min(Math.ceil(((processedSize + sourceOffset + length) / totalSize) * 100), 99)
444
+ : Math.min(Math.ceil(((sourceOffset + length) / source.size) * 100), 99);
445
+ const writeRes = await this.emmcFileWriteWithRetry(
446
+ filePath,
447
+ length,
448
+ sourceOffset,
449
+ data,
450
+ first,
451
+ progress
452
+ );
453
+ if (!writeRes) {
454
+ throw ERRORS.TypedError(
455
+ HardwareErrorCode.EmmcFileWriteFirmwareError,
456
+ 'transfer data error'
457
+ );
458
+ }
459
+ const processedBytes = Number(writeRes.message.processed_byte);
460
+ this.postProgressMessage(progress, 'transferData');
461
+ return Number.isFinite(processedBytes) ? processedBytes : length;
462
+ },
463
+ });
464
+
465
+ return totalSize !== undefined ? (processedSize ?? 0) + source.size : 0;
466
+ }
467
+
390
468
  async emmcFileWriteWithRetry(
391
469
  filePath: string,
392
470
  chunkLength: number,
@@ -441,7 +519,12 @@ export class FirmwareUpdateBaseMethod<Params> extends BaseMethod<Params> {
441
519
  const env = DataManager.getSettings('env');
442
520
  if (DataManager.isBleConnect(env)) {
443
521
  await wait(3000);
444
- await this.device.deviceConnector?.acquire(this.device.originalDescriptor.id, null, true);
522
+ await this.device.deviceConnector?.acquire(
523
+ this.device.originalDescriptor.id,
524
+ null,
525
+ true,
526
+ this.payload.connectProtocol ?? this.device.originalDescriptor.protocolType
527
+ );
445
528
  await this.device.initialize();
446
529
  } else if (
447
530
  error?.message?.indexOf(SESSION_ERROR) > -1 ||
@@ -449,7 +532,10 @@ export class FirmwareUpdateBaseMethod<Params> extends BaseMethod<Params> {
449
532
  ) {
450
533
  const deviceDiff = await this.device.deviceConnector?.enumerate();
451
534
  const devicesDescriptor = deviceDiff?.descriptors ?? [];
452
- const { deviceList } = await DevicePool.getDevices(devicesDescriptor, undefined);
535
+ const { deviceList } = await DevicePool.getDevices(devicesDescriptor, undefined, {
536
+ connectProtocol:
537
+ this.payload.connectProtocol ?? this.device.originalDescriptor.protocolType,
538
+ });
453
539
  if (deviceList.length === 1 && deviceList[0]?.isBootloader()) {
454
540
  this.device.updateFromCache(deviceList[0]);
455
541
  await this.device.acquire();
@@ -0,0 +1,9 @@
1
+ import type { FirmwareUpdateCapabilities } from '../../types/api/firmwareUpdateCapabilities';
2
+
3
+ export const getFirmwareUpdateCapabilities = (): FirmwareUpdateCapabilities => ({
4
+ planSchemaVersion: 2,
5
+ preparedPlanSchemaVersion: 2,
6
+ hostBindingProtocolVersion: 2,
7
+ manifestModes: ['external-only', 'sdk-managed'],
8
+ supportsArtifactReader: true,
9
+ });