@onekeyfe/hd-core 1.2.0-alpha.7 → 1.2.0-alpha.71

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 (785) hide show
  1. package/__tests__/AllNetworkGetAddressBase.tracing.test.ts +390 -0
  2. package/__tests__/DeviceCommands.test.ts +563 -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 +505 -0
  6. package/__tests__/connectSettings.test.ts +45 -5
  7. package/__tests__/core-dispose.test.ts +34 -0
  8. package/__tests__/core-error-output.test.ts +39 -0
  9. package/__tests__/core-initialization.test.ts +23 -0
  10. package/__tests__/device-connector-protocol.test.ts +81 -0
  11. package/__tests__/device-features-state.test.ts +78 -0
  12. package/__tests__/device-identity.test.ts +52 -0
  13. package/__tests__/device-initialize-timeout.test.ts +56 -0
  14. package/__tests__/device-lifecycle-events.test.ts +351 -0
  15. package/__tests__/device-pool-state.test.ts +166 -0
  16. package/__tests__/device-settings.test.ts +437 -0
  17. package/__tests__/device-state-contract.test.ts +28 -0
  18. package/__tests__/device-state-events.test.ts +286 -0
  19. package/__tests__/device-state-mapper.test.ts +273 -0
  20. package/__tests__/device-state-projector.test.ts +94 -0
  21. package/__tests__/device-state-store.test.ts +82 -0
  22. package/__tests__/device-utils.test.ts +154 -0
  23. package/__tests__/device-wallet-session-store.test.ts +478 -0
  24. package/__tests__/deviceFeaturesUtils.test.ts +39 -0
  25. package/__tests__/deviceSettings.test.ts +113 -0
  26. package/__tests__/deviceUploadNft.test.ts +316 -0
  27. package/__tests__/evmLedgerLegacySafety.test.ts +12 -6
  28. package/__tests__/evmSignTransaction.test.ts +69 -0
  29. package/__tests__/evmSignTypedData.test.ts +80 -0
  30. package/__tests__/filesystemValidation.test.ts +53 -0
  31. package/__tests__/firmware-update/check-all-firmware-release.test.ts +175 -0
  32. package/__tests__/firmware-update/device-update-bootloader.test.ts +87 -0
  33. package/__tests__/firmware-update/firmware-artifact-source.test.ts +119 -0
  34. package/__tests__/firmware-update/firmware-host-binding.test.ts +70 -0
  35. package/__tests__/firmware-update/firmware-preparation-error.test.ts +27 -0
  36. package/__tests__/firmware-update/firmware-update-bootloader-poll.test.ts +200 -0
  37. package/__tests__/firmware-update/firmware-update-capabilities.test.ts +13 -0
  38. package/__tests__/firmware-update/firmware-update-plan-bootloader-identity.test.ts +394 -0
  39. package/__tests__/firmware-update/firmware-update-plan.test.ts +593 -0
  40. package/__tests__/firmware-update/firmware-update-prepared-plan.test.ts +231 -0
  41. package/__tests__/firmware-update/firmware-update-v2-download-before-boot.test.ts +430 -0
  42. package/__tests__/firmware-update/firmware-update-v3-reconnect.test.ts +63 -0
  43. package/__tests__/firmware-update/firmware-upload-source.test.ts +70 -0
  44. package/__tests__/get-device-state.test.ts +578 -0
  45. package/__tests__/homescreen.test.ts +64 -0
  46. package/__tests__/kaspa-public-types.type-test.ts +16 -0
  47. package/__tests__/kaspa-use-tweak-pro2.test.ts +20 -0
  48. package/__tests__/kaspaSignTransaction.test.ts +578 -0
  49. package/__tests__/known-device-public-types.type-test.ts +3 -0
  50. package/__tests__/logBlockEvent.test.ts +128 -1
  51. package/__tests__/method-protocol-support.test.ts +132 -0
  52. package/__tests__/networkUtils.test.ts +406 -0
  53. package/__tests__/open-wallet-session-error-response.test.ts +43 -0
  54. package/__tests__/open-wallet-session.test.ts +1899 -0
  55. package/__tests__/pro2Nft.test.ts +108 -0
  56. package/__tests__/pro2Wallpaper.test.ts +39 -0
  57. package/__tests__/protocol-binding.test.ts +89 -0
  58. package/__tests__/protocol-v2-bootloader-mode.test.ts +37 -0
  59. package/__tests__/protocol-v2-firmware-targets.test.ts +69 -0
  60. package/__tests__/protocol-v2-ping.test.ts +28 -0
  61. package/__tests__/protocol-v2-resources.test.ts +343 -0
  62. package/__tests__/protocol-v2-ui-lifecycle.test.ts +91 -0
  63. package/__tests__/protocol-v2-unlock-policy.test.ts +308 -0
  64. package/__tests__/protocol-v2.test.ts +6845 -2558
  65. package/__tests__/protocolV2FileWrite.test.ts +285 -0
  66. package/__tests__/protocolV2UiInteraction.test.ts +329 -0
  67. package/__tests__/public-device-state-api.test.ts +275 -0
  68. package/__tests__/public-pro2-api-boundary.test.ts +107 -0
  69. package/__tests__/refresh-device-state.test.ts +101 -0
  70. package/__tests__/request-context-logging.test.ts +16 -0
  71. package/__tests__/search-devices.test.ts +145 -0
  72. package/__tests__/tron-sign-message-init.test.ts +74 -0
  73. package/__tests__/uiProgressThrottle.test.ts +74 -0
  74. package/__tests__/uiPromiseRegistry.test.ts +115 -0
  75. package/dist/api/BaseMethod.d.ts +16 -1
  76. package/dist/api/BaseMethod.d.ts.map +1 -1
  77. package/dist/api/CheckAllFirmwareRelease.d.ts +26 -1
  78. package/dist/api/CheckAllFirmwareRelease.d.ts.map +1 -1
  79. package/dist/api/CheckBootloaderRelease.d.ts.map +1 -1
  80. package/dist/api/CheckFirmwareRelease.d.ts.map +1 -1
  81. package/dist/api/CipherKeyValue.d.ts +1 -0
  82. package/dist/api/CipherKeyValue.d.ts.map +1 -1
  83. package/dist/api/ClearSessionCache.d.ts +9 -0
  84. package/dist/api/ClearSessionCache.d.ts.map +1 -0
  85. package/dist/api/DetectDeviceConnectProtocol.d.ts +7 -0
  86. package/dist/api/DetectDeviceConnectProtocol.d.ts.map +1 -0
  87. package/dist/api/DirList.d.ts +1 -0
  88. package/dist/api/DirList.d.ts.map +1 -1
  89. package/dist/api/DirMake.d.ts +1 -0
  90. package/dist/api/DirMake.d.ts.map +1 -1
  91. package/dist/api/DirRemove.d.ts +1 -0
  92. package/dist/api/DirRemove.d.ts.map +1 -1
  93. package/dist/api/FileDelete.d.ts +1 -0
  94. package/dist/api/FileDelete.d.ts.map +1 -1
  95. package/dist/api/FileRead.d.ts +1 -0
  96. package/dist/api/FileRead.d.ts.map +1 -1
  97. package/dist/api/FileWrite.d.ts +2 -0
  98. package/dist/api/FileWrite.d.ts.map +1 -1
  99. package/dist/api/FirmwareUpdate.d.ts.map +1 -1
  100. package/dist/api/FirmwareUpdateV2.d.ts +12 -2
  101. package/dist/api/FirmwareUpdateV2.d.ts.map +1 -1
  102. package/dist/api/FirmwareUpdateV3.d.ts +7 -3
  103. package/dist/api/FirmwareUpdateV3.d.ts.map +1 -1
  104. package/dist/api/FirmwareUpdateV4.d.ts +51 -18
  105. package/dist/api/FirmwareUpdateV4.d.ts.map +1 -1
  106. package/dist/api/GetDeviceState.d.ts +8 -0
  107. package/dist/api/GetDeviceState.d.ts.map +1 -0
  108. package/dist/api/GetFeatures.d.ts +1 -1
  109. package/dist/api/GetFeatures.d.ts.map +1 -1
  110. package/dist/api/GetOnekeyFeatures.d.ts.map +1 -1
  111. package/dist/api/GetPassphraseState.d.ts +2 -6
  112. package/dist/api/GetPassphraseState.d.ts.map +1 -1
  113. package/dist/api/OpenWalletSession.d.ts +8 -0
  114. package/dist/api/OpenWalletSession.d.ts.map +1 -0
  115. package/dist/api/PathInfo.d.ts +1 -0
  116. package/dist/api/PathInfo.d.ts.map +1 -1
  117. package/dist/api/PromptWebDeviceAccess.d.ts.map +1 -1
  118. package/dist/api/SearchDevices.d.ts +3 -0
  119. package/dist/api/SearchDevices.d.ts.map +1 -1
  120. package/dist/api/UploadPortfolio.d.ts +17 -0
  121. package/dist/api/UploadPortfolio.d.ts.map +1 -0
  122. package/dist/api/alephium/AlephiumGetAddress.d.ts.map +1 -1
  123. package/dist/api/alephium/AlephiumSignMessage.d.ts.map +1 -1
  124. package/dist/api/alephium/AlephiumSignTransaction.d.ts.map +1 -1
  125. package/dist/api/algo/AlgoGetAddress.d.ts +1 -0
  126. package/dist/api/algo/AlgoGetAddress.d.ts.map +1 -1
  127. package/dist/api/algo/AlgoSignTransaction.d.ts +1 -0
  128. package/dist/api/algo/AlgoSignTransaction.d.ts.map +1 -1
  129. package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts +1 -0
  130. package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts.map +1 -1
  131. package/dist/api/aptos/AptosGetAddress.d.ts +1 -0
  132. package/dist/api/aptos/AptosGetAddress.d.ts.map +1 -1
  133. package/dist/api/aptos/AptosGetPublicKey.d.ts +1 -0
  134. package/dist/api/aptos/AptosGetPublicKey.d.ts.map +1 -1
  135. package/dist/api/aptos/AptosSignInMessage.d.ts +1 -0
  136. package/dist/api/aptos/AptosSignInMessage.d.ts.map +1 -1
  137. package/dist/api/aptos/AptosSignMessage.d.ts +1 -0
  138. package/dist/api/aptos/AptosSignMessage.d.ts.map +1 -1
  139. package/dist/api/aptos/AptosSignTransaction.d.ts +1 -0
  140. package/dist/api/aptos/AptosSignTransaction.d.ts.map +1 -1
  141. package/dist/api/benfen/BenfenGetAddress.d.ts.map +1 -1
  142. package/dist/api/benfen/BenfenGetPublicKey.d.ts.map +1 -1
  143. package/dist/api/benfen/BenfenSignMessage.d.ts.map +1 -1
  144. package/dist/api/benfen/BenfenSignTransaction.d.ts.map +1 -1
  145. package/dist/api/btc/BTCGetAddress.d.ts +1 -0
  146. package/dist/api/btc/BTCGetAddress.d.ts.map +1 -1
  147. package/dist/api/btc/BTCGetPublicKey.d.ts +1 -0
  148. package/dist/api/btc/BTCGetPublicKey.d.ts.map +1 -1
  149. package/dist/api/btc/BTCSignMessage.d.ts +1 -0
  150. package/dist/api/btc/BTCSignMessage.d.ts.map +1 -1
  151. package/dist/api/btc/BTCSignPsbt.d.ts +1 -0
  152. package/dist/api/btc/BTCSignPsbt.d.ts.map +1 -1
  153. package/dist/api/btc/BTCSignTransaction.d.ts +1 -0
  154. package/dist/api/btc/BTCSignTransaction.d.ts.map +1 -1
  155. package/dist/api/btc/BTCVerifyMessage.d.ts +1 -0
  156. package/dist/api/btc/BTCVerifyMessage.d.ts.map +1 -1
  157. package/dist/api/btc/helpers/versionLimit.d.ts +2 -0
  158. package/dist/api/btc/helpers/versionLimit.d.ts.map +1 -1
  159. package/dist/api/cardano/CardanoGetAddress.d.ts +1 -0
  160. package/dist/api/cardano/CardanoGetAddress.d.ts.map +1 -1
  161. package/dist/api/cardano/CardanoGetPublicKey.d.ts +1 -0
  162. package/dist/api/cardano/CardanoGetPublicKey.d.ts.map +1 -1
  163. package/dist/api/cardano/CardanoSignMessage.d.ts +1 -0
  164. package/dist/api/cardano/CardanoSignMessage.d.ts.map +1 -1
  165. package/dist/api/cardano/CardanoSignTransaction.d.ts +1 -0
  166. package/dist/api/cardano/CardanoSignTransaction.d.ts.map +1 -1
  167. package/dist/api/conflux/ConfluxGetAddress.d.ts +2 -0
  168. package/dist/api/conflux/ConfluxGetAddress.d.ts.map +1 -1
  169. package/dist/api/conflux/ConfluxSignMessage.d.ts +2 -0
  170. package/dist/api/conflux/ConfluxSignMessage.d.ts.map +1 -1
  171. package/dist/api/conflux/ConfluxSignMessageCIP23.d.ts +2 -0
  172. package/dist/api/conflux/ConfluxSignMessageCIP23.d.ts.map +1 -1
  173. package/dist/api/conflux/ConfluxSignTransaction.d.ts +2 -0
  174. package/dist/api/conflux/ConfluxSignTransaction.d.ts.map +1 -1
  175. package/dist/api/cosmos/CosmosGetAddress.d.ts +1 -0
  176. package/dist/api/cosmos/CosmosGetAddress.d.ts.map +1 -1
  177. package/dist/api/cosmos/CosmosGetPublicKey.d.ts +1 -0
  178. package/dist/api/cosmos/CosmosGetPublicKey.d.ts.map +1 -1
  179. package/dist/api/cosmos/CosmosSignTransaction.d.ts +1 -0
  180. package/dist/api/cosmos/CosmosSignTransaction.d.ts.map +1 -1
  181. package/dist/api/device/DeviceCancel.d.ts +1 -0
  182. package/dist/api/device/DeviceCancel.d.ts.map +1 -1
  183. package/dist/api/device/DeviceChangePin.d.ts +1 -0
  184. package/dist/api/device/DeviceChangePin.d.ts.map +1 -1
  185. package/dist/api/device/DeviceFullyUploadResource.d.ts +1 -2
  186. package/dist/api/device/DeviceFullyUploadResource.d.ts.map +1 -1
  187. package/dist/api/device/DeviceLock.d.ts +1 -0
  188. package/dist/api/device/DeviceLock.d.ts.map +1 -1
  189. package/dist/api/device/DeviceRebootToBoardloader.d.ts +1 -0
  190. package/dist/api/device/DeviceRebootToBoardloader.d.ts.map +1 -1
  191. package/dist/api/device/DeviceRebootToBootloader.d.ts +1 -0
  192. package/dist/api/device/DeviceRebootToBootloader.d.ts.map +1 -1
  193. package/dist/api/device/DeviceSettings.d.ts +1 -0
  194. package/dist/api/device/DeviceSettings.d.ts.map +1 -1
  195. package/dist/api/device/DeviceSupportFeatures.d.ts +1 -0
  196. package/dist/api/device/DeviceSupportFeatures.d.ts.map +1 -1
  197. package/dist/api/device/DeviceUnlock.d.ts +3 -2
  198. package/dist/api/device/DeviceUnlock.d.ts.map +1 -1
  199. package/dist/api/device/DeviceUpdateBootloader.d.ts +5 -1
  200. package/dist/api/device/DeviceUpdateBootloader.d.ts.map +1 -1
  201. package/dist/api/device/DeviceWipe.d.ts +1 -0
  202. package/dist/api/device/DeviceWipe.d.ts.map +1 -1
  203. package/dist/api/device/PreInitialize.d.ts +1 -0
  204. package/dist/api/device/PreInitialize.d.ts.map +1 -1
  205. package/dist/api/dynex/DnxGetAddress.d.ts.map +1 -1
  206. package/dist/api/dynex/DnxSignTransaction.d.ts.map +1 -1
  207. package/dist/api/evm/EVMGetAddress.d.ts +1 -0
  208. package/dist/api/evm/EVMGetAddress.d.ts.map +1 -1
  209. package/dist/api/evm/EVMGetPublicKey.d.ts +1 -0
  210. package/dist/api/evm/EVMGetPublicKey.d.ts.map +1 -1
  211. package/dist/api/evm/EVMSignMessage.d.ts +1 -0
  212. package/dist/api/evm/EVMSignMessage.d.ts.map +1 -1
  213. package/dist/api/evm/EVMSignMessageEIP712.d.ts.map +1 -1
  214. package/dist/api/evm/EVMSignTransaction.d.ts +1 -0
  215. package/dist/api/evm/EVMSignTransaction.d.ts.map +1 -1
  216. package/dist/api/evm/EVMSignTypedData.d.ts +1 -0
  217. package/dist/api/evm/EVMSignTypedData.d.ts.map +1 -1
  218. package/dist/api/evm/EVMVerifyMessage.d.ts +1 -0
  219. package/dist/api/evm/EVMVerifyMessage.d.ts.map +1 -1
  220. package/dist/api/evm/protocol.d.ts +3 -0
  221. package/dist/api/evm/protocol.d.ts.map +1 -0
  222. package/dist/api/filecoin/FilecoinGetAddress.d.ts +1 -0
  223. package/dist/api/filecoin/FilecoinGetAddress.d.ts.map +1 -1
  224. package/dist/api/filecoin/FilecoinSignTransaction.d.ts +1 -0
  225. package/dist/api/filecoin/FilecoinSignTransaction.d.ts.map +1 -1
  226. package/dist/api/firmware/FirmwareArtifactSource.d.ts +25 -0
  227. package/dist/api/firmware/FirmwareArtifactSource.d.ts.map +1 -0
  228. package/dist/api/firmware/FirmwareHostBinding.d.ts +6 -0
  229. package/dist/api/firmware/FirmwareHostBinding.d.ts.map +1 -0
  230. package/dist/api/firmware/FirmwarePreparationError.d.ts +3 -0
  231. package/dist/api/firmware/FirmwarePreparationError.d.ts.map +1 -0
  232. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts +12 -3
  233. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts.map +1 -1
  234. package/dist/api/firmware/FirmwareUpdateCapabilities.d.ts +3 -0
  235. package/dist/api/firmware/FirmwareUpdateCapabilities.d.ts.map +1 -0
  236. package/dist/api/firmware/FirmwareUpdatePlan.d.ts +25 -0
  237. package/dist/api/firmware/FirmwareUpdatePlan.d.ts.map +1 -0
  238. package/dist/api/firmware/FirmwareUpdatePreparedPlan.d.ts +32 -0
  239. package/dist/api/firmware/FirmwareUpdatePreparedPlan.d.ts.map +1 -0
  240. package/dist/api/firmware/getBinary.d.ts +15 -4
  241. package/dist/api/firmware/getBinary.d.ts.map +1 -1
  242. package/dist/api/firmware/updateBootloader.d.ts +2 -0
  243. package/dist/api/firmware/updateBootloader.d.ts.map +1 -1
  244. package/dist/api/firmware/uploadFirmware.d.ts +9 -1
  245. package/dist/api/firmware/uploadFirmware.d.ts.map +1 -1
  246. package/dist/api/helpers/filesystemValidation.d.ts +3 -0
  247. package/dist/api/helpers/filesystemValidation.d.ts.map +1 -1
  248. package/dist/api/helpers/paramsValidator.d.ts +1 -0
  249. package/dist/api/helpers/paramsValidator.d.ts.map +1 -1
  250. package/dist/api/helpers/protocolV2FileWrite.d.ts +42 -0
  251. package/dist/api/helpers/protocolV2FileWrite.d.ts.map +1 -0
  252. package/dist/api/index.d.ts +9 -25
  253. package/dist/api/index.d.ts.map +1 -1
  254. package/dist/api/kaspa/KaspaGetAddress.d.ts +4 -0
  255. package/dist/api/kaspa/KaspaGetAddress.d.ts.map +1 -1
  256. package/dist/api/kaspa/KaspaSignTransaction.d.ts +9 -1
  257. package/dist/api/kaspa/KaspaSignTransaction.d.ts.map +1 -1
  258. package/dist/api/kaspa/helpers/TransferSerialize.d.ts.map +1 -1
  259. package/dist/api/lightning/LnurlAuth.d.ts +0 -4
  260. package/dist/api/lightning/LnurlAuth.d.ts.map +1 -1
  261. package/dist/api/near/NearGetAddress.d.ts +1 -0
  262. package/dist/api/near/NearGetAddress.d.ts.map +1 -1
  263. package/dist/api/near/NearSignTransaction.d.ts +1 -0
  264. package/dist/api/near/NearSignTransaction.d.ts.map +1 -1
  265. package/dist/api/nem/NEMGetAddress.d.ts +1 -0
  266. package/dist/api/nem/NEMGetAddress.d.ts.map +1 -1
  267. package/dist/api/nem/NEMSignTransaction.d.ts +1 -0
  268. package/dist/api/nem/NEMSignTransaction.d.ts.map +1 -1
  269. package/dist/api/neo/NeoGetAddress.d.ts.map +1 -1
  270. package/dist/api/neo/NeoSignTransaction.d.ts.map +1 -1
  271. package/dist/api/nervos/NervosGetAddress.d.ts.map +1 -1
  272. package/dist/api/nervos/NervosSignTransaction.d.ts.map +1 -1
  273. package/dist/api/nexa/NexaGetAddress.d.ts.map +1 -1
  274. package/dist/api/nexa/NexaSignTransaction.d.ts +1 -0
  275. package/dist/api/nexa/NexaSignTransaction.d.ts.map +1 -1
  276. package/dist/api/nostr/NostrDecryptMessage.d.ts +1 -0
  277. package/dist/api/nostr/NostrDecryptMessage.d.ts.map +1 -1
  278. package/dist/api/nostr/NostrEncryptMessage.d.ts +1 -0
  279. package/dist/api/nostr/NostrEncryptMessage.d.ts.map +1 -1
  280. package/dist/api/nostr/NostrGetPublicKey.d.ts +1 -0
  281. package/dist/api/nostr/NostrGetPublicKey.d.ts.map +1 -1
  282. package/dist/api/nostr/NostrSignEvent.d.ts +1 -0
  283. package/dist/api/nostr/NostrSignEvent.d.ts.map +1 -1
  284. package/dist/api/nostr/NostrSignSchnorr.d.ts +1 -0
  285. package/dist/api/nostr/NostrSignSchnorr.d.ts.map +1 -1
  286. package/dist/api/polkadot/PolkadotGetAddress.d.ts +2 -1
  287. package/dist/api/polkadot/PolkadotGetAddress.d.ts.map +1 -1
  288. package/dist/api/polkadot/PolkadotSignTransaction.d.ts +1 -0
  289. package/dist/api/polkadot/PolkadotSignTransaction.d.ts.map +1 -1
  290. package/dist/api/polkadot/networks.d.ts +1 -1
  291. package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts +1 -0
  292. package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts.map +1 -1
  293. package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts +1 -0
  294. package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts.map +1 -1
  295. package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts +1 -0
  296. package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts.map +1 -1
  297. package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts +1 -0
  298. package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts.map +1 -1
  299. package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts +7 -0
  300. package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts.map +1 -0
  301. package/dist/api/protocol-v2/DeviceInfoGet.d.ts +1 -1
  302. package/dist/api/protocol-v2/DeviceInfoGet.d.ts.map +1 -1
  303. package/dist/api/protocol-v2/DeviceReboot.d.ts +1 -0
  304. package/dist/api/protocol-v2/DeviceReboot.d.ts.map +1 -1
  305. package/dist/api/protocol-v2/DeviceStatusGet.d.ts +7 -0
  306. package/dist/api/protocol-v2/DeviceStatusGet.d.ts.map +1 -0
  307. package/dist/api/protocol-v2/DeviceUploadNft.d.ts +31 -0
  308. package/dist/api/protocol-v2/DeviceUploadNft.d.ts.map +1 -0
  309. package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts +27 -0
  310. package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts.map +1 -0
  311. package/dist/api/protocol-v2/FilesystemFormat.d.ts +1 -0
  312. package/dist/api/protocol-v2/FilesystemFormat.d.ts.map +1 -1
  313. package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts +1 -0
  314. package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts.map +1 -1
  315. package/dist/api/protocol-v2/Ping.d.ts +3 -0
  316. package/dist/api/protocol-v2/Ping.d.ts.map +1 -1
  317. package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts +1 -0
  318. package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts.map +1 -1
  319. package/dist/api/protocol-v2/helpers.d.ts +1 -1
  320. package/dist/api/protocol-v2/helpers.d.ts.map +1 -1
  321. package/dist/api/scdo/ScdoGetAddress.d.ts.map +1 -1
  322. package/dist/api/scdo/ScdoSignMessage.d.ts.map +1 -1
  323. package/dist/api/scdo/ScdoSignTransaction.d.ts.map +1 -1
  324. package/dist/api/solana/SolGetAddress.d.ts +1 -0
  325. package/dist/api/solana/SolGetAddress.d.ts.map +1 -1
  326. package/dist/api/solana/SolSignMessage.d.ts +2 -1
  327. package/dist/api/solana/SolSignMessage.d.ts.map +1 -1
  328. package/dist/api/solana/SolSignOffchainMessage.d.ts +2 -1
  329. package/dist/api/solana/SolSignOffchainMessage.d.ts.map +1 -1
  330. package/dist/api/solana/SolSignTransaction.d.ts +3 -2
  331. package/dist/api/solana/SolSignTransaction.d.ts.map +1 -1
  332. package/dist/api/starcoin/StarcoinGetAddress.d.ts +1 -0
  333. package/dist/api/starcoin/StarcoinGetAddress.d.ts.map +1 -1
  334. package/dist/api/starcoin/StarcoinGetPublicKey.d.ts +1 -0
  335. package/dist/api/starcoin/StarcoinGetPublicKey.d.ts.map +1 -1
  336. package/dist/api/starcoin/StarcoinSignMessage.d.ts +1 -0
  337. package/dist/api/starcoin/StarcoinSignMessage.d.ts.map +1 -1
  338. package/dist/api/starcoin/StarcoinSignTransaction.d.ts +1 -0
  339. package/dist/api/starcoin/StarcoinSignTransaction.d.ts.map +1 -1
  340. package/dist/api/starcoin/StarcoinVerifyMessage.d.ts +1 -0
  341. package/dist/api/starcoin/StarcoinVerifyMessage.d.ts.map +1 -1
  342. package/dist/api/stellar/StellarGetAddress.d.ts +1 -2
  343. package/dist/api/stellar/StellarGetAddress.d.ts.map +1 -1
  344. package/dist/api/stellar/StellarSignTransaction.d.ts +2 -3
  345. package/dist/api/stellar/StellarSignTransaction.d.ts.map +1 -1
  346. package/dist/api/sui/SuiGetAddress.d.ts +2 -1
  347. package/dist/api/sui/SuiGetAddress.d.ts.map +1 -1
  348. package/dist/api/sui/SuiGetPublicKey.d.ts +2 -1
  349. package/dist/api/sui/SuiGetPublicKey.d.ts.map +1 -1
  350. package/dist/api/sui/SuiSignMessage.d.ts +2 -1
  351. package/dist/api/sui/SuiSignMessage.d.ts.map +1 -1
  352. package/dist/api/sui/SuiSignTransaction.d.ts +2 -1
  353. package/dist/api/sui/SuiSignTransaction.d.ts.map +1 -1
  354. package/dist/api/ton/TonGetAddress.d.ts +2 -1
  355. package/dist/api/ton/TonGetAddress.d.ts.map +1 -1
  356. package/dist/api/ton/TonSignData.d.ts +1 -0
  357. package/dist/api/ton/TonSignData.d.ts.map +1 -1
  358. package/dist/api/ton/TonSignMessage.d.ts +2 -1
  359. package/dist/api/ton/TonSignMessage.d.ts.map +1 -1
  360. package/dist/api/ton/TonSignProof.d.ts +2 -1
  361. package/dist/api/ton/TonSignProof.d.ts.map +1 -1
  362. package/dist/api/tron/TronGetAddress.d.ts +1 -0
  363. package/dist/api/tron/TronGetAddress.d.ts.map +1 -1
  364. package/dist/api/tron/TronSignMessage.d.ts +6 -1
  365. package/dist/api/tron/TronSignMessage.d.ts.map +1 -1
  366. package/dist/api/tron/TronSignTransaction.d.ts +2 -1
  367. package/dist/api/tron/TronSignTransaction.d.ts.map +1 -1
  368. package/dist/api/utils.d.ts +2 -1
  369. package/dist/api/utils.d.ts.map +1 -1
  370. package/dist/api/xrp/XrpGetAddress.d.ts +1 -0
  371. package/dist/api/xrp/XrpGetAddress.d.ts.map +1 -1
  372. package/dist/api/xrp/XrpSignTransaction.d.ts +1 -0
  373. package/dist/api/xrp/XrpSignTransaction.d.ts.map +1 -1
  374. package/dist/constants/index.d.ts +1 -1
  375. package/dist/constants/index.d.ts.map +1 -1
  376. package/dist/core/RequestQueue.d.ts.map +1 -1
  377. package/dist/core/deviceEventRegistration.d.ts +13 -0
  378. package/dist/core/deviceEventRegistration.d.ts.map +1 -0
  379. package/dist/core/index.d.ts +3 -1
  380. package/dist/core/index.d.ts.map +1 -1
  381. package/dist/core/uiPromiseRegistry.d.ts +6 -0
  382. package/dist/core/uiPromiseRegistry.d.ts.map +1 -0
  383. package/dist/data-manager/DataManager.d.ts +10 -3
  384. package/dist/data-manager/DataManager.d.ts.map +1 -1
  385. package/dist/data-manager/TransportManager.d.ts.map +1 -1
  386. package/dist/data-manager/connectSettings.d.ts.map +1 -1
  387. package/dist/device/Device.d.ts +72 -17
  388. package/dist/device/Device.d.ts.map +1 -1
  389. package/dist/device/DeviceCommands.d.ts +8 -6
  390. package/dist/device/DeviceCommands.d.ts.map +1 -1
  391. package/dist/device/DeviceConnector.d.ts +3 -2
  392. package/dist/device/DeviceConnector.d.ts.map +1 -1
  393. package/dist/device/DeviceFeaturesState.d.ts +3 -0
  394. package/dist/device/DeviceFeaturesState.d.ts.map +1 -0
  395. package/dist/device/DevicePool.d.ts +5 -2
  396. package/dist/device/DevicePool.d.ts.map +1 -1
  397. package/dist/device/DeviceStateMapper.d.ts +13 -0
  398. package/dist/device/DeviceStateMapper.d.ts.map +1 -0
  399. package/dist/device/DeviceStateProjector.d.ts +7 -0
  400. package/dist/device/DeviceStateProjector.d.ts.map +1 -0
  401. package/dist/device/DeviceStateStore.d.ts +21 -0
  402. package/dist/device/DeviceStateStore.d.ts.map +1 -0
  403. package/dist/device/DeviceWalletSessionStore.d.ts +27 -0
  404. package/dist/device/DeviceWalletSessionStore.d.ts.map +1 -0
  405. package/dist/device/cloneDeviceState.d.ts +2 -0
  406. package/dist/device/cloneDeviceState.d.ts.map +1 -0
  407. package/dist/device/deviceIdentity.d.ts +5 -0
  408. package/dist/device/deviceIdentity.d.ts.map +1 -0
  409. package/dist/deviceProfile/buildDeviceFeatures.d.ts +9 -3
  410. package/dist/deviceProfile/buildDeviceFeatures.d.ts.map +1 -1
  411. package/dist/deviceProfile/index.d.ts +0 -1
  412. package/dist/deviceProfile/index.d.ts.map +1 -1
  413. package/dist/deviceProfile/protocolV2DeviceIdentity.d.ts +7 -0
  414. package/dist/deviceProfile/protocolV2DeviceIdentity.d.ts.map +1 -0
  415. package/dist/events/device.d.ts +16 -2
  416. package/dist/events/device.d.ts.map +1 -1
  417. package/dist/events/logBlockEvent.d.ts +2 -0
  418. package/dist/events/logBlockEvent.d.ts.map +1 -1
  419. package/dist/events/ui-promise.d.ts +4 -2
  420. package/dist/events/ui-promise.d.ts.map +1 -1
  421. package/dist/events/ui-request.d.ts +50 -4
  422. package/dist/events/ui-request.d.ts.map +1 -1
  423. package/dist/events/ui-response.d.ts +10 -2
  424. package/dist/events/ui-response.d.ts.map +1 -1
  425. package/dist/index.d.ts +1770 -772
  426. package/dist/index.d.ts.map +1 -1
  427. package/dist/index.js +10876 -4120
  428. package/dist/inject.d.ts +6 -1
  429. package/dist/inject.d.ts.map +1 -1
  430. package/dist/lowLevelInject.d.ts.map +1 -1
  431. package/dist/protocols/protocol-v2/deviceSession.d.ts +7 -0
  432. package/dist/protocols/protocol-v2/deviceSession.d.ts.map +1 -0
  433. package/dist/protocols/protocol-v2/features.d.ts +21 -17
  434. package/dist/protocols/protocol-v2/features.d.ts.map +1 -1
  435. package/dist/protocols/protocol-v2/firmware.d.ts.map +1 -1
  436. package/dist/protocols/protocol-v2/index.d.ts +3 -2
  437. package/dist/protocols/protocol-v2/index.d.ts.map +1 -1
  438. package/dist/protocols/protocol-v2/resources.d.ts +30 -0
  439. package/dist/protocols/protocol-v2/resources.d.ts.map +1 -0
  440. package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts +17 -0
  441. package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts.map +1 -0
  442. package/dist/protocols/protocol-v2/uiInteraction.d.ts +42 -0
  443. package/dist/protocols/protocol-v2/uiInteraction.d.ts.map +1 -0
  444. package/dist/protocols/protocol-v2/unlockPolicy.d.ts +2 -0
  445. package/dist/protocols/protocol-v2/unlockPolicy.d.ts.map +1 -0
  446. package/dist/protocols/protocol-v2/unlockPolicyRunner.d.ts +22 -0
  447. package/dist/protocols/protocol-v2/unlockPolicyRunner.d.ts.map +1 -0
  448. package/dist/protocols/protocol-v2/walletSession.d.ts +27 -0
  449. package/dist/protocols/protocol-v2/walletSession.d.ts.map +1 -0
  450. package/dist/topLevelInject.d.ts.map +1 -1
  451. package/dist/types/api/checkAllFirmwareRelease.d.ts +31 -4
  452. package/dist/types/api/checkAllFirmwareRelease.d.ts.map +1 -1
  453. package/dist/types/api/detectDeviceConnectProtocol.d.ts +4 -0
  454. package/dist/types/api/detectDeviceConnectProtocol.d.ts.map +1 -0
  455. package/dist/types/api/deviceSettings.d.ts +11 -2
  456. package/dist/types/api/deviceSettings.d.ts.map +1 -1
  457. package/dist/types/api/deviceUnlock.d.ts +6 -2
  458. package/dist/types/api/deviceUnlock.d.ts.map +1 -1
  459. package/dist/types/api/deviceUpdateBootloader.d.ts +6 -0
  460. package/dist/types/api/deviceUpdateBootloader.d.ts.map +1 -1
  461. package/dist/types/api/export.d.ts +7 -2
  462. package/dist/types/api/export.d.ts.map +1 -1
  463. package/dist/types/api/firmwareUpdate.d.ts +76 -1
  464. package/dist/types/api/firmwareUpdate.d.ts.map +1 -1
  465. package/dist/types/api/firmwareUpdateCapabilities.d.ts +9 -0
  466. package/dist/types/api/firmwareUpdateCapabilities.d.ts.map +1 -0
  467. package/dist/types/api/firmwareUpdatePlan.d.ts +28 -0
  468. package/dist/types/api/firmwareUpdatePlan.d.ts.map +1 -0
  469. package/dist/types/api/firmwareUpdatePreparedPlan.d.ts +42 -0
  470. package/dist/types/api/firmwareUpdatePreparedPlan.d.ts.map +1 -0
  471. package/dist/types/api/getDeviceState.d.ts +12 -0
  472. package/dist/types/api/getDeviceState.d.ts.map +1 -0
  473. package/dist/types/api/getFeatures.d.ts.map +1 -1
  474. package/dist/types/api/getOnekeyFeatures.d.ts.map +1 -1
  475. package/dist/types/api/getPassphraseState.d.ts +2 -10
  476. package/dist/types/api/getPassphraseState.d.ts.map +1 -1
  477. package/dist/types/api/index.d.ts +32 -31
  478. package/dist/types/api/index.d.ts.map +1 -1
  479. package/dist/types/api/kaspaSignTransaction.d.ts +42 -4
  480. package/dist/types/api/kaspaSignTransaction.d.ts.map +1 -1
  481. package/dist/types/api/openWalletSession.d.ts +35 -0
  482. package/dist/types/api/openWalletSession.d.ts.map +1 -0
  483. package/dist/types/api/protocolV2.d.ts +18 -84
  484. package/dist/types/api/protocolV2.d.ts.map +1 -1
  485. package/dist/types/api/sessionCache.d.ts +13 -0
  486. package/dist/types/api/sessionCache.d.ts.map +1 -0
  487. package/dist/types/device.d.ts +134 -10
  488. package/dist/types/device.d.ts.map +1 -1
  489. package/dist/types/params.d.ts +1 -0
  490. package/dist/types/params.d.ts.map +1 -1
  491. package/dist/types/settings.d.ts +57 -21
  492. package/dist/types/settings.d.ts.map +1 -1
  493. package/dist/utils/assets.d.ts +2 -1
  494. package/dist/utils/assets.d.ts.map +1 -1
  495. package/dist/utils/deviceFeaturesCompat.d.ts +14 -0
  496. package/dist/utils/deviceFeaturesCompat.d.ts.map +1 -0
  497. package/dist/utils/deviceFeaturesUtils.d.ts +10 -3
  498. package/dist/utils/deviceFeaturesUtils.d.ts.map +1 -1
  499. package/dist/utils/deviceInfoUtils.d.ts +9 -9
  500. package/dist/utils/deviceInfoUtils.d.ts.map +1 -1
  501. package/dist/utils/deviceSettings.d.ts +38 -7
  502. package/dist/utils/deviceSettings.d.ts.map +1 -1
  503. package/dist/utils/deviceVersionUtils.d.ts +7 -5
  504. package/dist/utils/deviceVersionUtils.d.ts.map +1 -1
  505. package/dist/utils/homescreen.d.ts +4 -0
  506. package/dist/utils/homescreen.d.ts.map +1 -1
  507. package/dist/utils/index.d.ts +6 -3
  508. package/dist/utils/index.d.ts.map +1 -1
  509. package/dist/utils/networkUtils.d.ts +10 -1
  510. package/dist/utils/networkUtils.d.ts.map +1 -1
  511. package/dist/utils/patch.d.ts +1 -1
  512. package/dist/utils/patch.d.ts.map +1 -1
  513. package/dist/utils/pro2Nft.d.ts +31 -0
  514. package/dist/utils/pro2Nft.d.ts.map +1 -0
  515. package/dist/utils/pro2Wallpaper.d.ts +22 -0
  516. package/dist/utils/pro2Wallpaper.d.ts.map +1 -0
  517. package/dist/utils/tracing.d.ts.map +1 -1
  518. package/dist/utils/uiProgressThrottle.d.ts +3 -0
  519. package/dist/utils/uiProgressThrottle.d.ts.map +1 -0
  520. package/package.json +4 -4
  521. package/src/api/BaseMethod.ts +53 -20
  522. package/src/api/CheckAllFirmwareRelease.ts +409 -4
  523. package/src/api/CheckBootloaderRelease.ts +1 -2
  524. package/src/api/CheckFirmwareRelease.ts +1 -2
  525. package/src/api/CipherKeyValue.ts +4 -0
  526. package/src/api/ClearSessionCache.ts +32 -0
  527. package/src/api/DetectDeviceConnectProtocol.ts +18 -0
  528. package/src/api/DirList.ts +9 -4
  529. package/src/api/DirMake.ts +7 -4
  530. package/src/api/DirRemove.ts +7 -4
  531. package/src/api/FileDelete.ts +7 -4
  532. package/src/api/FileRead.ts +15 -9
  533. package/src/api/FileWrite.ts +26 -181
  534. package/src/api/FirmwareUpdate.ts +30 -15
  535. package/src/api/FirmwareUpdateV2.ts +373 -115
  536. package/src/api/FirmwareUpdateV3.ts +272 -70
  537. package/src/api/FirmwareUpdateV4.ts +1525 -681
  538. package/src/api/GetDeviceState.ts +59 -0
  539. package/src/api/GetFeatures.ts +6 -4
  540. package/src/api/GetOnekeyFeatures.ts +1 -75
  541. package/src/api/GetPassphraseState.ts +36 -21
  542. package/src/api/OpenWalletSession.ts +268 -0
  543. package/src/api/PathInfo.ts +9 -4
  544. package/src/api/PromptWebDeviceAccess.ts +2 -7
  545. package/src/api/SearchDevices.ts +31 -4
  546. package/src/api/UploadPortfolio.ts +40 -0
  547. package/src/api/alephium/AlephiumGetAddress.ts +0 -4
  548. package/src/api/alephium/AlephiumSignMessage.ts +0 -4
  549. package/src/api/alephium/AlephiumSignTransaction.ts +2 -6
  550. package/src/api/algo/AlgoGetAddress.ts +4 -0
  551. package/src/api/algo/AlgoSignTransaction.ts +4 -0
  552. package/src/api/allnetwork/AllNetworkGetAddress.ts +21 -21
  553. package/src/api/allnetwork/AllNetworkGetAddressBase.ts +45 -32
  554. package/src/api/aptos/AptosGetAddress.ts +4 -0
  555. package/src/api/aptos/AptosGetPublicKey.ts +4 -0
  556. package/src/api/aptos/AptosSignInMessage.ts +4 -0
  557. package/src/api/aptos/AptosSignMessage.ts +4 -0
  558. package/src/api/aptos/AptosSignTransaction.ts +4 -0
  559. package/src/api/benfen/BenfenGetAddress.ts +11 -7
  560. package/src/api/benfen/BenfenGetPublicKey.ts +0 -4
  561. package/src/api/benfen/BenfenSignMessage.ts +0 -4
  562. package/src/api/benfen/BenfenSignTransaction.ts +0 -4
  563. package/src/api/btc/BTCGetAddress.ts +8 -1
  564. package/src/api/btc/BTCGetPublicKey.ts +9 -2
  565. package/src/api/btc/BTCSignMessage.ts +8 -1
  566. package/src/api/btc/BTCSignPsbt.ts +4 -0
  567. package/src/api/btc/BTCSignTransaction.ts +8 -1
  568. package/src/api/btc/BTCVerifyMessage.ts +8 -1
  569. package/src/api/btc/helpers/versionLimit.ts +7 -4
  570. package/src/api/cardano/CardanoGetAddress.ts +4 -0
  571. package/src/api/cardano/CardanoGetPublicKey.ts +4 -0
  572. package/src/api/cardano/CardanoSignMessage.ts +5 -1
  573. package/src/api/cardano/CardanoSignTransaction.ts +5 -1
  574. package/src/api/conflux/ConfluxGetAddress.ts +6 -0
  575. package/src/api/conflux/ConfluxSignMessage.ts +6 -0
  576. package/src/api/conflux/ConfluxSignMessageCIP23.ts +6 -0
  577. package/src/api/conflux/ConfluxSignTransaction.ts +8 -5
  578. package/src/api/cosmos/CosmosGetAddress.ts +4 -0
  579. package/src/api/cosmos/CosmosGetPublicKey.ts +4 -0
  580. package/src/api/cosmos/CosmosSignTransaction.ts +4 -0
  581. package/src/api/device/DeviceCancel.ts +5 -0
  582. package/src/api/device/DeviceChangePin.ts +28 -0
  583. package/src/api/device/DeviceFullyUploadResource.ts +4 -5
  584. package/src/api/device/DeviceLock.ts +5 -0
  585. package/src/api/device/DeviceRebootToBoardloader.ts +5 -0
  586. package/src/api/device/DeviceRebootToBootloader.ts +5 -0
  587. package/src/api/device/DeviceSettings.ts +195 -1
  588. package/src/api/device/DeviceSupportFeatures.ts +4 -0
  589. package/src/api/device/DeviceUnlock.ts +21 -3
  590. package/src/api/device/DeviceUpdateBootloader.ts +126 -8
  591. package/src/api/device/DeviceWipe.ts +25 -0
  592. package/src/api/device/PreInitialize.ts +4 -0
  593. package/src/api/dynex/DnxGetAddress.ts +0 -6
  594. package/src/api/dynex/DnxSignTransaction.ts +0 -6
  595. package/src/api/evm/EVMGetAddress.ts +6 -2
  596. package/src/api/evm/EVMGetPublicKey.ts +6 -2
  597. package/src/api/evm/EVMSignMessage.ts +6 -2
  598. package/src/api/evm/EVMSignMessageEIP712.ts +1 -11
  599. package/src/api/evm/EVMSignTransaction.ts +6 -2
  600. package/src/api/evm/EVMSignTypedData.ts +42 -50
  601. package/src/api/evm/EVMVerifyMessage.ts +6 -2
  602. package/src/api/evm/legacyV1/getAddress.ts +2 -2
  603. package/src/api/evm/legacyV1/getPublicKey.ts +2 -2
  604. package/src/api/evm/legacyV1/signMessage.ts +2 -2
  605. package/src/api/evm/legacyV1/signTypedData.ts +2 -2
  606. package/src/api/evm/legacyV1/signTypedHash.ts +2 -2
  607. package/src/api/evm/legacyV1/verifyMessage.ts +2 -2
  608. package/src/api/evm/protocol.ts +6 -0
  609. package/src/api/filecoin/FilecoinGetAddress.ts +4 -0
  610. package/src/api/filecoin/FilecoinSignTransaction.ts +4 -0
  611. package/src/api/firmware/FirmwareArtifactSource.ts +278 -0
  612. package/src/api/firmware/FirmwareHostBinding.ts +100 -0
  613. package/src/api/firmware/FirmwarePreparationError.ts +12 -0
  614. package/src/api/firmware/FirmwareUpdateBaseMethod.ts +102 -16
  615. package/src/api/firmware/FirmwareUpdateCapabilities.ts +9 -0
  616. package/src/api/firmware/FirmwareUpdatePlan.ts +772 -0
  617. package/src/api/firmware/FirmwareUpdatePreparedPlan.ts +449 -0
  618. package/src/api/firmware/getBinary.ts +8 -3
  619. package/src/api/firmware/updateBootloader.ts +19 -4
  620. package/src/api/firmware/uploadFirmware.ts +157 -26
  621. package/src/api/helpers/batchGetPublickeys.ts +2 -2
  622. package/src/api/helpers/filesystemValidation.ts +61 -0
  623. package/src/api/helpers/paramsValidator.ts +1 -1
  624. package/src/api/helpers/protocolV2FileWrite.ts +388 -0
  625. package/src/api/index.ts +10 -26
  626. package/src/api/kaspa/KaspaGetAddress.ts +7 -0
  627. package/src/api/kaspa/KaspaSignTransaction.ts +369 -29
  628. package/src/api/kaspa/helpers/TransferSerialize.ts +17 -7
  629. package/src/api/lightning/LnurlAuth.ts +0 -4
  630. package/src/api/near/NearGetAddress.ts +4 -0
  631. package/src/api/near/NearSignTransaction.ts +4 -0
  632. package/src/api/nem/NEMGetAddress.ts +4 -0
  633. package/src/api/nem/NEMSignTransaction.ts +4 -0
  634. package/src/api/neo/NeoGetAddress.ts +0 -4
  635. package/src/api/neo/NeoSignTransaction.ts +0 -4
  636. package/src/api/nervos/NervosGetAddress.ts +0 -4
  637. package/src/api/nervos/NervosSignTransaction.ts +2 -6
  638. package/src/api/nexa/NexaGetAddress.ts +0 -4
  639. package/src/api/nexa/NexaSignTransaction.ts +3 -5
  640. package/src/api/nostr/NostrDecryptMessage.ts +4 -0
  641. package/src/api/nostr/NostrEncryptMessage.ts +4 -0
  642. package/src/api/nostr/NostrGetPublicKey.ts +4 -0
  643. package/src/api/nostr/NostrSignEvent.ts +4 -0
  644. package/src/api/nostr/NostrSignSchnorr.ts +4 -0
  645. package/src/api/polkadot/PolkadotGetAddress.ts +4 -0
  646. package/src/api/polkadot/PolkadotSignTransaction.ts +4 -0
  647. package/src/api/polkadot/networks.ts +3 -3
  648. package/src/api/protocol-v2/DeviceFactoryInfoGet.ts +5 -2
  649. package/src/api/protocol-v2/DeviceFactoryInfoSet.ts +5 -2
  650. package/src/api/protocol-v2/DeviceFirmwareUpdate.ts +8 -5
  651. package/src/api/protocol-v2/DeviceGetFirmwareUpdateStatus.ts +10 -6
  652. package/src/api/protocol-v2/DeviceGetOnboardingStatus.ts +21 -0
  653. package/src/api/protocol-v2/DeviceInfoGet.ts +8 -15
  654. package/src/api/protocol-v2/DeviceReboot.ts +7 -3
  655. package/src/api/protocol-v2/DeviceStatusGet.ts +19 -0
  656. package/src/api/protocol-v2/DeviceUploadNft.ts +197 -0
  657. package/src/api/protocol-v2/DeviceUploadWallpaper.ts +134 -0
  658. package/src/api/protocol-v2/FilesystemFormat.ts +9 -3
  659. package/src/api/protocol-v2/FilesystemPermissionFix.ts +5 -2
  660. package/src/api/protocol-v2/Ping.ts +37 -3
  661. package/src/api/protocol-v2/ProtocolInfoRequest.ts +8 -3
  662. package/src/api/protocol-v2/helpers.ts +17 -17
  663. package/src/api/scdo/ScdoGetAddress.ts +0 -4
  664. package/src/api/scdo/ScdoSignMessage.ts +0 -4
  665. package/src/api/scdo/ScdoSignTransaction.ts +0 -4
  666. package/src/api/solana/SolGetAddress.ts +4 -0
  667. package/src/api/solana/SolSignMessage.ts +5 -1
  668. package/src/api/solana/SolSignOffchainMessage.ts +5 -1
  669. package/src/api/solana/SolSignTransaction.ts +6 -2
  670. package/src/api/starcoin/StarcoinGetAddress.ts +4 -0
  671. package/src/api/starcoin/StarcoinGetPublicKey.ts +4 -0
  672. package/src/api/starcoin/StarcoinSignMessage.ts +4 -0
  673. package/src/api/starcoin/StarcoinSignTransaction.ts +4 -0
  674. package/src/api/starcoin/StarcoinVerifyMessage.ts +4 -0
  675. package/src/api/stellar/StellarGetAddress.ts +1 -10
  676. package/src/api/stellar/StellarSignTransaction.ts +1 -14
  677. package/src/api/sui/SuiGetAddress.ts +5 -1
  678. package/src/api/sui/SuiGetPublicKey.ts +5 -1
  679. package/src/api/sui/SuiSignMessage.ts +5 -1
  680. package/src/api/sui/SuiSignTransaction.ts +5 -1
  681. package/src/api/ton/TonGetAddress.ts +5 -1
  682. package/src/api/ton/TonSignData.ts +5 -1
  683. package/src/api/ton/TonSignMessage.ts +5 -1
  684. package/src/api/ton/TonSignProof.ts +5 -1
  685. package/src/api/tron/TronGetAddress.ts +4 -0
  686. package/src/api/tron/TronSignMessage.ts +19 -8
  687. package/src/api/tron/TronSignTransaction.ts +5 -1
  688. package/src/api/utils.ts +7 -3
  689. package/src/api/xrp/XrpGetAddress.ts +4 -0
  690. package/src/api/xrp/XrpSignTransaction.ts +5 -1
  691. package/src/constants/index.ts +1 -4
  692. package/src/core/RequestQueue.ts +1 -0
  693. package/src/core/deviceEventRegistration.ts +27 -0
  694. package/src/core/index.ts +365 -152
  695. package/src/core/uiPromiseRegistry.ts +63 -0
  696. package/src/data/messages/messages-protocol-v2.json +1138 -441
  697. package/src/data/messages/messages.json +286 -1
  698. package/src/data-manager/DataManager.ts +121 -41
  699. package/src/data-manager/TransportManager.ts +7 -1
  700. package/src/data-manager/connectSettings.ts +11 -0
  701. package/src/device/Device.ts +896 -295
  702. package/src/device/DeviceCommands.ts +193 -158
  703. package/src/device/DeviceConnector.ts +43 -20
  704. package/src/device/DeviceFeaturesState.ts +25 -0
  705. package/src/device/DevicePool.ts +86 -22
  706. package/src/device/DeviceStateMapper.ts +374 -0
  707. package/src/device/DeviceStateProjector.ts +94 -0
  708. package/src/device/DeviceStateStore.ts +201 -0
  709. package/src/device/DeviceWalletSessionStore.ts +144 -0
  710. package/src/device/cloneDeviceState.ts +39 -0
  711. package/src/device/deviceIdentity.ts +18 -0
  712. package/src/deviceProfile/buildDeviceFeatures.ts +223 -189
  713. package/src/deviceProfile/index.ts +0 -1
  714. package/src/deviceProfile/protocolV2DeviceIdentity.ts +35 -0
  715. package/src/events/device.ts +22 -1
  716. package/src/events/logBlockEvent.ts +80 -2
  717. package/src/events/ui-promise.ts +4 -2
  718. package/src/events/ui-request.ts +61 -4
  719. package/src/events/ui-response.ts +12 -2
  720. package/src/index.ts +5 -0
  721. package/src/inject.ts +95 -45
  722. package/src/lowLevelInject.ts +11 -4
  723. package/src/protocols/protocol-v2/deviceSession.ts +24 -0
  724. package/src/protocols/protocol-v2/features.ts +100 -33
  725. package/src/protocols/protocol-v2/firmware.ts +3 -1
  726. package/src/protocols/protocol-v2/index.ts +8 -1
  727. package/src/protocols/protocol-v2/resources.ts +394 -0
  728. package/src/protocols/protocol-v2/settingsUnlockPolicy.ts +65 -0
  729. package/src/protocols/protocol-v2/uiInteraction.ts +250 -0
  730. package/src/protocols/protocol-v2/unlockPolicy.ts +1 -0
  731. package/src/protocols/protocol-v2/unlockPolicyRunner.ts +131 -0
  732. package/src/protocols/protocol-v2/walletSession.ts +463 -0
  733. package/src/topLevelInject.ts +11 -4
  734. package/src/types/api/checkAllFirmwareRelease.ts +52 -4
  735. package/src/types/api/detectDeviceConnectProtocol.ts +6 -0
  736. package/src/types/api/deviceSettings.ts +26 -2
  737. package/src/types/api/deviceUnlock.ts +13 -2
  738. package/src/types/api/deviceUpdateBootloader.ts +6 -0
  739. package/src/types/api/export.ts +27 -0
  740. package/src/types/api/firmwareUpdate.ts +101 -5
  741. package/src/types/api/firmwareUpdateCapabilities.ts +9 -0
  742. package/src/types/api/firmwareUpdatePlan.ts +38 -0
  743. package/src/types/api/firmwareUpdatePreparedPlan.ts +53 -0
  744. package/src/types/api/getDeviceState.ts +19 -0
  745. package/src/types/api/getFeatures.ts +3 -0
  746. package/src/types/api/getOnekeyFeatures.ts +3 -0
  747. package/src/types/api/getPassphraseState.ts +9 -11
  748. package/src/types/api/index.ts +52 -64
  749. package/src/types/api/kaspaSignTransaction.ts +60 -4
  750. package/src/types/api/openWalletSession.ts +54 -0
  751. package/src/types/api/protocolV2.ts +33 -141
  752. package/src/types/api/sessionCache.ts +19 -0
  753. package/src/types/device.ts +200 -10
  754. package/src/types/params.ts +9 -2
  755. package/src/types/settings.ts +90 -24
  756. package/src/utils/assets.ts +4 -1
  757. package/src/utils/deviceFeaturesCompat.ts +191 -0
  758. package/src/utils/deviceFeaturesUtils.ts +65 -47
  759. package/src/utils/deviceInfoUtils.ts +29 -69
  760. package/src/utils/deviceSettings.ts +174 -39
  761. package/src/utils/deviceVersionUtils.ts +25 -44
  762. package/src/utils/findDefectiveBatchDevice.ts +3 -3
  763. package/src/utils/homescreen.ts +36 -0
  764. package/src/utils/index.ts +27 -3
  765. package/src/utils/networkUtils.ts +274 -16
  766. package/src/utils/pro2Nft.ts +142 -0
  767. package/src/utils/pro2Wallpaper.ts +130 -0
  768. package/src/utils/tracing.ts +3 -1
  769. package/src/utils/uiProgressThrottle.ts +63 -0
  770. package/tsconfig.type-tests.json +12 -0
  771. package/dist/api/GetDeviceInfo.d.ts +0 -9
  772. package/dist/api/GetDeviceInfo.d.ts.map +0 -1
  773. package/dist/api/firmware/progressThrottle.d.ts +0 -3
  774. package/dist/api/firmware/progressThrottle.d.ts.map +0 -1
  775. package/dist/api/protocol-v2/FilesystemDiskControl.d.ts +0 -13
  776. package/dist/api/protocol-v2/FilesystemDiskControl.d.ts.map +0 -1
  777. package/dist/deviceProfile/buildDeviceProfile.d.ts +0 -21
  778. package/dist/deviceProfile/buildDeviceProfile.d.ts.map +0 -1
  779. package/dist/types/api/getDeviceInfo.d.ts +0 -87
  780. package/dist/types/api/getDeviceInfo.d.ts.map +0 -1
  781. package/src/api/GetDeviceInfo.ts +0 -145
  782. package/src/api/firmware/progressThrottle.ts +0 -44
  783. package/src/api/protocol-v2/FilesystemDiskControl.ts +0 -50
  784. package/src/deviceProfile/buildDeviceProfile.ts +0 -352
  785. package/src/types/api/getDeviceInfo.ts +0 -101
