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

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 (745) 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-upload-source.test.ts +70 -0
  34. package/__tests__/get-device-state.test.ts +410 -0
  35. package/__tests__/homescreen.test.ts +24 -0
  36. package/__tests__/kaspa-public-types.type-test.ts +16 -0
  37. package/__tests__/kaspa-use-tweak-pro2.test.ts +20 -0
  38. package/__tests__/kaspaSignTransaction.test.ts +592 -0
  39. package/__tests__/logBlockEvent.test.ts +43 -0
  40. package/__tests__/method-protocol-support.test.ts +113 -0
  41. package/__tests__/networkUtils.test.ts +386 -0
  42. package/__tests__/open-wallet-session-error-response.test.ts +43 -0
  43. package/__tests__/open-wallet-session.test.ts +915 -0
  44. package/__tests__/preInitialize.test.ts +33 -0
  45. package/__tests__/pro2Wallpaper.test.ts +39 -0
  46. package/__tests__/protocol-v2-bootloader-mode.test.ts +37 -0
  47. package/__tests__/protocol-v2-firmware-targets.test.ts +19 -0
  48. package/__tests__/protocol-v2-ping.test.ts +28 -0
  49. package/__tests__/protocol-v2-unlock-policy.test.ts +45 -0
  50. package/__tests__/protocol-v2.test.ts +5310 -1856
  51. package/__tests__/protocolV2FileWrite.test.ts +92 -0
  52. package/__tests__/protocolV2UiInteraction.test.ts +266 -0
  53. package/__tests__/public-device-state-api.test.ts +266 -0
  54. package/__tests__/public-pro2-api-boundary.test.ts +106 -0
  55. package/__tests__/refresh-device-state.test.ts +101 -0
  56. package/__tests__/request-context-logging.test.ts +16 -0
  57. package/__tests__/search-devices.test.ts +136 -0
  58. package/__tests__/tron-sign-message-init.test.ts +74 -0
  59. package/dist/api/BaseMethod.d.ts +14 -1
  60. package/dist/api/BaseMethod.d.ts.map +1 -1
  61. package/dist/api/CheckAllFirmwareRelease.d.ts.map +1 -1
  62. package/dist/api/CheckBootloaderRelease.d.ts.map +1 -1
  63. package/dist/api/CheckFirmwareRelease.d.ts.map +1 -1
  64. package/dist/api/CipherKeyValue.d.ts +1 -0
  65. package/dist/api/CipherKeyValue.d.ts.map +1 -1
  66. package/dist/api/ClearSessionCache.d.ts +9 -0
  67. package/dist/api/ClearSessionCache.d.ts.map +1 -0
  68. package/dist/api/DirList.d.ts +1 -0
  69. package/dist/api/DirList.d.ts.map +1 -1
  70. package/dist/api/DirMake.d.ts +1 -0
  71. package/dist/api/DirMake.d.ts.map +1 -1
  72. package/dist/api/DirRemove.d.ts +1 -0
  73. package/dist/api/DirRemove.d.ts.map +1 -1
  74. package/dist/api/FileDelete.d.ts +1 -0
  75. package/dist/api/FileDelete.d.ts.map +1 -1
  76. package/dist/api/FileRead.d.ts +1 -0
  77. package/dist/api/FileRead.d.ts.map +1 -1
  78. package/dist/api/FileWrite.d.ts +2 -0
  79. package/dist/api/FileWrite.d.ts.map +1 -1
  80. package/dist/api/FirmwareUpdate.d.ts.map +1 -1
  81. package/dist/api/FirmwareUpdateV2.d.ts +13 -2
  82. package/dist/api/FirmwareUpdateV2.d.ts.map +1 -1
  83. package/dist/api/FirmwareUpdateV3.d.ts +7 -3
  84. package/dist/api/FirmwareUpdateV3.d.ts.map +1 -1
  85. package/dist/api/FirmwareUpdateV4.d.ts +47 -6
  86. package/dist/api/FirmwareUpdateV4.d.ts.map +1 -1
  87. package/dist/api/GetDeviceState.d.ts +8 -0
  88. package/dist/api/GetDeviceState.d.ts.map +1 -0
  89. package/dist/api/GetFeatures.d.ts +1 -1
  90. package/dist/api/GetFeatures.d.ts.map +1 -1
  91. package/dist/api/GetOnekeyFeatures.d.ts.map +1 -1
  92. package/dist/api/GetPassphraseState.d.ts +2 -6
  93. package/dist/api/GetPassphraseState.d.ts.map +1 -1
  94. package/dist/api/OpenWalletSession.d.ts +8 -0
  95. package/dist/api/OpenWalletSession.d.ts.map +1 -0
  96. package/dist/api/PathInfo.d.ts +1 -0
  97. package/dist/api/PathInfo.d.ts.map +1 -1
  98. package/dist/api/PromptWebDeviceAccess.d.ts.map +1 -1
  99. package/dist/api/SearchDevices.d.ts +3 -0
  100. package/dist/api/SearchDevices.d.ts.map +1 -1
  101. package/dist/api/UploadPortfolio.d.ts +17 -0
  102. package/dist/api/UploadPortfolio.d.ts.map +1 -0
  103. package/dist/api/alephium/AlephiumGetAddress.d.ts.map +1 -1
  104. package/dist/api/alephium/AlephiumSignMessage.d.ts.map +1 -1
  105. package/dist/api/alephium/AlephiumSignTransaction.d.ts.map +1 -1
  106. package/dist/api/algo/AlgoGetAddress.d.ts +1 -0
  107. package/dist/api/algo/AlgoGetAddress.d.ts.map +1 -1
  108. package/dist/api/algo/AlgoSignTransaction.d.ts +1 -0
  109. package/dist/api/algo/AlgoSignTransaction.d.ts.map +1 -1
  110. package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts +1 -0
  111. package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts.map +1 -1
  112. package/dist/api/aptos/AptosGetAddress.d.ts +1 -0
  113. package/dist/api/aptos/AptosGetAddress.d.ts.map +1 -1
  114. package/dist/api/aptos/AptosGetPublicKey.d.ts +1 -0
  115. package/dist/api/aptos/AptosGetPublicKey.d.ts.map +1 -1
  116. package/dist/api/aptos/AptosSignInMessage.d.ts +1 -0
  117. package/dist/api/aptos/AptosSignInMessage.d.ts.map +1 -1
  118. package/dist/api/aptos/AptosSignMessage.d.ts +1 -0
  119. package/dist/api/aptos/AptosSignMessage.d.ts.map +1 -1
  120. package/dist/api/aptos/AptosSignTransaction.d.ts +1 -0
  121. package/dist/api/aptos/AptosSignTransaction.d.ts.map +1 -1
  122. package/dist/api/benfen/BenfenGetAddress.d.ts.map +1 -1
  123. package/dist/api/benfen/BenfenGetPublicKey.d.ts.map +1 -1
  124. package/dist/api/benfen/BenfenSignMessage.d.ts.map +1 -1
  125. package/dist/api/benfen/BenfenSignTransaction.d.ts.map +1 -1
  126. package/dist/api/btc/BTCGetAddress.d.ts +1 -0
  127. package/dist/api/btc/BTCGetAddress.d.ts.map +1 -1
  128. package/dist/api/btc/BTCGetPublicKey.d.ts +1 -0
  129. package/dist/api/btc/BTCGetPublicKey.d.ts.map +1 -1
  130. package/dist/api/btc/BTCSignMessage.d.ts +1 -0
  131. package/dist/api/btc/BTCSignMessage.d.ts.map +1 -1
  132. package/dist/api/btc/BTCSignPsbt.d.ts +1 -0
  133. package/dist/api/btc/BTCSignPsbt.d.ts.map +1 -1
  134. package/dist/api/btc/BTCSignTransaction.d.ts +1 -0
  135. package/dist/api/btc/BTCSignTransaction.d.ts.map +1 -1
  136. package/dist/api/btc/BTCVerifyMessage.d.ts +1 -0
  137. package/dist/api/btc/BTCVerifyMessage.d.ts.map +1 -1
  138. package/dist/api/btc/helpers/versionLimit.d.ts +2 -0
  139. package/dist/api/btc/helpers/versionLimit.d.ts.map +1 -1
  140. package/dist/api/cardano/CardanoGetAddress.d.ts +1 -0
  141. package/dist/api/cardano/CardanoGetAddress.d.ts.map +1 -1
  142. package/dist/api/cardano/CardanoGetPublicKey.d.ts +1 -0
  143. package/dist/api/cardano/CardanoGetPublicKey.d.ts.map +1 -1
  144. package/dist/api/cardano/CardanoSignMessage.d.ts +1 -0
  145. package/dist/api/cardano/CardanoSignMessage.d.ts.map +1 -1
  146. package/dist/api/cardano/CardanoSignTransaction.d.ts +1 -0
  147. package/dist/api/cardano/CardanoSignTransaction.d.ts.map +1 -1
  148. package/dist/api/conflux/ConfluxGetAddress.d.ts +2 -0
  149. package/dist/api/conflux/ConfluxGetAddress.d.ts.map +1 -1
  150. package/dist/api/conflux/ConfluxSignMessage.d.ts +2 -0
  151. package/dist/api/conflux/ConfluxSignMessage.d.ts.map +1 -1
  152. package/dist/api/conflux/ConfluxSignMessageCIP23.d.ts +2 -0
  153. package/dist/api/conflux/ConfluxSignMessageCIP23.d.ts.map +1 -1
  154. package/dist/api/conflux/ConfluxSignTransaction.d.ts +2 -0
  155. package/dist/api/conflux/ConfluxSignTransaction.d.ts.map +1 -1
  156. package/dist/api/cosmos/CosmosGetAddress.d.ts +1 -0
  157. package/dist/api/cosmos/CosmosGetAddress.d.ts.map +1 -1
  158. package/dist/api/cosmos/CosmosGetPublicKey.d.ts +1 -0
  159. package/dist/api/cosmos/CosmosGetPublicKey.d.ts.map +1 -1
  160. package/dist/api/cosmos/CosmosSignTransaction.d.ts +1 -0
  161. package/dist/api/cosmos/CosmosSignTransaction.d.ts.map +1 -1
  162. package/dist/api/device/DeviceCancel.d.ts +1 -0
  163. package/dist/api/device/DeviceCancel.d.ts.map +1 -1
  164. package/dist/api/device/DeviceChangePin.d.ts +1 -0
  165. package/dist/api/device/DeviceChangePin.d.ts.map +1 -1
  166. package/dist/api/device/DeviceFullyUploadResource.d.ts +1 -2
  167. package/dist/api/device/DeviceFullyUploadResource.d.ts.map +1 -1
  168. package/dist/api/device/DeviceLock.d.ts +1 -0
  169. package/dist/api/device/DeviceLock.d.ts.map +1 -1
  170. package/dist/api/device/DeviceRebootToBoardloader.d.ts +1 -0
  171. package/dist/api/device/DeviceRebootToBoardloader.d.ts.map +1 -1
  172. package/dist/api/device/DeviceRebootToBootloader.d.ts +1 -0
  173. package/dist/api/device/DeviceRebootToBootloader.d.ts.map +1 -1
  174. package/dist/api/device/DeviceSettings.d.ts +1 -0
  175. package/dist/api/device/DeviceSettings.d.ts.map +1 -1
  176. package/dist/api/device/DeviceSupportFeatures.d.ts +1 -0
  177. package/dist/api/device/DeviceSupportFeatures.d.ts.map +1 -1
  178. package/dist/api/device/DeviceUnlock.d.ts +1 -0
  179. package/dist/api/device/DeviceUnlock.d.ts.map +1 -1
  180. package/dist/api/device/DeviceUpdateBootloader.d.ts +5 -1
  181. package/dist/api/device/DeviceUpdateBootloader.d.ts.map +1 -1
  182. package/dist/api/device/DeviceWipe.d.ts +1 -0
  183. package/dist/api/device/DeviceWipe.d.ts.map +1 -1
  184. package/dist/api/device/PreInitialize.d.ts +1 -0
  185. package/dist/api/device/PreInitialize.d.ts.map +1 -1
  186. package/dist/api/dynex/DnxGetAddress.d.ts.map +1 -1
  187. package/dist/api/dynex/DnxSignTransaction.d.ts.map +1 -1
  188. package/dist/api/evm/EVMGetAddress.d.ts +1 -0
  189. package/dist/api/evm/EVMGetAddress.d.ts.map +1 -1
  190. package/dist/api/evm/EVMGetPublicKey.d.ts +1 -0
  191. package/dist/api/evm/EVMGetPublicKey.d.ts.map +1 -1
  192. package/dist/api/evm/EVMSignMessage.d.ts +1 -0
  193. package/dist/api/evm/EVMSignMessage.d.ts.map +1 -1
  194. package/dist/api/evm/EVMSignMessageEIP712.d.ts.map +1 -1
  195. package/dist/api/evm/EVMSignTransaction.d.ts +1 -0
  196. package/dist/api/evm/EVMSignTransaction.d.ts.map +1 -1
  197. package/dist/api/evm/EVMSignTypedData.d.ts +1 -0
  198. package/dist/api/evm/EVMSignTypedData.d.ts.map +1 -1
  199. package/dist/api/evm/EVMVerifyMessage.d.ts +1 -0
  200. package/dist/api/evm/EVMVerifyMessage.d.ts.map +1 -1
  201. package/dist/api/filecoin/FilecoinGetAddress.d.ts +1 -0
  202. package/dist/api/filecoin/FilecoinGetAddress.d.ts.map +1 -1
  203. package/dist/api/filecoin/FilecoinSignTransaction.d.ts +1 -0
  204. package/dist/api/filecoin/FilecoinSignTransaction.d.ts.map +1 -1
  205. package/dist/api/firmware/FirmwareArtifactSource.d.ts +25 -0
  206. package/dist/api/firmware/FirmwareArtifactSource.d.ts.map +1 -0
  207. package/dist/api/firmware/FirmwareHostBinding.d.ts +6 -0
  208. package/dist/api/firmware/FirmwareHostBinding.d.ts.map +1 -0
  209. package/dist/api/firmware/FirmwarePreparationError.d.ts +3 -0
  210. package/dist/api/firmware/FirmwarePreparationError.d.ts.map +1 -0
  211. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts +8 -0
  212. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts.map +1 -1
  213. package/dist/api/firmware/FirmwareUpdateCapabilities.d.ts +3 -0
  214. package/dist/api/firmware/FirmwareUpdateCapabilities.d.ts.map +1 -0
  215. package/dist/api/firmware/FirmwareUpdatePlan.d.ts +25 -0
  216. package/dist/api/firmware/FirmwareUpdatePlan.d.ts.map +1 -0
  217. package/dist/api/firmware/FirmwareUpdatePreparedPlan.d.ts +30 -0
  218. package/dist/api/firmware/FirmwareUpdatePreparedPlan.d.ts.map +1 -0
  219. package/dist/api/firmware/getBinary.d.ts +18 -3
  220. package/dist/api/firmware/getBinary.d.ts.map +1 -1
  221. package/dist/api/firmware/progressThrottle.d.ts +3 -0
  222. package/dist/api/firmware/progressThrottle.d.ts.map +1 -0
  223. package/dist/api/firmware/updateBootloader.d.ts +2 -0
  224. package/dist/api/firmware/updateBootloader.d.ts.map +1 -1
  225. package/dist/api/firmware/uploadFirmware.d.ts +9 -1
  226. package/dist/api/firmware/uploadFirmware.d.ts.map +1 -1
  227. package/dist/api/helpers/filesystemValidation.d.ts +3 -0
  228. package/dist/api/helpers/filesystemValidation.d.ts.map +1 -1
  229. package/dist/api/helpers/paramsValidator.d.ts +1 -0
  230. package/dist/api/helpers/paramsValidator.d.ts.map +1 -1
  231. package/dist/api/helpers/protocolV2FileWrite.d.ts +33 -0
  232. package/dist/api/helpers/protocolV2FileWrite.d.ts.map +1 -0
  233. package/dist/api/index.d.ts +6 -29
  234. package/dist/api/index.d.ts.map +1 -1
  235. package/dist/api/kaspa/KaspaGetAddress.d.ts +4 -0
  236. package/dist/api/kaspa/KaspaGetAddress.d.ts.map +1 -1
  237. package/dist/api/kaspa/KaspaSignTransaction.d.ts +9 -1
  238. package/dist/api/kaspa/KaspaSignTransaction.d.ts.map +1 -1
  239. package/dist/api/kaspa/helpers/TransferSerialize.d.ts.map +1 -1
  240. package/dist/api/lightning/LnurlAuth.d.ts +0 -4
  241. package/dist/api/lightning/LnurlAuth.d.ts.map +1 -1
  242. package/dist/api/near/NearGetAddress.d.ts +1 -0
  243. package/dist/api/near/NearGetAddress.d.ts.map +1 -1
  244. package/dist/api/near/NearSignTransaction.d.ts +1 -0
  245. package/dist/api/near/NearSignTransaction.d.ts.map +1 -1
  246. package/dist/api/nem/NEMGetAddress.d.ts +1 -0
  247. package/dist/api/nem/NEMGetAddress.d.ts.map +1 -1
  248. package/dist/api/nem/NEMSignTransaction.d.ts +1 -0
  249. package/dist/api/nem/NEMSignTransaction.d.ts.map +1 -1
  250. package/dist/api/neo/NeoGetAddress.d.ts.map +1 -1
  251. package/dist/api/neo/NeoSignTransaction.d.ts.map +1 -1
  252. package/dist/api/nervos/NervosGetAddress.d.ts.map +1 -1
  253. package/dist/api/nervos/NervosSignTransaction.d.ts.map +1 -1
  254. package/dist/api/nexa/NexaGetAddress.d.ts.map +1 -1
  255. package/dist/api/nexa/NexaSignTransaction.d.ts +1 -0
  256. package/dist/api/nexa/NexaSignTransaction.d.ts.map +1 -1
  257. package/dist/api/nostr/NostrDecryptMessage.d.ts +1 -0
  258. package/dist/api/nostr/NostrDecryptMessage.d.ts.map +1 -1
  259. package/dist/api/nostr/NostrEncryptMessage.d.ts +1 -0
  260. package/dist/api/nostr/NostrEncryptMessage.d.ts.map +1 -1
  261. package/dist/api/nostr/NostrGetPublicKey.d.ts +1 -0
  262. package/dist/api/nostr/NostrGetPublicKey.d.ts.map +1 -1
  263. package/dist/api/nostr/NostrSignEvent.d.ts +1 -0
  264. package/dist/api/nostr/NostrSignEvent.d.ts.map +1 -1
  265. package/dist/api/nostr/NostrSignSchnorr.d.ts +1 -0
  266. package/dist/api/nostr/NostrSignSchnorr.d.ts.map +1 -1
  267. package/dist/api/polkadot/PolkadotGetAddress.d.ts +1 -0
  268. package/dist/api/polkadot/PolkadotGetAddress.d.ts.map +1 -1
  269. package/dist/api/polkadot/PolkadotSignTransaction.d.ts +1 -0
  270. package/dist/api/polkadot/PolkadotSignTransaction.d.ts.map +1 -1
  271. package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts +7 -0
  272. package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts.map +1 -0
  273. package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts +8 -0
  274. package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts.map +1 -0
  275. package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts +2 -1
  276. package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts.map +1 -1
  277. package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts +4 -2
  278. package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts.map +1 -1
  279. package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts +2 -1
  280. package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts.map +1 -1
  281. package/dist/api/protocol-v2/DeviceInfoGet.d.ts +29 -0
  282. package/dist/api/protocol-v2/DeviceInfoGet.d.ts.map +1 -0
  283. package/dist/api/protocol-v2/DeviceReboot.d.ts +1 -0
  284. package/dist/api/protocol-v2/DeviceReboot.d.ts.map +1 -1
  285. package/dist/api/protocol-v2/DeviceStatusGet.d.ts +7 -0
  286. package/dist/api/protocol-v2/DeviceStatusGet.d.ts.map +1 -0
  287. package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts +27 -0
  288. package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts.map +1 -0
  289. package/dist/api/protocol-v2/FilesystemFormat.d.ts +1 -0
  290. package/dist/api/protocol-v2/FilesystemFormat.d.ts.map +1 -1
  291. package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts +7 -0
  292. package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts.map +1 -0
  293. package/dist/api/protocol-v2/Ping.d.ts +3 -0
  294. package/dist/api/protocol-v2/Ping.d.ts.map +1 -1
  295. package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts +7 -0
  296. package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts.map +1 -0
  297. package/dist/api/protocol-v2/helpers.d.ts +27 -18
  298. package/dist/api/protocol-v2/helpers.d.ts.map +1 -1
  299. package/dist/api/scdo/ScdoGetAddress.d.ts.map +1 -1
  300. package/dist/api/scdo/ScdoSignMessage.d.ts.map +1 -1
  301. package/dist/api/scdo/ScdoSignTransaction.d.ts.map +1 -1
  302. package/dist/api/solana/SolGetAddress.d.ts +1 -0
  303. package/dist/api/solana/SolGetAddress.d.ts.map +1 -1
  304. package/dist/api/solana/SolSignMessage.d.ts +1 -0
  305. package/dist/api/solana/SolSignMessage.d.ts.map +1 -1
  306. package/dist/api/solana/SolSignOffchainMessage.d.ts +1 -0
  307. package/dist/api/solana/SolSignOffchainMessage.d.ts.map +1 -1
  308. package/dist/api/solana/SolSignTransaction.d.ts +1 -0
  309. package/dist/api/solana/SolSignTransaction.d.ts.map +1 -1
  310. package/dist/api/starcoin/StarcoinGetAddress.d.ts +1 -0
  311. package/dist/api/starcoin/StarcoinGetAddress.d.ts.map +1 -1
  312. package/dist/api/starcoin/StarcoinGetPublicKey.d.ts +1 -0
  313. package/dist/api/starcoin/StarcoinGetPublicKey.d.ts.map +1 -1
  314. package/dist/api/starcoin/StarcoinSignMessage.d.ts +1 -0
  315. package/dist/api/starcoin/StarcoinSignMessage.d.ts.map +1 -1
  316. package/dist/api/starcoin/StarcoinSignTransaction.d.ts +1 -0
  317. package/dist/api/starcoin/StarcoinSignTransaction.d.ts.map +1 -1
  318. package/dist/api/starcoin/StarcoinVerifyMessage.d.ts +1 -0
  319. package/dist/api/starcoin/StarcoinVerifyMessage.d.ts.map +1 -1
  320. package/dist/api/stellar/StellarGetAddress.d.ts +1 -2
  321. package/dist/api/stellar/StellarGetAddress.d.ts.map +1 -1
  322. package/dist/api/stellar/StellarSignTransaction.d.ts +2 -3
  323. package/dist/api/stellar/StellarSignTransaction.d.ts.map +1 -1
  324. package/dist/api/sui/SuiGetAddress.d.ts +1 -0
  325. package/dist/api/sui/SuiGetAddress.d.ts.map +1 -1
  326. package/dist/api/sui/SuiGetPublicKey.d.ts +1 -0
  327. package/dist/api/sui/SuiGetPublicKey.d.ts.map +1 -1
  328. package/dist/api/sui/SuiSignMessage.d.ts +1 -0
  329. package/dist/api/sui/SuiSignMessage.d.ts.map +1 -1
  330. package/dist/api/sui/SuiSignTransaction.d.ts +1 -0
  331. package/dist/api/sui/SuiSignTransaction.d.ts.map +1 -1
  332. package/dist/api/ton/TonGetAddress.d.ts +1 -0
  333. package/dist/api/ton/TonGetAddress.d.ts.map +1 -1
  334. package/dist/api/ton/TonSignData.d.ts +2 -5
  335. package/dist/api/ton/TonSignData.d.ts.map +1 -1
  336. package/dist/api/ton/TonSignMessage.d.ts +1 -0
  337. package/dist/api/ton/TonSignMessage.d.ts.map +1 -1
  338. package/dist/api/ton/TonSignProof.d.ts +1 -0
  339. package/dist/api/ton/TonSignProof.d.ts.map +1 -1
  340. package/dist/api/tron/TronGetAddress.d.ts +1 -0
  341. package/dist/api/tron/TronGetAddress.d.ts.map +1 -1
  342. package/dist/api/tron/TronSignMessage.d.ts +5 -0
  343. package/dist/api/tron/TronSignMessage.d.ts.map +1 -1
  344. package/dist/api/tron/TronSignTransaction.d.ts +1 -0
  345. package/dist/api/tron/TronSignTransaction.d.ts.map +1 -1
  346. package/dist/api/utils.d.ts +2 -1
  347. package/dist/api/utils.d.ts.map +1 -1
  348. package/dist/api/xrp/XrpGetAddress.d.ts +1 -0
  349. package/dist/api/xrp/XrpGetAddress.d.ts.map +1 -1
  350. package/dist/api/xrp/XrpSignTransaction.d.ts +1 -0
  351. package/dist/api/xrp/XrpSignTransaction.d.ts.map +1 -1
  352. package/dist/constants/index.d.ts +1 -1
  353. package/dist/constants/index.d.ts.map +1 -1
  354. package/dist/core/RequestQueue.d.ts.map +1 -1
  355. package/dist/core/deviceEventRegistration.d.ts +11 -0
  356. package/dist/core/deviceEventRegistration.d.ts.map +1 -0
  357. package/dist/core/index.d.ts +3 -1
  358. package/dist/core/index.d.ts.map +1 -1
  359. package/dist/data-manager/DataManager.d.ts +2 -1
  360. package/dist/data-manager/DataManager.d.ts.map +1 -1
  361. package/dist/data-manager/connectSettings.d.ts.map +1 -1
  362. package/dist/device/Device.d.ts +40 -13
  363. package/dist/device/Device.d.ts.map +1 -1
  364. package/dist/device/DeviceCommands.d.ts +8 -6
  365. package/dist/device/DeviceCommands.d.ts.map +1 -1
  366. package/dist/device/DeviceFeaturesState.d.ts +3 -0
  367. package/dist/device/DeviceFeaturesState.d.ts.map +1 -0
  368. package/dist/device/DevicePool.d.ts +4 -2
  369. package/dist/device/DevicePool.d.ts.map +1 -1
  370. package/dist/device/DeviceStateMapper.d.ts +13 -0
  371. package/dist/device/DeviceStateMapper.d.ts.map +1 -0
  372. package/dist/device/DeviceStateProjector.d.ts +7 -0
  373. package/dist/device/DeviceStateProjector.d.ts.map +1 -0
  374. package/dist/device/DeviceStateStore.d.ts +21 -0
  375. package/dist/device/DeviceStateStore.d.ts.map +1 -0
  376. package/dist/device/DeviceWalletSessionStore.d.ts +20 -0
  377. package/dist/device/DeviceWalletSessionStore.d.ts.map +1 -0
  378. package/dist/device/cloneDeviceState.d.ts +2 -0
  379. package/dist/device/cloneDeviceState.d.ts.map +1 -0
  380. package/dist/device/deviceIdentity.d.ts +5 -0
  381. package/dist/device/deviceIdentity.d.ts.map +1 -0
  382. package/dist/deviceProfile/buildDeviceFeatures.d.ts +9 -3
  383. package/dist/deviceProfile/buildDeviceFeatures.d.ts.map +1 -1
  384. package/dist/deviceProfile/index.d.ts +0 -1
  385. package/dist/deviceProfile/index.d.ts.map +1 -1
  386. package/dist/events/device.d.ts +12 -2
  387. package/dist/events/device.d.ts.map +1 -1
  388. package/dist/events/logBlockEvent.d.ts.map +1 -1
  389. package/dist/events/ui-request.d.ts +19 -2
  390. package/dist/events/ui-request.d.ts.map +1 -1
  391. package/dist/index.d.ts +1487 -691
  392. package/dist/index.d.ts.map +1 -1
  393. package/dist/index.js +8828 -4013
  394. package/dist/inject.d.ts.map +1 -1
  395. package/dist/lowLevelInject.d.ts.map +1 -1
  396. package/dist/protocols/protocol-v2/deviceSession.d.ts +7 -0
  397. package/dist/protocols/protocol-v2/deviceSession.d.ts.map +1 -0
  398. package/dist/protocols/protocol-v2/features.d.ts +23 -28
  399. package/dist/protocols/protocol-v2/features.d.ts.map +1 -1
  400. package/dist/protocols/protocol-v2/firmware.d.ts +11 -9
  401. package/dist/protocols/protocol-v2/firmware.d.ts.map +1 -1
  402. package/dist/protocols/protocol-v2/index.d.ts +3 -2
  403. package/dist/protocols/protocol-v2/index.d.ts.map +1 -1
  404. package/dist/protocols/protocol-v2/lockedError.d.ts +2 -0
  405. package/dist/protocols/protocol-v2/lockedError.d.ts.map +1 -0
  406. package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts +16 -0
  407. package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts.map +1 -0
  408. package/dist/protocols/protocol-v2/uiInteraction.d.ts +39 -0
  409. package/dist/protocols/protocol-v2/uiInteraction.d.ts.map +1 -0
  410. package/dist/protocols/protocol-v2/unlockPolicy.d.ts +4 -0
  411. package/dist/protocols/protocol-v2/unlockPolicy.d.ts.map +1 -0
  412. package/dist/protocols/protocol-v2/unlockRetry.d.ts +10 -0
  413. package/dist/protocols/protocol-v2/unlockRetry.d.ts.map +1 -0
  414. package/dist/protocols/protocol-v2/walletSession.d.ts +31 -0
  415. package/dist/protocols/protocol-v2/walletSession.d.ts.map +1 -0
  416. package/dist/topLevelInject.d.ts.map +1 -1
  417. package/dist/types/api/checkAllFirmwareRelease.d.ts +5 -2
  418. package/dist/types/api/checkAllFirmwareRelease.d.ts.map +1 -1
  419. package/dist/types/api/deviceSettings.d.ts +11 -2
  420. package/dist/types/api/deviceSettings.d.ts.map +1 -1
  421. package/dist/types/api/deviceUnlock.d.ts +1 -1
  422. package/dist/types/api/deviceUnlock.d.ts.map +1 -1
  423. package/dist/types/api/deviceUpdateBootloader.d.ts +6 -0
  424. package/dist/types/api/deviceUpdateBootloader.d.ts.map +1 -1
  425. package/dist/types/api/export.d.ts +5 -2
  426. package/dist/types/api/export.d.ts.map +1 -1
  427. package/dist/types/api/firmwareUpdate.d.ts +75 -6
  428. package/dist/types/api/firmwareUpdate.d.ts.map +1 -1
  429. package/dist/types/api/firmwareUpdateCapabilities.d.ts +9 -0
  430. package/dist/types/api/firmwareUpdateCapabilities.d.ts.map +1 -0
  431. package/dist/types/api/firmwareUpdatePlan.d.ts +28 -0
  432. package/dist/types/api/firmwareUpdatePlan.d.ts.map +1 -0
  433. package/dist/types/api/firmwareUpdatePreparedPlan.d.ts +42 -0
  434. package/dist/types/api/firmwareUpdatePreparedPlan.d.ts.map +1 -0
  435. package/dist/types/api/getDeviceState.d.ts +12 -0
  436. package/dist/types/api/getDeviceState.d.ts.map +1 -0
  437. package/dist/types/api/getFeatures.d.ts.map +1 -1
  438. package/dist/types/api/getOnekeyFeatures.d.ts.map +1 -1
  439. package/dist/types/api/getPassphraseState.d.ts +2 -10
  440. package/dist/types/api/getPassphraseState.d.ts.map +1 -1
  441. package/dist/types/api/index.d.ts +25 -35
  442. package/dist/types/api/index.d.ts.map +1 -1
  443. package/dist/types/api/kaspaSignTransaction.d.ts +42 -4
  444. package/dist/types/api/kaspaSignTransaction.d.ts.map +1 -1
  445. package/dist/types/api/openWalletSession.d.ts +29 -0
  446. package/dist/types/api/openWalletSession.d.ts.map +1 -0
  447. package/dist/types/api/protocolV2.d.ts +15 -89
  448. package/dist/types/api/protocolV2.d.ts.map +1 -1
  449. package/dist/types/api/sessionCache.d.ts +13 -0
  450. package/dist/types/api/sessionCache.d.ts.map +1 -0
  451. package/dist/types/device.d.ts +122 -6
  452. package/dist/types/device.d.ts.map +1 -1
  453. package/dist/types/params.d.ts +1 -0
  454. package/dist/types/params.d.ts.map +1 -1
  455. package/dist/types/settings.d.ts +34 -2
  456. package/dist/types/settings.d.ts.map +1 -1
  457. package/dist/utils/assets.d.ts +2 -1
  458. package/dist/utils/assets.d.ts.map +1 -1
  459. package/dist/utils/deviceFeaturesCompat.d.ts +13 -0
  460. package/dist/utils/deviceFeaturesCompat.d.ts.map +1 -0
  461. package/dist/utils/deviceFeaturesUtils.d.ts +11 -3
  462. package/dist/utils/deviceFeaturesUtils.d.ts.map +1 -1
  463. package/dist/utils/deviceInfoUtils.d.ts +9 -9
  464. package/dist/utils/deviceInfoUtils.d.ts.map +1 -1
  465. package/dist/utils/deviceSettings.d.ts +38 -7
  466. package/dist/utils/deviceSettings.d.ts.map +1 -1
  467. package/dist/utils/deviceVersionUtils.d.ts +7 -5
  468. package/dist/utils/deviceVersionUtils.d.ts.map +1 -1
  469. package/dist/utils/homescreen.d.ts.map +1 -1
  470. package/dist/utils/index.d.ts +5 -2
  471. package/dist/utils/index.d.ts.map +1 -1
  472. package/dist/utils/networkUtils.d.ts +9 -1
  473. package/dist/utils/networkUtils.d.ts.map +1 -1
  474. package/dist/utils/patch.d.ts +1 -1
  475. package/dist/utils/patch.d.ts.map +1 -1
  476. package/dist/utils/pro2Wallpaper.d.ts +12 -0
  477. package/dist/utils/pro2Wallpaper.d.ts.map +1 -0
  478. package/dist/utils/tracing.d.ts.map +1 -1
  479. package/package.json +4 -4
  480. package/src/api/BaseMethod.ts +52 -17
  481. package/src/api/CheckAllFirmwareRelease.ts +51 -4
  482. package/src/api/CheckBootloaderRelease.ts +1 -2
  483. package/src/api/CheckFirmwareRelease.ts +1 -2
  484. package/src/api/CipherKeyValue.ts +4 -0
  485. package/src/api/ClearSessionCache.ts +32 -0
  486. package/src/api/DirList.ts +9 -4
  487. package/src/api/DirMake.ts +7 -4
  488. package/src/api/DirRemove.ts +7 -4
  489. package/src/api/FileDelete.ts +7 -4
  490. package/src/api/FileRead.ts +27 -8
  491. package/src/api/FileWrite.ts +26 -168
  492. package/src/api/FirmwareUpdate.ts +11 -12
  493. package/src/api/FirmwareUpdateV2.ts +370 -112
  494. package/src/api/FirmwareUpdateV3.ts +261 -67
  495. package/src/api/FirmwareUpdateV4.ts +1687 -397
  496. package/src/api/GetDeviceState.ts +59 -0
  497. package/src/api/GetFeatures.ts +6 -4
  498. package/src/api/GetOnekeyFeatures.ts +1 -75
  499. package/src/api/GetPassphraseState.ts +21 -21
  500. package/src/api/OpenWalletSession.ts +202 -0
  501. package/src/api/PathInfo.ts +9 -4
  502. package/src/api/PromptWebDeviceAccess.ts +2 -3
  503. package/src/api/SearchDevices.ts +29 -4
  504. package/src/api/UploadPortfolio.ts +40 -0
  505. package/src/api/alephium/AlephiumGetAddress.ts +0 -4
  506. package/src/api/alephium/AlephiumSignMessage.ts +0 -4
  507. package/src/api/alephium/AlephiumSignTransaction.ts +2 -6
  508. package/src/api/algo/AlgoGetAddress.ts +4 -0
  509. package/src/api/algo/AlgoSignTransaction.ts +4 -0
  510. package/src/api/allnetwork/AllNetworkGetAddressBase.ts +9 -21
  511. package/src/api/aptos/AptosGetAddress.ts +4 -0
  512. package/src/api/aptos/AptosGetPublicKey.ts +4 -0
  513. package/src/api/aptos/AptosSignInMessage.ts +4 -0
  514. package/src/api/aptos/AptosSignMessage.ts +4 -0
  515. package/src/api/aptos/AptosSignTransaction.ts +4 -0
  516. package/src/api/benfen/BenfenGetAddress.ts +11 -7
  517. package/src/api/benfen/BenfenGetPublicKey.ts +0 -4
  518. package/src/api/benfen/BenfenSignMessage.ts +0 -4
  519. package/src/api/benfen/BenfenSignTransaction.ts +0 -4
  520. package/src/api/btc/BTCGetAddress.ts +8 -1
  521. package/src/api/btc/BTCGetPublicKey.ts +9 -2
  522. package/src/api/btc/BTCSignMessage.ts +8 -1
  523. package/src/api/btc/BTCSignPsbt.ts +4 -0
  524. package/src/api/btc/BTCSignTransaction.ts +8 -1
  525. package/src/api/btc/BTCVerifyMessage.ts +8 -1
  526. package/src/api/btc/helpers/versionLimit.ts +7 -4
  527. package/src/api/cardano/CardanoGetAddress.ts +4 -0
  528. package/src/api/cardano/CardanoGetPublicKey.ts +4 -0
  529. package/src/api/cardano/CardanoSignMessage.ts +5 -1
  530. package/src/api/cardano/CardanoSignTransaction.ts +5 -1
  531. package/src/api/conflux/ConfluxGetAddress.ts +6 -0
  532. package/src/api/conflux/ConfluxSignMessage.ts +6 -0
  533. package/src/api/conflux/ConfluxSignMessageCIP23.ts +6 -0
  534. package/src/api/conflux/ConfluxSignTransaction.ts +8 -5
  535. package/src/api/cosmos/CosmosGetAddress.ts +4 -0
  536. package/src/api/cosmos/CosmosGetPublicKey.ts +4 -0
  537. package/src/api/cosmos/CosmosSignTransaction.ts +4 -0
  538. package/src/api/device/DeviceCancel.ts +5 -0
  539. package/src/api/device/DeviceChangePin.ts +28 -0
  540. package/src/api/device/DeviceFullyUploadResource.ts +4 -5
  541. package/src/api/device/DeviceLock.ts +5 -0
  542. package/src/api/device/DeviceRebootToBoardloader.ts +9 -4
  543. package/src/api/device/DeviceRebootToBootloader.ts +9 -4
  544. package/src/api/device/DeviceSettings.ts +187 -1
  545. package/src/api/device/DeviceSupportFeatures.ts +4 -0
  546. package/src/api/device/DeviceUnlock.ts +13 -0
  547. package/src/api/device/DeviceUpdateBootloader.ts +123 -8
  548. package/src/api/device/DeviceWipe.ts +25 -0
  549. package/src/api/device/PreInitialize.ts +4 -0
  550. package/src/api/dynex/DnxGetAddress.ts +0 -6
  551. package/src/api/dynex/DnxSignTransaction.ts +0 -6
  552. package/src/api/evm/EVMGetAddress.ts +4 -0
  553. package/src/api/evm/EVMGetPublicKey.ts +4 -0
  554. package/src/api/evm/EVMSignMessage.ts +4 -0
  555. package/src/api/evm/EVMSignMessageEIP712.ts +1 -11
  556. package/src/api/evm/EVMSignTransaction.ts +4 -0
  557. package/src/api/evm/EVMSignTypedData.ts +7 -5
  558. package/src/api/evm/EVMVerifyMessage.ts +4 -0
  559. package/src/api/evm/legacyV1/getAddress.ts +2 -2
  560. package/src/api/evm/legacyV1/getPublicKey.ts +2 -2
  561. package/src/api/evm/legacyV1/signMessage.ts +2 -2
  562. package/src/api/evm/legacyV1/signTypedData.ts +2 -2
  563. package/src/api/evm/legacyV1/signTypedHash.ts +2 -2
  564. package/src/api/evm/legacyV1/verifyMessage.ts +2 -2
  565. package/src/api/filecoin/FilecoinGetAddress.ts +4 -0
  566. package/src/api/filecoin/FilecoinSignTransaction.ts +4 -0
  567. package/src/api/firmware/FirmwareArtifactSource.ts +278 -0
  568. package/src/api/firmware/FirmwareHostBinding.ts +100 -0
  569. package/src/api/firmware/FirmwarePreparationError.ts +12 -0
  570. package/src/api/firmware/FirmwareUpdateBaseMethod.ts +71 -7
  571. package/src/api/firmware/FirmwareUpdateCapabilities.ts +9 -0
  572. package/src/api/firmware/FirmwareUpdatePlan.ts +745 -0
  573. package/src/api/firmware/FirmwareUpdatePreparedPlan.ts +392 -0
  574. package/src/api/firmware/getBinary.ts +8 -3
  575. package/src/api/firmware/progressThrottle.ts +44 -0
  576. package/src/api/firmware/updateBootloader.ts +19 -4
  577. package/src/api/firmware/uploadFirmware.ts +140 -22
  578. package/src/api/helpers/batchGetPublickeys.ts +2 -2
  579. package/src/api/helpers/filesystemValidation.ts +61 -0
  580. package/src/api/helpers/paramsValidator.ts +1 -1
  581. package/src/api/helpers/protocolV2FileWrite.ts +199 -0
  582. package/src/api/index.ts +7 -30
  583. package/src/api/kaspa/KaspaGetAddress.ts +7 -0
  584. package/src/api/kaspa/KaspaSignTransaction.ts +373 -29
  585. package/src/api/kaspa/helpers/TransferSerialize.ts +17 -7
  586. package/src/api/lightning/LnurlAuth.ts +0 -4
  587. package/src/api/near/NearGetAddress.ts +4 -0
  588. package/src/api/near/NearSignTransaction.ts +4 -0
  589. package/src/api/nem/NEMGetAddress.ts +4 -0
  590. package/src/api/nem/NEMSignTransaction.ts +4 -0
  591. package/src/api/neo/NeoGetAddress.ts +0 -4
  592. package/src/api/neo/NeoSignTransaction.ts +0 -4
  593. package/src/api/nervos/NervosGetAddress.ts +0 -4
  594. package/src/api/nervos/NervosSignTransaction.ts +2 -6
  595. package/src/api/nexa/NexaGetAddress.ts +0 -4
  596. package/src/api/nexa/NexaSignTransaction.ts +3 -5
  597. package/src/api/nostr/NostrDecryptMessage.ts +4 -0
  598. package/src/api/nostr/NostrEncryptMessage.ts +4 -0
  599. package/src/api/nostr/NostrGetPublicKey.ts +4 -0
  600. package/src/api/nostr/NostrSignEvent.ts +4 -0
  601. package/src/api/nostr/NostrSignSchnorr.ts +4 -0
  602. package/src/api/polkadot/PolkadotGetAddress.ts +4 -0
  603. package/src/api/polkadot/PolkadotSignTransaction.ts +4 -0
  604. package/src/api/protocol-v2/{FactoryGetDeviceInfo.ts → DeviceFactoryInfoGet.ts} +8 -5
  605. package/src/api/protocol-v2/DeviceFactoryInfoSet.ts +35 -0
  606. package/src/api/protocol-v2/DeviceFirmwareUpdate.ts +11 -10
  607. package/src/api/protocol-v2/DeviceGetFirmwareUpdateStatus.ts +45 -7
  608. package/src/api/protocol-v2/DeviceGetOnboardingStatus.ts +10 -5
  609. package/src/api/protocol-v2/DeviceInfoGet.ts +141 -0
  610. package/src/api/protocol-v2/DeviceReboot.ts +8 -4
  611. package/src/api/protocol-v2/DeviceStatusGet.ts +19 -0
  612. package/src/api/protocol-v2/DeviceUploadWallpaper.ts +134 -0
  613. package/src/api/protocol-v2/FilesystemFormat.ts +9 -3
  614. package/src/api/protocol-v2/{FilesystemFixPermission.ts → FilesystemPermissionFix.ts} +7 -4
  615. package/src/api/protocol-v2/Ping.ts +37 -3
  616. package/src/api/protocol-v2/ProtocolInfoRequest.ts +19 -0
  617. package/src/api/protocol-v2/helpers.ts +71 -50
  618. package/src/api/scdo/ScdoGetAddress.ts +0 -4
  619. package/src/api/scdo/ScdoSignMessage.ts +0 -4
  620. package/src/api/scdo/ScdoSignTransaction.ts +0 -4
  621. package/src/api/solana/SolGetAddress.ts +4 -0
  622. package/src/api/solana/SolSignMessage.ts +4 -0
  623. package/src/api/solana/SolSignOffchainMessage.ts +4 -0
  624. package/src/api/solana/SolSignTransaction.ts +4 -0
  625. package/src/api/starcoin/StarcoinGetAddress.ts +4 -0
  626. package/src/api/starcoin/StarcoinGetPublicKey.ts +4 -0
  627. package/src/api/starcoin/StarcoinSignMessage.ts +4 -0
  628. package/src/api/starcoin/StarcoinSignTransaction.ts +4 -0
  629. package/src/api/starcoin/StarcoinVerifyMessage.ts +4 -0
  630. package/src/api/stellar/StellarGetAddress.ts +1 -10
  631. package/src/api/stellar/StellarSignTransaction.ts +1 -14
  632. package/src/api/sui/SuiGetAddress.ts +4 -0
  633. package/src/api/sui/SuiGetPublicKey.ts +4 -0
  634. package/src/api/sui/SuiSignMessage.ts +4 -0
  635. package/src/api/sui/SuiSignTransaction.ts +4 -0
  636. package/src/api/ton/TonGetAddress.ts +4 -0
  637. package/src/api/ton/TonSignData.ts +6 -6
  638. package/src/api/ton/TonSignMessage.ts +4 -0
  639. package/src/api/ton/TonSignProof.ts +4 -0
  640. package/src/api/tron/TronGetAddress.ts +4 -0
  641. package/src/api/tron/TronSignMessage.ts +18 -7
  642. package/src/api/tron/TronSignTransaction.ts +4 -0
  643. package/src/api/utils.ts +7 -3
  644. package/src/api/xrp/XrpGetAddress.ts +4 -0
  645. package/src/api/xrp/XrpSignTransaction.ts +5 -1
  646. package/src/constants/index.ts +1 -4
  647. package/src/core/RequestQueue.ts +1 -0
  648. package/src/core/deviceEventRegistration.ts +23 -0
  649. package/src/core/index.ts +181 -58
  650. package/src/data/messages/messages-protocol-v2.json +796 -620
  651. package/src/data/messages/messages.json +286 -1
  652. package/src/data-manager/DataManager.ts +45 -38
  653. package/src/data-manager/TransportManager.ts +1 -1
  654. package/src/data-manager/connectSettings.ts +13 -4
  655. package/src/device/Device.ts +573 -278
  656. package/src/device/DeviceCommands.ts +154 -156
  657. package/src/device/DeviceFeaturesState.ts +25 -0
  658. package/src/device/DevicePool.ts +61 -13
  659. package/src/device/DeviceStateMapper.ts +366 -0
  660. package/src/device/DeviceStateProjector.ts +101 -0
  661. package/src/device/DeviceStateStore.ts +201 -0
  662. package/src/device/DeviceWalletSessionStore.ts +105 -0
  663. package/src/device/cloneDeviceState.ts +39 -0
  664. package/src/device/deviceIdentity.ts +18 -0
  665. package/src/deviceProfile/buildDeviceFeatures.ts +234 -210
  666. package/src/deviceProfile/index.ts +0 -1
  667. package/src/events/device.ts +18 -1
  668. package/src/events/logBlockEvent.ts +1 -7
  669. package/src/events/ui-request.ts +25 -2
  670. package/src/index.ts +5 -0
  671. package/src/inject.ts +35 -47
  672. package/src/lowLevelInject.ts +5 -1
  673. package/src/protocols/protocol-v2/deviceSession.ts +24 -0
  674. package/src/protocols/protocol-v2/features.ts +68 -83
  675. package/src/protocols/protocol-v2/firmware.ts +12 -36
  676. package/src/protocols/protocol-v2/index.ts +3 -1
  677. package/src/protocols/protocol-v2/lockedError.ts +10 -0
  678. package/src/protocols/protocol-v2/settingsUnlockPolicy.ts +60 -0
  679. package/src/protocols/protocol-v2/uiInteraction.ts +210 -0
  680. package/src/protocols/protocol-v2/unlockPolicy.ts +105 -0
  681. package/src/protocols/protocol-v2/unlockRetry.ts +98 -0
  682. package/src/protocols/protocol-v2/walletSession.ts +202 -0
  683. package/src/topLevelInject.ts +5 -1
  684. package/src/types/api/checkAllFirmwareRelease.ts +5 -2
  685. package/src/types/api/deviceSettings.ts +26 -2
  686. package/src/types/api/deviceUnlock.ts +1 -1
  687. package/src/types/api/deviceUpdateBootloader.ts +6 -0
  688. package/src/types/api/export.ts +21 -0
  689. package/src/types/api/firmwareUpdate.ts +103 -19
  690. package/src/types/api/firmwareUpdateCapabilities.ts +9 -0
  691. package/src/types/api/firmwareUpdatePlan.ts +38 -0
  692. package/src/types/api/firmwareUpdatePreparedPlan.ts +53 -0
  693. package/src/types/api/getDeviceState.ts +19 -0
  694. package/src/types/api/getFeatures.ts +3 -0
  695. package/src/types/api/getOnekeyFeatures.ts +3 -0
  696. package/src/types/api/getPassphraseState.ts +9 -11
  697. package/src/types/api/index.ts +33 -73
  698. package/src/types/api/kaspaSignTransaction.ts +60 -4
  699. package/src/types/api/openWalletSession.ts +45 -0
  700. package/src/types/api/protocolV2.ts +23 -162
  701. package/src/types/api/sessionCache.ts +19 -0
  702. package/src/types/device.ts +172 -5
  703. package/src/types/params.ts +4 -0
  704. package/src/types/settings.ts +55 -35
  705. package/src/utils/assets.ts +4 -1
  706. package/src/utils/deviceFeaturesCompat.ts +173 -0
  707. package/src/utils/deviceFeaturesUtils.ts +66 -24
  708. package/src/utils/deviceInfoUtils.ts +27 -69
  709. package/src/utils/deviceSettings.ts +171 -39
  710. package/src/utils/deviceVersionUtils.ts +25 -44
  711. package/src/utils/findDefectiveBatchDevice.ts +3 -3
  712. package/src/utils/homescreen.ts +10 -0
  713. package/src/utils/index.ts +21 -2
  714. package/src/utils/networkUtils.ts +270 -14
  715. package/src/utils/pro2Wallpaper.ts +109 -0
  716. package/src/utils/tracing.ts +3 -1
  717. package/tsconfig.type-tests.json +8 -0
  718. package/dist/api/GetDeviceInfo.d.ts +0 -9
  719. package/dist/api/GetDeviceInfo.d.ts.map +0 -1
  720. package/dist/api/protocol-v2/DevReboot.d.ts +0 -7
  721. package/dist/api/protocol-v2/DevReboot.d.ts.map +0 -1
  722. package/dist/api/protocol-v2/DeviceGetDeviceInfo.d.ts +0 -29
  723. package/dist/api/protocol-v2/DeviceGetDeviceInfo.d.ts.map +0 -1
  724. package/dist/api/protocol-v2/FactoryDeviceInfoSettings.d.ts +0 -7
  725. package/dist/api/protocol-v2/FactoryDeviceInfoSettings.d.ts.map +0 -1
  726. package/dist/api/protocol-v2/FactoryGetDeviceInfo.d.ts +0 -6
  727. package/dist/api/protocol-v2/FactoryGetDeviceInfo.d.ts.map +0 -1
  728. package/dist/api/protocol-v2/FilesystemDiskControl.d.ts +0 -13
  729. package/dist/api/protocol-v2/FilesystemDiskControl.d.ts.map +0 -1
  730. package/dist/api/protocol-v2/FilesystemFixPermission.d.ts +0 -6
  731. package/dist/api/protocol-v2/FilesystemFixPermission.d.ts.map +0 -1
  732. package/dist/api/protocol-v2/GetProtoVersion.d.ts +0 -6
  733. package/dist/api/protocol-v2/GetProtoVersion.d.ts.map +0 -1
  734. package/dist/deviceProfile/buildDeviceProfile.d.ts +0 -21
  735. package/dist/deviceProfile/buildDeviceProfile.d.ts.map +0 -1
  736. package/dist/types/api/getDeviceInfo.d.ts +0 -85
  737. package/dist/types/api/getDeviceInfo.d.ts.map +0 -1
  738. package/src/api/GetDeviceInfo.ts +0 -145
  739. package/src/api/protocol-v2/DevReboot.ts +0 -24
  740. package/src/api/protocol-v2/DeviceGetDeviceInfo.ts +0 -118
  741. package/src/api/protocol-v2/FactoryDeviceInfoSettings.ts +0 -29
  742. package/src/api/protocol-v2/FilesystemDiskControl.ts +0 -50
  743. package/src/api/protocol-v2/GetProtoVersion.ts +0 -16
  744. package/src/deviceProfile/buildDeviceProfile.ts +0 -333
  745. package/src/types/api/getDeviceInfo.ts +0 -99
