@onekeyfe/hd-core 1.1.34-alpha.2 → 1.1.34-alpha.3

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 (613) hide show
  1. package/__tests__/AllNetworkGetAddressBase.tracing.test.ts +75 -0
  2. package/__tests__/DeviceCommands.test.ts +217 -0
  3. package/__tests__/RequestQueue.test.ts +140 -0
  4. package/__tests__/UploadPortfolio.test.ts +46 -0
  5. package/__tests__/connectSettings.test.ts +61 -0
  6. package/__tests__/device-lifecycle-events.test.ts +117 -0
  7. package/__tests__/device-pool-state.test.ts +132 -0
  8. package/__tests__/device-settings.test.ts +286 -0
  9. package/__tests__/device-state-mapper.test.ts +229 -0
  10. package/__tests__/device-utils.test.ts +106 -0
  11. package/__tests__/device-wallet-session-store.test.ts +191 -0
  12. package/__tests__/evmLedgerLegacySafety.test.ts +15 -4
  13. package/__tests__/evmSignTransaction.test.ts +1 -1
  14. package/__tests__/evmSignTypedData.test.ts +1 -1
  15. package/__tests__/filesystemValidation.test.ts +53 -0
  16. package/__tests__/firmware-update/firmware-artifact-source.test.ts +119 -0
  17. package/__tests__/firmware-update/firmware-checkpoint.test.ts +105 -0
  18. package/__tests__/firmware-update/firmware-host-binding.test.ts +73 -0
  19. package/__tests__/firmware-update/firmware-update-capabilities.test.ts +17 -0
  20. package/__tests__/firmware-update/firmware-update-plan.test.ts +358 -0
  21. package/__tests__/firmware-update/firmware-update-prepared-plan.test.ts +200 -0
  22. package/__tests__/firmware-update/firmware-update-recovery.test.ts +81 -0
  23. package/__tests__/firmware-update/firmware-update-v2-download-before-boot.test.ts +48 -31
  24. package/__tests__/firmware-update/firmware-upload-source.test.ts +70 -0
  25. package/__tests__/get-device-state.test.ts +403 -0
  26. package/__tests__/logBlockEvent.test.ts +61 -0
  27. package/__tests__/logger.test.ts +34 -0
  28. package/__tests__/open-wallet-session.test.ts +565 -0
  29. package/__tests__/preInitialize.test.ts +33 -0
  30. package/__tests__/pro2Wallpaper.test.ts +39 -0
  31. package/__tests__/protocol-v2-bootloader-mode.test.ts +37 -0
  32. package/__tests__/protocol-v2-firmware-targets.test.ts +19 -0
  33. package/__tests__/protocol-v2.test.ts +6008 -0
  34. package/__tests__/protocolV2FileWrite.test.ts +67 -0
  35. package/__tests__/public-pro2-api-boundary.test.ts +66 -0
  36. package/__tests__/search-devices.test.ts +136 -0
  37. package/dist/api/BaseMethod.d.ts +12 -0
  38. package/dist/api/BaseMethod.d.ts.map +1 -1
  39. package/dist/api/CheckAllFirmwareRelease.d.ts.map +1 -1
  40. package/dist/api/CheckBootloaderRelease.d.ts.map +1 -1
  41. package/dist/api/CheckFirmwareRelease.d.ts.map +1 -1
  42. package/dist/api/ClearSessionCache.d.ts +9 -0
  43. package/dist/api/ClearSessionCache.d.ts.map +1 -0
  44. package/dist/api/DirList.d.ts +10 -0
  45. package/dist/api/DirList.d.ts.map +1 -0
  46. package/dist/api/DirMake.d.ts +9 -0
  47. package/dist/api/DirMake.d.ts.map +1 -0
  48. package/dist/api/DirRemove.d.ts +9 -0
  49. package/dist/api/DirRemove.d.ts.map +1 -0
  50. package/dist/api/FileDelete.d.ts +9 -0
  51. package/dist/api/FileDelete.d.ts.map +1 -0
  52. package/dist/api/FileRead.d.ts +19 -0
  53. package/dist/api/FileRead.d.ts.map +1 -0
  54. package/dist/api/FileWrite.d.ts +25 -0
  55. package/dist/api/FileWrite.d.ts.map +1 -0
  56. package/dist/api/FirmwareUpdate.d.ts.map +1 -1
  57. package/dist/api/FirmwareUpdateV2.d.ts +14 -3
  58. package/dist/api/FirmwareUpdateV2.d.ts.map +1 -1
  59. package/dist/api/FirmwareUpdateV3.d.ts +10 -3
  60. package/dist/api/FirmwareUpdateV3.d.ts.map +1 -1
  61. package/dist/api/FirmwareUpdateV4.d.ts +75 -0
  62. package/dist/api/FirmwareUpdateV4.d.ts.map +1 -0
  63. package/dist/api/GetDeviceState.d.ts +7 -0
  64. package/dist/api/GetDeviceState.d.ts.map +1 -0
  65. package/dist/api/GetFeatures.d.ts +1 -1
  66. package/dist/api/GetFeatures.d.ts.map +1 -1
  67. package/dist/api/GetOnekeyFeatures.d.ts.map +1 -1
  68. package/dist/api/GetPassphraseState.d.ts.map +1 -1
  69. package/dist/api/OpenWalletSession.d.ts +14 -0
  70. package/dist/api/OpenWalletSession.d.ts.map +1 -0
  71. package/dist/api/PathInfo.d.ts +10 -0
  72. package/dist/api/PathInfo.d.ts.map +1 -0
  73. package/dist/api/PromptWebDeviceAccess.d.ts.map +1 -1
  74. package/dist/api/SearchDevices.d.ts +5 -1
  75. package/dist/api/SearchDevices.d.ts.map +1 -1
  76. package/dist/api/UploadPortfolio.d.ts +18 -0
  77. package/dist/api/UploadPortfolio.d.ts.map +1 -0
  78. package/dist/api/alephium/AlephiumGetAddress.d.ts +2 -6
  79. package/dist/api/alephium/AlephiumGetAddress.d.ts.map +1 -1
  80. package/dist/api/alephium/AlephiumSignMessage.d.ts +2 -5
  81. package/dist/api/alephium/AlephiumSignMessage.d.ts.map +1 -1
  82. package/dist/api/alephium/AlephiumSignTransaction.d.ts +5 -8
  83. package/dist/api/alephium/AlephiumSignTransaction.d.ts.map +1 -1
  84. package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts.map +1 -1
  85. package/dist/api/aptos/AptosGetAddress.d.ts.map +1 -1
  86. package/dist/api/benfen/BenfenGetAddress.d.ts +2 -9
  87. package/dist/api/benfen/BenfenGetAddress.d.ts.map +1 -1
  88. package/dist/api/benfen/BenfenGetPublicKey.d.ts +2 -9
  89. package/dist/api/benfen/BenfenGetPublicKey.d.ts.map +1 -1
  90. package/dist/api/benfen/BenfenSignMessage.d.ts +2 -8
  91. package/dist/api/benfen/BenfenSignMessage.d.ts.map +1 -1
  92. package/dist/api/benfen/BenfenSignTransaction.d.ts +2 -8
  93. package/dist/api/benfen/BenfenSignTransaction.d.ts.map +1 -1
  94. package/dist/api/btc/BTCGetAddress.d.ts +1 -11
  95. package/dist/api/btc/BTCGetAddress.d.ts.map +1 -1
  96. package/dist/api/btc/BTCGetPublicKey.d.ts +1 -11
  97. package/dist/api/btc/BTCGetPublicKey.d.ts.map +1 -1
  98. package/dist/api/btc/BTCSignMessage.d.ts +1 -15
  99. package/dist/api/btc/BTCSignMessage.d.ts.map +1 -1
  100. package/dist/api/btc/BTCSignPsbt.d.ts.map +1 -1
  101. package/dist/api/btc/BTCSignTransaction.d.ts +1 -11
  102. package/dist/api/btc/BTCSignTransaction.d.ts.map +1 -1
  103. package/dist/api/btc/BTCVerifyMessage.d.ts +1 -11
  104. package/dist/api/btc/BTCVerifyMessage.d.ts.map +1 -1
  105. package/dist/api/btc/helpers/versionLimit.d.ts +2 -11
  106. package/dist/api/btc/helpers/versionLimit.d.ts.map +1 -1
  107. package/dist/api/cardano/CardanoSignTransaction.d.ts.map +1 -1
  108. package/dist/api/conflux/ConfluxSignTransaction.d.ts.map +1 -1
  109. package/dist/api/device/DeviceCancel.d.ts.map +1 -1
  110. package/dist/api/device/DeviceChangePin.d.ts.map +1 -1
  111. package/dist/api/device/DeviceFullyUploadResource.d.ts +1 -2
  112. package/dist/api/device/DeviceFullyUploadResource.d.ts.map +1 -1
  113. package/dist/api/device/DeviceLock.d.ts.map +1 -1
  114. package/dist/api/device/DeviceRebootToBoardloader.d.ts +1 -1
  115. package/dist/api/device/DeviceRebootToBoardloader.d.ts.map +1 -1
  116. package/dist/api/device/DeviceRebootToBootloader.d.ts.map +1 -1
  117. package/dist/api/device/DeviceSettings.d.ts.map +1 -1
  118. package/dist/api/device/DeviceSupportFeatures.d.ts.map +1 -1
  119. package/dist/api/device/DeviceUnlock.d.ts +1 -1
  120. package/dist/api/device/DeviceUnlock.d.ts.map +1 -1
  121. package/dist/api/device/DeviceUpdateBootloader.d.ts +7 -1
  122. package/dist/api/device/DeviceUpdateBootloader.d.ts.map +1 -1
  123. package/dist/api/device/DeviceUploadResource.d.ts.map +1 -1
  124. package/dist/api/device/DeviceVerify.d.ts.map +1 -1
  125. package/dist/api/device/DeviceWipe.d.ts.map +1 -1
  126. package/dist/api/dynex/DnxGetAddress.d.ts.map +1 -1
  127. package/dist/api/dynex/DnxSignTransaction.d.ts.map +1 -1
  128. package/dist/api/evm/EVMGetPublicKey.d.ts.map +1 -1
  129. package/dist/api/evm/EVMSignMessageEIP712.d.ts +2 -8
  130. package/dist/api/evm/EVMSignMessageEIP712.d.ts.map +1 -1
  131. package/dist/api/evm/EVMSignTypedData.d.ts.map +1 -1
  132. package/dist/api/evm/latest/signTypedData.d.ts +1 -1
  133. package/dist/api/evm/latest/signTypedData.d.ts.map +1 -1
  134. package/dist/api/evm/latest/signTypedHash.d.ts.map +1 -1
  135. package/dist/api/evm/legacyV1/getAddress.d.ts.map +1 -1
  136. package/dist/api/evm/legacyV1/getPublicKey.d.ts.map +1 -1
  137. package/dist/api/evm/legacyV1/signMessage.d.ts.map +1 -1
  138. package/dist/api/evm/legacyV1/signTypedData.d.ts +1 -1
  139. package/dist/api/evm/legacyV1/signTypedData.d.ts.map +1 -1
  140. package/dist/api/evm/legacyV1/signTypedHash.d.ts.map +1 -1
  141. package/dist/api/evm/legacyV1/verifyMessage.d.ts.map +1 -1
  142. package/dist/api/firmware/FirmwareArtifactSource.d.ts +26 -0
  143. package/dist/api/firmware/FirmwareArtifactSource.d.ts.map +1 -0
  144. package/dist/api/firmware/FirmwareCheckpoint.d.ts +15 -0
  145. package/dist/api/firmware/FirmwareCheckpoint.d.ts.map +1 -0
  146. package/dist/api/firmware/FirmwareHostBinding.d.ts +6 -0
  147. package/dist/api/firmware/FirmwareHostBinding.d.ts.map +1 -0
  148. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts +10 -1
  149. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts.map +1 -1
  150. package/dist/api/firmware/FirmwareUpdateCapabilities.d.ts +3 -0
  151. package/dist/api/firmware/FirmwareUpdateCapabilities.d.ts.map +1 -0
  152. package/dist/api/firmware/FirmwareUpdatePlan.d.ts +29 -0
  153. package/dist/api/firmware/FirmwareUpdatePlan.d.ts.map +1 -0
  154. package/dist/api/firmware/FirmwareUpdatePreparedPlan.d.ts +25 -0
  155. package/dist/api/firmware/FirmwareUpdatePreparedPlan.d.ts.map +1 -0
  156. package/dist/api/firmware/bootloaderHelper.d.ts.map +1 -1
  157. package/dist/api/firmware/getBinary.d.ts +11 -0
  158. package/dist/api/firmware/getBinary.d.ts.map +1 -1
  159. package/dist/api/firmware/progressThrottle.d.ts +3 -0
  160. package/dist/api/firmware/progressThrottle.d.ts.map +1 -0
  161. package/dist/api/firmware/updateBootloader.d.ts +2 -0
  162. package/dist/api/firmware/updateBootloader.d.ts.map +1 -1
  163. package/dist/api/firmware/uploadFirmware.d.ts +9 -1
  164. package/dist/api/firmware/uploadFirmware.d.ts.map +1 -1
  165. package/dist/api/helpers/batchGetPublickeys.d.ts +3 -0
  166. package/dist/api/helpers/batchGetPublickeys.d.ts.map +1 -1
  167. package/dist/api/helpers/filesystemValidation.d.ts +10 -0
  168. package/dist/api/helpers/filesystemValidation.d.ts.map +1 -0
  169. package/dist/api/helpers/protocolV2FileWrite.d.ts +33 -0
  170. package/dist/api/helpers/protocolV2FileWrite.d.ts.map +1 -0
  171. package/dist/api/index.d.ts +29 -0
  172. package/dist/api/index.d.ts.map +1 -1
  173. package/dist/api/kaspa/KaspaSignTransaction.d.ts.map +1 -1
  174. package/dist/api/lightning/LnurlAuth.d.ts +4 -0
  175. package/dist/api/lightning/LnurlAuth.d.ts.map +1 -1
  176. package/dist/api/neo/NeoGetAddress.d.ts +2 -8
  177. package/dist/api/neo/NeoGetAddress.d.ts.map +1 -1
  178. package/dist/api/neo/NeoSignTransaction.d.ts +2 -8
  179. package/dist/api/neo/NeoSignTransaction.d.ts.map +1 -1
  180. package/dist/api/nervos/NervosGetAddress.d.ts +2 -9
  181. package/dist/api/nervos/NervosGetAddress.d.ts.map +1 -1
  182. package/dist/api/nervos/NervosSignTransaction.d.ts +9 -12
  183. package/dist/api/nervos/NervosSignTransaction.d.ts.map +1 -1
  184. package/dist/api/nexa/NexaGetAddress.d.ts +2 -8
  185. package/dist/api/nexa/NexaGetAddress.d.ts.map +1 -1
  186. package/dist/api/nexa/NexaSignTransaction.d.ts +2 -9
  187. package/dist/api/nexa/NexaSignTransaction.d.ts.map +1 -1
  188. package/dist/api/polkadot/PolkadotGetAddress.d.ts +3 -0
  189. package/dist/api/polkadot/PolkadotGetAddress.d.ts.map +1 -1
  190. package/dist/api/polkadot/networks.d.ts +3 -0
  191. package/dist/api/polkadot/networks.d.ts.map +1 -1
  192. package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts +6 -0
  193. package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts.map +1 -0
  194. package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts +7 -0
  195. package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts.map +1 -0
  196. package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts +7 -0
  197. package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts.map +1 -0
  198. package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts +7 -0
  199. package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts.map +1 -0
  200. package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts +6 -0
  201. package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts.map +1 -0
  202. package/dist/api/protocol-v2/DeviceInfoGet.d.ts +28 -0
  203. package/dist/api/protocol-v2/DeviceInfoGet.d.ts.map +1 -0
  204. package/dist/api/protocol-v2/DeviceReboot.d.ts +7 -0
  205. package/dist/api/protocol-v2/DeviceReboot.d.ts.map +1 -0
  206. package/dist/api/protocol-v2/DeviceSessionOpen.d.ts +28 -0
  207. package/dist/api/protocol-v2/DeviceSessionOpen.d.ts.map +1 -0
  208. package/dist/api/protocol-v2/DeviceSettingsGet.d.ts +6 -0
  209. package/dist/api/protocol-v2/DeviceSettingsGet.d.ts.map +1 -0
  210. package/dist/api/protocol-v2/DeviceSettingsPageShow.d.ts +16 -0
  211. package/dist/api/protocol-v2/DeviceSettingsPageShow.d.ts.map +1 -0
  212. package/dist/api/protocol-v2/DeviceSettingsSet.d.ts +12 -0
  213. package/dist/api/protocol-v2/DeviceSettingsSet.d.ts.map +1 -0
  214. package/dist/api/protocol-v2/DeviceStatusGet.d.ts +6 -0
  215. package/dist/api/protocol-v2/DeviceStatusGet.d.ts.map +1 -0
  216. package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts +26 -0
  217. package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts.map +1 -0
  218. package/dist/api/protocol-v2/FilesystemFormat.d.ts +6 -0
  219. package/dist/api/protocol-v2/FilesystemFormat.d.ts.map +1 -0
  220. package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts +6 -0
  221. package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts.map +1 -0
  222. package/dist/api/protocol-v2/Ping.d.ts +8 -0
  223. package/dist/api/protocol-v2/Ping.d.ts.map +1 -0
  224. package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts +6 -0
  225. package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts.map +1 -0
  226. package/dist/api/protocol-v2/helpers.d.ts +42 -0
  227. package/dist/api/protocol-v2/helpers.d.ts.map +1 -0
  228. package/dist/api/scdo/ScdoGetAddress.d.ts +2 -6
  229. package/dist/api/scdo/ScdoGetAddress.d.ts.map +1 -1
  230. package/dist/api/scdo/ScdoSignMessage.d.ts +2 -5
  231. package/dist/api/scdo/ScdoSignMessage.d.ts.map +1 -1
  232. package/dist/api/scdo/ScdoSignTransaction.d.ts +2 -5
  233. package/dist/api/scdo/ScdoSignTransaction.d.ts.map +1 -1
  234. package/dist/api/solana/SolGetAddress.d.ts +1 -0
  235. package/dist/api/solana/SolGetAddress.d.ts.map +1 -1
  236. package/dist/api/solana/SolSignMessage.d.ts +3 -0
  237. package/dist/api/solana/SolSignMessage.d.ts.map +1 -1
  238. package/dist/api/solana/SolSignOffchainMessage.d.ts +3 -0
  239. package/dist/api/solana/SolSignOffchainMessage.d.ts.map +1 -1
  240. package/dist/api/solana/SolSignTransaction.d.ts +6 -0
  241. package/dist/api/solana/SolSignTransaction.d.ts.map +1 -1
  242. package/dist/api/stellar/StellarGetAddress.d.ts +2 -1
  243. package/dist/api/stellar/StellarGetAddress.d.ts.map +1 -1
  244. package/dist/api/stellar/StellarSignTransaction.d.ts +3 -2
  245. package/dist/api/stellar/StellarSignTransaction.d.ts.map +1 -1
  246. package/dist/api/sui/SuiGetAddress.d.ts +3 -0
  247. package/dist/api/sui/SuiGetAddress.d.ts.map +1 -1
  248. package/dist/api/sui/SuiGetPublicKey.d.ts +3 -0
  249. package/dist/api/sui/SuiGetPublicKey.d.ts.map +1 -1
  250. package/dist/api/sui/SuiSignMessage.d.ts +3 -0
  251. package/dist/api/sui/SuiSignMessage.d.ts.map +1 -1
  252. package/dist/api/sui/SuiSignTransaction.d.ts +5 -2
  253. package/dist/api/sui/SuiSignTransaction.d.ts.map +1 -1
  254. package/dist/api/ton/TonGetAddress.d.ts +3 -0
  255. package/dist/api/ton/TonGetAddress.d.ts.map +1 -1
  256. package/dist/api/ton/TonSignData.d.ts +1 -0
  257. package/dist/api/ton/TonSignData.d.ts.map +1 -1
  258. package/dist/api/ton/TonSignMessage.d.ts +3 -0
  259. package/dist/api/ton/TonSignMessage.d.ts.map +1 -1
  260. package/dist/api/ton/TonSignProof.d.ts +3 -0
  261. package/dist/api/ton/TonSignProof.d.ts.map +1 -1
  262. package/dist/api/tron/TronSignMessage.d.ts +3 -0
  263. package/dist/api/tron/TronSignMessage.d.ts.map +1 -1
  264. package/dist/api/tron/TronSignTransaction.d.ts +3 -0
  265. package/dist/api/tron/TronSignTransaction.d.ts.map +1 -1
  266. package/dist/api/utils.d.ts +2 -1
  267. package/dist/api/utils.d.ts.map +1 -1
  268. package/dist/constants/index.d.ts +2 -1
  269. package/dist/constants/index.d.ts.map +1 -1
  270. package/dist/core/RequestQueue.d.ts +19 -1
  271. package/dist/core/RequestQueue.d.ts.map +1 -1
  272. package/dist/core/deviceEventRegistration.d.ts +11 -0
  273. package/dist/core/deviceEventRegistration.d.ts.map +1 -0
  274. package/dist/core/index.d.ts +4 -1
  275. package/dist/core/index.d.ts.map +1 -1
  276. package/dist/data-manager/DataManager.d.ts +9 -5
  277. package/dist/data-manager/DataManager.d.ts.map +1 -1
  278. package/dist/data-manager/MessagesConfig.d.ts +2 -2
  279. package/dist/data-manager/MessagesConfig.d.ts.map +1 -1
  280. package/dist/data-manager/TransportManager.d.ts +5 -4
  281. package/dist/data-manager/TransportManager.d.ts.map +1 -1
  282. package/dist/data-manager/connectSettings.d.ts.map +1 -1
  283. package/dist/device/Device.d.ts +60 -16
  284. package/dist/device/Device.d.ts.map +1 -1
  285. package/dist/device/DeviceCommands.d.ts +16 -14
  286. package/dist/device/DeviceCommands.d.ts.map +1 -1
  287. package/dist/device/DeviceConnector.d.ts +2 -1
  288. package/dist/device/DeviceConnector.d.ts.map +1 -1
  289. package/dist/device/DeviceFeaturesState.d.ts +4 -0
  290. package/dist/device/DeviceFeaturesState.d.ts.map +1 -0
  291. package/dist/device/DevicePool.d.ts +4 -2
  292. package/dist/device/DevicePool.d.ts.map +1 -1
  293. package/dist/device/DeviceStateMapper.d.ts +13 -0
  294. package/dist/device/DeviceStateMapper.d.ts.map +1 -0
  295. package/dist/device/DeviceStateProjector.d.ts +7 -0
  296. package/dist/device/DeviceStateProjector.d.ts.map +1 -0
  297. package/dist/device/DeviceStateStore.d.ts +21 -0
  298. package/dist/device/DeviceStateStore.d.ts.map +1 -0
  299. package/dist/device/DeviceWalletSessionStore.d.ts +15 -0
  300. package/dist/device/DeviceWalletSessionStore.d.ts.map +1 -0
  301. package/dist/device/cloneDeviceState.d.ts +2 -0
  302. package/dist/device/cloneDeviceState.d.ts.map +1 -0
  303. package/dist/device/deviceIdentity.d.ts +5 -0
  304. package/dist/device/deviceIdentity.d.ts.map +1 -0
  305. package/dist/deviceProfile/buildDeviceFeatures.d.ts +12 -0
  306. package/dist/deviceProfile/buildDeviceFeatures.d.ts.map +1 -0
  307. package/dist/deviceProfile/index.d.ts +2 -0
  308. package/dist/deviceProfile/index.d.ts.map +1 -0
  309. package/dist/events/call.d.ts +7 -0
  310. package/dist/events/call.d.ts.map +1 -1
  311. package/dist/events/core.d.ts +2 -2
  312. package/dist/events/core.d.ts.map +1 -1
  313. package/dist/events/device.d.ts +11 -2
  314. package/dist/events/device.d.ts.map +1 -1
  315. package/dist/events/iframe.d.ts +1 -0
  316. package/dist/events/iframe.d.ts.map +1 -1
  317. package/dist/events/logBlockEvent.d.ts +1 -0
  318. package/dist/events/logBlockEvent.d.ts.map +1 -1
  319. package/dist/events/ui-request.d.ts +26 -2
  320. package/dist/events/ui-request.d.ts.map +1 -1
  321. package/dist/index.d.ts +1797 -451
  322. package/dist/index.d.ts.map +1 -1
  323. package/dist/index.js +26905 -5611
  324. package/dist/inject.d.ts +3 -2
  325. package/dist/inject.d.ts.map +1 -1
  326. package/dist/lowLevelInject.d.ts +2 -1
  327. package/dist/lowLevelInject.d.ts.map +1 -1
  328. package/dist/protocols/protocol-v2/deviceSession.d.ts +7 -0
  329. package/dist/protocols/protocol-v2/deviceSession.d.ts.map +1 -0
  330. package/dist/protocols/protocol-v2/features.d.ts +88 -0
  331. package/dist/protocols/protocol-v2/features.d.ts.map +1 -0
  332. package/dist/protocols/protocol-v2/firmware.d.ts +15 -0
  333. package/dist/protocols/protocol-v2/firmware.d.ts.map +1 -0
  334. package/dist/protocols/protocol-v2/index.d.ts +5 -0
  335. package/dist/protocols/protocol-v2/index.d.ts.map +1 -0
  336. package/dist/protocols/protocol-v2/lockedError.d.ts +2 -0
  337. package/dist/protocols/protocol-v2/lockedError.d.ts.map +1 -0
  338. package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts +16 -0
  339. package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts.map +1 -0
  340. package/dist/protocols/protocol-v2/uiInteraction.d.ts +39 -0
  341. package/dist/protocols/protocol-v2/uiInteraction.d.ts.map +1 -0
  342. package/dist/protocols/protocol-v2/unlockRetry.d.ts +11 -0
  343. package/dist/protocols/protocol-v2/unlockRetry.d.ts.map +1 -0
  344. package/dist/protocols/protocol-v2/walletSession.d.ts +21 -0
  345. package/dist/protocols/protocol-v2/walletSession.d.ts.map +1 -0
  346. package/dist/topLevelInject.d.ts.map +1 -1
  347. package/dist/types/api/checkAllFirmwareRelease.d.ts +4 -2
  348. package/dist/types/api/checkAllFirmwareRelease.d.ts.map +1 -1
  349. package/dist/types/api/deviceSettings.d.ts +9 -0
  350. package/dist/types/api/deviceSettings.d.ts.map +1 -1
  351. package/dist/types/api/deviceUnlock.d.ts +1 -1
  352. package/dist/types/api/deviceUnlock.d.ts.map +1 -1
  353. package/dist/types/api/deviceUpdateBootloader.d.ts +6 -1
  354. package/dist/types/api/deviceUpdateBootloader.d.ts.map +1 -1
  355. package/dist/types/api/export.d.ts +4 -1
  356. package/dist/types/api/export.d.ts.map +1 -1
  357. package/dist/types/api/firmwareUpdate.d.ts +114 -1
  358. package/dist/types/api/firmwareUpdate.d.ts.map +1 -1
  359. package/dist/types/api/firmwareUpdateCapabilities.d.ts +13 -0
  360. package/dist/types/api/firmwareUpdateCapabilities.d.ts.map +1 -0
  361. package/dist/types/api/firmwareUpdatePlan.d.ts +35 -0
  362. package/dist/types/api/firmwareUpdatePlan.d.ts.map +1 -0
  363. package/dist/types/api/firmwareUpdatePreparedPlan.d.ts +43 -0
  364. package/dist/types/api/firmwareUpdatePreparedPlan.d.ts.map +1 -0
  365. package/dist/types/api/getDeviceState.d.ts +12 -0
  366. package/dist/types/api/getDeviceState.d.ts.map +1 -0
  367. package/dist/types/api/getFeatures.d.ts.map +1 -1
  368. package/dist/types/api/getOnekeyFeatures.d.ts.map +1 -1
  369. package/dist/types/api/getPassphraseState.d.ts +2 -1
  370. package/dist/types/api/getPassphraseState.d.ts.map +1 -1
  371. package/dist/types/api/index.d.ts +48 -2
  372. package/dist/types/api/index.d.ts.map +1 -1
  373. package/dist/types/api/openWalletSession.d.ts +35 -0
  374. package/dist/types/api/openWalletSession.d.ts.map +1 -0
  375. package/dist/types/api/protocolV2.d.ts +113 -0
  376. package/dist/types/api/protocolV2.d.ts.map +1 -0
  377. package/dist/types/api/searchDevices.d.ts +2 -2
  378. package/dist/types/api/searchDevices.d.ts.map +1 -1
  379. package/dist/types/api/sessionCache.d.ts +10 -0
  380. package/dist/types/api/sessionCache.d.ts.map +1 -0
  381. package/dist/types/device.d.ts +207 -5
  382. package/dist/types/device.d.ts.map +1 -1
  383. package/dist/types/params.d.ts +3 -0
  384. package/dist/types/params.d.ts.map +1 -1
  385. package/dist/types/settings.d.ts +33 -0
  386. package/dist/types/settings.d.ts.map +1 -1
  387. package/dist/utils/capabilitieUtils.d.ts.map +1 -1
  388. package/dist/utils/deviceFeaturesCompat.d.ts +13 -0
  389. package/dist/utils/deviceFeaturesCompat.d.ts.map +1 -0
  390. package/dist/utils/deviceFeaturesUtils.d.ts +17 -9
  391. package/dist/utils/deviceFeaturesUtils.d.ts.map +1 -1
  392. package/dist/utils/deviceInfoUtils.d.ts +10 -8
  393. package/dist/utils/deviceInfoUtils.d.ts.map +1 -1
  394. package/dist/utils/deviceSettings.d.ts +2 -0
  395. package/dist/utils/deviceSettings.d.ts.map +1 -1
  396. package/dist/utils/deviceVersionUtils.d.ts +6 -5
  397. package/dist/utils/deviceVersionUtils.d.ts.map +1 -1
  398. package/dist/utils/findDefectiveBatchDevice.d.ts +1 -1
  399. package/dist/utils/homescreen.d.ts.map +1 -1
  400. package/dist/utils/index.d.ts +3 -1
  401. package/dist/utils/index.d.ts.map +1 -1
  402. package/dist/utils/patch.d.ts +1 -1
  403. package/dist/utils/patch.d.ts.map +1 -1
  404. package/dist/utils/pro2Wallpaper.d.ts +12 -0
  405. package/dist/utils/pro2Wallpaper.d.ts.map +1 -0
  406. package/dist/utils/tracing.d.ts.map +1 -1
  407. package/dist/utils/versionUtils.d.ts +1 -1
  408. package/package.json +4 -4
  409. package/src/api/BaseMethod.ts +60 -23
  410. package/src/api/CheckAllFirmwareRelease.ts +16 -3
  411. package/src/api/CheckBootloaderRelease.ts +1 -2
  412. package/src/api/CheckFirmwareRelease.ts +1 -2
  413. package/src/api/ClearSessionCache.ts +28 -0
  414. package/src/api/DirList.ts +33 -0
  415. package/src/api/DirMake.ts +23 -0
  416. package/src/api/DirRemove.ts +23 -0
  417. package/src/api/FileDelete.ts +23 -0
  418. package/src/api/FileRead.ts +183 -0
  419. package/src/api/FileWrite.ts +71 -0
  420. package/src/api/FirmwareUpdate.ts +15 -7
  421. package/src/api/FirmwareUpdateV2.ts +354 -148
  422. package/src/api/FirmwareUpdateV3.ts +376 -62
  423. package/src/api/FirmwareUpdateV4.ts +2279 -0
  424. package/src/api/GetDeviceState.ts +55 -0
  425. package/src/api/GetFeatures.ts +12 -4
  426. package/src/api/GetOnekeyFeatures.ts +15 -3
  427. package/src/api/GetPassphraseState.ts +9 -10
  428. package/src/api/OpenWalletSession.ts +211 -0
  429. package/src/api/PathInfo.ts +41 -0
  430. package/src/api/PromptWebDeviceAccess.ts +10 -1
  431. package/src/api/SearchDevices.ts +33 -3
  432. package/src/api/UploadPortfolio.ts +50 -0
  433. package/src/api/alephium/AlephiumGetAddress.ts +6 -2
  434. package/src/api/alephium/AlephiumSignMessage.ts +6 -1
  435. package/src/api/alephium/AlephiumSignTransaction.ts +15 -4
  436. package/src/api/allnetwork/AllNetworkGetAddressBase.ts +25 -21
  437. package/src/api/aptos/AptosGetAddress.ts +2 -3
  438. package/src/api/benfen/BenfenGetAddress.ts +11 -7
  439. package/src/api/benfen/BenfenGetPublicKey.ts +6 -2
  440. package/src/api/benfen/BenfenSignMessage.ts +6 -1
  441. package/src/api/benfen/BenfenSignTransaction.ts +6 -1
  442. package/src/api/btc/BTCGetPublicKey.ts +3 -2
  443. package/src/api/btc/BTCSignPsbt.ts +1 -2
  444. package/src/api/btc/helpers/versionLimit.ts +7 -1
  445. package/src/api/cardano/CardanoSignTransaction.ts +2 -4
  446. package/src/api/conflux/ConfluxSignTransaction.ts +5 -2
  447. package/src/api/device/DeviceCancel.ts +1 -0
  448. package/src/api/device/DeviceChangePin.ts +24 -0
  449. package/src/api/device/DeviceFullyUploadResource.ts +6 -7
  450. package/src/api/device/DeviceLock.ts +2 -3
  451. package/src/api/device/DeviceRebootToBoardloader.ts +11 -1
  452. package/src/api/device/DeviceRebootToBootloader.ts +11 -1
  453. package/src/api/device/DeviceSettings.ts +121 -0
  454. package/src/api/device/DeviceSupportFeatures.ts +2 -13
  455. package/src/api/device/DeviceUnlock.ts +9 -0
  456. package/src/api/device/DeviceUpdateBootloader.ts +175 -11
  457. package/src/api/device/DeviceUploadResource.ts +4 -5
  458. package/src/api/device/DeviceVerify.ts +1 -2
  459. package/src/api/device/DeviceWipe.ts +19 -0
  460. package/src/api/dynex/DnxGetAddress.ts +6 -0
  461. package/src/api/dynex/DnxSignTransaction.ts +6 -0
  462. package/src/api/evm/EVMGetAddress.ts +1 -1
  463. package/src/api/evm/EVMGetPublicKey.ts +3 -4
  464. package/src/api/evm/EVMSignMessage.ts +1 -1
  465. package/src/api/evm/EVMSignMessageEIP712.ts +14 -1
  466. package/src/api/evm/EVMSignTransaction.ts +1 -1
  467. package/src/api/evm/EVMSignTypedData.ts +30 -18
  468. package/src/api/evm/EVMVerifyMessage.ts +1 -1
  469. package/src/api/evm/latest/signTypedHash.ts +2 -4
  470. package/src/api/evm/legacyV1/getAddress.ts +5 -3
  471. package/src/api/evm/legacyV1/getPublicKey.ts +5 -3
  472. package/src/api/evm/legacyV1/signMessage.ts +5 -3
  473. package/src/api/evm/legacyV1/signTypedData.ts +9 -8
  474. package/src/api/evm/legacyV1/signTypedHash.ts +7 -7
  475. package/src/api/evm/legacyV1/verifyMessage.ts +5 -3
  476. package/src/api/firmware/FirmwareArtifactSource.ts +278 -0
  477. package/src/api/firmware/FirmwareCheckpoint.ts +188 -0
  478. package/src/api/firmware/FirmwareHostBinding.ts +108 -0
  479. package/src/api/firmware/FirmwareUpdateBaseMethod.ts +83 -15
  480. package/src/api/firmware/FirmwareUpdateCapabilities.ts +13 -0
  481. package/src/api/firmware/FirmwareUpdatePlan.ts +729 -0
  482. package/src/api/firmware/FirmwareUpdatePreparedPlan.ts +403 -0
  483. package/src/api/firmware/bootloaderHelper.ts +3 -2
  484. package/src/api/firmware/getBinary.ts +1 -1
  485. package/src/api/firmware/progressThrottle.ts +44 -0
  486. package/src/api/firmware/releaseHelper.ts +3 -3
  487. package/src/api/firmware/updateBootloader.ts +19 -4
  488. package/src/api/firmware/uploadFirmware.ts +148 -34
  489. package/src/api/helpers/batchGetPublickeys.ts +51 -6
  490. package/src/api/helpers/filesystemValidation.ts +112 -0
  491. package/src/api/helpers/protocolV2FileWrite.ts +193 -0
  492. package/src/api/index.ts +32 -0
  493. package/src/api/kaspa/KaspaSignTransaction.ts +2 -3
  494. package/src/api/lightning/LnurlAuth.ts +4 -0
  495. package/src/api/neo/NeoGetAddress.ts +6 -1
  496. package/src/api/neo/NeoSignTransaction.ts +6 -1
  497. package/src/api/nervos/NervosGetAddress.ts +6 -2
  498. package/src/api/nervos/NervosSignTransaction.ts +14 -4
  499. package/src/api/nexa/NexaGetAddress.ts +6 -2
  500. package/src/api/nexa/NexaSignTransaction.ts +11 -12
  501. package/src/api/polkadot/networks.ts +9 -0
  502. package/src/api/protocol-v2/DeviceFactoryInfoGet.ts +20 -0
  503. package/src/api/protocol-v2/DeviceFactoryInfoSet.ts +32 -0
  504. package/src/api/protocol-v2/DeviceFirmwareUpdate.ts +61 -0
  505. package/src/api/protocol-v2/DeviceGetFirmwareUpdateStatus.ts +55 -0
  506. package/src/api/protocol-v2/DeviceGetOnboardingStatus.ts +18 -0
  507. package/src/api/protocol-v2/DeviceInfoGet.ts +145 -0
  508. package/src/api/protocol-v2/DeviceReboot.ts +26 -0
  509. package/src/api/protocol-v2/DeviceSessionOpen.ts +102 -0
  510. package/src/api/protocol-v2/DeviceSettingsGet.ts +18 -0
  511. package/src/api/protocol-v2/DeviceSettingsPageShow.ts +70 -0
  512. package/src/api/protocol-v2/DeviceSettingsSet.ts +44 -0
  513. package/src/api/protocol-v2/DeviceStatusGet.ts +16 -0
  514. package/src/api/protocol-v2/DeviceUploadWallpaper.ts +131 -0
  515. package/src/api/protocol-v2/FilesystemFormat.ts +19 -0
  516. package/src/api/protocol-v2/FilesystemPermissionFix.ts +16 -0
  517. package/src/api/protocol-v2/Ping.ts +18 -0
  518. package/src/api/protocol-v2/ProtocolInfoRequest.ts +16 -0
  519. package/src/api/protocol-v2/helpers.ts +203 -0
  520. package/src/api/scdo/ScdoGetAddress.ts +6 -2
  521. package/src/api/scdo/ScdoSignMessage.ts +6 -1
  522. package/src/api/scdo/ScdoSignTransaction.ts +6 -2
  523. package/src/api/solana/SolGetAddress.ts +4 -0
  524. package/src/api/solana/SolSignMessage.ts +3 -0
  525. package/src/api/solana/SolSignOffchainMessage.ts +3 -0
  526. package/src/api/solana/SolSignTransaction.ts +6 -0
  527. package/src/api/stellar/StellarGetAddress.ts +10 -1
  528. package/src/api/stellar/StellarSignTransaction.ts +14 -1
  529. package/src/api/sui/SuiGetAddress.ts +5 -3
  530. package/src/api/sui/SuiGetPublicKey.ts +3 -0
  531. package/src/api/sui/SuiSignMessage.ts +3 -0
  532. package/src/api/sui/SuiSignTransaction.ts +14 -12
  533. package/src/api/ton/TonGetAddress.ts +3 -0
  534. package/src/api/ton/TonSignData.ts +6 -3
  535. package/src/api/ton/TonSignMessage.ts +6 -5
  536. package/src/api/ton/TonSignProof.ts +3 -0
  537. package/src/api/tron/TronSignMessage.ts +4 -1
  538. package/src/api/tron/TronSignTransaction.ts +3 -0
  539. package/src/api/utils.ts +7 -3
  540. package/src/api/xrp/XrpSignTransaction.ts +1 -1
  541. package/src/constants/index.ts +7 -1
  542. package/src/core/RequestQueue.ts +124 -4
  543. package/src/core/deviceEventRegistration.ts +23 -0
  544. package/src/core/index.ts +253 -125
  545. package/src/data/messages/messages-protocol-v2.json +13544 -0
  546. package/src/data-manager/DataManager.ts +61 -49
  547. package/src/data-manager/MessagesConfig.ts +14 -14
  548. package/src/data-manager/TransportManager.ts +38 -12
  549. package/src/data-manager/connectSettings.ts +15 -0
  550. package/src/device/Device.ts +759 -164
  551. package/src/device/DeviceCommands.ts +245 -36
  552. package/src/device/DeviceConnector.ts +29 -4
  553. package/src/device/DeviceFeaturesState.ts +34 -0
  554. package/src/device/DevicePool.ts +69 -21
  555. package/src/device/DeviceStateMapper.ts +348 -0
  556. package/src/device/DeviceStateProjector.ts +95 -0
  557. package/src/device/DeviceStateStore.ts +201 -0
  558. package/src/device/DeviceWalletSessionStore.ts +78 -0
  559. package/src/device/cloneDeviceState.ts +39 -0
  560. package/src/device/deviceIdentity.ts +18 -0
  561. package/src/deviceProfile/buildDeviceFeatures.ts +391 -0
  562. package/src/deviceProfile/index.ts +4 -0
  563. package/src/events/call.ts +6 -0
  564. package/src/events/core.ts +2 -0
  565. package/src/events/device.ts +17 -1
  566. package/src/events/iframe.ts +1 -0
  567. package/src/events/logBlockEvent.ts +30 -0
  568. package/src/events/ui-request.ts +32 -2
  569. package/src/index.ts +9 -0
  570. package/src/inject.ts +75 -3
  571. package/src/lowLevelInject.ts +8 -1
  572. package/src/protocols/protocol-v2/deviceSession.ts +24 -0
  573. package/src/protocols/protocol-v2/features.ts +163 -0
  574. package/src/protocols/protocol-v2/firmware.ts +21 -0
  575. package/src/protocols/protocol-v2/index.ts +18 -0
  576. package/src/protocols/protocol-v2/lockedError.ts +10 -0
  577. package/src/protocols/protocol-v2/settingsUnlockPolicy.ts +61 -0
  578. package/src/protocols/protocol-v2/uiInteraction.ts +210 -0
  579. package/src/protocols/protocol-v2/unlockRetry.ts +76 -0
  580. package/src/protocols/protocol-v2/walletSession.ts +202 -0
  581. package/src/topLevelInject.ts +7 -1
  582. package/src/types/api/checkAllFirmwareRelease.ts +4 -2
  583. package/src/types/api/deviceSettings.ts +9 -0
  584. package/src/types/api/deviceUnlock.ts +1 -1
  585. package/src/types/api/deviceUpdateBootloader.ts +10 -1
  586. package/src/types/api/export.ts +25 -0
  587. package/src/types/api/firmwareUpdate.ts +163 -1
  588. package/src/types/api/firmwareUpdateCapabilities.ts +13 -0
  589. package/src/types/api/firmwareUpdatePlan.ts +52 -0
  590. package/src/types/api/firmwareUpdatePreparedPlan.ts +55 -0
  591. package/src/types/api/getDeviceState.ts +19 -0
  592. package/src/types/api/getFeatures.ts +3 -0
  593. package/src/types/api/getOnekeyFeatures.ts +3 -0
  594. package/src/types/api/getPassphraseState.ts +10 -2
  595. package/src/types/api/index.ts +89 -2
  596. package/src/types/api/openWalletSession.ts +54 -0
  597. package/src/types/api/protocolV2.ts +244 -0
  598. package/src/types/api/searchDevices.ts +2 -2
  599. package/src/types/api/sessionCache.ts +14 -0
  600. package/src/types/device.ts +266 -5
  601. package/src/types/params.ts +11 -0
  602. package/src/types/settings.ts +54 -29
  603. package/src/utils/capabilitieUtils.ts +1 -2
  604. package/src/utils/deviceFeaturesCompat.ts +173 -0
  605. package/src/utils/deviceFeaturesUtils.ts +122 -84
  606. package/src/utils/deviceInfoUtils.ts +38 -87
  607. package/src/utils/deviceSettings.ts +48 -0
  608. package/src/utils/deviceVersionUtils.ts +25 -62
  609. package/src/utils/findDefectiveBatchDevice.ts +8 -8
  610. package/src/utils/homescreen.ts +10 -0
  611. package/src/utils/index.ts +4 -0
  612. package/src/utils/pro2Wallpaper.ts +109 -0
  613. package/src/utils/tracing.ts +3 -1
