@onekeyfe/hd-core 1.2.0-alpha.5 → 1.2.0-alpha.50

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 (727) hide show
  1. package/__tests__/AllNetworkGetAddressBase.tracing.test.ts +155 -0
  2. package/__tests__/DeviceCommands.test.ts +517 -0
  3. package/__tests__/DeviceEventRegistration.test.ts +49 -0
  4. package/__tests__/chain-params-onekey-compatibility.test.ts +229 -0
  5. package/__tests__/check-all-firmware-release-protocol-v2.test.ts +390 -0
  6. package/__tests__/connectSettings.test.ts +19 -0
  7. package/__tests__/core-dispose.test.ts +34 -0
  8. package/__tests__/core-error-output.test.ts +39 -0
  9. package/__tests__/device-features-state.test.ts +78 -0
  10. package/__tests__/device-identity.test.ts +52 -0
  11. package/__tests__/device-lifecycle-events.test.ts +351 -0
  12. package/__tests__/device-pool-state.test.ts +144 -0
  13. package/__tests__/device-settings.test.ts +416 -0
  14. package/__tests__/device-state-contract.test.ts +27 -0
  15. package/__tests__/device-state-events.test.ts +286 -0
  16. package/__tests__/device-state-mapper.test.ts +261 -0
  17. package/__tests__/device-state-projector.test.ts +94 -0
  18. package/__tests__/device-state-store.test.ts +82 -0
  19. package/__tests__/device-utils.test.ts +107 -0
  20. package/__tests__/device-wallet-session-store.test.ts +478 -0
  21. package/__tests__/deviceFeaturesUtils.test.ts +39 -0
  22. package/__tests__/deviceSettings.test.ts +103 -0
  23. package/__tests__/deviceUploadNft.test.ts +293 -0
  24. package/__tests__/evmLedgerLegacySafety.test.ts +12 -6
  25. package/__tests__/evmSignTransaction.test.ts +69 -0
  26. package/__tests__/evmSignTypedData.test.ts +80 -0
  27. package/__tests__/filesystemValidation.test.ts +53 -0
  28. package/__tests__/firmware-update/firmware-update-v2-download-before-boot.test.ts +402 -0
  29. package/__tests__/get-device-state.test.ts +578 -0
  30. package/__tests__/homescreen.test.ts +64 -0
  31. package/__tests__/kaspa-public-types.type-test.ts +16 -0
  32. package/__tests__/kaspa-use-tweak-pro2.test.ts +20 -0
  33. package/__tests__/kaspaSignTransaction.test.ts +601 -0
  34. package/__tests__/known-device-public-types.type-test.ts +3 -0
  35. package/__tests__/logBlockEvent.test.ts +128 -1
  36. package/__tests__/method-protocol-support.test.ts +132 -0
  37. package/__tests__/networkUtils.test.ts +406 -0
  38. package/__tests__/open-wallet-session-error-response.test.ts +43 -0
  39. package/__tests__/open-wallet-session.test.ts +1781 -0
  40. package/__tests__/pro2Nft.test.ts +108 -0
  41. package/__tests__/pro2Wallpaper.test.ts +39 -0
  42. package/__tests__/protocol-binding.test.ts +89 -0
  43. package/__tests__/protocol-v2-bootloader-mode.test.ts +37 -0
  44. package/__tests__/protocol-v2-firmware-targets.test.ts +37 -0
  45. package/__tests__/protocol-v2-ping.test.ts +28 -0
  46. package/__tests__/protocol-v2-resources.test.ts +284 -0
  47. package/__tests__/protocol-v2-ui-lifecycle.test.ts +91 -0
  48. package/__tests__/protocol-v2-unlock-policy.test.ts +206 -0
  49. package/__tests__/protocol-v2.test.ts +6162 -2544
  50. package/__tests__/protocolV2FileWrite.test.ts +92 -0
  51. package/__tests__/protocolV2UiInteraction.test.ts +329 -0
  52. package/__tests__/public-device-state-api.test.ts +275 -0
  53. package/__tests__/public-pro2-api-boundary.test.ts +107 -0
  54. package/__tests__/refresh-device-state.test.ts +101 -0
  55. package/__tests__/request-context-logging.test.ts +16 -0
  56. package/__tests__/search-devices.test.ts +145 -0
  57. package/__tests__/tron-sign-message-init.test.ts +74 -0
  58. package/__tests__/uiProgressThrottle.test.ts +74 -0
  59. package/__tests__/uiPromiseRegistry.test.ts +86 -0
  60. package/dist/api/BaseMethod.d.ts +16 -1
  61. package/dist/api/BaseMethod.d.ts.map +1 -1
  62. package/dist/api/CheckAllFirmwareRelease.d.ts +24 -1
  63. package/dist/api/CheckAllFirmwareRelease.d.ts.map +1 -1
  64. package/dist/api/CheckBootloaderRelease.d.ts.map +1 -1
  65. package/dist/api/CheckFirmwareRelease.d.ts.map +1 -1
  66. package/dist/api/CipherKeyValue.d.ts +1 -0
  67. package/dist/api/CipherKeyValue.d.ts.map +1 -1
  68. package/dist/api/ClearSessionCache.d.ts +9 -0
  69. package/dist/api/ClearSessionCache.d.ts.map +1 -0
  70. package/dist/api/DetectDeviceConnectProtocol.d.ts +7 -0
  71. package/dist/api/DetectDeviceConnectProtocol.d.ts.map +1 -0
  72. package/dist/api/DirList.d.ts +1 -0
  73. package/dist/api/DirList.d.ts.map +1 -1
  74. package/dist/api/DirMake.d.ts +1 -0
  75. package/dist/api/DirMake.d.ts.map +1 -1
  76. package/dist/api/DirRemove.d.ts +1 -0
  77. package/dist/api/DirRemove.d.ts.map +1 -1
  78. package/dist/api/FileDelete.d.ts +1 -0
  79. package/dist/api/FileDelete.d.ts.map +1 -1
  80. package/dist/api/FileRead.d.ts +1 -0
  81. package/dist/api/FileRead.d.ts.map +1 -1
  82. package/dist/api/FileWrite.d.ts +2 -0
  83. package/dist/api/FileWrite.d.ts.map +1 -1
  84. package/dist/api/FirmwareUpdate.d.ts.map +1 -1
  85. package/dist/api/FirmwareUpdateV2.d.ts +2 -2
  86. package/dist/api/FirmwareUpdateV2.d.ts.map +1 -1
  87. package/dist/api/FirmwareUpdateV3.d.ts.map +1 -1
  88. package/dist/api/FirmwareUpdateV4.d.ts +24 -16
  89. package/dist/api/FirmwareUpdateV4.d.ts.map +1 -1
  90. package/dist/api/GetDeviceState.d.ts +8 -0
  91. package/dist/api/GetDeviceState.d.ts.map +1 -0
  92. package/dist/api/GetFeatures.d.ts +1 -1
  93. package/dist/api/GetFeatures.d.ts.map +1 -1
  94. package/dist/api/GetOnekeyFeatures.d.ts.map +1 -1
  95. package/dist/api/GetPassphraseState.d.ts +2 -6
  96. package/dist/api/GetPassphraseState.d.ts.map +1 -1
  97. package/dist/api/OpenWalletSession.d.ts +8 -0
  98. package/dist/api/OpenWalletSession.d.ts.map +1 -0
  99. package/dist/api/PathInfo.d.ts +1 -0
  100. package/dist/api/PathInfo.d.ts.map +1 -1
  101. package/dist/api/PromptWebDeviceAccess.d.ts.map +1 -1
  102. package/dist/api/SearchDevices.d.ts +3 -0
  103. package/dist/api/SearchDevices.d.ts.map +1 -1
  104. package/dist/api/UploadPortfolio.d.ts +17 -0
  105. package/dist/api/UploadPortfolio.d.ts.map +1 -0
  106. package/dist/api/alephium/AlephiumGetAddress.d.ts.map +1 -1
  107. package/dist/api/alephium/AlephiumSignMessage.d.ts.map +1 -1
  108. package/dist/api/alephium/AlephiumSignTransaction.d.ts.map +1 -1
  109. package/dist/api/algo/AlgoGetAddress.d.ts +1 -0
  110. package/dist/api/algo/AlgoGetAddress.d.ts.map +1 -1
  111. package/dist/api/algo/AlgoSignTransaction.d.ts +1 -0
  112. package/dist/api/algo/AlgoSignTransaction.d.ts.map +1 -1
  113. package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts +1 -0
  114. package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts.map +1 -1
  115. package/dist/api/aptos/AptosGetAddress.d.ts +1 -0
  116. package/dist/api/aptos/AptosGetAddress.d.ts.map +1 -1
  117. package/dist/api/aptos/AptosGetPublicKey.d.ts +1 -0
  118. package/dist/api/aptos/AptosGetPublicKey.d.ts.map +1 -1
  119. package/dist/api/aptos/AptosSignInMessage.d.ts +1 -0
  120. package/dist/api/aptos/AptosSignInMessage.d.ts.map +1 -1
  121. package/dist/api/aptos/AptosSignMessage.d.ts +1 -0
  122. package/dist/api/aptos/AptosSignMessage.d.ts.map +1 -1
  123. package/dist/api/aptos/AptosSignTransaction.d.ts +1 -0
  124. package/dist/api/aptos/AptosSignTransaction.d.ts.map +1 -1
  125. package/dist/api/benfen/BenfenGetAddress.d.ts.map +1 -1
  126. package/dist/api/benfen/BenfenGetPublicKey.d.ts.map +1 -1
  127. package/dist/api/benfen/BenfenSignMessage.d.ts.map +1 -1
  128. package/dist/api/benfen/BenfenSignTransaction.d.ts.map +1 -1
  129. package/dist/api/btc/BTCGetAddress.d.ts +1 -0
  130. package/dist/api/btc/BTCGetAddress.d.ts.map +1 -1
  131. package/dist/api/btc/BTCGetPublicKey.d.ts +1 -0
  132. package/dist/api/btc/BTCGetPublicKey.d.ts.map +1 -1
  133. package/dist/api/btc/BTCSignMessage.d.ts +1 -0
  134. package/dist/api/btc/BTCSignMessage.d.ts.map +1 -1
  135. package/dist/api/btc/BTCSignPsbt.d.ts +1 -0
  136. package/dist/api/btc/BTCSignPsbt.d.ts.map +1 -1
  137. package/dist/api/btc/BTCSignTransaction.d.ts +1 -0
  138. package/dist/api/btc/BTCSignTransaction.d.ts.map +1 -1
  139. package/dist/api/btc/BTCVerifyMessage.d.ts +1 -0
  140. package/dist/api/btc/BTCVerifyMessage.d.ts.map +1 -1
  141. package/dist/api/btc/helpers/versionLimit.d.ts +2 -0
  142. package/dist/api/btc/helpers/versionLimit.d.ts.map +1 -1
  143. package/dist/api/cardano/CardanoGetAddress.d.ts +1 -0
  144. package/dist/api/cardano/CardanoGetAddress.d.ts.map +1 -1
  145. package/dist/api/cardano/CardanoGetPublicKey.d.ts +1 -0
  146. package/dist/api/cardano/CardanoGetPublicKey.d.ts.map +1 -1
  147. package/dist/api/cardano/CardanoSignMessage.d.ts +1 -0
  148. package/dist/api/cardano/CardanoSignMessage.d.ts.map +1 -1
  149. package/dist/api/cardano/CardanoSignTransaction.d.ts +1 -0
  150. package/dist/api/cardano/CardanoSignTransaction.d.ts.map +1 -1
  151. package/dist/api/conflux/ConfluxGetAddress.d.ts +2 -0
  152. package/dist/api/conflux/ConfluxGetAddress.d.ts.map +1 -1
  153. package/dist/api/conflux/ConfluxSignMessage.d.ts +2 -0
  154. package/dist/api/conflux/ConfluxSignMessage.d.ts.map +1 -1
  155. package/dist/api/conflux/ConfluxSignMessageCIP23.d.ts +2 -0
  156. package/dist/api/conflux/ConfluxSignMessageCIP23.d.ts.map +1 -1
  157. package/dist/api/conflux/ConfluxSignTransaction.d.ts +2 -0
  158. package/dist/api/conflux/ConfluxSignTransaction.d.ts.map +1 -1
  159. package/dist/api/cosmos/CosmosGetAddress.d.ts +1 -0
  160. package/dist/api/cosmos/CosmosGetAddress.d.ts.map +1 -1
  161. package/dist/api/cosmos/CosmosGetPublicKey.d.ts +1 -0
  162. package/dist/api/cosmos/CosmosGetPublicKey.d.ts.map +1 -1
  163. package/dist/api/cosmos/CosmosSignTransaction.d.ts +1 -0
  164. package/dist/api/cosmos/CosmosSignTransaction.d.ts.map +1 -1
  165. package/dist/api/device/DeviceCancel.d.ts +1 -0
  166. package/dist/api/device/DeviceCancel.d.ts.map +1 -1
  167. package/dist/api/device/DeviceChangePin.d.ts +1 -0
  168. package/dist/api/device/DeviceChangePin.d.ts.map +1 -1
  169. package/dist/api/device/DeviceFullyUploadResource.d.ts +1 -2
  170. package/dist/api/device/DeviceFullyUploadResource.d.ts.map +1 -1
  171. package/dist/api/device/DeviceLock.d.ts +1 -0
  172. package/dist/api/device/DeviceLock.d.ts.map +1 -1
  173. package/dist/api/device/DeviceRebootToBoardloader.d.ts +1 -0
  174. package/dist/api/device/DeviceRebootToBoardloader.d.ts.map +1 -1
  175. package/dist/api/device/DeviceRebootToBootloader.d.ts +1 -0
  176. package/dist/api/device/DeviceRebootToBootloader.d.ts.map +1 -1
  177. package/dist/api/device/DeviceSettings.d.ts +1 -0
  178. package/dist/api/device/DeviceSettings.d.ts.map +1 -1
  179. package/dist/api/device/DeviceSupportFeatures.d.ts +1 -0
  180. package/dist/api/device/DeviceSupportFeatures.d.ts.map +1 -1
  181. package/dist/api/device/DeviceUnlock.d.ts +1 -0
  182. package/dist/api/device/DeviceUnlock.d.ts.map +1 -1
  183. package/dist/api/device/DeviceUpdateBootloader.d.ts.map +1 -1
  184. package/dist/api/device/DeviceWipe.d.ts +1 -0
  185. package/dist/api/device/DeviceWipe.d.ts.map +1 -1
  186. package/dist/api/device/PreInitialize.d.ts +1 -0
  187. package/dist/api/device/PreInitialize.d.ts.map +1 -1
  188. package/dist/api/dynex/DnxGetAddress.d.ts.map +1 -1
  189. package/dist/api/dynex/DnxSignTransaction.d.ts.map +1 -1
  190. package/dist/api/evm/EVMGetAddress.d.ts +1 -0
  191. package/dist/api/evm/EVMGetAddress.d.ts.map +1 -1
  192. package/dist/api/evm/EVMGetPublicKey.d.ts +1 -0
  193. package/dist/api/evm/EVMGetPublicKey.d.ts.map +1 -1
  194. package/dist/api/evm/EVMSignMessage.d.ts +1 -0
  195. package/dist/api/evm/EVMSignMessage.d.ts.map +1 -1
  196. package/dist/api/evm/EVMSignMessageEIP712.d.ts.map +1 -1
  197. package/dist/api/evm/EVMSignTransaction.d.ts +1 -0
  198. package/dist/api/evm/EVMSignTransaction.d.ts.map +1 -1
  199. package/dist/api/evm/EVMSignTypedData.d.ts +1 -0
  200. package/dist/api/evm/EVMSignTypedData.d.ts.map +1 -1
  201. package/dist/api/evm/EVMVerifyMessage.d.ts +1 -0
  202. package/dist/api/evm/EVMVerifyMessage.d.ts.map +1 -1
  203. package/dist/api/evm/protocol.d.ts +3 -0
  204. package/dist/api/evm/protocol.d.ts.map +1 -0
  205. package/dist/api/filecoin/FilecoinGetAddress.d.ts +1 -0
  206. package/dist/api/filecoin/FilecoinGetAddress.d.ts.map +1 -1
  207. package/dist/api/filecoin/FilecoinSignTransaction.d.ts +1 -0
  208. package/dist/api/filecoin/FilecoinSignTransaction.d.ts.map +1 -1
  209. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts +0 -1
  210. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts.map +1 -1
  211. package/dist/api/firmware/getBinary.d.ts +8 -4
  212. package/dist/api/firmware/getBinary.d.ts.map +1 -1
  213. package/dist/api/firmware/uploadFirmware.d.ts.map +1 -1
  214. package/dist/api/helpers/filesystemValidation.d.ts +3 -0
  215. package/dist/api/helpers/filesystemValidation.d.ts.map +1 -1
  216. package/dist/api/helpers/paramsValidator.d.ts +1 -0
  217. package/dist/api/helpers/paramsValidator.d.ts.map +1 -1
  218. package/dist/api/helpers/protocolV2FileWrite.d.ts +35 -0
  219. package/dist/api/helpers/protocolV2FileWrite.d.ts.map +1 -0
  220. package/dist/api/index.d.ts +9 -25
  221. package/dist/api/index.d.ts.map +1 -1
  222. package/dist/api/kaspa/KaspaGetAddress.d.ts +4 -0
  223. package/dist/api/kaspa/KaspaGetAddress.d.ts.map +1 -1
  224. package/dist/api/kaspa/KaspaSignTransaction.d.ts +9 -1
  225. package/dist/api/kaspa/KaspaSignTransaction.d.ts.map +1 -1
  226. package/dist/api/kaspa/helpers/TransferSerialize.d.ts.map +1 -1
  227. package/dist/api/lightning/LnurlAuth.d.ts +0 -4
  228. package/dist/api/lightning/LnurlAuth.d.ts.map +1 -1
  229. package/dist/api/near/NearGetAddress.d.ts +1 -0
  230. package/dist/api/near/NearGetAddress.d.ts.map +1 -1
  231. package/dist/api/near/NearSignTransaction.d.ts +1 -0
  232. package/dist/api/near/NearSignTransaction.d.ts.map +1 -1
  233. package/dist/api/nem/NEMGetAddress.d.ts +1 -0
  234. package/dist/api/nem/NEMGetAddress.d.ts.map +1 -1
  235. package/dist/api/nem/NEMSignTransaction.d.ts +1 -0
  236. package/dist/api/nem/NEMSignTransaction.d.ts.map +1 -1
  237. package/dist/api/neo/NeoGetAddress.d.ts.map +1 -1
  238. package/dist/api/neo/NeoSignTransaction.d.ts.map +1 -1
  239. package/dist/api/nervos/NervosGetAddress.d.ts.map +1 -1
  240. package/dist/api/nervos/NervosSignTransaction.d.ts.map +1 -1
  241. package/dist/api/nexa/NexaGetAddress.d.ts.map +1 -1
  242. package/dist/api/nexa/NexaSignTransaction.d.ts +1 -0
  243. package/dist/api/nexa/NexaSignTransaction.d.ts.map +1 -1
  244. package/dist/api/nostr/NostrDecryptMessage.d.ts +1 -0
  245. package/dist/api/nostr/NostrDecryptMessage.d.ts.map +1 -1
  246. package/dist/api/nostr/NostrEncryptMessage.d.ts +1 -0
  247. package/dist/api/nostr/NostrEncryptMessage.d.ts.map +1 -1
  248. package/dist/api/nostr/NostrGetPublicKey.d.ts +1 -0
  249. package/dist/api/nostr/NostrGetPublicKey.d.ts.map +1 -1
  250. package/dist/api/nostr/NostrSignEvent.d.ts +1 -0
  251. package/dist/api/nostr/NostrSignEvent.d.ts.map +1 -1
  252. package/dist/api/nostr/NostrSignSchnorr.d.ts +1 -0
  253. package/dist/api/nostr/NostrSignSchnorr.d.ts.map +1 -1
  254. package/dist/api/polkadot/PolkadotGetAddress.d.ts +1 -0
  255. package/dist/api/polkadot/PolkadotGetAddress.d.ts.map +1 -1
  256. package/dist/api/polkadot/PolkadotSignTransaction.d.ts +1 -0
  257. package/dist/api/polkadot/PolkadotSignTransaction.d.ts.map +1 -1
  258. package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts +1 -0
  259. package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts.map +1 -1
  260. package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts +1 -0
  261. package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts.map +1 -1
  262. package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts +1 -0
  263. package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts.map +1 -1
  264. package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts +1 -0
  265. package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts.map +1 -1
  266. package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts +7 -0
  267. package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts.map +1 -0
  268. package/dist/api/protocol-v2/DeviceInfoGet.d.ts +1 -1
  269. package/dist/api/protocol-v2/DeviceInfoGet.d.ts.map +1 -1
  270. package/dist/api/protocol-v2/DeviceReboot.d.ts +1 -0
  271. package/dist/api/protocol-v2/DeviceReboot.d.ts.map +1 -1
  272. package/dist/api/protocol-v2/DeviceStatusGet.d.ts +7 -0
  273. package/dist/api/protocol-v2/DeviceStatusGet.d.ts.map +1 -0
  274. package/dist/api/protocol-v2/DeviceUploadNft.d.ts +31 -0
  275. package/dist/api/protocol-v2/DeviceUploadNft.d.ts.map +1 -0
  276. package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts +27 -0
  277. package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts.map +1 -0
  278. package/dist/api/protocol-v2/FilesystemFormat.d.ts +1 -0
  279. package/dist/api/protocol-v2/FilesystemFormat.d.ts.map +1 -1
  280. package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts +1 -0
  281. package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts.map +1 -1
  282. package/dist/api/protocol-v2/Ping.d.ts +3 -0
  283. package/dist/api/protocol-v2/Ping.d.ts.map +1 -1
  284. package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts +1 -0
  285. package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts.map +1 -1
  286. package/dist/api/protocol-v2/helpers.d.ts +1 -1
  287. package/dist/api/protocol-v2/helpers.d.ts.map +1 -1
  288. package/dist/api/scdo/ScdoGetAddress.d.ts.map +1 -1
  289. package/dist/api/scdo/ScdoSignMessage.d.ts.map +1 -1
  290. package/dist/api/scdo/ScdoSignTransaction.d.ts.map +1 -1
  291. package/dist/api/solana/SolGetAddress.d.ts +1 -0
  292. package/dist/api/solana/SolGetAddress.d.ts.map +1 -1
  293. package/dist/api/solana/SolSignMessage.d.ts +1 -0
  294. package/dist/api/solana/SolSignMessage.d.ts.map +1 -1
  295. package/dist/api/solana/SolSignOffchainMessage.d.ts +1 -0
  296. package/dist/api/solana/SolSignOffchainMessage.d.ts.map +1 -1
  297. package/dist/api/solana/SolSignTransaction.d.ts +1 -0
  298. package/dist/api/solana/SolSignTransaction.d.ts.map +1 -1
  299. package/dist/api/starcoin/StarcoinGetAddress.d.ts +1 -0
  300. package/dist/api/starcoin/StarcoinGetAddress.d.ts.map +1 -1
  301. package/dist/api/starcoin/StarcoinGetPublicKey.d.ts +1 -0
  302. package/dist/api/starcoin/StarcoinGetPublicKey.d.ts.map +1 -1
  303. package/dist/api/starcoin/StarcoinSignMessage.d.ts +1 -0
  304. package/dist/api/starcoin/StarcoinSignMessage.d.ts.map +1 -1
  305. package/dist/api/starcoin/StarcoinSignTransaction.d.ts +1 -0
  306. package/dist/api/starcoin/StarcoinSignTransaction.d.ts.map +1 -1
  307. package/dist/api/starcoin/StarcoinVerifyMessage.d.ts +1 -0
  308. package/dist/api/starcoin/StarcoinVerifyMessage.d.ts.map +1 -1
  309. package/dist/api/stellar/StellarGetAddress.d.ts +1 -2
  310. package/dist/api/stellar/StellarGetAddress.d.ts.map +1 -1
  311. package/dist/api/stellar/StellarSignTransaction.d.ts +1 -2
  312. package/dist/api/stellar/StellarSignTransaction.d.ts.map +1 -1
  313. package/dist/api/sui/SuiGetAddress.d.ts +1 -0
  314. package/dist/api/sui/SuiGetAddress.d.ts.map +1 -1
  315. package/dist/api/sui/SuiGetPublicKey.d.ts +1 -0
  316. package/dist/api/sui/SuiGetPublicKey.d.ts.map +1 -1
  317. package/dist/api/sui/SuiSignMessage.d.ts +1 -0
  318. package/dist/api/sui/SuiSignMessage.d.ts.map +1 -1
  319. package/dist/api/sui/SuiSignTransaction.d.ts +1 -0
  320. package/dist/api/sui/SuiSignTransaction.d.ts.map +1 -1
  321. package/dist/api/ton/TonGetAddress.d.ts +1 -0
  322. package/dist/api/ton/TonGetAddress.d.ts.map +1 -1
  323. package/dist/api/ton/TonSignData.d.ts +1 -0
  324. package/dist/api/ton/TonSignData.d.ts.map +1 -1
  325. package/dist/api/ton/TonSignMessage.d.ts +1 -0
  326. package/dist/api/ton/TonSignMessage.d.ts.map +1 -1
  327. package/dist/api/ton/TonSignProof.d.ts +1 -0
  328. package/dist/api/ton/TonSignProof.d.ts.map +1 -1
  329. package/dist/api/tron/TronGetAddress.d.ts +1 -0
  330. package/dist/api/tron/TronGetAddress.d.ts.map +1 -1
  331. package/dist/api/tron/TronSignMessage.d.ts +5 -0
  332. package/dist/api/tron/TronSignMessage.d.ts.map +1 -1
  333. package/dist/api/tron/TronSignTransaction.d.ts +1 -0
  334. package/dist/api/tron/TronSignTransaction.d.ts.map +1 -1
  335. package/dist/api/utils.d.ts +2 -1
  336. package/dist/api/utils.d.ts.map +1 -1
  337. package/dist/api/xrp/XrpGetAddress.d.ts +1 -0
  338. package/dist/api/xrp/XrpGetAddress.d.ts.map +1 -1
  339. package/dist/api/xrp/XrpSignTransaction.d.ts +1 -0
  340. package/dist/api/xrp/XrpSignTransaction.d.ts.map +1 -1
  341. package/dist/constants/index.d.ts +1 -1
  342. package/dist/constants/index.d.ts.map +1 -1
  343. package/dist/core/RequestQueue.d.ts.map +1 -1
  344. package/dist/core/deviceEventRegistration.d.ts +13 -0
  345. package/dist/core/deviceEventRegistration.d.ts.map +1 -0
  346. package/dist/core/index.d.ts +3 -1
  347. package/dist/core/index.d.ts.map +1 -1
  348. package/dist/core/uiPromiseRegistry.d.ts +4 -0
  349. package/dist/core/uiPromiseRegistry.d.ts.map +1 -0
  350. package/dist/data-manager/DataManager.d.ts +4 -1
  351. package/dist/data-manager/DataManager.d.ts.map +1 -1
  352. package/dist/data-manager/connectSettings.d.ts.map +1 -1
  353. package/dist/device/Device.d.ts +71 -17
  354. package/dist/device/Device.d.ts.map +1 -1
  355. package/dist/device/DeviceCommands.d.ts +8 -6
  356. package/dist/device/DeviceCommands.d.ts.map +1 -1
  357. package/dist/device/DeviceConnector.d.ts +1 -1
  358. package/dist/device/DeviceConnector.d.ts.map +1 -1
  359. package/dist/device/DeviceFeaturesState.d.ts +3 -0
  360. package/dist/device/DeviceFeaturesState.d.ts.map +1 -0
  361. package/dist/device/DevicePool.d.ts +5 -2
  362. package/dist/device/DevicePool.d.ts.map +1 -1
  363. package/dist/device/DeviceStateMapper.d.ts +13 -0
  364. package/dist/device/DeviceStateMapper.d.ts.map +1 -0
  365. package/dist/device/DeviceStateProjector.d.ts +7 -0
  366. package/dist/device/DeviceStateProjector.d.ts.map +1 -0
  367. package/dist/device/DeviceStateStore.d.ts +21 -0
  368. package/dist/device/DeviceStateStore.d.ts.map +1 -0
  369. package/dist/device/DeviceWalletSessionStore.d.ts +27 -0
  370. package/dist/device/DeviceWalletSessionStore.d.ts.map +1 -0
  371. package/dist/device/cloneDeviceState.d.ts +2 -0
  372. package/dist/device/cloneDeviceState.d.ts.map +1 -0
  373. package/dist/device/deviceIdentity.d.ts +5 -0
  374. package/dist/device/deviceIdentity.d.ts.map +1 -0
  375. package/dist/deviceProfile/buildDeviceFeatures.d.ts +9 -3
  376. package/dist/deviceProfile/buildDeviceFeatures.d.ts.map +1 -1
  377. package/dist/deviceProfile/index.d.ts +0 -1
  378. package/dist/deviceProfile/index.d.ts.map +1 -1
  379. package/dist/deviceProfile/protocolV2DeviceIdentity.d.ts +7 -0
  380. package/dist/deviceProfile/protocolV2DeviceIdentity.d.ts.map +1 -0
  381. package/dist/events/device.d.ts +16 -2
  382. package/dist/events/device.d.ts.map +1 -1
  383. package/dist/events/logBlockEvent.d.ts +2 -0
  384. package/dist/events/logBlockEvent.d.ts.map +1 -1
  385. package/dist/events/ui-promise.d.ts +4 -2
  386. package/dist/events/ui-promise.d.ts.map +1 -1
  387. package/dist/events/ui-request.d.ts +50 -4
  388. package/dist/events/ui-request.d.ts.map +1 -1
  389. package/dist/events/ui-response.d.ts +10 -2
  390. package/dist/events/ui-response.d.ts.map +1 -1
  391. package/dist/index.d.ts +1592 -794
  392. package/dist/index.js +8249 -3981
  393. package/dist/inject.d.ts +6 -1
  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 +25 -17
  399. package/dist/protocols/protocol-v2/features.d.ts.map +1 -1
  400. package/dist/protocols/protocol-v2/index.d.ts +3 -2
  401. package/dist/protocols/protocol-v2/index.d.ts.map +1 -1
  402. package/dist/protocols/protocol-v2/resources.d.ts +30 -0
  403. package/dist/protocols/protocol-v2/resources.d.ts.map +1 -0
  404. package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts +17 -0
  405. package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts.map +1 -0
  406. package/dist/protocols/protocol-v2/uiInteraction.d.ts +42 -0
  407. package/dist/protocols/protocol-v2/uiInteraction.d.ts.map +1 -0
  408. package/dist/protocols/protocol-v2/unlockPolicy.d.ts +2 -0
  409. package/dist/protocols/protocol-v2/unlockPolicy.d.ts.map +1 -0
  410. package/dist/protocols/protocol-v2/unlockPolicyRunner.d.ts +22 -0
  411. package/dist/protocols/protocol-v2/unlockPolicyRunner.d.ts.map +1 -0
  412. package/dist/protocols/protocol-v2/walletSession.d.ts +25 -0
  413. package/dist/protocols/protocol-v2/walletSession.d.ts.map +1 -0
  414. package/dist/topLevelInject.d.ts.map +1 -1
  415. package/dist/types/api/checkAllFirmwareRelease.d.ts +26 -4
  416. package/dist/types/api/checkAllFirmwareRelease.d.ts.map +1 -1
  417. package/dist/types/api/detectDeviceConnectProtocol.d.ts +4 -0
  418. package/dist/types/api/detectDeviceConnectProtocol.d.ts.map +1 -0
  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/export.d.ts +3 -2
  424. package/dist/types/api/export.d.ts.map +1 -1
  425. package/dist/types/api/firmwareUpdate.d.ts +7 -1
  426. package/dist/types/api/firmwareUpdate.d.ts.map +1 -1
  427. package/dist/types/api/getDeviceState.d.ts +12 -0
  428. package/dist/types/api/getDeviceState.d.ts.map +1 -0
  429. package/dist/types/api/getFeatures.d.ts.map +1 -1
  430. package/dist/types/api/getOnekeyFeatures.d.ts.map +1 -1
  431. package/dist/types/api/getPassphraseState.d.ts +2 -10
  432. package/dist/types/api/getPassphraseState.d.ts.map +1 -1
  433. package/dist/types/api/index.d.ts +23 -30
  434. package/dist/types/api/index.d.ts.map +1 -1
  435. package/dist/types/api/kaspaSignTransaction.d.ts +42 -4
  436. package/dist/types/api/kaspaSignTransaction.d.ts.map +1 -1
  437. package/dist/types/api/openWalletSession.d.ts +35 -0
  438. package/dist/types/api/openWalletSession.d.ts.map +1 -0
  439. package/dist/types/api/protocolV2.d.ts +18 -84
  440. package/dist/types/api/protocolV2.d.ts.map +1 -1
  441. package/dist/types/api/sessionCache.d.ts +13 -0
  442. package/dist/types/api/sessionCache.d.ts.map +1 -0
  443. package/dist/types/device.d.ts +132 -8
  444. package/dist/types/device.d.ts.map +1 -1
  445. package/dist/types/params.d.ts +1 -0
  446. package/dist/types/params.d.ts.map +1 -1
  447. package/dist/types/settings.d.ts +29 -14
  448. package/dist/types/settings.d.ts.map +1 -1
  449. package/dist/utils/assets.d.ts +2 -1
  450. package/dist/utils/assets.d.ts.map +1 -1
  451. package/dist/utils/deviceFeaturesCompat.d.ts +13 -0
  452. package/dist/utils/deviceFeaturesCompat.d.ts.map +1 -0
  453. package/dist/utils/deviceFeaturesUtils.d.ts +8 -3
  454. package/dist/utils/deviceFeaturesUtils.d.ts.map +1 -1
  455. package/dist/utils/deviceInfoUtils.d.ts +9 -9
  456. package/dist/utils/deviceInfoUtils.d.ts.map +1 -1
  457. package/dist/utils/deviceSettings.d.ts +38 -7
  458. package/dist/utils/deviceSettings.d.ts.map +1 -1
  459. package/dist/utils/deviceVersionUtils.d.ts +7 -5
  460. package/dist/utils/deviceVersionUtils.d.ts.map +1 -1
  461. package/dist/utils/homescreen.d.ts +4 -0
  462. package/dist/utils/homescreen.d.ts.map +1 -1
  463. package/dist/utils/index.d.ts +6 -3
  464. package/dist/utils/index.d.ts.map +1 -1
  465. package/dist/utils/networkUtils.d.ts +10 -1
  466. package/dist/utils/networkUtils.d.ts.map +1 -1
  467. package/dist/utils/patch.d.ts +1 -1
  468. package/dist/utils/patch.d.ts.map +1 -1
  469. package/dist/utils/pro2Nft.d.ts +31 -0
  470. package/dist/utils/pro2Nft.d.ts.map +1 -0
  471. package/dist/utils/pro2Wallpaper.d.ts +22 -0
  472. package/dist/utils/pro2Wallpaper.d.ts.map +1 -0
  473. package/dist/utils/tracing.d.ts.map +1 -1
  474. package/dist/utils/uiProgressThrottle.d.ts +3 -0
  475. package/dist/utils/uiProgressThrottle.d.ts.map +1 -0
  476. package/package.json +4 -4
  477. package/src/api/BaseMethod.ts +53 -20
  478. package/src/api/CheckAllFirmwareRelease.ts +329 -1
  479. package/src/api/CheckBootloaderRelease.ts +1 -2
  480. package/src/api/CheckFirmwareRelease.ts +1 -2
  481. package/src/api/CipherKeyValue.ts +4 -0
  482. package/src/api/ClearSessionCache.ts +32 -0
  483. package/src/api/DetectDeviceConnectProtocol.ts +18 -0
  484. package/src/api/DirList.ts +9 -4
  485. package/src/api/DirMake.ts +7 -4
  486. package/src/api/DirRemove.ts +7 -4
  487. package/src/api/FileDelete.ts +7 -4
  488. package/src/api/FileRead.ts +15 -9
  489. package/src/api/FileWrite.ts +26 -181
  490. package/src/api/FirmwareUpdate.ts +17 -14
  491. package/src/api/FirmwareUpdateV2.ts +137 -54
  492. package/src/api/FirmwareUpdateV3.ts +9 -13
  493. package/src/api/FirmwareUpdateV4.ts +660 -580
  494. package/src/api/GetDeviceState.ts +59 -0
  495. package/src/api/GetFeatures.ts +6 -4
  496. package/src/api/GetOnekeyFeatures.ts +1 -75
  497. package/src/api/GetPassphraseState.ts +36 -21
  498. package/src/api/OpenWalletSession.ts +251 -0
  499. package/src/api/PathInfo.ts +9 -4
  500. package/src/api/PromptWebDeviceAccess.ts +2 -7
  501. package/src/api/SearchDevices.ts +31 -4
  502. package/src/api/UploadPortfolio.ts +40 -0
  503. package/src/api/alephium/AlephiumGetAddress.ts +0 -4
  504. package/src/api/alephium/AlephiumSignMessage.ts +0 -4
  505. package/src/api/alephium/AlephiumSignTransaction.ts +2 -6
  506. package/src/api/algo/AlgoGetAddress.ts +4 -0
  507. package/src/api/algo/AlgoSignTransaction.ts +4 -0
  508. package/src/api/allnetwork/AllNetworkGetAddressBase.ts +41 -32
  509. package/src/api/aptos/AptosGetAddress.ts +4 -0
  510. package/src/api/aptos/AptosGetPublicKey.ts +4 -0
  511. package/src/api/aptos/AptosSignInMessage.ts +4 -0
  512. package/src/api/aptos/AptosSignMessage.ts +4 -0
  513. package/src/api/aptos/AptosSignTransaction.ts +4 -0
  514. package/src/api/benfen/BenfenGetAddress.ts +11 -7
  515. package/src/api/benfen/BenfenGetPublicKey.ts +0 -4
  516. package/src/api/benfen/BenfenSignMessage.ts +0 -4
  517. package/src/api/benfen/BenfenSignTransaction.ts +0 -4
  518. package/src/api/btc/BTCGetAddress.ts +8 -1
  519. package/src/api/btc/BTCGetPublicKey.ts +9 -2
  520. package/src/api/btc/BTCSignMessage.ts +8 -1
  521. package/src/api/btc/BTCSignPsbt.ts +4 -0
  522. package/src/api/btc/BTCSignTransaction.ts +8 -1
  523. package/src/api/btc/BTCVerifyMessage.ts +8 -1
  524. package/src/api/btc/helpers/versionLimit.ts +7 -4
  525. package/src/api/cardano/CardanoGetAddress.ts +4 -0
  526. package/src/api/cardano/CardanoGetPublicKey.ts +4 -0
  527. package/src/api/cardano/CardanoSignMessage.ts +5 -1
  528. package/src/api/cardano/CardanoSignTransaction.ts +5 -1
  529. package/src/api/conflux/ConfluxGetAddress.ts +6 -0
  530. package/src/api/conflux/ConfluxSignMessage.ts +6 -0
  531. package/src/api/conflux/ConfluxSignMessageCIP23.ts +6 -0
  532. package/src/api/conflux/ConfluxSignTransaction.ts +8 -5
  533. package/src/api/cosmos/CosmosGetAddress.ts +4 -0
  534. package/src/api/cosmos/CosmosGetPublicKey.ts +4 -0
  535. package/src/api/cosmos/CosmosSignTransaction.ts +4 -0
  536. package/src/api/device/DeviceCancel.ts +5 -0
  537. package/src/api/device/DeviceChangePin.ts +28 -0
  538. package/src/api/device/DeviceFullyUploadResource.ts +4 -5
  539. package/src/api/device/DeviceLock.ts +5 -0
  540. package/src/api/device/DeviceRebootToBoardloader.ts +5 -0
  541. package/src/api/device/DeviceRebootToBootloader.ts +5 -0
  542. package/src/api/device/DeviceSettings.ts +194 -1
  543. package/src/api/device/DeviceSupportFeatures.ts +4 -0
  544. package/src/api/device/DeviceUnlock.ts +14 -1
  545. package/src/api/device/DeviceUpdateBootloader.ts +1 -2
  546. package/src/api/device/DeviceWipe.ts +25 -0
  547. package/src/api/device/PreInitialize.ts +4 -0
  548. package/src/api/dynex/DnxGetAddress.ts +0 -6
  549. package/src/api/dynex/DnxSignTransaction.ts +0 -6
  550. package/src/api/evm/EVMGetAddress.ts +6 -2
  551. package/src/api/evm/EVMGetPublicKey.ts +6 -2
  552. package/src/api/evm/EVMSignMessage.ts +6 -2
  553. package/src/api/evm/EVMSignMessageEIP712.ts +1 -11
  554. package/src/api/evm/EVMSignTransaction.ts +6 -2
  555. package/src/api/evm/EVMSignTypedData.ts +42 -50
  556. package/src/api/evm/EVMVerifyMessage.ts +6 -2
  557. package/src/api/evm/legacyV1/getAddress.ts +2 -2
  558. package/src/api/evm/legacyV1/getPublicKey.ts +2 -2
  559. package/src/api/evm/legacyV1/signMessage.ts +2 -2
  560. package/src/api/evm/legacyV1/signTypedData.ts +2 -2
  561. package/src/api/evm/legacyV1/signTypedHash.ts +2 -2
  562. package/src/api/evm/legacyV1/verifyMessage.ts +2 -2
  563. package/src/api/evm/protocol.ts +6 -0
  564. package/src/api/filecoin/FilecoinGetAddress.ts +4 -0
  565. package/src/api/filecoin/FilecoinSignTransaction.ts +4 -0
  566. package/src/api/firmware/FirmwareUpdateBaseMethod.ts +18 -14
  567. package/src/api/firmware/getBinary.ts +8 -3
  568. package/src/api/firmware/uploadFirmware.ts +17 -4
  569. package/src/api/helpers/batchGetPublickeys.ts +2 -2
  570. package/src/api/helpers/filesystemValidation.ts +61 -0
  571. package/src/api/helpers/paramsValidator.ts +1 -1
  572. package/src/api/helpers/protocolV2FileWrite.ts +206 -0
  573. package/src/api/index.ts +10 -26
  574. package/src/api/kaspa/KaspaGetAddress.ts +7 -0
  575. package/src/api/kaspa/KaspaSignTransaction.ts +380 -29
  576. package/src/api/kaspa/helpers/TransferSerialize.ts +17 -7
  577. package/src/api/lightning/LnurlAuth.ts +0 -4
  578. package/src/api/near/NearGetAddress.ts +4 -0
  579. package/src/api/near/NearSignTransaction.ts +4 -0
  580. package/src/api/nem/NEMGetAddress.ts +4 -0
  581. package/src/api/nem/NEMSignTransaction.ts +4 -0
  582. package/src/api/neo/NeoGetAddress.ts +0 -4
  583. package/src/api/neo/NeoSignTransaction.ts +0 -4
  584. package/src/api/nervos/NervosGetAddress.ts +0 -4
  585. package/src/api/nervos/NervosSignTransaction.ts +2 -6
  586. package/src/api/nexa/NexaGetAddress.ts +0 -4
  587. package/src/api/nexa/NexaSignTransaction.ts +3 -5
  588. package/src/api/nostr/NostrDecryptMessage.ts +4 -0
  589. package/src/api/nostr/NostrEncryptMessage.ts +4 -0
  590. package/src/api/nostr/NostrGetPublicKey.ts +4 -0
  591. package/src/api/nostr/NostrSignEvent.ts +4 -0
  592. package/src/api/nostr/NostrSignSchnorr.ts +4 -0
  593. package/src/api/polkadot/PolkadotGetAddress.ts +4 -0
  594. package/src/api/polkadot/PolkadotSignTransaction.ts +4 -0
  595. package/src/api/protocol-v2/DeviceFactoryInfoGet.ts +5 -2
  596. package/src/api/protocol-v2/DeviceFactoryInfoSet.ts +5 -2
  597. package/src/api/protocol-v2/DeviceFirmwareUpdate.ts +8 -5
  598. package/src/api/protocol-v2/DeviceGetFirmwareUpdateStatus.ts +10 -6
  599. package/src/api/protocol-v2/DeviceGetOnboardingStatus.ts +21 -0
  600. package/src/api/protocol-v2/DeviceInfoGet.ts +8 -15
  601. package/src/api/protocol-v2/DeviceReboot.ts +7 -3
  602. package/src/api/protocol-v2/DeviceStatusGet.ts +19 -0
  603. package/src/api/protocol-v2/DeviceUploadNft.ts +189 -0
  604. package/src/api/protocol-v2/DeviceUploadWallpaper.ts +134 -0
  605. package/src/api/protocol-v2/FilesystemFormat.ts +9 -3
  606. package/src/api/protocol-v2/FilesystemPermissionFix.ts +5 -2
  607. package/src/api/protocol-v2/Ping.ts +37 -3
  608. package/src/api/protocol-v2/ProtocolInfoRequest.ts +8 -3
  609. package/src/api/protocol-v2/helpers.ts +17 -17
  610. package/src/api/scdo/ScdoGetAddress.ts +0 -4
  611. package/src/api/scdo/ScdoSignMessage.ts +0 -4
  612. package/src/api/scdo/ScdoSignTransaction.ts +0 -4
  613. package/src/api/solana/SolGetAddress.ts +4 -0
  614. package/src/api/solana/SolSignMessage.ts +4 -0
  615. package/src/api/solana/SolSignOffchainMessage.ts +4 -0
  616. package/src/api/solana/SolSignTransaction.ts +4 -0
  617. package/src/api/starcoin/StarcoinGetAddress.ts +4 -0
  618. package/src/api/starcoin/StarcoinGetPublicKey.ts +4 -0
  619. package/src/api/starcoin/StarcoinSignMessage.ts +4 -0
  620. package/src/api/starcoin/StarcoinSignTransaction.ts +4 -0
  621. package/src/api/starcoin/StarcoinVerifyMessage.ts +4 -0
  622. package/src/api/stellar/StellarGetAddress.ts +1 -10
  623. package/src/api/stellar/StellarSignTransaction.ts +1 -14
  624. package/src/api/sui/SuiGetAddress.ts +4 -0
  625. package/src/api/sui/SuiGetPublicKey.ts +4 -0
  626. package/src/api/sui/SuiSignMessage.ts +4 -0
  627. package/src/api/sui/SuiSignTransaction.ts +4 -0
  628. package/src/api/ton/TonGetAddress.ts +4 -0
  629. package/src/api/ton/TonSignData.ts +5 -1
  630. package/src/api/ton/TonSignMessage.ts +4 -0
  631. package/src/api/ton/TonSignProof.ts +4 -0
  632. package/src/api/tron/TronGetAddress.ts +4 -0
  633. package/src/api/tron/TronSignMessage.ts +18 -7
  634. package/src/api/tron/TronSignTransaction.ts +4 -0
  635. package/src/api/utils.ts +7 -3
  636. package/src/api/xrp/XrpGetAddress.ts +4 -0
  637. package/src/api/xrp/XrpSignTransaction.ts +5 -1
  638. package/src/constants/index.ts +1 -4
  639. package/src/core/RequestQueue.ts +1 -0
  640. package/src/core/deviceEventRegistration.ts +27 -0
  641. package/src/core/index.ts +319 -124
  642. package/src/core/uiPromiseRegistry.ts +41 -0
  643. package/src/data/messages/messages-protocol-v2.json +1138 -441
  644. package/src/data/messages/messages.json +286 -1
  645. package/src/data-manager/DataManager.ts +42 -13
  646. package/src/data-manager/TransportManager.ts +1 -1
  647. package/src/data-manager/connectSettings.ts +4 -0
  648. package/src/device/Device.ts +878 -292
  649. package/src/device/DeviceCommands.ts +166 -158
  650. package/src/device/DeviceConnector.ts +10 -7
  651. package/src/device/DeviceFeaturesState.ts +25 -0
  652. package/src/device/DevicePool.ts +72 -17
  653. package/src/device/DeviceStateMapper.ts +374 -0
  654. package/src/device/DeviceStateProjector.ts +94 -0
  655. package/src/device/DeviceStateStore.ts +201 -0
  656. package/src/device/DeviceWalletSessionStore.ts +144 -0
  657. package/src/device/cloneDeviceState.ts +39 -0
  658. package/src/device/deviceIdentity.ts +18 -0
  659. package/src/deviceProfile/buildDeviceFeatures.ts +224 -190
  660. package/src/deviceProfile/index.ts +0 -1
  661. package/src/deviceProfile/protocolV2DeviceIdentity.ts +32 -0
  662. package/src/events/device.ts +22 -1
  663. package/src/events/logBlockEvent.ts +80 -2
  664. package/src/events/ui-promise.ts +4 -2
  665. package/src/events/ui-request.ts +61 -4
  666. package/src/events/ui-response.ts +12 -2
  667. package/src/inject.ts +73 -43
  668. package/src/lowLevelInject.ts +6 -3
  669. package/src/protocols/protocol-v2/deviceSession.ts +24 -0
  670. package/src/protocols/protocol-v2/features.ts +103 -32
  671. package/src/protocols/protocol-v2/firmware.ts +1 -1
  672. package/src/protocols/protocol-v2/index.ts +8 -1
  673. package/src/protocols/protocol-v2/resources.ts +359 -0
  674. package/src/protocols/protocol-v2/settingsUnlockPolicy.ts +65 -0
  675. package/src/protocols/protocol-v2/uiInteraction.ts +250 -0
  676. package/src/protocols/protocol-v2/unlockPolicy.ts +1 -0
  677. package/src/protocols/protocol-v2/unlockPolicyRunner.ts +124 -0
  678. package/src/protocols/protocol-v2/walletSession.ts +424 -0
  679. package/src/topLevelInject.ts +6 -3
  680. package/src/types/api/checkAllFirmwareRelease.ts +47 -4
  681. package/src/types/api/detectDeviceConnectProtocol.ts +7 -0
  682. package/src/types/api/deviceSettings.ts +26 -2
  683. package/src/types/api/deviceUnlock.ts +1 -1
  684. package/src/types/api/export.ts +8 -0
  685. package/src/types/api/firmwareUpdate.ts +26 -5
  686. package/src/types/api/getDeviceState.ts +19 -0
  687. package/src/types/api/getFeatures.ts +3 -0
  688. package/src/types/api/getOnekeyFeatures.ts +3 -0
  689. package/src/types/api/getPassphraseState.ts +9 -11
  690. package/src/types/api/index.ts +38 -64
  691. package/src/types/api/kaspaSignTransaction.ts +60 -4
  692. package/src/types/api/openWalletSession.ts +54 -0
  693. package/src/types/api/protocolV2.ts +33 -141
  694. package/src/types/api/sessionCache.ts +19 -0
  695. package/src/types/device.ts +185 -7
  696. package/src/types/params.ts +9 -2
  697. package/src/types/settings.ts +59 -16
  698. package/src/utils/assets.ts +4 -1
  699. package/src/utils/deviceFeaturesCompat.ts +180 -0
  700. package/src/utils/deviceFeaturesUtils.ts +56 -45
  701. package/src/utils/deviceInfoUtils.ts +27 -69
  702. package/src/utils/deviceSettings.ts +171 -39
  703. package/src/utils/deviceVersionUtils.ts +25 -44
  704. package/src/utils/findDefectiveBatchDevice.ts +3 -3
  705. package/src/utils/homescreen.ts +36 -0
  706. package/src/utils/index.ts +27 -3
  707. package/src/utils/networkUtils.ts +274 -16
  708. package/src/utils/pro2Nft.ts +142 -0
  709. package/src/utils/pro2Wallpaper.ts +130 -0
  710. package/src/utils/tracing.ts +3 -1
  711. package/src/utils/uiProgressThrottle.ts +63 -0
  712. package/tsconfig.type-tests.json +12 -0
  713. package/dist/api/GetDeviceInfo.d.ts +0 -9
  714. package/dist/api/GetDeviceInfo.d.ts.map +0 -1
  715. package/dist/api/firmware/progressThrottle.d.ts +0 -3
  716. package/dist/api/firmware/progressThrottle.d.ts.map +0 -1
  717. package/dist/api/protocol-v2/FilesystemDiskControl.d.ts +0 -13
  718. package/dist/api/protocol-v2/FilesystemDiskControl.d.ts.map +0 -1
  719. package/dist/deviceProfile/buildDeviceProfile.d.ts +0 -21
  720. package/dist/deviceProfile/buildDeviceProfile.d.ts.map +0 -1
  721. package/dist/types/api/getDeviceInfo.d.ts +0 -87
  722. package/dist/types/api/getDeviceInfo.d.ts.map +0 -1
  723. package/src/api/GetDeviceInfo.ts +0 -145
  724. package/src/api/firmware/progressThrottle.ts +0 -44
  725. package/src/api/protocol-v2/FilesystemDiskControl.ts +0 -50
  726. package/src/deviceProfile/buildDeviceProfile.ts +0 -352
  727. package/src/types/api/getDeviceInfo.ts +0 -101