@@ -6,11 +6,16 @@ import { validatePath } from '../helpers/pathUtils';
6
6
  import { BaseMethod } from '../BaseMethod';
7
7
  import { validateParams } from '../helpers/paramsValidator';
8
8
  import { stripHexPrefix } from '../helpers/hexUtils';
9
- import { getFirmwareType } from '../../utils';
10
9
 
11
10
  import type { TronSignMessage as HardwareTronSignMessage } from '@onekeyfe/hd-transport';
12
11
 
13
12
  export default class TronSignMessage extends BaseMethod<HardwareTronSignMessage> {
13
+ private isLegacyMessageType = false;
14
+
15
+ getSupportedProtocols() {
16
+ return ['V1', 'V2'] as const;
17
+ }
18
+
14
19
  init() {
15
20
  this.checkDeviceId = true;
16
21
  this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.NOT_INITIALIZE];
@@ -26,12 +31,8 @@ export default class TronSignMessage extends BaseMethod<HardwareTronSignMessage>
26
31
  const { path, messageHex } = this.payload;
27
32
  const addressN = validatePath(path, 3);
28
33
 
29
- if (this.payload.messageType === 'V1' || this.payload.messageType == null) {
30
- throw createDeviceNotSupportMethodError(
31
- 'TronSignMessage',
32
- getFirmwareType(this.device?.features)
33
- );
34
- }
34
+ this.isLegacyMessageType =
35
+ this.payload.messageType === 'V1' || this.payload.messageType == null;
35
36
 
36
37
  const messageType = TronMessageType.V2;
37
38
 
@@ -56,6 +57,9 @@ export default class TronSignMessage extends BaseMethod<HardwareTronSignMessage>
56
57
 
57
58
  getMessageV2VersionRange() {
58
59
  return {
60
+ pro2: {
61
+ min: '0.0.0',
62
+ },
59
63
  pro: {
60
64
  min: '4.16.0',
61
65
  },
@@ -72,6 +76,13 @@ export default class TronSignMessage extends BaseMethod<HardwareTronSignMessage>
72
76
  }
73
77
 
74
78
  async run() {
79
+ if (this.isLegacyMessageType) {
80
+ throw createDeviceNotSupportMethodError(
81
+ 'TronSignMessage',
82
+ this.device.getCurrentFirmwareType()
83
+ );
84
+ }
85
+
75
86
  this.checkFeatureVersionLimit(
76
87
  () => this.params.message_type === TronMessageType.V2,
77
88
  () => this.getMessageV2VersionRange(),
@@ -11,6 +11,10 @@ import type { TronSignTx } from '@onekeyfe/hd-transport';
11
11
  import type { DeviceFirmwareRange } from '../../types';
12
12
 
13
13
  export default class TronSignTransaction extends BaseMethod<TronSignTx> {
14
+ getSupportedProtocols() {
15
+ return ['V1', 'V2'] as const;
16
+ }
17
+
14
18
  parseTx(tx: TronTransaction, address_n: number[]): TronSignTx {
15
19
  const unSignTx = {
16
20
  address_n,
package/src/api/utils.ts CHANGED
@@ -2,16 +2,20 @@ import { ERRORS, HardwareErrorCode } from '@onekeyfe/hd-shared';
2
2
 
3
3
  import * as ApiMethods from './index';
4
4
 
5
+ import type { BaseMethod } from './BaseMethod';
5
6
  import type { IFrameCallMessage } from '../events';
6
7
 
7
- export function findMethod(message: IFrameCallMessage & { id?: number }) {
8
+ type MethodConstructor = new (message: IFrameCallMessage & { id?: number }) => BaseMethod<any>;
9
+
10
+ const publicMethodRegistry = ApiMethods as unknown as Record<string, MethodConstructor>;
11
+
12
+ export function findMethod(message: IFrameCallMessage & { id?: number }): BaseMethod<any> {
8
13
  const { method } = message.payload;
9
14
  if (typeof method !== 'string') {
10
15
  throw ERRORS.TypedError(HardwareErrorCode.CallMethodInvalidParameter, 'Method is not set');
11
16
  }
12
17
 
13
- // @ts-expect-error
14
- const MethodConstructor = ApiMethods[method];
18
+ const MethodConstructor = publicMethodRegistry[method];
15
19
  if (MethodConstructor) {
16
20
  return new MethodConstructor(message);
17
21
  }
@@ -11,6 +11,10 @@ export default class XrpGetAddress extends BaseMethod<
11
11
  show_display: boolean;
12
12
  }[]
13
13
  > {
14
+ getSupportedProtocols() {
15
+ return ['V1', 'V2'] as const;
16
+ }
17
+
14
18
  hasBundle = false;
15
19
 
16
20
  shouldConfirm = false;
@@ -6,6 +6,10 @@ import { validatePath } from '../helpers/pathUtils';
6
6
  import type { XrpSignTransactionParams } from '../../types/api/xrpSignTransaction';
7
7
 
8
8
  export default class XrpGetAddress extends BaseMethod<XrpSignTransactionParams> {
9
+ getSupportedProtocols() {
10
+ return ['V1', 'V2'] as const;
11
+ }
12
+
9
13
  hasBundle = false;
10
14
 
11
15
  init() {
@@ -30,7 +34,7 @@ export default class XrpGetAddress extends BaseMethod<XrpSignTransactionParams>
30
34
  { name: 'payment', type: 'object' },
31
35
  ]);
32
36
  validateParams(transaction.payment, [
33
- { name: 'amount', type: 'uint', required: true },
37
+ { name: 'amount', type: 'number', required: true },
34
38
  { name: 'destination', type: 'string', required: true },
35
39
  { name: 'destinationTag', type: 'number' },
36
40
  ]);
@@ -5,7 +5,4 @@ export {
5
5
  TonSignDataType,
6
6
  TonWalletVersion,
7
7
  } from '@onekeyfe/hd-transport';
8
- export type {
9
- HDNodeType,
10
- Success as DeviceSuccess,
11
- } from '@onekeyfe/hd-transport';
8
+ export type { HDNodeType, Success as DeviceSuccess } from '@onekeyfe/hd-transport';
@@ -30,6 +30,7 @@ export default class RequestQueue {
30
30
  method.responseID = requestId;
31
31
  }
32
32
  const abortController = new AbortController();
33
+ method.abortSignal = abortController.signal;
33
34
  const task = { id: requestId, method, abortController };
34
35
  this.requestQueue.set(requestId, task);
35
36
  return task;
@@ -0,0 +1,23 @@
1
+ import { DEVICE } from '../events';
2
+
3
+ import type { Device, DeviceEvents } from '../device/Device';
4
+
5
+ export type HardwareUiEventHandlers = {
6
+ pin: (...event: DeviceEvents[typeof DEVICE.PIN]) => void;
7
+ button: (...event: DeviceEvents[typeof DEVICE.BUTTON]) => void;
8
+ passphrase: (...event: DeviceEvents[typeof DEVICE.PASSPHRASE]) => void;
9
+ passphraseOnDevice: (...event: DeviceEvents[typeof DEVICE.PASSPHRASE_ON_DEVICE]) => void;
10
+ attachPinOnDevice: (...event: DeviceEvents[typeof DEVICE.ATTACH_PIN_ON_DEVICE]) => void;
11
+ };
12
+
13
+ export function registerHardwareUiEventListeners(
14
+ device: Pick<Device, 'on'>,
15
+ handlers: HardwareUiEventHandlers
16
+ ) {
17
+ device.on(DEVICE.PIN, handlers.pin);
18
+ device.on(DEVICE.BUTTON, handlers.button);
19
+ device.on(DEVICE.PASSPHRASE, handlers.passphrase);
20
+ device.on(DEVICE.PASSPHRASE_ON_DEVICE, handlers.passphraseOnDevice);
21
+ device.on(DEVICE.ATTACH_PIN_ON_DEVICE, handlers.attachPinOnDevice);
22
+ return true;
23
+ }
package/src/core/index.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import semver from 'semver';
2
2
  import EventEmitter from 'events';
3
+ import { TRANSPORT_EVENT } from '@onekeyfe/hd-transport';
3
4
  import {
4
5
  ERRORS,
5
6
  ERROR_CODES_REQUIRE_RELEASE,
@@ -14,14 +15,7 @@ import {
14
15
  createNewFirmwareUnReleaseHardwareError,
15
16
  } from '@onekeyfe/hd-shared';
16
17
 
17
- import {
18
- LoggerNames,
19
- enableLog,
20
- getLogger,
21
- isMethodVersionRangeUnsupported,
22
- setLoggerPostMessage,
23
- wait,
24
- } from '../utils';
18
+ import { LoggerNames, enableLog, getLogger, setLoggerPostMessage, wait } from '../utils';
25
19
  import {
26
20
  findDefectiveBatchDevice,
27
21
  getDefectiveDeviceInfo,
@@ -36,6 +30,7 @@ import {
36
30
  updateRequestContext,
37
31
  } from '../utils/tracing';
38
32
  import { Device } from '../device/Device';
33
+ import { checkLiveDeviceId } from '../device/deviceIdentity';
39
34
  import { DeviceList } from '../device/DeviceList';
40
35
  import { DevicePool } from '../device/DevicePool';
41
36
  import { PollingStateManager } from './PollingStateManager';
@@ -51,19 +46,29 @@ import {
51
46
  createDeviceMessage,
52
47
  createResponseMessage,
53
48
  createUiMessage,
49
+ getLogBlockLabel,
54
50
  } from '../events';
55
51
  import TransportManager from '../data-manager/TransportManager';
56
52
  import DeviceConnector from '../device/DeviceConnector';
57
53
  import RequestQueue from './RequestQueue';
54
+ import { registerHardwareUiEventListeners } from './deviceEventRegistration';
58
55
  import { getSynchronize } from '../utils/getSynchronize';
59
- import { setProtocolV2DeviceInfoMock } from '../protocols/protocol-v2/features';
56
+ import { runMethodWithUnlockRetry } from '../protocols/protocol-v2/unlockRetry';
57
+ import {
58
+ ProtocolV2UiInteractionCoordinator,
59
+ isProtocolV2UiEnabled,
60
+ } from '../protocols/protocol-v2/uiInteraction';
60
61
 
61
62
  import type { ConnectSettings, Features, KnownDevice } from '../types';
62
63
  import type { CoreMessage, IFrameCallMessage, UiPromise, UiPromiseResponse } from '../events';
63
64
  import type { DeviceEvents, InitOptions, RunOptions } from '../device/Device';
64
65
  import type { SdkTracingContext } from '../utils/tracing';
65
66
  import type { Deferred } from '@onekeyfe/hd-shared';
66
- import type { LowlevelTransportSharedPlugin, OneKeyDeviceInfo } from '@onekeyfe/hd-transport';
67
+ import type {
68
+ LowlevelTransportSharedPlugin,
69
+ OneKeyDeviceInfo,
70
+ TransportDeviceDisconnectEvent,
71
+ } from '@onekeyfe/hd-transport';
67
72
  import type { BaseMethod } from '../api/BaseMethod';
68
73
 
69
74
  const Log = getLogger(LoggerNames.Core);
@@ -92,13 +97,14 @@ function hasDeriveCardano(method: BaseMethod): boolean {
92
97
 
93
98
  const parseInitOptions = (method?: BaseMethod): InitOptions => ({
94
99
  initSession: method?.payload.initSession,
95
- passphraseState: method?.payload.passphraseState,
100
+ passphraseState: method?.payload.useEmptyPassphrase ? undefined : method?.payload.passphraseState,
96
101
  deviceId: method?.payload.deviceId,
97
102
  deriveCardano: method && hasDeriveCardano(method),
98
103
  connectProtocol: method?.payload.connectProtocol,
104
+ protocolV2DeviceInfoTimeoutMs: method?.payload.protocolV2DeviceInfoTimeoutMs,
99
105
  });
100
106
 
101
- let _core: Core;
107
+ let _core: Core | undefined;
102
108
  let _deviceList: DeviceList | undefined;
103
109
  let _connector: DeviceConnector | undefined;
104
110
  let _uiPromises: UiPromise<UiPromiseResponse['type']>[] = []; // Waiting for ui response
@@ -142,7 +148,7 @@ export const callAPI = async (context: CoreContext, message: CoreMessage) => {
142
148
  }
143
149
 
144
150
  // find api method
145
- let method: BaseMethod;
151
+ let method!: BaseMethod;
146
152
  try {
147
153
  method = findMethod(message as IFrameCallMessage);
148
154
  method.connector = _connector;
@@ -158,11 +164,13 @@ export const callAPI = async (context: CoreContext, message: CoreMessage) => {
158
164
 
159
165
  method.init();
160
166
  } catch (error) {
161
- return Promise.reject(error);
167
+ if (method) {
168
+ completeMethodRequestContext(method, error);
169
+ method.dispose();
170
+ }
171
+ return createResponseMessage(method?.responseID ?? message.id, false, { error });
162
172
  }
163
173
 
164
- DevicePool.emitter.on(DEVICE.CONNECT, onDeviceConnectHandler);
165
-
166
174
  if (!method.useDevice) {
167
175
  updateMethodRequestContext(method, { status: 'running' });
168
176
  try {
@@ -223,9 +231,15 @@ const handlePreWarmSignal = async (
223
231
  message: CoreMessage,
224
232
  method: BaseMethod
225
233
  ): Promise<any> => {
234
+ const createAckResponse = () => {
235
+ completeMethodRequestContext(method);
236
+ method.dispose();
237
+ return createResponseMessage(method.responseID, true, true);
238
+ };
239
+
226
240
  // no connectId: can't target a device safely, skip pre-warm (ack only)
227
241
  if (!method.connectId) {
228
- return createResponseMessage(method.responseID, true, true);
242
+ return createAckResponse();
229
243
  }
230
244
 
231
245
  const key = method.getPreWarmKey();
@@ -238,12 +252,12 @@ const handlePreWarmSignal = async (
238
252
  } catch {
239
253
  // pre-warm is best-effort; ignore its failure for the coalesced caller
240
254
  }
241
- return createResponseMessage(method.responseID, true, true);
255
+ return createAckResponse();
242
256
  }
243
257
 
244
258
  const doneAt = preWarmDoneAt.get(key);
245
259
  if (typeof doneAt === 'number' && Date.now() - doneAt <= method.preWarmTtl) {
246
- return createResponseMessage(method.responseID, true, true);
260
+ return createAckResponse();
247
261
  }
248
262
 
249
263
  const run = onCallDevice(context, message, method);
@@ -351,7 +365,7 @@ const onCallDevice = async (
351
365
  );
352
366
  } catch (e) {
353
367
  preWarmCallbackTask?.resolve();
354
- console.log('ensureConnected error: ', e);
368
+ Log.debug('ensureConnected error: ', e);
355
369
 
356
370
  completeMethodRequestContext(method, e);
357
371
 
@@ -388,18 +402,23 @@ const onCallDevice = async (
388
402
  );
389
403
  }
390
404
 
391
- device.on(DEVICE.PIN, onDevicePinHandler);
392
- device.on(DEVICE.BUTTON, onDeviceButtonHandler);
393
- device.on(
394
- DEVICE.PASSPHRASE,
395
- message.payload.useEmptyPassphrase ? onEmptyPassphraseHandler : onDevicePassphraseHandler
396
- );
397
- device.on(DEVICE.PASSPHRASE_ON_DEVICE, onEnterPassphraseOnDeviceHandler);
405
+ registerHardwareUiEventListeners(device, {
406
+ pin: onDevicePinHandler,
407
+ button: onDeviceButtonHandler,
408
+ passphrase: message.payload.useEmptyPassphrase
409
+ ? onEmptyPassphraseHandler
410
+ : onDevicePassphraseHandler,
411
+ passphraseOnDevice: onEnterPassphraseOnDeviceHandler,
412
+ attachPinOnDevice: onEnterAttachPinOnDeviceHandler,
413
+ });
398
414
  device.on(DEVICE.FEATURES, onDeviceFeaturesHandler);
415
+ device.on(DEVICE.STATE, onDeviceStateHandler);
399
416
  device.on(
400
417
  DEVICE.SELECT_DEVICE_IN_BOOTLOADER_FOR_WEB_DEVICE,
401
418
  onSelectDeviceInBootloaderForWebDeviceHandler
402
419
  );
420
+
421
+ const protocolV2UiCoordinator = new ProtocolV2UiInteractionCoordinator(device, postMessage);
403
422
  device.on(
404
423
  DEVICE.SELECT_DEVICE_FOR_SWITCH_FIRMWARE_WEB_DEVICE,
405
424
  onSelectDeviceForSwitchFirmwareWebDeviceHandler
@@ -414,11 +433,9 @@ const onCallDevice = async (
414
433
  await waitForPendingPromise(getPrePendingCallPromise, setPrePendingCallPromise);
415
434
 
416
435
  const inner = async (): Promise<void> => {
417
- // Protocol V2 专属方法统一守卫:协议在 acquire/initialize 后已确定,
418
- // V2 设备直接抛出明确的 NotSupport 错误(见 BaseMethod.requireProtocolV2)。
419
- if (method.requireProtocolV2 && !device.isProtocolV2()) {
420
- throw createDeviceNotSupportMethodError(method.name, device.getCurrentFirmwareType());
421
- }
436
+ // Protocol is established from an active device response during acquire/initialize.
437
+ // Reject unsupported methods before any method-specific device command is sent.
438
+ method.assertProtocolSupported(device.getProtocol(), device.getCurrentFirmwareType());
422
439
 
423
440
  // check firmware version
424
441
  const versionRange = device.getCurrentMethodVersionRange(
@@ -429,8 +446,8 @@ const onCallDevice = async (
429
446
  const deviceFirmwareType = device.getCurrentFirmwareType();
430
447
  let newVersionStatus: ReturnType<typeof DataManager.getFirmwareStatus> | undefined;
431
448
 
432
- // 故障批次检测与远端强制升级门禁基于 V1 features/remote config
433
- // Pro2(V2) 暂不参与:profile 版的 firmwareStatus 需要 DataManager 支持后再接入。
449
+ // Defective-batch and forced-update gates depend on V1 features/remote config.
450
+ // Pro2 joins after DataManager supports its profile firmwareStatus.
434
451
  if (device.features && !device.isProtocolV2()) {
435
452
  await DataManager.checkAndReloadData();
436
453
 
@@ -478,10 +495,6 @@ const onCallDevice = async (
478
495
  }
479
496
  }
480
497
 
481
- if (isMethodVersionRangeUnsupported(versionRange)) {
482
- throw createDeviceNotSupportMethodError(method.name, deviceFirmwareType);
483
- }
484
-
485
498
  if (versionRange) {
486
499
  if (semver.valid(versionRange.min) && semver.lt(currentFirmwareVersion, versionRange.min)) {
487
500
  if (newVersionStatus === 'none' || newVersionStatus === 'valid') {
@@ -533,7 +546,7 @@ const onCallDevice = async (
533
546
  }
534
547
 
535
548
  if (method.deviceId && method.checkDeviceId) {
536
- const isSameDeviceID = device.checkDeviceId(method.deviceId);
549
+ const isSameDeviceID = await checkLiveDeviceId(device, method.deviceId);
537
550
  if (!isSameDeviceID) {
538
551
  return Promise.reject(ERRORS.TypedError(HardwareErrorCode.DeviceCheckDeviceIdError));
539
552
  }
@@ -610,7 +623,11 @@ const onCallDevice = async (
610
623
  method.device?.commands?.checkDisposed();
611
624
 
612
625
  try {
613
- const response: object = await method.run();
626
+ const response: object = await runMethodWithUnlockRetry(
627
+ method,
628
+ device,
629
+ protocolV2UiCoordinator
630
+ );
614
631
  messageResponse = createResponseMessage(method.responseID, true, response);
615
632
  requestQueue.resolveRequest(method.responseID, messageResponse);
616
633
  completeMethodRequestContext(method);
@@ -627,6 +644,8 @@ const onCallDevice = async (
627
644
  ) {
628
645
  throw error;
629
646
  }
647
+ } finally {
648
+ protocolV2UiCoordinator.close();
630
649
  }
631
650
  };
632
651
  Log.debug('Call API - Device Run: ', device.mainId);
@@ -680,7 +699,9 @@ const onCallDevice = async (
680
699
 
681
700
  requestQueue.releaseTask(method.responseID);
682
701
 
683
- closePopup();
702
+ if (isProtocolV2UiEnabled(method)) {
703
+ closePopup();
704
+ }
684
705
 
685
706
  cleanup();
686
707
 
@@ -732,6 +753,15 @@ function initDevice(method: BaseMethod) {
732
753
 
733
754
  if (method.connectId) {
734
755
  device = _deviceList.getDevice(method.connectId);
756
+ if (!device && method.name === 'firmwareUpdateV4' && allDevices.length === 1) {
757
+ const [singleDevice] = allDevices;
758
+ if (singleDevice.isBootloader()) {
759
+ Log.debug(
760
+ 'firmwareUpdateV4 uses the only bootloader device when connectId changed after reboot'
761
+ );
762
+ device = singleDevice;
763
+ }
764
+ }
735
765
  } else if (allDevices.length === 1) {
736
766
  [device] = allDevices;
737
767
  } else if (allDevices.length > 1) {
@@ -833,8 +863,15 @@ function isRetryableBleProtocolV2ProbeError(method: BaseMethod, error: unknown)
833
863
  */
834
864
  async function connectDeviceForBle(method: BaseMethod, device: Device, retryCount = 0) {
835
865
  try {
836
- await device.acquire(method.payload.connectProtocol);
866
+ const shouldAcquire =
867
+ !device.hasDeviceAcquire() || !device.commands || device.commands.disposed;
868
+ if (shouldAcquire) {
869
+ await device.acquire(method.payload.connectProtocol);
870
+ }
837
871
  if (method.payload?.onlyConnectBleDevice) {
872
+ if (shouldAcquire) {
873
+ DevicePool.emitter.emit(DEVICE.CONNECT, device);
874
+ }
838
875
  return;
839
876
  }
840
877
  // Skip initialize if conditions are met
@@ -845,6 +882,9 @@ async function connectDeviceForBle(method: BaseMethod, device: Device, retryCoun
845
882
  passphraseState: initOptions.passphraseState,
846
883
  });
847
884
  }
885
+ if (shouldAcquire) {
886
+ DevicePool.emitter.emit(DEVICE.CONNECT, device);
887
+ }
848
888
  } catch (err) {
849
889
  if (
850
890
  (err.errorCode === HardwareErrorCode.BleTimeoutError ||
@@ -1145,8 +1185,6 @@ const cleanup = () => {
1145
1185
 
1146
1186
  const removeDeviceListener = (device: Device) => {
1147
1187
  device.removeAllListeners();
1148
- DevicePool.emitter.removeAllListeners(DEVICE.CONNECT);
1149
- // DevicePool.emitter.removeListener(DEVICE.DISCONNECT, onDeviceDisconnectHandler);
1150
1188
  };
1151
1189
 
1152
1190
  /**
@@ -1157,16 +1195,30 @@ const closePopup = () => {
1157
1195
  };
1158
1196
 
1159
1197
  const onDeviceConnectHandler = (device: Device) => {
1160
- const env = DataManager.getSettings('env');
1161
- const deviceObject = DataManager.isBleConnect(env) ? device : device.toMessageObject();
1162
- postMessage(createDeviceMessage(DEVICE.CONNECT, { device: deviceObject as KnownDevice }));
1198
+ const deviceObject = device.toMessageObject();
1199
+ if (!deviceObject) return;
1200
+ postMessage(createDeviceMessage(DEVICE.CONNECT, { device: deviceObject }));
1163
1201
  };
1164
1202
 
1165
1203
  const onDeviceDisconnectHandler = (device: Device) => {
1166
1204
  device.clearPreInitialized();
1167
- const env = DataManager.getSettings('env');
1168
- const deviceObject = DataManager.isBleConnect(env) ? device : device.toMessageObject();
1169
- postMessage(createDeviceMessage(DEVICE.DISCONNECT, { device: deviceObject as KnownDevice }));
1205
+ const deviceObject = device.toMessageObject();
1206
+ if (!deviceObject) return;
1207
+ postMessage(createDeviceMessage(DEVICE.DISCONNECT, { device: deviceObject }));
1208
+ };
1209
+
1210
+ const onTransportDeviceDisconnectHandler = (event: TransportDeviceDisconnectEvent) => {
1211
+ const device =
1212
+ deviceCacheMap.get(event.connectId) ??
1213
+ DevicePool.devicesCache[event.connectId] ??
1214
+ DevicePool.getDeviceByPath(event.connectId);
1215
+ if (!device) {
1216
+ Log.debug('Ignoring transport disconnect for an unknown device:', event.connectId);
1217
+ return;
1218
+ }
1219
+
1220
+ device.markTransportDisconnected();
1221
+ DevicePool.emitter.emit(DEVICE.DISCONNECT, device);
1170
1222
  };
1171
1223
 
1172
1224
  const onDevicePinHandler = async (...[device, type, callback]: DeviceEvents['pin']) => {
@@ -1207,6 +1259,10 @@ const onDeviceFeaturesHandler = (...[_, features]: [...DeviceEvents['features']]
1207
1259
  postMessage(createDeviceMessage(DEVICE.FEATURES, { ...features }));
1208
1260
  };
1209
1261
 
1262
+ const onDeviceStateHandler = (...[_, stateEvent]: [...DeviceEvents['state']]) => {
1263
+ postMessage(createDeviceMessage(DEVICE.STATE, stateEvent));
1264
+ };
1265
+
1210
1266
  const onDevicePassphraseHandler = async (
1211
1267
  ...[device, requestPayload, callback]: DeviceEvents['passphrase']
1212
1268
  ) => {
@@ -1217,6 +1273,10 @@ const onDevicePassphraseHandler = async (
1217
1273
  device: device.toMessageObject() as KnownDevice,
1218
1274
  passphraseState: device.passphraseState,
1219
1275
  existsAttachPinUser: requestPayload.existsAttachPinUser,
1276
+ deviceOnly: requestPayload.deviceOnly,
1277
+ source: requestPayload.source,
1278
+ reason: requestPayload.reason,
1279
+ expectedPassphraseState: requestPayload.expectedPassphraseState,
1220
1280
  })
1221
1281
  );
1222
1282
  // wait for passphrase
@@ -1238,12 +1298,27 @@ const onEmptyPassphraseHandler = (...[_, , callback]: DeviceEvents['passphrase']
1238
1298
  };
1239
1299
 
1240
1300
  const onEnterPassphraseOnDeviceHandler = (
1241
- ...[device]: [...DeviceEvents['passphrase_on_device']]
1301
+ ...[device, requestPayload]: [...DeviceEvents['passphrase_on_device']]
1242
1302
  ) => {
1243
1303
  postMessage(
1244
1304
  createUiMessage(UI_REQUEST.REQUEST_PASSPHRASE_ON_DEVICE, {
1245
1305
  device: device.toMessageObject() as KnownDevice,
1246
1306
  passphraseState: device.passphraseState,
1307
+ source: requestPayload?.source,
1308
+ reason: requestPayload?.reason,
1309
+ })
1310
+ );
1311
+ };
1312
+
1313
+ const onEnterAttachPinOnDeviceHandler = (
1314
+ ...[device, requestPayload]: [...DeviceEvents['attach_pin_on_device']]
1315
+ ) => {
1316
+ postMessage(
1317
+ createUiMessage(UI_REQUEST.REQUEST_PIN, {
1318
+ device: device.toMessageObject() as KnownDevice,
1319
+ type: 'ButtonRequest_AttachPin',
1320
+ source: requestPayload?.source,
1321
+ reason: requestPayload?.reason,
1247
1322
  })
1248
1323
  );
1249
1324
  };
@@ -1314,6 +1389,8 @@ export default class Core extends EventEmitter {
1314
1389
 
1315
1390
  private requestQueue = new RequestQueue();
1316
1391
 
1392
+ private disposePromise?: Promise<void>;
1393
+
1317
1394
  // background task
1318
1395
  private prePendingCallPromise: Promise<void> | undefined;
1319
1396
 
@@ -1372,10 +1449,17 @@ export default class Core extends EventEmitter {
1372
1449
  }
1373
1450
 
1374
1451
  case IFRAME.CALL: {
1375
- Log.log(`[${Date.now()}][CALL_API]`, message);
1452
+ const logBlockLabel = getLogBlockLabel(message);
1453
+ Log.log(
1454
+ `[${Date.now()}][CALL_API]`,
1455
+ logBlockLabel ? { method: logBlockLabel, payload: '[REDACTED]' } : message
1456
+ );
1376
1457
  const response = await callAPI(this.getCoreContext(), message);
1377
1458
  const { success, payload } = response;
1378
- Log.log(`[${Date.now()}][CALL_API_RESPONSE]`, response);
1459
+ Log.log(
1460
+ `[${Date.now()}][CALL_API_RESPONSE]`,
1461
+ logBlockLabel ? { method: logBlockLabel, payload: '[REDACTED]' } : response
1462
+ );
1379
1463
  if (success) {
1380
1464
  return response;
1381
1465
  }
@@ -1405,25 +1489,65 @@ export default class Core extends EventEmitter {
1405
1489
  return Promise.resolve(message);
1406
1490
  }
1407
1491
 
1408
- dispose() {
1492
+ dispose(): Promise<void> {
1493
+ if (!this.disposePromise) {
1494
+ this.disposePromise = this.disposeResources();
1495
+ }
1496
+ return this.disposePromise;
1497
+ }
1498
+
1499
+ private async disposeResources(): Promise<void> {
1500
+ Log.debug(`[Core] Disposing SDK instance: ${this.sdkInstanceId}`);
1501
+ pollingManager.stopAll();
1502
+ this.requestQueue.abortAllRequests();
1503
+ cleanup();
1504
+
1505
+ _connector?.stop();
1506
+ let transportCleanup: Promise<void>;
1507
+ try {
1508
+ transportCleanup = Promise.resolve(TransportManager.getTransport()?.stop?.()).catch(error => {
1509
+ Log.warn('[Core] Transport cleanup failed:', error);
1510
+ });
1511
+ } catch (error) {
1512
+ Log.warn('[Core] Transport cleanup failed:', error);
1513
+ transportCleanup = Promise.resolve();
1514
+ }
1515
+
1516
+ // Preserve synchronous dispose semantics for in-memory state and listeners.
1409
1517
  _deviceList = undefined;
1410
1518
  _connector = undefined;
1519
+ DevicePool.resetState();
1411
1520
  deviceCacheMap.clear();
1412
1521
  preWarmInflight.clear();
1413
1522
  preWarmDoneAt.clear();
1414
- Log.debug(`[Core] Disposing SDK instance: ${this.sdkInstanceId}`);
1523
+ preConnectCache = { passphraseState: undefined };
1524
+ this.prePendingCallPromise = undefined;
1525
+ this.removeAllListeners();
1415
1526
  cleanupSdkInstance(this.sdkInstanceId);
1527
+ if (_core === this) _core = undefined;
1528
+
1529
+ // Transports, especially Node USB, may release native handles asynchronously.
1530
+ await transportCleanup;
1416
1531
  }
1417
1532
  }
1418
1533
 
1419
1534
  export const initCore = () => {
1420
- _core = new Core();
1421
- return _core;
1535
+ const core = new Core();
1536
+ _core = core;
1537
+ return core;
1422
1538
  };
1423
1539
 
1424
1540
  export const initConnector = () => {
1425
1541
  _connector = new DeviceConnector();
1542
+ DevicePool.emitter.removeListener(DEVICE.CONNECT, onDeviceConnectHandler);
1543
+ DevicePool.emitter.removeListener(DEVICE.DISCONNECT, onDeviceDisconnectHandler);
1544
+ DevicePool.emitter.removeListener(
1545
+ TRANSPORT_EVENT.DEVICE_DISCONNECT,
1546
+ onTransportDeviceDisconnectHandler
1547
+ );
1548
+ DevicePool.emitter.on(DEVICE.CONNECT, onDeviceConnectHandler);
1426
1549
  DevicePool.emitter.on(DEVICE.DISCONNECT, onDeviceDisconnectHandler);
1550
+ DevicePool.emitter.on(TRANSPORT_EVENT.DEVICE_DISCONNECT, onTransportDeviceDisconnectHandler);
1427
1551
  return _connector;
1428
1552
  };
1429
1553
 
@@ -1439,7 +1563,6 @@ export const init = async (
1439
1563
  try {
1440
1564
  try {
1441
1565
  await DataManager.load(settings);
1442
- setProtocolV2DeviceInfoMock(settings.protocolV2DeviceInfoMockEnabled ?? false);
1443
1566
  initTransport(Transport, plugin);
1444
1567
  } catch {
1445
1568
  Log.error('DataManager.load error');