@@ -1,4 +1,5 @@
1
1
  import { bytesToHex } from '@noble/hashes/utils';
2
+ import { ERRORS, HardwareError, HardwareErrorCode } from '@onekeyfe/hd-shared';
2
3
 
3
4
  import { UI_REQUEST } from '../../constants/ui-request';
4
5
  import { validatePath } from '../helpers/pathUtils';
@@ -8,17 +9,40 @@ import { serialize, zeroSubnetworkID } from './helpers/TransferSerialize';
8
9
  import { SignatureType } from './helpers/SignatureType';
9
10
 
10
11
  import type { TypedResponseMessage } from '../../device/DeviceCommands';
12
+ import type { KaspaSignTransactionParams, KaspaSignature } from '../../types';
11
13
  import type {
12
- KaspaSignInputParams,
13
- KaspaSignOutputParams,
14
- KaspaSignTransactionParams,
15
- KaspaSignature,
16
- } from '../../types';
17
- import type { TypedCall } from '@onekeyfe/hd-transport';
14
+ KaspaInputScriptType,
15
+ KaspaTxRequest,
16
+ KaspaTxRequestSignature,
17
+ TypedCall,
18
+ } from '@onekeyfe/hd-transport';
19
+
20
+ // Streaming only handles plain P2PK scripts; anything else (e.g. KRC20 P2SH)
21
+ // must blind-sign. Absent script means a streaming-only caller.
22
+ const P2PK_SCRIPT = /^(20[0-9a-f]{64}ac|21[0-9a-f]{66}ab)$/i;
23
+
24
+ const isStreamableScript = (script?: string) => !script || P2PK_SCRIPT.test(script);
25
+
26
+ type KaspaOutputParam = KaspaSignTransactionParams['outputs'][number];
27
+
28
+ const getOutputAddress = (output: KaspaOutputParam) =>
29
+ 'address' in output ? output.address : undefined;
30
+
31
+ const getOutputAddressN = (output: KaspaOutputParam) =>
32
+ 'addressN' in output ? output.addressN : undefined;
18
33
 
