@onekeyfe/hd-core 1.2.0-alpha.24 → 1.2.0-alpha.26

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 (493) hide show
  1. package/__tests__/AllNetworkGetAddressBase.tracing.test.ts +2 -0
  2. package/__tests__/chain-params-onekey-compatibility.test.ts +229 -0
  3. package/__tests__/connectSettings.test.ts +47 -5
  4. package/__tests__/device-state-events.test.ts +124 -0
  5. package/__tests__/evmLedgerLegacySafety.test.ts +3 -1
  6. package/__tests__/firmware-update/check-all-firmware-release.test.ts +127 -0
  7. package/__tests__/firmware-update/firmware-artifact-source.test.ts +119 -0
  8. package/__tests__/firmware-update/firmware-host-binding.test.ts +70 -0
  9. package/__tests__/firmware-update/firmware-update-capabilities.test.ts +13 -0
  10. package/__tests__/firmware-update/firmware-update-plan.test.ts +354 -0
  11. package/__tests__/firmware-update/firmware-update-prepared-plan.test.ts +213 -0
  12. package/__tests__/firmware-update/firmware-update-v2-download-before-boot.test.ts +39 -30
  13. package/__tests__/firmware-update/firmware-upload-source.test.ts +70 -0
  14. package/__tests__/kaspa-public-types.type-test.ts +16 -0
  15. package/__tests__/kaspaSignTransaction.test.ts +4 -3
  16. package/__tests__/method-protocol-support.test.ts +113 -0
  17. package/__tests__/protocol-v2.test.ts +400 -123
  18. package/__tests__/public-device-state-api.test.ts +10 -8
  19. package/__tests__/tron-sign-message-init.test.ts +74 -0
  20. package/dist/api/BaseMethod.d.ts +6 -2
  21. package/dist/api/BaseMethod.d.ts.map +1 -1
  22. package/dist/api/CheckAllFirmwareRelease.d.ts.map +1 -1
  23. package/dist/api/CipherKeyValue.d.ts +1 -0
  24. package/dist/api/CipherKeyValue.d.ts.map +1 -1
  25. package/dist/api/DirList.d.ts +1 -0
  26. package/dist/api/DirList.d.ts.map +1 -1
  27. package/dist/api/DirMake.d.ts +1 -0
  28. package/dist/api/DirMake.d.ts.map +1 -1
  29. package/dist/api/DirRemove.d.ts +1 -0
  30. package/dist/api/DirRemove.d.ts.map +1 -1
  31. package/dist/api/FileDelete.d.ts +1 -0
  32. package/dist/api/FileDelete.d.ts.map +1 -1
  33. package/dist/api/FileRead.d.ts +1 -0
  34. package/dist/api/FileRead.d.ts.map +1 -1
  35. package/dist/api/FileWrite.d.ts +1 -0
  36. package/dist/api/FileWrite.d.ts.map +1 -1
  37. package/dist/api/FirmwareUpdate.d.ts.map +1 -1
  38. package/dist/api/FirmwareUpdateV2.d.ts +11 -0
  39. package/dist/api/FirmwareUpdateV2.d.ts.map +1 -1
  40. package/dist/api/FirmwareUpdateV3.d.ts +7 -3
  41. package/dist/api/FirmwareUpdateV3.d.ts.map +1 -1
  42. package/dist/api/FirmwareUpdateV4.d.ts +23 -5
  43. package/dist/api/FirmwareUpdateV4.d.ts.map +1 -1
  44. package/dist/api/GetDeviceState.d.ts +1 -0
  45. package/dist/api/GetDeviceState.d.ts.map +1 -1
  46. package/dist/api/GetFeatures.d.ts.map +1 -1
  47. package/dist/api/GetOnekeyFeatures.d.ts.map +1 -1
  48. package/dist/api/GetPassphraseState.d.ts +1 -0
  49. package/dist/api/GetPassphraseState.d.ts.map +1 -1
  50. package/dist/api/OpenWalletSession.d.ts +1 -0
  51. package/dist/api/OpenWalletSession.d.ts.map +1 -1
  52. package/dist/api/PathInfo.d.ts +1 -0
  53. package/dist/api/PathInfo.d.ts.map +1 -1
  54. package/dist/api/alephium/AlephiumGetAddress.d.ts.map +1 -1
  55. package/dist/api/alephium/AlephiumSignMessage.d.ts.map +1 -1
  56. package/dist/api/alephium/AlephiumSignTransaction.d.ts.map +1 -1
  57. package/dist/api/algo/AlgoGetAddress.d.ts +1 -0
  58. package/dist/api/algo/AlgoGetAddress.d.ts.map +1 -1
  59. package/dist/api/algo/AlgoSignTransaction.d.ts +1 -0
  60. package/dist/api/algo/AlgoSignTransaction.d.ts.map +1 -1
  61. package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts +1 -0
  62. package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts.map +1 -1
  63. package/dist/api/aptos/AptosGetAddress.d.ts +1 -0
  64. package/dist/api/aptos/AptosGetAddress.d.ts.map +1 -1
  65. package/dist/api/aptos/AptosGetPublicKey.d.ts +1 -0
  66. package/dist/api/aptos/AptosGetPublicKey.d.ts.map +1 -1
  67. package/dist/api/aptos/AptosSignInMessage.d.ts +1 -0
  68. package/dist/api/aptos/AptosSignInMessage.d.ts.map +1 -1
  69. package/dist/api/aptos/AptosSignMessage.d.ts +1 -0
  70. package/dist/api/aptos/AptosSignMessage.d.ts.map +1 -1
  71. package/dist/api/aptos/AptosSignTransaction.d.ts +1 -0
  72. package/dist/api/aptos/AptosSignTransaction.d.ts.map +1 -1
  73. package/dist/api/benfen/BenfenGetAddress.d.ts.map +1 -1
  74. package/dist/api/benfen/BenfenGetPublicKey.d.ts.map +1 -1
  75. package/dist/api/benfen/BenfenSignMessage.d.ts.map +1 -1
  76. package/dist/api/benfen/BenfenSignTransaction.d.ts.map +1 -1
  77. package/dist/api/btc/BTCGetAddress.d.ts +1 -0
  78. package/dist/api/btc/BTCGetAddress.d.ts.map +1 -1
  79. package/dist/api/btc/BTCGetPublicKey.d.ts +1 -0
  80. package/dist/api/btc/BTCGetPublicKey.d.ts.map +1 -1
  81. package/dist/api/btc/BTCSignMessage.d.ts +1 -0
  82. package/dist/api/btc/BTCSignMessage.d.ts.map +1 -1
  83. package/dist/api/btc/BTCSignPsbt.d.ts +1 -0
  84. package/dist/api/btc/BTCSignPsbt.d.ts.map +1 -1
  85. package/dist/api/btc/BTCSignTransaction.d.ts +1 -0
  86. package/dist/api/btc/BTCSignTransaction.d.ts.map +1 -1
  87. package/dist/api/btc/BTCVerifyMessage.d.ts +1 -0
  88. package/dist/api/btc/BTCVerifyMessage.d.ts.map +1 -1
  89. package/dist/api/btc/helpers/versionLimit.d.ts +2 -0
  90. package/dist/api/btc/helpers/versionLimit.d.ts.map +1 -1
  91. package/dist/api/cardano/CardanoGetAddress.d.ts +1 -0
  92. package/dist/api/cardano/CardanoGetAddress.d.ts.map +1 -1
  93. package/dist/api/cardano/CardanoGetPublicKey.d.ts +1 -0
  94. package/dist/api/cardano/CardanoGetPublicKey.d.ts.map +1 -1
  95. package/dist/api/cardano/CardanoSignMessage.d.ts +1 -0
  96. package/dist/api/cardano/CardanoSignMessage.d.ts.map +1 -1
  97. package/dist/api/cardano/CardanoSignTransaction.d.ts +1 -0
  98. package/dist/api/cardano/CardanoSignTransaction.d.ts.map +1 -1
  99. package/dist/api/conflux/ConfluxGetAddress.d.ts +1 -0
  100. package/dist/api/conflux/ConfluxGetAddress.d.ts.map +1 -1
  101. package/dist/api/conflux/ConfluxSignMessage.d.ts +1 -0
  102. package/dist/api/conflux/ConfluxSignMessage.d.ts.map +1 -1
  103. package/dist/api/conflux/ConfluxSignMessageCIP23.d.ts +1 -0
  104. package/dist/api/conflux/ConfluxSignMessageCIP23.d.ts.map +1 -1
  105. package/dist/api/conflux/ConfluxSignTransaction.d.ts +1 -0
  106. package/dist/api/conflux/ConfluxSignTransaction.d.ts.map +1 -1
  107. package/dist/api/cosmos/CosmosGetAddress.d.ts +1 -0
  108. package/dist/api/cosmos/CosmosGetAddress.d.ts.map +1 -1
  109. package/dist/api/cosmos/CosmosGetPublicKey.d.ts +1 -0
  110. package/dist/api/cosmos/CosmosGetPublicKey.d.ts.map +1 -1
  111. package/dist/api/cosmos/CosmosSignTransaction.d.ts +1 -0
  112. package/dist/api/cosmos/CosmosSignTransaction.d.ts.map +1 -1
  113. package/dist/api/device/DeviceCancel.d.ts +1 -0
  114. package/dist/api/device/DeviceCancel.d.ts.map +1 -1
  115. package/dist/api/device/DeviceChangePin.d.ts +1 -0
  116. package/dist/api/device/DeviceChangePin.d.ts.map +1 -1
  117. package/dist/api/device/DeviceLock.d.ts +1 -0
  118. package/dist/api/device/DeviceLock.d.ts.map +1 -1
  119. package/dist/api/device/DeviceRebootToBoardloader.d.ts +1 -0
  120. package/dist/api/device/DeviceRebootToBoardloader.d.ts.map +1 -1
  121. package/dist/api/device/DeviceRebootToBootloader.d.ts +1 -0
  122. package/dist/api/device/DeviceRebootToBootloader.d.ts.map +1 -1
  123. package/dist/api/device/DeviceSettings.d.ts +1 -0
  124. package/dist/api/device/DeviceSettings.d.ts.map +1 -1
  125. package/dist/api/device/DeviceSupportFeatures.d.ts +1 -0
  126. package/dist/api/device/DeviceSupportFeatures.d.ts.map +1 -1
  127. package/dist/api/device/DeviceUnlock.d.ts +1 -0
  128. package/dist/api/device/DeviceUnlock.d.ts.map +1 -1
  129. package/dist/api/device/DeviceUpdateBootloader.d.ts +5 -1
  130. package/dist/api/device/DeviceUpdateBootloader.d.ts.map +1 -1
  131. package/dist/api/device/DeviceWipe.d.ts +1 -0
  132. package/dist/api/device/DeviceWipe.d.ts.map +1 -1
  133. package/dist/api/device/PreInitialize.d.ts +1 -0
  134. package/dist/api/device/PreInitialize.d.ts.map +1 -1
  135. package/dist/api/dynex/DnxGetAddress.d.ts.map +1 -1
  136. package/dist/api/dynex/DnxSignTransaction.d.ts.map +1 -1
  137. package/dist/api/evm/EVMGetAddress.d.ts +1 -0
  138. package/dist/api/evm/EVMGetAddress.d.ts.map +1 -1
  139. package/dist/api/evm/EVMGetPublicKey.d.ts +1 -0
  140. package/dist/api/evm/EVMGetPublicKey.d.ts.map +1 -1
  141. package/dist/api/evm/EVMSignMessage.d.ts +1 -0
  142. package/dist/api/evm/EVMSignMessage.d.ts.map +1 -1
  143. package/dist/api/evm/EVMSignMessageEIP712.d.ts.map +1 -1
  144. package/dist/api/evm/EVMSignTransaction.d.ts +1 -0
  145. package/dist/api/evm/EVMSignTransaction.d.ts.map +1 -1
  146. package/dist/api/evm/EVMSignTypedData.d.ts +1 -0
  147. package/dist/api/evm/EVMSignTypedData.d.ts.map +1 -1
  148. package/dist/api/evm/EVMVerifyMessage.d.ts +1 -0
  149. package/dist/api/evm/EVMVerifyMessage.d.ts.map +1 -1
  150. package/dist/api/filecoin/FilecoinGetAddress.d.ts +1 -0
  151. package/dist/api/filecoin/FilecoinGetAddress.d.ts.map +1 -1
  152. package/dist/api/filecoin/FilecoinSignTransaction.d.ts +1 -0
  153. package/dist/api/filecoin/FilecoinSignTransaction.d.ts.map +1 -1
  154. package/dist/api/firmware/FirmwareArtifactSource.d.ts +25 -0
  155. package/dist/api/firmware/FirmwareArtifactSource.d.ts.map +1 -0
  156. package/dist/api/firmware/FirmwareHostBinding.d.ts +6 -0
  157. package/dist/api/firmware/FirmwareHostBinding.d.ts.map +1 -0
  158. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts +7 -0
  159. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts.map +1 -1
  160. package/dist/api/firmware/FirmwareUpdateCapabilities.d.ts +3 -0
  161. package/dist/api/firmware/FirmwareUpdateCapabilities.d.ts.map +1 -0
  162. package/dist/api/firmware/FirmwareUpdatePlan.d.ts +23 -0
  163. package/dist/api/firmware/FirmwareUpdatePlan.d.ts.map +1 -0
  164. package/dist/api/firmware/FirmwareUpdatePreparedPlan.d.ts +30 -0
  165. package/dist/api/firmware/FirmwareUpdatePreparedPlan.d.ts.map +1 -0
  166. package/dist/api/firmware/getBinary.d.ts +7 -0
  167. package/dist/api/firmware/getBinary.d.ts.map +1 -1
  168. package/dist/api/firmware/updateBootloader.d.ts +2 -0
  169. package/dist/api/firmware/updateBootloader.d.ts.map +1 -1
  170. package/dist/api/firmware/uploadFirmware.d.ts +9 -1
  171. package/dist/api/firmware/uploadFirmware.d.ts.map +1 -1
  172. package/dist/api/kaspa/KaspaGetAddress.d.ts +1 -0
  173. package/dist/api/kaspa/KaspaGetAddress.d.ts.map +1 -1
  174. package/dist/api/kaspa/KaspaSignTransaction.d.ts +1 -0
  175. package/dist/api/kaspa/KaspaSignTransaction.d.ts.map +1 -1
  176. package/dist/api/kaspa/helpers/TransferSerialize.d.ts.map +1 -1
  177. package/dist/api/lightning/LnurlAuth.d.ts +0 -4
  178. package/dist/api/lightning/LnurlAuth.d.ts.map +1 -1
  179. package/dist/api/near/NearGetAddress.d.ts +1 -0
  180. package/dist/api/near/NearGetAddress.d.ts.map +1 -1
  181. package/dist/api/near/NearSignTransaction.d.ts +1 -0
  182. package/dist/api/near/NearSignTransaction.d.ts.map +1 -1
  183. package/dist/api/nem/NEMGetAddress.d.ts +1 -0
  184. package/dist/api/nem/NEMGetAddress.d.ts.map +1 -1
  185. package/dist/api/nem/NEMSignTransaction.d.ts +1 -0
  186. package/dist/api/nem/NEMSignTransaction.d.ts.map +1 -1
  187. package/dist/api/neo/NeoGetAddress.d.ts.map +1 -1
  188. package/dist/api/neo/NeoSignTransaction.d.ts.map +1 -1
  189. package/dist/api/nervos/NervosGetAddress.d.ts.map +1 -1
  190. package/dist/api/nervos/NervosSignTransaction.d.ts.map +1 -1
  191. package/dist/api/nexa/NexaGetAddress.d.ts.map +1 -1
  192. package/dist/api/nexa/NexaSignTransaction.d.ts.map +1 -1
  193. package/dist/api/nostr/NostrDecryptMessage.d.ts +1 -0
  194. package/dist/api/nostr/NostrDecryptMessage.d.ts.map +1 -1
  195. package/dist/api/nostr/NostrEncryptMessage.d.ts +1 -0
  196. package/dist/api/nostr/NostrEncryptMessage.d.ts.map +1 -1
  197. package/dist/api/nostr/NostrGetPublicKey.d.ts +1 -0
  198. package/dist/api/nostr/NostrGetPublicKey.d.ts.map +1 -1
  199. package/dist/api/nostr/NostrSignEvent.d.ts +1 -0
  200. package/dist/api/nostr/NostrSignEvent.d.ts.map +1 -1
  201. package/dist/api/nostr/NostrSignSchnorr.d.ts +1 -0
  202. package/dist/api/nostr/NostrSignSchnorr.d.ts.map +1 -1
  203. package/dist/api/polkadot/PolkadotGetAddress.d.ts +1 -0
  204. package/dist/api/polkadot/PolkadotGetAddress.d.ts.map +1 -1
  205. package/dist/api/polkadot/PolkadotSignTransaction.d.ts +1 -0
  206. package/dist/api/polkadot/PolkadotSignTransaction.d.ts.map +1 -1
  207. package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts +1 -0
  208. package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts.map +1 -1
  209. package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts +1 -0
  210. package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts.map +1 -1
  211. package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts +1 -0
  212. package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts.map +1 -1
  213. package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts +1 -0
  214. package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts.map +1 -1
  215. package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts +1 -0
  216. package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts.map +1 -1
  217. package/dist/api/protocol-v2/DeviceInfoGet.d.ts +1 -0
  218. package/dist/api/protocol-v2/DeviceInfoGet.d.ts.map +1 -1
  219. package/dist/api/protocol-v2/DeviceReboot.d.ts +1 -0
  220. package/dist/api/protocol-v2/DeviceReboot.d.ts.map +1 -1
  221. package/dist/api/protocol-v2/DeviceStatusGet.d.ts +1 -0
  222. package/dist/api/protocol-v2/DeviceStatusGet.d.ts.map +1 -1
  223. package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts +1 -0
  224. package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts.map +1 -1
  225. package/dist/api/protocol-v2/FilesystemFormat.d.ts +1 -0
  226. package/dist/api/protocol-v2/FilesystemFormat.d.ts.map +1 -1
  227. package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts +1 -0
  228. package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts.map +1 -1
  229. package/dist/api/protocol-v2/Ping.d.ts +1 -0
  230. package/dist/api/protocol-v2/Ping.d.ts.map +1 -1
  231. package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts +1 -0
  232. package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts.map +1 -1
  233. package/dist/api/scdo/ScdoGetAddress.d.ts.map +1 -1
  234. package/dist/api/scdo/ScdoSignMessage.d.ts.map +1 -1
  235. package/dist/api/scdo/ScdoSignTransaction.d.ts.map +1 -1
  236. package/dist/api/solana/SolGetAddress.d.ts +1 -0
  237. package/dist/api/solana/SolGetAddress.d.ts.map +1 -1
  238. package/dist/api/solana/SolSignMessage.d.ts +1 -0
  239. package/dist/api/solana/SolSignMessage.d.ts.map +1 -1
  240. package/dist/api/solana/SolSignOffchainMessage.d.ts +1 -0
  241. package/dist/api/solana/SolSignOffchainMessage.d.ts.map +1 -1
  242. package/dist/api/solana/SolSignTransaction.d.ts +1 -0
  243. package/dist/api/solana/SolSignTransaction.d.ts.map +1 -1
  244. package/dist/api/starcoin/StarcoinGetAddress.d.ts +1 -0
  245. package/dist/api/starcoin/StarcoinGetAddress.d.ts.map +1 -1
  246. package/dist/api/starcoin/StarcoinGetPublicKey.d.ts +1 -0
  247. package/dist/api/starcoin/StarcoinGetPublicKey.d.ts.map +1 -1
  248. package/dist/api/starcoin/StarcoinSignMessage.d.ts +1 -0
  249. package/dist/api/starcoin/StarcoinSignMessage.d.ts.map +1 -1
  250. package/dist/api/starcoin/StarcoinSignTransaction.d.ts +1 -0
  251. package/dist/api/starcoin/StarcoinSignTransaction.d.ts.map +1 -1
  252. package/dist/api/starcoin/StarcoinVerifyMessage.d.ts +1 -0
  253. package/dist/api/starcoin/StarcoinVerifyMessage.d.ts.map +1 -1
  254. package/dist/api/stellar/StellarGetAddress.d.ts +1 -2
  255. package/dist/api/stellar/StellarGetAddress.d.ts.map +1 -1
  256. package/dist/api/stellar/StellarSignTransaction.d.ts +2 -3
  257. package/dist/api/stellar/StellarSignTransaction.d.ts.map +1 -1
  258. package/dist/api/sui/SuiGetAddress.d.ts +1 -0
  259. package/dist/api/sui/SuiGetAddress.d.ts.map +1 -1
  260. package/dist/api/sui/SuiGetPublicKey.d.ts +1 -0
  261. package/dist/api/sui/SuiGetPublicKey.d.ts.map +1 -1
  262. package/dist/api/sui/SuiSignMessage.d.ts +1 -0
  263. package/dist/api/sui/SuiSignMessage.d.ts.map +1 -1
  264. package/dist/api/sui/SuiSignTransaction.d.ts +1 -0
  265. package/dist/api/sui/SuiSignTransaction.d.ts.map +1 -1
  266. package/dist/api/ton/TonGetAddress.d.ts +1 -0
  267. package/dist/api/ton/TonGetAddress.d.ts.map +1 -1
  268. package/dist/api/ton/TonSignData.d.ts +1 -0
  269. package/dist/api/ton/TonSignData.d.ts.map +1 -1
  270. package/dist/api/ton/TonSignMessage.d.ts +1 -0
  271. package/dist/api/ton/TonSignMessage.d.ts.map +1 -1
  272. package/dist/api/ton/TonSignProof.d.ts +1 -0
  273. package/dist/api/ton/TonSignProof.d.ts.map +1 -1
  274. package/dist/api/tron/TronGetAddress.d.ts +1 -0
  275. package/dist/api/tron/TronGetAddress.d.ts.map +1 -1
  276. package/dist/api/tron/TronSignMessage.d.ts +5 -0
  277. package/dist/api/tron/TronSignMessage.d.ts.map +1 -1
  278. package/dist/api/tron/TronSignTransaction.d.ts +1 -0
  279. package/dist/api/tron/TronSignTransaction.d.ts.map +1 -1
  280. package/dist/api/xrp/XrpGetAddress.d.ts +1 -0
  281. package/dist/api/xrp/XrpGetAddress.d.ts.map +1 -1
  282. package/dist/api/xrp/XrpSignTransaction.d.ts +1 -0
  283. package/dist/api/xrp/XrpSignTransaction.d.ts.map +1 -1
  284. package/dist/core/index.d.ts.map +1 -1
  285. package/dist/data-manager/DataManager.d.ts +1 -0
  286. package/dist/data-manager/DataManager.d.ts.map +1 -1
  287. package/dist/data-manager/connectSettings.d.ts.map +1 -1
  288. package/dist/device/Device.d.ts +3 -1
  289. package/dist/device/Device.d.ts.map +1 -1
  290. package/dist/index.d.ts +271 -87
  291. package/dist/index.d.ts.map +1 -1
  292. package/dist/index.js +2864 -893
  293. package/dist/inject.d.ts.map +1 -1
  294. package/dist/lowLevelInject.d.ts.map +1 -1
  295. package/dist/protocols/protocol-v2/unlockRetry.d.ts.map +1 -1
  296. package/dist/topLevelInject.d.ts.map +1 -1
  297. package/dist/types/api/checkAllFirmwareRelease.d.ts +3 -0
  298. package/dist/types/api/checkAllFirmwareRelease.d.ts.map +1 -1
  299. package/dist/types/api/deviceUpdateBootloader.d.ts +6 -0
  300. package/dist/types/api/deviceUpdateBootloader.d.ts.map +1 -1
  301. package/dist/types/api/export.d.ts +5 -2
  302. package/dist/types/api/export.d.ts.map +1 -1
  303. package/dist/types/api/firmwareUpdate.d.ts +69 -0
  304. package/dist/types/api/firmwareUpdate.d.ts.map +1 -1
  305. package/dist/types/api/firmwareUpdateCapabilities.d.ts +9 -0
  306. package/dist/types/api/firmwareUpdateCapabilities.d.ts.map +1 -0
  307. package/dist/types/api/firmwareUpdatePlan.d.ts +27 -0
  308. package/dist/types/api/firmwareUpdatePlan.d.ts.map +1 -0
  309. package/dist/types/api/firmwareUpdatePreparedPlan.d.ts +42 -0
  310. package/dist/types/api/firmwareUpdatePreparedPlan.d.ts.map +1 -0
  311. package/dist/types/api/index.d.ts +9 -1
  312. package/dist/types/api/index.d.ts.map +1 -1
  313. package/dist/types/api/kaspaSignTransaction.d.ts +15 -2
  314. package/dist/types/api/kaspaSignTransaction.d.ts.map +1 -1
  315. package/dist/types/device.d.ts +0 -1
  316. package/dist/types/device.d.ts.map +1 -1
  317. package/dist/types/settings.d.ts +13 -0
  318. package/dist/types/settings.d.ts.map +1 -1
  319. package/dist/utils/deviceInfoUtils.d.ts +0 -1
  320. package/dist/utils/deviceInfoUtils.d.ts.map +1 -1
  321. package/dist/utils/deviceVersionUtils.d.ts +1 -0
  322. package/dist/utils/deviceVersionUtils.d.ts.map +1 -1
  323. package/dist/utils/index.d.ts +1 -1
  324. package/dist/utils/index.d.ts.map +1 -1
  325. package/package.json +4 -4
  326. package/src/api/BaseMethod.ts +21 -18
  327. package/src/api/CheckAllFirmwareRelease.ts +44 -4
  328. package/src/api/CipherKeyValue.ts +4 -0
  329. package/src/api/DirList.ts +4 -1
  330. package/src/api/DirMake.ts +4 -1
  331. package/src/api/DirRemove.ts +4 -1
  332. package/src/api/FileDelete.ts +4 -1
  333. package/src/api/FileRead.ts +4 -1
  334. package/src/api/FileWrite.ts +4 -1
  335. package/src/api/FirmwareUpdate.ts +0 -8
  336. package/src/api/FirmwareUpdateV2.ts +292 -120
  337. package/src/api/FirmwareUpdateV3.ts +256 -61
  338. package/src/api/FirmwareUpdateV4.ts +767 -289
  339. package/src/api/GetDeviceState.ts +4 -0
  340. package/src/api/GetFeatures.ts +1 -4
  341. package/src/api/GetOnekeyFeatures.ts +0 -5
  342. package/src/api/GetPassphraseState.ts +4 -0
  343. package/src/api/OpenWalletSession.ts +4 -0
  344. package/src/api/PathInfo.ts +4 -1
  345. package/src/api/UploadPortfolio.ts +1 -1
  346. package/src/api/alephium/AlephiumGetAddress.ts +0 -4
  347. package/src/api/alephium/AlephiumSignMessage.ts +0 -4
  348. package/src/api/alephium/AlephiumSignTransaction.ts +0 -4
  349. package/src/api/algo/AlgoGetAddress.ts +4 -0
  350. package/src/api/algo/AlgoSignTransaction.ts +4 -0
  351. package/src/api/allnetwork/AllNetworkGetAddressBase.ts +5 -13
  352. package/src/api/aptos/AptosGetAddress.ts +4 -0
  353. package/src/api/aptos/AptosGetPublicKey.ts +4 -0
  354. package/src/api/aptos/AptosSignInMessage.ts +4 -0
  355. package/src/api/aptos/AptosSignMessage.ts +4 -0
  356. package/src/api/aptos/AptosSignTransaction.ts +4 -0
  357. package/src/api/benfen/BenfenGetAddress.ts +11 -7
  358. package/src/api/benfen/BenfenGetPublicKey.ts +0 -4
  359. package/src/api/benfen/BenfenSignMessage.ts +0 -4
  360. package/src/api/benfen/BenfenSignTransaction.ts +0 -4
  361. package/src/api/btc/BTCGetAddress.ts +8 -1
  362. package/src/api/btc/BTCGetPublicKey.ts +8 -1
  363. package/src/api/btc/BTCSignMessage.ts +8 -1
  364. package/src/api/btc/BTCSignPsbt.ts +4 -0
  365. package/src/api/btc/BTCSignTransaction.ts +8 -1
  366. package/src/api/btc/BTCVerifyMessage.ts +8 -1
  367. package/src/api/btc/helpers/versionLimit.ts +7 -4
  368. package/src/api/cardano/CardanoGetAddress.ts +4 -0
  369. package/src/api/cardano/CardanoGetPublicKey.ts +4 -0
  370. package/src/api/cardano/CardanoSignMessage.ts +4 -0
  371. package/src/api/cardano/CardanoSignTransaction.ts +4 -0
  372. package/src/api/conflux/ConfluxGetAddress.ts +4 -0
  373. package/src/api/conflux/ConfluxSignMessage.ts +4 -0
  374. package/src/api/conflux/ConfluxSignMessageCIP23.ts +4 -0
  375. package/src/api/conflux/ConfluxSignTransaction.ts +6 -5
  376. package/src/api/cosmos/CosmosGetAddress.ts +4 -0
  377. package/src/api/cosmos/CosmosGetPublicKey.ts +4 -0
  378. package/src/api/cosmos/CosmosSignTransaction.ts +4 -0
  379. package/src/api/device/DeviceCancel.ts +4 -0
  380. package/src/api/device/DeviceChangePin.ts +4 -0
  381. package/src/api/device/DeviceLock.ts +4 -0
  382. package/src/api/device/DeviceRebootToBoardloader.ts +4 -0
  383. package/src/api/device/DeviceRebootToBootloader.ts +4 -0
  384. package/src/api/device/DeviceSettings.ts +4 -0
  385. package/src/api/device/DeviceSupportFeatures.ts +4 -0
  386. package/src/api/device/DeviceUnlock.ts +4 -0
  387. package/src/api/device/DeviceUpdateBootloader.ts +122 -6
  388. package/src/api/device/DeviceWipe.ts +4 -0
  389. package/src/api/device/PreInitialize.ts +4 -0
  390. package/src/api/dynex/DnxGetAddress.ts +0 -6
  391. package/src/api/dynex/DnxSignTransaction.ts +0 -6
  392. package/src/api/evm/EVMGetAddress.ts +4 -0
  393. package/src/api/evm/EVMGetPublicKey.ts +4 -0
  394. package/src/api/evm/EVMSignMessage.ts +4 -0
  395. package/src/api/evm/EVMSignMessageEIP712.ts +1 -11
  396. package/src/api/evm/EVMSignTransaction.ts +4 -0
  397. package/src/api/evm/EVMSignTypedData.ts +4 -0
  398. package/src/api/evm/EVMVerifyMessage.ts +4 -0
  399. package/src/api/filecoin/FilecoinGetAddress.ts +4 -0
  400. package/src/api/filecoin/FilecoinSignTransaction.ts +4 -0
  401. package/src/api/firmware/FirmwareArtifactSource.ts +278 -0
  402. package/src/api/firmware/FirmwareHostBinding.ts +100 -0
  403. package/src/api/firmware/FirmwareUpdateBaseMethod.ts +50 -0
  404. package/src/api/firmware/FirmwareUpdateCapabilities.ts +9 -0
  405. package/src/api/firmware/FirmwareUpdatePlan.ts +628 -0
  406. package/src/api/firmware/FirmwareUpdatePreparedPlan.ts +392 -0
  407. package/src/api/firmware/updateBootloader.ts +19 -4
  408. package/src/api/firmware/uploadFirmware.ts +140 -22
  409. package/src/api/kaspa/KaspaGetAddress.ts +4 -0
  410. package/src/api/kaspa/KaspaSignTransaction.ts +37 -15
  411. package/src/api/kaspa/helpers/TransferSerialize.ts +3 -7
  412. package/src/api/lightning/LnurlAuth.ts +0 -4
  413. package/src/api/near/NearGetAddress.ts +4 -0
  414. package/src/api/near/NearSignTransaction.ts +4 -0
  415. package/src/api/nem/NEMGetAddress.ts +4 -0
  416. package/src/api/nem/NEMSignTransaction.ts +4 -0
  417. package/src/api/neo/NeoGetAddress.ts +0 -4
  418. package/src/api/neo/NeoSignTransaction.ts +0 -4
  419. package/src/api/nervos/NervosGetAddress.ts +0 -4
  420. package/src/api/nervos/NervosSignTransaction.ts +0 -4
  421. package/src/api/nexa/NexaGetAddress.ts +0 -4
  422. package/src/api/nexa/NexaSignTransaction.ts +0 -4
  423. package/src/api/nostr/NostrDecryptMessage.ts +4 -0
  424. package/src/api/nostr/NostrEncryptMessage.ts +4 -0
  425. package/src/api/nostr/NostrGetPublicKey.ts +4 -0
  426. package/src/api/nostr/NostrSignEvent.ts +4 -0
  427. package/src/api/nostr/NostrSignSchnorr.ts +4 -0
  428. package/src/api/polkadot/PolkadotGetAddress.ts +4 -0
  429. package/src/api/polkadot/PolkadotSignTransaction.ts +4 -0
  430. package/src/api/protocol-v2/DeviceFactoryInfoGet.ts +4 -1
  431. package/src/api/protocol-v2/DeviceFactoryInfoSet.ts +4 -1
  432. package/src/api/protocol-v2/DeviceFirmwareUpdate.ts +4 -1
  433. package/src/api/protocol-v2/DeviceGetFirmwareUpdateStatus.ts +4 -1
  434. package/src/api/protocol-v2/DeviceGetOnboardingStatus.ts +4 -1
  435. package/src/api/protocol-v2/DeviceInfoGet.ts +4 -8
  436. package/src/api/protocol-v2/DeviceReboot.ts +4 -2
  437. package/src/api/protocol-v2/DeviceStatusGet.ts +4 -1
  438. package/src/api/protocol-v2/DeviceUploadWallpaper.ts +4 -1
  439. package/src/api/protocol-v2/FilesystemFormat.ts +4 -1
  440. package/src/api/protocol-v2/FilesystemPermissionFix.ts +4 -1
  441. package/src/api/protocol-v2/Ping.ts +4 -1
  442. package/src/api/protocol-v2/ProtocolInfoRequest.ts +4 -1
  443. package/src/api/scdo/ScdoGetAddress.ts +0 -4
  444. package/src/api/scdo/ScdoSignMessage.ts +0 -4
  445. package/src/api/scdo/ScdoSignTransaction.ts +0 -4
  446. package/src/api/solana/SolGetAddress.ts +4 -0
  447. package/src/api/solana/SolSignMessage.ts +4 -0
  448. package/src/api/solana/SolSignOffchainMessage.ts +4 -0
  449. package/src/api/solana/SolSignTransaction.ts +4 -0
  450. package/src/api/starcoin/StarcoinGetAddress.ts +4 -0
  451. package/src/api/starcoin/StarcoinGetPublicKey.ts +4 -0
  452. package/src/api/starcoin/StarcoinSignMessage.ts +4 -0
  453. package/src/api/starcoin/StarcoinSignTransaction.ts +4 -0
  454. package/src/api/starcoin/StarcoinVerifyMessage.ts +4 -0
  455. package/src/api/stellar/StellarGetAddress.ts +1 -10
  456. package/src/api/stellar/StellarSignTransaction.ts +1 -14
  457. package/src/api/sui/SuiGetAddress.ts +4 -0
  458. package/src/api/sui/SuiGetPublicKey.ts +4 -0
  459. package/src/api/sui/SuiSignMessage.ts +4 -0
  460. package/src/api/sui/SuiSignTransaction.ts +4 -0
  461. package/src/api/ton/TonGetAddress.ts +4 -0
  462. package/src/api/ton/TonSignData.ts +5 -1
  463. package/src/api/ton/TonSignMessage.ts +4 -0
  464. package/src/api/ton/TonSignProof.ts +4 -0
  465. package/src/api/tron/TronGetAddress.ts +4 -0
  466. package/src/api/tron/TronSignMessage.ts +18 -7
  467. package/src/api/tron/TronSignTransaction.ts +4 -0
  468. package/src/api/xrp/XrpGetAddress.ts +4 -0
  469. package/src/api/xrp/XrpSignTransaction.ts +5 -1
  470. package/src/core/index.ts +4 -17
  471. package/src/data-manager/DataManager.ts +33 -33
  472. package/src/data-manager/connectSettings.ts +11 -0
  473. package/src/device/Device.ts +53 -53
  474. package/src/index.ts +5 -0
  475. package/src/inject.ts +22 -2
  476. package/src/lowLevelInject.ts +5 -1
  477. package/src/protocols/protocol-v2/unlockRetry.ts +18 -11
  478. package/src/topLevelInject.ts +5 -1
  479. package/src/types/api/checkAllFirmwareRelease.ts +3 -0
  480. package/src/types/api/deviceUpdateBootloader.ts +6 -0
  481. package/src/types/api/export.ts +20 -0
  482. package/src/types/api/firmwareUpdate.ts +76 -0
  483. package/src/types/api/firmwareUpdateCapabilities.ts +9 -0
  484. package/src/types/api/firmwareUpdatePlan.ts +36 -0
  485. package/src/types/api/firmwareUpdatePreparedPlan.ts +53 -0
  486. package/src/types/api/index.ts +14 -0
  487. package/src/types/api/kaspaSignTransaction.ts +20 -2
  488. package/src/types/device.ts +0 -1
  489. package/src/types/settings.ts +13 -0
  490. package/src/utils/deviceInfoUtils.ts +0 -3
  491. package/src/utils/deviceVersionUtils.ts +1 -1
  492. package/src/utils/index.ts +0 -1
  493. package/tsconfig.type-tests.json +8 -0
