@onekeyfe/hd-core 1.2.0-alpha.4 → 1.2.0-alpha.40

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 (693) 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 +282 -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 +249 -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 +187 -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 +113 -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 +1609 -0
  40. package/__tests__/pro2Nft.test.ts +108 -0
  41. package/__tests__/pro2Wallpaper.test.ts +39 -0
  42. package/__tests__/protocol-v2-bootloader-mode.test.ts +37 -0
  43. package/__tests__/protocol-v2-firmware-targets.test.ts +37 -0
  44. package/__tests__/protocol-v2-ping.test.ts +28 -0
  45. package/__tests__/protocol-v2-ui-lifecycle.test.ts +56 -0
  46. package/__tests__/protocol-v2-unlock-policy.test.ts +96 -0
  47. package/__tests__/protocol-v2.test.ts +5748 -2387
  48. package/__tests__/protocolV2FileWrite.test.ts +92 -0
  49. package/__tests__/protocolV2UiInteraction.test.ts +266 -0
  50. package/__tests__/public-device-state-api.test.ts +275 -0
  51. package/__tests__/public-pro2-api-boundary.test.ts +107 -0
  52. package/__tests__/refresh-device-state.test.ts +101 -0
  53. package/__tests__/request-context-logging.test.ts +16 -0
  54. package/__tests__/search-devices.test.ts +136 -0
  55. package/__tests__/tron-sign-message-init.test.ts +74 -0
  56. package/__tests__/uiProgressThrottle.test.ts +74 -0
  57. package/dist/api/BaseMethod.d.ts +16 -1
  58. package/dist/api/BaseMethod.d.ts.map +1 -1
  59. package/dist/api/CheckAllFirmwareRelease.d.ts +24 -1
  60. package/dist/api/CheckAllFirmwareRelease.d.ts.map +1 -1
  61. package/dist/api/CheckBootloaderRelease.d.ts.map +1 -1
  62. package/dist/api/CheckFirmwareRelease.d.ts.map +1 -1
  63. package/dist/api/CipherKeyValue.d.ts +1 -0
  64. package/dist/api/CipherKeyValue.d.ts.map +1 -1
  65. package/dist/api/ClearSessionCache.d.ts +9 -0
  66. package/dist/api/ClearSessionCache.d.ts.map +1 -0
  67. package/dist/api/DirList.d.ts +1 -0
  68. package/dist/api/DirList.d.ts.map +1 -1
  69. package/dist/api/DirMake.d.ts +1 -0
  70. package/dist/api/DirMake.d.ts.map +1 -1
  71. package/dist/api/DirRemove.d.ts +1 -0
  72. package/dist/api/DirRemove.d.ts.map +1 -1
  73. package/dist/api/FileDelete.d.ts +1 -0
  74. package/dist/api/FileDelete.d.ts.map +1 -1
  75. package/dist/api/FileRead.d.ts +1 -0
  76. package/dist/api/FileRead.d.ts.map +1 -1
  77. package/dist/api/FileWrite.d.ts +2 -0
  78. package/dist/api/FileWrite.d.ts.map +1 -1
  79. package/dist/api/FirmwareUpdate.d.ts.map +1 -1
  80. package/dist/api/FirmwareUpdateV2.d.ts +2 -2
  81. package/dist/api/FirmwareUpdateV2.d.ts.map +1 -1
  82. package/dist/api/FirmwareUpdateV3.d.ts.map +1 -1
  83. package/dist/api/FirmwareUpdateV4.d.ts +23 -14
  84. package/dist/api/FirmwareUpdateV4.d.ts.map +1 -1
  85. package/dist/api/GetDeviceState.d.ts +8 -0
  86. package/dist/api/GetDeviceState.d.ts.map +1 -0
  87. package/dist/api/GetFeatures.d.ts +1 -1
  88. package/dist/api/GetFeatures.d.ts.map +1 -1
  89. package/dist/api/GetOnekeyFeatures.d.ts.map +1 -1
  90. package/dist/api/GetPassphraseState.d.ts +2 -6
  91. package/dist/api/GetPassphraseState.d.ts.map +1 -1
  92. package/dist/api/OpenWalletSession.d.ts +8 -0
  93. package/dist/api/OpenWalletSession.d.ts.map +1 -0
  94. package/dist/api/PathInfo.d.ts +1 -0
  95. package/dist/api/PathInfo.d.ts.map +1 -1
  96. package/dist/api/PromptWebDeviceAccess.d.ts.map +1 -1
  97. package/dist/api/SearchDevices.d.ts +3 -0
  98. package/dist/api/SearchDevices.d.ts.map +1 -1
  99. package/dist/api/UploadPortfolio.d.ts +17 -0
  100. package/dist/api/UploadPortfolio.d.ts.map +1 -0
  101. package/dist/api/alephium/AlephiumGetAddress.d.ts.map +1 -1
  102. package/dist/api/alephium/AlephiumSignMessage.d.ts.map +1 -1
  103. package/dist/api/alephium/AlephiumSignTransaction.d.ts.map +1 -1
  104. package/dist/api/algo/AlgoGetAddress.d.ts +1 -0
  105. package/dist/api/algo/AlgoGetAddress.d.ts.map +1 -1
  106. package/dist/api/algo/AlgoSignTransaction.d.ts +1 -0
  107. package/dist/api/algo/AlgoSignTransaction.d.ts.map +1 -1
  108. package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts +1 -0
  109. package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts.map +1 -1
  110. package/dist/api/aptos/AptosGetAddress.d.ts +1 -0
  111. package/dist/api/aptos/AptosGetAddress.d.ts.map +1 -1
  112. package/dist/api/aptos/AptosGetPublicKey.d.ts +1 -0
  113. package/dist/api/aptos/AptosGetPublicKey.d.ts.map +1 -1
  114. package/dist/api/aptos/AptosSignInMessage.d.ts +1 -0
  115. package/dist/api/aptos/AptosSignInMessage.d.ts.map +1 -1
  116. package/dist/api/aptos/AptosSignMessage.d.ts +1 -0
  117. package/dist/api/aptos/AptosSignMessage.d.ts.map +1 -1
  118. package/dist/api/aptos/AptosSignTransaction.d.ts +1 -0
  119. package/dist/api/aptos/AptosSignTransaction.d.ts.map +1 -1
  120. package/dist/api/benfen/BenfenGetAddress.d.ts.map +1 -1
  121. package/dist/api/benfen/BenfenGetPublicKey.d.ts.map +1 -1
  122. package/dist/api/benfen/BenfenSignMessage.d.ts.map +1 -1
  123. package/dist/api/benfen/BenfenSignTransaction.d.ts.map +1 -1
  124. package/dist/api/btc/BTCGetAddress.d.ts +1 -0
  125. package/dist/api/btc/BTCGetAddress.d.ts.map +1 -1
  126. package/dist/api/btc/BTCGetPublicKey.d.ts +1 -0
  127. package/dist/api/btc/BTCGetPublicKey.d.ts.map +1 -1
  128. package/dist/api/btc/BTCSignMessage.d.ts +1 -0
  129. package/dist/api/btc/BTCSignMessage.d.ts.map +1 -1
  130. package/dist/api/btc/BTCSignPsbt.d.ts +1 -0
  131. package/dist/api/btc/BTCSignPsbt.d.ts.map +1 -1
  132. package/dist/api/btc/BTCSignTransaction.d.ts +1 -0
  133. package/dist/api/btc/BTCSignTransaction.d.ts.map +1 -1
  134. package/dist/api/btc/BTCVerifyMessage.d.ts +1 -0
  135. package/dist/api/btc/BTCVerifyMessage.d.ts.map +1 -1
  136. package/dist/api/btc/helpers/versionLimit.d.ts +2 -0
  137. package/dist/api/btc/helpers/versionLimit.d.ts.map +1 -1
  138. package/dist/api/cardano/CardanoGetAddress.d.ts +1 -0
  139. package/dist/api/cardano/CardanoGetAddress.d.ts.map +1 -1
  140. package/dist/api/cardano/CardanoGetPublicKey.d.ts +1 -0
  141. package/dist/api/cardano/CardanoGetPublicKey.d.ts.map +1 -1
  142. package/dist/api/cardano/CardanoSignMessage.d.ts +1 -0
  143. package/dist/api/cardano/CardanoSignMessage.d.ts.map +1 -1
  144. package/dist/api/cardano/CardanoSignTransaction.d.ts +1 -0
  145. package/dist/api/cardano/CardanoSignTransaction.d.ts.map +1 -1
  146. package/dist/api/conflux/ConfluxGetAddress.d.ts +2 -0
  147. package/dist/api/conflux/ConfluxGetAddress.d.ts.map +1 -1
  148. package/dist/api/conflux/ConfluxSignMessage.d.ts +2 -0
  149. package/dist/api/conflux/ConfluxSignMessage.d.ts.map +1 -1
  150. package/dist/api/conflux/ConfluxSignMessageCIP23.d.ts +2 -0
  151. package/dist/api/conflux/ConfluxSignMessageCIP23.d.ts.map +1 -1
  152. package/dist/api/conflux/ConfluxSignTransaction.d.ts +2 -0
  153. package/dist/api/conflux/ConfluxSignTransaction.d.ts.map +1 -1
  154. package/dist/api/cosmos/CosmosGetAddress.d.ts +1 -0
  155. package/dist/api/cosmos/CosmosGetAddress.d.ts.map +1 -1
  156. package/dist/api/cosmos/CosmosGetPublicKey.d.ts +1 -0
  157. package/dist/api/cosmos/CosmosGetPublicKey.d.ts.map +1 -1
  158. package/dist/api/cosmos/CosmosSignTransaction.d.ts +1 -0
  159. package/dist/api/cosmos/CosmosSignTransaction.d.ts.map +1 -1
  160. package/dist/api/device/DeviceCancel.d.ts +1 -0
  161. package/dist/api/device/DeviceCancel.d.ts.map +1 -1
  162. package/dist/api/device/DeviceChangePin.d.ts +1 -0
  163. package/dist/api/device/DeviceChangePin.d.ts.map +1 -1
  164. package/dist/api/device/DeviceFullyUploadResource.d.ts +1 -2
  165. package/dist/api/device/DeviceFullyUploadResource.d.ts.map +1 -1
  166. package/dist/api/device/DeviceLock.d.ts +1 -0
  167. package/dist/api/device/DeviceLock.d.ts.map +1 -1
  168. package/dist/api/device/DeviceRebootToBoardloader.d.ts +1 -0
  169. package/dist/api/device/DeviceRebootToBoardloader.d.ts.map +1 -1
  170. package/dist/api/device/DeviceRebootToBootloader.d.ts +1 -0
  171. package/dist/api/device/DeviceRebootToBootloader.d.ts.map +1 -1
  172. package/dist/api/device/DeviceSettings.d.ts +1 -0
  173. package/dist/api/device/DeviceSettings.d.ts.map +1 -1
  174. package/dist/api/device/DeviceSupportFeatures.d.ts +1 -0
  175. package/dist/api/device/DeviceSupportFeatures.d.ts.map +1 -1
  176. package/dist/api/device/DeviceUnlock.d.ts +1 -0
  177. package/dist/api/device/DeviceUnlock.d.ts.map +1 -1
  178. package/dist/api/device/DeviceUpdateBootloader.d.ts.map +1 -1
  179. package/dist/api/device/DeviceWipe.d.ts +1 -0
  180. package/dist/api/device/DeviceWipe.d.ts.map +1 -1
  181. package/dist/api/device/PreInitialize.d.ts +1 -0
  182. package/dist/api/device/PreInitialize.d.ts.map +1 -1
  183. package/dist/api/dynex/DnxGetAddress.d.ts.map +1 -1
  184. package/dist/api/dynex/DnxSignTransaction.d.ts.map +1 -1
  185. package/dist/api/evm/EVMGetAddress.d.ts +1 -0
  186. package/dist/api/evm/EVMGetAddress.d.ts.map +1 -1
  187. package/dist/api/evm/EVMGetPublicKey.d.ts +1 -0
  188. package/dist/api/evm/EVMGetPublicKey.d.ts.map +1 -1
  189. package/dist/api/evm/EVMSignMessage.d.ts +1 -0
  190. package/dist/api/evm/EVMSignMessage.d.ts.map +1 -1
  191. package/dist/api/evm/EVMSignMessageEIP712.d.ts.map +1 -1
  192. package/dist/api/evm/EVMSignTransaction.d.ts +1 -0
  193. package/dist/api/evm/EVMSignTransaction.d.ts.map +1 -1
  194. package/dist/api/evm/EVMSignTypedData.d.ts +1 -0
  195. package/dist/api/evm/EVMSignTypedData.d.ts.map +1 -1
  196. package/dist/api/evm/EVMVerifyMessage.d.ts +1 -0
  197. package/dist/api/evm/EVMVerifyMessage.d.ts.map +1 -1
  198. package/dist/api/evm/protocol.d.ts +3 -0
  199. package/dist/api/evm/protocol.d.ts.map +1 -0
  200. package/dist/api/filecoin/FilecoinGetAddress.d.ts +1 -0
  201. package/dist/api/filecoin/FilecoinGetAddress.d.ts.map +1 -1
  202. package/dist/api/filecoin/FilecoinSignTransaction.d.ts +1 -0
  203. package/dist/api/filecoin/FilecoinSignTransaction.d.ts.map +1 -1
  204. package/dist/api/firmware/getBinary.d.ts +8 -4
  205. package/dist/api/firmware/getBinary.d.ts.map +1 -1
  206. package/dist/api/helpers/filesystemValidation.d.ts +3 -0
  207. package/dist/api/helpers/filesystemValidation.d.ts.map +1 -1
  208. package/dist/api/helpers/paramsValidator.d.ts +1 -0
  209. package/dist/api/helpers/paramsValidator.d.ts.map +1 -1
  210. package/dist/api/helpers/protocolV2FileWrite.d.ts +35 -0
  211. package/dist/api/helpers/protocolV2FileWrite.d.ts.map +1 -0
  212. package/dist/api/index.d.ts +8 -25
  213. package/dist/api/index.d.ts.map +1 -1
  214. package/dist/api/kaspa/KaspaGetAddress.d.ts +4 -0
  215. package/dist/api/kaspa/KaspaGetAddress.d.ts.map +1 -1
  216. package/dist/api/kaspa/KaspaSignTransaction.d.ts +9 -1
  217. package/dist/api/kaspa/KaspaSignTransaction.d.ts.map +1 -1
  218. package/dist/api/kaspa/helpers/TransferSerialize.d.ts.map +1 -1
  219. package/dist/api/lightning/LnurlAuth.d.ts +0 -4
  220. package/dist/api/lightning/LnurlAuth.d.ts.map +1 -1
  221. package/dist/api/near/NearGetAddress.d.ts +1 -0
  222. package/dist/api/near/NearGetAddress.d.ts.map +1 -1
  223. package/dist/api/near/NearSignTransaction.d.ts +1 -0
  224. package/dist/api/near/NearSignTransaction.d.ts.map +1 -1
  225. package/dist/api/nem/NEMGetAddress.d.ts +1 -0
  226. package/dist/api/nem/NEMGetAddress.d.ts.map +1 -1
  227. package/dist/api/nem/NEMSignTransaction.d.ts +1 -0
  228. package/dist/api/nem/NEMSignTransaction.d.ts.map +1 -1
  229. package/dist/api/neo/NeoGetAddress.d.ts.map +1 -1
  230. package/dist/api/neo/NeoSignTransaction.d.ts.map +1 -1
  231. package/dist/api/nervos/NervosGetAddress.d.ts.map +1 -1
  232. package/dist/api/nervos/NervosSignTransaction.d.ts.map +1 -1
  233. package/dist/api/nexa/NexaGetAddress.d.ts.map +1 -1
  234. package/dist/api/nexa/NexaSignTransaction.d.ts +1 -0
  235. package/dist/api/nexa/NexaSignTransaction.d.ts.map +1 -1
  236. package/dist/api/nostr/NostrDecryptMessage.d.ts +1 -0
  237. package/dist/api/nostr/NostrDecryptMessage.d.ts.map +1 -1
  238. package/dist/api/nostr/NostrEncryptMessage.d.ts +1 -0
  239. package/dist/api/nostr/NostrEncryptMessage.d.ts.map +1 -1
  240. package/dist/api/nostr/NostrGetPublicKey.d.ts +1 -0
  241. package/dist/api/nostr/NostrGetPublicKey.d.ts.map +1 -1
  242. package/dist/api/nostr/NostrSignEvent.d.ts +1 -0
  243. package/dist/api/nostr/NostrSignEvent.d.ts.map +1 -1
  244. package/dist/api/nostr/NostrSignSchnorr.d.ts +1 -0
  245. package/dist/api/nostr/NostrSignSchnorr.d.ts.map +1 -1
  246. package/dist/api/polkadot/PolkadotGetAddress.d.ts +1 -0
  247. package/dist/api/polkadot/PolkadotGetAddress.d.ts.map +1 -1
  248. package/dist/api/polkadot/PolkadotSignTransaction.d.ts +1 -0
  249. package/dist/api/polkadot/PolkadotSignTransaction.d.ts.map +1 -1
  250. package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts +1 -0
  251. package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts.map +1 -1
  252. package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts +1 -0
  253. package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts.map +1 -1
  254. package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts +1 -0
  255. package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts.map +1 -1
  256. package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts +4 -2
  257. package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts.map +1 -1
  258. package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts +7 -0
  259. package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts.map +1 -0
  260. package/dist/api/protocol-v2/DeviceInfoGet.d.ts +1 -1
  261. package/dist/api/protocol-v2/DeviceInfoGet.d.ts.map +1 -1
  262. package/dist/api/protocol-v2/DeviceReboot.d.ts +1 -0
  263. package/dist/api/protocol-v2/DeviceReboot.d.ts.map +1 -1
  264. package/dist/api/protocol-v2/DeviceStatusGet.d.ts +7 -0
  265. package/dist/api/protocol-v2/DeviceStatusGet.d.ts.map +1 -0
  266. package/dist/api/protocol-v2/DeviceUploadNft.d.ts +30 -0
  267. package/dist/api/protocol-v2/DeviceUploadNft.d.ts.map +1 -0
  268. package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts +27 -0
  269. package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts.map +1 -0
  270. package/dist/api/protocol-v2/FilesystemFormat.d.ts +1 -0
  271. package/dist/api/protocol-v2/FilesystemFormat.d.ts.map +1 -1
  272. package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts +1 -0
  273. package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts.map +1 -1
  274. package/dist/api/protocol-v2/Ping.d.ts +3 -0
  275. package/dist/api/protocol-v2/Ping.d.ts.map +1 -1
  276. package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts +1 -0
  277. package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts.map +1 -1
  278. package/dist/api/protocol-v2/helpers.d.ts +4 -1
  279. package/dist/api/protocol-v2/helpers.d.ts.map +1 -1
  280. package/dist/api/scdo/ScdoGetAddress.d.ts.map +1 -1
  281. package/dist/api/scdo/ScdoSignMessage.d.ts.map +1 -1
  282. package/dist/api/scdo/ScdoSignTransaction.d.ts.map +1 -1
  283. package/dist/api/solana/SolGetAddress.d.ts +1 -0
  284. package/dist/api/solana/SolGetAddress.d.ts.map +1 -1
  285. package/dist/api/solana/SolSignMessage.d.ts +1 -0
  286. package/dist/api/solana/SolSignMessage.d.ts.map +1 -1
  287. package/dist/api/solana/SolSignOffchainMessage.d.ts +1 -0
  288. package/dist/api/solana/SolSignOffchainMessage.d.ts.map +1 -1
  289. package/dist/api/solana/SolSignTransaction.d.ts +1 -0
  290. package/dist/api/solana/SolSignTransaction.d.ts.map +1 -1
  291. package/dist/api/starcoin/StarcoinGetAddress.d.ts +1 -0
  292. package/dist/api/starcoin/StarcoinGetAddress.d.ts.map +1 -1
  293. package/dist/api/starcoin/StarcoinGetPublicKey.d.ts +1 -0
  294. package/dist/api/starcoin/StarcoinGetPublicKey.d.ts.map +1 -1
  295. package/dist/api/starcoin/StarcoinSignMessage.d.ts +1 -0
  296. package/dist/api/starcoin/StarcoinSignMessage.d.ts.map +1 -1
  297. package/dist/api/starcoin/StarcoinSignTransaction.d.ts +1 -0
  298. package/dist/api/starcoin/StarcoinSignTransaction.d.ts.map +1 -1
  299. package/dist/api/starcoin/StarcoinVerifyMessage.d.ts +1 -0
  300. package/dist/api/starcoin/StarcoinVerifyMessage.d.ts.map +1 -1
  301. package/dist/api/stellar/StellarGetAddress.d.ts +1 -2
  302. package/dist/api/stellar/StellarGetAddress.d.ts.map +1 -1
  303. package/dist/api/stellar/StellarSignTransaction.d.ts +1 -2
  304. package/dist/api/stellar/StellarSignTransaction.d.ts.map +1 -1
  305. package/dist/api/sui/SuiGetAddress.d.ts +1 -0
  306. package/dist/api/sui/SuiGetAddress.d.ts.map +1 -1
  307. package/dist/api/sui/SuiGetPublicKey.d.ts +1 -0
  308. package/dist/api/sui/SuiGetPublicKey.d.ts.map +1 -1
  309. package/dist/api/sui/SuiSignMessage.d.ts +1 -0
  310. package/dist/api/sui/SuiSignMessage.d.ts.map +1 -1
  311. package/dist/api/sui/SuiSignTransaction.d.ts +1 -0
  312. package/dist/api/sui/SuiSignTransaction.d.ts.map +1 -1
  313. package/dist/api/ton/TonGetAddress.d.ts +1 -0
  314. package/dist/api/ton/TonGetAddress.d.ts.map +1 -1
  315. package/dist/api/ton/TonSignData.d.ts +1 -0
  316. package/dist/api/ton/TonSignData.d.ts.map +1 -1
  317. package/dist/api/ton/TonSignMessage.d.ts +1 -0
  318. package/dist/api/ton/TonSignMessage.d.ts.map +1 -1
  319. package/dist/api/ton/TonSignProof.d.ts +1 -0
  320. package/dist/api/ton/TonSignProof.d.ts.map +1 -1
  321. package/dist/api/tron/TronGetAddress.d.ts +1 -0
  322. package/dist/api/tron/TronGetAddress.d.ts.map +1 -1
  323. package/dist/api/tron/TronSignMessage.d.ts +5 -0
  324. package/dist/api/tron/TronSignMessage.d.ts.map +1 -1
  325. package/dist/api/tron/TronSignTransaction.d.ts +1 -0
  326. package/dist/api/tron/TronSignTransaction.d.ts.map +1 -1
  327. package/dist/api/utils.d.ts +2 -1
  328. package/dist/api/utils.d.ts.map +1 -1
  329. package/dist/api/xrp/XrpGetAddress.d.ts +1 -0
  330. package/dist/api/xrp/XrpGetAddress.d.ts.map +1 -1
  331. package/dist/api/xrp/XrpSignTransaction.d.ts +1 -0
  332. package/dist/api/xrp/XrpSignTransaction.d.ts.map +1 -1
  333. package/dist/constants/index.d.ts +1 -1
  334. package/dist/constants/index.d.ts.map +1 -1
  335. package/dist/core/RequestQueue.d.ts.map +1 -1
  336. package/dist/core/deviceEventRegistration.d.ts +13 -0
  337. package/dist/core/deviceEventRegistration.d.ts.map +1 -0
  338. package/dist/core/index.d.ts +3 -1
  339. package/dist/core/index.d.ts.map +1 -1
  340. package/dist/data-manager/connectSettings.d.ts.map +1 -1
  341. package/dist/device/Device.d.ts +64 -16
  342. package/dist/device/Device.d.ts.map +1 -1
  343. package/dist/device/DeviceCommands.d.ts +8 -6
  344. package/dist/device/DeviceCommands.d.ts.map +1 -1
  345. package/dist/device/DeviceConnector.d.ts +1 -1
  346. package/dist/device/DeviceConnector.d.ts.map +1 -1
  347. package/dist/device/DeviceFeaturesState.d.ts +3 -0
  348. package/dist/device/DeviceFeaturesState.d.ts.map +1 -0
  349. package/dist/device/DevicePool.d.ts +5 -2
  350. package/dist/device/DevicePool.d.ts.map +1 -1
  351. package/dist/device/DeviceStateMapper.d.ts +13 -0
  352. package/dist/device/DeviceStateMapper.d.ts.map +1 -0
  353. package/dist/device/DeviceStateProjector.d.ts +7 -0
  354. package/dist/device/DeviceStateProjector.d.ts.map +1 -0
  355. package/dist/device/DeviceStateStore.d.ts +21 -0
  356. package/dist/device/DeviceStateStore.d.ts.map +1 -0
  357. package/dist/device/DeviceWalletSessionStore.d.ts +27 -0
  358. package/dist/device/DeviceWalletSessionStore.d.ts.map +1 -0
  359. package/dist/device/cloneDeviceState.d.ts +2 -0
  360. package/dist/device/cloneDeviceState.d.ts.map +1 -0
  361. package/dist/device/deviceIdentity.d.ts +5 -0
  362. package/dist/device/deviceIdentity.d.ts.map +1 -0
  363. package/dist/deviceProfile/buildDeviceFeatures.d.ts +9 -3
  364. package/dist/deviceProfile/buildDeviceFeatures.d.ts.map +1 -1
  365. package/dist/deviceProfile/index.d.ts +0 -1
  366. package/dist/deviceProfile/index.d.ts.map +1 -1
  367. package/dist/deviceProfile/protocolV2DeviceIdentity.d.ts +7 -0
  368. package/dist/deviceProfile/protocolV2DeviceIdentity.d.ts.map +1 -0
  369. package/dist/events/device.d.ts +16 -2
  370. package/dist/events/device.d.ts.map +1 -1
  371. package/dist/events/logBlockEvent.d.ts +2 -0
  372. package/dist/events/logBlockEvent.d.ts.map +1 -1
  373. package/dist/events/ui-request.d.ts +46 -4
  374. package/dist/events/ui-request.d.ts.map +1 -1
  375. package/dist/index.d.ts +1442 -712
  376. package/dist/index.js +7497 -3705
  377. package/dist/inject.d.ts.map +1 -1
  378. package/dist/protocols/protocol-v2/deviceSession.d.ts +7 -0
  379. package/dist/protocols/protocol-v2/deviceSession.d.ts.map +1 -0
  380. package/dist/protocols/protocol-v2/features.d.ts +25 -17
  381. package/dist/protocols/protocol-v2/features.d.ts.map +1 -1
  382. package/dist/protocols/protocol-v2/firmware.d.ts +1 -0
  383. package/dist/protocols/protocol-v2/firmware.d.ts.map +1 -1
  384. package/dist/protocols/protocol-v2/index.d.ts +3 -2
  385. package/dist/protocols/protocol-v2/index.d.ts.map +1 -1
  386. package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts +17 -0
  387. package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts.map +1 -0
  388. package/dist/protocols/protocol-v2/uiInteraction.d.ts +39 -0
  389. package/dist/protocols/protocol-v2/uiInteraction.d.ts.map +1 -0
  390. package/dist/protocols/protocol-v2/unlockPolicy.d.ts +2 -0
  391. package/dist/protocols/protocol-v2/unlockPolicy.d.ts.map +1 -0
  392. package/dist/protocols/protocol-v2/unlockPolicyRunner.d.ts +22 -0
  393. package/dist/protocols/protocol-v2/unlockPolicyRunner.d.ts.map +1 -0
  394. package/dist/protocols/protocol-v2/walletSession.d.ts +25 -0
  395. package/dist/protocols/protocol-v2/walletSession.d.ts.map +1 -0
  396. package/dist/types/api/checkAllFirmwareRelease.d.ts +25 -4
  397. package/dist/types/api/checkAllFirmwareRelease.d.ts.map +1 -1
  398. package/dist/types/api/deviceSettings.d.ts +11 -2
  399. package/dist/types/api/deviceSettings.d.ts.map +1 -1
  400. package/dist/types/api/deviceUnlock.d.ts +1 -1
  401. package/dist/types/api/deviceUnlock.d.ts.map +1 -1
  402. package/dist/types/api/export.d.ts +3 -2
  403. package/dist/types/api/export.d.ts.map +1 -1
  404. package/dist/types/api/firmwareUpdate.d.ts +6 -1
  405. package/dist/types/api/firmwareUpdate.d.ts.map +1 -1
  406. package/dist/types/api/getDeviceState.d.ts +12 -0
  407. package/dist/types/api/getDeviceState.d.ts.map +1 -0
  408. package/dist/types/api/getFeatures.d.ts.map +1 -1
  409. package/dist/types/api/getOnekeyFeatures.d.ts.map +1 -1
  410. package/dist/types/api/getPassphraseState.d.ts +2 -10
  411. package/dist/types/api/getPassphraseState.d.ts.map +1 -1
  412. package/dist/types/api/index.d.ts +19 -30
  413. package/dist/types/api/index.d.ts.map +1 -1
  414. package/dist/types/api/kaspaSignTransaction.d.ts +42 -4
  415. package/dist/types/api/kaspaSignTransaction.d.ts.map +1 -1
  416. package/dist/types/api/openWalletSession.d.ts +35 -0
  417. package/dist/types/api/openWalletSession.d.ts.map +1 -0
  418. package/dist/types/api/protocolV2.d.ts +18 -84
  419. package/dist/types/api/protocolV2.d.ts.map +1 -1
  420. package/dist/types/api/sessionCache.d.ts +13 -0
  421. package/dist/types/api/sessionCache.d.ts.map +1 -0
  422. package/dist/types/device.d.ts +132 -8
  423. package/dist/types/device.d.ts.map +1 -1
  424. package/dist/types/params.d.ts.map +1 -1
  425. package/dist/types/settings.d.ts +7 -14
  426. package/dist/types/settings.d.ts.map +1 -1
  427. package/dist/utils/assets.d.ts +2 -1
  428. package/dist/utils/assets.d.ts.map +1 -1
  429. package/dist/utils/deviceFeaturesCompat.d.ts +13 -0
  430. package/dist/utils/deviceFeaturesCompat.d.ts.map +1 -0
  431. package/dist/utils/deviceFeaturesUtils.d.ts +8 -3
  432. package/dist/utils/deviceFeaturesUtils.d.ts.map +1 -1
  433. package/dist/utils/deviceInfoUtils.d.ts +9 -9
  434. package/dist/utils/deviceInfoUtils.d.ts.map +1 -1
  435. package/dist/utils/deviceSettings.d.ts +38 -7
  436. package/dist/utils/deviceSettings.d.ts.map +1 -1
  437. package/dist/utils/deviceVersionUtils.d.ts +7 -5
  438. package/dist/utils/deviceVersionUtils.d.ts.map +1 -1
  439. package/dist/utils/homescreen.d.ts +4 -0
  440. package/dist/utils/homescreen.d.ts.map +1 -1
  441. package/dist/utils/index.d.ts +6 -3
  442. package/dist/utils/index.d.ts.map +1 -1
  443. package/dist/utils/networkUtils.d.ts +10 -1
  444. package/dist/utils/networkUtils.d.ts.map +1 -1
  445. package/dist/utils/patch.d.ts +1 -1
  446. package/dist/utils/patch.d.ts.map +1 -1
  447. package/dist/utils/pro2Nft.d.ts +29 -0
  448. package/dist/utils/pro2Nft.d.ts.map +1 -0
  449. package/dist/utils/pro2Wallpaper.d.ts +22 -0
  450. package/dist/utils/pro2Wallpaper.d.ts.map +1 -0
  451. package/dist/utils/tracing.d.ts.map +1 -1
  452. package/dist/utils/uiProgressThrottle.d.ts +3 -0
  453. package/dist/utils/uiProgressThrottle.d.ts.map +1 -0
  454. package/package.json +4 -4
  455. package/src/api/BaseMethod.ts +53 -20
  456. package/src/api/CheckAllFirmwareRelease.ts +296 -1
  457. package/src/api/CheckBootloaderRelease.ts +1 -2
  458. package/src/api/CheckFirmwareRelease.ts +1 -2
  459. package/src/api/CipherKeyValue.ts +4 -0
  460. package/src/api/ClearSessionCache.ts +32 -0
  461. package/src/api/DirList.ts +9 -4
  462. package/src/api/DirMake.ts +7 -4
  463. package/src/api/DirRemove.ts +7 -4
  464. package/src/api/FileDelete.ts +7 -4
  465. package/src/api/FileRead.ts +15 -9
  466. package/src/api/FileWrite.ts +26 -181
  467. package/src/api/FirmwareUpdate.ts +11 -12
  468. package/src/api/FirmwareUpdateV2.ts +132 -52
  469. package/src/api/FirmwareUpdateV3.ts +3 -11
  470. package/src/api/FirmwareUpdateV4.ts +693 -535
  471. package/src/api/GetDeviceState.ts +59 -0
  472. package/src/api/GetFeatures.ts +6 -4
  473. package/src/api/GetOnekeyFeatures.ts +1 -75
  474. package/src/api/GetPassphraseState.ts +36 -21
  475. package/src/api/OpenWalletSession.ts +251 -0
  476. package/src/api/PathInfo.ts +9 -4
  477. package/src/api/PromptWebDeviceAccess.ts +2 -7
  478. package/src/api/SearchDevices.ts +29 -4
  479. package/src/api/UploadPortfolio.ts +40 -0
  480. package/src/api/alephium/AlephiumGetAddress.ts +0 -4
  481. package/src/api/alephium/AlephiumSignMessage.ts +0 -4
  482. package/src/api/alephium/AlephiumSignTransaction.ts +2 -6
  483. package/src/api/algo/AlgoGetAddress.ts +4 -0
  484. package/src/api/algo/AlgoSignTransaction.ts +4 -0
  485. package/src/api/allnetwork/AllNetworkGetAddressBase.ts +41 -32
  486. package/src/api/aptos/AptosGetAddress.ts +4 -0
  487. package/src/api/aptos/AptosGetPublicKey.ts +4 -0
  488. package/src/api/aptos/AptosSignInMessage.ts +4 -0
  489. package/src/api/aptos/AptosSignMessage.ts +4 -0
  490. package/src/api/aptos/AptosSignTransaction.ts +4 -0
  491. package/src/api/benfen/BenfenGetAddress.ts +11 -7
  492. package/src/api/benfen/BenfenGetPublicKey.ts +0 -4
  493. package/src/api/benfen/BenfenSignMessage.ts +0 -4
  494. package/src/api/benfen/BenfenSignTransaction.ts +0 -4
  495. package/src/api/btc/BTCGetAddress.ts +8 -1
  496. package/src/api/btc/BTCGetPublicKey.ts +9 -2
  497. package/src/api/btc/BTCSignMessage.ts +8 -1
  498. package/src/api/btc/BTCSignPsbt.ts +4 -0
  499. package/src/api/btc/BTCSignTransaction.ts +8 -1
  500. package/src/api/btc/BTCVerifyMessage.ts +8 -1
  501. package/src/api/btc/helpers/versionLimit.ts +7 -4
  502. package/src/api/cardano/CardanoGetAddress.ts +4 -0
  503. package/src/api/cardano/CardanoGetPublicKey.ts +4 -0
  504. package/src/api/cardano/CardanoSignMessage.ts +5 -1
  505. package/src/api/cardano/CardanoSignTransaction.ts +5 -1
  506. package/src/api/conflux/ConfluxGetAddress.ts +6 -0
  507. package/src/api/conflux/ConfluxSignMessage.ts +6 -0
  508. package/src/api/conflux/ConfluxSignMessageCIP23.ts +6 -0
  509. package/src/api/conflux/ConfluxSignTransaction.ts +8 -5
  510. package/src/api/cosmos/CosmosGetAddress.ts +4 -0
  511. package/src/api/cosmos/CosmosGetPublicKey.ts +4 -0
  512. package/src/api/cosmos/CosmosSignTransaction.ts +4 -0
  513. package/src/api/device/DeviceCancel.ts +5 -0
  514. package/src/api/device/DeviceChangePin.ts +28 -0
  515. package/src/api/device/DeviceFullyUploadResource.ts +4 -5
  516. package/src/api/device/DeviceLock.ts +5 -0
  517. package/src/api/device/DeviceRebootToBoardloader.ts +5 -0
  518. package/src/api/device/DeviceRebootToBootloader.ts +5 -0
  519. package/src/api/device/DeviceSettings.ts +194 -1
  520. package/src/api/device/DeviceSupportFeatures.ts +4 -0
  521. package/src/api/device/DeviceUnlock.ts +14 -1
  522. package/src/api/device/DeviceUpdateBootloader.ts +1 -2
  523. package/src/api/device/DeviceWipe.ts +25 -0
  524. package/src/api/device/PreInitialize.ts +4 -0
  525. package/src/api/dynex/DnxGetAddress.ts +0 -6
  526. package/src/api/dynex/DnxSignTransaction.ts +0 -6
  527. package/src/api/evm/EVMGetAddress.ts +6 -2
  528. package/src/api/evm/EVMGetPublicKey.ts +6 -2
  529. package/src/api/evm/EVMSignMessage.ts +6 -2
  530. package/src/api/evm/EVMSignMessageEIP712.ts +1 -11
  531. package/src/api/evm/EVMSignTransaction.ts +6 -2
  532. package/src/api/evm/EVMSignTypedData.ts +42 -50
  533. package/src/api/evm/EVMVerifyMessage.ts +6 -2
  534. package/src/api/evm/legacyV1/getAddress.ts +2 -2
  535. package/src/api/evm/legacyV1/getPublicKey.ts +2 -2
  536. package/src/api/evm/legacyV1/signMessage.ts +2 -2
  537. package/src/api/evm/legacyV1/signTypedData.ts +2 -2
  538. package/src/api/evm/legacyV1/signTypedHash.ts +2 -2
  539. package/src/api/evm/legacyV1/verifyMessage.ts +2 -2
  540. package/src/api/evm/protocol.ts +6 -0
  541. package/src/api/filecoin/FilecoinGetAddress.ts +4 -0
  542. package/src/api/filecoin/FilecoinSignTransaction.ts +4 -0
  543. package/src/api/firmware/FirmwareUpdateBaseMethod.ts +3 -3
  544. package/src/api/firmware/getBinary.ts +8 -3
  545. package/src/api/helpers/batchGetPublickeys.ts +2 -2
  546. package/src/api/helpers/filesystemValidation.ts +61 -0
  547. package/src/api/helpers/paramsValidator.ts +1 -1
  548. package/src/api/helpers/protocolV2FileWrite.ts +206 -0
  549. package/src/api/index.ts +9 -26
  550. package/src/api/kaspa/KaspaGetAddress.ts +7 -0
  551. package/src/api/kaspa/KaspaSignTransaction.ts +380 -29
  552. package/src/api/kaspa/helpers/TransferSerialize.ts +17 -7
  553. package/src/api/lightning/LnurlAuth.ts +0 -4
  554. package/src/api/near/NearGetAddress.ts +4 -0
  555. package/src/api/near/NearSignTransaction.ts +4 -0
  556. package/src/api/nem/NEMGetAddress.ts +4 -0
  557. package/src/api/nem/NEMSignTransaction.ts +4 -0
  558. package/src/api/neo/NeoGetAddress.ts +0 -4
  559. package/src/api/neo/NeoSignTransaction.ts +0 -4
  560. package/src/api/nervos/NervosGetAddress.ts +0 -4
  561. package/src/api/nervos/NervosSignTransaction.ts +2 -6
  562. package/src/api/nexa/NexaGetAddress.ts +0 -4
  563. package/src/api/nexa/NexaSignTransaction.ts +3 -5
  564. package/src/api/nostr/NostrDecryptMessage.ts +4 -0
  565. package/src/api/nostr/NostrEncryptMessage.ts +4 -0
  566. package/src/api/nostr/NostrGetPublicKey.ts +4 -0
  567. package/src/api/nostr/NostrSignEvent.ts +4 -0
  568. package/src/api/nostr/NostrSignSchnorr.ts +4 -0
  569. package/src/api/polkadot/PolkadotGetAddress.ts +4 -0
  570. package/src/api/polkadot/PolkadotSignTransaction.ts +4 -0
  571. package/src/api/protocol-v2/DeviceFactoryInfoGet.ts +5 -2
  572. package/src/api/protocol-v2/DeviceFactoryInfoSet.ts +5 -2
  573. package/src/api/protocol-v2/DeviceFirmwareUpdate.ts +8 -5
  574. package/src/api/protocol-v2/DeviceGetFirmwareUpdateStatus.ts +43 -5
  575. package/src/api/protocol-v2/DeviceGetOnboardingStatus.ts +21 -0
  576. package/src/api/protocol-v2/DeviceInfoGet.ts +8 -15
  577. package/src/api/protocol-v2/DeviceReboot.ts +7 -3
  578. package/src/api/protocol-v2/DeviceStatusGet.ts +19 -0
  579. package/src/api/protocol-v2/DeviceUploadNft.ts +166 -0
  580. package/src/api/protocol-v2/DeviceUploadWallpaper.ts +134 -0
  581. package/src/api/protocol-v2/FilesystemFormat.ts +9 -3
  582. package/src/api/protocol-v2/FilesystemPermissionFix.ts +5 -2
  583. package/src/api/protocol-v2/Ping.ts +37 -3
  584. package/src/api/protocol-v2/ProtocolInfoRequest.ts +8 -3
  585. package/src/api/protocol-v2/helpers.ts +21 -16
  586. package/src/api/scdo/ScdoGetAddress.ts +0 -4
  587. package/src/api/scdo/ScdoSignMessage.ts +0 -4
  588. package/src/api/scdo/ScdoSignTransaction.ts +0 -4
  589. package/src/api/solana/SolGetAddress.ts +4 -0
  590. package/src/api/solana/SolSignMessage.ts +4 -0
  591. package/src/api/solana/SolSignOffchainMessage.ts +4 -0
  592. package/src/api/solana/SolSignTransaction.ts +4 -0
  593. package/src/api/starcoin/StarcoinGetAddress.ts +4 -0
  594. package/src/api/starcoin/StarcoinGetPublicKey.ts +4 -0
  595. package/src/api/starcoin/StarcoinSignMessage.ts +4 -0
  596. package/src/api/starcoin/StarcoinSignTransaction.ts +4 -0
  597. package/src/api/starcoin/StarcoinVerifyMessage.ts +4 -0
  598. package/src/api/stellar/StellarGetAddress.ts +1 -10
  599. package/src/api/stellar/StellarSignTransaction.ts +1 -14
  600. package/src/api/sui/SuiGetAddress.ts +4 -0
  601. package/src/api/sui/SuiGetPublicKey.ts +4 -0
  602. package/src/api/sui/SuiSignMessage.ts +4 -0
  603. package/src/api/sui/SuiSignTransaction.ts +4 -0
  604. package/src/api/ton/TonGetAddress.ts +4 -0
  605. package/src/api/ton/TonSignData.ts +5 -1
  606. package/src/api/ton/TonSignMessage.ts +4 -0
  607. package/src/api/ton/TonSignProof.ts +4 -0
  608. package/src/api/tron/TronGetAddress.ts +4 -0
  609. package/src/api/tron/TronSignMessage.ts +18 -7
  610. package/src/api/tron/TronSignTransaction.ts +4 -0
  611. package/src/api/utils.ts +7 -3
  612. package/src/api/xrp/XrpGetAddress.ts +4 -0
  613. package/src/api/xrp/XrpSignTransaction.ts +5 -1
  614. package/src/constants/index.ts +1 -4
  615. package/src/core/RequestQueue.ts +1 -0
  616. package/src/core/deviceEventRegistration.ts +27 -0
  617. package/src/core/index.ts +274 -120
  618. package/src/data/messages/messages-protocol-v2.json +1161 -477
  619. package/src/data/messages/messages.json +286 -1
  620. package/src/data-manager/DataManager.ts +6 -6
  621. package/src/data-manager/TransportManager.ts +1 -1
  622. package/src/data-manager/connectSettings.ts +4 -0
  623. package/src/device/Device.ts +820 -282
  624. package/src/device/DeviceCommands.ts +166 -158
  625. package/src/device/DeviceConnector.ts +10 -7
  626. package/src/device/DeviceFeaturesState.ts +25 -0
  627. package/src/device/DevicePool.ts +66 -16
  628. package/src/device/DeviceStateMapper.ts +374 -0
  629. package/src/device/DeviceStateProjector.ts +94 -0
  630. package/src/device/DeviceStateStore.ts +201 -0
  631. package/src/device/DeviceWalletSessionStore.ts +144 -0
  632. package/src/device/cloneDeviceState.ts +39 -0
  633. package/src/device/deviceIdentity.ts +18 -0
  634. package/src/deviceProfile/buildDeviceFeatures.ts +224 -190
  635. package/src/deviceProfile/index.ts +0 -1
  636. package/src/deviceProfile/protocolV2DeviceIdentity.ts +32 -0
  637. package/src/events/device.ts +22 -1
  638. package/src/events/logBlockEvent.ts +80 -2
  639. package/src/events/ui-request.ts +57 -4
  640. package/src/inject.ts +16 -41
  641. package/src/protocols/protocol-v2/deviceSession.ts +24 -0
  642. package/src/protocols/protocol-v2/features.ts +103 -32
  643. package/src/protocols/protocol-v2/firmware.ts +2 -1
  644. package/src/protocols/protocol-v2/index.ts +8 -1
  645. package/src/protocols/protocol-v2/settingsUnlockPolicy.ts +65 -0
  646. package/src/protocols/protocol-v2/uiInteraction.ts +236 -0
  647. package/src/protocols/protocol-v2/unlockPolicy.ts +1 -0
  648. package/src/protocols/protocol-v2/unlockPolicyRunner.ts +117 -0
  649. package/src/protocols/protocol-v2/walletSession.ts +360 -0
  650. package/src/types/api/checkAllFirmwareRelease.ts +46 -4
  651. package/src/types/api/deviceSettings.ts +26 -2
  652. package/src/types/api/deviceUnlock.ts +1 -1
  653. package/src/types/api/export.ts +8 -0
  654. package/src/types/api/firmwareUpdate.ts +23 -5
  655. package/src/types/api/getDeviceState.ts +19 -0
  656. package/src/types/api/getFeatures.ts +3 -0
  657. package/src/types/api/getOnekeyFeatures.ts +3 -0
  658. package/src/types/api/getPassphraseState.ts +9 -11
  659. package/src/types/api/index.ts +27 -64
  660. package/src/types/api/kaspaSignTransaction.ts +60 -4
  661. package/src/types/api/openWalletSession.ts +54 -0
  662. package/src/types/api/protocolV2.ts +33 -139
  663. package/src/types/api/sessionCache.ts +19 -0
  664. package/src/types/device.ts +185 -7
  665. package/src/types/params.ts +3 -2
  666. package/src/types/settings.ts +17 -16
  667. package/src/utils/assets.ts +4 -1
  668. package/src/utils/deviceFeaturesCompat.ts +180 -0
  669. package/src/utils/deviceFeaturesUtils.ts +56 -45
  670. package/src/utils/deviceInfoUtils.ts +27 -69
  671. package/src/utils/deviceSettings.ts +171 -39
  672. package/src/utils/deviceVersionUtils.ts +25 -44
  673. package/src/utils/findDefectiveBatchDevice.ts +3 -3
  674. package/src/utils/homescreen.ts +36 -0
  675. package/src/utils/index.ts +27 -3
  676. package/src/utils/networkUtils.ts +274 -16
  677. package/src/utils/pro2Nft.ts +91 -0
  678. package/src/utils/pro2Wallpaper.ts +130 -0
  679. package/src/utils/tracing.ts +3 -1
  680. package/src/utils/uiProgressThrottle.ts +63 -0
  681. package/tsconfig.type-tests.json +12 -0
  682. package/dist/api/GetDeviceInfo.d.ts +0 -9
  683. package/dist/api/GetDeviceInfo.d.ts.map +0 -1
  684. package/dist/api/protocol-v2/FilesystemDiskControl.d.ts +0 -13
  685. package/dist/api/protocol-v2/FilesystemDiskControl.d.ts.map +0 -1
  686. package/dist/deviceProfile/buildDeviceProfile.d.ts +0 -21
  687. package/dist/deviceProfile/buildDeviceProfile.d.ts.map +0 -1
  688. package/dist/types/api/getDeviceInfo.d.ts +0 -87
  689. package/dist/types/api/getDeviceInfo.d.ts.map +0 -1
  690. package/src/api/GetDeviceInfo.ts +0 -145
  691. package/src/api/protocol-v2/FilesystemDiskControl.ts +0 -50
  692. package/src/deviceProfile/buildDeviceProfile.ts +0 -352
  693. package/src/types/api/getDeviceInfo.ts +0 -101
