@onekeyfe/hd-core 1.2.0-alpha.6 → 1.2.0-alpha.61

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 (734) hide show
  1. package/__tests__/AllNetworkGetAddressBase.tracing.test.ts +390 -0
  2. package/__tests__/DeviceCommands.test.ts +563 -0
  3. package/__tests__/DeviceEventRegistration.test.ts +49 -0
  4. package/__tests__/chain-params-onekey-compatibility.test.ts +229 -0
  5. package/__tests__/check-all-firmware-release-protocol-v2.test.ts +477 -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__/core-initialization.test.ts +23 -0
  10. package/__tests__/device-connector-protocol.test.ts +81 -0
  11. package/__tests__/device-features-state.test.ts +78 -0
  12. package/__tests__/device-identity.test.ts +52 -0
  13. package/__tests__/device-lifecycle-events.test.ts +351 -0
  14. package/__tests__/device-pool-state.test.ts +166 -0
  15. package/__tests__/device-settings.test.ts +437 -0
  16. package/__tests__/device-state-contract.test.ts +28 -0
  17. package/__tests__/device-state-events.test.ts +286 -0
  18. package/__tests__/device-state-mapper.test.ts +273 -0
  19. package/__tests__/device-state-projector.test.ts +94 -0
  20. package/__tests__/device-state-store.test.ts +82 -0
  21. package/__tests__/device-utils.test.ts +154 -0
  22. package/__tests__/device-wallet-session-store.test.ts +478 -0
  23. package/__tests__/deviceFeaturesUtils.test.ts +39 -0
  24. package/__tests__/deviceSettings.test.ts +113 -0
  25. package/__tests__/deviceUploadNft.test.ts +316 -0
  26. package/__tests__/evmLedgerLegacySafety.test.ts +12 -6
  27. package/__tests__/evmSignTransaction.test.ts +69 -0
  28. package/__tests__/evmSignTypedData.test.ts +80 -0
  29. package/__tests__/filesystemValidation.test.ts +53 -0
  30. package/__tests__/firmware-update/firmware-update-v2-download-before-boot.test.ts +402 -0
  31. package/__tests__/get-device-state.test.ts +578 -0
  32. package/__tests__/homescreen.test.ts +64 -0
  33. package/__tests__/kaspa-public-types.type-test.ts +16 -0
  34. package/__tests__/kaspa-use-tweak-pro2.test.ts +20 -0
  35. package/__tests__/kaspaSignTransaction.test.ts +578 -0
  36. package/__tests__/known-device-public-types.type-test.ts +3 -0
  37. package/__tests__/logBlockEvent.test.ts +128 -1
  38. package/__tests__/method-protocol-support.test.ts +132 -0
  39. package/__tests__/networkUtils.test.ts +406 -0
  40. package/__tests__/open-wallet-session-error-response.test.ts +43 -0
  41. package/__tests__/open-wallet-session.test.ts +1899 -0
  42. package/__tests__/pro2Nft.test.ts +108 -0
  43. package/__tests__/pro2Wallpaper.test.ts +39 -0
  44. package/__tests__/protocol-binding.test.ts +89 -0
  45. package/__tests__/protocol-v2-bootloader-mode.test.ts +37 -0
  46. package/__tests__/protocol-v2-firmware-targets.test.ts +37 -0
  47. package/__tests__/protocol-v2-ping.test.ts +28 -0
  48. package/__tests__/protocol-v2-resources.test.ts +340 -0
  49. package/__tests__/protocol-v2-ui-lifecycle.test.ts +91 -0
  50. package/__tests__/protocol-v2-unlock-policy.test.ts +245 -0
  51. package/__tests__/protocol-v2.test.ts +6478 -2536
  52. package/__tests__/protocolV2FileWrite.test.ts +244 -0
  53. package/__tests__/protocolV2UiInteraction.test.ts +329 -0
  54. package/__tests__/public-device-state-api.test.ts +275 -0
  55. package/__tests__/public-pro2-api-boundary.test.ts +107 -0
  56. package/__tests__/refresh-device-state.test.ts +101 -0
  57. package/__tests__/request-context-logging.test.ts +16 -0
  58. package/__tests__/search-devices.test.ts +145 -0
  59. package/__tests__/tron-sign-message-init.test.ts +74 -0
  60. package/__tests__/uiProgressThrottle.test.ts +74 -0
  61. package/__tests__/uiPromiseRegistry.test.ts +115 -0
  62. package/dist/api/BaseMethod.d.ts +16 -1
  63. package/dist/api/BaseMethod.d.ts.map +1 -1
  64. package/dist/api/CheckAllFirmwareRelease.d.ts +25 -1
  65. package/dist/api/CheckAllFirmwareRelease.d.ts.map +1 -1
  66. package/dist/api/CheckBootloaderRelease.d.ts.map +1 -1
  67. package/dist/api/CheckFirmwareRelease.d.ts.map +1 -1
  68. package/dist/api/CipherKeyValue.d.ts +1 -0
  69. package/dist/api/CipherKeyValue.d.ts.map +1 -1
  70. package/dist/api/ClearSessionCache.d.ts +9 -0
  71. package/dist/api/ClearSessionCache.d.ts.map +1 -0
  72. package/dist/api/DetectDeviceConnectProtocol.d.ts +7 -0
  73. package/dist/api/DetectDeviceConnectProtocol.d.ts.map +1 -0
  74. package/dist/api/DirList.d.ts +1 -0
  75. package/dist/api/DirList.d.ts.map +1 -1
  76. package/dist/api/DirMake.d.ts +1 -0
  77. package/dist/api/DirMake.d.ts.map +1 -1
  78. package/dist/api/DirRemove.d.ts +1 -0
  79. package/dist/api/DirRemove.d.ts.map +1 -1
  80. package/dist/api/FileDelete.d.ts +1 -0
  81. package/dist/api/FileDelete.d.ts.map +1 -1
  82. package/dist/api/FileRead.d.ts +1 -0
  83. package/dist/api/FileRead.d.ts.map +1 -1
  84. package/dist/api/FileWrite.d.ts +2 -0
  85. package/dist/api/FileWrite.d.ts.map +1 -1
  86. package/dist/api/FirmwareUpdate.d.ts.map +1 -1
  87. package/dist/api/FirmwareUpdateV2.d.ts +2 -2
  88. package/dist/api/FirmwareUpdateV2.d.ts.map +1 -1
  89. package/dist/api/FirmwareUpdateV3.d.ts.map +1 -1
  90. package/dist/api/FirmwareUpdateV4.d.ts +26 -16
  91. package/dist/api/FirmwareUpdateV4.d.ts.map +1 -1
  92. package/dist/api/GetDeviceState.d.ts +8 -0
  93. package/dist/api/GetDeviceState.d.ts.map +1 -0
  94. package/dist/api/GetFeatures.d.ts +1 -1
  95. package/dist/api/GetFeatures.d.ts.map +1 -1
  96. package/dist/api/GetOnekeyFeatures.d.ts.map +1 -1
  97. package/dist/api/GetPassphraseState.d.ts +2 -6
  98. package/dist/api/GetPassphraseState.d.ts.map +1 -1
  99. package/dist/api/OpenWalletSession.d.ts +8 -0
  100. package/dist/api/OpenWalletSession.d.ts.map +1 -0
  101. package/dist/api/PathInfo.d.ts +1 -0
  102. package/dist/api/PathInfo.d.ts.map +1 -1
  103. package/dist/api/PromptWebDeviceAccess.d.ts.map +1 -1
  104. package/dist/api/SearchDevices.d.ts +3 -0
  105. package/dist/api/SearchDevices.d.ts.map +1 -1
  106. package/dist/api/UploadPortfolio.d.ts +17 -0
  107. package/dist/api/UploadPortfolio.d.ts.map +1 -0
  108. package/dist/api/alephium/AlephiumGetAddress.d.ts.map +1 -1
  109. package/dist/api/alephium/AlephiumSignMessage.d.ts.map +1 -1
  110. package/dist/api/alephium/AlephiumSignTransaction.d.ts.map +1 -1
  111. package/dist/api/algo/AlgoGetAddress.d.ts +1 -0
  112. package/dist/api/algo/AlgoGetAddress.d.ts.map +1 -1
  113. package/dist/api/algo/AlgoSignTransaction.d.ts +1 -0
  114. package/dist/api/algo/AlgoSignTransaction.d.ts.map +1 -1
  115. package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts +1 -0
  116. package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts.map +1 -1
  117. package/dist/api/aptos/AptosGetAddress.d.ts +1 -0
  118. package/dist/api/aptos/AptosGetAddress.d.ts.map +1 -1
  119. package/dist/api/aptos/AptosGetPublicKey.d.ts +1 -0
  120. package/dist/api/aptos/AptosGetPublicKey.d.ts.map +1 -1
  121. package/dist/api/aptos/AptosSignInMessage.d.ts +1 -0
  122. package/dist/api/aptos/AptosSignInMessage.d.ts.map +1 -1
  123. package/dist/api/aptos/AptosSignMessage.d.ts +1 -0
  124. package/dist/api/aptos/AptosSignMessage.d.ts.map +1 -1
  125. package/dist/api/aptos/AptosSignTransaction.d.ts +1 -0
  126. package/dist/api/aptos/AptosSignTransaction.d.ts.map +1 -1
  127. package/dist/api/benfen/BenfenGetAddress.d.ts.map +1 -1
  128. package/dist/api/benfen/BenfenGetPublicKey.d.ts.map +1 -1
  129. package/dist/api/benfen/BenfenSignMessage.d.ts.map +1 -1
  130. package/dist/api/benfen/BenfenSignTransaction.d.ts.map +1 -1
  131. package/dist/api/btc/BTCGetAddress.d.ts +1 -0
  132. package/dist/api/btc/BTCGetAddress.d.ts.map +1 -1
  133. package/dist/api/btc/BTCGetPublicKey.d.ts +1 -0
  134. package/dist/api/btc/BTCGetPublicKey.d.ts.map +1 -1
  135. package/dist/api/btc/BTCSignMessage.d.ts +1 -0
  136. package/dist/api/btc/BTCSignMessage.d.ts.map +1 -1
  137. package/dist/api/btc/BTCSignPsbt.d.ts +1 -0
  138. package/dist/api/btc/BTCSignPsbt.d.ts.map +1 -1
  139. package/dist/api/btc/BTCSignTransaction.d.ts +1 -0
  140. package/dist/api/btc/BTCSignTransaction.d.ts.map +1 -1
  141. package/dist/api/btc/BTCVerifyMessage.d.ts +1 -0
  142. package/dist/api/btc/BTCVerifyMessage.d.ts.map +1 -1
  143. package/dist/api/btc/helpers/versionLimit.d.ts +2 -0
  144. package/dist/api/btc/helpers/versionLimit.d.ts.map +1 -1
  145. package/dist/api/cardano/CardanoGetAddress.d.ts +1 -0
  146. package/dist/api/cardano/CardanoGetAddress.d.ts.map +1 -1
  147. package/dist/api/cardano/CardanoGetPublicKey.d.ts +1 -0
  148. package/dist/api/cardano/CardanoGetPublicKey.d.ts.map +1 -1
  149. package/dist/api/cardano/CardanoSignMessage.d.ts +1 -0
  150. package/dist/api/cardano/CardanoSignMessage.d.ts.map +1 -1
  151. package/dist/api/cardano/CardanoSignTransaction.d.ts +1 -0
  152. package/dist/api/cardano/CardanoSignTransaction.d.ts.map +1 -1
  153. package/dist/api/conflux/ConfluxGetAddress.d.ts +2 -0
  154. package/dist/api/conflux/ConfluxGetAddress.d.ts.map +1 -1
  155. package/dist/api/conflux/ConfluxSignMessage.d.ts +2 -0
  156. package/dist/api/conflux/ConfluxSignMessage.d.ts.map +1 -1
  157. package/dist/api/conflux/ConfluxSignMessageCIP23.d.ts +2 -0
  158. package/dist/api/conflux/ConfluxSignMessageCIP23.d.ts.map +1 -1
  159. package/dist/api/conflux/ConfluxSignTransaction.d.ts +2 -0
  160. package/dist/api/conflux/ConfluxSignTransaction.d.ts.map +1 -1
  161. package/dist/api/cosmos/CosmosGetAddress.d.ts +1 -0
  162. package/dist/api/cosmos/CosmosGetAddress.d.ts.map +1 -1
  163. package/dist/api/cosmos/CosmosGetPublicKey.d.ts +1 -0
  164. package/dist/api/cosmos/CosmosGetPublicKey.d.ts.map +1 -1
  165. package/dist/api/cosmos/CosmosSignTransaction.d.ts +1 -0
  166. package/dist/api/cosmos/CosmosSignTransaction.d.ts.map +1 -1
  167. package/dist/api/device/DeviceCancel.d.ts +1 -0
  168. package/dist/api/device/DeviceCancel.d.ts.map +1 -1
  169. package/dist/api/device/DeviceChangePin.d.ts +1 -0
  170. package/dist/api/device/DeviceChangePin.d.ts.map +1 -1
  171. package/dist/api/device/DeviceFullyUploadResource.d.ts +1 -2
  172. package/dist/api/device/DeviceFullyUploadResource.d.ts.map +1 -1
  173. package/dist/api/device/DeviceLock.d.ts +1 -0
  174. package/dist/api/device/DeviceLock.d.ts.map +1 -1
  175. package/dist/api/device/DeviceRebootToBoardloader.d.ts +1 -0
  176. package/dist/api/device/DeviceRebootToBoardloader.d.ts.map +1 -1
  177. package/dist/api/device/DeviceRebootToBootloader.d.ts +1 -0
  178. package/dist/api/device/DeviceRebootToBootloader.d.ts.map +1 -1
  179. package/dist/api/device/DeviceSettings.d.ts +1 -0
  180. package/dist/api/device/DeviceSettings.d.ts.map +1 -1
  181. package/dist/api/device/DeviceSupportFeatures.d.ts +1 -0
  182. package/dist/api/device/DeviceSupportFeatures.d.ts.map +1 -1
  183. package/dist/api/device/DeviceUnlock.d.ts +3 -2
  184. package/dist/api/device/DeviceUnlock.d.ts.map +1 -1
  185. package/dist/api/device/DeviceUpdateBootloader.d.ts.map +1 -1
  186. package/dist/api/device/DeviceWipe.d.ts +1 -0
  187. package/dist/api/device/DeviceWipe.d.ts.map +1 -1
  188. package/dist/api/device/PreInitialize.d.ts +1 -0
  189. package/dist/api/device/PreInitialize.d.ts.map +1 -1
  190. package/dist/api/dynex/DnxGetAddress.d.ts.map +1 -1
  191. package/dist/api/dynex/DnxSignTransaction.d.ts.map +1 -1
  192. package/dist/api/evm/EVMGetAddress.d.ts +1 -0
  193. package/dist/api/evm/EVMGetAddress.d.ts.map +1 -1
  194. package/dist/api/evm/EVMGetPublicKey.d.ts +1 -0
  195. package/dist/api/evm/EVMGetPublicKey.d.ts.map +1 -1
  196. package/dist/api/evm/EVMSignMessage.d.ts +1 -0
  197. package/dist/api/evm/EVMSignMessage.d.ts.map +1 -1
  198. package/dist/api/evm/EVMSignMessageEIP712.d.ts.map +1 -1
  199. package/dist/api/evm/EVMSignTransaction.d.ts +1 -0
  200. package/dist/api/evm/EVMSignTransaction.d.ts.map +1 -1
  201. package/dist/api/evm/EVMSignTypedData.d.ts +1 -0
  202. package/dist/api/evm/EVMSignTypedData.d.ts.map +1 -1
  203. package/dist/api/evm/EVMVerifyMessage.d.ts +1 -0
  204. package/dist/api/evm/EVMVerifyMessage.d.ts.map +1 -1
  205. package/dist/api/evm/protocol.d.ts +3 -0
  206. package/dist/api/evm/protocol.d.ts.map +1 -0
  207. package/dist/api/filecoin/FilecoinGetAddress.d.ts +1 -0
  208. package/dist/api/filecoin/FilecoinGetAddress.d.ts.map +1 -1
  209. package/dist/api/filecoin/FilecoinSignTransaction.d.ts +1 -0
  210. package/dist/api/filecoin/FilecoinSignTransaction.d.ts.map +1 -1
  211. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts +4 -3
  212. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts.map +1 -1
  213. package/dist/api/firmware/getBinary.d.ts +8 -4
  214. package/dist/api/firmware/getBinary.d.ts.map +1 -1
  215. package/dist/api/firmware/uploadFirmware.d.ts.map +1 -1
  216. package/dist/api/helpers/filesystemValidation.d.ts +3 -0
  217. package/dist/api/helpers/filesystemValidation.d.ts.map +1 -1
  218. package/dist/api/helpers/paramsValidator.d.ts +1 -0
  219. package/dist/api/helpers/paramsValidator.d.ts.map +1 -1
  220. package/dist/api/helpers/protocolV2FileWrite.d.ts +42 -0
  221. package/dist/api/helpers/protocolV2FileWrite.d.ts.map +1 -0
  222. package/dist/api/index.d.ts +9 -25
  223. package/dist/api/index.d.ts.map +1 -1
  224. package/dist/api/kaspa/KaspaGetAddress.d.ts +4 -0
  225. package/dist/api/kaspa/KaspaGetAddress.d.ts.map +1 -1
  226. package/dist/api/kaspa/KaspaSignTransaction.d.ts +9 -1
  227. package/dist/api/kaspa/KaspaSignTransaction.d.ts.map +1 -1
  228. package/dist/api/kaspa/helpers/TransferSerialize.d.ts.map +1 -1
  229. package/dist/api/lightning/LnurlAuth.d.ts +0 -4
  230. package/dist/api/lightning/LnurlAuth.d.ts.map +1 -1
  231. package/dist/api/near/NearGetAddress.d.ts +1 -0
  232. package/dist/api/near/NearGetAddress.d.ts.map +1 -1
  233. package/dist/api/near/NearSignTransaction.d.ts +1 -0
  234. package/dist/api/near/NearSignTransaction.d.ts.map +1 -1
  235. package/dist/api/nem/NEMGetAddress.d.ts +1 -0
  236. package/dist/api/nem/NEMGetAddress.d.ts.map +1 -1
  237. package/dist/api/nem/NEMSignTransaction.d.ts +1 -0
  238. package/dist/api/nem/NEMSignTransaction.d.ts.map +1 -1
  239. package/dist/api/neo/NeoGetAddress.d.ts.map +1 -1
  240. package/dist/api/neo/NeoSignTransaction.d.ts.map +1 -1
  241. package/dist/api/nervos/NervosGetAddress.d.ts.map +1 -1
  242. package/dist/api/nervos/NervosSignTransaction.d.ts.map +1 -1
  243. package/dist/api/nexa/NexaGetAddress.d.ts.map +1 -1
  244. package/dist/api/nexa/NexaSignTransaction.d.ts +1 -0
  245. package/dist/api/nexa/NexaSignTransaction.d.ts.map +1 -1
  246. package/dist/api/nostr/NostrDecryptMessage.d.ts +1 -0
  247. package/dist/api/nostr/NostrDecryptMessage.d.ts.map +1 -1
  248. package/dist/api/nostr/NostrEncryptMessage.d.ts +1 -0
  249. package/dist/api/nostr/NostrEncryptMessage.d.ts.map +1 -1
  250. package/dist/api/nostr/NostrGetPublicKey.d.ts +1 -0
  251. package/dist/api/nostr/NostrGetPublicKey.d.ts.map +1 -1
  252. package/dist/api/nostr/NostrSignEvent.d.ts +1 -0
  253. package/dist/api/nostr/NostrSignEvent.d.ts.map +1 -1
  254. package/dist/api/nostr/NostrSignSchnorr.d.ts +1 -0
  255. package/dist/api/nostr/NostrSignSchnorr.d.ts.map +1 -1
  256. package/dist/api/polkadot/PolkadotGetAddress.d.ts +2 -1
  257. package/dist/api/polkadot/PolkadotGetAddress.d.ts.map +1 -1
  258. package/dist/api/polkadot/PolkadotSignTransaction.d.ts +1 -0
  259. package/dist/api/polkadot/PolkadotSignTransaction.d.ts.map +1 -1
  260. package/dist/api/polkadot/networks.d.ts +1 -1
  261. package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts +1 -0
  262. package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts.map +1 -1
  263. package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts +1 -0
  264. package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts.map +1 -1
  265. package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts +1 -0
  266. package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts.map +1 -1
  267. package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts +1 -0
  268. package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts.map +1 -1
  269. package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts +7 -0
  270. package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts.map +1 -0
  271. package/dist/api/protocol-v2/DeviceInfoGet.d.ts +1 -1
  272. package/dist/api/protocol-v2/DeviceInfoGet.d.ts.map +1 -1
  273. package/dist/api/protocol-v2/DeviceReboot.d.ts +1 -0
  274. package/dist/api/protocol-v2/DeviceReboot.d.ts.map +1 -1
  275. package/dist/api/protocol-v2/DeviceStatusGet.d.ts +7 -0
  276. package/dist/api/protocol-v2/DeviceStatusGet.d.ts.map +1 -0
  277. package/dist/api/protocol-v2/DeviceUploadNft.d.ts +31 -0
  278. package/dist/api/protocol-v2/DeviceUploadNft.d.ts.map +1 -0
  279. package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts +27 -0
  280. package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts.map +1 -0
  281. package/dist/api/protocol-v2/FilesystemFormat.d.ts +1 -0
  282. package/dist/api/protocol-v2/FilesystemFormat.d.ts.map +1 -1
  283. package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts +1 -0
  284. package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts.map +1 -1
  285. package/dist/api/protocol-v2/Ping.d.ts +3 -0
  286. package/dist/api/protocol-v2/Ping.d.ts.map +1 -1
  287. package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts +1 -0
  288. package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts.map +1 -1
  289. package/dist/api/protocol-v2/helpers.d.ts +1 -1
  290. package/dist/api/protocol-v2/helpers.d.ts.map +1 -1
  291. package/dist/api/scdo/ScdoGetAddress.d.ts.map +1 -1
  292. package/dist/api/scdo/ScdoSignMessage.d.ts.map +1 -1
  293. package/dist/api/scdo/ScdoSignTransaction.d.ts.map +1 -1
  294. package/dist/api/solana/SolGetAddress.d.ts +1 -0
  295. package/dist/api/solana/SolGetAddress.d.ts.map +1 -1
  296. package/dist/api/solana/SolSignMessage.d.ts +2 -1
  297. package/dist/api/solana/SolSignMessage.d.ts.map +1 -1
  298. package/dist/api/solana/SolSignOffchainMessage.d.ts +2 -1
  299. package/dist/api/solana/SolSignOffchainMessage.d.ts.map +1 -1
  300. package/dist/api/solana/SolSignTransaction.d.ts +3 -2
  301. package/dist/api/solana/SolSignTransaction.d.ts.map +1 -1
  302. package/dist/api/starcoin/StarcoinGetAddress.d.ts +1 -0
  303. package/dist/api/starcoin/StarcoinGetAddress.d.ts.map +1 -1
  304. package/dist/api/starcoin/StarcoinGetPublicKey.d.ts +1 -0
  305. package/dist/api/starcoin/StarcoinGetPublicKey.d.ts.map +1 -1
  306. package/dist/api/starcoin/StarcoinSignMessage.d.ts +1 -0
  307. package/dist/api/starcoin/StarcoinSignMessage.d.ts.map +1 -1
  308. package/dist/api/starcoin/StarcoinSignTransaction.d.ts +1 -0
  309. package/dist/api/starcoin/StarcoinSignTransaction.d.ts.map +1 -1
  310. package/dist/api/starcoin/StarcoinVerifyMessage.d.ts +1 -0
  311. package/dist/api/starcoin/StarcoinVerifyMessage.d.ts.map +1 -1
  312. package/dist/api/stellar/StellarGetAddress.d.ts +1 -2
  313. package/dist/api/stellar/StellarGetAddress.d.ts.map +1 -1
  314. package/dist/api/stellar/StellarSignTransaction.d.ts +1 -2
  315. package/dist/api/stellar/StellarSignTransaction.d.ts.map +1 -1
  316. package/dist/api/sui/SuiGetAddress.d.ts +2 -1
  317. package/dist/api/sui/SuiGetAddress.d.ts.map +1 -1
  318. package/dist/api/sui/SuiGetPublicKey.d.ts +2 -1
  319. package/dist/api/sui/SuiGetPublicKey.d.ts.map +1 -1
  320. package/dist/api/sui/SuiSignMessage.d.ts +2 -1
  321. package/dist/api/sui/SuiSignMessage.d.ts.map +1 -1
  322. package/dist/api/sui/SuiSignTransaction.d.ts +2 -1
  323. package/dist/api/sui/SuiSignTransaction.d.ts.map +1 -1
  324. package/dist/api/ton/TonGetAddress.d.ts +2 -1
  325. package/dist/api/ton/TonGetAddress.d.ts.map +1 -1
  326. package/dist/api/ton/TonSignData.d.ts +1 -0
  327. package/dist/api/ton/TonSignData.d.ts.map +1 -1
  328. package/dist/api/ton/TonSignMessage.d.ts +2 -1
  329. package/dist/api/ton/TonSignMessage.d.ts.map +1 -1
  330. package/dist/api/ton/TonSignProof.d.ts +2 -1
  331. package/dist/api/ton/TonSignProof.d.ts.map +1 -1
  332. package/dist/api/tron/TronGetAddress.d.ts +1 -0
  333. package/dist/api/tron/TronGetAddress.d.ts.map +1 -1
  334. package/dist/api/tron/TronSignMessage.d.ts +6 -1
  335. package/dist/api/tron/TronSignMessage.d.ts.map +1 -1
  336. package/dist/api/tron/TronSignTransaction.d.ts +2 -1
  337. package/dist/api/tron/TronSignTransaction.d.ts.map +1 -1
  338. package/dist/api/utils.d.ts +2 -1
  339. package/dist/api/utils.d.ts.map +1 -1
  340. package/dist/api/xrp/XrpGetAddress.d.ts +1 -0
  341. package/dist/api/xrp/XrpGetAddress.d.ts.map +1 -1
  342. package/dist/api/xrp/XrpSignTransaction.d.ts +1 -0
  343. package/dist/api/xrp/XrpSignTransaction.d.ts.map +1 -1
  344. package/dist/constants/index.d.ts +1 -1
  345. package/dist/constants/index.d.ts.map +1 -1
  346. package/dist/core/RequestQueue.d.ts.map +1 -1
  347. package/dist/core/deviceEventRegistration.d.ts +13 -0
  348. package/dist/core/deviceEventRegistration.d.ts.map +1 -0
  349. package/dist/core/index.d.ts +3 -1
  350. package/dist/core/index.d.ts.map +1 -1
  351. package/dist/core/uiPromiseRegistry.d.ts +6 -0
  352. package/dist/core/uiPromiseRegistry.d.ts.map +1 -0
  353. package/dist/data-manager/DataManager.d.ts +9 -3
  354. package/dist/data-manager/DataManager.d.ts.map +1 -1
  355. package/dist/data-manager/TransportManager.d.ts.map +1 -1
  356. package/dist/data-manager/connectSettings.d.ts.map +1 -1
  357. package/dist/device/Device.d.ts +71 -17
  358. package/dist/device/Device.d.ts.map +1 -1
  359. package/dist/device/DeviceCommands.d.ts +8 -6
  360. package/dist/device/DeviceCommands.d.ts.map +1 -1
  361. package/dist/device/DeviceConnector.d.ts +3 -2
  362. package/dist/device/DeviceConnector.d.ts.map +1 -1
  363. package/dist/device/DeviceFeaturesState.d.ts +3 -0
  364. package/dist/device/DeviceFeaturesState.d.ts.map +1 -0
  365. package/dist/device/DevicePool.d.ts +5 -2
  366. package/dist/device/DevicePool.d.ts.map +1 -1
  367. package/dist/device/DeviceStateMapper.d.ts +13 -0
  368. package/dist/device/DeviceStateMapper.d.ts.map +1 -0
  369. package/dist/device/DeviceStateProjector.d.ts +7 -0
  370. package/dist/device/DeviceStateProjector.d.ts.map +1 -0
  371. package/dist/device/DeviceStateStore.d.ts +21 -0
  372. package/dist/device/DeviceStateStore.d.ts.map +1 -0
  373. package/dist/device/DeviceWalletSessionStore.d.ts +27 -0
  374. package/dist/device/DeviceWalletSessionStore.d.ts.map +1 -0
  375. package/dist/device/cloneDeviceState.d.ts +2 -0
  376. package/dist/device/cloneDeviceState.d.ts.map +1 -0
  377. package/dist/device/deviceIdentity.d.ts +5 -0
  378. package/dist/device/deviceIdentity.d.ts.map +1 -0
  379. package/dist/deviceProfile/buildDeviceFeatures.d.ts +9 -3
  380. package/dist/deviceProfile/buildDeviceFeatures.d.ts.map +1 -1
  381. package/dist/deviceProfile/index.d.ts +0 -1
  382. package/dist/deviceProfile/index.d.ts.map +1 -1
  383. package/dist/deviceProfile/protocolV2DeviceIdentity.d.ts +7 -0
  384. package/dist/deviceProfile/protocolV2DeviceIdentity.d.ts.map +1 -0
  385. package/dist/events/device.d.ts +16 -2
  386. package/dist/events/device.d.ts.map +1 -1
  387. package/dist/events/logBlockEvent.d.ts +2 -0
  388. package/dist/events/logBlockEvent.d.ts.map +1 -1
  389. package/dist/events/ui-promise.d.ts +4 -2
  390. package/dist/events/ui-promise.d.ts.map +1 -1
  391. package/dist/events/ui-request.d.ts +50 -4
  392. package/dist/events/ui-request.d.ts.map +1 -1
  393. package/dist/events/ui-response.d.ts +10 -2
  394. package/dist/events/ui-response.d.ts.map +1 -1
  395. package/dist/index.d.ts +1593 -773
  396. package/dist/index.js +8507 -3894
  397. package/dist/inject.d.ts +6 -1
  398. package/dist/inject.d.ts.map +1 -1
  399. package/dist/lowLevelInject.d.ts.map +1 -1
  400. package/dist/protocols/protocol-v2/deviceSession.d.ts +7 -0
  401. package/dist/protocols/protocol-v2/deviceSession.d.ts.map +1 -0
  402. package/dist/protocols/protocol-v2/features.d.ts +21 -17
  403. package/dist/protocols/protocol-v2/features.d.ts.map +1 -1
  404. package/dist/protocols/protocol-v2/firmware.d.ts.map +1 -1
  405. package/dist/protocols/protocol-v2/index.d.ts +3 -2
  406. package/dist/protocols/protocol-v2/index.d.ts.map +1 -1
  407. package/dist/protocols/protocol-v2/resources.d.ts +30 -0
  408. package/dist/protocols/protocol-v2/resources.d.ts.map +1 -0
  409. package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts +17 -0
  410. package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts.map +1 -0
  411. package/dist/protocols/protocol-v2/uiInteraction.d.ts +42 -0
  412. package/dist/protocols/protocol-v2/uiInteraction.d.ts.map +1 -0
  413. package/dist/protocols/protocol-v2/unlockPolicy.d.ts +2 -0
  414. package/dist/protocols/protocol-v2/unlockPolicy.d.ts.map +1 -0
  415. package/dist/protocols/protocol-v2/unlockPolicyRunner.d.ts +22 -0
  416. package/dist/protocols/protocol-v2/unlockPolicyRunner.d.ts.map +1 -0
  417. package/dist/protocols/protocol-v2/walletSession.d.ts +27 -0
  418. package/dist/protocols/protocol-v2/walletSession.d.ts.map +1 -0
  419. package/dist/topLevelInject.d.ts.map +1 -1
  420. package/dist/types/api/checkAllFirmwareRelease.d.ts +27 -4
  421. package/dist/types/api/checkAllFirmwareRelease.d.ts.map +1 -1
  422. package/dist/types/api/detectDeviceConnectProtocol.d.ts +4 -0
  423. package/dist/types/api/detectDeviceConnectProtocol.d.ts.map +1 -0
  424. package/dist/types/api/deviceSettings.d.ts +11 -2
  425. package/dist/types/api/deviceSettings.d.ts.map +1 -1
  426. package/dist/types/api/deviceUnlock.d.ts +6 -2
  427. package/dist/types/api/deviceUnlock.d.ts.map +1 -1
  428. package/dist/types/api/export.d.ts +4 -2
  429. package/dist/types/api/export.d.ts.map +1 -1
  430. package/dist/types/api/firmwareUpdate.d.ts +8 -1
  431. package/dist/types/api/firmwareUpdate.d.ts.map +1 -1
  432. package/dist/types/api/getDeviceState.d.ts +12 -0
  433. package/dist/types/api/getDeviceState.d.ts.map +1 -0
  434. package/dist/types/api/getFeatures.d.ts.map +1 -1
  435. package/dist/types/api/getOnekeyFeatures.d.ts.map +1 -1
  436. package/dist/types/api/getPassphraseState.d.ts +2 -10
  437. package/dist/types/api/getPassphraseState.d.ts.map +1 -1
  438. package/dist/types/api/index.d.ts +23 -30
  439. package/dist/types/api/index.d.ts.map +1 -1
  440. package/dist/types/api/kaspaSignTransaction.d.ts +42 -4
  441. package/dist/types/api/kaspaSignTransaction.d.ts.map +1 -1
  442. package/dist/types/api/openWalletSession.d.ts +35 -0
  443. package/dist/types/api/openWalletSession.d.ts.map +1 -0
  444. package/dist/types/api/protocolV2.d.ts +18 -84
  445. package/dist/types/api/protocolV2.d.ts.map +1 -1
  446. package/dist/types/api/sessionCache.d.ts +13 -0
  447. package/dist/types/api/sessionCache.d.ts.map +1 -0
  448. package/dist/types/device.d.ts +134 -10
  449. package/dist/types/device.d.ts.map +1 -1
  450. package/dist/types/params.d.ts +1 -0
  451. package/dist/types/params.d.ts.map +1 -1
  452. package/dist/types/settings.d.ts +44 -21
  453. package/dist/types/settings.d.ts.map +1 -1
  454. package/dist/utils/assets.d.ts +2 -1
  455. package/dist/utils/assets.d.ts.map +1 -1
  456. package/dist/utils/deviceFeaturesCompat.d.ts +13 -0
  457. package/dist/utils/deviceFeaturesCompat.d.ts.map +1 -0
  458. package/dist/utils/deviceFeaturesUtils.d.ts +10 -3
  459. package/dist/utils/deviceFeaturesUtils.d.ts.map +1 -1
  460. package/dist/utils/deviceInfoUtils.d.ts +9 -9
  461. package/dist/utils/deviceInfoUtils.d.ts.map +1 -1
  462. package/dist/utils/deviceSettings.d.ts +38 -7
  463. package/dist/utils/deviceSettings.d.ts.map +1 -1
  464. package/dist/utils/deviceVersionUtils.d.ts +7 -5
  465. package/dist/utils/deviceVersionUtils.d.ts.map +1 -1
  466. package/dist/utils/homescreen.d.ts +4 -0
  467. package/dist/utils/homescreen.d.ts.map +1 -1
  468. package/dist/utils/index.d.ts +6 -3
  469. package/dist/utils/index.d.ts.map +1 -1
  470. package/dist/utils/networkUtils.d.ts +10 -1
  471. package/dist/utils/networkUtils.d.ts.map +1 -1
  472. package/dist/utils/patch.d.ts +1 -1
  473. package/dist/utils/patch.d.ts.map +1 -1
  474. package/dist/utils/pro2Nft.d.ts +31 -0
  475. package/dist/utils/pro2Nft.d.ts.map +1 -0
  476. package/dist/utils/pro2Wallpaper.d.ts +22 -0
  477. package/dist/utils/pro2Wallpaper.d.ts.map +1 -0
  478. package/dist/utils/tracing.d.ts.map +1 -1
  479. package/dist/utils/uiProgressThrottle.d.ts +3 -0
  480. package/dist/utils/uiProgressThrottle.d.ts.map +1 -0
  481. package/package.json +4 -4
  482. package/src/api/BaseMethod.ts +53 -20
  483. package/src/api/CheckAllFirmwareRelease.ts +340 -1
  484. package/src/api/CheckBootloaderRelease.ts +1 -2
  485. package/src/api/CheckFirmwareRelease.ts +1 -2
  486. package/src/api/CipherKeyValue.ts +4 -0
  487. package/src/api/ClearSessionCache.ts +32 -0
  488. package/src/api/DetectDeviceConnectProtocol.ts +18 -0
  489. package/src/api/DirList.ts +9 -4
  490. package/src/api/DirMake.ts +7 -4
  491. package/src/api/DirRemove.ts +7 -4
  492. package/src/api/FileDelete.ts +7 -4
  493. package/src/api/FileRead.ts +15 -9
  494. package/src/api/FileWrite.ts +26 -181
  495. package/src/api/FirmwareUpdate.ts +17 -14
  496. package/src/api/FirmwareUpdateV2.ts +137 -54
  497. package/src/api/FirmwareUpdateV3.ts +9 -13
  498. package/src/api/FirmwareUpdateV4.ts +805 -626
  499. package/src/api/GetDeviceState.ts +59 -0
  500. package/src/api/GetFeatures.ts +6 -4
  501. package/src/api/GetOnekeyFeatures.ts +1 -75
  502. package/src/api/GetPassphraseState.ts +36 -21
  503. package/src/api/OpenWalletSession.ts +268 -0
  504. package/src/api/PathInfo.ts +9 -4
  505. package/src/api/PromptWebDeviceAccess.ts +2 -7
  506. package/src/api/SearchDevices.ts +31 -4
  507. package/src/api/UploadPortfolio.ts +40 -0
  508. package/src/api/alephium/AlephiumGetAddress.ts +0 -4
  509. package/src/api/alephium/AlephiumSignMessage.ts +0 -4
  510. package/src/api/alephium/AlephiumSignTransaction.ts +2 -6
  511. package/src/api/algo/AlgoGetAddress.ts +4 -0
  512. package/src/api/algo/AlgoSignTransaction.ts +4 -0
  513. package/src/api/allnetwork/AllNetworkGetAddress.ts +21 -21
  514. package/src/api/allnetwork/AllNetworkGetAddressBase.ts +45 -32
  515. package/src/api/aptos/AptosGetAddress.ts +4 -0
  516. package/src/api/aptos/AptosGetPublicKey.ts +4 -0
  517. package/src/api/aptos/AptosSignInMessage.ts +4 -0
  518. package/src/api/aptos/AptosSignMessage.ts +4 -0
  519. package/src/api/aptos/AptosSignTransaction.ts +4 -0
  520. package/src/api/benfen/BenfenGetAddress.ts +11 -7
  521. package/src/api/benfen/BenfenGetPublicKey.ts +0 -4
  522. package/src/api/benfen/BenfenSignMessage.ts +0 -4
  523. package/src/api/benfen/BenfenSignTransaction.ts +0 -4
  524. package/src/api/btc/BTCGetAddress.ts +8 -1
  525. package/src/api/btc/BTCGetPublicKey.ts +9 -2
  526. package/src/api/btc/BTCSignMessage.ts +8 -1
  527. package/src/api/btc/BTCSignPsbt.ts +4 -0
  528. package/src/api/btc/BTCSignTransaction.ts +8 -1
  529. package/src/api/btc/BTCVerifyMessage.ts +8 -1
  530. package/src/api/btc/helpers/versionLimit.ts +7 -4
  531. package/src/api/cardano/CardanoGetAddress.ts +4 -0
  532. package/src/api/cardano/CardanoGetPublicKey.ts +4 -0
  533. package/src/api/cardano/CardanoSignMessage.ts +5 -1
  534. package/src/api/cardano/CardanoSignTransaction.ts +5 -1
  535. package/src/api/conflux/ConfluxGetAddress.ts +6 -0
  536. package/src/api/conflux/ConfluxSignMessage.ts +6 -0
  537. package/src/api/conflux/ConfluxSignMessageCIP23.ts +6 -0
  538. package/src/api/conflux/ConfluxSignTransaction.ts +8 -5
  539. package/src/api/cosmos/CosmosGetAddress.ts +4 -0
  540. package/src/api/cosmos/CosmosGetPublicKey.ts +4 -0
  541. package/src/api/cosmos/CosmosSignTransaction.ts +4 -0
  542. package/src/api/device/DeviceCancel.ts +5 -0
  543. package/src/api/device/DeviceChangePin.ts +28 -0
  544. package/src/api/device/DeviceFullyUploadResource.ts +4 -5
  545. package/src/api/device/DeviceLock.ts +5 -0
  546. package/src/api/device/DeviceRebootToBoardloader.ts +5 -0
  547. package/src/api/device/DeviceRebootToBootloader.ts +5 -0
  548. package/src/api/device/DeviceSettings.ts +195 -1
  549. package/src/api/device/DeviceSupportFeatures.ts +4 -0
  550. package/src/api/device/DeviceUnlock.ts +21 -3
  551. package/src/api/device/DeviceUpdateBootloader.ts +1 -2
  552. package/src/api/device/DeviceWipe.ts +25 -0
  553. package/src/api/device/PreInitialize.ts +4 -0
  554. package/src/api/dynex/DnxGetAddress.ts +0 -6
  555. package/src/api/dynex/DnxSignTransaction.ts +0 -6
  556. package/src/api/evm/EVMGetAddress.ts +6 -2
  557. package/src/api/evm/EVMGetPublicKey.ts +6 -2
  558. package/src/api/evm/EVMSignMessage.ts +6 -2
  559. package/src/api/evm/EVMSignMessageEIP712.ts +1 -11
  560. package/src/api/evm/EVMSignTransaction.ts +6 -2
  561. package/src/api/evm/EVMSignTypedData.ts +42 -50
  562. package/src/api/evm/EVMVerifyMessage.ts +6 -2
  563. package/src/api/evm/legacyV1/getAddress.ts +2 -2
  564. package/src/api/evm/legacyV1/getPublicKey.ts +2 -2
  565. package/src/api/evm/legacyV1/signMessage.ts +2 -2
  566. package/src/api/evm/legacyV1/signTypedData.ts +2 -2
  567. package/src/api/evm/legacyV1/signTypedHash.ts +2 -2
  568. package/src/api/evm/legacyV1/verifyMessage.ts +2 -2
  569. package/src/api/evm/protocol.ts +6 -0
  570. package/src/api/filecoin/FilecoinGetAddress.ts +4 -0
  571. package/src/api/filecoin/FilecoinSignTransaction.ts +4 -0
  572. package/src/api/firmware/FirmwareUpdateBaseMethod.ts +30 -15
  573. package/src/api/firmware/getBinary.ts +8 -3
  574. package/src/api/firmware/uploadFirmware.ts +17 -4
  575. package/src/api/helpers/batchGetPublickeys.ts +2 -2
  576. package/src/api/helpers/filesystemValidation.ts +61 -0
  577. package/src/api/helpers/paramsValidator.ts +1 -1
  578. package/src/api/helpers/protocolV2FileWrite.ts +338 -0
  579. package/src/api/index.ts +10 -26
  580. package/src/api/kaspa/KaspaGetAddress.ts +7 -0
  581. package/src/api/kaspa/KaspaSignTransaction.ts +369 -29
  582. package/src/api/kaspa/helpers/TransferSerialize.ts +17 -7
  583. package/src/api/lightning/LnurlAuth.ts +0 -4
  584. package/src/api/near/NearGetAddress.ts +4 -0
  585. package/src/api/near/NearSignTransaction.ts +4 -0
  586. package/src/api/nem/NEMGetAddress.ts +4 -0
  587. package/src/api/nem/NEMSignTransaction.ts +4 -0
  588. package/src/api/neo/NeoGetAddress.ts +0 -4
  589. package/src/api/neo/NeoSignTransaction.ts +0 -4
  590. package/src/api/nervos/NervosGetAddress.ts +0 -4
  591. package/src/api/nervos/NervosSignTransaction.ts +2 -6
  592. package/src/api/nexa/NexaGetAddress.ts +0 -4
  593. package/src/api/nexa/NexaSignTransaction.ts +3 -5
  594. package/src/api/nostr/NostrDecryptMessage.ts +4 -0
  595. package/src/api/nostr/NostrEncryptMessage.ts +4 -0
  596. package/src/api/nostr/NostrGetPublicKey.ts +4 -0
  597. package/src/api/nostr/NostrSignEvent.ts +4 -0
  598. package/src/api/nostr/NostrSignSchnorr.ts +4 -0
  599. package/src/api/polkadot/PolkadotGetAddress.ts +4 -0
  600. package/src/api/polkadot/PolkadotSignTransaction.ts +4 -0
  601. package/src/api/polkadot/networks.ts +3 -3
  602. package/src/api/protocol-v2/DeviceFactoryInfoGet.ts +5 -2
  603. package/src/api/protocol-v2/DeviceFactoryInfoSet.ts +5 -2
  604. package/src/api/protocol-v2/DeviceFirmwareUpdate.ts +8 -5
  605. package/src/api/protocol-v2/DeviceGetFirmwareUpdateStatus.ts +10 -6
  606. package/src/api/protocol-v2/DeviceGetOnboardingStatus.ts +21 -0
  607. package/src/api/protocol-v2/DeviceInfoGet.ts +8 -15
  608. package/src/api/protocol-v2/DeviceReboot.ts +7 -3
  609. package/src/api/protocol-v2/DeviceStatusGet.ts +19 -0
  610. package/src/api/protocol-v2/DeviceUploadNft.ts +197 -0
  611. package/src/api/protocol-v2/DeviceUploadWallpaper.ts +134 -0
  612. package/src/api/protocol-v2/FilesystemFormat.ts +9 -3
  613. package/src/api/protocol-v2/FilesystemPermissionFix.ts +5 -2
  614. package/src/api/protocol-v2/Ping.ts +37 -3
  615. package/src/api/protocol-v2/ProtocolInfoRequest.ts +8 -3
  616. package/src/api/protocol-v2/helpers.ts +17 -17
  617. package/src/api/scdo/ScdoGetAddress.ts +0 -4
  618. package/src/api/scdo/ScdoSignMessage.ts +0 -4
  619. package/src/api/scdo/ScdoSignTransaction.ts +0 -4
  620. package/src/api/solana/SolGetAddress.ts +4 -0
  621. package/src/api/solana/SolSignMessage.ts +5 -1
  622. package/src/api/solana/SolSignOffchainMessage.ts +5 -1
  623. package/src/api/solana/SolSignTransaction.ts +6 -2
  624. package/src/api/starcoin/StarcoinGetAddress.ts +4 -0
  625. package/src/api/starcoin/StarcoinGetPublicKey.ts +4 -0
  626. package/src/api/starcoin/StarcoinSignMessage.ts +4 -0
  627. package/src/api/starcoin/StarcoinSignTransaction.ts +4 -0
  628. package/src/api/starcoin/StarcoinVerifyMessage.ts +4 -0
  629. package/src/api/stellar/StellarGetAddress.ts +1 -10
  630. package/src/api/stellar/StellarSignTransaction.ts +1 -14
  631. package/src/api/sui/SuiGetAddress.ts +5 -1
  632. package/src/api/sui/SuiGetPublicKey.ts +5 -1
  633. package/src/api/sui/SuiSignMessage.ts +5 -1
  634. package/src/api/sui/SuiSignTransaction.ts +5 -1
  635. package/src/api/ton/TonGetAddress.ts +5 -1
  636. package/src/api/ton/TonSignData.ts +5 -1
  637. package/src/api/ton/TonSignMessage.ts +5 -1
  638. package/src/api/ton/TonSignProof.ts +5 -1
  639. package/src/api/tron/TronGetAddress.ts +4 -0
  640. package/src/api/tron/TronSignMessage.ts +19 -8
  641. package/src/api/tron/TronSignTransaction.ts +5 -1
  642. package/src/api/utils.ts +7 -3
  643. package/src/api/xrp/XrpGetAddress.ts +4 -0
  644. package/src/api/xrp/XrpSignTransaction.ts +5 -1
  645. package/src/constants/index.ts +1 -4
  646. package/src/core/RequestQueue.ts +1 -0
  647. package/src/core/deviceEventRegistration.ts +27 -0
  648. package/src/core/index.ts +365 -152
  649. package/src/core/uiPromiseRegistry.ts +63 -0
  650. package/src/data/messages/messages-protocol-v2.json +1138 -441
  651. package/src/data/messages/messages.json +286 -1
  652. package/src/data-manager/DataManager.ts +88 -16
  653. package/src/data-manager/TransportManager.ts +7 -1
  654. package/src/data-manager/connectSettings.ts +4 -0
  655. package/src/device/Device.ts +891 -295
  656. package/src/device/DeviceCommands.ts +193 -158
  657. package/src/device/DeviceConnector.ts +43 -20
  658. package/src/device/DeviceFeaturesState.ts +25 -0
  659. package/src/device/DevicePool.ts +86 -22
  660. package/src/device/DeviceStateMapper.ts +374 -0
  661. package/src/device/DeviceStateProjector.ts +94 -0
  662. package/src/device/DeviceStateStore.ts +201 -0
  663. package/src/device/DeviceWalletSessionStore.ts +144 -0
  664. package/src/device/cloneDeviceState.ts +39 -0
  665. package/src/device/deviceIdentity.ts +18 -0
  666. package/src/deviceProfile/buildDeviceFeatures.ts +223 -189
  667. package/src/deviceProfile/index.ts +0 -1
  668. package/src/deviceProfile/protocolV2DeviceIdentity.ts +35 -0
  669. package/src/events/device.ts +22 -1
  670. package/src/events/logBlockEvent.ts +80 -2
  671. package/src/events/ui-promise.ts +4 -2
  672. package/src/events/ui-request.ts +61 -4
  673. package/src/events/ui-response.ts +12 -2
  674. package/src/inject.ts +73 -43
  675. package/src/lowLevelInject.ts +6 -3
  676. package/src/protocols/protocol-v2/deviceSession.ts +24 -0
  677. package/src/protocols/protocol-v2/features.ts +100 -33
  678. package/src/protocols/protocol-v2/firmware.ts +3 -1
  679. package/src/protocols/protocol-v2/index.ts +8 -1
  680. package/src/protocols/protocol-v2/resources.ts +390 -0
  681. package/src/protocols/protocol-v2/settingsUnlockPolicy.ts +65 -0
  682. package/src/protocols/protocol-v2/uiInteraction.ts +250 -0
  683. package/src/protocols/protocol-v2/unlockPolicy.ts +1 -0
  684. package/src/protocols/protocol-v2/unlockPolicyRunner.ts +118 -0
  685. package/src/protocols/protocol-v2/walletSession.ts +463 -0
  686. package/src/topLevelInject.ts +6 -3
  687. package/src/types/api/checkAllFirmwareRelease.ts +48 -4
  688. package/src/types/api/detectDeviceConnectProtocol.ts +6 -0
  689. package/src/types/api/deviceSettings.ts +26 -2
  690. package/src/types/api/deviceUnlock.ts +13 -2
  691. package/src/types/api/export.ts +9 -0
  692. package/src/types/api/firmwareUpdate.ts +26 -5
  693. package/src/types/api/getDeviceState.ts +19 -0
  694. package/src/types/api/getFeatures.ts +3 -0
  695. package/src/types/api/getOnekeyFeatures.ts +3 -0
  696. package/src/types/api/getPassphraseState.ts +9 -11
  697. package/src/types/api/index.ts +38 -64
  698. package/src/types/api/kaspaSignTransaction.ts +60 -4
  699. package/src/types/api/openWalletSession.ts +54 -0
  700. package/src/types/api/protocolV2.ts +33 -141
  701. package/src/types/api/sessionCache.ts +19 -0
  702. package/src/types/device.ts +200 -10
  703. package/src/types/params.ts +9 -2
  704. package/src/types/settings.ts +76 -24
  705. package/src/utils/assets.ts +4 -1
  706. package/src/utils/deviceFeaturesCompat.ts +185 -0
  707. package/src/utils/deviceFeaturesUtils.ts +65 -47
  708. package/src/utils/deviceInfoUtils.ts +29 -69
  709. package/src/utils/deviceSettings.ts +174 -39
  710. package/src/utils/deviceVersionUtils.ts +25 -44
  711. package/src/utils/findDefectiveBatchDevice.ts +3 -3
  712. package/src/utils/homescreen.ts +36 -0
  713. package/src/utils/index.ts +27 -3
  714. package/src/utils/networkUtils.ts +274 -16
  715. package/src/utils/pro2Nft.ts +142 -0
  716. package/src/utils/pro2Wallpaper.ts +130 -0
  717. package/src/utils/tracing.ts +3 -1
  718. package/src/utils/uiProgressThrottle.ts +63 -0
  719. package/tsconfig.type-tests.json +12 -0
  720. package/dist/api/GetDeviceInfo.d.ts +0 -9
  721. package/dist/api/GetDeviceInfo.d.ts.map +0 -1
  722. package/dist/api/firmware/progressThrottle.d.ts +0 -3
  723. package/dist/api/firmware/progressThrottle.d.ts.map +0 -1
  724. package/dist/api/protocol-v2/FilesystemDiskControl.d.ts +0 -13
  725. package/dist/api/protocol-v2/FilesystemDiskControl.d.ts.map +0 -1
  726. package/dist/deviceProfile/buildDeviceProfile.d.ts +0 -21
  727. package/dist/deviceProfile/buildDeviceProfile.d.ts.map +0 -1
  728. package/dist/types/api/getDeviceInfo.d.ts +0 -87
  729. package/dist/types/api/getDeviceInfo.d.ts.map +0 -1
  730. package/src/api/GetDeviceInfo.ts +0 -145
  731. package/src/api/firmware/progressThrottle.ts +0 -44
  732. package/src/api/protocol-v2/FilesystemDiskControl.ts +0 -50
  733. package/src/deviceProfile/buildDeviceProfile.ts +0 -352
  734. package/src/types/api/getDeviceInfo.ts +0 -101