@@ -0,0 +1,193 @@
1
+ import {
2
+ PROTOCOL_V2_BLE_FILE_CHUNK_SIZE,
3
+ PROTOCOL_V2_WEBUSB_FILE_CHUNK_SIZE,
4
+ } from '@onekeyfe/hd-transport';
5
+ import { ERRORS, HardwareErrorCode } from '@onekeyfe/hd-shared';
6
+
7
+ import { DataManager } from '../../data-manager';
8
+
9
+ import type { DeviceCommands } from '../../device/DeviceCommands';
10
+
11
+ export type ProtocolV2FileWriteData = ArrayBuffer | Uint8Array | Blob | string;
12
+
13
+ export type ProtocolV2FileWriteProgress = {
14
+ progress: number;
15
+ transferredBytes: number;
16
+ totalBytes: number;
17
+ rateBytesPerSecond?: number;
18
+ elapsedMs: number;
19
+ };
20
+
21
+ export type ProtocolV2FileWriteOptions = {
22
+ commands: Pick<DeviceCommands, 'typedCall'>;
23
+ path: string;
24
+ data: ProtocolV2FileWriteData;
25
+ offset?: number;
26
+ totalSize?: number;
27
+ chunkSize?: number;
28
+ chunkLen?: number;
29
+ overwrite?: boolean;
30
+ append?: boolean;
31
+ uiPercentage?: number;
32
+ timeoutMs?: number;
33
+ maxChunkRetries?: number;
34
+ throwIfAborted?: () => void;
35
+ onProgress?: (progress: ProtocolV2FileWriteProgress) => void;
36
+ };
37
+
38
+ const MIN_FILE_CHUNK_SIZE = 64;
39
+
40
+ function isRetryableFileWriteTimeout(error: unknown) {
41
+ if (!error || typeof error !== 'object') return false;
42
+ const candidate = error as { errorCode?: number; code?: number; message?: string };
43
+ const code = candidate.errorCode ?? candidate.code;
44
+ return (
45
+ code === HardwareErrorCode.BleTimeoutError ||
46
+ /Lowlevel response timeout/i.test(candidate.message ?? '')
47
+ );
48
+ }
49
+
50
+ function getProtocolV2FileChunkLimit() {
51
+ const env = DataManager.getSettings('env');
52
+ return env && DataManager.isBleConnect(env)
53
+ ? PROTOCOL_V2_BLE_FILE_CHUNK_SIZE
54
+ : PROTOCOL_V2_WEBUSB_FILE_CHUNK_SIZE;
55
+ }
56
+
57
+ async function dataToUint8Array(data: ProtocolV2FileWriteData): Promise<Uint8Array> {
58
+ if (typeof data === 'string') return new TextEncoder().encode(data);
59
+ if (data instanceof ArrayBuffer) return new Uint8Array(data);
60
+ if (ArrayBuffer.isView(data)) {
61
+ return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
62
+ }
63
+ if (typeof Blob !== 'undefined' && data instanceof Blob) {
64
+ return new Uint8Array(await data.arrayBuffer());
65
+ }
66
+ throw ERRORS.TypedError(
67
+ HardwareErrorCode.CallMethodInvalidParameter,
68
+ 'Unsupported FilesystemFileWrite data'
69
+ );
70
+ }
71
+
72
+ function normalizeChunkSize(value: unknown, maxChunkSize: number): number {
73
+ const numeric = Number(value);
74
+ if (!Number.isFinite(numeric) || numeric <= 0) return maxChunkSize;
75
+ return Math.min(Math.max(Math.floor(numeric), MIN_FILE_CHUNK_SIZE), maxChunkSize);
76
+ }
77
+
78
+ function getDeviceTransferProgress(before: number, after: number, total: number) {
79
+ if (!Number.isFinite(total) || total <= 0) return 100;
80
+ if (before <= 0 && after < total) return 0;
81
+ if (after >= total) return 100;
82
+ return Math.min(Math.max(Math.ceil((after / total) * 100), 1), 99);
83
+ }
84
+
85
+ function getConfirmedProgress(processed: number, total: number, written: number, length: number) {
86
+ if (Number.isFinite(processed) && Number.isFinite(total) && total > 0) {
87
+ if (processed >= total) return 100;
88
+ return Math.min(Math.max(Math.floor((processed / total) * 100), 0), 99);
89
+ }
90
+ if (length > 0) return written >= length ? 100 : Math.floor((written / length) * 100);
91
+ return 100;
92
+ }
93
+
94
+ export async function writeProtocolV2File(options: ProtocolV2FileWriteOptions) {
95
+ options.throwIfAborted?.();
96
+ const data = await dataToUint8Array(options.data);
97
+ const dataLength = data.byteLength;
98
+ const startOffset =
99
+ Number.isFinite(options.offset) && Number(options.offset) > 0 ? Number(options.offset) : 0;
100
+ const totalSize =
101
+ Number.isFinite(options.totalSize) && Number(options.totalSize) > 0
102
+ ? Number(options.totalSize)
103
+ : startOffset + dataLength;
104
+
105
+ if (totalSize < startOffset + dataLength) {
106
+ throw ERRORS.TypedError(
107
+ HardwareErrorCode.RuntimeError,
108
+ `FilesystemFileWrite totalSize ${totalSize} is smaller than offset + data length ${
109
+ startOffset + dataLength
110
+ }`
111
+ );
112
+ }
113
+
114
+ const chunkSize = normalizeChunkSize(
115
+ options.chunkSize ?? options.chunkLen,
116
+ getProtocolV2FileChunkLimit()
117
+ );
118
+ let written = 0;
119
+ let chunks = 0;
120
+ let lastMessage: Record<string, unknown> | undefined;
121
+ const startTime = Date.now();
122
+
123
+ while (written < dataLength) {
124
+ options.throwIfAborted?.();
125
+ const chunk = data.slice(written, Math.min(written + chunkSize, dataLength));
126
+ const offset = startOffset + written;
127
+ const progress =
128
+ options.uiPercentage ??
129
+ getDeviceTransferProgress(offset, offset + chunk.byteLength, totalSize);
130
+ const request = {
131
+ file: { path: options.path, offset, total_size: totalSize, data: chunk },
132
+ overwrite: chunks === 0 ? options.overwrite ?? false : false,
133
+ append: options.append ?? false,
134
+ ui_percentage: progress,
135
+ };
136
+ const maxChunkRetries = Math.max(Math.floor(options.maxChunkRetries ?? 0), 0);
137
+ let retryCount = 0;
138
+ let response;
139
+ let isWritePending = true;
140
+ while (isWritePending) {
141
+ try {
142
+ response = await options.commands.typedCall(
143
+ 'FilesystemFileWrite',
144
+ 'FilesystemFile',
145
+ request,
146
+ { timeoutMs: options.timeoutMs }
147
+ );
148
+ isWritePending = false;
149
+ } catch (error) {
150
+ if (retryCount >= maxChunkRetries || !isRetryableFileWriteTimeout(error)) throw error;
151
+ retryCount += 1;
152
+ options.throwIfAborted?.();
153
+ }
154
+ }
155
+ options.throwIfAborted?.();
156
+ lastMessage = response.message;
157
+ const rawProcessedByte = response.message?.processed_byte;
158
+ const processedByte = Number(rawProcessedByte);
159
+ if (
160
+ rawProcessedByte !== undefined &&
161
+ (!Number.isFinite(processedByte) ||
162
+ processedByte <= offset ||
163
+ processedByte > offset + chunk.byteLength)
164
+ ) {
165
+ throw ERRORS.TypedError(
166
+ HardwareErrorCode.RuntimeError,
167
+ `FilesystemFileWrite invalid processed_byte ${processedByte}`
168
+ );
169
+ }
170
+ written =
171
+ rawProcessedByte === undefined ? written + chunk.byteLength : processedByte - startOffset;
172
+ chunks += 1;
173
+ const elapsedMs = Date.now() - startTime;
174
+ const transferredBytes = Math.min(written, dataLength);
175
+ options.onProgress?.({
176
+ progress: getConfirmedProgress(startOffset + written, totalSize, written, dataLength),
177
+ transferredBytes,
178
+ totalBytes: dataLength,
179
+ rateBytesPerSecond:
180
+ elapsedMs > 0 ? Math.round((transferredBytes / elapsedMs) * 1000) : undefined,
181
+ elapsedMs,
182
+ });
183
+ }
184
+
185
+ return {
186
+ ...lastMessage,
187
+ path: options.path,
188
+ offset: startOffset,
189
+ total_size: totalSize,
190
+ processed_byte: startOffset + written,
191
+ chunks,
192
+ };
193
+ }
package/src/api/index.ts CHANGED
@@ -3,9 +3,12 @@ export { default as preInitialize } from './device/PreInitialize';
3
3
 
