@onekeyfe/hd-core 1.2.0-alpha.2 → 1.2.0-alpha.20

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 (434) hide show
  1. package/__tests__/AllNetworkGetAddressBase.tracing.test.ts +75 -0
  2. package/__tests__/DeviceCommands.test.ts +285 -0
  3. package/__tests__/DeviceEventRegistration.test.ts +43 -0
  4. package/__tests__/RequestQueue.test.ts +140 -0
  5. package/__tests__/UploadPortfolio.test.ts +46 -0
  6. package/__tests__/connectSettings.test.ts +19 -0
  7. package/__tests__/core-dispose.test.ts +34 -0
  8. package/__tests__/core-error-output.test.ts +39 -0
  9. package/__tests__/device-features-state.test.ts +78 -0
  10. package/__tests__/device-identity.test.ts +30 -0
  11. package/__tests__/device-lifecycle-events.test.ts +117 -0
  12. package/__tests__/device-pool-state.test.ts +132 -0
  13. package/__tests__/device-settings.test.ts +286 -0
  14. package/__tests__/device-state-contract.test.ts +27 -0
  15. package/__tests__/device-state-events.test.ts +162 -0
  16. package/__tests__/device-state-mapper.test.ts +229 -0
  17. package/__tests__/device-state-projector.test.ts +94 -0
  18. package/__tests__/device-state-store.test.ts +82 -0
  19. package/__tests__/device-utils.test.ts +106 -0
  20. package/__tests__/device-wallet-session-store.test.ts +213 -0
  21. package/__tests__/deviceFeaturesUtils.test.ts +39 -0
  22. package/__tests__/deviceSettings.test.ts +63 -0
  23. package/__tests__/evmLedgerLegacySafety.test.ts +4 -1
  24. package/__tests__/evmSignTypedData.test.ts +80 -0
  25. package/__tests__/filesystemValidation.test.ts +53 -0
  26. package/__tests__/firmware-update/firmware-update-v2-download-before-boot.test.ts +402 -0
  27. package/__tests__/get-device-state.test.ts +403 -0
  28. package/__tests__/homescreen.test.ts +24 -0
  29. package/__tests__/kaspaSignTransaction.test.ts +591 -0
  30. package/__tests__/logBlockEvent.test.ts +26 -0
  31. package/__tests__/networkUtils.test.ts +386 -0
  32. package/__tests__/open-wallet-session-error-response.test.ts +43 -0
  33. package/__tests__/open-wallet-session.test.ts +559 -0
  34. package/__tests__/preInitialize.test.ts +33 -0
  35. package/__tests__/pro2Wallpaper.test.ts +50 -0
  36. package/__tests__/protocol-v2-bootloader-mode.test.ts +37 -0
  37. package/__tests__/protocol-v2-firmware-targets.test.ts +19 -0
  38. package/__tests__/protocol-v2.test.ts +4054 -1178
  39. package/__tests__/protocolV2FileWrite.test.ts +92 -0
  40. package/__tests__/protocolV2UiInteraction.test.ts +266 -0
  41. package/__tests__/public-device-state-api.test.ts +253 -0
  42. package/__tests__/public-pro2-api-boundary.test.ts +91 -0
  43. package/__tests__/refresh-device-state.test.ts +101 -0
  44. package/__tests__/request-context-logging.test.ts +16 -0
  45. package/__tests__/search-devices.test.ts +136 -0
  46. package/dist/api/BaseMethod.d.ts +11 -0
  47. package/dist/api/BaseMethod.d.ts.map +1 -1
  48. package/dist/api/CheckBootloaderRelease.d.ts.map +1 -1
  49. package/dist/api/CheckFirmwareRelease.d.ts.map +1 -1
  50. package/dist/api/ClearSessionCache.d.ts +9 -0
  51. package/dist/api/ClearSessionCache.d.ts.map +1 -0
  52. package/dist/api/DirList.d.ts.map +1 -1
  53. package/dist/api/FileRead.d.ts.map +1 -1
  54. package/dist/api/FileWrite.d.ts +1 -0
  55. package/dist/api/FileWrite.d.ts.map +1 -1
  56. package/dist/api/FirmwareUpdateV2.d.ts +2 -2
  57. package/dist/api/FirmwareUpdateV2.d.ts.map +1 -1
  58. package/dist/api/FirmwareUpdateV3.d.ts.map +1 -1
  59. package/dist/api/FirmwareUpdateV4.d.ts +25 -5
  60. package/dist/api/FirmwareUpdateV4.d.ts.map +1 -1
  61. package/dist/api/GetDeviceState.d.ts +7 -0
  62. package/dist/api/GetDeviceState.d.ts.map +1 -0
  63. package/dist/api/GetFeatures.d.ts +1 -1
  64. package/dist/api/GetFeatures.d.ts.map +1 -1
  65. package/dist/api/GetOnekeyFeatures.d.ts.map +1 -1
  66. package/dist/api/GetPassphraseState.d.ts +1 -6
  67. package/dist/api/GetPassphraseState.d.ts.map +1 -1
  68. package/dist/api/OpenWalletSession.d.ts +14 -0
  69. package/dist/api/OpenWalletSession.d.ts.map +1 -0
  70. package/dist/api/PathInfo.d.ts.map +1 -1
  71. package/dist/api/PromptWebDeviceAccess.d.ts.map +1 -1
  72. package/dist/api/SearchDevices.d.ts +3 -0
  73. package/dist/api/SearchDevices.d.ts.map +1 -1
  74. package/dist/api/UploadPortfolio.d.ts +18 -0
  75. package/dist/api/UploadPortfolio.d.ts.map +1 -0
  76. package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts.map +1 -1
  77. package/dist/api/device/DeviceCancel.d.ts.map +1 -1
  78. package/dist/api/device/DeviceChangePin.d.ts.map +1 -1
  79. package/dist/api/device/DeviceFullyUploadResource.d.ts +1 -2
  80. package/dist/api/device/DeviceFullyUploadResource.d.ts.map +1 -1
  81. package/dist/api/device/DeviceLock.d.ts.map +1 -1
  82. package/dist/api/device/DeviceRebootToBoardloader.d.ts.map +1 -1
  83. package/dist/api/device/DeviceRebootToBootloader.d.ts.map +1 -1
  84. package/dist/api/device/DeviceSettings.d.ts.map +1 -1
  85. package/dist/api/device/DeviceUnlock.d.ts.map +1 -1
  86. package/dist/api/device/DeviceUpdateBootloader.d.ts.map +1 -1
  87. package/dist/api/device/DeviceWipe.d.ts.map +1 -1
  88. package/dist/api/evm/EVMSignTypedData.d.ts.map +1 -1
  89. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts +1 -0
  90. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts.map +1 -1
  91. package/dist/api/firmware/getBinary.d.ts +11 -3
  92. package/dist/api/firmware/getBinary.d.ts.map +1 -1
  93. package/dist/api/firmware/progressThrottle.d.ts +3 -0
  94. package/dist/api/firmware/progressThrottle.d.ts.map +1 -0
  95. package/dist/api/helpers/filesystemValidation.d.ts +3 -0
  96. package/dist/api/helpers/filesystemValidation.d.ts.map +1 -1
  97. package/dist/api/helpers/paramsValidator.d.ts +1 -0
  98. package/dist/api/helpers/paramsValidator.d.ts.map +1 -1
  99. package/dist/api/helpers/protocolV2FileWrite.d.ts +33 -0
  100. package/dist/api/helpers/protocolV2FileWrite.d.ts.map +1 -0
  101. package/dist/api/index.d.ts +15 -19
  102. package/dist/api/index.d.ts.map +1 -1
  103. package/dist/api/kaspa/KaspaSignTransaction.d.ts +5 -1
  104. package/dist/api/kaspa/KaspaSignTransaction.d.ts.map +1 -1
  105. package/dist/api/kaspa/helpers/TransferSerialize.d.ts.map +1 -1
  106. package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts +6 -0
  107. package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts.map +1 -0
  108. package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts +7 -0
  109. package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts.map +1 -0
  110. package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts +1 -1
  111. package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts.map +1 -1
  112. package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts +3 -2
  113. package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts.map +1 -1
  114. package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts +1 -1
  115. package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts.map +1 -1
  116. package/dist/api/protocol-v2/DeviceInfoGet.d.ts +28 -0
  117. package/dist/api/protocol-v2/DeviceInfoGet.d.ts.map +1 -0
  118. package/dist/api/protocol-v2/DeviceReboot.d.ts.map +1 -1
  119. package/dist/api/protocol-v2/DeviceSettingsGet.d.ts +6 -0
  120. package/dist/api/protocol-v2/DeviceSettingsGet.d.ts.map +1 -0
  121. package/dist/api/protocol-v2/DeviceSettingsPageShow.d.ts +16 -0
  122. package/dist/api/protocol-v2/DeviceSettingsPageShow.d.ts.map +1 -0
  123. package/dist/api/protocol-v2/DeviceSettingsSet.d.ts +12 -0
  124. package/dist/api/protocol-v2/DeviceSettingsSet.d.ts.map +1 -0
  125. package/dist/api/protocol-v2/DeviceStatusGet.d.ts +6 -0
  126. package/dist/api/protocol-v2/DeviceStatusGet.d.ts.map +1 -0
  127. package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts +26 -0
  128. package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts.map +1 -0
  129. package/dist/api/protocol-v2/FilesystemFormat.d.ts.map +1 -1
  130. package/dist/api/protocol-v2/{FilesystemFixPermission.d.ts → FilesystemPermissionFix.d.ts} +2 -2
  131. package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts.map +1 -0
  132. package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts +6 -0
  133. package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts.map +1 -0
  134. package/dist/api/protocol-v2/helpers.d.ts +27 -19
  135. package/dist/api/protocol-v2/helpers.d.ts.map +1 -1
  136. package/dist/api/ton/TonSignData.d.ts +1 -5
  137. package/dist/api/ton/TonSignData.d.ts.map +1 -1
  138. package/dist/api/utils.d.ts +2 -1
  139. package/dist/api/utils.d.ts.map +1 -1
  140. package/dist/constants/index.d.ts +2 -1
  141. package/dist/constants/index.d.ts.map +1 -1
  142. package/dist/core/RequestQueue.d.ts +19 -1
  143. package/dist/core/RequestQueue.d.ts.map +1 -1
  144. package/dist/core/deviceEventRegistration.d.ts +11 -0
  145. package/dist/core/deviceEventRegistration.d.ts.map +1 -0
  146. package/dist/core/index.d.ts +4 -1
  147. package/dist/core/index.d.ts.map +1 -1
  148. package/dist/data-manager/DataManager.d.ts +1 -1
  149. package/dist/data-manager/DataManager.d.ts.map +1 -1
  150. package/dist/data-manager/connectSettings.d.ts.map +1 -1
  151. package/dist/device/Device.d.ts +34 -10
  152. package/dist/device/Device.d.ts.map +1 -1
  153. package/dist/device/DeviceCommands.d.ts +8 -6
  154. package/dist/device/DeviceCommands.d.ts.map +1 -1
  155. package/dist/device/DeviceFeaturesState.d.ts +4 -0
  156. package/dist/device/DeviceFeaturesState.d.ts.map +1 -0
  157. package/dist/device/DevicePool.d.ts +4 -2
  158. package/dist/device/DevicePool.d.ts.map +1 -1
  159. package/dist/device/DeviceStateMapper.d.ts +13 -0
  160. package/dist/device/DeviceStateMapper.d.ts.map +1 -0
  161. package/dist/device/DeviceStateProjector.d.ts +7 -0
  162. package/dist/device/DeviceStateProjector.d.ts.map +1 -0
  163. package/dist/device/DeviceStateStore.d.ts +21 -0
  164. package/dist/device/DeviceStateStore.d.ts.map +1 -0
  165. package/dist/device/DeviceWalletSessionStore.d.ts +20 -0
  166. package/dist/device/DeviceWalletSessionStore.d.ts.map +1 -0
  167. package/dist/device/cloneDeviceState.d.ts +2 -0
  168. package/dist/device/cloneDeviceState.d.ts.map +1 -0
  169. package/dist/device/deviceIdentity.d.ts +5 -0
  170. package/dist/device/deviceIdentity.d.ts.map +1 -0
  171. package/dist/deviceProfile/buildDeviceFeatures.d.ts +9 -3
  172. package/dist/deviceProfile/buildDeviceFeatures.d.ts.map +1 -1
  173. package/dist/deviceProfile/index.d.ts +0 -1
  174. package/dist/deviceProfile/index.d.ts.map +1 -1
  175. package/dist/events/call.d.ts +7 -0
  176. package/dist/events/call.d.ts.map +1 -1
  177. package/dist/events/core.d.ts +2 -2
  178. package/dist/events/core.d.ts.map +1 -1
  179. package/dist/events/device.d.ts +11 -2
  180. package/dist/events/device.d.ts.map +1 -1
  181. package/dist/events/iframe.d.ts +1 -0
  182. package/dist/events/iframe.d.ts.map +1 -1
  183. package/dist/events/logBlockEvent.d.ts.map +1 -1
  184. package/dist/events/ui-request.d.ts +18 -2
  185. package/dist/events/ui-request.d.ts.map +1 -1
  186. package/dist/index.d.ts +1351 -603
  187. package/dist/index.d.ts.map +1 -1
  188. package/dist/index.js +5995 -2816
  189. package/dist/inject.d.ts +3 -2
  190. package/dist/inject.d.ts.map +1 -1
  191. package/dist/lowLevelInject.d.ts +2 -1
  192. package/dist/lowLevelInject.d.ts.map +1 -1
  193. package/dist/protocols/protocol-v2/deviceSession.d.ts +7 -0
  194. package/dist/protocols/protocol-v2/deviceSession.d.ts.map +1 -0
  195. package/dist/protocols/protocol-v2/features.d.ts +23 -28
  196. package/dist/protocols/protocol-v2/features.d.ts.map +1 -1
  197. package/dist/protocols/protocol-v2/firmware.d.ts +11 -9
  198. package/dist/protocols/protocol-v2/firmware.d.ts.map +1 -1
  199. package/dist/protocols/protocol-v2/index.d.ts +3 -2
  200. package/dist/protocols/protocol-v2/index.d.ts.map +1 -1
  201. package/dist/protocols/protocol-v2/lockedError.d.ts +2 -0
  202. package/dist/protocols/protocol-v2/lockedError.d.ts.map +1 -0
  203. package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts +16 -0
  204. package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts.map +1 -0
  205. package/dist/protocols/protocol-v2/uiInteraction.d.ts +39 -0
  206. package/dist/protocols/protocol-v2/uiInteraction.d.ts.map +1 -0
  207. package/dist/protocols/protocol-v2/unlockRetry.d.ts +11 -0
  208. package/dist/protocols/protocol-v2/unlockRetry.d.ts.map +1 -0
  209. package/dist/protocols/protocol-v2/walletSession.d.ts +19 -0
  210. package/dist/protocols/protocol-v2/walletSession.d.ts.map +1 -0
  211. package/dist/topLevelInject.d.ts.map +1 -1
  212. package/dist/types/api/checkAllFirmwareRelease.d.ts +1 -2
  213. package/dist/types/api/checkAllFirmwareRelease.d.ts.map +1 -1
  214. package/dist/types/api/deviceSettings.d.ts +9 -0
  215. package/dist/types/api/deviceSettings.d.ts.map +1 -1
  216. package/dist/types/api/deviceUnlock.d.ts +1 -1
  217. package/dist/types/api/deviceUnlock.d.ts.map +1 -1
  218. package/dist/types/api/firmwareUpdate.d.ts +6 -6
  219. package/dist/types/api/firmwareUpdate.d.ts.map +1 -1
  220. package/dist/types/api/getDeviceState.d.ts +12 -0
  221. package/dist/types/api/getDeviceState.d.ts.map +1 -0
  222. package/dist/types/api/getFeatures.d.ts.map +1 -1
  223. package/dist/types/api/getOnekeyFeatures.d.ts.map +1 -1
  224. package/dist/types/api/getPassphraseState.d.ts +2 -10
  225. package/dist/types/api/getPassphraseState.d.ts.map +1 -1
  226. package/dist/types/api/index.d.ts +26 -25
  227. package/dist/types/api/index.d.ts.map +1 -1
  228. package/dist/types/api/kaspaSignTransaction.d.ts +27 -2
  229. package/dist/types/api/kaspaSignTransaction.d.ts.map +1 -1
  230. package/dist/types/api/openWalletSession.d.ts +41 -0
  231. package/dist/types/api/openWalletSession.d.ts.map +1 -0
  232. package/dist/types/api/protocolV2.d.ts +31 -28
  233. package/dist/types/api/protocolV2.d.ts.map +1 -1
  234. package/dist/types/api/sessionCache.d.ts +10 -0
  235. package/dist/types/api/sessionCache.d.ts.map +1 -0
  236. package/dist/types/device.d.ts +120 -4
  237. package/dist/types/device.d.ts.map +1 -1
  238. package/dist/types/params.d.ts +1 -0
  239. package/dist/types/params.d.ts.map +1 -1
  240. package/dist/types/settings.d.ts +21 -1
  241. package/dist/types/settings.d.ts.map +1 -1
  242. package/dist/utils/assets.d.ts +2 -1
  243. package/dist/utils/assets.d.ts.map +1 -1
  244. package/dist/utils/deviceFeaturesCompat.d.ts +13 -0
  245. package/dist/utils/deviceFeaturesCompat.d.ts.map +1 -0
  246. package/dist/utils/deviceFeaturesUtils.d.ts +13 -3
  247. package/dist/utils/deviceFeaturesUtils.d.ts.map +1 -1
  248. package/dist/utils/deviceInfoUtils.d.ts +9 -8
  249. package/dist/utils/deviceInfoUtils.d.ts.map +1 -1
  250. package/dist/utils/deviceSettings.d.ts +2 -0
  251. package/dist/utils/deviceSettings.d.ts.map +1 -1
  252. package/dist/utils/deviceVersionUtils.d.ts +6 -5
  253. package/dist/utils/deviceVersionUtils.d.ts.map +1 -1
  254. package/dist/utils/homescreen.d.ts.map +1 -1
  255. package/dist/utils/index.d.ts +3 -1
  256. package/dist/utils/index.d.ts.map +1 -1
  257. package/dist/utils/networkUtils.d.ts +9 -1
  258. package/dist/utils/networkUtils.d.ts.map +1 -1
  259. package/dist/utils/patch.d.ts +1 -1
  260. package/dist/utils/patch.d.ts.map +1 -1
  261. package/dist/utils/pro2Wallpaper.d.ts +12 -0
  262. package/dist/utils/pro2Wallpaper.d.ts.map +1 -0
  263. package/dist/utils/tracing.d.ts.map +1 -1
  264. package/package.json +4 -4
  265. package/src/api/BaseMethod.ts +40 -7
  266. package/src/api/CheckBootloaderRelease.ts +1 -2
  267. package/src/api/CheckFirmwareRelease.ts +1 -2
  268. package/src/api/ClearSessionCache.ts +28 -0
  269. package/src/api/DirList.ts +5 -3
  270. package/src/api/DirMake.ts +3 -3
  271. package/src/api/DirRemove.ts +3 -3
  272. package/src/api/FileDelete.ts +3 -3
  273. package/src/api/FileRead.ts +23 -7
  274. package/src/api/FileWrite.ts +23 -168
  275. package/src/api/FirmwareUpdate.ts +4 -4
  276. package/src/api/FirmwareUpdateV2.ts +133 -45
  277. package/src/api/FirmwareUpdateV3.ts +3 -5
  278. package/src/api/FirmwareUpdateV4.ts +1138 -357
  279. package/src/api/GetDeviceState.ts +55 -0
  280. package/src/api/GetFeatures.ts +8 -3
  281. package/src/api/GetOnekeyFeatures.ts +3 -72
  282. package/src/api/GetPassphraseState.ts +11 -18
  283. package/src/api/OpenWalletSession.ts +221 -0
  284. package/src/api/PathInfo.ts +5 -3
  285. package/src/api/PromptWebDeviceAccess.ts +2 -3
  286. package/src/api/SearchDevices.ts +29 -4
  287. package/src/api/UploadPortfolio.ts +50 -0
  288. package/src/api/alephium/AlephiumSignTransaction.ts +2 -2
  289. package/src/api/allnetwork/AllNetworkGetAddressBase.ts +4 -8
  290. package/src/api/benfen/BenfenGetAddress.ts +1 -1
  291. package/src/api/btc/BTCGetPublicKey.ts +1 -1
  292. package/src/api/cardano/CardanoSignMessage.ts +1 -1
  293. package/src/api/cardano/CardanoSignTransaction.ts +1 -1
  294. package/src/api/device/DeviceCancel.ts +1 -0
  295. package/src/api/device/DeviceChangePin.ts +24 -0
  296. package/src/api/device/DeviceFullyUploadResource.ts +4 -5
  297. package/src/api/device/DeviceLock.ts +1 -0
  298. package/src/api/device/DeviceRebootToBoardloader.ts +5 -4
  299. package/src/api/device/DeviceRebootToBootloader.ts +5 -4
  300. package/src/api/device/DeviceSettings.ts +121 -0
  301. package/src/api/device/DeviceUnlock.ts +9 -0
  302. package/src/api/device/DeviceUpdateBootloader.ts +1 -2
  303. package/src/api/device/DeviceWipe.ts +19 -0
  304. package/src/api/evm/EVMSignTypedData.ts +3 -5
  305. package/src/api/evm/legacyV1/getAddress.ts +2 -2
  306. package/src/api/evm/legacyV1/getPublicKey.ts +2 -2
  307. package/src/api/evm/legacyV1/signMessage.ts +2 -2
  308. package/src/api/evm/legacyV1/signTypedData.ts +2 -2
  309. package/src/api/evm/legacyV1/signTypedHash.ts +2 -2
  310. package/src/api/evm/legacyV1/verifyMessage.ts +2 -2
  311. package/src/api/firmware/FirmwareUpdateBaseMethod.ts +21 -7
  312. package/src/api/firmware/getBinary.ts +8 -3
  313. package/src/api/firmware/progressThrottle.ts +44 -0
  314. package/src/api/helpers/batchGetPublickeys.ts +2 -2
  315. package/src/api/helpers/filesystemValidation.ts +61 -0
  316. package/src/api/helpers/paramsValidator.ts +1 -1
  317. package/src/api/helpers/protocolV2FileWrite.ts +193 -0
  318. package/src/api/index.ts +17 -20
  319. package/src/api/kaspa/KaspaSignTransaction.ts +341 -22
  320. package/src/api/kaspa/helpers/TransferSerialize.ts +14 -0
  321. package/src/api/nervos/NervosSignTransaction.ts +2 -2
  322. package/src/api/nexa/NexaSignTransaction.ts +1 -1
  323. package/src/api/protocol-v2/{FactoryGetDeviceInfo.ts → DeviceFactoryInfoGet.ts} +4 -4
  324. package/src/api/protocol-v2/DeviceFactoryInfoSet.ts +32 -0
  325. package/src/api/protocol-v2/DeviceFirmwareUpdate.ts +7 -9
  326. package/src/api/protocol-v2/DeviceGetFirmwareUpdateStatus.ts +41 -6
  327. package/src/api/protocol-v2/DeviceGetOnboardingStatus.ts +6 -4
  328. package/src/api/protocol-v2/DeviceInfoGet.ts +145 -0
  329. package/src/api/protocol-v2/DeviceReboot.ts +5 -3
  330. package/src/api/protocol-v2/DeviceSettingsGet.ts +18 -0
  331. package/src/api/protocol-v2/DeviceSettingsPageShow.ts +70 -0
  332. package/src/api/protocol-v2/DeviceSettingsSet.ts +44 -0
  333. package/src/api/protocol-v2/DeviceStatusGet.ts +16 -0
  334. package/src/api/protocol-v2/DeviceUploadWallpaper.ts +131 -0
  335. package/src/api/protocol-v2/FilesystemFormat.ts +5 -2
  336. package/src/api/protocol-v2/{FilesystemFixPermission.ts → FilesystemPermissionFix.ts} +3 -3
  337. package/src/api/protocol-v2/Ping.ts +1 -1
  338. package/src/api/protocol-v2/{GetProtoVersion.ts → ProtocolInfoRequest.ts} +3 -3
  339. package/src/api/protocol-v2/helpers.ts +58 -62
  340. package/src/api/ton/TonSignData.ts +1 -5
  341. package/src/api/utils.ts +7 -3
  342. package/src/constants/index.ts +7 -1
  343. package/src/core/RequestQueue.ts +124 -4
  344. package/src/core/deviceEventRegistration.ts +23 -0
  345. package/src/core/index.ts +171 -60
  346. package/src/data/messages/messages-protocol-v2.json +825 -709
  347. package/src/data/messages/messages.json +286 -1
  348. package/src/data-manager/DataManager.ts +13 -6
  349. package/src/data-manager/connectSettings.ts +4 -0
  350. package/src/device/Device.ts +480 -192
  351. package/src/device/DeviceCommands.ts +81 -25
  352. package/src/device/DeviceFeaturesState.ts +34 -0
  353. package/src/device/DevicePool.ts +67 -19
  354. package/src/device/DeviceStateMapper.ts +348 -0
  355. package/src/device/DeviceStateProjector.ts +95 -0
  356. package/src/device/DeviceStateStore.ts +201 -0
  357. package/src/device/DeviceWalletSessionStore.ts +105 -0
  358. package/src/device/cloneDeviceState.ts +39 -0
  359. package/src/device/deviceIdentity.ts +18 -0
  360. package/src/deviceProfile/buildDeviceFeatures.ts +233 -209
  361. package/src/deviceProfile/index.ts +0 -1
  362. package/src/events/call.ts +6 -0
  363. package/src/events/core.ts +2 -0
  364. package/src/events/device.ts +17 -1
  365. package/src/events/iframe.ts +1 -0
  366. package/src/events/logBlockEvent.ts +8 -1
  367. package/src/events/ui-request.ts +24 -2
  368. package/src/index.ts +4 -0
  369. package/src/inject.ts +33 -34
  370. package/src/lowLevelInject.ts +3 -0
  371. package/src/protocols/protocol-v2/deviceSession.ts +24 -0
  372. package/src/protocols/protocol-v2/features.ts +68 -82
  373. package/src/protocols/protocol-v2/firmware.ts +12 -36
  374. package/src/protocols/protocol-v2/index.ts +3 -1
  375. package/src/protocols/protocol-v2/lockedError.ts +10 -0
  376. package/src/protocols/protocol-v2/settingsUnlockPolicy.ts +61 -0
  377. package/src/protocols/protocol-v2/uiInteraction.ts +210 -0
  378. package/src/protocols/protocol-v2/unlockRetry.ts +76 -0
  379. package/src/protocols/protocol-v2/walletSession.ts +107 -0
  380. package/src/topLevelInject.ts +2 -0
  381. package/src/types/api/checkAllFirmwareRelease.ts +1 -2
  382. package/src/types/api/deviceSettings.ts +9 -0
  383. package/src/types/api/deviceUnlock.ts +1 -1
  384. package/src/types/api/firmwareUpdate.ts +28 -20
  385. package/src/types/api/getDeviceState.ts +19 -0
  386. package/src/types/api/getFeatures.ts +3 -0
  387. package/src/types/api/getOnekeyFeatures.ts +3 -0
  388. package/src/types/api/getPassphraseState.ts +8 -11
  389. package/src/types/api/index.ts +37 -53
  390. package/src/types/api/kaspaSignTransaction.ts +40 -2
  391. package/src/types/api/openWalletSession.ts +64 -0
  392. package/src/types/api/protocolV2.ts +88 -54
  393. package/src/types/api/sessionCache.ts +14 -0
  394. package/src/types/device.ts +167 -3
  395. package/src/types/params.ts +4 -0
  396. package/src/types/settings.ts +42 -30
  397. package/src/utils/assets.ts +4 -1
  398. package/src/utils/deviceFeaturesCompat.ts +173 -0
  399. package/src/utils/deviceFeaturesUtils.ts +68 -24
  400. package/src/utils/deviceInfoUtils.ts +26 -64
  401. package/src/utils/deviceSettings.ts +48 -0
  402. package/src/utils/deviceVersionUtils.ts +25 -44
  403. package/src/utils/findDefectiveBatchDevice.ts +3 -3
  404. package/src/utils/homescreen.ts +10 -0
  405. package/src/utils/index.ts +3 -0
  406. package/src/utils/networkUtils.ts +270 -14
  407. package/src/utils/pro2Wallpaper.ts +109 -0
  408. package/src/utils/tracing.ts +3 -1
  409. package/dist/api/GetDeviceInfo.d.ts +0 -9
  410. package/dist/api/GetDeviceInfo.d.ts.map +0 -1
  411. package/dist/api/protocol-v2/DevReboot.d.ts +0 -7
  412. package/dist/api/protocol-v2/DevReboot.d.ts.map +0 -1
  413. package/dist/api/protocol-v2/DeviceGetDeviceInfo.d.ts +0 -29
  414. package/dist/api/protocol-v2/DeviceGetDeviceInfo.d.ts.map +0 -1
  415. package/dist/api/protocol-v2/FactoryDeviceInfoSettings.d.ts +0 -7
  416. package/dist/api/protocol-v2/FactoryDeviceInfoSettings.d.ts.map +0 -1
  417. package/dist/api/protocol-v2/FactoryGetDeviceInfo.d.ts +0 -6
  418. package/dist/api/protocol-v2/FactoryGetDeviceInfo.d.ts.map +0 -1
  419. package/dist/api/protocol-v2/FilesystemDiskControl.d.ts +0 -13
  420. package/dist/api/protocol-v2/FilesystemDiskControl.d.ts.map +0 -1
  421. package/dist/api/protocol-v2/FilesystemFixPermission.d.ts.map +0 -1
  422. package/dist/api/protocol-v2/GetProtoVersion.d.ts +0 -6
  423. package/dist/api/protocol-v2/GetProtoVersion.d.ts.map +0 -1
  424. package/dist/deviceProfile/buildDeviceProfile.d.ts +0 -21
  425. package/dist/deviceProfile/buildDeviceProfile.d.ts.map +0 -1
  426. package/dist/types/api/getDeviceInfo.d.ts +0 -85
  427. package/dist/types/api/getDeviceInfo.d.ts.map +0 -1
  428. package/src/api/GetDeviceInfo.ts +0 -145
  429. package/src/api/protocol-v2/DevReboot.ts +0 -24
  430. package/src/api/protocol-v2/DeviceGetDeviceInfo.ts +0 -118
  431. package/src/api/protocol-v2/FactoryDeviceInfoSettings.ts +0 -29
  432. package/src/api/protocol-v2/FilesystemDiskControl.ts +0 -50
  433. package/src/deviceProfile/buildDeviceProfile.ts +0 -334
  434. package/src/types/api/getDeviceInfo.ts +0 -99