@@ -1,11 +1,7 @@
1
1
  import semver from 'semver';
2
2
  import { isNaN } from 'lodash';
3
3
  import { EDeviceType, type EFirmwareType, ERRORS, HardwareErrorCode } from '@onekeyfe/hd-shared';
4
- import {
5
- Enum_Capability,
6
- type DeviceSessionGet,
7
- type GetPassphraseState,
8
- } from '@onekeyfe/hd-transport';
4
+ import { Enum_Capability, type GetPassphraseState } from '@onekeyfe/hd-transport';
9
5
 
10
6
  import { toHardened } from '../api/helpers/pathUtils';
11
7
  import { DeviceModelToTypes, DeviceTypeToModels } from '../types';
@@ -17,12 +13,11 @@ import { PROTOBUF_MESSAGE_CONFIG } from '../data-manager/MessagesConfig';
17
13
  import { getDeviceType } from './deviceInfoUtils';
18
14
  import { getDeviceFirmwareVersion } from './deviceVersionUtils';
19
15
  import { existCapability } from './capabilitieUtils';
16
+ import { getProtocolV2WalletSession } from '../protocols/protocol-v2/walletSession';
20
17
 
21
18
  import type { Device } from '../device/Device';
22
19
  import type { Features, IDeviceType, SupportFeatureType } from '../types';