4
4
  export { default as searchDevices } from './SearchDevices';
5
5
  export { default as getFeatures } from './GetFeatures';
6
+ export { default as getDeviceState } from './GetDeviceState';
6
7
  export { default as getOnekeyFeatures } from './GetOnekeyFeatures';
7
8
  export { default as getPassphraseState } from './GetPassphraseState';
9
+ export { default as openWalletSession } from './OpenWalletSession';
8
10
  export { default as getLogs } from './GetLogs';
11
+ export { default as clearSessionCache } from './ClearSessionCache';
9
12
  export { default as checkFirmwareRelease } from './CheckFirmwareRelease';
10
13
  export { default as checkBLEFirmwareRelease } from './CheckBLEFirmwareRelease';
11
14
  export { default as checkBridgeStatus } from './CheckBridgeStatus';
@@ -38,8 +41,37 @@ export { default as getNextU2FCounter } from './u2f/GetNextU2FCounter';
38
41
  export { default as firmwareUpdate } from './FirmwareUpdate';
39
42
  export { default as firmwareUpdateV2 } from './FirmwareUpdateV2';
40
43
  export { default as firmwareUpdateV3 } from './FirmwareUpdateV3';
44
+ export { default as firmwareUpdateV4 } from './FirmwareUpdateV4';
41
45
  export { default as promptWebDeviceAccess } from './PromptWebDeviceAccess';