@@ -13,14 +13,11 @@ import { PROTOBUF_MESSAGE_CONFIG } from '../data-manager/MessagesConfig';
13
13
  import { getDeviceType } from './deviceInfoUtils';
14
14
  import { getDeviceFirmwareVersion } from './deviceVersionUtils';
15
15
  import { existCapability } from './capabilitieUtils';
16
+ import { getProtocolV2WalletSession } from '../protocols/protocol-v2/walletSession';
16
17
 
17
18
  import type { Device } from '../device/Device';
18
19
  import type { Features, IDeviceType, SupportFeatureType } from '../types';
19
20
 
20
- // 生成的 GetPassphraseState 已包含 _only_main_pin / allow_create_attach_pin,
21
- // 不再需要手动扩展字段。
22
- type GetPassphraseStateMessage = GetPassphraseState;
23
-
24
21
  export const getSupportProtocolV1MessageSchema = (
25
22
  features: Features | undefined
26
23
  ): { messages: JSON; protocolV1MessageSchema: ProtocolV1MessageSchema } => {
@@ -33,6 +30,18 @@ export const getSupportProtocolV1MessageSchema = (
33
30
  const currentDeviceVersion = getDeviceFirmwareVersion(features).join('.');
34
31
  const deviceType = getDeviceType(features);
35
32
 
33
+ // In bootloader mode the major/minor/patch fields carry the bootloader version, not the
34
+ // firmware version; normalizing them would mis-route to the legacy schema (e.g. 2.x < 3.3.0).
35
+ // The legacy getDeviceFirmwareVersion returned 0.0.0 here and landed on v1CurrentSchema, so
36
+ // force v1CurrentSchema for every bootloader device, including in-place upgrades on
37
+ // Classic1s/Touch/Pro where firmware is still present.
38
+ if (features.bootloaderMode === true) {
39
+ return {
40
+ messages: DataManager.messages.v1CurrentSchema,
41
+ protocolV1MessageSchema: 'v1CurrentSchema',
42
+ };
43
+ }
44
+
36
45
  const deviceVersionConfigs =
37
46
  PROTOBUF_MESSAGE_CONFIG[deviceType] ||
38
47
  (DeviceTypeToModels[deviceType] &&
@@ -58,11 +67,15 @@ export const getSupportProtocolV1MessageSchema = (
58
67
  };
59
68
  };
60
69
 
61
- export const supportInputPinOnSoftware = (features: Features): SupportFeatureType => {
70
+ export const supportInputPinOnSoftware = (features?: Features): SupportFeatureType => {
62
71
  if (!features) return { support: false };
63
72
 
64
73
  const deviceType = getDeviceType(features);
65
- if (deviceType === EDeviceType.Touch || deviceType === EDeviceType.Pro) {
74
+ if (
75
+ deviceType === EDeviceType.Touch ||
76
+ deviceType === EDeviceType.Pro ||
77
+ deviceType === EDeviceType.Pro2
78
+ ) {
66
79
  return { support: false };
67
80
  }
68
81
 
@@ -92,13 +105,33 @@ export const getPassphraseStateWithRefreshDeviceInfo = async (
92
105
  options?: {
93
106
  expectPassphraseState?: string;
94
107
  onlyMainPin?: boolean;
95
- allowCreateAttachPin?: boolean;
108
+ initSession?: boolean;
96
109
  }
97
110
  ) => {
111
+ if (device.isProtocolV2()) {
112
+ if (!device.features) {
113
+ return {
114
+ passphraseState: undefined,
115
+ newSession: undefined,
116
+ unlockedAttachPin: undefined,
117
+ };
118
+ }
119
+
120
+ return getProtocolV2WalletSession(device, {
121
+ initSession: options?.initSession,
122
+ expectedPassphraseState: options?.expectPassphraseState,
123
+ onlyMainPin: options?.onlyMainPin,
124
+ });
125
+ }
126
+
98
127
  const { features } = device;
99
128
  const locked = features?.unlocked === false;
100
129
  const deviceType = device.getCurrentDeviceType();
101
130
 
131
+ if (options?.initSession) {
132
+ device.clearInternalState();
133
+ }
134
+
102
135
  const { passphraseState, newSession, unlockedAttachPin } = await getPassphraseState(device, {
103
136
  ...options,
104
137
  });
@@ -128,14 +161,17 @@ export const getPassphraseStateWithRefreshDeviceInfo = async (
128
161
  passphraseState,
129
162
  deviceId,
130
163
  newSession,
131
- device.features?.sessionId
164
+ options?.initSession ? null : device.features?.sessionId
132
165
  );
133
166
 
134
- return { passphraseState, newSession, unlockedAttachPin };
167
+ return {
168
+ passphraseState,
169
+ newSession,
170
+ unlockedAttachPin: unlockedAttachPin ?? device.features?.unlockedAttachPin,
171
+ };
135
172
  };
136
173
 
137
- // 仅适用于 Protocol V1 Pro:Pro2 走独立版本线,不能套用 4.15.0 门槛
138
- // (Pro2 在 getPassphraseState 中通过 isProtocolV2 直接判定支持)。
174
+ // Applies to Protocol V1 Pro only; Pro2 has an independent version line.
139
175
  const supportProSeriesAttachPinPassphrase = (deviceType: IDeviceType, firmwareVersion: string) =>
140
176
  deviceType === EDeviceType.Pro && semver.gte(firmwareVersion, '4.15.0');
141
177
 
@@ -144,7 +180,7 @@ export const getPassphraseState = async (
144
180
  options?: {
145
181
  expectPassphraseState?: string;
146
182
  onlyMainPin?: boolean;
147
- allowCreateAttachPin?: boolean;
183
+ initSession?: boolean;
148
184
  }
149
185
  ): Promise<{
150
186
  passphraseState: string | undefined;
@@ -153,31 +189,32 @@ export const getPassphraseState = async (
153
189
  }> => {
154
190
  const { features, commands } = device;
155
191
 
156
- // 设备尚未建立任何状态时无法判定,保持旧的空返回语义
192
+ // Preserve legacy empty-result semantics until the device has established state.
157
193
  if (!features)
158
194
  return { passphraseState: undefined, newSession: undefined, unlockedAttachPin: undefined };
159
195
 
160
196
  const firmwareVersion = device.getCurrentFirmwareVersionString() ?? '0.0.0';
161
197
  const deviceType = device.getCurrentDeviceType();
162
198
 
199
+ if (device.isProtocolV2()) {
200
+ return getProtocolV2WalletSession(device, {
201
+ initSession: options?.initSession,
202
+ expectedPassphraseState: options?.expectPassphraseState,
203
+ onlyMainPin: options?.onlyMainPin,
204
+ });
205
+ }
206
+
163
207
  const supportAttachPinCapability = existCapability(
164
208
  features,
165
209
  Enum_Capability.Capability_AttachToPin
166
210
  );
167
- // Pro2 (Protocol V2) 协议自带 GetPassphraseState(10028),固件从首个版本即支持,
168
- // 不依赖 Pro 系列的 4.15.0 版本线;V2 也没有 GetAddress Testnet 探测这条 legacy 回退路径。
169
211
  const supportGetPassphraseState =
170
- device.isProtocolV2() ||
171
- supportAttachPinCapability ||
172
- supportProSeriesAttachPinPassphrase(deviceType, firmwareVersion);
212
+ supportAttachPinCapability || supportProSeriesAttachPinPassphrase(deviceType, firmwareVersion);
173
213
 
174
214
  if (supportGetPassphraseState) {
175
- const payload: GetPassphraseStateMessage = options?.onlyMainPin
176
- ? { _only_main_pin: true }
177
- : { passphrase_state: options?.expectPassphraseState };
178
- if (options?.allowCreateAttachPin) {
179
- payload.allow_create_attach_pin = true;
180
- }
215
+ const payload: GetPassphraseState = {
216
+ passphrase_state: options?.onlyMainPin ? undefined : options?.expectPassphraseState,
217
+ };
181
218
 
182
219
  const { message, type } = await commands.typedCall(
183
220
  'GetPassphraseState',
@@ -276,6 +313,9 @@ export const getFirmwareUpdateField = ({
276
313
  if (deviceType === EDeviceType.Pro) {
277
314
  return latestFirmwareField;
278
315
  }
316
+ if (deviceType === EDeviceType.Pro2) {
317
+ return 'firmware-v1';
318
+ }
279
319
  return 'firmware';
280
320
  };
281
321
  /**
@@ -319,6 +359,10 @@ export const getFirmwareUpdateFieldArray = (
319
359
  return ['firmware-v8'];
320
360
  }
321
361
 
362
+ if (deviceType === 'pro2') {
363
+ return ['firmware-v1'];
364
+ }
365
+
322
366
  return ['firmware'];
323
367
  };
324
368
 
@@ -1,51 +1,22 @@
1
1
  import { isEmpty } from 'lodash';
2
- import { EDeviceType, EFirmwareType } from '@onekeyfe/hd-shared';
3
- import { Enum_Capability } from '@onekeyfe/hd-transport';
2
+ import { EDeviceType } from '@onekeyfe/hd-shared';
4
3
 
5
4
  import { DeviceModelToTypes } from '../types';
6
- import { existCapability } from './capabilitieUtils';
5
+ import {
6
+ resolveDeviceBleName,
7
+ resolveDeviceFirmwareType,
8
+ resolveDeviceSerialNo,
9
+ resolveDeviceType,
10
+ } from './deviceFeaturesCompat';
7
11
 
8
- import type { Features, IDeviceModel, IDeviceType, IVersionRange } from '../types';
12
+ import type { IDeviceModel, IDeviceType, IVersionRange } from '../types';
13
+ import type { DeviceFeaturesInput } from './deviceFeaturesCompat';
9
14
 
10
15
  /**
11
16
  * get device type by features
12
17
  */
13
- export const getDeviceType = (features?: Features): IDeviceType => {
14
- if (!features || typeof features !== 'object') {
15
- return EDeviceType.Unknown;
16
- }
17
- if (features.deviceType) {
18
- return features.deviceType;
19
- }
20
-
21
- if (features.model === EDeviceType.Pro2 || features.model === 'pro2') {
22
- return EDeviceType.Pro2;
23
- }
24
-
25
- // low version hardware
26
- // onekey_serial_no > onekey_serial > serial_no
27
- const serialNo = getDeviceUUID(features);
28
-
29
- // not exist serialNo, bootloader mode, model 1 is classic
30
- if (isEmpty(serialNo) && features.bootloaderMode === true && features.model === '1') {
31
- return EDeviceType.Classic;
32
- }
33
-
34
- if (isEmpty(serialNo)) return EDeviceType.Unknown;
35
-
36
- const miniFlag = serialNo.slice(0, 2);
37
- // By May 2021, the miniFlag is 'bixin' for all classic devices
38
- if (miniFlag.toLowerCase() === 'bi') return EDeviceType.Classic;
39
- if (miniFlag.toLowerCase() === 'cl') return EDeviceType.Classic;
40
- if (miniFlag.toLowerCase() === 'cp') return EDeviceType.ClassicPure;
41
- if (miniFlag.toLowerCase() === 'mi') return EDeviceType.Mini;
42
- if (miniFlag.toLowerCase() === 'tc') return EDeviceType.Touch;
43
- if (miniFlag.toLowerCase() === 'pr') return EDeviceType.Pro;
44
- if (miniFlag.toLowerCase() === 'p2') return EDeviceType.Pro2;
45
-
46
- // unknown device
47
- return EDeviceType.Unknown;
48
- };
18
+ export const getDeviceType = (features?: DeviceFeaturesInput): IDeviceType =>
19
+ resolveDeviceType(features);
49
20
 
50
21
  /**
51
22
  * get device type by ble name
@@ -70,28 +41,30 @@ export const getDeviceTypeByBleName = (name?: string): IDeviceType => {
70
41
  * Get Connected Device ble name by features
71
42
  * @returns
72
43
  */
73
- export const getDeviceBleName = (features?: Features): string | null => {
74
- if (features == null) return null;
75
- return features.bleName || null;
76
- };
44
+ export const getDeviceBleName = (features?: DeviceFeaturesInput): string | null =>
45
+ resolveDeviceBleName(features);
77
46
 
78
47
  /**
79
- * Get Connected Device UUID by features
48
+ * Get Connected Device serial number by features
80
49
  */
81
- export const getDeviceUUID = (features: Features) => {
82
- return features.serialNo ?? '';
83
- };
50
+ export const getDeviceSerialNo = (features?: DeviceFeaturesInput): string =>
51
+ resolveDeviceSerialNo(features);
52
+
53
+ /**
54
+ * @deprecated Use getDeviceSerialNo instead.
55
+ */
56
+ export const getDeviceUUID = getDeviceSerialNo;
84
57
 
85
58
  /**
86
59
  * Get Connected Device label by features
87
60
  */
88
- export const getDeviceLabel = (features?: Features) => {
61
+ export const getDeviceLabel = (features?: DeviceFeaturesInput) => {
89
62
  if (!features) return null;
90
63
 
91
64
  const deviceType = getDeviceType(features);
92
65
  if (deviceType == null) return null;
93
66
 
94
- if (typeof features.label === 'string' && !isEmpty(features.label)) {
67
+ if ('label' in features && typeof features.label === 'string' && !isEmpty(features.label)) {
95
68
  return features.label;
96
69
  }
97
70
 
@@ -110,7 +83,7 @@ export const getDeviceLabel = (features?: Features) => {
110
83
  * Type has a higher priority than Model
111
84
  */
112
85
  export const getMethodVersionRange = (
113
- features: Features | undefined,
86
+ features: DeviceFeaturesInput | undefined,
114
87
  getVersionRange: (deviceModel: IDeviceType | IDeviceModel) => IVersionRange | undefined
115
88
  ): IVersionRange | undefined => {
116
89
  const deviceType = getDeviceType(features);
@@ -141,16 +114,5 @@ export const getMethodVersionRange = (
141
114
  export const isMethodVersionRangeUnsupported = (versionRange?: IVersionRange): boolean =>
142
115
  versionRange?.unsupported === true;
143
116
 
144
- export const getFirmwareType = (features: Features | undefined) => {
145
- if (!features) {
146
- return EFirmwareType.Universal;
147
- }
148
- if (features.firmwareType) {
149
- return features.firmwareType;
150
- }
151
- // old firmware
152
- return features?.capabilities?.length > 0 &&
153
- !existCapability(features, Enum_Capability.Capability_Bitcoin_like)
154
- ? EFirmwareType.BitcoinOnly
155
- : EFirmwareType.Universal;
156
- };
117
+ export const getFirmwareType = (features?: DeviceFeaturesInput) =>
118
+ resolveDeviceFirmwareType(features);
@@ -19,6 +19,33 @@ export const LANGUAGE_LABELS = {
19
19
  export type LanguageKey = keyof typeof LANGUAGE_LABELS;
20
20
  export type LanguageOption = { code: LanguageKey; label: (typeof LANGUAGE_LABELS)[LanguageKey] };
21
21
 
22
+ export const PROTOCOL_V2_LANGUAGE_BY_KEY: Record<LanguageKey, string> = {
23
+ en: 'en-Latn-US',
24
+ zh_cn: 'zh-Hans-CN',
25
+ zh_hk: 'zh-Hant-HK',
26
+ ja: 'ja-Jpan-JP',
27
+ ko: 'ko-Kore-KR',
28
+ fr: 'fr-Latn-FR',
29
+ de: 'de-Latn-DE',
30
+ ru: 'ru-Cyrl-RU',
31
+ es: 'es-Latn-ES',
32
+ it: 'it-Latn-IT',
33
+ pt_br: 'pt-Latn-BR',
34
+ };
35
+
36
+ export const mapLanguageToProtocolV2 = (language?: string) =>
37
+ language ? PROTOCOL_V2_LANGUAGE_BY_KEY[language as LanguageKey] ?? language : undefined;
38
+
39
+ const PRO2_LANGUAGE_OPTIONS = [
40
+ ...Object.entries(LANGUAGE_LABELS).map(([code, label]) => ({ code, label })),
41
+ { code: 'zh-Hant-TW', label: '繁體中文(台灣)' },
42
+ { code: 'vi-Latn-VN', label: 'Tiếng Việt' },
43
+ { code: 'tr-Latn-TR', label: 'Türkçe' },
44
+ { code: 'id-Latn-ID', label: 'Bahasa Indonesia' },
45
+ { code: 'fil-Latn-PH', label: 'Filipino' },
46
+ { code: 'uk-Cyrl-UA', label: 'Українська' },
47
+ ] as const;
48
+
22
49
  export const getLanguageConfig = (deviceType: IDeviceType): Record<string, string>[] => {
23
50
  let keys: LanguageKey[] = [];
24
51
 
@@ -36,6 +63,8 @@ export const getLanguageConfig = (deviceType: IDeviceType): Record<string, strin
36
63
  case EDeviceType.Pro:
37
64
  keys = Object.keys(LANGUAGE_LABELS) as LanguageKey[];
38
65
  break;
66
+ case EDeviceType.Pro2:
67
+ return PRO2_LANGUAGE_OPTIONS.map(option => ({ ...option }));
39
68
  default:
40
69
  keys = [];
41
70
  break;
@@ -75,6 +104,16 @@ export const getAutoLockOptions = (_deviceType: IDeviceType): DurationParts[] =>
75
104
  { seconds: 0, minute: 30, hour: 0, day: 0 },
76
105
  { seconds: 0, minute: 0, hour: 0, day: 0 },
77
106
  ];
107
+ case EDeviceType.Pro2:
108
+ return [
109
+ { seconds: 30, minute: 0, hour: 0, day: 0 },
110
+ { seconds: 0, minute: 1, hour: 0, day: 0 },
111
+ { seconds: 0, minute: 2, hour: 0, day: 0 },
112
+ { seconds: 0, minute: 5, hour: 0, day: 0 },
113
+ { seconds: 0, minute: 10, hour: 0, day: 0 },
114
+ { seconds: 0, minute: 30, hour: 0, day: 0 },
115
+ { seconds: 0, minute: 0, hour: 0, day: 0 },
116
+ ];
78
117
  default:
79
118
  return [];
80
119
  }
@@ -103,6 +142,15 @@ export const getAutoShutDownOptions = (_deviceType: IDeviceType): DurationParts[
103
142
  { seconds: 0, minute: 10, hour: 0, day: 0 },
104
143
  { seconds: 0, minute: 0, hour: 0, day: 0 },
105
144
  ];
145
+ case EDeviceType.Pro2:
146
+ return [
147
+ { seconds: 0, minute: 1, hour: 0, day: 0 },
148
+ { seconds: 0, minute: 2, hour: 0, day: 0 },
149
+ { seconds: 0, minute: 5, hour: 0, day: 0 },
150
+ { seconds: 0, minute: 10, hour: 0, day: 0 },
151
+ { seconds: 0, minute: 30, hour: 0, day: 0 },
152
+ { seconds: 0, minute: 0, hour: 0, day: 0 },
153
+ ];
106
154
  default:
107
155
  return [];
108
156
  }
@@ -1,61 +1,42 @@
1
1
  import semver from 'semver';
2
2
 
3
- import type { Features, IVersionArray } from '../types';
3
+ import {
4
+ resolveDeviceBleFirmwareVersion,
5
+ resolveDeviceBoardVersion,
6
+ resolveDeviceBootloaderVersion,
7
+ resolveDeviceFirmwareVersion,
8
+ } from './deviceFeaturesCompat';
4
9
 
5
- /**
6
- * Get Connected Device version by features
7
- */
8
- export const getDeviceFirmwareVersion = (features: Features | undefined): IVersionArray => {
9
- if (!features) return [0, 0, 0];
10
+ import type { IVersionArray } from '../types';
11
+ import type { DeviceFeaturesInput } from './deviceFeaturesCompat';
10
12
 
11
- if (features.firmwareVersion && semver.valid(features.firmwareVersion)) {
12
- return features.firmwareVersion.split('.').map(Number) as IVersionArray;
13
- }
13
+ const EMPTY_VERSION: IVersionArray = [0, 0, 0];
14
14
 
15
- return [0, 0, 0];
15
+ const parseDeviceVersion = (version?: string | null): IVersionArray => {
16
+ const parsed = version ? semver.parse(version) : null;
17
+ return parsed ? [parsed.major, parsed.minor, parsed.patch] : [...EMPTY_VERSION];
16
18
  };
17
19
 
18
20
  /**
19
- * Get Connected Device bluetooth firmware version by features
21
+ * Get Connected Device version by features
20
22
  */
21
- export const getDeviceBLEFirmwareVersion = (features: Features): IVersionArray => {
22
- const bleVer = features?.bleVersion;
23
-
24
- if (!bleVer) {
25
- return [0, 0, 0];
26
- }
27
-
28
- if (!semver.valid(bleVer)) {
29
- return [0, 0, 0];
30
- }
31
-
32
- if (bleVer) {
33
- return bleVer.split('.').map(Number) as IVersionArray;
34
- }
35
- return [0, 0, 0];
36
- };
23
+ export const getDeviceFirmwareVersion = (features?: DeviceFeaturesInput): IVersionArray =>
24
+ parseDeviceVersion(resolveDeviceFirmwareVersion(features));
37
25
 
38
26
  /**
39
27
  * Get Connected Device bootloader version by features
40
28
  */
41
- export const getDeviceBootloaderVersion = (features: Features | undefined): IVersionArray => {
42
- if (!features) return [0, 0, 0];
43
-
44
- // classic1s 3.5.0 pro 4.6.0
45
- if (features.bootloaderVersion && semver.valid(features.bootloaderVersion)) {
46
- return features.bootloaderVersion.split('.').map(Number) as IVersionArray;
47
- }
48
-
49
- return [0, 0, 0];
50
- };
29
+ export const getDeviceBootloaderVersion = (features?: DeviceFeaturesInput): IVersionArray =>
30
+ parseDeviceVersion(resolveDeviceBootloaderVersion(features));
51
31
 
52
32
  /**
53
- * Get Connected Device boardloader version by features
33
+ * Get Connected Device boardloader/romloader version by features
54
34
  */
55
- export const getDeviceBoardloaderVersion = (features: Features): IVersionArray => {
56
- if (features?.boardVersion && semver.valid(features.boardVersion)) {
57
- return features.boardVersion.split('.').map(Number) as IVersionArray;
58
- }
35
+ export const getDeviceBoardloaderVersion = (features?: DeviceFeaturesInput): IVersionArray =>
36
+ parseDeviceVersion(resolveDeviceBoardVersion(features));
59
37
 
60
- return [0, 0, 0];
61
- };
38
+ /**
39
+ * Get Connected Device bluetooth firmware version by features
40
+ */
41
+ export const getDeviceBLEFirmwareVersion = (features?: DeviceFeaturesInput): IVersionArray =>
42
+ parseDeviceVersion(resolveDeviceBleFirmwareVersion(features));
@@ -1,11 +1,11 @@
1
- import { getDeviceType, getDeviceUUID } from './deviceInfoUtils';
1
+ import { getDeviceSerialNo, getDeviceType } from './deviceInfoUtils';
2
2
 
3
3
  import type { Features } from '../types';
4
4
 
5
5
  /**
6
6
  * 检测故障固件设备
7
7
  * 检测规则:
8
- * - 序列号范围:21032200001 21032201500
8
+ * - Serial number range: 21032200001 through 21032201500
9
9
  * - SE版本为 1.1.0.2
10
10
  *
11
11
  * 对齐之前版本的检测逻辑
@@ -27,7 +27,7 @@ export const findDefectiveBatchDevice = (features: Features) => {
27
27
  */
28
28
  export const getDefectiveDeviceInfo = (features: Features) => {
29
29
  if (!findDefectiveBatchDevice(features)) return null;
30
- const serialNo = getDeviceUUID(features);
30
+ const serialNo = getDeviceSerialNo(features);
31
31
  const deviceType = getDeviceType(features);
32
32
  const { seVersion } = features;
33
33
 
@@ -3,6 +3,7 @@ import { EDeviceType } from '@onekeyfe/hd-shared';
3
3
 
4
4
  import { getDeviceType } from './deviceInfoUtils';
5
5
  import { getDeviceFirmwareVersion } from './deviceVersionUtils';
6
+ import { PRO2_WALLPAPER_HEIGHT, PRO2_WALLPAPER_WIDTH } from './pro2Wallpaper';
6
7
 
7
8
  import type { Features, IDeviceType } from '../types';
8
9
 
@@ -310,6 +311,15 @@ export const getHomeScreenSize = ({
310
311
  homeScreenType: 'WallPaper' | 'Nft';
311
312
  thumbnail?: boolean;
312
313
  }) => {
314
+ if (deviceType === EDeviceType.Pro2) {
315
+ return thumbnail
316
+ ? undefined
317
+ : {
318
+ width: PRO2_WALLPAPER_WIDTH,
319
+ height: PRO2_WALLPAPER_HEIGHT,
320
+ };
321
+ }
322
+
313
323
  const sizes: Partial<
314
324
  Record<
315
325
  IDeviceType,
@@ -8,6 +8,7 @@ export {
8
8
  getDeviceTypeByBleName,
9
9
  getDeviceType,
10
10
  getDeviceBleName,
11
+ getDeviceSerialNo,
11
12
  getDeviceUUID,
12
13
  getDeviceLabel,
13
14
  getMethodVersionRange,
@@ -38,6 +39,8 @@ export { getHDPath, getScriptType, getOutputScriptType } from '../api/helpers/pa
38
39
  export const isBleConnect = (env: string) => env === 'react-native' || env === 'lowlevel';
39
40
 
40
41
  export { getHomeScreenHex, getHomeScreenDefaultList, getHomeScreenSize } from './homescreen';
42
+ export { encodePro2Wallpaper, PRO2_WALLPAPER_HEIGHT, PRO2_WALLPAPER_WIDTH } from './pro2Wallpaper';
43
+ export type { Pro2WallpaperColorFormat } from './pro2Wallpaper';
41
44
 
42
45
  export const wait = (ms: number) =>
43
46
  new Promise(resolve => {