23
20
 
24
- type DeviceSessionGetMessage = DeviceSessionGet;
25
-
26
21
  export const getSupportProtocolV1MessageSchema = (
27
22
  features: Features | undefined
28
23
  ): { messages: JSON; protocolV1MessageSchema: ProtocolV1MessageSchema } => {
@@ -35,6 +30,18 @@ export const getSupportProtocolV1MessageSchema = (
35
30
  const currentDeviceVersion = getDeviceFirmwareVersion(features).join('.');
36
31
  const deviceType = getDeviceType(features);
37
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
+
38
45
  const deviceVersionConfigs =
39
46
  PROTOBUF_MESSAGE_CONFIG[deviceType] ||
40
47
  (DeviceTypeToModels[deviceType] &&
@@ -60,11 +67,16 @@ export const getSupportProtocolV1MessageSchema = (
60
67
  };
61
68
  };
62
69
 
63
- export const supportInputPinOnSoftware = (features: Features): SupportFeatureType => {
70
+ export const supportInputPinOnSoftware = (features?: Features): SupportFeatureType => {
64
71
  if (!features) return { support: false };
65
72
 
66
73
  const deviceType = getDeviceType(features);
67
- if (deviceType === EDeviceType.Touch || deviceType === EDeviceType.Pro) {
74
+ if (
75
+ deviceType === EDeviceType.Touch ||
76
+ deviceType === EDeviceType.Pro ||
77
+ deviceType === EDeviceType.Pro2 ||
78
+ deviceType === EDeviceType.Neo
79
+ ) {
68
80
  return { support: false };
69
81
  }
70
82
 
@@ -79,7 +91,8 @@ export const supportNewPassphrase = (features?: Features): SupportFeatureType =>
79
91
  if (
80
92
  deviceType === EDeviceType.Touch ||
81
93
  deviceType === EDeviceType.Pro ||
82
- deviceType === EDeviceType.Pro2
94
+ deviceType === EDeviceType.Pro2 ||
95
+ deviceType === EDeviceType.Neo
83
96
  ) {
84
97
  return { support: true };
85
98
  }
@@ -94,10 +107,29 @@ export const getPassphraseStateWithRefreshDeviceInfo = async (
94
107
  options?: {
95
108
  expectPassphraseState?: string;
96
109
  onlyMainPin?: boolean;
97
- allowCreateAttachPin?: boolean;
98
110
  initSession?: boolean;
111
+ deriveCardano?: boolean;
112
+ rejectAttachPinForMainWallet?: boolean;
99
113
  }
100
114
  ) => {
115
+ if (device.isProtocolV2()) {
116
+ if (!device.features) {
117
+ return {
118
+ passphraseState: undefined,
119
+ newSession: undefined,
120
+ unlockedAttachPin: undefined,
121
+ };
122
+ }
123
+
124
+ return getProtocolV2WalletSession(device, {
125
+ initSession: options?.initSession,
126
+ expectedPassphraseState: options?.expectPassphraseState,
127
+ onlyMainPin: options?.onlyMainPin,
128
+ deriveCardano: options?.deriveCardano,
129
+ rejectAttachPinForMainWallet: options?.rejectAttachPinForMainWallet,
130
+ });
131
+ }
132
+
101
133
  const { features } = device;
102
134
  const locked = features?.unlocked === false;
103
135
  const deviceType = device.getCurrentDeviceType();
@@ -113,7 +145,8 @@ export const getPassphraseStateWithRefreshDeviceInfo = async (
113
145
  const isModeT =
114
146
  deviceType === EDeviceType.Touch ||
115
147
  deviceType === EDeviceType.Pro ||
116
- deviceType === EDeviceType.Pro2;
148
+ deviceType === EDeviceType.Pro2 ||
149
+ deviceType === EDeviceType.Neo;
117
150
 
118
151
  // 如果可以获取到 passphraseState,但是设备 features 显示设备未开启 passphrase,需要刷新设备状态
119
152
  // if passphraseState can be obtained, but the device features show that the device has not enabled passphrase, the device status needs to be refreshed
@@ -130,12 +163,16 @@ export const getPassphraseStateWithRefreshDeviceInfo = async (
130
163
 
131
164
  // Attach to pin try to fix internal state
132
165
  const deviceId = device.getCurrentDeviceId();
166
+ let existingSessionId: string | null | undefined;
167
+ if (!options?.initSession && typeof device.getInternalState === 'function') {
168
+ existingSessionId = device.getInternalState();
169
+ }
133
170
  device.updateInternalState(
134
171
  device.getCurrentPassphraseProtection() ?? false,
135
172
  passphraseState,
136
173
  deviceId,
137
174
  newSession,
138
- options?.initSession ? null : device.features?.sessionId
175
+ options?.initSession ? null : existingSessionId
139
176
  );
140
177
 
141
178
  return {
@@ -145,7 +182,7 @@ export const getPassphraseStateWithRefreshDeviceInfo = async (
145
182
  };
146
183
  };
147
184
 
148
- // 仅适用于 Protocol V1 Pro:Pro2 走独立版本线,不能套用 4.15.0 门槛
185
+ // Applies to Protocol V1 Pro only; Pro2 has an independent version line.
149
186
  const supportProSeriesAttachPinPassphrase = (deviceType: IDeviceType, firmwareVersion: string) =>
150
187
  deviceType === EDeviceType.Pro && semver.gte(firmwareVersion, '4.15.0');
151
188
 
@@ -154,8 +191,9 @@ export const getPassphraseState = async (
154
191
  options?: {
155
192
  expectPassphraseState?: string;
156
193
  onlyMainPin?: boolean;
157
- allowCreateAttachPin?: boolean;
158
194
  initSession?: boolean;
195
+ deriveCardano?: boolean;
196
+ rejectAttachPinForMainWallet?: boolean;
159
197
  }
160
198
  ): Promise<{
161
199
  passphraseState: string | undefined;
@@ -164,7 +202,7 @@ export const getPassphraseState = async (
164
202
  }> => {
165
203
  const { features, commands } = device;
166
204
 
167
- // 设备尚未建立任何状态时无法判定,保持旧的空返回语义
205
+ // Preserve legacy empty-result semantics until the device has established state.
168
206
  if (!features)
169
207
  return { passphraseState: undefined, newSession: undefined, unlockedAttachPin: undefined };
170
208
 
@@ -172,29 +210,13 @@ export const getPassphraseState = async (
172
210
  const deviceType = device.getCurrentDeviceType();
173
211
 
174
212
  if (device.isProtocolV2()) {
175
- const payload: DeviceSessionGetMessage = {};
176
- const cachedSessionId =
177
- typeof device.getInternalState === 'function' ? device.getInternalState() : undefined;
178
- if (cachedSessionId) {
179
- payload.session_id = cachedSessionId;
180
- }
181
-
182
- const { message, type } = await commands.typedCall(
183
- 'DeviceSessionGet',
184
- 'DeviceSession',
185
- payload
186
- );
187
-
188
- // @ts-expect-error
189
- if (type === 'CallMethodError') {
190
- throw ERRORS.TypedError(HardwareErrorCode.RuntimeError, 'Get the passphrase state error');
191
- }
192
-
193
- return {
194
- passphraseState: message.btc_test_address,
195
- newSession: message.session_id,
196
- unlockedAttachPin: features.unlockedAttachPin ?? undefined,
197
- };
213
+ return getProtocolV2WalletSession(device, {
214
+ initSession: options?.initSession,
215
+ expectedPassphraseState: options?.expectPassphraseState,
216
+ onlyMainPin: options?.onlyMainPin,
217
+ deriveCardano: options?.deriveCardano,
218
+ rejectAttachPinForMainWallet: options?.rejectAttachPinForMainWallet,
219
+ });
198
220
  }
199
221
 
200
222
  const supportAttachPinCapability = existCapability(
@@ -202,16 +224,12 @@ export const getPassphraseState = async (
202
224
  Enum_Capability.Capability_AttachToPin
203
225
  );
204
226
  const supportGetPassphraseState =
205
- supportAttachPinCapability ||
206
- supportProSeriesAttachPinPassphrase(deviceType, firmwareVersion);
227
+ supportAttachPinCapability || supportProSeriesAttachPinPassphrase(deviceType, firmwareVersion);
207
228
 
208
229
  if (supportGetPassphraseState) {
209
- const payload: GetPassphraseState = options?.onlyMainPin
210
- ? { _only_main_pin: true }
211
- : { passphrase_state: options?.expectPassphraseState };
212
- if (options?.allowCreateAttachPin) {
213
- payload.allow_create_attach_pin = true;
214
- }
230
+ const payload: GetPassphraseState = {
231
+ passphrase_state: options?.onlyMainPin ? undefined : options?.expectPassphraseState,
232
+ };
215
233
 
216
234
  const { message, type } = await commands.typedCall(
217
235
  'GetPassphraseState',
@@ -1,51 +1,21 @@
1
- import { isEmpty } from 'lodash';
2
- import { EDeviceType, EFirmwareType } from '@onekeyfe/hd-shared';
3
- import { Enum_Capability } from '@onekeyfe/hd-transport';
1
+ import { EDeviceType } from '@onekeyfe/hd-shared';
4
2
 
5
3
  import { DeviceModelToTypes } from '../types';
6
- import { existCapability } from './capabilitieUtils';
4
+ import {
5
+ resolveDeviceBleName,
6
+ resolveDeviceFirmwareType,
7
+ resolveDeviceSerialNo,
8
+ resolveDeviceType,
9
+ } from './deviceFeaturesCompat';
7
10
 
8
- import type { Features, IDeviceModel, IDeviceType, IVersionRange } from '../types';
11
+ import type { IDeviceModel, IDeviceType, IVersionRange } from '../types';
12
+ import type { DeviceFeaturesInput } from './deviceFeaturesCompat';
9
13
 
10
14
  /**
11
15
  * get device type by features
12
16
  */
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
- };
17
+ export const getDeviceType = (features?: DeviceFeaturesInput): IDeviceType =>
18
+ resolveDeviceType(features);
49
19
 
50
20
  /**
51
21
  * get device type by ble name
@@ -61,6 +31,7 @@ export const getDeviceTypeByBleName = (name?: string): IDeviceType => {
61
31
  if (/^Touch/i.test(name)) return EDeviceType.Touch;
62
32
 
63
33
  if (/\bPro\s*2\b/i.test(name) || /^Pro2/i.test(name)) return EDeviceType.Pro2;
34
+ if (/\bNeo\b/i.test(name) || /^Neo/i.test(name)) return EDeviceType.Neo;
64
35
  if (/\bPro\b/i.test(name) || /^Pro/i.test(name)) return EDeviceType.Pro;
65
36
 
66
37
  return EDeviceType.Unknown;
@@ -70,33 +41,35 @@ 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' && features.label.length > 0) {
95
68
  return features.label;
96
69
  }
97
70
 
98
71
  const bleName = getDeviceBleName(features);
99
- if (!isEmpty(bleName)) return bleName;
72
+ if (bleName) return bleName;
100
73
 
101
74
  if (deviceType === EDeviceType.ClassicPure) {
102
75
  return 'OneKey Classic 1S';
@@ -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);
@@ -121,6 +94,7 @@ export const getMethodVersionRange = (
121
94
  }
122
95
 
123
96
  const modelFallbacks: IDeviceModel[] = [
97
+ 'model_pro2',
124
98
  'model_classic1s',
125
99
  'model_classic',
126
100
  'model_mini',
@@ -138,19 +112,5 @@ export const getMethodVersionRange = (
138
112
  return undefined;
139
113
  };
140
114
 
141
- export const isMethodVersionRangeUnsupported = (versionRange?: IVersionRange): boolean =>
142
- versionRange?.unsupported === true;
143
-
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
- };
115
+ export const getFirmwareType = (features?: DeviceFeaturesInput) =>
116
+ resolveDeviceFirmwareType(features);
@@ -1,6 +1,52 @@
1
1
  import { EDeviceType } from '@onekeyfe/hd-shared';
2
+ import { Enum_SafetyCheckLevel } from '@onekeyfe/hd-transport';
2
3
 
3
4
  import type { IDeviceType } from '../types';
5
+ import type { DeviceSettingsParams } from '../types/api/deviceSettings';
6
+ import type { SafetyCheckLevel } from '@onekeyfe/hd-transport';
7
+
8
+ export type DeviceSettingsProtocol = 'V1' | 'V2';
9
+ export type DeviceSettingsField = keyof DeviceSettingsParams;
10
+
11
+ export const DEVICE_SETTINGS_SHARED_FIELDS = [
12
+ 'language',
13
+ 'label',
14
+ 'usePassphrase',
15
+ 'autoLockDelayMs',
16
+ 'autoShutdownDelayMs',
17
+ 'hapticFeedback',
18
+ 'bluetoothEnabled',
19
+ ] as const satisfies readonly DeviceSettingsField[];
20
+
21
+ export const DEVICE_SETTINGS_V1_ONLY_FIELDS = [
22
+ 'homescreen',
23
+ 'passphraseSource',
24
+ 'displayRotation',
25
+ 'passphraseAlwaysOnDevice',
26
+ 'safetyChecks',
27
+ 'experimentalFeatures',
28
+ 'changeBrightness',
29
+ ] as const satisfies readonly DeviceSettingsField[];
30
+
31
+ export const DEVICE_SETTINGS_V2_ONLY_FIELDS = [
32
+ 'brightness',
33
+ 'airgapMode',
34
+ 'animationEnabled',
35
+ 'tapToWake',
36
+ 'deviceNameDisplayEnabled',
37
+ 'fidoEnabled',
38
+ 'usbLockEnabled',
39
+ 'randomKeypad',
40
+ ] as const satisfies readonly DeviceSettingsField[];
41
+
42
+ export const PROTOCOL_V2_NEVER_TIMEOUT_MS = 0x10000000;
43
+
44
+ export const normalizeSafetyCheckLevel = (
45
+ value: SafetyCheckLevel | null | undefined
46
+ ): Enum_SafetyCheckLevel | null | undefined => {
47
+ if (typeof value === 'number' || value === null || value === undefined) return value;
48
+ return Enum_SafetyCheckLevel[value];
49
+ };
4
50
 
5
51
  export const LANGUAGE_LABELS = {
6
52
  en: 'English',
@@ -19,6 +65,50 @@ export const LANGUAGE_LABELS = {
19
65
  export type LanguageKey = keyof typeof LANGUAGE_LABELS;
20
66
  export type LanguageOption = { code: LanguageKey; label: (typeof LANGUAGE_LABELS)[LanguageKey] };
21
67
 
68
+ export const PROTOCOL_V2_LANGUAGE_BY_KEY: Record<LanguageKey, string> = {
69
+ en: 'en-Latn-US',
70
+ zh_cn: 'zh-Hans-CN',
71
+ zh_hk: 'zh-Hant-HK',
72
+ ja: 'ja-Jpan-JP',
73
+ ko: 'ko-Kore-KR',
74
+ fr: 'fr-Latn-FR',
75
+ de: 'de-Latn-DE',
76
+ ru: 'ru-Cyrl-RU',
77
+ es: 'es-Latn-ES',
78
+ it: 'it-Latn-IT',
79
+ pt_br: 'pt-Latn-BR',
80
+ };
81
+
82
+ export const mapLanguageToProtocolV2 = (language?: string) =>
83
+ language ? PROTOCOL_V2_LANGUAGE_BY_KEY[language as LanguageKey] ?? language : undefined;
84
+
85
+ const PROTOCOL_V2_LANGUAGE_KEY_BY_TAG = Object.fromEntries(
86
+ Object.entries(PROTOCOL_V2_LANGUAGE_BY_KEY).map(([key, tag]) => [tag, key])
87
+ ) as Record<string, LanguageKey>;
88
+
89
+ export const mapLanguageFromProtocolV2 = (language?: string) =>
90
+ language ? PROTOCOL_V2_LANGUAGE_KEY_BY_TAG[language] ?? language : undefined;
91
+
92
+ const PRO2_LANGUAGE_OPTIONS = [
93
+ { code: 'en', label: 'English' },
94
+ { code: 'zh_cn', label: '简体中文' },
95
+ { code: 'zh_hk', label: '繁體中文(香港)' },
96
+ { code: 'zh-Hant-TW', label: '繁體中文(台灣)' },
97
+ { code: 'ja', label: '日本語' },
98
+ { code: 'ko', label: '한국어' },
99
+ { code: 'fr', label: 'Français' },
100
+ { code: 'de', label: 'Deutsch' },
101
+ { code: 'ru', label: 'Русский' },
102
+ { code: 'es', label: 'Español' },
103
+ { code: 'it', label: 'Italiano' },
104
+ { code: 'pt_br', label: 'Portuguese (Brazil)' },
105
+ { code: 'vi-Latn-VN', label: 'Tiếng Việt' },
106
+ { code: 'tr-Latn-TR', label: 'Türkçe' },
107
+ { code: 'id-Latn-ID', label: 'Bahasa Indonesia' },
108
+ { code: 'fil-Latn-PH', label: 'Filipino' },
109
+ { code: 'uk-Cyrl-UA', label: 'Українська' },
110
+ ] as const;
111
+
22
112
  export const getLanguageConfig = (deviceType: IDeviceType): Record<string, string>[] => {
23
113
  let keys: LanguageKey[] = [];
24
114
 
@@ -36,6 +126,9 @@ export const getLanguageConfig = (deviceType: IDeviceType): Record<string, strin
36
126
  case EDeviceType.Pro:
37
127
  keys = Object.keys(LANGUAGE_LABELS) as LanguageKey[];
38
128
  break;
129
+ case EDeviceType.Pro2:
130
+ case EDeviceType.Neo:
131
+ return PRO2_LANGUAGE_OPTIONS.map(option => ({ ...option }));
39
132
  default:
40
133
  keys = [];
41
134
  break;
@@ -44,66 +137,108 @@ export const getLanguageConfig = (deviceType: IDeviceType): Record<string, strin
44
137
  return keys.map(key => ({ code: key, label: LANGUAGE_LABELS[key] }));
45
138
  };
46
139
 
47
- export type DurationParts = {
48
- seconds: number;
49
- minute: number;
50
- hour: number;
51
- day: number;
140
+ export type DeviceSettingsDurationOption = {
141
+ label: string;
142
+ valueMs: number;
52
143
  };
53
144
 
54
- export const getAutoLockOptions = (_deviceType: IDeviceType): DurationParts[] => {
55
- switch (_deviceType) {
145
+ export type DeviceSettingsValueOption<T> = {
146
+ label: string;
147
+ value: T;
148
+ };
149
+
150
+ const durationOption = (valueMs: number): DeviceSettingsDurationOption => {
151
+ if (valueMs === 0 || valueMs === PROTOCOL_V2_NEVER_TIMEOUT_MS) {
152
+ return { label: 'Never', valueMs };
153
+ }
154
+ if (valueMs < 60_000) {
155
+ return { label: `${valueMs / 1000} seconds`, valueMs };
156
+ }
157
+ const minutes = valueMs / 60_000;
158
+ return { label: `${minutes} ${minutes === 1 ? 'minute' : 'minutes'}`, valueMs };
159
+ };
160
+
161
+ const withNever = (
162
+ values: readonly number[],
163
+ protocol: DeviceSettingsProtocol
164
+ ): DeviceSettingsDurationOption[] =>
165
+ [...values, protocol === 'V2' ? PROTOCOL_V2_NEVER_TIMEOUT_MS : 0].map(durationOption);
166
+
167
+ export const getAutoLockOptions = (
168
+ deviceType: IDeviceType,
169
+ protocol: DeviceSettingsProtocol
170
+ ): DeviceSettingsDurationOption[] => {
171
+ switch (deviceType) {
56
172
  case EDeviceType.Mini:
57
173
  case EDeviceType.Classic:
58
174
  case EDeviceType.Classic1s:
59
175
  case EDeviceType.ClassicPure:
60
- return [
61
- { seconds: 0, minute: 1, hour: 0, day: 0 },
62
- { seconds: 0, minute: 2, hour: 0, day: 0 },
63
- { seconds: 0, minute: 5, hour: 0, day: 0 },
64
- { seconds: 0, minute: 10, hour: 0, day: 0 },
65
- { seconds: 0, minute: 0, hour: 0, day: 0 },
66
- ];
176
+ return withNever([60_000, 120_000, 300_000, 600_000], protocol);
67
177
  case EDeviceType.Touch:
68
178
  case EDeviceType.Pro:
69
- return [
70
- { seconds: 30, minute: 0, hour: 0, day: 0 },
71
- { seconds: 0, minute: 1, hour: 0, day: 0 },
72
- { seconds: 0, minute: 2, hour: 0, day: 0 },
73
- { seconds: 0, minute: 5, hour: 0, day: 0 },
74
- { seconds: 0, minute: 10, hour: 0, day: 0 },
75
- { seconds: 0, minute: 30, hour: 0, day: 0 },
76
- { seconds: 0, minute: 0, hour: 0, day: 0 },
77
- ];
179
+ case EDeviceType.Pro2:
180
+ case EDeviceType.Neo:
181
+ return withNever([30_000, 60_000, 120_000, 300_000, 600_000, 1_800_000], protocol);
78
182
  default:
79
183
  return [];
80
184
  }
81
185
  };
82
186
 
83
- export const getAutoShutDownOptions = (_deviceType: IDeviceType): DurationParts[] => {
84
- switch (_deviceType) {
187
+ export const getAutoShutDownOptions = (
188
+ deviceType: IDeviceType,
189
+ protocol: DeviceSettingsProtocol
190
+ ): DeviceSettingsDurationOption[] => {
191
+ switch (deviceType) {
85
192
  case EDeviceType.Mini:
86
193
  return [];
87
194
  case EDeviceType.Classic:
88
195
  case EDeviceType.Classic1s:
89
196
  case EDeviceType.ClassicPure:
90
- return [
91
- { seconds: 0, minute: 1, hour: 0, day: 0 },
92
- { seconds: 0, minute: 3, hour: 0, day: 0 },
93
- { seconds: 0, minute: 5, hour: 0, day: 0 },
94
- { seconds: 0, minute: 10, hour: 0, day: 0 },
95
- { seconds: 0, minute: 0, hour: 0, day: 0 },
96
- ];
197
+ return withNever([60_000, 180_000, 300_000, 600_000], protocol);
97
198
  case EDeviceType.Touch:
98
199
  case EDeviceType.Pro:
99
- return [
100
- { seconds: 0, minute: 1, hour: 0, day: 0 },
101
- { seconds: 0, minute: 2, hour: 0, day: 0 },
102
- { seconds: 0, minute: 5, hour: 0, day: 0 },
103
- { seconds: 0, minute: 10, hour: 0, day: 0 },
104
- { seconds: 0, minute: 0, hour: 0, day: 0 },
105
- ];
200
+ return withNever([60_000, 120_000, 300_000, 600_000], protocol);
201
+ case EDeviceType.Pro2:
202
+ case EDeviceType.Neo:
203
+ return withNever([60_000, 120_000, 300_000, 600_000, 1_800_000], protocol);
106
204
  default:
107
205
  return [];
108
206
  }
109
207
  };
208
+
209
+ export type DeviceSettingsCapabilities = {
210
+ protocol: DeviceSettingsProtocol;
211
+ supportedFields: readonly DeviceSettingsField[];
212
+ languageOptions: ReadonlyArray<Record<string, string>>;
213
+ autoLockDelayOptions: readonly DeviceSettingsDurationOption[];
214
+ autoShutdownDelayOptions: readonly DeviceSettingsDurationOption[];
215
+ ranges: {
216
+ brightness?: { min: number; max: number };
217
+ };
218
+ safetyCheckOptions: ReadonlyArray<DeviceSettingsValueOption<Enum_SafetyCheckLevel>>;
219
+ onDeviceConfirmationFields: readonly DeviceSettingsField[];
220
+ };
221
+
222
+ export const getDeviceSettingsCapabilities = (
223
+ deviceType: IDeviceType,
224
+ protocol: DeviceSettingsProtocol
225
+ ): DeviceSettingsCapabilities => ({
226
+ protocol,
227
+ supportedFields:
228
+ protocol === 'V2'
229
+ ? [...DEVICE_SETTINGS_SHARED_FIELDS, ...DEVICE_SETTINGS_V2_ONLY_FIELDS]
230
+ : [...DEVICE_SETTINGS_SHARED_FIELDS, ...DEVICE_SETTINGS_V1_ONLY_FIELDS],
231
+ languageOptions: getLanguageConfig(deviceType),
232
+ autoLockDelayOptions: getAutoLockOptions(deviceType, protocol),
233
+ autoShutdownDelayOptions: getAutoShutDownOptions(deviceType, protocol),
234
+ ranges: protocol === 'V2' ? { brightness: { min: 10, max: 100 } } : {},
235
+ safetyCheckOptions:
236
+ protocol === 'V1'
237
+ ? [
238
+ { label: 'Strict', value: Enum_SafetyCheckLevel.Strict },
239
+ { label: 'Prompt Always', value: Enum_SafetyCheckLevel.PromptAlways },
240
+ { label: 'Prompt Temporarily', value: Enum_SafetyCheckLevel.PromptTemporarily },
241
+ ]
242
+ : [],
243
+ onDeviceConfirmationFields: protocol === 'V2' ? ['usePassphrase', 'airgapMode'] : [],
244
+ });