42
46
 
47
+ // Pro2 business API
48
+ export { default as deviceReboot } from './protocol-v2/DeviceReboot';
49
+ export { default as deviceGetOnboardingStatus } from './protocol-v2/DeviceGetOnboardingStatus';
50
+ export { default as deviceUploadWallpaper } from './protocol-v2/DeviceUploadWallpaper';
51
+ // Protocol V2 development APIs. These remain public while Pro2 integration is in development.
52
+ export { default as deviceInfoGet } from './protocol-v2/DeviceInfoGet';
53
+ export { default as deviceStatusGet } from './protocol-v2/DeviceStatusGet';
54
+ export { default as deviceSettingsGet } from './protocol-v2/DeviceSettingsGet';
55
+ export { default as protocolInfoRequest } from './protocol-v2/ProtocolInfoRequest';
56
+ export { default as ping } from './protocol-v2/Ping';
57
+ export { default as deviceSessionOpen } from './protocol-v2/DeviceSessionOpen';
58
+ export { default as deviceFirmwareUpdate } from './protocol-v2/DeviceFirmwareUpdate';
59
+ export { default as deviceGetFirmwareUpdateStatus } from './protocol-v2/DeviceGetFirmwareUpdateStatus';
60
+ export { default as deviceFactoryInfoSet } from './protocol-v2/DeviceFactoryInfoSet';
61
+ export { default as deviceFactoryInfoGet } from './protocol-v2/DeviceFactoryInfoGet';
62
+ export { default as deviceSettingsSet } from './protocol-v2/DeviceSettingsSet';
63
+ export { default as deviceSettingsPageShow } from './protocol-v2/DeviceSettingsPageShow';
64
+ export { default as filesystemPermissionFix } from './protocol-v2/FilesystemPermissionFix';
65
+ export { default as filesystemFormat } from './protocol-v2/FilesystemFormat';
66
+ export { default as fileRead } from './FileRead';
67
+ export { default as fileWrite } from './FileWrite';
68
+ export { default as fileDelete } from './FileDelete';
69
+ export { default as dirList } from './DirList';
70
+ export { default as dirMake } from './DirMake';
71
+ export { default as dirRemove } from './DirRemove';
72
+ export { default as pathInfo } from './PathInfo';
73
+ export { default as uploadPortfolio } from './UploadPortfolio';
74
+
43
75
  export { default as cipherKeyValue } from './CipherKeyValue';