@@ -25,6 +25,7 @@ describe('AllNetworkGetAddressBase tracing', () => {
25
25
  connectId: 'connect-id',
26
26
  deviceId: 'device-id',
27
27
  getVersionRange: jest.fn().mockReturnValue({}),
28
+ assertProtocolSupported: jest.fn(),
28
29
  init: jest.fn(),
29
30
  name: 'xrpGetAddress',
30
31
  responseID: 42,
@@ -45,6 +46,7 @@ describe('AllNetworkGetAddressBase tracing', () => {
45
46
  method.device = {
46
47
  instanceId: deviceInstanceId,
47
48
  getCurrentFirmwareType: jest.fn(),
49
+ getProtocol: jest.fn().mockReturnValue('V1'),
48
50
  getCurrentFirmwareVersionString: jest.fn().mockReturnValue('1.0.0'),
49
51
  getCurrentMethodVersionRange: jest
50
52
  .fn()
@@ -0,0 +1,229 @@
1
+ import { EDeviceType, EFirmwareType } from '@onekeyfe/hd-shared';
2
+
3
+ import BenfenGetAddress from '../src/api/benfen/BenfenGetAddress';
4
+ import ConfluxSignTransaction from '../src/api/conflux/ConfluxSignTransaction';
5
+ import EVMSignTransaction from '../src/api/evm/EVMSignTransaction';
6
+ import EVMSignMessageEIP712 from '../src/api/evm/EVMSignMessageEIP712';
7
+ import KaspaSignTransaction from '../src/api/kaspa/KaspaSignTransaction';
8
+ import XrpSignTransaction from '../src/api/xrp/XrpSignTransaction';
9
+
10
+ import type { Device } from '../src/device/Device';
11
+
12
+ jest.mock('../src/data/config', () => ({
13
+ getSDKVersion: jest.fn(() => '1.0.0'),
14
+ DEFAULT_DOMAIN: 'https://jssdk.onekey.so/1.0.0/',
15
+ }));
16
+
17
+ jest.mock('../src/data-manager/TransportManager', () => ({
18
+ getProtocolV1MessageSchema: jest.fn(() => 'v1CurrentSchema'),
19
+ }));
20
+
21
+ jest.mock('../src/device/Device', () => ({
22
+ Device: jest.fn(),
23
+ }));
24
+
25
+ const KASPA_PATH = "m/44'/111111'/0'/0/0";
26
+ const KASPA_SCRIPT = `20${'ab'.repeat(32)}ac`;
27
+ const KASPA_ADDRESS = 'kaspa:qr0lr4ml9fn3chekrqmjdkergxl93l4wrk3dankcgvjq776s9wn9jkdskewva';
28
+
29
+ const buildKaspaPayload = () => ({
30
+ method: 'kaspaSignTransaction',
31
+ version: 0,
32
+ lockTime: 0,
33
+ inputs: [
34
+ {
35
+ path: KASPA_PATH,
36
+ prevTxId: 'aa'.repeat(32),
37
+ outputIndex: 0,
38
+ sequenceNumber: 0,
39
+ output: { satoshis: 200000, script: KASPA_SCRIPT },
40
+ },
41
+ ],
42
+ outputs: [{ satoshis: 100000, script: KASPA_SCRIPT, scriptVersion: 0 }],
43
+ });
44
+
45
+ describe('onekey public-chain parameter compatibility', () => {
46
+ it('keeps the historical EVM contract-deployment representation', () => {
47
+ const transaction = {
48
+ to: '',
49
+ value: '0x0',
50
+ gasPrice: '0x1',
51
+ gasLimit: '0x5208',
52
+ nonce: '0x0',
53
+ chainId: 1,
54
+ data: '0x6000',
55
+ };
56
+
57
+ const method = new EVMSignTransaction({
58
+ id: 1,
59
+ payload: {
60
+ method: 'evmSignTransaction',
61
+ path: "m/44'/60'/0'/0/0",
62
+ transaction,
63
+ },
64
+ });
65
+
66
+ expect(() => method.init()).not.toThrow();
67
+
68
+ const { to: _to, ...transactionWithoutTo } = transaction;
69
+ const missingTo = new EVMSignTransaction({
70
+ id: 2,
71
+ payload: {
72
+ method: 'evmSignTransaction',
73
+ path: "m/44'/60'/0'/0/0",
74
+ transaction: transactionWithoutTo,
75
+ },
76
+ });
77
+
78
+ expect(() => missingTo.init()).toThrow('Missing required parameter: to');
79
+ });
80
+
81
+ it('keeps Conflux to validation aligned with onekey', () => {
82
+ const method = new ConfluxSignTransaction({
83
+ id: 1,
84
+ payload: {
85
+ method: 'confluxSignTransaction',
86
+ path: "m/44'/503'/0'/0/0",
87
+ transaction: {
88
+ to: 'cfx:aak2rra2njvd77ezwjvx04kkds9fzagfe6d5r8e957',
89
+ value: '0x0',
90
+ gasLimit: '0x5208',
91
+ gasPrice: '0x1',
92
+ nonce: '0x0',
93
+ epochHeight: '0x1',
94
+ storageLimit: '0x0',
95
+ chainId: 1029,
96
+ },
97
+ },
98
+ });
99
+
100
+ expect(() => method.init()).toThrow('should be [hexString]');
101
+ });
102
+
103
+ it('keeps XRP payment amount as the historical number input', () => {
104
+ const createMethod = (amount: number | string) =>
105
+ new XrpSignTransaction({
106
+ id: 1,
107
+ payload: {
108
+ method: 'xrpSignTransaction',
109
+ path: "m/44'/144'/0'/0/0",
110
+ transaction: {
111
+ payment: {
112
+ amount,
113
+ destination: 'rG1QQv2nh2gr7RCZ1P8YYcBUKCCN633jCn',
114
+ },
115
+ },
116
+ },
117
+ });
118
+
119
+ expect(() => createMethod(1).init()).not.toThrow();
120
+ expect(() => createMethod('1').init()).toThrow('should be [number]');
121
+ });
122
+
123
+ it('keeps the Kaspa legacy schema while allowing the additive streaming shape', () => {
124
+ const legacyWithoutSigHash = new KaspaSignTransaction({
125
+ id: 1,
126
+ payload: buildKaspaPayload(),
127
+ });
128
+ expect(() => legacyWithoutSigHash.init()).toThrow('Missing required parameter: sigHashType');
129
+
130
+ const legacyWithoutScript = new KaspaSignTransaction({
131
+ id: 2,
132
+ payload: {
133
+ ...buildKaspaPayload(),
134
+ sigHashType: 0x41,
135
+ outputs: [{ satoshis: 100000, scriptVersion: 0 }],
136
+ },
137
+ });
138
+ expect(() => legacyWithoutScript.init()).toThrow('Missing required parameter: script');
139
+
140
+ const streaming = new KaspaSignTransaction({
141
+ id: 3,
142
+ payload: {
143
+ ...buildKaspaPayload(),
144
+ inputs: [
145
+ {
146
+ ...buildKaspaPayload().inputs[0],
147
+ output: { satoshis: 200000 },
148
+ },
149
+ ],
150
+ outputs: [{ satoshis: 100000, address: KASPA_ADDRESS }],
151
+ },
152
+ });
153
+ expect(() => streaming.init()).not.toThrow();
154
+ });
155
+
156
+ it('keeps validating the Kaspa legacy input amount', () => {
157
+ const payload = buildKaspaPayload();
158
+ const method = new KaspaSignTransaction({
159
+ id: 1,
160
+ payload: {
161
+ ...payload,
162
+ sigHashType: 0x41,
163
+ inputs: [
164
+ {
165
+ ...payload.inputs[0],
166
+ output: { script: KASPA_SCRIPT },
167
+ },
168
+ ],
169
+ },
170
+ });
171
+
172
+ expect(() => method.init()).toThrow('Missing required parameter: satoshis');
173
+ });
174
+
175
+ it('keeps the deprecated EIP-712 method callable on existing Protocol V1 devices', async () => {
176
+ const method = new EVMSignMessageEIP712({
177
+ id: 1,
178
+ payload: {
179
+ method: 'evmSignMessageEIP712',
180
+ path: "m/44'/60'/0'/0/0",
181
+ domainHash: `0x${'11'.repeat(32)}`,
182
+ messageHash: `0x${'22'.repeat(32)}`,
183
+ },
184
+ });
185
+ method.init();
186
+
187
+ const typedCall = jest.fn().mockResolvedValue({
188
+ message: {
189
+ address: '0x1234',
190
+ signature: 'abcd',
191
+ },
192
+ });
193
+ method.device = {
194
+ commands: { typedCall },
195
+ getCurrentFirmwareVersionString: jest.fn(() => '4.10.0'),
196
+ getCurrentMethodVersionRange: jest.fn(() => undefined),
197
+ getCurrentFirmwareType: jest.fn(() => EFirmwareType.Universal),
198
+ getProtocol: jest.fn(() => 'V1'),
199
+ } as unknown as Device;
200
+
201
+ await expect(method.run()).resolves.toEqual({
202
+ address: '0x1234',
203
+ signature: 'abcd',
204
+ });
205
+ expect(typedCall).toHaveBeenCalledTimes(1);
206
+ });
207
+
208
+ it('rejects a Benfen response that omits the address', async () => {
209
+ const method = new BenfenGetAddress({
210
+ id: 1,
211
+ payload: {
212
+ method: 'benfenGetAddress',
213
+ path: "m/44'/728'/0'/0'/0'",
214
+ showOnOneKey: false,
215
+ },
216
+ });
217
+ method.init();
218
+ method.device = {
219
+ commands: {
220
+ typedCall: jest.fn().mockResolvedValue({ message: {} }),
221
+ },
222
+ getCurrentFirmwareVersionString: jest.fn(() => '1.0.0'),
223
+ getCurrentDeviceType: jest.fn(() => EDeviceType.Classic),
224
+ isProtocolV2: jest.fn(() => false),
225
+ } as unknown as Device;
226
+
227
+ await expect(method.run()).rejects.toThrow(/address/i);
228
+ });
229
+ });
@@ -1,19 +1,61 @@
1
+ import DataManager from '../src/data-manager/DataManager';
1
2
  import { parseConnectSettings } from '../src/data-manager/connectSettings';
2
3
 
4
+ import type { RemoteConfigResponse } from '../src/types';
5
+
6
+ jest.mock('axios', () => ({
7
+ get: jest.fn(),
8
+ }));
9
+
3
10
  jest.mock('../src/data/config', () => ({
4
11
  getSDKVersion: jest.fn(() => '1.0.0'),
5
12
  DEFAULT_DOMAIN: 'https://jssdk.onekey.so/1.0.0/',
6
13
  }));
7
14
 
15
+ const mockAxiosGet: jest.Mock = jest.requireMock('axios').get;
16
+
8
17
  describe('parseConnectSettings', () => {
9
- it('keeps custom configFetcher in parsed settings', () => {
10
- const configFetcher = jest.fn();
18
+ const preloadedConfig = {
19
+ bridge: {},
20
+ classic: { firmware: [], ble: [] },
21
+ classic1s: { firmware: [], ble: [] },
22
+ classicpure: { firmware: [], ble: [] },
23
+ mini: { firmware: [], ble: [] },
24
+ touch: { firmware: [], ble: [] },
25
+ pro: { firmware: [], ble: [] },
26
+ pro2: { firmware: [], ble: [] },
27
+ } as unknown as RemoteConfigResponse;
28
+
29
+ it('keeps a serializable preloaded config in parsed settings', () => {
30
+ const settings = parseConnectSettings({
31
+ firmwareManifestMode: 'sdk-managed',
32
+ preloadedConfig,
33
+ });
34
+
35
+ expect(settings.firmwareManifestMode).toBe('sdk-managed');
36
+ expect(settings.preloadedConfig).toBe(preloadedConfig);
37
+ });
38
+
39
+ it('uses the preloaded config before the SDK network client', async () => {
40
+ const settings = parseConnectSettings({
41
+ firmwareManifestMode: 'sdk-managed',
42
+ preloadedConfig,
43
+ });
44
+
45
+ await DataManager.load(settings);
46
+
47
+ expect(mockAxiosGet).not.toHaveBeenCalled();
48
+ expect(DataManager.deviceMap.classic).toEqual({ firmware: [], ble: [] });
49
+ });
11
50
 
51
+ it('fails closed without a preloaded config in external-only mode', async () => {
12
52
  const settings = parseConnectSettings({
13
- fetchConfig: true,
14
- configFetcher,
53
+ firmwareManifestMode: 'external-only',
15
54
  });
16
55
 
17
- expect(settings.configFetcher).toBe(configFetcher);
56
+ await expect(DataManager.load(settings)).rejects.toThrow(
57
+ 'External firmware config snapshot is required'
58
+ );
59
+ expect(mockAxiosGet).not.toHaveBeenCalled();
18
60
  });
19
61
  });
@@ -1,3 +1,6 @@
1
+ import { EDeviceType, EFirmwareType } from '@onekeyfe/hd-shared';
2
+ import { Enum_SafetyCheckLevel } from '@onekeyfe/hd-transport';
3
+
1
4
  import { Device } from '../src/device/Device';
2
5
  import { DEVICE } from '../src/events';
3
6
  import { EOneKeyDeviceMode } from '../src/types';
@@ -8,6 +11,127 @@ jest.mock('../src/data/config', () => ({
8
11
  }));
9
12
 
10
13
  describe('Device state events', () => {
14
+ test.each([
15
+ ['V1', EFirmwareType.BitcoinOnly],
16
+ ['V2', EFirmwareType.Universal],
17
+ ] as const)(
18
+ 'reads the current %s firmware type from canonical state',
19
+ (protocol, firmwareType) => {
20
+ const device = Device.fromDescriptor({
21
+ id: `device-${protocol}`,
22
+ path: `device-${protocol}`,
23
+ protocolType: protocol,
24
+ } as never);
25
+ device.updateState({ protocol, identity: { firmwareType } }, 'initialize');
26
+ const featuresGetter = jest.spyOn(device, 'features', 'get').mockImplementation(() => {
27
+ throw new Error('Legacy Features projection should not be read');
28
+ });
29
+
30
+ expect(device.getCurrentFirmwareType()).toBe(firmwareType);
31
+ featuresGetter.mockRestore();
32
+ }
33
+ );
34
+
35
+ test('keeps the universal firmware fallback before device state is initialized', () => {
36
+ const device = Device.fromDescriptor({ id: 'pending', path: 'pending' } as never);
37
+
38
+ expect(device.getCurrentFirmwareType()).toBe(EFirmwareType.Universal);
39
+ expect(device.getCurrentDeviceType()).toBe(EDeviceType.Unknown);
40
+ expect(device.getCurrentDeviceId()).toBeUndefined();
41
+ expect(device.getCurrentSerialNo()).toBe('');
42
+ expect(device.getCurrentBleName()).toBeNull();
43
+ expect(device.getCurrentLabel()).toBeNull();
44
+ expect(device.getCurrentFirmwareVersionString()).toBe('0.0.0');
45
+ expect(device.getCurrentBLEFirmwareVersionString()).toBeUndefined();
46
+ expect(device.getCurrentBootloaderVersionString()).toBeUndefined();
47
+ expect(device.getFirmwareVersion()).toBeNull();
48
+ expect(device.getBLEFirmwareVersion()).toBeNull();
49
+ expect(device.isUnacquired()).toBe(true);
50
+ });
51
+
52
+ test('reads current device data from canonical state without projecting Features', () => {
53
+ const device = Device.fromDescriptor({
54
+ id: 'pro2-state',
55
+ path: 'pro2-state',
56
+ protocolType: 'V2',
57
+ } as never);
58
+ device.updateState(
59
+ {
60
+ protocol: 'V2',
61
+ identity: {
62
+ deviceType: EDeviceType.Pro2,
63
+ deviceId: 'wallet-id',
64
+ serialNo: 'SERIAL-PRO2',
65
+ label: null,
66
+ bleName: 'Pro2 1234',
67
+ },
68
+ status: {
69
+ mode: 'normal',
70
+ initialized: true,
71
+ unlocked: false,
72
+ noBackup: false,
73
+ passphraseProtection: false,
74
+ },
75
+ settings: { safetyChecks: Enum_SafetyCheckLevel.Strict },
76
+ versions: {
77
+ firmware: '5.1.2',
78
+ bootloader: '2.0.0',
79
+ ble: null,
80
+ },
81
+ },
82
+ 'initialize'
83
+ );
84
+ const featuresGetter = jest.spyOn(device, 'features', 'get').mockImplementation(() => {
85
+ throw new Error('Legacy Features projection should not be read');
86
+ });
87
+
88
+ expect(device.getCurrentDeviceType()).toBe(EDeviceType.Pro2);
89
+ expect(device.getCurrentDeviceId()).toBe('wallet-id');
90
+ expect(device.getCurrentSerialNo()).toBe('SERIAL-PRO2');
91
+ expect(device.getCurrentBleName()).toBe('Pro2 1234');
92
+ expect(device.getCurrentLabel()).toBeNull();
93
+ expect((device as any).getCurrentDisplayName()).toBe('Pro2 1234');
94
+ expect(device.getCurrentPassphraseProtection()).toBe(false);
95
+ expect(device.getCurrentFirmwareVersionString()).toBe('5.1.2');
96
+ expect(device.getCurrentBLEFirmwareVersionString()).toBe('0.0.0');
97
+ expect(device.getCurrentBootloaderVersionString()).toBe('2.0.0');
98
+ expect(device.getCurrentSafetyChecks()).toBe(Enum_SafetyCheckLevel.Strict);
99
+ expect(device.getFirmwareVersion()).toEqual([5, 1, 2]);
100
+ expect(device.getBLEFirmwareVersion()).toEqual([0, 0, 0]);
101
+ expect(device.isBootloader()).toBe(false);
102
+ expect(device.isInitialized()).toBe(true);
103
+ expect(device.isSeedless()).toBe(false);
104
+ expect(device.isUnacquired()).toBe(false);
105
+ expect(device.hasUsePassphrase()).toBe(true);
106
+ expect(device.supportInputPinOnSoftware()).toEqual({ support: false });
107
+ expect(device.supportModifyHomescreen()).toEqual({ support: true });
108
+ featuresGetter.mockRestore();
109
+ });
110
+
111
+ test('keeps legacy display-name fallbacks separate from the canonical label', () => {
112
+ const device = Device.fromDescriptor({ id: 'pure', path: 'pure' } as never);
113
+ device.updateState(
114
+ {
115
+ protocol: 'V1',
116
+ identity: {
117
+ deviceType: EDeviceType.ClassicPure,
118
+ label: null,
119
+ bleName: null,
120
+ },
121
+ status: { mode: 'normal', initialized: true },
122
+ },
123
+ 'initialize'
124
+ );
125
+
126
+ expect(device.getCurrentLabel()).toBeNull();
127
+ expect(device.getCurrentDisplayName()).toBe('OneKey Classic 1S');
128
+ expect(device.toMessageObject()).toMatchObject({
129
+ name: 'OneKey Classic 1S',
130
+ label: 'OneKey Classic 1S',
131
+ state: { identity: { label: null } },
132
+ });
133
+ });
134
+
11
135
  test('emits only the canonical state event for Protocol V2', () => {
12
136
  const device = Device.fromDescriptor({
13
137
  id: 'pro2',
@@ -1,10 +1,11 @@
1
+ import { Enum_SafetyCheckLevel } from '@onekeyfe/hd-transport';
2
+
1
3
  import AllNetworkGetAddressBase from '../src/api/allnetwork/AllNetworkGetAddressBase';
2
4
  import EvmGetAddress from '../src/api/evm/EVMGetAddress';
3
5
  import EVMGetPublicKey from '../src/api/evm/EVMGetPublicKey';
4
6
  import { findMethod } from '../src/api/utils';
5
7
  import { getDeviceType, getFirmwareType, getMethodVersionRange } from '../src/utils';
6
8
  import { getDeviceFirmwareVersion } from '../src/utils/deviceVersionUtils';
7
- import { Enum_SafetyCheckLevel } from '@onekeyfe/hd-transport';
8
9
 
9
10
  import type { EDeviceType } from '@onekeyfe/hd-shared';
10
11
 
@@ -33,6 +34,7 @@ const createDevice = (onekeyDeviceType: string) => {
33
34
  },
34
35
  // BaseMethod reads state through Device accessors; reuse production mappers in the stub.
35
36
  isProtocolV2: () => false,
37
+ getProtocol: () => 'V1' as const,
36
38
  getCurrentDeviceType: () => getDeviceType(features as any),
37
39
  getCurrentSafetyChecks: () => features.safety_checks,
38
40
  getCurrentFirmwareType: () => getFirmwareType(features as any),
@@ -0,0 +1,127 @@
1
+ import { ERRORS, EDeviceType, EFirmwareType, HardwareErrorCode } from '@onekeyfe/hd-shared';
2
+
3
+ import CheckAllFirmwareRelease from '../../src/api/CheckAllFirmwareRelease';
4
+ import { buildFirmwareUpdatePlan } from '../../src/api/firmware/FirmwareUpdatePlan';
5
+ import {
6
+ getBleFirmwareReleaseInfo,
7
+ getBootloaderReleaseInfo,
8
+ getFirmwareReleaseInfo,
9
+ } from '../../src/api/firmware/releaseHelper';
10
+
11
+ jest.mock('../../src/data/config', () => ({
12
+ getSDKVersion: jest.fn(() => '1.0.0'),
13
+ DEFAULT_DOMAIN: 'https://jssdk.onekey.so/1.0.0/',
14
+ }));
15
+
16
+ jest.mock('../../src/api/firmware/FirmwareUpdatePlan', () => ({
17
+ buildFirmwareUpdatePlan: jest.fn(),
18
+ }));
19
+
20
+ jest.mock('../../src/api/firmware/releaseHelper', () => ({
21
+ getBleFirmwareReleaseInfo: jest.fn(),
22
+ getBootloaderReleaseInfo: jest.fn(),
23
+ getFirmwareReleaseInfo: jest.fn(),
24
+ }));
25
+
26
+ const mockBuildFirmwareUpdatePlan = buildFirmwareUpdatePlan as jest.MockedFunction<
27
+ typeof buildFirmwareUpdatePlan
28
+ >;
29
+ const mockGetBleFirmwareReleaseInfo = getBleFirmwareReleaseInfo as jest.MockedFunction<
30
+ typeof getBleFirmwareReleaseInfo
31
+ >;
32
+ const mockGetBootloaderReleaseInfo = getBootloaderReleaseInfo as jest.MockedFunction<
33
+ typeof getBootloaderReleaseInfo
34
+ >;
35
+ const mockGetFirmwareReleaseInfo = getFirmwareReleaseInfo as jest.MockedFunction<
36
+ typeof getFirmwareReleaseInfo
37
+ >;
38
+
39
+ const noUpdate = {
40
+ status: 'valid' as const,
41
+ release: undefined,
42
+ };
43
+
44
+ const createMethod = (serialNo = 'device-id') => {
45
+ const method = new CheckAllFirmwareRelease({
46
+ id: 1,
47
+ payload: {
48
+ method: 'checkAllFirmwareRelease',
49
+ platform: 'native',
50
+ },
51
+ });
52
+ method.init();
53
+ method.device = {
54
+ features: {
55
+ deviceType: EDeviceType.Classic1s,
56
+ serialNo,
57
+ firmwareType: EFirmwareType.Universal,
58
+ firmwareVersion: '1.0.0',
59
+ bootloaderVersion: '1.0.0',
60
+ },
61
+ } as typeof method.device;
62
+ return method;
63
+ };
64
+
65
+ describe('CheckAllFirmwareRelease', () => {
66
+ beforeEach(() => {
67
+ jest.clearAllMocks();
68
+ mockGetFirmwareReleaseInfo.mockReturnValue(noUpdate);
69
+ mockGetBootloaderReleaseInfo.mockReturnValue(noUpdate);
70
+ mockGetBleFirmwareReleaseInfo.mockReturnValue(noUpdate);
71
+ });
72
+
73
+ test('keeps release information available when an optional Plan cannot be built', async () => {
74
+ const firmware = {
75
+ status: 'outdated' as const,
76
+ release: {
77
+ url: 'https://firmware.onekey.so/classic/firmware.bin',
78
+ version: [3, 0, 0],
79
+ },
80
+ };
81
+ mockGetFirmwareReleaseInfo.mockReturnValue(firmware);
82
+ mockBuildFirmwareUpdatePlan.mockImplementation(() => {
83
+ throw ERRORS.TypedError(HardwareErrorCode.RuntimeError, 'Plan cannot be built', {
84
+ firmwareUpdateCode: 'FirmwarePlanInvalid',
85
+ });
86
+ });
87
+
88
+ await expect(createMethod('').run()).resolves.toEqual(
89
+ expect.objectContaining({
90
+ firmware,
91
+ bootloader: noUpdate,
92
+ ble: noUpdate,
93
+ firmwareUpdatePlan: undefined,
94
+ })
95
+ );
96
+ });
97
+
98
+ test('returns an optional Plan when the builder succeeds', async () => {
99
+ const plan = {
100
+ schemaVersion: 2 as const,
101
+ planDigest: 'a'.repeat(64),
102
+ executor: 'v3' as const,
103
+ deviceIdentity: 'device-id',
104
+ deviceModel: EDeviceType.Classic1s,
105
+ firmwareType: EFirmwareType.Universal,
106
+ platform: 'native' as const,
107
+ artifacts: [],
108
+ targetsToUpdate: [],
109
+ };
110
+ mockBuildFirmwareUpdatePlan.mockReturnValue(plan);
111
+
112
+ await expect(createMethod().run()).resolves.toEqual(
113
+ expect.objectContaining({
114
+ firmwareUpdatePlan: plan,
115
+ })
116
+ );
117
+ });
118
+
119
+ test('does not hide unexpected Plan builder failures', async () => {
120
+ const unexpectedError = new Error('unexpected builder failure');
121
+ mockBuildFirmwareUpdatePlan.mockImplementation(() => {
122
+ throw unexpectedError;
123
+ });
124
+
125
+ await expect(createMethod().run()).rejects.toBe(unexpectedError);
126
+ });
127
+ });