19
34
  export default class KaspaSignTransaction extends BaseMethod<KaspaSignTransactionParams> {
35
+ getSupportedProtocols() {
36
+ return ['V1', 'V2'] as const;
37
+ }
38
+
20
39
  hasBundle = false;
21
40
 
41
+ // Protocols this tx can be signed with; the device picks via its first response.
42
+ supportsLegacy = false;
43
+
44
+ supportsStreaming = false;
45
+
22
46
  init() {
23
47
  this.checkDeviceId = true;
24
48
  this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.NOT_INITIALIZE];
@@ -26,27 +50,38 @@ export default class KaspaSignTransaction extends BaseMethod<KaspaSignTransactio
26
50
 
27
51
  const payload = this.payload as KaspaSignTransactionParams;
28
52
 
53
+ const payloadInputs = Array.isArray(payload.inputs) ? payload.inputs : [];
54
+ const payloadOutputs = Array.isArray(payload.outputs) ? payload.outputs : [];
55
+
56
+ const usesStreamingParams =
57
+ payload.refTxs !== undefined ||
58
+ payload.payload !== undefined ||
59
+ payload.gas !== undefined ||
60
+ payloadInputs.some(input => !input.output?.script) ||
61
+ payloadOutputs.some(output => !!getOutputAddress(output) || !!getOutputAddressN(output));
62
+
29
63
  // check payload
30
64
  validateParams(payload, [
31
65
  { name: 'version', type: 'number' },
32
- { name: 'sigHashType', type: 'number', required: true },
66
+ { name: 'sigHashType', type: 'number', required: !usesStreamingParams },
33
67
  { name: 'inputs', type: 'array', required: true },
34
68
  { name: 'outputs', type: 'array', required: true },
35
69
  { name: 'lockTime', required: true },
36
70
  { name: 'sigOpCount', type: 'number' },
37
71
  { name: 'subNetworkID', type: 'string' },
72
+ { name: 'payload', type: 'hexString' },
73
+ { name: 'refTxs', type: 'array', allowEmpty: true },
38
74
  { name: 'useTweak', type: 'boolean' },
39
75
  ]);
40
76
 
41
- // if(!payload.inputs.length) throw
42
-
43
- const inputs: KaspaSignInputParams[] = payload.inputs.map(input => {
77
+ const inputs: KaspaSignTransactionParams['inputs'] = payload.inputs.map(input => {
44
78
  validateParams(input, [
45
79
  { name: 'path', type: 'string', required: true },
46
80
  { name: 'prevTxId', type: 'string', required: true },
47
81
  { name: 'outputIndex', type: 'number', required: true },
48
82
  { name: 'sequenceNumber', required: true },
49
83
  ]);
84
+ validateParams(input.output, [{ name: 'satoshis', required: true }]);
50
85
 
51
86
  const addressN = validatePath(input.path, 3);
52
87
 
@@ -57,15 +92,36 @@ export default class KaspaSignTransaction extends BaseMethod<KaspaSignTransactio
57
92
  };
58
93
  });
59
94
 
60
- const outputs: KaspaSignOutputParams[] = payload.outputs.map(output => {
95
+ payload.refTxs?.forEach(refTx => {
96
+ validateParams(refTx, [
97
+ { name: 'txId', type: 'string', required: true },
98
+ { name: 'version', type: 'number', required: true },
99
+ // Coinbase transactions legitimately have zero inputs.
100
+ { name: 'inputs', type: 'array', required: true, allowEmpty: true },
101
+ { name: 'outputs', type: 'array', required: true, allowEmpty: true },
102
+ { name: 'payload', type: 'hexString' },
103
+ ]);
104
+ });
105
+
106
+ const outputs: KaspaSignTransactionParams['outputs'] = payload.outputs.map(output => {
107
+ const address = getOutputAddress(output);
108
+ const addressN = getOutputAddressN(output);
109
+ if (address !== undefined && addressN !== undefined) {
110
+ throw ERRORS.TypedError(
111
+ HardwareErrorCode.CallMethodInvalidParameter,
112
+ 'KaspaSignTransaction: outputs must not contain both address and addressN'
113
+ );
114
+ }
61
115
  validateParams(output, [
62
116
  { name: 'satoshis', required: true },
63
- { name: 'script', type: 'string', required: true },
117
+ { name: 'address', type: 'string' },
118
+ { name: 'script', type: 'string', required: !usesStreamingParams },
64
119
  { name: 'scriptVersion', type: 'number' },
65
120
  ]);
66
121
 
67
122
  return {
68
123
  ...output,
124
+ addressN: addressN ? validatePath(addressN, 3) : undefined,
69
125
  scriptVersion: output.scriptVersion ?? 0,
70
126
  };
71
127
  });
@@ -80,8 +136,39 @@ export default class KaspaSignTransaction extends BaseMethod<KaspaSignTransactio
80
136
  sigHashType: payload.sigHashType ?? SignatureType.SIGHASH_ALL | SignatureType.SIGHASH_FORKID,
81
137
  sigOpCount: payload.sigOpCount ?? 1,
82
138
  subNetworkID: payload.subNetworkID ?? bytesToHex(zeroSubnetworkID()),
139
+ gas: payload.gas ?? 0,
83
140
  useTweak: payload.useTweak,
84
141
  };
142
+
143
+ // Legacy prehashes on the host with payload/gas/subnetworkID hardcoded to
144
+ // zero (TransferSerialize), so those rule it out.
145
+ this.supportsLegacy =
146
+ this.params.outputs.every(output => !!output.script) &&
147
+ this.params.inputs.every(input => !!input.output.script) &&
148
+ !this.params.payload &&
149
+ Number(this.params.gas ?? 0) === 0 &&
150
+ /^0*$/.test(this.params.subNetworkID ?? '');
151
+
152
+ // The streaming protocol has no sighash-type field (device signs SIGHASH_ALL).
153
+ const isDefaultSigHashType =
154
+ this.params.sigHashType === SignatureType.SIGHASH_ALL ||
155
+ // eslint-disable-next-line no-bitwise
156
+ this.params.sigHashType === (SignatureType.SIGHASH_ALL | SignatureType.SIGHASH_FORKID);
157
+
158
+ this.supportsStreaming =
159
+ isDefaultSigHashType &&
160
+ this.params.outputs.every(
161
+ output => !!getOutputAddress(output) || !!getOutputAddressN(output)
162
+ ) &&
163
+ this.params.inputs.every(input => isStreamableScript(input.output.script)) &&
164
+ this.params.outputs.every(output => isStreamableScript(output.script));
165
+
166
+ if (!this.supportsLegacy && !this.supportsStreaming) {
167
+ throw ERRORS.TypedError(
168
+ HardwareErrorCode.CallMethodInvalidParameter,
169
+ 'KaspaSignTransaction: outputs require either address/addressN (streaming protocol) or script (legacy protocol)'
170
+ );
171
+ }
85
172
  }
86
173
 
87
174
  getVersionRange() {
@@ -103,9 +190,16 @@ export default class KaspaSignTransaction extends BaseMethod<KaspaSignTransactio
103
190
  model_classic1s: {
104
191
  min: '3.12.0',
105
192
  },
193
+ model_pro2: {
194
+ min: '0.0.0',
195
+ },
106
196
  };
107
197
  }
108
198
 
199
+ /**
200
+ * Legacy blind-sign flow: run() sent input 0's prehash in raw_message; feed
201
+ * each next prehash via KaspaTxInputAck until KaspaSignedTx.
202
+ */
109
203
  async processTxRequest(
110
204
  typedCall: TypedCall,
111
205
  res: TypedResponseMessage<'KaspaTxInputRequest'> | TypedResponseMessage<'KaspaSignedTx'>,
@@ -136,7 +230,6 @@ export default class KaspaSignTransaction extends BaseMethod<KaspaSignTransactio
136
230
  'KaspaTxInputAck',
137
231
  ['KaspaTxInputRequest', 'KaspaSignedTx'],
138
232
  {
139
- // params.inputs 的 path 可能是字符串或已解析数组,统一归一为 address_n 数组
140
233
  address_n: validatePath(input.path, 3),
141
234
  raw_message: bytesToHex(rawMessage),
142
235
  }
@@ -148,6 +241,192 @@ export default class KaspaSignTransaction extends BaseMethod<KaspaSignTransactio
148
241
  return signature;
149
242
  }
150
243
 
244
+ /**
245
+ * Answer a previous-transaction request (selected by prev_tx_id) from
246
+ * refTxs; the device uses them to verify input amounts.
247
+ */
248
+ async ackPrevRequest(typedCall: TypedCall, request: KaspaTxRequest, requestIndex: number) {
249
+ const prevTxId = (request.prev_tx_id ?? '').toLowerCase();
250
+ const refTx = (this.params.refTxs ?? []).find(tx => tx.txId.toLowerCase() === prevTxId);
251
+ if (!refTx) {
252
+ throw ERRORS.TypedError(
253
+ HardwareErrorCode.CallMethodInvalidParameter,
254
+ `KaspaSignTransaction: device requested previous transaction ${
255
+ prevTxId || '(unknown)'
256
+ }; provide it via refTxs`
257
+ );
258
+ }
259
+
260
+ const requestType = request.request_type;
261
+
262
+ if (requestType === 'KASPA_TX_PREV_META') {
263
+ return typedCall('KaspaTxAckPrevMeta', 'KaspaTxRequest', {
264
+ version: refTx.version,
265
+ input_count: refTx.inputs.length,
266
+ output_count: refTx.outputs.length,
267
+ lock_time: (refTx.lockTime ?? 0) as number,
268
+ subnetwork_id: refTx.subNetworkID ?? bytesToHex(zeroSubnetworkID()),
269
+ gas: (refTx.gas ?? 0) as number,
270
+ payload_length: (refTx.payload ?? '').length / 2,
271
+ });
272
+ }
273
+
274
+ if (requestType === 'KASPA_TX_INPUT') {
275
+ const input = refTx.inputs[requestIndex];
276
+ if (!input) {
277
+ throw ERRORS.TypedError(
278
+ HardwareErrorCode.RuntimeError,
279
+ `KaspaSignTransaction: device requested input ${requestIndex} of previous tx out of range`
280
+ );
281
+ }
282
+ return typedCall('KaspaTxAckPrevInput', 'KaspaTxRequest', {
283
+ previous_outpoint: {
284
+ tx_id: input.prevTxId,
285
+ index: input.outputIndex,
286
+ },
287
+ sequence: input.sequenceNumber as number,
288
+ });
289
+ }
290
+
291
+ if (requestType === 'KASPA_TX_OUTPUT') {
292
+ const output = refTx.outputs[requestIndex];
293
+ if (!output) {
294
+ throw ERRORS.TypedError(
295
+ HardwareErrorCode.RuntimeError,
296
+ `KaspaSignTransaction: device requested output ${requestIndex} of previous tx out of range`
297
+ );
298
+ }
299
+ return typedCall('KaspaTxAckPrevOutput', 'KaspaTxRequest', {
300
+ amount: output.satoshis,
301
+ script_version: output.scriptVersion ?? 0,
302
+ script_public_key: output.script,
303
+ });
304
+ }
305
+
306
+ if (requestType === 'KASPA_TX_PAYLOAD') {
307
+ const payloadHex = refTx.payload ?? '';
308
+ const payloadLength = payloadHex.length / 2;
309
+ const length = request.request_payload_length ?? payloadLength - requestIndex;
310
+ return typedCall('KaspaTxAckPayloadChunk', 'KaspaTxRequest', {
311
+ payload_chunk: payloadHex.substring(requestIndex * 2, (requestIndex + length) * 2),
312
+ });
313
+ }
314
+
315
+ throw ERRORS.TypedError(
316
+ HardwareErrorCode.RuntimeError,
317
+ `KaspaSignTransaction: unknown previous-tx request type ${requestType ?? 'undefined'}`
318
+ );
319
+ }
320
+
321
+ /**
322
+ * Streaming flow (device computes the sighash): the device drives via
323
+ * KaspaTxRequest, asking for inputs/outputs/payload chunks and carrying
324
+ * finished signatures back, until FINISHED. Mirrors BTC signtx.
325
+ */
326
+ async signTxStream(
327
+ typedCall: TypedCall,
328
+ firstResponse: TypedResponseMessage<'KaspaTxRequest'>
329
+ ): Promise<KaspaSignature[]> {
330
+ const { params } = this;
331
+ const signatures: KaspaSignature[] = [];
332
+
333
+ const inputScriptType: KaspaInputScriptType =
334
+ params.scheme === 'ecdsa' ? 'KASPA_SPEND_P2PK_ECDSA' : 'KASPA_SPEND_P2PK_SCHNORR';
335
+
336
+ const saveSignature = (signature?: KaspaTxRequestSignature) => {
337
+ if (signature && typeof signature.signature_index === 'number' && signature.signature) {
338
+ signatures[signature.signature_index] = {
339
+ index: signature.signature_index,
340
+ signature: signature.signature,
341
+ };
342
+ }
343
+ };
344
+
345
+ const payloadHex = params.payload ?? '';
346
+ const payloadLength = payloadHex.length / 2;
347
+
348
+ let response = firstResponse;
349
+
350
+ // eslint-disable-next-line no-constant-condition
351
+ while (true) {
352
+ const request = response.message;
353
+ // Save first so the last input's signature (carried on the FINISHED request) is captured.
354
+ saveSignature(request.signature);
355
+
356
+ const requestType = request.request_type;
357
+ if (requestType === 'KASPA_TX_FINISHED') {
358
+ break;
359
+ }
360
+
361
+ const requestIndex = request.request_index ?? 0;
362
+
363
+ // prev_tx_id selects a previous-transaction request; answer from refTxs.
364
+ if (request.prev_tx_id || requestType === 'KASPA_TX_PREV_META') {
365
+ response = await this.ackPrevRequest(typedCall, request, requestIndex);
366
+ } else if (requestType === 'KASPA_TX_INPUT') {
367
+ const input = params.inputs[requestIndex];
368
+ if (!input) {
369
+ throw ERRORS.TypedError(
370
+ HardwareErrorCode.RuntimeError,
371
+ `KaspaSignTransaction: device requested input ${requestIndex} out of range`
372
+ );
373
+ }
374
+ response = await typedCall('KaspaTxAckInput', 'KaspaTxRequest', {
375
+ address_n: input.path as number[],
376
+ previous_outpoint: {
377
+ tx_id: input.prevTxId,
378
+ index: input.outputIndex,
379
+ },
380
+ amount: input.output.satoshis,
381
+ sequence: input.sequenceNumber as number,
382
+ sig_op_count: input.sigOpCount ?? 1,
383
+ script_type: inputScriptType,
384
+ use_tweak: params.useTweak,
385
+ });
386
+ } else if (requestType === 'KASPA_TX_OUTPUT') {
387
+ const output = params.outputs[requestIndex];
388
+ if (!output) {
389
+ throw ERRORS.TypedError(
390
+ HardwareErrorCode.RuntimeError,
391
+ `KaspaSignTransaction: device requested output ${requestIndex} out of range`
392
+ );
393
+ }
394
+ const address = getOutputAddress(output);
395
+ const addressN = getOutputAddressN(output);
396
+ const isChange = !!addressN;
397
+ response = await typedCall('KaspaTxAckOutput', 'KaspaTxRequest', {
398
+ script_type: isChange ? 'KASPA_PAYTOCHANGE' : 'KASPA_PAYTOADDRESS',
399
+ amount: output.satoshis,
400
+ address_n: (addressN as number[]) ?? [],
401
+ address,
402
+ scheme: params.scheme,
403
+ use_tweak: params.useTweak,
404
+ });
405
+ } else if (requestType === 'KASPA_TX_PAYLOAD') {
406
+ const offset = requestIndex;
407
+ const length = request.request_payload_length ?? payloadLength - offset;
408
+ const chunk = payloadHex.substring(offset * 2, (offset + length) * 2);
409
+ response = await typedCall('KaspaTxAckPayloadChunk', 'KaspaTxRequest', {
410
+ payload_chunk: chunk,
411
+ });
412
+ } else {
413
+ throw ERRORS.TypedError(
414
+ HardwareErrorCode.RuntimeError,
415
+ `KaspaSignTransaction: unknown request type ${requestType ?? 'undefined'}`
416
+ );
417
+ }
418
+ }
419
+
420
+ const collected = signatures.filter(Boolean);
421
+ if (collected.length !== params.inputs.length) {
422
+ throw ERRORS.TypedError(
423
+ HardwareErrorCode.RuntimeError,
424
+ `KaspaSignTransaction: expected ${params.inputs.length} signatures, received ${collected.length}`
425
+ );
426
+ }
427
+ return collected;
428
+ }
429
+
151
430
  async run() {
152
431
  this.checkFeatureVersionLimit(
153
432
  // exists use_tweak is false check firmware version
@@ -158,25 +437,86 @@ export default class KaspaSignTransaction extends BaseMethod<KaspaSignTransactio
158
437
  }
159
438
  );
160
439
 
161
- const { raw: rawMessage } = serialize(this.params, 0);
162
- const input = this.params.inputs[0];
163
-
164
440
  const { device, params } = this;
441
+ const payloadHex = params.payload ?? '';
165
442
 
166
- const response = await device.commands.typedCall(
167
- 'KaspaSignTx',
168
- ['KaspaTxInputRequest', 'KaspaSignedTx'],
169
- {
170
- // init() 已把 path 归一为数组,这里再过一遍 validatePath 收窄类型
171
- address_n: validatePath(input.path, 3),
172
- raw_message: bytesToHex(rawMessage),
173
- scheme: params.scheme,
174
- prefix: params.prefix,
175
- input_count: params.inputs.length,
176
- use_tweak: params.useTweak,
443
+ // output_count is the protocol discriminator: attach streaming fields only
444
+ // when the tx can stream. Streaming verification needs refTxs, so without
445
+ // them prefer blind signing when available; a streaming-only tx still
446
+ // streams and fails clearly if the device requests previous txs.
447
+ const hasRefTxs = (params.refTxs?.length ?? 0) > 0;
448
+ const streamingReady = this.supportsStreaming && (hasRefTxs || !this.supportsLegacy);
449
+
450
+ const streamingFields = streamingReady
451
+ ? {
452
+ output_count: params.outputs.length,
453
+ version: params.version,
454
+ lock_time: params.lockTime as number,
455
+ subnetwork_id: params.subNetworkID,
456
+ gas: params.gas as number,
457
+ payload_length: payloadHex.length / 2,
458
+ }
459
+ : {};
460
+
461
+ // raw_message (input 0's prehash) is only computable/correct when legacy-signable.
462
+ const legacyFields = this.supportsLegacy
463
+ ? { raw_message: bytesToHex(serialize(params, 0).raw) }
464
+ : {};
465
+
466
+ // Legacy firmware reads raw_message and skips unknown streaming fields;
467
+ // new firmware streams iff output_count is present.
468
+ let response;
469
+ try {
470
+ response = await device.commands.typedCall(
471
+ 'KaspaSignTx',
472
+ ['KaspaTxRequest', 'KaspaTxInputRequest', 'KaspaSignedTx'],
473
+ {
474
+ address_n: params.inputs[0].path as number[],
475
+ scheme: params.scheme,
476
+ prefix: params.prefix,
477
+ input_count: params.inputs.length,
478
+ use_tweak: params.useTweak,
479
+ ...streamingFields,
480
+ ...legacyFields,
481
+ }
482
+ );
483
+ } catch (error) {
484
+ // Old firmware cannot decode a packet without raw_message
485
+ // (Failure_DataError); map it to an actionable upgrade error.
486
+ if (
487
+ !this.supportsLegacy &&
488
+ error instanceof HardwareError &&
489
+ error.errorCode === HardwareErrorCode.RuntimeError &&
490
+ String(error.message).includes('Failure_DataError')
491
+ ) {
492
+ throw ERRORS.TypedError(
493
+ HardwareErrorCode.CallMethodNeedUpgradeFirmware,
494
+ 'KaspaSignTransaction: this transaction requires firmware with Kaspa streaming support'
495
+ );
177
496
  }
178
- );
497
+ throw error;
498
+ }
499
+
500
+ const typedCall = device.commands.typedCall.bind(device.commands);
501
+
502
+ if (response.type === 'KaspaTxRequest') {
503
+ if (!this.supportsStreaming) {
504
+ throw ERRORS.TypedError(
505
+ HardwareErrorCode.CallMethodInvalidParameter,
506
+ 'KaspaSignTransaction: device firmware uses the streaming protocol; every output requires address or addressN'
507
+ );
508
+ }
509
+ return this.signTxStream(typedCall, response);
510
+ }
511
+
512
+ // Legacy answer to a streaming-only packet: no prehash material exists.
513
+ if (!this.supportsLegacy) {
514
+ throw ERRORS.TypedError(
515
+ HardwareErrorCode.RuntimeError,
516
+ 'KaspaSignTransaction: device chose the legacy protocol but the transaction is not legacy-signable'
517
+ );
518
+ }
179
519
 
180
- return this.processTxRequest(device.commands.typedCall.bind(device.commands), response, 0, []);
520
+ return this.processTxRequest(typedCall, response, 0, []);
181
521
  }
182
522
  }