44
76
 
45
77
  export { default as allNetworkGetAddress } from './allnetwork/AllNetworkGetAddress';
@@ -198,15 +198,14 @@ export default class KaspaSignTransaction extends BaseMethod<KaspaSignTransactio
198
198
 
199
199
  const response = await typedCall(
200
200
  'KaspaTxInputAck',
201
- // @ts-expect-error
202
201
  ['KaspaTxInputRequest', 'KaspaSignedTx'],
203
202
  {
204
- address_n: input.path,
203
+ // Normalize params.inputs paths from either strings or parsed arrays to address_n.
204
+ address_n: validatePath(input.path, 3),
205
205
  raw_message: bytesToHex(rawMessage),
206
206
  }
207
207
  );
208
208
 
209
- // @ts-expect-error
210
209
  return this.processTxRequest(typedCall, response, nextIndex, signature);
211
210
  }
212
211
 
@@ -32,6 +32,10 @@ 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
+ },
35
39
  };
36
40
  }
37
41
 
@@ -5,6 +5,7 @@ import { UI_REQUEST } from '../../constants/ui-request';
5
5
 
6
6
  import type { NeoGetAddress as HardwareNeoGetAddress } from '@onekeyfe/hd-transport';
7
7
  import type { NeoAddress, NeoGetAddressParams } from '../../types/api/neoGetAddress';