@@ -0,0 +1,59 @@
1
+ import { ERRORS, HardwareErrorCode, createDeviceNotSupportMethodError } from '@onekeyfe/hd-shared';
2
+
3
+ import { UI_REQUEST } from '../constants/ui-request';
4
+ import { BaseMethod } from './BaseMethod';
5
+
6
+ import type { DeviceStateSection } from '../types';
7
+ import type { DeviceStateScope, GetDeviceStateParams } from '../types/api/getDeviceState';
8
+
9
+ const SCOPE_SECTIONS: Record<DeviceStateScope, DeviceStateSection[]> = {
10
+ runtime: ['status'],
11
+ settings: ['status', 'settings'],
12
+ firmware: ['status', 'identity', 'versions', 'verification'],
13
+ };
14
+
15
+ const isLoaderMode = (mode: string) => mode === 'bootloader' || mode === 'romloader';
16
+
17
+ export default class GetDeviceState extends BaseMethod<
18
+ Required<Pick<GetDeviceStateParams, 'scope'>>
19
+ > {
20
+ getSupportedProtocols() {
21
+ return ['V1', 'V2'] as const;
22
+ }
23
+
24
+ init() {
25
+ const scope = (this.payload.scope ?? 'runtime') as DeviceStateScope;
26
+ if (!Object.prototype.hasOwnProperty.call(SCOPE_SECTIONS, scope)) {
27
+ throw ERRORS.TypedError(
28
+ HardwareErrorCode.CallMethodInvalidParameter,
29
+ `Unsupported device state scope: ${String(scope)}`
30
+ );
31
+ }
32
+ this.allowDeviceMode = [
33
+ ...this.allowDeviceMode,
34
+ UI_REQUEST.NOT_INITIALIZE,
35
+ UI_REQUEST.BOOTLOADER,
36
+ ];
37
+ this.unlockPolicy = 'none';
38
+ this.useDevicePassphraseState = false;
39
+ this.skipForceUpdateCheck = true;
40
+ this.params = { scope };
41
+ }
42
+
43
+ async run() {
44
+ const state = await this.device.getDeviceState({
45
+ refreshSections: SCOPE_SECTIONS[this.params.scope],
46
+ });
47
+ if (
48
+ this.params.scope === 'settings' &&
49
+ this.device.isProtocolV2() &&
50
+ isLoaderMode(state.status.mode)
51
+ ) {
52
+ throw createDeviceNotSupportMethodError(
53
+ `${this.name}:${this.params.scope}`,
54
+ this.device.getCurrentFirmwareType()
55
+ );
56
+ }
57
+ return state;
58
+ }
59
+ }
@@ -1,10 +1,12 @@
1
1
  import { ERRORS, HardwareErrorCode } from '@onekeyfe/hd-shared';