@@ -1,12 +1,10 @@
1
1
  /* eslint-disable @typescript-eslint/no-non-null-assertion */
2
+ import { ERRORS, HardwareErrorCode } from '@onekeyfe/hd-shared';
3
+
2
4
  import { SignatureType } from './SignatureType';
3
5
  import { HashWriter } from './HashWriter';
4
6
 
5
- import type {
6
- KaspaSignInputParams,
7
- KaspaSignOutputParams,
8
- KaspaSignTransactionParams,
9
- } from '../../../types';
7
+ import type { KaspaSignTransactionParams } from '../../../types';
10
8
 
11
9
  export function zeroHash() {
12
10
  return Buffer.alloc(32);
@@ -31,7 +29,7 @@ function isSighashNone(sighashType: number) {
31
29
  return (sighashType & 31) === SignatureType.SIGHASH_NONE;
32
30
  }
33
31
 
34
- function hashOutpoint(hashWriter: HashWriter, input: KaspaSignInputParams) {
32
+ function hashOutpoint(hashWriter: HashWriter, input: KaspaSignTransactionParams['inputs'][number]) {
35
33
  hashWriter.writeHash(Buffer.from(input.prevTxId, 'hex'));
36
34
  hashWriter.writeUInt32LE(input.outputIndex);
37
35
  }
@@ -73,9 +71,15 @@ function getSigOpCountsHash(transaction: KaspaSignTransactionParams, sighashType
73
71
  return hashWriter.finalize();
74
72
  }
75
73
 
76
- function hashTxOut(hashWriter: HashWriter, output: KaspaSignOutputParams) {
74
+ function hashTxOut(hashWriter: HashWriter, output: KaspaSignTransactionParams['outputs'][number]) {
77
75
  hashWriter.writeUInt64LE(output.satoshis);
78
76
  hashWriter.writeUInt16LE(0); // TODO: USE REAL SCRIPT VERSION
77
+ if (output.script === undefined) {
78
+ throw ERRORS.TypedError(
79
+ HardwareErrorCode.CallMethodInvalidParameter,
80
+ 'Kaspa legacy sighash requires output.script'
81
+ );
82
+ }
79
83
  hashWriter.writeVarBytes(Buffer.from(output.script, 'hex'));
80
84
  }
81
85
 
@@ -126,6 +130,12 @@ export function serialize(transaction: KaspaSignTransactionParams, inputNumber:
126
130
  const input = transaction.inputs[inputNumber];
127
131
  hashOutpoint(hashWriter, input);
128
132
  hashWriter.writeUInt16LE(0); // TODO: USE REAL SCRIPT VERSION
133
+ if (input.output.script === undefined) {
134
+ throw ERRORS.TypedError(
135
+ HardwareErrorCode.CallMethodInvalidParameter,
136
+ 'Kaspa legacy sighash requires input.output.script'
137
+ );
138
+ }
129
139
  hashWriter.writeVarBytes(Buffer.from(input.output.script, 'hex'));
130
140
  hashWriter.writeUInt64LE(input.output.satoshis);
131
141
  hashWriter.writeUInt64LE(input.sequenceNumber);
@@ -32,10 +32,6 @@ export default class LnurlAuth1 extends BaseMethod<ILnurlAuth> {
32
32
  model_touch: {
33
33
  min: '4.8.0',
34
34
  },
35
- pro2: {
36
- min: '0.0.0',
37
- unsupported: true,
38
- },
39
35
  };
40
36
  }
41
37
 
@@ -7,6 +7,10 @@ import type { NearGetAddress as HardwareNearGetAddress } from '@onekeyfe/hd-tran
7
7
  import type { NearAddress, NearGetAddressParams } from '../../types';
8
8
 
9
9
  export default class NearGetAddress extends BaseMethod<HardwareNearGetAddress[]> {
10
+ getSupportedProtocols() {
11
+ return ['V1', 'V2'] as const;
12
+ }
13
+
10
14
  hasBundle = false;
11
15
 
12
16
  init() {
@@ -7,6 +7,10 @@ import { formatAnyHex } from '../helpers/hexUtils';
7
7
  import type { NearSignTx as HardwareNearSignTx } from '@onekeyfe/hd-transport';
8
8
 
9
9
  export default class NearSignTransaction extends BaseMethod<HardwareNearSignTx> {
10
+ getSupportedProtocols() {
11
+ return ['V1', 'V2'] as const;
12
+ }
13
+
10
14
  init() {
11
15
  this.checkDeviceId = true;
12
16
  this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.NOT_INITIALIZE];
@@ -9,6 +9,10 @@ import type { NEMAddress, NEMGetAddressParams } from '../../types';
9
9
  const MAINNET = 0x68; // 104
10
10
 
11
11
  export default class NEMGetAddress extends BaseMethod<HardwareNEMGetAddress[]> {
12
+ getSupportedProtocols() {
13
+ return ['V1', 'V2'] as const;
14
+ }
15
+
12
16
  hasBundle = false;
13
17
 
14
18
  init() {
@@ -37,6 +37,10 @@ const NEM_MOSAIC_CREATION = 0x4001;
37
37
  const NEM_SUPPLY_CHANGE = 0x4002;
38
38
 
39
39
  export default class NEMSignTransaction extends BaseMethod<NEMSignTx> {
40
+ getSupportedProtocols() {
41
+ return ['V1', 'V2'] as const;
42
+ }
43
+
40
44
  NEM_MOSAIC_LEVY_TYPES: Record<number, string> = {
41
45
  1: 'MosaicLevy_Absolute',
42
46
  2: 'MosaicLevy_Percentile',
@@ -40,10 +40,6 @@ export default class NeoGetAddress extends BaseMethod<HardwareNeoGetAddress[]> {
40
40
 
41
41
  getVersionRange(): DeviceFirmwareRange {
42
42
  return {
43
- pro2: {
44
- min: '0.0.0',
45
- unsupported: true,
46
- },
47
43
  pro: {
48
44
  min: '4.12.0',
49
45
  },
@@ -32,10 +32,6 @@ export default class NeoSignTransaction extends BaseMethod<NeoSignTx> {
32
32
 
33
33
  getVersionRange(): DeviceFirmwareRange {
34
34
  return {
35
- pro2: {
36
- min: '0.0.0',
37
- unsupported: true,
38
- },
39
35
  pro: {
40
36
  min: '4.12.0',
41
37
  },
@@ -42,10 +42,6 @@ export default class NervosGetAddress extends BaseMethod<HardwareNervosGetAddres
42
42
 
43
43
  getVersionRange(): DeviceFirmwareRange {
44
44
  return {
45
- pro2: {
46
- min: '0.0.0',
47
- unsupported: true,
48
- },
49
45
  model_mini: {
50
46
  min: '3.7.0',
51
47
  },
@@ -47,10 +47,6 @@ export default class NervosSignTransaction extends BaseMethod<NervosSignTx> {
47
47
 
48
48
  getVersionRange(): DeviceFirmwareRange {
49
49
  return {
50
- pro2: {
51
- min: '0.0.0',
52
- unsupported: true,
53
- },
54
50
  model_mini: {
55
51
  min: '3.7.0',
56
52
  },
@@ -67,8 +63,8 @@ export default class NervosSignTransaction extends BaseMethod<NervosSignTx> {
67
63
  res: TypedResponseMessage<'NervosSignedTx'> | TypedResponseMessage<'NervosTxRequest'>,
68
64
  data: Buffer,
69
65
  offset = 0
70
- // 设备可能在最后一个 NervosTxRequest(无 data_length)里返回签名,
71
- // 该消息没有 address 字段,返回类型如实声明为联合类型
66
+ // The final NervosTxRequest may return a signature without data_length or address,
67
+ // so the result accurately uses a union type.
72
68
  ): Promise<NervosSignedTx | (NervosTxRequest & { path: string })> => {
73
69
  if (res.type === 'NervosSignedTx') {
74
70
  if (!res?.message?.signature) {
@@ -45,10 +45,6 @@ export default class NexaGetAddress extends BaseMethod<HardwareNexaGetAddress[]>
45
45
 
46
46
  getVersionRange(): DeviceFirmwareRange {
47
47
  return {
48
- pro2: {
49
- min: '0.0.0',
50
- unsupported: true,
51
- },
52
48
  model_mini: {
53
49
  min: '3.2.0',
54
50
  },