8
+ import type { DeviceFirmwareRange } from '../../types';
8
9
 
9
10
  export default class NeoGetAddress extends BaseMethod<HardwareNeoGetAddress[]> {
10
11
  hasBundle = false;
@@ -37,8 +38,12 @@ export default class NeoGetAddress extends BaseMethod<HardwareNeoGetAddress[]> {
37
38
  });
38
39
  }
39
40
 
40
- getVersionRange() {
41
+ getVersionRange(): DeviceFirmwareRange {
41
42
  return {
43
+ pro2: {
44
+ min: '0.0.0',
45
+ unsupported: true,
46
+ },
42
47
  pro: {
43
48
  min: '4.12.0',
44
49
  },
@@ -5,6 +5,7 @@ import { validateParams } from '../helpers/paramsValidator';
5
5
  import { formatAnyHex } from '../helpers/hexUtils';
6
6
 
7
7
  import type { NeoSignTx } from '@onekeyfe/hd-transport';
8
+ import type { DeviceFirmwareRange } from '../../types';
8
9
 
9
10
  export default class NeoSignTransaction extends BaseMethod<NeoSignTx> {
10
11
  init() {
@@ -29,8 +30,12 @@ export default class NeoSignTransaction extends BaseMethod<NeoSignTx> {
29
30
  };
30
31
  }
31
32
 
32
- getVersionRange() {
33
+ getVersionRange(): DeviceFirmwareRange {
33
34
  return {
35
+ pro2: {
36
+ min: '0.0.0',
37
+ unsupported: true,
38
+ },
34
39
  pro: {
35
40
  min: '4.12.0',
36
41
  },
@@ -4,7 +4,7 @@ import { BaseMethod } from '../BaseMethod';
4
4
  import { validateParams, validateResult } from '../helpers/paramsValidator';
5
5
 
6
6
  import type { NervosGetAddress as HardwareNervosGetAddress } from '@onekeyfe/hd-transport';
7
- import type { NervosAddress, NervosGetAddressParams } from '../../types';
7
+ import type { DeviceFirmwareRange, NervosAddress, NervosGetAddressParams } from '../../types';
8
8
 
9
9
  export default class NervosGetAddress extends BaseMethod<HardwareNervosGetAddress[]> {
10
10
  hasBundle = false;
@@ -40,8 +40,12 @@ export default class NervosGetAddress extends BaseMethod<HardwareNervosGetAddres
40
40
  });
41
41
  }
42
42
 
43
- getVersionRange() {
43
+ getVersionRange(): DeviceFirmwareRange {
44
44
  return {
45
+ pro2: {
46
+ min: '0.0.0',
47
+ unsupported: true,
48
+ },
45
49
  model_mini: {
46
50
  min: '3.7.0',
47
51
  },
@@ -5,8 +5,12 @@ import { BaseMethod } from '../BaseMethod';
5
5
  import { validateParams } from '../helpers/paramsValidator';
6
6
  import { formatAnyHex } from '../helpers/hexUtils';
7
7
 
8
- import type { NervosSignTransactionParams, NervosSignedTx } from '../../types';
9
- import type { NervosSignTx as HardwareNervosSignTx, TypedCall } from '@onekeyfe/hd-transport';
8
+ import type { DeviceFirmwareRange, NervosSignTransactionParams, NervosSignedTx } from '../../types';
9
+ import type {
10
+ NervosSignTx as HardwareNervosSignTx,
11
+ NervosTxRequest,
12
+ TypedCall,
13
+ } from '@onekeyfe/hd-transport';
10
14
  import type { TypedResponseMessage } from '../../device/DeviceCommands';
11
15
 
12
16
  type NervosSignTx = Omit<HardwareNervosSignTx, 'data_initial_chunk' | 'data_length'> & {
@@ -41,8 +45,12 @@ export default class NervosSignTransaction extends BaseMethod<NervosSignTx> {
41
45
  };
42
46
  }
43
47
 
44
- getVersionRange() {
48
+ getVersionRange(): DeviceFirmwareRange {
45
49
  return {
50
+ pro2: {
51
+ min: '0.0.0',
52
+ unsupported: true,
53
+ },
46
54
  model_mini: {
47
55
  min: '3.7.0',
48
56
  },
@@ -59,7 +67,9 @@ export default class NervosSignTransaction extends BaseMethod<NervosSignTx> {
59
67
  res: TypedResponseMessage<'NervosSignedTx'> | TypedResponseMessage<'NervosTxRequest'>,
60
68
  data: Buffer,
61
69
  offset = 0
62
- ): Promise<NervosSignedTx> => {
70
+ // The final NervosTxRequest may return a signature without data_length or address,
71
+ // so the result accurately uses a union type.
72
+ ): Promise<NervosSignedTx | (NervosTxRequest & { path: string })> => {
63
73
  if (res.type === 'NervosSignedTx') {
64
74
  if (!res?.message?.signature) {
65
75
  throw new Error('No signature returned');
@@ -4,7 +4,7 @@ import { BaseMethod } from '../BaseMethod';
4
4
  import { validateParams, validateResult } from '../helpers/paramsValidator';
5
5
 
6
6
  import type { NexaGetAddress as HardwareNexaGetAddress } from '@onekeyfe/hd-transport';
7
- import type { NexaGetAddressParams } from '../../types';
7
+ import type { DeviceFirmwareRange, NexaGetAddressParams } from '../../types';
8
8
 
9
9
  export default class NexaGetAddress extends BaseMethod<HardwareNexaGetAddress[]> {
10
10
  hasBundle = false;
@@ -43,8 +43,12 @@ export default class NexaGetAddress extends BaseMethod<HardwareNexaGetAddress[]>
43
43
  });
44
44
  }
45
45
 
46
- getVersionRange() {
46
+ getVersionRange(): DeviceFirmwareRange {
47
47
  return {
48
+ pro2: {
49
+ min: '0.0.0',
50
+ unsupported: true,
51
+ },
48
52
  model_mini: {
49
53
  min: '3.2.0',
50
54
  },
@@ -6,7 +6,7 @@ import { validateParams } from '../helpers/paramsValidator';
6
6
 
7
7
  import type { TypedResponseMessage } from '../../device/DeviceCommands';
8
8
  import type { TypedCall } from '@onekeyfe/hd-transport';
9
- import type { NexaSignTransactionParams, NexaSignature } from '../../types';
9
+ import type { DeviceFirmwareRange, NexaSignTransactionParams, NexaSignature } from '../../types';
10
10
 
11
11
  export default class NexaSignTransaction extends BaseMethod<NexaSignTransactionParams> {
12
12
  hasBundle = false;
@@ -27,8 +27,12 @@ export default class NexaSignTransaction extends BaseMethod<NexaSignTransactionP
27
27
  this.params = payload;
28
28
  }
29
29
 
30
- getVersionRange() {
30
+ getVersionRange(): DeviceFirmwareRange {
31
31
  return {
32
+ pro2: {
33
+ min: '0.0.0',
34
+ unsupported: true,
35
+ },
32
36
  model_mini: {
33
37
  min: '3.2.0',
34
38
  },
@@ -68,17 +72,12 @@ export default class NexaSignTransaction extends BaseMethod<NexaSignTransactionP
68
72
 
69
73
  const nextIndex = res.message.request_index;
70
74
  const input = this.params.inputs[nextIndex];
71
- const response = await typedCall(
72
- 'NexaTxInputAck',
73
- // @ts-expect-error
74
- ['NexaTxInputRequest', 'NexaSignedTx'],
75
- {
76
- address_n: input.path,
77
- raw_message: input.message,
78
- }
79
- );
75
+ const response = await typedCall('NexaTxInputAck', ['NexaTxInputRequest', 'NexaSignedTx'], {
76
+ // Normalize a string path to address_n, matching the first input handled by run().
77
+ address_n: validatePath(input.path, 3),
78
+ raw_message: input.message,
79
+ });
80
80
 
81
- // @ts-expect-error
82
81
  return this.processTxRequest(typedCall, response, nextIndex, signatures);
83
82
  }
84
83
 
@@ -23,6 +23,9 @@ const baseVersionRange = {
23
23
  model_touch: {
24
24
  min: '4.3.0',
25
25
  },
26
+ pro2: {
27
+ min: '0.0.0',
28
+ },
26
29
  };
27
30
 
28
31
  const specialVersionRange: Record<string, DeviceFirmwareRange> = {
@@ -33,6 +36,9 @@ const specialVersionRange: Record<string, DeviceFirmwareRange> = {
33
36
  model_touch: {
34
37
  min: '4.7.0',
35
38
  },
39
+ pro2: {
40
+ min: '0.0.0',
41
+ },
36
42
  },
37
43
  [Networks.Manta]: {
38
44
  model_mini: {
@@ -41,6 +47,9 @@ const specialVersionRange: Record<string, DeviceFirmwareRange> = {
41
47
  model_touch: {
42
48
  min: '4.9.0',
43
49
  },
50
+ pro2: {
51
+ min: '0.0.0',
52
+ },
44
53
  },
45
54
  };
46
55
 
@@ -0,0 +1,20 @@
1
+ import { BaseMethod } from '../BaseMethod';
2
+
3
+ export default class DeviceFactoryInfoGet extends BaseMethod {
4
+ init() {
5
+ // Protocol V2 (Pro2) only; Core rejects non-V2 devices.
6
+ this.requireProtocolV2 = true;
7
+ this.skipForceUpdateCheck = true;
8
+ this.useDevicePassphraseState = false;
9
+ this.params = undefined;
10
+ }
11
+
12
+ async run() {
13
+ const res = await this.device.commands.typedCall(
14
+ 'DeviceFactoryInfoGet',
15
+ 'DeviceFactoryInfo',
16
+ {}
17
+ );
18
+ return Promise.resolve(res.message);
19
+ }
20
+ }
@@ -0,0 +1,32 @@
1
+ import { BaseMethod } from '../BaseMethod';
2
+
3
+ import type { DeviceFactoryInfoSetParams } from './helpers';
4
+
5
+ export default class DeviceFactoryInfoSet extends BaseMethod<DeviceFactoryInfoSetParams> {
6
+ init() {
7
+ // Protocol V2 (Pro2) only; Core rejects non-V2 devices.
8
+ this.requireProtocolV2 = true;
9
+ this.skipForceUpdateCheck = true;
10
+ this.useDevicePassphraseState = false;
11
+ this.params = {
12
+ version: this.payload.version,
13
+ serial_number: this.payload.serial_number,
14
+ burn_in_completed: this.payload.burn_in_completed,
15
+ factory_test_completed: this.payload.factory_test_completed,
16
+ manufacture_time: this.payload.manufacture_time,
17
+ };
18
+ }
19
+
20
+ async run() {
21
+ const res = await this.device.commands.typedCall('DeviceFactoryInfoSet', 'Success', {
22
+ info: {
23
+ version: this.params.version,
24
+ serial_number: this.params.serial_number,
25
+ burn_in_completed: this.params.burn_in_completed,
26
+ factory_test_completed: this.params.factory_test_completed,
27
+ manufacture_time: this.params.manufacture_time,
28
+ },
29
+ });
30
+ return Promise.resolve(res.message);
31
+ }
32
+ }
@@ -0,0 +1,61 @@
1
+ import { BaseMethod } from '../BaseMethod';
2
+ import {
3
+ PROTOCOL_V2_FIRMWARE_UPDATE_OPTIONS,
4
+ PROTOCOL_V2_FIRMWARE_UPDATE_RESPONSE_TYPES,
5
+ isProtocolV2DeviceDisconnectedError,
6
+ normalizeFirmwareTargets,
7
+ } from './helpers';
8
+ import { UI_REQUEST, createUiMessage } from '../../events/ui-request';
9
+
10
+ import type { KnownDevice } from '../../types';
11
+ import type { MessageFromOneKey } from '@onekeyfe/hd-transport';
12
+ import type { DeviceFirmwareUpdateParams } from './helpers';
13
+
14
+ export default class DeviceFirmwareUpdate extends BaseMethod<DeviceFirmwareUpdateParams> {
15
+ init() {
16
+ // Protocol V2 (Pro2) only; Core rejects non-V2 devices.
17
+ this.requireProtocolV2 = true;
18
+ this.skipForceUpdateCheck = true;
19
+ this.useDevicePassphraseState = false;
20
+ this.params = {
21
+ targets: this.payload.targets,
22
+ targetId: this.payload.targetId,
23
+ target_id: this.payload.target_id,
24
+ path: this.payload.path,
25
+ };
26
+ }
27
+
28
+ async run() {
29
+ const targets = normalizeFirmwareTargets(this.params);
30
+ try {
31
+ const res = await this.device.commands.typedCall(
32
+ 'DeviceFirmwareUpdateRequest',
33
+ PROTOCOL_V2_FIRMWARE_UPDATE_RESPONSE_TYPES,
34
+ {
35
+ targets,
36
+ },
37
+ {
38
+ ...PROTOCOL_V2_FIRMWARE_UPDATE_OPTIONS,
39
+ onIntermediateResponse: (response: MessageFromOneKey) => {
40
+ if (response.type !== 'DeviceFirmwareUpdateStatus') return;
41
+ this.postMessage(
42
+ createUiMessage(UI_REQUEST.FIRMWARE_PROGRESS, {
43
+ device: this.device.toMessageObject() as KnownDevice,
44
+ progress: 99,
45
+ progressType: 'installingFirmware',
46
+ })
47
+ );
48
+ },
49
+ }
50
+ );
51
+ return res.message;
52
+ } catch (error) {
53
+ if (isProtocolV2DeviceDisconnectedError(error)) {
54
+ return {
55
+ message: 'Device firmware update started',
56
+ };
57
+ }
58
+ throw error;
59
+ }
60
+ }
61
+ }
@@ -0,0 +1,55 @@
1
+ import { BaseMethod } from '../BaseMethod';
2
+ import { invalidParameter } from '../helpers/filesystemValidation';
3
+
4
+ import type { DeviceFirmwareUpdateStatusGetParams } from './helpers';
5
+ import type { DeviceFirmwareUpdateRecordFields } from '@onekeyfe/hd-transport';
6
+
7
+ const DEVICE_FIRMWARE_UPDATE_STATUS_FIELDS = ['status', 'payload_version', 'path'] as const;
8
+
9
+ function normalizeStatusFields(
10
+ fields: DeviceFirmwareUpdateStatusGetParams['fields']
11
+ ): DeviceFirmwareUpdateRecordFields | undefined {
12
+ if (fields === undefined || fields === null) return undefined;
13
+ if (typeof fields !== 'object' || Array.isArray(fields)) {
14
+ throw invalidParameter('Parameter [fields] must be an object.');
15
+ }
16
+
17
+ const unknownField = Object.keys(fields).find(
18
+ field => !DEVICE_FIRMWARE_UPDATE_STATUS_FIELDS.includes(field as any)
19
+ );
20
+ if (unknownField) {
21
+ throw invalidParameter(`Unsupported firmware update status field: ${unknownField}`);
22
+ }
23
+
24
+ const normalized: DeviceFirmwareUpdateRecordFields = {};
25
+ for (const field of DEVICE_FIRMWARE_UPDATE_STATUS_FIELDS) {
26
+ const value = fields[field];
27
+ if (value !== undefined) {
28
+ if (typeof value !== 'boolean') {
29
+ throw invalidParameter(`Parameter [fields.${field}] must be a boolean.`);
30
+ }
31
+ normalized[field] = value;
32
+ }
33
+ }
34
+ return normalized;
35
+ }
36
+
37
+ export default class DeviceGetFirmwareUpdateStatus extends BaseMethod<DeviceFirmwareUpdateStatusGetParams> {
38
+ init() {
39
+ // Protocol V2 (Pro2) only; Core rejects non-V2 devices.
40
+ this.requireProtocolV2 = true;
41
+ this.skipForceUpdateCheck = true;
42
+ this.useDevicePassphraseState = false;
43
+ const fields = normalizeStatusFields(this.payload.fields);
44
+ this.params = fields ? { fields } : {};
45
+ }
46
+
47
+ async run() {
48
+ const res = await this.device.commands.typedCall(
49
+ 'DeviceFirmwareUpdateStatusGet',
50
+ 'DeviceFirmwareUpdateStatus',
51
+ this.params
52
+ );
53
+ return Promise.resolve(res.message);
54
+ }
55
+ }
@@ -0,0 +1,18 @@
1
+ import { BaseMethod } from '../BaseMethod';
2
+
3
+ export default class DeviceGetOnboardingStatus extends BaseMethod {
4
+ init() {
5
+ this.requireProtocolV2 = true;
6
+ this.skipForceUpdateCheck = true;
7
+ this.useDevicePassphraseState = false;
8
+ }
9
+
10
+ async run() {
11
+ const { message } = await this.device.commands.typedCall(
12
+ 'DevGetOnboardingStatus',
13
+ 'DevOnboardingStatus',
14
+ {}
15
+ );
16
+ return message;
17
+ }
18
+ }