@onekeyfe/hd-core 1.2.0-alpha.3 → 1.2.0-alpha.31

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 (746) hide show
  1. package/__tests__/AllNetworkGetAddressBase.tracing.test.ts +77 -0
  2. package/__tests__/DeviceCommands.test.ts +433 -0
  3. package/__tests__/DeviceEventRegistration.test.ts +43 -0
  4. package/__tests__/chain-params-onekey-compatibility.test.ts +229 -0
  5. package/__tests__/connectSettings.test.ts +61 -0
  6. package/__tests__/core-dispose.test.ts +34 -0
  7. package/__tests__/core-error-output.test.ts +39 -0
  8. package/__tests__/device-features-state.test.ts +78 -0
  9. package/__tests__/device-identity.test.ts +52 -0
  10. package/__tests__/device-lifecycle-events.test.ts +197 -0
  11. package/__tests__/device-pool-state.test.ts +132 -0
  12. package/__tests__/device-settings.test.ts +391 -0
  13. package/__tests__/device-state-contract.test.ts +27 -0
  14. package/__tests__/device-state-events.test.ts +286 -0
  15. package/__tests__/device-state-mapper.test.ts +241 -0
  16. package/__tests__/device-state-projector.test.ts +94 -0
  17. package/__tests__/device-state-store.test.ts +82 -0
  18. package/__tests__/device-utils.test.ts +106 -0
  19. package/__tests__/device-wallet-session-store.test.ts +358 -0
  20. package/__tests__/deviceFeaturesUtils.test.ts +39 -0
  21. package/__tests__/deviceSettings.test.ts +103 -0
  22. package/__tests__/evmLedgerLegacySafety.test.ts +12 -6
  23. package/__tests__/evmSignTypedData.test.ts +80 -0
  24. package/__tests__/filesystemValidation.test.ts +53 -0
  25. package/__tests__/firmware-update/check-all-firmware-release.test.ts +174 -0
  26. package/__tests__/firmware-update/firmware-artifact-source.test.ts +119 -0
  27. package/__tests__/firmware-update/firmware-host-binding.test.ts +70 -0
  28. package/__tests__/firmware-update/firmware-preparation-error.test.ts +27 -0
  29. package/__tests__/firmware-update/firmware-update-capabilities.test.ts +13 -0
  30. package/__tests__/firmware-update/firmware-update-plan.test.ts +593 -0
  31. package/__tests__/firmware-update/firmware-update-prepared-plan.test.ts +213 -0
  32. package/__tests__/firmware-update/firmware-update-v2-download-before-boot.test.ts +430 -0
  33. package/__tests__/firmware-update/firmware-update-v3-reconnect.test.ts +58 -0
  34. package/__tests__/firmware-update/firmware-upload-source.test.ts +70 -0
  35. package/__tests__/get-device-state.test.ts +410 -0
  36. package/__tests__/homescreen.test.ts +24 -0
  37. package/__tests__/kaspa-public-types.type-test.ts +16 -0
  38. package/__tests__/kaspa-use-tweak-pro2.test.ts +20 -0
  39. package/__tests__/kaspaSignTransaction.test.ts +592 -0
  40. package/__tests__/logBlockEvent.test.ts +43 -0
  41. package/__tests__/method-protocol-support.test.ts +113 -0
  42. package/__tests__/networkUtils.test.ts +386 -0
  43. package/__tests__/open-wallet-session-error-response.test.ts +43 -0
  44. package/__tests__/open-wallet-session.test.ts +915 -0
  45. package/__tests__/preInitialize.test.ts +33 -0
  46. package/__tests__/pro2Wallpaper.test.ts +39 -0
  47. package/__tests__/protocol-v2-bootloader-mode.test.ts +37 -0
  48. package/__tests__/protocol-v2-firmware-targets.test.ts +19 -0
  49. package/__tests__/protocol-v2-ping.test.ts +28 -0
  50. package/__tests__/protocol-v2-unlock-policy.test.ts +45 -0
  51. package/__tests__/protocol-v2.test.ts +5310 -1856
  52. package/__tests__/protocolV2FileWrite.test.ts +92 -0
  53. package/__tests__/protocolV2UiInteraction.test.ts +266 -0
  54. package/__tests__/public-device-state-api.test.ts +266 -0
  55. package/__tests__/public-pro2-api-boundary.test.ts +106 -0
  56. package/__tests__/refresh-device-state.test.ts +101 -0
  57. package/__tests__/request-context-logging.test.ts +16 -0
  58. package/__tests__/search-devices.test.ts +136 -0
  59. package/__tests__/tron-sign-message-init.test.ts +74 -0
  60. package/dist/api/BaseMethod.d.ts +14 -1
  61. package/dist/api/BaseMethod.d.ts.map +1 -1
  62. package/dist/api/CheckAllFirmwareRelease.d.ts.map +1 -1
  63. package/dist/api/CheckBootloaderRelease.d.ts.map +1 -1
  64. package/dist/api/CheckFirmwareRelease.d.ts.map +1 -1
  65. package/dist/api/CipherKeyValue.d.ts +1 -0
  66. package/dist/api/CipherKeyValue.d.ts.map +1 -1
  67. package/dist/api/ClearSessionCache.d.ts +9 -0
  68. package/dist/api/ClearSessionCache.d.ts.map +1 -0
  69. package/dist/api/DirList.d.ts +1 -0
  70. package/dist/api/DirList.d.ts.map +1 -1
  71. package/dist/api/DirMake.d.ts +1 -0
  72. package/dist/api/DirMake.d.ts.map +1 -1
  73. package/dist/api/DirRemove.d.ts +1 -0
  74. package/dist/api/DirRemove.d.ts.map +1 -1
  75. package/dist/api/FileDelete.d.ts +1 -0
  76. package/dist/api/FileDelete.d.ts.map +1 -1
  77. package/dist/api/FileRead.d.ts +1 -0
  78. package/dist/api/FileRead.d.ts.map +1 -1
  79. package/dist/api/FileWrite.d.ts +2 -0
  80. package/dist/api/FileWrite.d.ts.map +1 -1
  81. package/dist/api/FirmwareUpdate.d.ts.map +1 -1
  82. package/dist/api/FirmwareUpdateV2.d.ts +13 -2
  83. package/dist/api/FirmwareUpdateV2.d.ts.map +1 -1
  84. package/dist/api/FirmwareUpdateV3.d.ts +7 -3
  85. package/dist/api/FirmwareUpdateV3.d.ts.map +1 -1
  86. package/dist/api/FirmwareUpdateV4.d.ts +47 -6
  87. package/dist/api/FirmwareUpdateV4.d.ts.map +1 -1
  88. package/dist/api/GetDeviceState.d.ts +8 -0
  89. package/dist/api/GetDeviceState.d.ts.map +1 -0
  90. package/dist/api/GetFeatures.d.ts +1 -1
  91. package/dist/api/GetFeatures.d.ts.map +1 -1
  92. package/dist/api/GetOnekeyFeatures.d.ts.map +1 -1
  93. package/dist/api/GetPassphraseState.d.ts +2 -6
  94. package/dist/api/GetPassphraseState.d.ts.map +1 -1
  95. package/dist/api/OpenWalletSession.d.ts +8 -0
  96. package/dist/api/OpenWalletSession.d.ts.map +1 -0
  97. package/dist/api/PathInfo.d.ts +1 -0
  98. package/dist/api/PathInfo.d.ts.map +1 -1
  99. package/dist/api/PromptWebDeviceAccess.d.ts.map +1 -1
  100. package/dist/api/SearchDevices.d.ts +3 -0
  101. package/dist/api/SearchDevices.d.ts.map +1 -1
  102. package/dist/api/UploadPortfolio.d.ts +17 -0
  103. package/dist/api/UploadPortfolio.d.ts.map +1 -0
  104. package/dist/api/alephium/AlephiumGetAddress.d.ts.map +1 -1
  105. package/dist/api/alephium/AlephiumSignMessage.d.ts.map +1 -1
  106. package/dist/api/alephium/AlephiumSignTransaction.d.ts.map +1 -1
  107. package/dist/api/algo/AlgoGetAddress.d.ts +1 -0
  108. package/dist/api/algo/AlgoGetAddress.d.ts.map +1 -1
  109. package/dist/api/algo/AlgoSignTransaction.d.ts +1 -0
  110. package/dist/api/algo/AlgoSignTransaction.d.ts.map +1 -1
  111. package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts +1 -0
  112. package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts.map +1 -1
  113. package/dist/api/aptos/AptosGetAddress.d.ts +1 -0
  114. package/dist/api/aptos/AptosGetAddress.d.ts.map +1 -1
  115. package/dist/api/aptos/AptosGetPublicKey.d.ts +1 -0
  116. package/dist/api/aptos/AptosGetPublicKey.d.ts.map +1 -1
  117. package/dist/api/aptos/AptosSignInMessage.d.ts +1 -0
  118. package/dist/api/aptos/AptosSignInMessage.d.ts.map +1 -1
  119. package/dist/api/aptos/AptosSignMessage.d.ts +1 -0
  120. package/dist/api/aptos/AptosSignMessage.d.ts.map +1 -1
  121. package/dist/api/aptos/AptosSignTransaction.d.ts +1 -0
  122. package/dist/api/aptos/AptosSignTransaction.d.ts.map +1 -1
  123. package/dist/api/benfen/BenfenGetAddress.d.ts.map +1 -1
  124. package/dist/api/benfen/BenfenGetPublicKey.d.ts.map +1 -1
  125. package/dist/api/benfen/BenfenSignMessage.d.ts.map +1 -1
  126. package/dist/api/benfen/BenfenSignTransaction.d.ts.map +1 -1
  127. package/dist/api/btc/BTCGetAddress.d.ts +1 -0
  128. package/dist/api/btc/BTCGetAddress.d.ts.map +1 -1
  129. package/dist/api/btc/BTCGetPublicKey.d.ts +1 -0
  130. package/dist/api/btc/BTCGetPublicKey.d.ts.map +1 -1
  131. package/dist/api/btc/BTCSignMessage.d.ts +1 -0
  132. package/dist/api/btc/BTCSignMessage.d.ts.map +1 -1
  133. package/dist/api/btc/BTCSignPsbt.d.ts +1 -0
  134. package/dist/api/btc/BTCSignPsbt.d.ts.map +1 -1
  135. package/dist/api/btc/BTCSignTransaction.d.ts +1 -0
  136. package/dist/api/btc/BTCSignTransaction.d.ts.map +1 -1
  137. package/dist/api/btc/BTCVerifyMessage.d.ts +1 -0
  138. package/dist/api/btc/BTCVerifyMessage.d.ts.map +1 -1
  139. package/dist/api/btc/helpers/versionLimit.d.ts +2 -0
  140. package/dist/api/btc/helpers/versionLimit.d.ts.map +1 -1
  141. package/dist/api/cardano/CardanoGetAddress.d.ts +1 -0
  142. package/dist/api/cardano/CardanoGetAddress.d.ts.map +1 -1
  143. package/dist/api/cardano/CardanoGetPublicKey.d.ts +1 -0
  144. package/dist/api/cardano/CardanoGetPublicKey.d.ts.map +1 -1
  145. package/dist/api/cardano/CardanoSignMessage.d.ts +1 -0
  146. package/dist/api/cardano/CardanoSignMessage.d.ts.map +1 -1
  147. package/dist/api/cardano/CardanoSignTransaction.d.ts +1 -0
  148. package/dist/api/cardano/CardanoSignTransaction.d.ts.map +1 -1
  149. package/dist/api/conflux/ConfluxGetAddress.d.ts +2 -0
  150. package/dist/api/conflux/ConfluxGetAddress.d.ts.map +1 -1
  151. package/dist/api/conflux/ConfluxSignMessage.d.ts +2 -0
  152. package/dist/api/conflux/ConfluxSignMessage.d.ts.map +1 -1
  153. package/dist/api/conflux/ConfluxSignMessageCIP23.d.ts +2 -0
  154. package/dist/api/conflux/ConfluxSignMessageCIP23.d.ts.map +1 -1
  155. package/dist/api/conflux/ConfluxSignTransaction.d.ts +2 -0
  156. package/dist/api/conflux/ConfluxSignTransaction.d.ts.map +1 -1
  157. package/dist/api/cosmos/CosmosGetAddress.d.ts +1 -0
  158. package/dist/api/cosmos/CosmosGetAddress.d.ts.map +1 -1
  159. package/dist/api/cosmos/CosmosGetPublicKey.d.ts +1 -0
  160. package/dist/api/cosmos/CosmosGetPublicKey.d.ts.map +1 -1
  161. package/dist/api/cosmos/CosmosSignTransaction.d.ts +1 -0
  162. package/dist/api/cosmos/CosmosSignTransaction.d.ts.map +1 -1
  163. package/dist/api/device/DeviceCancel.d.ts +1 -0
  164. package/dist/api/device/DeviceCancel.d.ts.map +1 -1
  165. package/dist/api/device/DeviceChangePin.d.ts +1 -0
  166. package/dist/api/device/DeviceChangePin.d.ts.map +1 -1
  167. package/dist/api/device/DeviceFullyUploadResource.d.ts +1 -2
  168. package/dist/api/device/DeviceFullyUploadResource.d.ts.map +1 -1
  169. package/dist/api/device/DeviceLock.d.ts +1 -0
  170. package/dist/api/device/DeviceLock.d.ts.map +1 -1
  171. package/dist/api/device/DeviceRebootToBoardloader.d.ts +1 -0
  172. package/dist/api/device/DeviceRebootToBoardloader.d.ts.map +1 -1
  173. package/dist/api/device/DeviceRebootToBootloader.d.ts +1 -0
  174. package/dist/api/device/DeviceRebootToBootloader.d.ts.map +1 -1
  175. package/dist/api/device/DeviceSettings.d.ts +1 -0
  176. package/dist/api/device/DeviceSettings.d.ts.map +1 -1
  177. package/dist/api/device/DeviceSupportFeatures.d.ts +1 -0
  178. package/dist/api/device/DeviceSupportFeatures.d.ts.map +1 -1
  179. package/dist/api/device/DeviceUnlock.d.ts +1 -0
  180. package/dist/api/device/DeviceUnlock.d.ts.map +1 -1
  181. package/dist/api/device/DeviceUpdateBootloader.d.ts +5 -1
  182. package/dist/api/device/DeviceUpdateBootloader.d.ts.map +1 -1
  183. package/dist/api/device/DeviceWipe.d.ts +1 -0
  184. package/dist/api/device/DeviceWipe.d.ts.map +1 -1
  185. package/dist/api/device/PreInitialize.d.ts +1 -0
  186. package/dist/api/device/PreInitialize.d.ts.map +1 -1
  187. package/dist/api/dynex/DnxGetAddress.d.ts.map +1 -1
  188. package/dist/api/dynex/DnxSignTransaction.d.ts.map +1 -1
  189. package/dist/api/evm/EVMGetAddress.d.ts +1 -0
  190. package/dist/api/evm/EVMGetAddress.d.ts.map +1 -1
  191. package/dist/api/evm/EVMGetPublicKey.d.ts +1 -0
  192. package/dist/api/evm/EVMGetPublicKey.d.ts.map +1 -1
  193. package/dist/api/evm/EVMSignMessage.d.ts +1 -0
  194. package/dist/api/evm/EVMSignMessage.d.ts.map +1 -1
  195. package/dist/api/evm/EVMSignMessageEIP712.d.ts.map +1 -1
  196. package/dist/api/evm/EVMSignTransaction.d.ts +1 -0
  197. package/dist/api/evm/EVMSignTransaction.d.ts.map +1 -1
  198. package/dist/api/evm/EVMSignTypedData.d.ts +1 -0
  199. package/dist/api/evm/EVMSignTypedData.d.ts.map +1 -1
  200. package/dist/api/evm/EVMVerifyMessage.d.ts +1 -0
  201. package/dist/api/evm/EVMVerifyMessage.d.ts.map +1 -1
  202. package/dist/api/filecoin/FilecoinGetAddress.d.ts +1 -0
  203. package/dist/api/filecoin/FilecoinGetAddress.d.ts.map +1 -1
  204. package/dist/api/filecoin/FilecoinSignTransaction.d.ts +1 -0
  205. package/dist/api/filecoin/FilecoinSignTransaction.d.ts.map +1 -1
  206. package/dist/api/firmware/FirmwareArtifactSource.d.ts +25 -0
  207. package/dist/api/firmware/FirmwareArtifactSource.d.ts.map +1 -0
  208. package/dist/api/firmware/FirmwareHostBinding.d.ts +6 -0
  209. package/dist/api/firmware/FirmwareHostBinding.d.ts.map +1 -0
  210. package/dist/api/firmware/FirmwarePreparationError.d.ts +3 -0
  211. package/dist/api/firmware/FirmwarePreparationError.d.ts.map +1 -0
  212. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts +8 -0
  213. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts.map +1 -1
  214. package/dist/api/firmware/FirmwareUpdateCapabilities.d.ts +3 -0
  215. package/dist/api/firmware/FirmwareUpdateCapabilities.d.ts.map +1 -0
  216. package/dist/api/firmware/FirmwareUpdatePlan.d.ts +25 -0
  217. package/dist/api/firmware/FirmwareUpdatePlan.d.ts.map +1 -0
  218. package/dist/api/firmware/FirmwareUpdatePreparedPlan.d.ts +30 -0
  219. package/dist/api/firmware/FirmwareUpdatePreparedPlan.d.ts.map +1 -0
  220. package/dist/api/firmware/getBinary.d.ts +18 -3
  221. package/dist/api/firmware/getBinary.d.ts.map +1 -1
  222. package/dist/api/firmware/progressThrottle.d.ts +3 -0
  223. package/dist/api/firmware/progressThrottle.d.ts.map +1 -0
  224. package/dist/api/firmware/updateBootloader.d.ts +2 -0
  225. package/dist/api/firmware/updateBootloader.d.ts.map +1 -1
  226. package/dist/api/firmware/uploadFirmware.d.ts +9 -1
  227. package/dist/api/firmware/uploadFirmware.d.ts.map +1 -1
  228. package/dist/api/helpers/filesystemValidation.d.ts +3 -0
  229. package/dist/api/helpers/filesystemValidation.d.ts.map +1 -1
  230. package/dist/api/helpers/paramsValidator.d.ts +1 -0
  231. package/dist/api/helpers/paramsValidator.d.ts.map +1 -1
  232. package/dist/api/helpers/protocolV2FileWrite.d.ts +33 -0
  233. package/dist/api/helpers/protocolV2FileWrite.d.ts.map +1 -0
  234. package/dist/api/index.d.ts +6 -29
  235. package/dist/api/index.d.ts.map +1 -1
  236. package/dist/api/kaspa/KaspaGetAddress.d.ts +4 -0
  237. package/dist/api/kaspa/KaspaGetAddress.d.ts.map +1 -1
  238. package/dist/api/kaspa/KaspaSignTransaction.d.ts +9 -1
  239. package/dist/api/kaspa/KaspaSignTransaction.d.ts.map +1 -1
  240. package/dist/api/kaspa/helpers/TransferSerialize.d.ts.map +1 -1
  241. package/dist/api/lightning/LnurlAuth.d.ts +0 -4
  242. package/dist/api/lightning/LnurlAuth.d.ts.map +1 -1
  243. package/dist/api/near/NearGetAddress.d.ts +1 -0
  244. package/dist/api/near/NearGetAddress.d.ts.map +1 -1
  245. package/dist/api/near/NearSignTransaction.d.ts +1 -0
  246. package/dist/api/near/NearSignTransaction.d.ts.map +1 -1
  247. package/dist/api/nem/NEMGetAddress.d.ts +1 -0
  248. package/dist/api/nem/NEMGetAddress.d.ts.map +1 -1
  249. package/dist/api/nem/NEMSignTransaction.d.ts +1 -0
  250. package/dist/api/nem/NEMSignTransaction.d.ts.map +1 -1
  251. package/dist/api/neo/NeoGetAddress.d.ts.map +1 -1
  252. package/dist/api/neo/NeoSignTransaction.d.ts.map +1 -1
  253. package/dist/api/nervos/NervosGetAddress.d.ts.map +1 -1
  254. package/dist/api/nervos/NervosSignTransaction.d.ts.map +1 -1
  255. package/dist/api/nexa/NexaGetAddress.d.ts.map +1 -1
  256. package/dist/api/nexa/NexaSignTransaction.d.ts +1 -0
  257. package/dist/api/nexa/NexaSignTransaction.d.ts.map +1 -1
  258. package/dist/api/nostr/NostrDecryptMessage.d.ts +1 -0
  259. package/dist/api/nostr/NostrDecryptMessage.d.ts.map +1 -1
  260. package/dist/api/nostr/NostrEncryptMessage.d.ts +1 -0
  261. package/dist/api/nostr/NostrEncryptMessage.d.ts.map +1 -1
  262. package/dist/api/nostr/NostrGetPublicKey.d.ts +1 -0
  263. package/dist/api/nostr/NostrGetPublicKey.d.ts.map +1 -1
  264. package/dist/api/nostr/NostrSignEvent.d.ts +1 -0
  265. package/dist/api/nostr/NostrSignEvent.d.ts.map +1 -1
  266. package/dist/api/nostr/NostrSignSchnorr.d.ts +1 -0
  267. package/dist/api/nostr/NostrSignSchnorr.d.ts.map +1 -1
  268. package/dist/api/polkadot/PolkadotGetAddress.d.ts +1 -0
  269. package/dist/api/polkadot/PolkadotGetAddress.d.ts.map +1 -1
  270. package/dist/api/polkadot/PolkadotSignTransaction.d.ts +1 -0
  271. package/dist/api/polkadot/PolkadotSignTransaction.d.ts.map +1 -1
  272. package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts +7 -0
  273. package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts.map +1 -0
  274. package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts +8 -0
  275. package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts.map +1 -0
  276. package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts +2 -1
  277. package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts.map +1 -1
  278. package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts +4 -2
  279. package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts.map +1 -1
  280. package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts +2 -1
  281. package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts.map +1 -1
  282. package/dist/api/protocol-v2/DeviceInfoGet.d.ts +29 -0
  283. package/dist/api/protocol-v2/DeviceInfoGet.d.ts.map +1 -0
  284. package/dist/api/protocol-v2/DeviceReboot.d.ts +1 -0
  285. package/dist/api/protocol-v2/DeviceReboot.d.ts.map +1 -1
  286. package/dist/api/protocol-v2/DeviceStatusGet.d.ts +7 -0
  287. package/dist/api/protocol-v2/DeviceStatusGet.d.ts.map +1 -0
  288. package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts +27 -0
  289. package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts.map +1 -0
  290. package/dist/api/protocol-v2/FilesystemFormat.d.ts +1 -0
  291. package/dist/api/protocol-v2/FilesystemFormat.d.ts.map +1 -1
  292. package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts +7 -0
  293. package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts.map +1 -0
  294. package/dist/api/protocol-v2/Ping.d.ts +3 -0
  295. package/dist/api/protocol-v2/Ping.d.ts.map +1 -1
  296. package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts +7 -0
  297. package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts.map +1 -0
  298. package/dist/api/protocol-v2/helpers.d.ts +27 -18
  299. package/dist/api/protocol-v2/helpers.d.ts.map +1 -1
  300. package/dist/api/scdo/ScdoGetAddress.d.ts.map +1 -1
  301. package/dist/api/scdo/ScdoSignMessage.d.ts.map +1 -1
  302. package/dist/api/scdo/ScdoSignTransaction.d.ts.map +1 -1
  303. package/dist/api/solana/SolGetAddress.d.ts +1 -0
  304. package/dist/api/solana/SolGetAddress.d.ts.map +1 -1
  305. package/dist/api/solana/SolSignMessage.d.ts +1 -0
  306. package/dist/api/solana/SolSignMessage.d.ts.map +1 -1
  307. package/dist/api/solana/SolSignOffchainMessage.d.ts +1 -0
  308. package/dist/api/solana/SolSignOffchainMessage.d.ts.map +1 -1
  309. package/dist/api/solana/SolSignTransaction.d.ts +1 -0
  310. package/dist/api/solana/SolSignTransaction.d.ts.map +1 -1
  311. package/dist/api/starcoin/StarcoinGetAddress.d.ts +1 -0
  312. package/dist/api/starcoin/StarcoinGetAddress.d.ts.map +1 -1
  313. package/dist/api/starcoin/StarcoinGetPublicKey.d.ts +1 -0
  314. package/dist/api/starcoin/StarcoinGetPublicKey.d.ts.map +1 -1
  315. package/dist/api/starcoin/StarcoinSignMessage.d.ts +1 -0
  316. package/dist/api/starcoin/StarcoinSignMessage.d.ts.map +1 -1
  317. package/dist/api/starcoin/StarcoinSignTransaction.d.ts +1 -0
  318. package/dist/api/starcoin/StarcoinSignTransaction.d.ts.map +1 -1
  319. package/dist/api/starcoin/StarcoinVerifyMessage.d.ts +1 -0
  320. package/dist/api/starcoin/StarcoinVerifyMessage.d.ts.map +1 -1
  321. package/dist/api/stellar/StellarGetAddress.d.ts +1 -2
  322. package/dist/api/stellar/StellarGetAddress.d.ts.map +1 -1
  323. package/dist/api/stellar/StellarSignTransaction.d.ts +2 -3
  324. package/dist/api/stellar/StellarSignTransaction.d.ts.map +1 -1
  325. package/dist/api/sui/SuiGetAddress.d.ts +1 -0
  326. package/dist/api/sui/SuiGetAddress.d.ts.map +1 -1
  327. package/dist/api/sui/SuiGetPublicKey.d.ts +1 -0
  328. package/dist/api/sui/SuiGetPublicKey.d.ts.map +1 -1
  329. package/dist/api/sui/SuiSignMessage.d.ts +1 -0
  330. package/dist/api/sui/SuiSignMessage.d.ts.map +1 -1
  331. package/dist/api/sui/SuiSignTransaction.d.ts +1 -0
  332. package/dist/api/sui/SuiSignTransaction.d.ts.map +1 -1
  333. package/dist/api/ton/TonGetAddress.d.ts +1 -0
  334. package/dist/api/ton/TonGetAddress.d.ts.map +1 -1
  335. package/dist/api/ton/TonSignData.d.ts +2 -5
  336. package/dist/api/ton/TonSignData.d.ts.map +1 -1
  337. package/dist/api/ton/TonSignMessage.d.ts +1 -0
  338. package/dist/api/ton/TonSignMessage.d.ts.map +1 -1
  339. package/dist/api/ton/TonSignProof.d.ts +1 -0
  340. package/dist/api/ton/TonSignProof.d.ts.map +1 -1
  341. package/dist/api/tron/TronGetAddress.d.ts +1 -0
  342. package/dist/api/tron/TronGetAddress.d.ts.map +1 -1
  343. package/dist/api/tron/TronSignMessage.d.ts +5 -0
  344. package/dist/api/tron/TronSignMessage.d.ts.map +1 -1
  345. package/dist/api/tron/TronSignTransaction.d.ts +1 -0
  346. package/dist/api/tron/TronSignTransaction.d.ts.map +1 -1
  347. package/dist/api/utils.d.ts +2 -1
  348. package/dist/api/utils.d.ts.map +1 -1
  349. package/dist/api/xrp/XrpGetAddress.d.ts +1 -0
  350. package/dist/api/xrp/XrpGetAddress.d.ts.map +1 -1
  351. package/dist/api/xrp/XrpSignTransaction.d.ts +1 -0
  352. package/dist/api/xrp/XrpSignTransaction.d.ts.map +1 -1
  353. package/dist/constants/index.d.ts +1 -1
  354. package/dist/constants/index.d.ts.map +1 -1
  355. package/dist/core/RequestQueue.d.ts.map +1 -1
  356. package/dist/core/deviceEventRegistration.d.ts +11 -0
  357. package/dist/core/deviceEventRegistration.d.ts.map +1 -0
  358. package/dist/core/index.d.ts +3 -1
  359. package/dist/core/index.d.ts.map +1 -1
  360. package/dist/data-manager/DataManager.d.ts +2 -1
  361. package/dist/data-manager/DataManager.d.ts.map +1 -1
  362. package/dist/data-manager/connectSettings.d.ts.map +1 -1
  363. package/dist/device/Device.d.ts +40 -13
  364. package/dist/device/Device.d.ts.map +1 -1
  365. package/dist/device/DeviceCommands.d.ts +8 -6
  366. package/dist/device/DeviceCommands.d.ts.map +1 -1
  367. package/dist/device/DeviceFeaturesState.d.ts +3 -0
  368. package/dist/device/DeviceFeaturesState.d.ts.map +1 -0
  369. package/dist/device/DevicePool.d.ts +4 -2
  370. package/dist/device/DevicePool.d.ts.map +1 -1
  371. package/dist/device/DeviceStateMapper.d.ts +13 -0
  372. package/dist/device/DeviceStateMapper.d.ts.map +1 -0
  373. package/dist/device/DeviceStateProjector.d.ts +7 -0
  374. package/dist/device/DeviceStateProjector.d.ts.map +1 -0
  375. package/dist/device/DeviceStateStore.d.ts +21 -0
  376. package/dist/device/DeviceStateStore.d.ts.map +1 -0
  377. package/dist/device/DeviceWalletSessionStore.d.ts +20 -0
  378. package/dist/device/DeviceWalletSessionStore.d.ts.map +1 -0
  379. package/dist/device/cloneDeviceState.d.ts +2 -0
  380. package/dist/device/cloneDeviceState.d.ts.map +1 -0
  381. package/dist/device/deviceIdentity.d.ts +5 -0
  382. package/dist/device/deviceIdentity.d.ts.map +1 -0
  383. package/dist/deviceProfile/buildDeviceFeatures.d.ts +9 -3
  384. package/dist/deviceProfile/buildDeviceFeatures.d.ts.map +1 -1
  385. package/dist/deviceProfile/index.d.ts +0 -1
  386. package/dist/deviceProfile/index.d.ts.map +1 -1
  387. package/dist/events/device.d.ts +12 -2
  388. package/dist/events/device.d.ts.map +1 -1
  389. package/dist/events/logBlockEvent.d.ts.map +1 -1
  390. package/dist/events/ui-request.d.ts +19 -2
  391. package/dist/events/ui-request.d.ts.map +1 -1
  392. package/dist/index.d.ts +1487 -691
  393. package/dist/index.d.ts.map +1 -1
  394. package/dist/index.js +8831 -4014
  395. package/dist/inject.d.ts.map +1 -1
  396. package/dist/lowLevelInject.d.ts.map +1 -1
  397. package/dist/protocols/protocol-v2/deviceSession.d.ts +7 -0
  398. package/dist/protocols/protocol-v2/deviceSession.d.ts.map +1 -0
  399. package/dist/protocols/protocol-v2/features.d.ts +23 -28
  400. package/dist/protocols/protocol-v2/features.d.ts.map +1 -1
  401. package/dist/protocols/protocol-v2/firmware.d.ts +11 -9
  402. package/dist/protocols/protocol-v2/firmware.d.ts.map +1 -1
  403. package/dist/protocols/protocol-v2/index.d.ts +3 -2
  404. package/dist/protocols/protocol-v2/index.d.ts.map +1 -1
  405. package/dist/protocols/protocol-v2/lockedError.d.ts +2 -0
  406. package/dist/protocols/protocol-v2/lockedError.d.ts.map +1 -0
  407. package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts +16 -0
  408. package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts.map +1 -0
  409. package/dist/protocols/protocol-v2/uiInteraction.d.ts +39 -0
  410. package/dist/protocols/protocol-v2/uiInteraction.d.ts.map +1 -0
  411. package/dist/protocols/protocol-v2/unlockPolicy.d.ts +4 -0
  412. package/dist/protocols/protocol-v2/unlockPolicy.d.ts.map +1 -0
  413. package/dist/protocols/protocol-v2/unlockRetry.d.ts +10 -0
  414. package/dist/protocols/protocol-v2/unlockRetry.d.ts.map +1 -0
  415. package/dist/protocols/protocol-v2/walletSession.d.ts +31 -0
  416. package/dist/protocols/protocol-v2/walletSession.d.ts.map +1 -0
  417. package/dist/topLevelInject.d.ts.map +1 -1
  418. package/dist/types/api/checkAllFirmwareRelease.d.ts +5 -2
  419. package/dist/types/api/checkAllFirmwareRelease.d.ts.map +1 -1
  420. package/dist/types/api/deviceSettings.d.ts +11 -2
  421. package/dist/types/api/deviceSettings.d.ts.map +1 -1
  422. package/dist/types/api/deviceUnlock.d.ts +1 -1
  423. package/dist/types/api/deviceUnlock.d.ts.map +1 -1
  424. package/dist/types/api/deviceUpdateBootloader.d.ts +6 -0
  425. package/dist/types/api/deviceUpdateBootloader.d.ts.map +1 -1
  426. package/dist/types/api/export.d.ts +5 -2
  427. package/dist/types/api/export.d.ts.map +1 -1
  428. package/dist/types/api/firmwareUpdate.d.ts +75 -6
  429. package/dist/types/api/firmwareUpdate.d.ts.map +1 -1
  430. package/dist/types/api/firmwareUpdateCapabilities.d.ts +9 -0
  431. package/dist/types/api/firmwareUpdateCapabilities.d.ts.map +1 -0
  432. package/dist/types/api/firmwareUpdatePlan.d.ts +28 -0
  433. package/dist/types/api/firmwareUpdatePlan.d.ts.map +1 -0
  434. package/dist/types/api/firmwareUpdatePreparedPlan.d.ts +42 -0
  435. package/dist/types/api/firmwareUpdatePreparedPlan.d.ts.map +1 -0
  436. package/dist/types/api/getDeviceState.d.ts +12 -0
  437. package/dist/types/api/getDeviceState.d.ts.map +1 -0
  438. package/dist/types/api/getFeatures.d.ts.map +1 -1
  439. package/dist/types/api/getOnekeyFeatures.d.ts.map +1 -1
  440. package/dist/types/api/getPassphraseState.d.ts +2 -10
  441. package/dist/types/api/getPassphraseState.d.ts.map +1 -1
  442. package/dist/types/api/index.d.ts +25 -35
  443. package/dist/types/api/index.d.ts.map +1 -1
  444. package/dist/types/api/kaspaSignTransaction.d.ts +42 -4
  445. package/dist/types/api/kaspaSignTransaction.d.ts.map +1 -1
  446. package/dist/types/api/openWalletSession.d.ts +29 -0
  447. package/dist/types/api/openWalletSession.d.ts.map +1 -0
  448. package/dist/types/api/protocolV2.d.ts +15 -89
  449. package/dist/types/api/protocolV2.d.ts.map +1 -1
  450. package/dist/types/api/sessionCache.d.ts +13 -0
  451. package/dist/types/api/sessionCache.d.ts.map +1 -0
  452. package/dist/types/device.d.ts +122 -6
  453. package/dist/types/device.d.ts.map +1 -1
  454. package/dist/types/params.d.ts +1 -0
  455. package/dist/types/params.d.ts.map +1 -1
  456. package/dist/types/settings.d.ts +34 -2
  457. package/dist/types/settings.d.ts.map +1 -1
  458. package/dist/utils/assets.d.ts +2 -1
  459. package/dist/utils/assets.d.ts.map +1 -1
  460. package/dist/utils/deviceFeaturesCompat.d.ts +13 -0
  461. package/dist/utils/deviceFeaturesCompat.d.ts.map +1 -0
  462. package/dist/utils/deviceFeaturesUtils.d.ts +11 -3
  463. package/dist/utils/deviceFeaturesUtils.d.ts.map +1 -1
  464. package/dist/utils/deviceInfoUtils.d.ts +9 -9
  465. package/dist/utils/deviceInfoUtils.d.ts.map +1 -1
  466. package/dist/utils/deviceSettings.d.ts +38 -7
  467. package/dist/utils/deviceSettings.d.ts.map +1 -1
  468. package/dist/utils/deviceVersionUtils.d.ts +7 -5
  469. package/dist/utils/deviceVersionUtils.d.ts.map +1 -1
  470. package/dist/utils/homescreen.d.ts.map +1 -1
  471. package/dist/utils/index.d.ts +5 -2
  472. package/dist/utils/index.d.ts.map +1 -1
  473. package/dist/utils/networkUtils.d.ts +9 -1
  474. package/dist/utils/networkUtils.d.ts.map +1 -1
  475. package/dist/utils/patch.d.ts +1 -1
  476. package/dist/utils/patch.d.ts.map +1 -1
  477. package/dist/utils/pro2Wallpaper.d.ts +12 -0
  478. package/dist/utils/pro2Wallpaper.d.ts.map +1 -0
  479. package/dist/utils/tracing.d.ts.map +1 -1
  480. package/package.json +4 -4
  481. package/src/api/BaseMethod.ts +52 -17
  482. package/src/api/CheckAllFirmwareRelease.ts +51 -4
  483. package/src/api/CheckBootloaderRelease.ts +1 -2
  484. package/src/api/CheckFirmwareRelease.ts +1 -2
  485. package/src/api/CipherKeyValue.ts +4 -0
  486. package/src/api/ClearSessionCache.ts +32 -0
  487. package/src/api/DirList.ts +9 -4
  488. package/src/api/DirMake.ts +7 -4
  489. package/src/api/DirRemove.ts +7 -4
  490. package/src/api/FileDelete.ts +7 -4
  491. package/src/api/FileRead.ts +27 -8
  492. package/src/api/FileWrite.ts +26 -168
  493. package/src/api/FirmwareUpdate.ts +11 -12
  494. package/src/api/FirmwareUpdateV2.ts +370 -112
  495. package/src/api/FirmwareUpdateV3.ts +266 -68
  496. package/src/api/FirmwareUpdateV4.ts +1687 -397
  497. package/src/api/GetDeviceState.ts +59 -0
  498. package/src/api/GetFeatures.ts +6 -4
  499. package/src/api/GetOnekeyFeatures.ts +1 -75
  500. package/src/api/GetPassphraseState.ts +21 -21
  501. package/src/api/OpenWalletSession.ts +202 -0
  502. package/src/api/PathInfo.ts +9 -4
  503. package/src/api/PromptWebDeviceAccess.ts +2 -3
  504. package/src/api/SearchDevices.ts +29 -4
  505. package/src/api/UploadPortfolio.ts +40 -0
  506. package/src/api/alephium/AlephiumGetAddress.ts +0 -4
  507. package/src/api/alephium/AlephiumSignMessage.ts +0 -4
  508. package/src/api/alephium/AlephiumSignTransaction.ts +2 -6
  509. package/src/api/algo/AlgoGetAddress.ts +4 -0
  510. package/src/api/algo/AlgoSignTransaction.ts +4 -0
  511. package/src/api/allnetwork/AllNetworkGetAddressBase.ts +9 -21
  512. package/src/api/aptos/AptosGetAddress.ts +4 -0
  513. package/src/api/aptos/AptosGetPublicKey.ts +4 -0
  514. package/src/api/aptos/AptosSignInMessage.ts +4 -0
  515. package/src/api/aptos/AptosSignMessage.ts +4 -0
  516. package/src/api/aptos/AptosSignTransaction.ts +4 -0
  517. package/src/api/benfen/BenfenGetAddress.ts +11 -7
  518. package/src/api/benfen/BenfenGetPublicKey.ts +0 -4
  519. package/src/api/benfen/BenfenSignMessage.ts +0 -4
  520. package/src/api/benfen/BenfenSignTransaction.ts +0 -4
  521. package/src/api/btc/BTCGetAddress.ts +8 -1
  522. package/src/api/btc/BTCGetPublicKey.ts +9 -2
  523. package/src/api/btc/BTCSignMessage.ts +8 -1
  524. package/src/api/btc/BTCSignPsbt.ts +4 -0
  525. package/src/api/btc/BTCSignTransaction.ts +8 -1
  526. package/src/api/btc/BTCVerifyMessage.ts +8 -1
  527. package/src/api/btc/helpers/versionLimit.ts +7 -4
  528. package/src/api/cardano/CardanoGetAddress.ts +4 -0
  529. package/src/api/cardano/CardanoGetPublicKey.ts +4 -0
  530. package/src/api/cardano/CardanoSignMessage.ts +5 -1
  531. package/src/api/cardano/CardanoSignTransaction.ts +5 -1
  532. package/src/api/conflux/ConfluxGetAddress.ts +6 -0
  533. package/src/api/conflux/ConfluxSignMessage.ts +6 -0
  534. package/src/api/conflux/ConfluxSignMessageCIP23.ts +6 -0
  535. package/src/api/conflux/ConfluxSignTransaction.ts +8 -5
  536. package/src/api/cosmos/CosmosGetAddress.ts +4 -0
  537. package/src/api/cosmos/CosmosGetPublicKey.ts +4 -0
  538. package/src/api/cosmos/CosmosSignTransaction.ts +4 -0
  539. package/src/api/device/DeviceCancel.ts +5 -0
  540. package/src/api/device/DeviceChangePin.ts +28 -0
  541. package/src/api/device/DeviceFullyUploadResource.ts +4 -5
  542. package/src/api/device/DeviceLock.ts +5 -0
  543. package/src/api/device/DeviceRebootToBoardloader.ts +9 -4
  544. package/src/api/device/DeviceRebootToBootloader.ts +9 -4
  545. package/src/api/device/DeviceSettings.ts +187 -1
  546. package/src/api/device/DeviceSupportFeatures.ts +4 -0
  547. package/src/api/device/DeviceUnlock.ts +13 -0
  548. package/src/api/device/DeviceUpdateBootloader.ts +123 -8
  549. package/src/api/device/DeviceWipe.ts +25 -0
  550. package/src/api/device/PreInitialize.ts +4 -0
  551. package/src/api/dynex/DnxGetAddress.ts +0 -6
  552. package/src/api/dynex/DnxSignTransaction.ts +0 -6
  553. package/src/api/evm/EVMGetAddress.ts +4 -0
  554. package/src/api/evm/EVMGetPublicKey.ts +4 -0
  555. package/src/api/evm/EVMSignMessage.ts +4 -0
  556. package/src/api/evm/EVMSignMessageEIP712.ts +1 -11
  557. package/src/api/evm/EVMSignTransaction.ts +4 -0
  558. package/src/api/evm/EVMSignTypedData.ts +7 -5
  559. package/src/api/evm/EVMVerifyMessage.ts +4 -0
  560. package/src/api/evm/legacyV1/getAddress.ts +2 -2
  561. package/src/api/evm/legacyV1/getPublicKey.ts +2 -2
  562. package/src/api/evm/legacyV1/signMessage.ts +2 -2
  563. package/src/api/evm/legacyV1/signTypedData.ts +2 -2
  564. package/src/api/evm/legacyV1/signTypedHash.ts +2 -2
  565. package/src/api/evm/legacyV1/verifyMessage.ts +2 -2
  566. package/src/api/filecoin/FilecoinGetAddress.ts +4 -0
  567. package/src/api/filecoin/FilecoinSignTransaction.ts +4 -0
  568. package/src/api/firmware/FirmwareArtifactSource.ts +278 -0
  569. package/src/api/firmware/FirmwareHostBinding.ts +100 -0
  570. package/src/api/firmware/FirmwarePreparationError.ts +12 -0
  571. package/src/api/firmware/FirmwareUpdateBaseMethod.ts +71 -7
  572. package/src/api/firmware/FirmwareUpdateCapabilities.ts +9 -0
  573. package/src/api/firmware/FirmwareUpdatePlan.ts +745 -0
  574. package/src/api/firmware/FirmwareUpdatePreparedPlan.ts +392 -0
  575. package/src/api/firmware/getBinary.ts +8 -3
  576. package/src/api/firmware/progressThrottle.ts +44 -0
  577. package/src/api/firmware/updateBootloader.ts +19 -4
  578. package/src/api/firmware/uploadFirmware.ts +140 -22
  579. package/src/api/helpers/batchGetPublickeys.ts +2 -2
  580. package/src/api/helpers/filesystemValidation.ts +61 -0
  581. package/src/api/helpers/paramsValidator.ts +1 -1
  582. package/src/api/helpers/protocolV2FileWrite.ts +199 -0
  583. package/src/api/index.ts +7 -30
  584. package/src/api/kaspa/KaspaGetAddress.ts +7 -0
  585. package/src/api/kaspa/KaspaSignTransaction.ts +373 -29
  586. package/src/api/kaspa/helpers/TransferSerialize.ts +17 -7
  587. package/src/api/lightning/LnurlAuth.ts +0 -4
  588. package/src/api/near/NearGetAddress.ts +4 -0
  589. package/src/api/near/NearSignTransaction.ts +4 -0
  590. package/src/api/nem/NEMGetAddress.ts +4 -0
  591. package/src/api/nem/NEMSignTransaction.ts +4 -0
  592. package/src/api/neo/NeoGetAddress.ts +0 -4
  593. package/src/api/neo/NeoSignTransaction.ts +0 -4
  594. package/src/api/nervos/NervosGetAddress.ts +0 -4
  595. package/src/api/nervos/NervosSignTransaction.ts +2 -6
  596. package/src/api/nexa/NexaGetAddress.ts +0 -4
  597. package/src/api/nexa/NexaSignTransaction.ts +3 -5
  598. package/src/api/nostr/NostrDecryptMessage.ts +4 -0
  599. package/src/api/nostr/NostrEncryptMessage.ts +4 -0
  600. package/src/api/nostr/NostrGetPublicKey.ts +4 -0
  601. package/src/api/nostr/NostrSignEvent.ts +4 -0
  602. package/src/api/nostr/NostrSignSchnorr.ts +4 -0
  603. package/src/api/polkadot/PolkadotGetAddress.ts +4 -0
  604. package/src/api/polkadot/PolkadotSignTransaction.ts +4 -0
  605. package/src/api/protocol-v2/{FactoryGetDeviceInfo.ts → DeviceFactoryInfoGet.ts} +8 -5
  606. package/src/api/protocol-v2/DeviceFactoryInfoSet.ts +35 -0
  607. package/src/api/protocol-v2/DeviceFirmwareUpdate.ts +11 -10
  608. package/src/api/protocol-v2/DeviceGetFirmwareUpdateStatus.ts +45 -7
  609. package/src/api/protocol-v2/DeviceGetOnboardingStatus.ts +10 -5
  610. package/src/api/protocol-v2/DeviceInfoGet.ts +141 -0
  611. package/src/api/protocol-v2/DeviceReboot.ts +8 -4
  612. package/src/api/protocol-v2/DeviceStatusGet.ts +19 -0
  613. package/src/api/protocol-v2/DeviceUploadWallpaper.ts +134 -0
  614. package/src/api/protocol-v2/FilesystemFormat.ts +9 -3
  615. package/src/api/protocol-v2/{FilesystemFixPermission.ts → FilesystemPermissionFix.ts} +7 -4
  616. package/src/api/protocol-v2/Ping.ts +37 -3
  617. package/src/api/protocol-v2/ProtocolInfoRequest.ts +19 -0
  618. package/src/api/protocol-v2/helpers.ts +71 -50
  619. package/src/api/scdo/ScdoGetAddress.ts +0 -4
  620. package/src/api/scdo/ScdoSignMessage.ts +0 -4
  621. package/src/api/scdo/ScdoSignTransaction.ts +0 -4
  622. package/src/api/solana/SolGetAddress.ts +4 -0
  623. package/src/api/solana/SolSignMessage.ts +4 -0
  624. package/src/api/solana/SolSignOffchainMessage.ts +4 -0
  625. package/src/api/solana/SolSignTransaction.ts +4 -0
  626. package/src/api/starcoin/StarcoinGetAddress.ts +4 -0
  627. package/src/api/starcoin/StarcoinGetPublicKey.ts +4 -0
  628. package/src/api/starcoin/StarcoinSignMessage.ts +4 -0
  629. package/src/api/starcoin/StarcoinSignTransaction.ts +4 -0
  630. package/src/api/starcoin/StarcoinVerifyMessage.ts +4 -0
  631. package/src/api/stellar/StellarGetAddress.ts +1 -10
  632. package/src/api/stellar/StellarSignTransaction.ts +1 -14
  633. package/src/api/sui/SuiGetAddress.ts +4 -0
  634. package/src/api/sui/SuiGetPublicKey.ts +4 -0
  635. package/src/api/sui/SuiSignMessage.ts +4 -0
  636. package/src/api/sui/SuiSignTransaction.ts +4 -0
  637. package/src/api/ton/TonGetAddress.ts +4 -0
  638. package/src/api/ton/TonSignData.ts +6 -6
  639. package/src/api/ton/TonSignMessage.ts +4 -0
  640. package/src/api/ton/TonSignProof.ts +4 -0
  641. package/src/api/tron/TronGetAddress.ts +4 -0
  642. package/src/api/tron/TronSignMessage.ts +18 -7
  643. package/src/api/tron/TronSignTransaction.ts +4 -0
  644. package/src/api/utils.ts +7 -3
  645. package/src/api/xrp/XrpGetAddress.ts +4 -0
  646. package/src/api/xrp/XrpSignTransaction.ts +5 -1
  647. package/src/constants/index.ts +1 -4
  648. package/src/core/RequestQueue.ts +1 -0
  649. package/src/core/deviceEventRegistration.ts +23 -0
  650. package/src/core/index.ts +181 -58
  651. package/src/data/messages/messages-protocol-v2.json +796 -620
  652. package/src/data/messages/messages.json +286 -1
  653. package/src/data-manager/DataManager.ts +45 -38
  654. package/src/data-manager/TransportManager.ts +1 -1
  655. package/src/data-manager/connectSettings.ts +13 -4
  656. package/src/device/Device.ts +573 -278
  657. package/src/device/DeviceCommands.ts +154 -156
  658. package/src/device/DeviceFeaturesState.ts +25 -0
  659. package/src/device/DevicePool.ts +61 -13
  660. package/src/device/DeviceStateMapper.ts +366 -0
  661. package/src/device/DeviceStateProjector.ts +101 -0
  662. package/src/device/DeviceStateStore.ts +201 -0
  663. package/src/device/DeviceWalletSessionStore.ts +105 -0
  664. package/src/device/cloneDeviceState.ts +39 -0
  665. package/src/device/deviceIdentity.ts +18 -0
  666. package/src/deviceProfile/buildDeviceFeatures.ts +234 -210
  667. package/src/deviceProfile/index.ts +0 -1
  668. package/src/events/device.ts +18 -1
  669. package/src/events/logBlockEvent.ts +1 -7
  670. package/src/events/ui-request.ts +25 -2
  671. package/src/index.ts +5 -0
  672. package/src/inject.ts +35 -47
  673. package/src/lowLevelInject.ts +5 -1
  674. package/src/protocols/protocol-v2/deviceSession.ts +24 -0
  675. package/src/protocols/protocol-v2/features.ts +68 -83
  676. package/src/protocols/protocol-v2/firmware.ts +12 -36
  677. package/src/protocols/protocol-v2/index.ts +3 -1
  678. package/src/protocols/protocol-v2/lockedError.ts +10 -0
  679. package/src/protocols/protocol-v2/settingsUnlockPolicy.ts +60 -0
  680. package/src/protocols/protocol-v2/uiInteraction.ts +210 -0
  681. package/src/protocols/protocol-v2/unlockPolicy.ts +105 -0
  682. package/src/protocols/protocol-v2/unlockRetry.ts +98 -0
  683. package/src/protocols/protocol-v2/walletSession.ts +202 -0
  684. package/src/topLevelInject.ts +5 -1
  685. package/src/types/api/checkAllFirmwareRelease.ts +5 -2
  686. package/src/types/api/deviceSettings.ts +26 -2
  687. package/src/types/api/deviceUnlock.ts +1 -1
  688. package/src/types/api/deviceUpdateBootloader.ts +6 -0
  689. package/src/types/api/export.ts +21 -0
  690. package/src/types/api/firmwareUpdate.ts +103 -19
  691. package/src/types/api/firmwareUpdateCapabilities.ts +9 -0
  692. package/src/types/api/firmwareUpdatePlan.ts +38 -0
  693. package/src/types/api/firmwareUpdatePreparedPlan.ts +53 -0
  694. package/src/types/api/getDeviceState.ts +19 -0
  695. package/src/types/api/getFeatures.ts +3 -0
  696. package/src/types/api/getOnekeyFeatures.ts +3 -0
  697. package/src/types/api/getPassphraseState.ts +9 -11
  698. package/src/types/api/index.ts +33 -73
  699. package/src/types/api/kaspaSignTransaction.ts +60 -4
  700. package/src/types/api/openWalletSession.ts +45 -0
  701. package/src/types/api/protocolV2.ts +23 -162
  702. package/src/types/api/sessionCache.ts +19 -0
  703. package/src/types/device.ts +172 -5
  704. package/src/types/params.ts +4 -0
  705. package/src/types/settings.ts +55 -35
  706. package/src/utils/assets.ts +4 -1
  707. package/src/utils/deviceFeaturesCompat.ts +173 -0
  708. package/src/utils/deviceFeaturesUtils.ts +66 -24
  709. package/src/utils/deviceInfoUtils.ts +27 -69
  710. package/src/utils/deviceSettings.ts +171 -39
  711. package/src/utils/deviceVersionUtils.ts +25 -44
  712. package/src/utils/findDefectiveBatchDevice.ts +3 -3
  713. package/src/utils/homescreen.ts +10 -0
  714. package/src/utils/index.ts +21 -2
  715. package/src/utils/networkUtils.ts +270 -14
  716. package/src/utils/pro2Wallpaper.ts +109 -0
  717. package/src/utils/tracing.ts +3 -1
  718. package/tsconfig.type-tests.json +8 -0
  719. package/dist/api/GetDeviceInfo.d.ts +0 -9
  720. package/dist/api/GetDeviceInfo.d.ts.map +0 -1
  721. package/dist/api/protocol-v2/DevReboot.d.ts +0 -7
  722. package/dist/api/protocol-v2/DevReboot.d.ts.map +0 -1
  723. package/dist/api/protocol-v2/DeviceGetDeviceInfo.d.ts +0 -29
  724. package/dist/api/protocol-v2/DeviceGetDeviceInfo.d.ts.map +0 -1
  725. package/dist/api/protocol-v2/FactoryDeviceInfoSettings.d.ts +0 -7
  726. package/dist/api/protocol-v2/FactoryDeviceInfoSettings.d.ts.map +0 -1
  727. package/dist/api/protocol-v2/FactoryGetDeviceInfo.d.ts +0 -6
  728. package/dist/api/protocol-v2/FactoryGetDeviceInfo.d.ts.map +0 -1
  729. package/dist/api/protocol-v2/FilesystemDiskControl.d.ts +0 -13
  730. package/dist/api/protocol-v2/FilesystemDiskControl.d.ts.map +0 -1
  731. package/dist/api/protocol-v2/FilesystemFixPermission.d.ts +0 -6
  732. package/dist/api/protocol-v2/FilesystemFixPermission.d.ts.map +0 -1
  733. package/dist/api/protocol-v2/GetProtoVersion.d.ts +0 -6
  734. package/dist/api/protocol-v2/GetProtoVersion.d.ts.map +0 -1
  735. package/dist/deviceProfile/buildDeviceProfile.d.ts +0 -21
  736. package/dist/deviceProfile/buildDeviceProfile.d.ts.map +0 -1
  737. package/dist/types/api/getDeviceInfo.d.ts +0 -85
  738. package/dist/types/api/getDeviceInfo.d.ts.map +0 -1
  739. package/src/api/GetDeviceInfo.ts +0 -145
  740. package/src/api/protocol-v2/DevReboot.ts +0 -24
  741. package/src/api/protocol-v2/DeviceGetDeviceInfo.ts +0 -118
  742. package/src/api/protocol-v2/FactoryDeviceInfoSettings.ts +0 -29
  743. package/src/api/protocol-v2/FilesystemDiskControl.ts +0 -50
  744. package/src/api/protocol-v2/GetProtoVersion.ts +0 -16
  745. package/src/deviceProfile/buildDeviceProfile.ts +0 -333
  746. package/src/types/api/getDeviceInfo.ts +0 -99