package/src/core/index.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import semver from 'semver';
2
2
  import EventEmitter from 'events';
3
+ import { DeviceSessionPinType, 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,
@@ -32,10 +26,12 @@ import {
32
26
  createRequestContext,
33
27
  createSdkTracingContext,
34
28
  formatRequestContext,
29
+ generateInstanceId,
35
30
  getActiveRequestsByDeviceInstance,
36
31
  updateRequestContext,
37
32
  } from '../utils/tracing';
38
33
  import { Device } from '../device/Device';
34
+ import { checkLiveDeviceId } from '../device/deviceIdentity';
39
35
  import { DeviceList } from '../device/DeviceList';
40
36
  import { DevicePool } from '../device/DevicePool';
41
37
  import { PollingStateManager } from './PollingStateManager';
@@ -51,18 +47,33 @@ import {
51
47
  createDeviceMessage,
52
48
  createResponseMessage,
53
49
  createUiMessage,
50
+ formatLogMethodLabel,
51
+ getLogBlockLabel,
52
+ getSafeLogPayload,
54
53
  } from '../events';
55
54
  import TransportManager from '../data-manager/TransportManager';
56
55
  import DeviceConnector from '../device/DeviceConnector';
57
56
  import RequestQueue from './RequestQueue';
57
+ import { findUiPromiseForResponse } from './uiPromiseRegistry';
58
+ import { registerHardwareUiEventListeners } from './deviceEventRegistration';
58
59
  import { getSynchronize } from '../utils/getSynchronize';
60
+ import { runMethodWithUnlockPolicy } from '../protocols/protocol-v2/unlockPolicyRunner';
61
+ import {
62
+ ProtocolV2UiInteractionCoordinator,
63
+ isProtocolV2UiEnabled,
64
+ } from '../protocols/protocol-v2/uiInteraction';
65
+ import { createUiProgressMessageFilter } from '../utils/uiProgressThrottle';
59
66
 
60
67
  import type { ConnectSettings, Features, KnownDevice } from '../types';
61
68
  import type { CoreMessage, IFrameCallMessage, UiPromise, UiPromiseResponse } from '../events';
62
69
  import type { DeviceEvents, InitOptions, RunOptions } from '../device/Device';
63
70
  import type { SdkTracingContext } from '../utils/tracing';
64
71
  import type { Deferred } from '@onekeyfe/hd-shared';
65
- import type { LowlevelTransportSharedPlugin, OneKeyDeviceInfo } from '@onekeyfe/hd-transport';
72
+ import type {
73
+ LowlevelTransportSharedPlugin,
74
+ OneKeyDeviceInfo,
75
+ TransportDeviceDisconnectEvent,
76
+ } from '@onekeyfe/hd-transport';
66
77
  import type { BaseMethod } from '../api/BaseMethod';
67
78
 
68
79
  const Log = getLogger(LoggerNames.Core);
@@ -91,14 +102,15 @@ function hasDeriveCardano(method: BaseMethod): boolean {
91
102
 
92
103
  const parseInitOptions = (method?: BaseMethod): InitOptions => ({
93
104
  initSession: method?.payload.initSession,
94
- passphraseState: method?.payload.passphraseState,
105
+ passphraseState: method?.payload.useEmptyPassphrase ? undefined : method?.payload.passphraseState,
95
106
  deviceId: method?.payload.deviceId,
96
107
  deriveCardano: method && hasDeriveCardano(method),
97
108
  connectProtocol: method?.payload.connectProtocol,
109
+ forceProtocolDetection: method?.payload.forceProtocolDetection,
98
110
  protocolV2DeviceInfoTimeoutMs: method?.payload.protocolV2DeviceInfoTimeoutMs,
99
111
  });
100
112
 
101
- let _core: Core;
113
+ let _core: Core | undefined;
102
114
  let _deviceList: DeviceList | undefined;
103
115
  let _connector: DeviceConnector | undefined;
104
116
  let _uiPromises: UiPromise<UiPromiseResponse['type']>[] = []; // Waiting for ui response
@@ -142,11 +154,16 @@ export const callAPI = async (context: CoreContext, message: CoreMessage) => {
142
154
  }
143
155
 
144
156
  // find api method
145
- let method: BaseMethod;
157
+ let method!: BaseMethod;
146
158
  try {
147
159
  method = findMethod(message as IFrameCallMessage);
148
160
  method.connector = _connector;
149
- method.postMessage = postMessage;
161
+ const shouldPostMessage = createUiProgressMessageFilter();
162
+ method.postMessage = event => {
163
+ if (shouldPostMessage(event)) {
164
+ postMessage(event);
165
+ }
166
+ };
150
167
  method.setContext?.(context);
151
168
 
152
169
  method.requestContext = createRequestContext(method.responseID, method.name, {
@@ -158,11 +175,13 @@ export const callAPI = async (context: CoreContext, message: CoreMessage) => {
158
175
 
159
176
  method.init();
160
177
  } catch (error) {
161
- return Promise.reject(error);
178
+ if (method) {
179
+ completeMethodRequestContext(method, error);
180
+ method.dispose();
181
+ }
182
+ return createResponseMessage(method?.responseID ?? message.id, false, { error });
162
183
  }
163
184
 
164
- DevicePool.emitter.on(DEVICE.CONNECT, onDeviceConnectHandler);
165
-
166
185
  if (!method.useDevice) {
167
186
  updateMethodRequestContext(method, { status: 'running' });
168
187
  try {
@@ -357,7 +376,7 @@ const onCallDevice = async (
357
376
  );
358
377
  } catch (e) {
359
378
  preWarmCallbackTask?.resolve();
360
- console.log('ensureConnected error: ', e);
379
+ Log.debug('ensureConnected error: ', e);
361
380
 
362
381
  completeMethodRequestContext(method, e);
363
382
 
@@ -394,18 +413,28 @@ const onCallDevice = async (
394
413
  );
395
414
  }
396
415
 
397
- device.on(DEVICE.PIN, onDevicePinHandler);
398
- device.on(DEVICE.BUTTON, onDeviceButtonHandler);
399
- device.on(
400
- DEVICE.PASSPHRASE,
401
- message.payload.useEmptyPassphrase ? onEmptyPassphraseHandler : onDevicePassphraseHandler
402
- );
403
- device.on(DEVICE.PASSPHRASE_ON_DEVICE, onEnterPassphraseOnDeviceHandler);
416
+ registerHardwareUiEventListeners(device, {
417
+ pin: onDevicePinHandler,
418
+ pinOnDevice: onEnterPinOnDeviceHandler,
419
+ pinOnDeviceComplete: onPinOnDeviceCompleteHandler,
420
+ button: onDeviceButtonHandler,
421
+ passphrase: message.payload.useEmptyPassphrase
422
+ ? onEmptyPassphraseHandler
423
+ : onDevicePassphraseHandler,
424
+ passphraseOnDevice: onEnterPassphraseOnDeviceHandler,
425
+ attachPinOnDevice: onEnterAttachPinOnDeviceHandler,
426
+ });
404
427
  device.on(DEVICE.FEATURES, onDeviceFeaturesHandler);
428
+ device.on(DEVICE.STATE, onDeviceStateHandler);
405
429
  device.on(
406
430
  DEVICE.SELECT_DEVICE_IN_BOOTLOADER_FOR_WEB_DEVICE,
407
431
  onSelectDeviceInBootloaderForWebDeviceHandler
408
432
  );
433
+
434
+ const protocolV2UiCoordinator = new ProtocolV2UiInteractionCoordinator(device, postMessage);
435
+ let protocolV2Operation = false;
436
+ let protocolV2CloseEmitted = false;
437
+ device.beginProtocolV2UiInteraction();
409
438
  device.on(
410
439
  DEVICE.SELECT_DEVICE_FOR_SWITCH_FIRMWARE_WEB_DEVICE,
411
440
  onSelectDeviceForSwitchFirmwareWebDeviceHandler
@@ -420,11 +449,10 @@ const onCallDevice = async (
420
449
  await waitForPendingPromise(getPrePendingCallPromise, setPrePendingCallPromise);
421
450
 
422
451
  const inner = async (): Promise<void> => {
423
- // Protocol V2 专属方法统一守卫:协议在 acquire/initialize 后已确定,
424
- // V2 设备直接抛出明确的 NotSupport 错误(见 BaseMethod.requireProtocolV2)。
425
- if (method.requireProtocolV2 && !device.isProtocolV2()) {
426
- throw createDeviceNotSupportMethodError(method.name, device.getCurrentFirmwareType());
427
- }
452
+ // Protocol is established from an active device response during acquire/initialize.
453
+ // Reject unsupported methods before any method-specific device command is sent.
454
+ method.assertProtocolSupported(device.getProtocol(), device.getCurrentFirmwareType());
455
+ protocolV2Operation = device.isProtocolV2();
428
456
 
429
457
  // check firmware version
430
458
  const versionRange = device.getCurrentMethodVersionRange(
@@ -435,8 +463,8 @@ const onCallDevice = async (
435
463
  const deviceFirmwareType = device.getCurrentFirmwareType();
436
464
  let newVersionStatus: ReturnType<typeof DataManager.getFirmwareStatus> | undefined;
437
465
 
438
- // 故障批次检测与远端强制升级门禁基于 V1 features/remote config
439
- // Pro2(V2) 暂不参与:profile 版的 firmwareStatus 需要 DataManager 支持后再接入。
466
+ // Defective-batch and forced-update gates depend on V1 features/remote config.
467
+ // Pro2 joins after DataManager supports its profile firmwareStatus.
440
468
  if (device.features && !device.isProtocolV2()) {
441
469
  await DataManager.checkAndReloadData();
442
470
 
@@ -484,10 +512,6 @@ const onCallDevice = async (
484
512
  }
485
513
  }
486
514
 
487
- if (isMethodVersionRangeUnsupported(versionRange)) {
488
- throw createDeviceNotSupportMethodError(method.name, deviceFirmwareType);
489
- }
490
-
491
515
  if (versionRange) {
492
516
  if (semver.valid(versionRange.min) && semver.lt(currentFirmwareVersion, versionRange.min)) {
493
517
  if (newVersionStatus === 'none' || newVersionStatus === 'valid') {
@@ -538,85 +562,92 @@ const onCallDevice = async (
538
562
  );
539
563
  }
540
564
 
541
- if (method.deviceId && method.checkDeviceId) {
542
- const isSameDeviceID = device.checkDeviceId(method.deviceId);
543
- if (!isSameDeviceID) {
544
- return Promise.reject(ERRORS.TypedError(HardwareErrorCode.DeviceCheckDeviceIdError));
545
- }
546
- }
547
-
548
- /**
549
- * check firmware release info
550
- */
551
- method.checkFirmwareRelease();
565
+ try {
566
+ let deviceIdCheckedDuringUnlockPreflight = false;
567
+ const response = await runMethodWithUnlockPolicy<object>(method, device, {
568
+ uiCoordinator: protocolV2UiCoordinator,
569
+ afterStatusBeforeUnlock: () => {
570
+ if (method.deviceId && method.checkDeviceId) {
571
+ if (!device.checkDeviceId(method.deviceId)) {
572
+ throw ERRORS.TypedError(HardwareErrorCode.DeviceCheckDeviceIdError);
573
+ }
574
+ deviceIdCheckedDuringUnlockPreflight = true;
575
+ }
576
+ },
577
+ prepare: async () => {
578
+ if (method.deviceId && method.checkDeviceId && !deviceIdCheckedDuringUnlockPreflight) {
579
+ const isSameDeviceID = await checkLiveDeviceId(device, method.deviceId);
580
+ if (!isSameDeviceID) {
581
+ throw ERRORS.TypedError(HardwareErrorCode.DeviceCheckDeviceIdError);
582
+ }
583
+ }
552
584
 
553
- /**
554
- * check additional supported feature
555
- */
556
- method.checkDeviceSupportFeature();
585
+ /**
586
+ * check firmware release info
587
+ */
588
+ method.checkFirmwareRelease();
557
589
 
558
- // reconfigure messages
559
- if (_deviceList && device.features && !device.isProtocolV2()) {
560
- await TransportManager.reconfigure(device.features);
561
- }
590
+ /**
591
+ * check additional supported feature
592
+ */
593
+ method.checkDeviceSupportFeature();
562
594
 
563
- // Check to see if it is safe to use Passphrase
564
- checkPassphraseEnableState(method, device.features);
595
+ // reconfigure messages
596
+ if (_deviceList && device.features && !device.isProtocolV2()) {
597
+ await TransportManager.reconfigure(device.features);
598
+ }
565
599
 
566
- if (shouldCheckPassphraseState(method, device)) {
567
- // check version
568
- const support = device.supportNewPassphrase();
569
- if (!support.support) {
570
- return Promise.reject(
571
- ERRORS.TypedError(
572
- HardwareErrorCode.DeviceNotSupportPassphrase,
573
- `Device not support passphrase, please update to ${support.require}`,
574
- {
575
- require: support.require,
600
+ // Check to see if it is safe to use Passphrase
601
+ checkPassphraseEnableState(method, device.features);
602
+
603
+ if (shouldCheckPassphraseState(method, device)) {
604
+ // check version
605
+ const support = device.supportNewPassphrase();
606
+ if (!support.support) {
607
+ throw ERRORS.TypedError(
608
+ HardwareErrorCode.DeviceNotSupportPassphrase,
609
+ `Device not support passphrase, please update to ${support.require}`,
610
+ {
611
+ require: support.require,
612
+ }
613
+ );
576
614
  }
577
- )
578
- );
579
- }
580
615
 
581
- // Check Device passphrase State
582
- const passphraseStateSafety = await device.checkPassphraseStateSafety(
583
- method.payload?.passphraseState,
584
- method.payload?.useEmptyPassphrase,
585
- method.payload?.skipPassphraseCheck
586
- );
616
+ // Check Device passphrase State after the Protocol V2 pre-unlock gate.
617
+ const passphraseStateSafety = await device.checkPassphraseStateSafety(
618
+ method.payload?.passphraseState,
619
+ method.payload?.useEmptyPassphrase,
620
+ method.payload?.skipPassphraseCheck,
621
+ hasDeriveCardano(method)
622
+ );
587
623
 
588
- // Double check, handles the special case of Touch/Pro
589
- checkPassphraseEnableState(method, device.features);
624
+ // Double check, handles the special case of Touch/Pro
625
+ checkPassphraseEnableState(method, device.features);
590
626
 
591
- if (!passphraseStateSafety) {
592
- DevicePool.clearDeviceCache(method.payload.connectId);
593
- return Promise.reject(
594
- ERRORS.TypedError(HardwareErrorCode.DeviceCheckPassphraseStateError)
595
- );
596
- }
597
-
598
- // close pin popup window
599
- postMessage(createUiMessage(UI_REQUEST.CLOSE_UI_PIN_WINDOW));
600
- }
627
+ if (!passphraseStateSafety) {
628
+ DevicePool.clearDeviceCache(method.payload.connectId);
629
+ throw ERRORS.TypedError(HardwareErrorCode.DeviceCheckPassphraseStateError);
630
+ }
601
631
 
602
- // Automatic check safety_check level for Kovan, Ropsten, Rinkeby, Goerli test networks.
603
- try {
604
- await method.checkSafetyLevelOnTestNet();
605
- } catch (e) {
606
- const error =
607
- e instanceof HardwareError
608
- ? e
609
- : ERRORS.TypedError(HardwareErrorCode.RuntimeError, 'open safety check failed.');
610
- // messageResponse = createResponseMessage(method.responseID, false, { error });
611
- // requestQueue.resolveRequest(method.responseID, messageResponse);
612
- // return;
613
- throw error;
614
- }
632
+ // Protocol V2 emits the PIN phase completion from DeviceSessionAskPin.
633
+ // Keep the legacy compatibility close for Protocol V1 only.
634
+ if (!device.isProtocolV2()) {
635
+ postMessage(createUiMessage(UI_REQUEST.CLOSE_UI_PIN_WINDOW));
636
+ }
637
+ }
615
638
 
616
- method.device?.commands?.checkDisposed();
639
+ // Automatic check safety_check level for Kovan, Ropsten, Rinkeby, Goerli test networks.
640
+ try {
641
+ await method.checkSafetyLevelOnTestNet();
642
+ } catch (e) {
643
+ throw e instanceof HardwareError
644
+ ? e
645
+ : ERRORS.TypedError(HardwareErrorCode.RuntimeError, 'open safety check failed.');
646
+ }
617
647
 
618
- try {
619
- const response: object = await method.run();
648
+ method.device?.commands?.checkDisposed();
649
+ },
650
+ });
620
651
  messageResponse = createResponseMessage(method.responseID, true, response);
621
652
  requestQueue.resolveRequest(method.responseID, messageResponse);
622
653
  completeMethodRequestContext(method);
@@ -633,6 +664,13 @@ const onCallDevice = async (
633
664
  ) {
634
665
  throw error;
635
666
  }
667
+ } finally {
668
+ if (isProtocolV2UiEnabled(method)) {
669
+ protocolV2CloseEmitted = protocolV2UiCoordinator.close({
670
+ ensureOperationClose: protocolV2Operation,
671
+ protocolV2Operation,
672
+ });
673
+ }
636
674
  }
637
675
  };
638
676
  Log.debug('Call API - Device Run: ', device.mainId);
@@ -686,7 +724,17 @@ const onCallDevice = async (
686
724
 
687
725
  requestQueue.releaseTask(method.responseID);
688
726
 
689
- closePopup();
727
+ if (isProtocolV2UiEnabled(method)) {
728
+ if (!protocolV2CloseEmitted && protocolV2Operation) {
729
+ protocolV2CloseEmitted = protocolV2UiCoordinator.close({
730
+ ensureOperationClose: true,
731
+ protocolV2Operation: true,
732
+ });
733
+ }
734
+ if (!protocolV2CloseEmitted) {
735
+ closePopup();
736
+ }
737
+ }
690
738
 
691
739
  cleanup();
692
740
 
@@ -848,8 +896,23 @@ function isRetryableBleProtocolV2ProbeError(method: BaseMethod, error: unknown)
848
896
  */
849
897
  async function connectDeviceForBle(method: BaseMethod, device: Device, retryCount = 0) {
850
898
  try {
851
- await device.acquire(method.payload.connectProtocol);
899
+ if (method.payload.forceProtocolDetection && device.hasDeviceAcquire()) {
900
+ await device.release();
901
+ }
902
+ const shouldAcquire =
903
+ method.payload.forceProtocolDetection ||
904
+ !device.hasDeviceAcquire() ||
905
+ !device.commands ||
906
+ device.commands.disposed;
907
+ if (shouldAcquire) {
908
+ await device.acquire(method.payload.connectProtocol, {
909
+ forceProtocolDetection: method.payload.forceProtocolDetection,
910
+ });
911
+ }
852
912
  if (method.payload?.onlyConnectBleDevice) {
913
+ if (shouldAcquire) {
914
+ DevicePool.emitter.emit(DEVICE.CONNECT, device);
915
+ }
853
916
  return;
854
917
  }
855
918
  // Skip initialize if conditions are met
@@ -860,6 +923,9 @@ async function connectDeviceForBle(method: BaseMethod, device: Device, retryCoun
860
923
  passphraseState: initOptions.passphraseState,
861
924
  });
862
925
  }
926
+ if (shouldAcquire) {
927
+ DevicePool.emitter.emit(DEVICE.CONNECT, device);
928
+ }
863
929
  } catch (err) {
864
930
  if (
865
931
  (err.errorCode === HardwareErrorCode.BleTimeoutError ||
@@ -1160,8 +1226,6 @@ const cleanup = () => {
1160
1226
 
1161
1227
  const removeDeviceListener = (device: Device) => {
1162
1228
  device.removeAllListeners();
1163
- DevicePool.emitter.removeAllListeners(DEVICE.CONNECT);
1164
- // DevicePool.emitter.removeListener(DEVICE.DISCONNECT, onDeviceDisconnectHandler);
1165
1229
  };
1166
1230
 
1167
1231
  /**
@@ -1172,16 +1236,30 @@ const closePopup = () => {
1172
1236
  };
1173
1237
 
1174
1238
  const onDeviceConnectHandler = (device: Device) => {
1175
- const env = DataManager.getSettings('env');
1176
- const deviceObject = DataManager.isBleConnect(env) ? device : device.toMessageObject();
1177
- postMessage(createDeviceMessage(DEVICE.CONNECT, { device: deviceObject as KnownDevice }));
1239
+ const deviceObject = device.toMessageObject();
1240
+ if (!deviceObject) return;
1241
+ postMessage(createDeviceMessage(DEVICE.CONNECT, { device: deviceObject }));
1178
1242
  };
1179
1243
 
1180
1244
  const onDeviceDisconnectHandler = (device: Device) => {
1181
1245
  device.clearPreInitialized();
1182
- const env = DataManager.getSettings('env');
1183
- const deviceObject = DataManager.isBleConnect(env) ? device : device.toMessageObject();
1184
- postMessage(createDeviceMessage(DEVICE.DISCONNECT, { device: deviceObject as KnownDevice }));
1246
+ const deviceObject = device.toMessageObject();
1247
+ if (!deviceObject) return;
1248
+ postMessage(createDeviceMessage(DEVICE.DISCONNECT, { device: deviceObject }));
1249
+ };
1250
+
1251
+ const onTransportDeviceDisconnectHandler = (event: TransportDeviceDisconnectEvent) => {
1252
+ const device =
1253
+ deviceCacheMap.get(event.connectId) ??
1254
+ DevicePool.devicesCache[event.connectId] ??
1255
+ DevicePool.getDeviceByPath(event.connectId);
1256
+ if (!device) {
1257
+ Log.debug('Ignoring transport disconnect for an unknown device:', event.connectId);
1258
+ return;
1259
+ }
1260
+
1261
+ device.markTransportDisconnected();
1262
+ DevicePool.emitter.emit(DEVICE.DISCONNECT, device);
1185
1263
  };
1186
1264
 
1187
1265
  const onDevicePinHandler = async (...[device, type, callback]: DeviceEvents['pin']) => {
@@ -1193,6 +1271,7 @@ const onDevicePinHandler = async (...[device, type, callback]: DeviceEvents['pin
1193
1271
  createUiMessage(UI_REQUEST.REQUEST_PIN, {
1194
1272
  device: device.toMessageObject() as unknown as KnownDevice,
1195
1273
  type,
1274
+ responseCorrelation: uiPromise.responseCorrelation,
1196
1275
  })
1197
1276
  );
1198
1277
  // wait for pin
@@ -1222,6 +1301,10 @@ const onDeviceFeaturesHandler = (...[_, features]: [...DeviceEvents['features']]
1222
1301
  postMessage(createDeviceMessage(DEVICE.FEATURES, { ...features }));
1223
1302
  };
1224
1303
 
1304
+ const onDeviceStateHandler = (...[_, stateEvent]: [...DeviceEvents['state']]) => {
1305
+ postMessage(createDeviceMessage(DEVICE.STATE, stateEvent));
1306
+ };
1307
+
1225
1308
  const onDevicePassphraseHandler = async (
1226
1309
  ...[device, requestPayload, callback]: DeviceEvents['passphrase']
1227
1310
  ) => {
@@ -1232,6 +1315,12 @@ const onDevicePassphraseHandler = async (
1232
1315
  device: device.toMessageObject() as KnownDevice,
1233
1316
  passphraseState: device.passphraseState,
1234
1317
  existsAttachPinUser: requestPayload.existsAttachPinUser,
1318
+ deviceOnly: requestPayload.deviceOnly,
1319
+ source: requestPayload.source,
1320
+ reason: requestPayload.reason,
1321
+ expectedPassphraseState: requestPayload.expectedPassphraseState,
1322
+ ...(requestPayload.interaction ? { interaction: requestPayload.interaction } : {}),
1323
+ responseCorrelation: uiPromise.responseCorrelation,
1235
1324
  })
1236
1325
  );
1237
1326
  // wait for passphrase
@@ -1253,16 +1342,61 @@ const onEmptyPassphraseHandler = (...[_, , callback]: DeviceEvents['passphrase']
1253
1342
  };
1254
1343
 
1255
1344
  const onEnterPassphraseOnDeviceHandler = (
1256
- ...[device]: [...DeviceEvents['passphrase_on_device']]
1345
+ ...[device, requestPayload]: [...DeviceEvents['passphrase_on_device']]
1257
1346
  ) => {
1258
1347
  postMessage(
1259
1348
  createUiMessage(UI_REQUEST.REQUEST_PASSPHRASE_ON_DEVICE, {
1260
1349
  device: device.toMessageObject() as KnownDevice,
1261
1350
  passphraseState: device.passphraseState,
1351
+ source: requestPayload?.source,
1352
+ reason: requestPayload?.reason,
1353
+ ...(requestPayload?.interaction ? { interaction: requestPayload.interaction } : {}),
1262
1354
  })
1263
1355
  );
1264
1356
  };
1265
1357
 
1358
+ const onEnterAttachPinOnDeviceHandler = (
1359
+ ...[device, requestPayload]: [...DeviceEvents['attach_pin_on_device']]
1360
+ ) => {
1361
+ postMessage(
1362
+ createUiMessage(UI_REQUEST.REQUEST_PIN, {
1363
+ device: device.toMessageObject() as KnownDevice,
1364
+ type: 'ButtonRequest_AttachPin',
1365
+ source: requestPayload?.source,
1366
+ reason: requestPayload?.reason,
1367
+ ...(requestPayload?.interaction ? { interaction: requestPayload.interaction } : {}),
1368
+ })
1369
+ );
1370
+ };
1371
+
1372
+ const onEnterPinOnDeviceHandler = (
1373
+ ...[device, pinType, metadata]: [...DeviceEvents['pin_on_device']]
1374
+ ) => {
1375
+ postMessage(
1376
+ createUiMessage(UI_REQUEST.REQUEST_PIN, {
1377
+ device: device.toMessageObject() as KnownDevice,
1378
+ type:
1379
+ pinType === DeviceSessionPinType.AttachToPin
1380
+ ? 'ButtonRequest_AttachPin'
1381
+ : 'ButtonRequest_PinEntry',
1382
+ source: metadata?.source,
1383
+ reason: metadata?.reason,
1384
+ deviceOnly: metadata?.deviceOnly ?? true,
1385
+ completion: metadata?.completion,
1386
+ method: metadata?.method,
1387
+ page: metadata?.page,
1388
+ operation: metadata?.operation,
1389
+ ...(metadata?.interaction ? { interaction: metadata.interaction } : {}),
1390
+ })
1391
+ );
1392
+ };
1393
+
1394
+ const onPinOnDeviceCompleteHandler = (
1395
+ ...[_, metadata]: [...DeviceEvents['pin_on_device_complete']]
1396
+ ) => {
1397
+ postMessage(createUiMessage(UI_REQUEST.CLOSE_UI_PIN_WINDOW, metadata));
1398
+ };
1399
+
1266
1400
  const onSelectDeviceInBootloaderForWebDeviceHandler = async (
1267
1401
  ...[device, callback]: [...DeviceEvents['select_device_in_bootloader_for_web_device']]
1268
1402
  ) => {
@@ -1310,14 +1444,21 @@ const postMessage = (message: CoreMessage) => {
1310
1444
 
1311
1445
  const createUiPromise = <T extends UiPromiseResponse['type']>(promiseEvent: T, device?: Device) => {
1312
1446
  const uiPromise: UiPromise<T> = createDeferred(promiseEvent, device);
1447
+ if (
1448
+ device &&
1449
+ (promiseEvent === UI_RESPONSE.RECEIVE_PIN || promiseEvent === UI_RESPONSE.RECEIVE_PASSPHRASE)
1450
+ ) {
1451
+ const publicDeviceId = device.toMessageObject()?.deviceId;
1452
+ uiPromise.responseCorrelation = {
1453
+ interactionId: generateInstanceId('UiResponse', device.sdkInstanceId),
1454
+ deviceId: publicDeviceId || device.instanceId,
1455
+ };
1456
+ }
1313
1457
  _uiPromises.push(uiPromise as any);
1314
1458
 
1315
1459
  return uiPromise;
1316
1460
  };
1317
1461
 
1318
- const findUiPromise = <T extends UiPromiseResponse['type']>(promiseEvent: T) =>
1319
- _uiPromises.find(p => p.id === promiseEvent);
1320
-
1321
1462
  const removeUiPromise = (promise: Deferred<any>) => {
1322
1463
  _uiPromises = _uiPromises.filter(p => p !== promise);
1323
1464
  };
@@ -1329,6 +1470,8 @@ export default class Core extends EventEmitter {
1329
1470
 
1330
1471
  private requestQueue = new RequestQueue();
1331
1472
 
1473
+ private disposePromise?: Promise<void>;
1474
+
1332
1475
  // background task
1333
1476
  private prePendingCallPromise: Promise<void> | undefined;
1334
1477
 
@@ -1367,11 +1510,16 @@ export default class Core extends EventEmitter {
1367
1510
  case UI_RESPONSE.RECEIVE_PASSPHRASE:
1368
1511
  case UI_RESPONSE.SELECT_DEVICE_IN_BOOTLOADER_FOR_WEB_DEVICE:
1369
1512
  case UI_RESPONSE.SELECT_DEVICE_FOR_SWITCH_FIRMWARE_WEB_DEVICE: {
1370
- const uiPromise = findUiPromise(message.type);
1513
+ const uiPromise = findUiPromiseForResponse(_uiPromises, message);
1371
1514
  if (uiPromise) {
1372
1515
  Log.log('receive UI Response: ', message.type);
1373
1516
  uiPromise.resolve(message);
1374
1517
  removeUiPromise(uiPromise);
1518
+ } else if (
1519
+ message.type === UI_RESPONSE.RECEIVE_PIN ||
1520
+ message.type === UI_RESPONSE.RECEIVE_PASSPHRASE
1521
+ ) {
1522
+ Log.warn('Ignored unmatched or ambiguous sensitive UI response:', message.type);
1375
1523
  }
1376
1524
  break;
1377
1525
  }
@@ -1387,10 +1535,17 @@ export default class Core extends EventEmitter {
1387
1535
  }
1388
1536
 
1389
1537
  case IFRAME.CALL: {
1390
- Log.log(`[${Date.now()}][CALL_API]`, message);
1538
+ const logBlockLabel = getLogBlockLabel(message);
1539
+ Log.log(
1540
+ formatLogMethodLabel(`[${Date.now()}][CALL_API]`, logBlockLabel),
1541
+ getSafeLogPayload(message, logBlockLabel)
1542
+ );
1391
1543
  const response = await callAPI(this.getCoreContext(), message);
1392
1544
  const { success, payload } = response;
1393
- Log.log(`[${Date.now()}][CALL_API_RESPONSE]`, response);
1545
+ Log.log(
1546
+ formatLogMethodLabel(`[${Date.now()}][CALL_API_RESPONSE]`, logBlockLabel),
1547
+ getSafeLogPayload(response, logBlockLabel)
1548
+ );
1394
1549
  if (success) {
1395
1550
  return response;
1396
1551
  }
@@ -1420,25 +1575,65 @@ export default class Core extends EventEmitter {
1420
1575
  return Promise.resolve(message);
1421
1576
  }
1422
1577
 
1423
- dispose() {
1578
+ dispose(): Promise<void> {
1579
+ if (!this.disposePromise) {
1580
+ this.disposePromise = this.disposeResources();
1581
+ }
1582
+ return this.disposePromise;
1583
+ }
1584
+
1585
+ private async disposeResources(): Promise<void> {
1586
+ Log.debug(`[Core] Disposing SDK instance: ${this.sdkInstanceId}`);
1587
+ pollingManager.stopAll();
1588
+ this.requestQueue.abortAllRequests();
1589
+ cleanup();
1590
+
1591
+ _connector?.stop();
1592
+ let transportCleanup: Promise<void>;
1593
+ try {
1594
+ transportCleanup = Promise.resolve(TransportManager.getTransport()?.stop?.()).catch(error => {
1595
+ Log.warn('[Core] Transport cleanup failed:', error);
1596
+ });
1597
+ } catch (error) {
1598
+ Log.warn('[Core] Transport cleanup failed:', error);
1599
+ transportCleanup = Promise.resolve();
1600
+ }
1601
+
1602
+ // Preserve synchronous dispose semantics for in-memory state and listeners.
1424
1603
  _deviceList = undefined;
1425
1604
  _connector = undefined;
1605
+ DevicePool.dispose();
1426
1606
  deviceCacheMap.clear();
1427
1607
  preWarmInflight.clear();
1428
1608
  preWarmDoneAt.clear();
1429
- Log.debug(`[Core] Disposing SDK instance: ${this.sdkInstanceId}`);
1609
+ preConnectCache = { passphraseState: undefined };
1610
+ this.prePendingCallPromise = undefined;
1611
+ this.removeAllListeners();
1430
1612
  cleanupSdkInstance(this.sdkInstanceId);
1613
+ if (_core === this) _core = undefined;
1614
+
1615
+ // Transports, especially Node USB, may release native handles asynchronously.
1616
+ await transportCleanup;
1431
1617
  }
1432
1618
  }
1433
1619
 
1434
1620
  export const initCore = () => {
1435
- _core = new Core();
1436
- return _core;
1621
+ const core = new Core();
1622
+ _core = core;
1623
+ return core;
1437
1624
  };
1438
1625
 
1439
1626
  export const initConnector = () => {
1440
1627
  _connector = new DeviceConnector();
1628
+ DevicePool.emitter.removeListener(DEVICE.CONNECT, onDeviceConnectHandler);
1629
+ DevicePool.emitter.removeListener(DEVICE.DISCONNECT, onDeviceDisconnectHandler);
1630
+ DevicePool.emitter.removeListener(
1631
+ TRANSPORT_EVENT.DEVICE_DISCONNECT,
1632
+ onTransportDeviceDisconnectHandler
1633
+ );
1634
+ DevicePool.emitter.on(DEVICE.CONNECT, onDeviceConnectHandler);
1441
1635
  DevicePool.emitter.on(DEVICE.DISCONNECT, onDeviceDisconnectHandler);
1636
+ DevicePool.emitter.on(TRANSPORT_EVENT.DEVICE_DISCONNECT, onTransportDeviceDisconnectHandler);
1442
1637
  return _connector;
1443
1638
  };
1444
1639