2
2
 
3
3
  import { UI_REQUEST } from '../constants/ui-request';
4
+ import { projectFeatures } from '../device/DeviceStateProjector';
4
5
  import { BaseMethod } from './BaseMethod';
5
6
 
6
7
  export default class GetFeatures extends BaseMethod {
7
8
  init() {
9
+ this.unlockPolicy = 'none';
8
10
  this.allowDeviceMode = [
9
11
  ...this.allowDeviceMode,
10
12
  UI_REQUEST.NOT_INITIALIZE,
@@ -18,9 +20,9 @@ export default class GetFeatures extends BaseMethod {
18
20
  if (this.payload?.detectBootloaderDevice && this.device.isBootloader()) {
19
21
  return Promise.reject(ERRORS.TypedError(HardwareErrorCode.DeviceDetectInBootloaderMode));
20
22
  }
21
- if (this.device.isProtocolV2()) {
22
- return this.device.getFeatures();
23
- }
24
- return Promise.resolve(this.device.features);
23
+ const state = await this.device.getDeviceState({
24
+ includeRaw: true,
25
+ });
26
+ return projectFeatures(state);
25
27
  }
26
28
  }
@@ -2,82 +2,19 @@ import semver from 'semver';
2
2
 
3
3
  import { UI_REQUEST } from '../constants/ui-request';
4
4
  import { fixVersion } from '../utils/deviceFeaturesUtils';
5
- import { PROTOCOL_V2_DEVICE_INFO_REQUEST } from '../protocols/protocol-v2';
6
- import { requestProtocolV2DeviceInfo } from '../protocols/protocol-v2/features';
7
5
  import { BaseMethod } from './BaseMethod';
8
6
 
9
7
  import type { OnekeyFeatures } from '../types';
10
8
 
11
- const ONEKEY_FEATURE_KEYS: Array<keyof OnekeyFeatures> = [
12
- 'onekey_device_type',
13
- 'onekey_board_version',
14
- 'onekey_boot_version',
15
- 'onekey_firmware_version',
16
- 'onekey_board_hash',
17
- 'onekey_boot_hash',
18
- 'onekey_firmware_hash',
19
- 'onekey_board_build_id',
20
- 'onekey_boot_build_id',
21
- 'onekey_firmware_build_id',
22
- 'onekey_serial_no',
23
- 'onekey_ble_name',
24
- 'onekey_ble_version',
25
- 'onekey_ble_build_id',
26
- 'onekey_ble_hash',
27
- 'onekey_se_type',
28
- 'onekey_se01_state',
29
- 'onekey_se02_state',
30
- 'onekey_se03_state',
31
- 'onekey_se04_state',
32
- 'onekey_se01_version',
33
- 'onekey_se02_version',
34
- 'onekey_se03_version',
35
- 'onekey_se04_version',
36
- 'onekey_se01_hash',
37
- 'onekey_se02_hash',
38
- 'onekey_se03_hash',
39
- 'onekey_se04_hash',
40
- 'onekey_se01_build_id',
41
- 'onekey_se02_build_id',
42
- 'onekey_se03_build_id',
43
- 'onekey_se04_build_id',
44
- 'onekey_se01_boot_version',
45
- 'onekey_se02_boot_version',
46
- 'onekey_se03_boot_version',
47
- 'onekey_se04_boot_version',
48
- 'onekey_se01_boot_hash',
49
- 'onekey_se02_boot_hash',
50
- 'onekey_se03_boot_hash',
51
- 'onekey_se04_boot_hash',
52
- 'onekey_se01_boot_build_id',
53
- 'onekey_se02_boot_build_id',
54
- 'onekey_se03_boot_build_id',
55
- 'onekey_se04_boot_build_id',
56
- ];
57
-
58
9
  function normalizeOnekeyFirmwareVersion(message: OnekeyFeatures) {
59
10
  if (message.onekey_firmware_version && !semver.valid(message.onekey_firmware_version)) {
60
11
  message.onekey_firmware_version = fixVersion(message.onekey_firmware_version);
61
12
  }
62
13
  }
63
14
 
64
- function pickOnekeyFeatures(features?: OnekeyFeatures | null): OnekeyFeatures {
65
- const message: OnekeyFeatures = {};
66
- if (!features) return message;
67
-
68
- for (const key of ONEKEY_FEATURE_KEYS) {
69
- const value = features[key];
70
- if (value !== undefined && value !== null) {
71
- (message as Record<string, unknown>)[key] = value;
72
- }
73
- }
74
-
75
- normalizeOnekeyFirmwareVersion(message);
76
- return message;
77
- }
78
-
79
15
  export default class GetOnekeyFeatures extends BaseMethod {
80
16
  init() {
17
+ this.unlockPolicy = 'none';
81
18
  this.allowDeviceMode = [
82
19
  ...this.allowDeviceMode,
83
20
  UI_REQUEST.NOT_INITIALIZE,
@@ -88,17 +25,6 @@ export default class GetOnekeyFeatures extends BaseMethod {
88
25
  }
89
26
 
90
27
  async run() {
91
- if (this.device.isProtocolV2()) {
92
- // V2 没有 OnekeyGetFeatures 消息:
93
- // 取完整 DeviceInfoGet(含 SE/hash/build_id)后刷新结构化 features 缓存。
94
- const deviceInfo = await requestProtocolV2DeviceInfo({
95
- commands: this.device.commands,
96
- request: PROTOCOL_V2_DEVICE_INFO_REQUEST,
97
- });
98
- const features = this.device.updateProtocolV2Features(deviceInfo);
99
- return pickOnekeyFeatures(features as OnekeyFeatures);
100
- }
101
-
102
28
  const { message } = await this.device.commands.typedCall('OnekeyGetFeatures', 'OnekeyFeatures');
103
29
  normalizeOnekeyFirmwareVersion(message);
104
30
  return Promise.resolve(message);
@@ -1,37 +1,52 @@
1
- import { EDeviceType } from '@onekeyfe/hd-shared';
1
+ import { ERRORS, HardwareErrorCode } from '@onekeyfe/hd-shared';
2
+ import { DeviceSessionPinType } from '@onekeyfe/hd-transport';
2
3
 
3
4
  import { UI_REQUEST } from '../constants/ui-request';
5
+ import { refreshProtocolV2DeviceStatus } from '../protocols/protocol-v2/walletSession';
4
6
  import { getPassphraseStateWithRefreshDeviceInfo } from '../utils/deviceFeaturesUtils';
5
7
  import { BaseMethod } from './BaseMethod';
6
8
 
7
9
  export default class GetPassphraseState extends BaseMethod {
10
+ getSupportedProtocols() {
11
+ return ['V1', 'V2'] as const;
12
+ }
13
+
8
14
  init() {
9
15
  this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.NOT_INITIALIZE];
10
16
  this.useDevicePassphraseState = false;
11
17
  }
12
18
 
13
19
  async run() {
14
- const { passphraseState, newSession, unlockedAttachPin } =
15
- await getPassphraseStateWithRefreshDeviceInfo(this.device, {
16
- expectPassphraseState: this.payload.passphraseState,
17
- onlyMainPin: this.payload.useEmptyPassphrase,
18
- allowCreateAttachPin: this.payload.allowCreateAttachPin,
19
- initSession: this.payload.initSession,
20
- });
20
+ if (!this.device.features) {
21
+ throw ERRORS.TypedError(HardwareErrorCode.DeviceInitializeFailed);
22
+ }
23
+
24
+ const isProtocolV2 = this.device.isProtocolV2();
25
+ if (isProtocolV2 && this.payload.useEmptyPassphrase !== true) {
26
+ const features = await refreshProtocolV2DeviceStatus(this.device);
27
+ if (features.unlocked === false) {
28
+ await this.device.unlockDevice(DeviceSessionPinType.Main, {
29
+ source: 'unlock-coordinator',
30
+ reason: 'device-locked',
31
+ deviceOnly: true,
32
+ method: 'getPassphraseState',
33
+ });
34
+ }
35
+ }
36
+ const { passphraseState } = await getPassphraseStateWithRefreshDeviceInfo(
37
+ this.device,
38
+ isProtocolV2
39
+ ? {
40
+ onlyMainPin: this.payload.useEmptyPassphrase === true,
41
+ initSession: this.payload.initSession === true,
42
+ }
43
+ : undefined
44
+ );
21
45
 
22
- const { features } = this.device;
23
- const passphraseProtection = this.device.getCurrentPassphraseProtection() ?? null;
24
- const deviceType = this.device.getCurrentDeviceType();
25
- const isProSeries = deviceType === EDeviceType.Pro || deviceType === EDeviceType.Pro2;
46
+ if (!isProtocolV2 && this.device.getCurrentPassphraseProtection() !== true) {
47
+ return undefined;
48
+ }
26
49
 
27
- // refresh device info
28
- return Promise.resolve({
29
- passphraseState: isProSeries || passphraseProtection === true ? passphraseState : undefined,
30
- sessionId: this.payload.initSession
31
- ? newSession ?? undefined
32
- : newSession ?? features?.sessionId ?? undefined,
33
- unlockedAttachPin: unlockedAttachPin ?? features?.unlockedAttachPin,
34
- passphraseProtection,
35
- });
50
+ return passphraseState;
36
51
  }
37
52
  }
@@ -0,0 +1,251 @@
1
+ import { ERRORS, HardwareErrorCode } from '@onekeyfe/hd-shared';
2
+ import { DeviceSessionPinType } from '@onekeyfe/hd-transport';
3
+
4
+ import { deviceWalletSessionStore } from '../device/DeviceWalletSessionStore';
5
+ import { getProtocolV2WalletSession } from '../protocols/protocol-v2/walletSession';
6
+ import { getPassphraseStateWithRefreshDeviceInfo } from '../utils/deviceFeaturesUtils';
7
+ import { BaseMethod } from './BaseMethod';
8
+ import { invalidParameter } from './helpers/paramsValidator';
9
+ import { OpenWalletSessionMode } from '../types/api/openWalletSession';
10
+
11
+ import type {
12
+ OpenWalletSessionParams,
13
+ OpenWalletSessionPayload,
14
+ } from '../types/api/openWalletSession';
15
+
16
+ const requiredString = (value: unknown, name: string) => {
17
+ if (value === undefined || value === null) {
18
+ throw invalidParameter(`Missing required parameter: ${name}`);
19
+ }
20
+ if (typeof value !== 'string' || !value.trim()) {
21
+ throw invalidParameter(`Parameter [${name}] must be a non-empty string.`);
22
+ }
23
+ return value.trim();
24
+ };
25
+
26
+ const wasResumed = (session: unknown) =>
27
+ !!session &&
28
+ typeof session === 'object' &&
29
+ 'resumed' in session &&
30
+ (session as { resumed?: unknown }).resumed === true;
31
+
32
+ const requireHiddenWalletResponse = (session: { passphraseState?: string }) => {
33
+ if (!session.passphraseState) {
34
+ throw ERRORS.TypedError(
35
+ HardwareErrorCode.DeviceInitializeFailed,
36
+ 'Hidden wallet response is missing passphraseState'
37
+ );
38
+ }
39
+ return {
40
+ passphraseState: session.passphraseState,
41
+ };
42
+ };
43
+
44
+ const normalizeParams = (payload: Record<string, unknown>): OpenWalletSessionParams => {
45
+ if (payload.mode === undefined) {
46
+ throw invalidParameter('Parameter [mode] is required.');
47
+ }
48
+ if (
49
+ payload.mode !== OpenWalletSessionMode.Standard &&
50
+ payload.mode !== OpenWalletSessionMode.SelectHidden &&
51
+ payload.mode !== OpenWalletSessionMode.ResumeHidden
52
+ ) {
53
+ throw invalidParameter(
54
+ 'Parameter [mode] must be one of standard, select-hidden, or resume-hidden.'
55
+ );
56
+ }
57
+ if (payload.useEmptyPassphrase !== undefined || payload.initSession !== undefined) {
58
+ throw invalidParameter(
59
+ 'Legacy parameters [useEmptyPassphrase] and [initSession] are not supported by openWalletSession.'
60
+ );
61
+ }
62
+ if (
63
+ payload.mode === OpenWalletSessionMode.Standard ||
64
+ payload.mode === OpenWalletSessionMode.SelectHidden
65
+ ) {
66
+ if (payload.deviceId !== undefined || payload.passphraseState !== undefined) {
67
+ throw invalidParameter(
68
+ 'Parameters [deviceId] and [passphraseState] are only allowed with mode [resume-hidden].'
69
+ );
70
+ }
71
+ return { mode: payload.mode };
72
+ }
73
+ return {
74
+ mode: OpenWalletSessionMode.ResumeHidden,
75
+ deviceId: requiredString(payload.deviceId, 'deviceId'),
76
+ passphraseState: requiredString(payload.passphraseState, 'passphraseState'),
77
+ };
78
+ };
79
+
80
+ export default class OpenWalletSession extends BaseMethod<OpenWalletSessionParams> {
81
+ getSupportedProtocols() {
82
+ return ['V1', 'V2'] as const;
83
+ }
84
+
85
+ init() {
86
+ this.useDevicePassphraseState = false;
87
+ this.skipForceUpdateCheck = true;
88
+ this.params = normalizeParams(this.payload as unknown as Record<string, unknown>);
89
+ this.payload.useEmptyPassphrase = this.params.mode === OpenWalletSessionMode.Standard;
90
+ }
91
+
92
+ async run(): Promise<OpenWalletSessionPayload> {
93
+ const isProtocolV2 = this.device.isProtocolV2();
94
+ let state = await this.device.getDeviceState({ refreshSections: ['status'] });
95
+ let currentDeviceId = state.identity.deviceId;
96
+ const hasAuthoritativeProtocolV2WalletStatus = (candidate: typeof state) =>
97
+ candidate.status.unlocked === true &&
98
+ typeof candidate.status.passphraseProtection === 'boolean' &&
99
+ typeof candidate.status.unlockedAttachPin === 'boolean';
100
+ const requireAuthoritativeProtocolV2WalletStatus = (candidate: typeof state) => {
101
+ if (!hasAuthoritativeProtocolV2WalletStatus(candidate)) {
102
+ throw ERRORS.TypedError(HardwareErrorCode.DeviceInitializeFailed);
103
+ }
104
+ return candidate;
105
+ };
106
+ const requireDeviceId = () => {
107
+ if (!currentDeviceId) {
108
+ throw ERRORS.TypedError(HardwareErrorCode.DeviceInitializeFailed);
109
+ }
110
+ return currentDeviceId;
111
+ };
112
+ const refreshProtocolV2DeviceState = async () => {
113
+ state = await this.device.getDeviceState({ refreshSections: ['status'] });
114
+ currentDeviceId = state.identity.deviceId;
115
+ return state;
116
+ };
117
+ const ensureProtocolV2WalletStatus = async () => {
118
+ if (isProtocolV2 && !hasAuthoritativeProtocolV2WalletStatus(state)) {
119
+ await this.device.unlockDevice(DeviceSessionPinType.Main, {
120
+ source: 'unlock-coordinator',
121
+ reason: 'device-locked',
122
+ deviceOnly: true,
123
+ method: 'openWalletSession',
124
+ });
125
+ requireAuthoritativeProtocolV2WalletStatus(await refreshProtocolV2DeviceState());
126
+ }
127
+ return state;
128
+ };
129
+
130
+ const protocol = isProtocolV2 ? 'V2' : 'V1';
131
+
132
+ if (this.params.mode === OpenWalletSessionMode.Standard) {
133
+ this.device.passphraseState = undefined;
134
+ const session = isProtocolV2
135
+ ? await getProtocolV2WalletSession(this.device, {
136
+ onlyMainPin: true,
137
+ deriveCardano: this.payload.deriveCardano,
138
+ selectMainWalletBeforeRestore:
139
+ !hasAuthoritativeProtocolV2WalletStatus(state) ||
140
+ state.status.unlockedAttachPin === true,
141
+ })
142
+ : await getPassphraseStateWithRefreshDeviceInfo(this.device, {
143
+ onlyMainPin: true,
144
+ initSession: this.payload.initSession,
145
+ });
146
+ const refreshedState = isProtocolV2
147
+ ? requireAuthoritativeProtocolV2WalletStatus(await refreshProtocolV2DeviceState())
148
+ : state;
149
+ const deviceId = requireDeviceId();
150
+ if (
151
+ session.unlockedAttachPin ||
152
+ (isProtocolV2 && refreshedState.status.unlockedAttachPin === true)
153
+ ) {
154
+ try {
155
+ await this.device.lockDevice();
156
+ } catch {
157
+ // The wallet context is rejected even when an older device cannot be locked.
158
+ }
159
+ this.device.clearInternalState();
160
+ throw ERRORS.TypedError(HardwareErrorCode.DeviceCheckUnlockTypeError);
161
+ }
162
+ return {
163
+ protocol,
164
+ walletType: 'standard',
165
+ deviceId,
166
+ passphraseState: null,
167
+ resumed: wasResumed(session),
168
+ };
169
+ }
170
+
171
+ if (this.params.mode === OpenWalletSessionMode.ResumeHidden) {
172
+ if (isProtocolV2) {
173
+ await ensureProtocolV2WalletStatus();
174
+ const refreshedDeviceId = requireDeviceId();
175
+ if (refreshedDeviceId !== this.params.deviceId) {
176
+ deviceWalletSessionStore.delete(this.params.deviceId, this.params.passphraseState);
177
+ throw ERRORS.TypedError(HardwareErrorCode.DeviceCheckDeviceIdError);
178
+ }
179
+ } else if (requireDeviceId() !== this.params.deviceId) {
180
+ throw ERRORS.TypedError(HardwareErrorCode.DeviceCheckDeviceIdError);
181
+ }
182
+ this.device.passphraseState = this.params.passphraseState;
183
+ const cachedSessionId = deviceWalletSessionStore.get(
184
+ this.params.deviceId,
185
+ this.params.passphraseState
186
+ );
187
+ if (!cachedSessionId && !isProtocolV2) {
188
+ throw ERRORS.TypedError(HardwareErrorCode.WalletSessionInvalid);
189
+ }
190
+ if (!isProtocolV2) {
191
+ await this.device.initialize({
192
+ deviceId: this.params.deviceId,
193
+ passphraseState: this.params.passphraseState,
194
+ });
195
+ }
196
+ const session = isProtocolV2
197
+ ? await getProtocolV2WalletSession(this.device, {
198
+ expectedPassphraseState: this.params.passphraseState,
199
+ deriveCardano: this.payload.deriveCardano,
200
+ })
201
+ : await getPassphraseStateWithRefreshDeviceInfo(this.device, {
202
+ expectPassphraseState: this.params.passphraseState,
203
+ });
204
+ const deviceId = requireDeviceId();
205
+ if (session.passphraseState !== this.params.passphraseState) {
206
+ this.device.clearInternalState();
207
+ throw ERRORS.TypedError(HardwareErrorCode.DeviceCheckPassphraseStateError);
208
+ }
209
+ return {
210
+ protocol,
211
+ walletType: 'hidden',
212
+ deviceId,
213
+ ...requireHiddenWalletResponse(session),
214
+ resumed: wasResumed(session) || (!isProtocolV2 && session.newSession === cachedSessionId),
215
+ };
216
+ }
217
+
218
+ this.device.passphraseState = undefined;
219
+ await ensureProtocolV2WalletStatus();
220
+ const session = isProtocolV2
221
+ ? await getProtocolV2WalletSession(this.device, {
222
+ forceWalletSelection: true,
223
+ deriveCardano: this.payload.deriveCardano,
224
+ })
225
+ : await getPassphraseStateWithRefreshDeviceInfo(this.device, { initSession: true });
226
+ const refreshedState = isProtocolV2
227
+ ? requireAuthoritativeProtocolV2WalletStatus(await refreshProtocolV2DeviceState())
228
+ : state;
229
+ const deviceId = requireDeviceId();
230
+ if (isProtocolV2 && refreshedState.status.passphraseProtection !== true) {
231
+ this.device.clearInternalState();
232
+ throw ERRORS.TypedError(HardwareErrorCode.DeviceNotOpenedPassphrase);
233
+ }
234
+ const responseBase = {
235
+ protocol,
236
+ deviceId,
237
+ resumed: wasResumed(session),
238
+ } as const;
239
+ return !isProtocolV2 && this.device.getCurrentPassphraseProtection() === false
240
+ ? {
241
+ ...responseBase,
242
+ walletType: 'standard',
243
+ passphraseState: null,
244
+ }
245
+ : {
246
+ ...responseBase,
247
+ walletType: 'hidden',
248
+ ...requireHiddenWalletResponse(session),
249
+ };
250
+ }
251
+ }
@@ -1,7 +1,7 @@
1
1
  import { BaseMethod } from './BaseMethod';
2
2
  import {
3
- validateNonEmptyString,
4
3
  validateOptionalNonNegativeInteger,
4
+ validateProtocolV2FilesystemPath,
5
5
  } from './helpers/filesystemValidation';
6
6
 
7
7
  export type PathInfoParams = {
@@ -10,13 +10,18 @@ export type PathInfoParams = {
10
10
  };
11
11
 
12
12
  export default class PathInfo extends BaseMethod<PathInfoParams> {
13
+ getSupportedProtocols() {
14
+ return ['V2'] as const;
15
+ }
16
+
13
17
  init() {
14
- // Protocol V2 (Pro2) 专属方法,core 调度层统一做非 V2 设备守卫
15
- this.requireProtocolV2 = true;
18
+ // Protocol V2 (Pro2) only; Core rejects non-V2 devices.
16
19
  this.skipForceUpdateCheck = true;
17
20
  this.useDevicePassphraseState = false;
18
21
  this.params = {
19
- path: validateNonEmptyString(this.payload.path, 'path'),
22
+ path: validateProtocolV2FilesystemPath(this.payload.path, 'path', {
23
+ allowVolumeRoot: true,
24
+ }),
20
25
  timeoutMs: validateOptionalNonNegativeInteger(this.payload.timeoutMs, 'timeoutMs'),
21
26
  };
22
27
  }
@@ -52,14 +52,9 @@ export default class PromptWebDeviceAccess extends BaseMethod {
52
52
 
53
53
  if (isWebUsbEnv) {
54
54
  const usbDevice = device as USBDevice;
55
- let path = usbDevice.serialNumber ?? '';
55
+ const path = usbDevice.serialNumber;
56
56
  if (!path) {
57
- // 早期 Pro2 工程板 USB descriptor 没有 serial number。
58
- // 授权后重新枚举,transport 会为空 serial 设备生成会话内稳定的 mock path,
59
- // 这里按 USBDevice 对象身份找回该 path,保证后续 acquire 能匹配。
60
- const diff = await this.connector?.enumerate();
61
- const matched = diff?.descriptors?.find(d => (d as any).device === usbDevice);
62
- path = matched?.path ?? '';
57
+ throw ERRORS.TypedError(HardwareErrorCode.WebDevicePromptAccessError);
63
58
  }
64
59
  devicesDescriptor = [
65
60
  {
@@ -1,11 +1,13 @@
1
1
  import { BaseMethod } from './BaseMethod';
2
2
  import TransportManager from '../data-manager/TransportManager';
3
3
  import { DataManager } from '../data-manager';
4
- import { getDeviceTypeByBleName } from '../utils';
4
+ import { LoggerNames, getDeviceTypeByBleName, getLogger } from '../utils';
5
5
  import { DevicePool } from '../device/DevicePool';
6
6
 
7
7
  import type DeviceConnector from '../device/DeviceConnector';
8
8
 
9
+ const Log = getLogger(LoggerNames.DevicePool);
10
+
9
11
  export default class SearchDevices extends BaseMethod {
10
12
  connector?: DeviceConnector;
11
13
 
@@ -39,6 +41,10 @@ export default class SearchDevices extends BaseMethod {
39
41
  devices.push({
40
42
  ...device,
41
43
  connectId: device.id,
44
+ serialNo: null,
45
+ // Legacy BLE discovery identifier. The physical serial number is unavailable here.
46
+ uuid: device.id,
47
+ deviceId: null,
42
48
  name: bleName || device.name,
43
49
  deviceType: getDeviceTypeByBleName(bleName),
44
50
  });
@@ -47,9 +53,28 @@ export default class SearchDevices extends BaseMethod {
47
53
  return devices;
48
54
  }
49
55
 
50
- const { deviceList } = await DevicePool.getDevices(devicesDescriptor, undefined, {
51
- connectProtocol: this.payload.connectProtocol,
52
- });
56
+ const deviceList = [];
57
+ for (const descriptor of devicesDescriptor) {
58
+ try {
59
+ // Discovery is best effort. Browsers may retain WebUSB grants for devices that
60
+ // are offline, busy, or not ready, so one descriptor must not abort the scan.
61
+ const result = await DevicePool.getDevices([descriptor], descriptor.path, {
62
+ connectProtocol: this.payload.connectProtocol,
63
+ refreshRuntimeState: true,
64
+ });
65
+ deviceList.push(...result.deviceList);
66
+ } catch (error) {
67
+ const errorCode =
68
+ error && typeof error === 'object' && 'errorCode' in error
69
+ ? (error as { errorCode?: unknown }).errorCode
70
+ : undefined;
71
+ Log.debug('Skip unavailable device during search', {
72
+ path: descriptor.path,
73
+ ...(errorCode !== undefined ? { errorCode } : {}),
74
+ });
75
+ }
76
+ }
77
+
53
78
  return deviceList.map(device => device.toMessageObject());
54
79
  }
55
80
  }
@@ -0,0 +1,40 @@
1
+ import FileWrite from './FileWrite';
2
+
3
+ export type UploadPortfolioParams = {
4
+ packageBytes: ArrayBuffer | Uint8Array | Blob;
5
+ timeoutMs?: number | string;
6
+ };
7
+
8
+ const PORTFOLIO_PENDING_PATH = 'vol1:/portfolio/portfolio.okpkg.pending';
9
+ const PORTFOLIO_CHUNK_SIZE = 2048;
10
+
11
+ export default class UploadPortfolio extends FileWrite {
12
+ init() {
13
+ const { packageBytes, timeoutMs } = this.payload as UploadPortfolioParams;
14
+ this.payload = {
15
+ ...this.payload,
16
+ path: PORTFOLIO_PENDING_PATH,
17
+ offset: 0,
18
+ data: packageBytes,
19
+ chunkSize: PORTFOLIO_CHUNK_SIZE,
20
+ overwrite: true,
21
+ append: false,
22
+ emitProgress: false,
23
+ timeoutMs,
24
+ };
25
+ super.init();
26
+ this.unlockPolicy = 'none';
27
+ // Portfolio is a background write/apply flow and never synthesizes UI events.
28
+ this.protocolV2UiMode = 'none';
29
+ }
30
+
31
+ async run() {
32
+ const stagedFile = await super.run();
33
+ this.throwIfAborted();
34
+ await this.device.commands.typedCall('PortfolioUpdate', 'Success', {});
35
+ return {
36
+ ...stagedFile,
37
+ portfolioUpdated: true,
38
+ };
39
+ }
40
+ }
@@ -45,10 +45,6 @@ export default class AlephiumGetAddress extends BaseMethod<HardwareAlephiumGetAd
45
45
 
46
46
  getVersionRange(): DeviceFirmwareRange {
47
47
  return {
48
- pro2: {
49
- min: '0.0.0',
50
- unsupported: true,
51
- },
52
48
  model_touch: {
53
49
  min: '4.10.0',
54
50
  },
@@ -33,10 +33,6 @@ export default class AlephiumSignMessage extends BaseMethod<HardwareAlephiumSign
33
33
 
34
34
  getVersionRange(): DeviceFirmwareRange {
35
35
  return {
36
- pro2: {
37
- min: '0.0.0',
38
- unsupported: true,
39
- },
40
36
  model_touch: {
41
37
  min: '4.10.0',
42
38
  },