@@ -10,6 +10,10 @@ import signMessageLegacyV1 from './legacyV1/signMessage';
10
10
  import type { EthereumSignMessageOneKey } from '@onekeyfe/hd-transport';
11
11
 
12
12
  export default class EVMSignMessage extends BaseMethod<EthereumSignMessageOneKey> {
13
+ getSupportedProtocols() {
14
+ return ['V1', 'V2'] as const;
15
+ }
16
+
13
17
  init() {
14
18
  this.checkDeviceId = true;
15
19
  this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.NOT_INITIALIZE];
@@ -35,10 +35,6 @@ export default class EVMSignMessageEIP712 extends BaseMethod<EthereumSignMessage
35
35
 
36
36
  getVersionRange(): DeviceFirmwareRange {
37
37
  return {
38
- pro2: {
39
- min: '0.0.0',
40
- unsupported: true,
41
- },
42
38
  model_mini: {
43
39
  min: '2.1.9',
44
40
  },
@@ -49,13 +45,7 @@ export default class EVMSignMessageEIP712 extends BaseMethod<EthereumSignMessage
49
45
  }
50
46
 
51
47
  async run() {
52
- this.checkFeatureVersionLimit(
53
- () => true,
54
- () => this.getVersionRange(),
55
- {
56
- strictCheckDeviceSupport: true,
57
- }
58
- );
48
+ this.assertProtocolSupported(this.device.getProtocol(), this.device.getCurrentFirmwareType());
59
49
 
60
50
  const res = await this.device.commands.typedCall(
61
51
  'EthereumSignMessageEIP712',
@@ -18,6 +18,10 @@ import type {
18
18
  import type { SchemaParam } from '../helpers/paramsValidator';
19
19
 
20
20
  export default class EVMSignTransaction extends BaseMethod {
21
+ getSupportedProtocols() {
22
+ return ['V1', 'V2'] as const;
23
+ }
24
+
21
25
  addressN: number[] = [];
22
26
 
23
27
  isEIP1559 = false;
@@ -32,9 +32,8 @@ import type {
32
32
  } from '@onekeyfe/hd-transport';
33
33
 
34
34
  /**
35
- * EthereumTypedDataStructAckOneKey EthereumTypedDataStructAck 的字段结构与
36
- * 枚举数值完全一致(生成产物的 OneKey/Trezor 双份消息),仅枚举名义类型不同;
37
- * 这里做无运行时成本的名义转换,避免在调用点散落 any。
35
+ * EthereumTypedDataStructAckOneKey and EthereumTypedDataStructAck have identical
36
+ * fields and enum values. This zero-cost nominal conversion avoids scattered `any`.
38
37
  */
39
38
  const toOneKeyStructAck = (ack: EthereumTypedDataStructAck): EthereumTypedDataStructAckOneKey =>
40
39
  ack as unknown as EthereumTypedDataStructAckOneKey;
@@ -57,6 +56,10 @@ const MINI_MAX_ARRAY_TYPE_FIELDS = 24;
57
56
  const MINI_MAX_ARRAY_ELEMENTS = 24;
58
57
 
59
58
  export default class EVMSignTypedData extends BaseMethod<EVMSignTypedDataParams> {
59
+ getSupportedProtocols() {
60
+ return ['V1', 'V2'] as const;
61
+ }
62
+
60
63
  init() {
61
64
  this.checkDeviceId = true;
62
65
  this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.NOT_INITIALIZE];
@@ -227,8 +230,7 @@ export default class EVMSignTypedData extends BaseMethod<EVMSignTypedDataParams>
227
230
  if (response.type === 'EthereumGnosisSafeTxRequest') {
228
231
  const { data } = this.params;
229
232
  const verifyingContract = data.domain?.verifyingContract;
230
- // EthereumGnosisSafeTxAck.verifyingContract proto 中是 required 字段,
231
- // Gnosis Safe 签名缺少 verifyingContract 没有意义,这里给出明确的参数错误。
233
+ // verifyingContract is required by proto and essential to a Gnosis Safe signature.
232
234
  if (!verifyingContract) {
233
235
  throw ERRORS.TypedError(
234
236
  HardwareErrorCode.CallMethodInvalidParameter,
@@ -9,6 +9,10 @@ import verifyMessage from './latest/verifyMessage';
9
9
  import type { EthereumVerifyMessageOneKey } from '@onekeyfe/hd-transport';
10
10
 
11
11
  export default class EVMSignMessage extends BaseMethod<EthereumVerifyMessageOneKey> {
12
+ getSupportedProtocols() {
13
+ return ['V1', 'V2'] as const;
14
+ }
15
+
12
16
  init() {
13
17
  this.checkDeviceId = true;
14
18
  this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.NOT_INITIALIZE];
@@ -7,8 +7,8 @@ export default async function ({
7
7
  typedCall: TypedCall;
8
8
  param: EthereumGetAddressOneKey;
9
9
  }): Promise<MessageResponse<'EthereumAddress'>> {
10
- // legacy EthereumGetAddress 的生成类型没有 chain_id 字段,但旧固件按 OneKey 扩展
11
- // 接受该字段;通过预先声明的对象(非 fresh literal)携带额外字段,保持原有运行时行为。
10
+ // The generated legacy type omits chain_id, but old firmware accepts the OneKey
11
+ // extension. A non-fresh object preserves that runtime field without a type cast.
12
12
  const message = {
13
13
  address_n: param.address_n,
14
14
  show_display: param.show_display,
@@ -11,8 +11,8 @@ export default async function ({
11
11
  typedCall: TypedCall;
12
12
  param: EthereumGetPublicKeyOneKey;
13
13
  }): Promise<MessageResponse<'EthereumPublicKey'>> {
14
- // legacy EthereumGetPublicKey 的生成类型没有 chain_id 字段,但旧固件按 OneKey 扩展
15
- // 接受该字段;通过预先声明的对象(非 fresh literal)携带额外字段,保持原有运行时行为。
14
+ // The generated legacy type omits chain_id, but old firmware accepts the OneKey
15
+ // extension. A non-fresh object preserves that runtime field without a type cast.
16
16
  const message = {
17
17
  address_n: param.address_n,
18
18
  show_display: param.show_display,
@@ -11,8 +11,8 @@ export default async function ({
11
11
  typedCall: TypedCall;
12
12
  params: EthereumSignMessageOneKey;
13
13
  }): Promise<EthereumMessageSignature> {
14
- // legacy EthereumSignMessage 的生成类型没有 chain_id 字段,但旧固件按 OneKey 扩展
15
- // 接受该字段;通过预先声明的对象(非 fresh literal)携带额外字段,保持原有运行时行为。
14
+ // The generated legacy type omits chain_id, but old firmware accepts the OneKey
15
+ // extension. A non-fresh object preserves that runtime field without a type cast.
16
16
  const message = {
17
17
  address_n: params.address_n,
18
18
  message: params.message,
@@ -16,8 +16,8 @@ export const signTypedData = async ({
16
16
  }) => {
17
17
  const { primaryType }: EthereumSignTypedDataMessage<EthereumSignTypedDataTypes> = data;
18
18
 
19
- // legacy EthereumSignTypedData 的生成类型没有 chain_id 字段,但旧固件按 OneKey 扩展
20
- // 接受该字段;通过预先声明的对象(非 fresh literal)携带额外字段,保持原有运行时行为。
19
+ // The generated legacy type omits chain_id, but old firmware accepts the OneKey
20
+ // extension. A non-fresh object preserves that runtime field without a type cast.
21
21
  const message = {
22
22
  address_n: addressN,
23
23
  primary_type: primaryType as string,
@@ -38,8 +38,8 @@ export const signTypedHash = async ({
38
38
  }
39
39
  }
40
40
 
41
- // legacy EthereumSignTypedHash 的生成类型没有 chain_id 字段,但旧固件按 OneKey 扩展
42
- // 接受该字段;通过预先声明的对象(非 fresh literal)携带额外字段,保持原有运行时行为。
41
+ // The generated legacy type omits chain_id, but old firmware accepts the OneKey
42
+ // extension. A non-fresh object preserves that runtime field without a type cast.
43
43
  const message = {
44
44
  address_n: addressN,
45
45
  domain_separator_hash: domainHash ?? '',
@@ -7,8 +7,8 @@ export default async function ({
7
7
  typedCall: TypedCall;
8
8
  params: EthereumVerifyMessageOneKey;
9
9
  }): Promise<Success> {
10
- // legacy EthereumVerifyMessage 的生成类型没有 chain_id 字段,但旧固件按 OneKey 扩展
11
- // 接受该字段;通过预先声明的对象(非 fresh literal)携带额外字段,保持原有运行时行为。
10
+ // The generated legacy type omits chain_id, but old firmware accepts the OneKey
11
+ // extension. A non-fresh object preserves that runtime field without a type cast.
12
12
  const message = {
13
13
  signature: params.signature,
14
14
  message: params.message,
@@ -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
+ };