@onetokenfe/hd-core 1.1.23

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 (382) hide show
  1. package/.eslintrc +6 -0
  2. package/README.md +32 -0
  3. package/__tests__/benfen.test.ts +68 -0
  4. package/__tests__/checkBootloaderReleast.test.ts +115 -0
  5. package/__tests__/evmSignTransaction.test.ts +419 -0
  6. package/jest.config.js +6 -0
  7. package/package.json +48 -0
  8. package/src/api/BaseMethod.ts +275 -0
  9. package/src/api/CheckAllFirmwareRelease.ts +73 -0
  10. package/src/api/CheckBLEFirmwareRelease.ts +23 -0
  11. package/src/api/CheckBootloaderRelease.ts +32 -0
  12. package/src/api/CheckBridgeRelease.ts +28 -0
  13. package/src/api/CheckBridgeStatus.ts +32 -0
  14. package/src/api/CheckFirmwareRelease.ts +31 -0
  15. package/src/api/CheckFirmwareTypeAvailable.tsx +30 -0
  16. package/src/api/CipherKeyValue.ts +68 -0
  17. package/src/api/FirmwareUpdate.ts +219 -0
  18. package/src/api/FirmwareUpdateV2.ts +408 -0
  19. package/src/api/FirmwareUpdateV3.ts +560 -0
  20. package/src/api/GetFeatures.ts +23 -0
  21. package/src/api/GetLogs.ts +40 -0
  22. package/src/api/GetOnetokenFeatures.ts +25 -0
  23. package/src/api/GetPassphraseState.ts +28 -0
  24. package/src/api/PromptWebDeviceAccess.ts +77 -0
  25. package/src/api/SearchDevices.ts +50 -0
  26. package/src/api/alephium/AlephiumGetAddress.ts +84 -0
  27. package/src/api/alephium/AlephiumSignMessage.ts +51 -0
  28. package/src/api/alephium/AlephiumSignTransaction.ts +135 -0
  29. package/src/api/algo/AlgoGetAddress.ts +73 -0
  30. package/src/api/algo/AlgoSignTransaction.ts +52 -0
  31. package/src/api/allnetwork/AllNetworkGetAddress.ts +88 -0
  32. package/src/api/allnetwork/AllNetworkGetAddressBase.ts +529 -0
  33. package/src/api/allnetwork/AllNetworkGetAddressByLoop.ts +162 -0
  34. package/src/api/aptos/AptosGetAddress.ts +129 -0
  35. package/src/api/aptos/AptosGetPublicKey.ts +64 -0
  36. package/src/api/aptos/AptosSignInMessage.ts +55 -0
  37. package/src/api/aptos/AptosSignMessage.ts +79 -0
  38. package/src/api/aptos/AptosSignTransaction.ts +72 -0
  39. package/src/api/benfen/BenfenGetAddress.ts +122 -0
  40. package/src/api/benfen/BenfenGetPublicKey.ts +68 -0
  41. package/src/api/benfen/BenfenSignMessage.ts +50 -0
  42. package/src/api/benfen/BenfenSignTransaction.ts +105 -0
  43. package/src/api/benfen/normalize.ts +51 -0
  44. package/src/api/btc/BTCGetAddress.ts +91 -0
  45. package/src/api/btc/BTCGetPublicKey.ts +174 -0
  46. package/src/api/btc/BTCSignMessage.ts +73 -0
  47. package/src/api/btc/BTCSignPsbt.ts +65 -0
  48. package/src/api/btc/BTCSignTransaction.ts +148 -0
  49. package/src/api/btc/BTCVerifyMessage.ts +46 -0
  50. package/src/api/btc/helpers/btcParamsUtils.ts +64 -0
  51. package/src/api/btc/helpers/signtx.ts +251 -0
  52. package/src/api/btc/helpers/signtxLegacy.ts +227 -0
  53. package/src/api/btc/helpers/versionLimit.ts +25 -0
  54. package/src/api/btc/helpers/xpubUtils.ts +132 -0
  55. package/src/api/cardano/CardanoGetAddress.ts +139 -0
  56. package/src/api/cardano/CardanoGetPublicKey.ts +72 -0
  57. package/src/api/cardano/CardanoSignMessage.ts +73 -0
  58. package/src/api/cardano/CardanoSignTransaction.ts +404 -0
  59. package/src/api/cardano/helper/addressParameters.ts +120 -0
  60. package/src/api/cardano/helper/auxiliaryData.ts +133 -0
  61. package/src/api/cardano/helper/cardanoInputs.ts +55 -0
  62. package/src/api/cardano/helper/cardanoOutputs.ts +89 -0
  63. package/src/api/cardano/helper/certificate.ts +246 -0
  64. package/src/api/cardano/helper/token.ts +44 -0
  65. package/src/api/cardano/helper/utils.ts +17 -0
  66. package/src/api/cardano/helper/witnesses.ts +62 -0
  67. package/src/api/conflux/ConfluxGetAddress.ts +78 -0
  68. package/src/api/conflux/ConfluxSignMessage.ts +49 -0
  69. package/src/api/conflux/ConfluxSignMessageCIP23.ts +49 -0
  70. package/src/api/conflux/ConfluxSignTransaction.ts +135 -0
  71. package/src/api/cosmos/CosmosGetAddress.ts +80 -0
  72. package/src/api/cosmos/CosmosGetPublicKey.ts +77 -0
  73. package/src/api/cosmos/CosmosSignTransaction.ts +68 -0
  74. package/src/api/device/DeviceBackup.ts +15 -0
  75. package/src/api/device/DeviceCancel.ts +15 -0
  76. package/src/api/device/DeviceChangePin.ts +25 -0
  77. package/src/api/device/DeviceFlags.ts +26 -0
  78. package/src/api/device/DeviceFullyUploadResource.ts +80 -0
  79. package/src/api/device/DeviceLock.ts +15 -0
  80. package/src/api/device/DeviceRebootToBoardloader.ts +30 -0
  81. package/src/api/device/DeviceRebootToBootloader.ts +28 -0
  82. package/src/api/device/DeviceRecovery.ts +44 -0
  83. package/src/api/device/DeviceReset.ts +46 -0
  84. package/src/api/device/DeviceSettings.ts +96 -0
  85. package/src/api/device/DeviceSupportFeatures.ts +29 -0
  86. package/src/api/device/DeviceUnlock.ts +13 -0
  87. package/src/api/device/DeviceUpdateBootloader.ts +111 -0
  88. package/src/api/device/DeviceUpdateReboot.ts +17 -0
  89. package/src/api/device/DeviceUploadResource.ts +204 -0
  90. package/src/api/device/DeviceVerify.ts +65 -0
  91. package/src/api/device/DeviceWipe.ts +15 -0
  92. package/src/api/dynex/DnxGetAddress.ts +75 -0
  93. package/src/api/dynex/DnxSignTransaction.ts +126 -0
  94. package/src/api/evm/EVMGetAddress.ts +88 -0
  95. package/src/api/evm/EVMGetPublicKey.ts +116 -0
  96. package/src/api/evm/EVMSignMessage.ts +49 -0
  97. package/src/api/evm/EVMSignMessageEIP712.ts +56 -0
  98. package/src/api/evm/EVMSignTransaction.ts +141 -0
  99. package/src/api/evm/EVMSignTypedData.ts +477 -0
  100. package/src/api/evm/EVMVerifyMessage.ts +46 -0
  101. package/src/api/evm/latest/getAddress.ts +13 -0
  102. package/src/api/evm/latest/getPublicKey.ts +17 -0
  103. package/src/api/evm/latest/signMessage.ts +19 -0
  104. package/src/api/evm/latest/signTransaction.ts +303 -0
  105. package/src/api/evm/latest/signTypedData.ts +34 -0
  106. package/src/api/evm/latest/signTypedHash.ts +46 -0
  107. package/src/api/evm/latest/verifyMessage.ts +15 -0
  108. package/src/api/evm/legacyV1/getAddress.ts +16 -0
  109. package/src/api/evm/legacyV1/getPublicKey.ts +20 -0
  110. package/src/api/evm/legacyV1/signMessage.ts +22 -0
  111. package/src/api/evm/legacyV1/signTransaction.ts +37 -0
  112. package/src/api/evm/legacyV1/signTypedData.ts +37 -0
  113. package/src/api/evm/legacyV1/signTypedHash.ts +50 -0
  114. package/src/api/evm/legacyV1/verifyMessage.ts +19 -0
  115. package/src/api/filecoin/FilecoinGetAddress.ts +80 -0
  116. package/src/api/filecoin/FilecoinSignTransaction.ts +57 -0
  117. package/src/api/firmware/FirmwareUpdateBaseMethod.ts +476 -0
  118. package/src/api/firmware/bootloaderHelper.ts +46 -0
  119. package/src/api/firmware/getBinary.ts +99 -0
  120. package/src/api/firmware/releaseHelper.ts +78 -0
  121. package/src/api/firmware/updateBootloader.ts +82 -0
  122. package/src/api/firmware/uploadFirmware.ts +541 -0
  123. package/src/api/helpers/batchGetPublickeys.ts +84 -0
  124. package/src/api/helpers/bigNumberUtils.ts +58 -0
  125. package/src/api/helpers/hexUtils.ts +111 -0
  126. package/src/api/helpers/paramsValidator.ts +165 -0
  127. package/src/api/helpers/pathUtils.ts +145 -0
  128. package/src/api/helpers/stringUtils.ts +11 -0
  129. package/src/api/helpers/typeNameUtils.ts +137 -0
  130. package/src/api/index.ts +161 -0
  131. package/src/api/kaspa/KaspaGetAddress.ts +103 -0
  132. package/src/api/kaspa/KaspaSignTransaction.ts +182 -0
  133. package/src/api/kaspa/helpers/BufferWriter.ts +177 -0
  134. package/src/api/kaspa/helpers/HashWriter.ts +74 -0
  135. package/src/api/kaspa/helpers/SignatureType.ts +7 -0
  136. package/src/api/kaspa/helpers/TransferSerialize.ts +144 -0
  137. package/src/api/lightning/LnurlAuth.ts +52 -0
  138. package/src/api/near/NearGetAddress.ts +75 -0
  139. package/src/api/near/NearSignTransaction.ts +46 -0
  140. package/src/api/nem/NEMGetAddress.ts +72 -0
  141. package/src/api/nem/NEMSignTransaction.ts +251 -0
  142. package/src/api/neo/NeoGetAddress.ts +80 -0
  143. package/src/api/neo/NeoSignTransaction.ts +59 -0
  144. package/src/api/nervos/NervosGetAddress.ts +80 -0
  145. package/src/api/nervos/NervosSignTransaction.ts +116 -0
  146. package/src/api/nexa/NexaGetAddress.ts +88 -0
  147. package/src/api/nexa/NexaSignTransaction.ts +107 -0
  148. package/src/api/nostr/NostrDecryptMessage.ts +57 -0
  149. package/src/api/nostr/NostrEncryptMessage.ts +57 -0
  150. package/src/api/nostr/NostrGetPublicKey.ts +74 -0
  151. package/src/api/nostr/NostrSignEvent.ts +65 -0
  152. package/src/api/nostr/NostrSignSchnorr.ts +52 -0
  153. package/src/api/nostr/helper/index.ts +28 -0
  154. package/src/api/polkadot/PolkadotGetAddress.ts +83 -0
  155. package/src/api/polkadot/PolkadotSignTransaction.ts +53 -0
  156. package/src/api/polkadot/networks.ts +72 -0
  157. package/src/api/scdo/ScdoGetAddress.ts +76 -0
  158. package/src/api/scdo/ScdoSignMessage.ts +45 -0
  159. package/src/api/scdo/ScdoSignTransaction.ts +106 -0
  160. package/src/api/solana/SolGetAddress.ts +68 -0
  161. package/src/api/solana/SolSignMessage.ts +61 -0
  162. package/src/api/solana/SolSignOffchainMessage.ts +61 -0
  163. package/src/api/solana/SolSignTransaction.ts +108 -0
  164. package/src/api/starcoin/StarcoinGetAddress.ts +69 -0
  165. package/src/api/starcoin/StarcoinGetPublicKey.ts +70 -0
  166. package/src/api/starcoin/StarcoinSignMessage.ts +42 -0
  167. package/src/api/starcoin/StarcoinSignTransaction.ts +38 -0
  168. package/src/api/starcoin/StarcoinVerifyMessage.ts +35 -0
  169. package/src/api/stellar/StellarGetAddress.ts +68 -0
  170. package/src/api/stellar/StellarSignTransaction.ts +220 -0
  171. package/src/api/sui/SuiGetAddress.ts +117 -0
  172. package/src/api/sui/SuiGetPublicKey.ts +66 -0
  173. package/src/api/sui/SuiSignMessage.ts +48 -0
  174. package/src/api/sui/SuiSignTransaction.ts +126 -0
  175. package/src/api/sui/normalize.ts +28 -0
  176. package/src/api/test/TestInitializeDeviceDuration.ts +22 -0
  177. package/src/api/ton/TonGetAddress.ts +96 -0
  178. package/src/api/ton/TonSignMessage.ts +217 -0
  179. package/src/api/ton/TonSignProof.ts +62 -0
  180. package/src/api/tron/TronGetAddress.ts +75 -0
  181. package/src/api/tron/TronSignMessage.ts +89 -0
  182. package/src/api/tron/TronSignTransaction.ts +214 -0
  183. package/src/api/u2f/GetNextU2FCounter.ts +15 -0
  184. package/src/api/u2f/SetU2FCounter.ts +19 -0
  185. package/src/api/utils.ts +23 -0
  186. package/src/api/xrp/XrpGetAddress.ts +96 -0
  187. package/src/api/xrp/XrpSignTransaction.ts +71 -0
  188. package/src/constants/errors.ts +15 -0
  189. package/src/constants/index.ts +2 -0
  190. package/src/constants/ui-request.ts +3 -0
  191. package/src/core/RequestQueue.ts +134 -0
  192. package/src/core/index.ts +1320 -0
  193. package/src/data/coins/bitcoin.json +44 -0
  194. package/src/data/config.ts +25 -0
  195. package/src/data/messages/messages.json +13167 -0
  196. package/src/data/messages/messages_legacy_v1.json +10282 -0
  197. package/src/data-manager/CoinManager.ts +31 -0
  198. package/src/data-manager/DataManager.ts +499 -0
  199. package/src/data-manager/MessagesConfig.ts +28 -0
  200. package/src/data-manager/TransportManager.ts +140 -0
  201. package/src/data-manager/connectSettings.ts +121 -0
  202. package/src/data-manager/index.ts +3 -0
  203. package/src/device/Device.ts +884 -0
  204. package/src/device/DeviceCommands.ts +631 -0
  205. package/src/device/DeviceConnector.ts +124 -0
  206. package/src/device/DeviceList.ts +39 -0
  207. package/src/device/DevicePool.ts +266 -0
  208. package/src/events/call.ts +95 -0
  209. package/src/events/core.ts +65 -0
  210. package/src/events/device.ts +92 -0
  211. package/src/events/firmware.ts +43 -0
  212. package/src/events/iframe.ts +55 -0
  213. package/src/events/index.ts +10 -0
  214. package/src/events/log.ts +23 -0
  215. package/src/events/logBlockEvent.ts +6 -0
  216. package/src/events/ui-promise.ts +14 -0
  217. package/src/events/ui-request.ts +216 -0
  218. package/src/events/ui-response.ts +59 -0
  219. package/src/events/utils.ts +19 -0
  220. package/src/index.ts +70 -0
  221. package/src/inject.ts +408 -0
  222. package/src/lowLevelInject.ts +61 -0
  223. package/src/topLevelInject.ts +62 -0
  224. package/src/types/api/alephiumGetAddress.ts +31 -0
  225. package/src/types/api/alephiumSignMessage.ts +14 -0
  226. package/src/types/api/alephiumSignTransaction.ts +18 -0
  227. package/src/types/api/algoGetAddress.ts +23 -0
  228. package/src/types/api/algoSignTransaction.ts +17 -0
  229. package/src/types/api/allNetworkGetAddress.ts +130 -0
  230. package/src/types/api/aptosGetAddress.ts +28 -0
  231. package/src/types/api/aptosGetPublicKey.ts +27 -0
  232. package/src/types/api/aptosSignInMessage.ts +17 -0
  233. package/src/types/api/aptosSignMessage.ts +26 -0
  234. package/src/types/api/aptosSignTransaction.ts +18 -0
  235. package/src/types/api/benfenGetAddress.ts +24 -0
  236. package/src/types/api/benfenGetPublicKey.ts +23 -0
  237. package/src/types/api/benfenSignMessage.ts +13 -0
  238. package/src/types/api/benfenSignTransaction.ts +19 -0
  239. package/src/types/api/btcGetAddress.ts +26 -0
  240. package/src/types/api/btcGetPublicKey.ts +26 -0
  241. package/src/types/api/btcSignMessage.ts +16 -0
  242. package/src/types/api/btcSignPsbt.ts +13 -0
  243. package/src/types/api/btcSignTransaction.ts +98 -0
  244. package/src/types/api/btcVerifyMessage.ts +15 -0
  245. package/src/types/api/cardano.ts +212 -0
  246. package/src/types/api/cardanoGetAddress.ts +49 -0
  247. package/src/types/api/cardanoGetPublicKey.ts +33 -0
  248. package/src/types/api/cardanoSignMessage.ts +31 -0
  249. package/src/types/api/cardanoSignTransaction.ts +8 -0
  250. package/src/types/api/checkAllFirmwareRelease.ts +34 -0
  251. package/src/types/api/checkBLEFirmwareRelease.ts +15 -0
  252. package/src/types/api/checkBootloaderRelease.ts +19 -0
  253. package/src/types/api/checkBridgeRelease.ts +14 -0
  254. package/src/types/api/checkBridgeStatus.ts +3 -0
  255. package/src/types/api/checkFirmwareRelease.ts +23 -0
  256. package/src/types/api/checkFirmwareTypeAvailable.ts +12 -0
  257. package/src/types/api/cipherKeyValue.ts +28 -0
  258. package/src/types/api/confluxGetAddress.ts +24 -0
  259. package/src/types/api/confluxSignMessage.ts +13 -0
  260. package/src/types/api/confluxSignMessageCIP23.ts +14 -0
  261. package/src/types/api/confluxSignTransaction.ts +32 -0
  262. package/src/types/api/cosmosGetAddress.ts +24 -0
  263. package/src/types/api/cosmosGetPublicKey.ts +28 -0
  264. package/src/types/api/cosmosSignTransaction.ts +17 -0
  265. package/src/types/api/deviceBackup.ts +4 -0
  266. package/src/types/api/deviceCancel.ts +4 -0
  267. package/src/types/api/deviceChangePin.ts +11 -0
  268. package/src/types/api/deviceFlags.ts +11 -0
  269. package/src/types/api/deviceFullyUploadResource.ts +15 -0
  270. package/src/types/api/deviceLock.ts +4 -0
  271. package/src/types/api/deviceRebootToBoardloader.ts +6 -0
  272. package/src/types/api/deviceRebootToBootloader.ts +4 -0
  273. package/src/types/api/deviceRecovery.ts +19 -0
  274. package/src/types/api/deviceReset.ts +20 -0
  275. package/src/types/api/deviceSettings.ts +23 -0
  276. package/src/types/api/deviceSupportFeatures.ts +6 -0
  277. package/src/types/api/deviceUnlock.ts +4 -0
  278. package/src/types/api/deviceUpdateBootloader.ts +13 -0
  279. package/src/types/api/deviceUpdateReboot.ts +3 -0
  280. package/src/types/api/deviceUploadResource.ts +21 -0
  281. package/src/types/api/deviceVerify.ts +15 -0
  282. package/src/types/api/deviceWipe.ts +4 -0
  283. package/src/types/api/dnxGetAddress.ts +23 -0
  284. package/src/types/api/dnxSignTransaction.ts +36 -0
  285. package/src/types/api/event.ts +8 -0
  286. package/src/types/api/evmGetAddress.ts +24 -0
  287. package/src/types/api/evmGetPublicKey.ts +36 -0
  288. package/src/types/api/evmSignMessage.ts +14 -0
  289. package/src/types/api/evmSignMessageEIP712.ts +14 -0
  290. package/src/types/api/evmSignTransaction.ts +80 -0
  291. package/src/types/api/evmSignTypedData.ts +42 -0
  292. package/src/types/api/evmVerifyMessage.ts +15 -0
  293. package/src/types/api/export.ts +194 -0
  294. package/src/types/api/filecoinGetAddress.ts +24 -0
  295. package/src/types/api/filecoinSignTransaction.ts +24 -0
  296. package/src/types/api/firmwareUpdate.ts +66 -0
  297. package/src/types/api/getFeatures.ts +4 -0
  298. package/src/types/api/getLogs.ts +3 -0
  299. package/src/types/api/getNextU2FCounter.ts +7 -0
  300. package/src/types/api/getOnetokenFeatures.ts +7 -0
  301. package/src/types/api/getPassphraseState.ts +6 -0
  302. package/src/types/api/index.ts +404 -0
  303. package/src/types/api/init.ts +11 -0
  304. package/src/types/api/kaspaGetAddress.ts +26 -0
  305. package/src/types/api/kaspaSignTransaction.ts +44 -0
  306. package/src/types/api/lnurlAuth.ts +22 -0
  307. package/src/types/api/nearGetAddress.ts +23 -0
  308. package/src/types/api/nearSignTransaction.ts +13 -0
  309. package/src/types/api/nemGetAddress.ts +24 -0
  310. package/src/types/api/nemSignTransaction.ts +118 -0
  311. package/src/types/api/neoGetAddress.ts +24 -0
  312. package/src/types/api/neoSignTransaction.ts +18 -0
  313. package/src/types/api/nervosGetAddress.ts +24 -0
  314. package/src/types/api/nervosSignTransaction.ts +19 -0
  315. package/src/types/api/nexaGetAddress.ts +26 -0
  316. package/src/types/api/nexaSignTransaction.ts +28 -0
  317. package/src/types/api/nostrDecryptMessage.ts +25 -0
  318. package/src/types/api/nostrEncryptMessage.ts +25 -0
  319. package/src/types/api/nostrGetPublicKey.ts +28 -0
  320. package/src/types/api/nostrSignEvent.ts +52 -0
  321. package/src/types/api/nostrSignSchnorr.ts +22 -0
  322. package/src/types/api/polkadotGetAddress.ts +30 -0
  323. package/src/types/api/polkadotSignTransaction.ts +19 -0
  324. package/src/types/api/promptWebDeviceAccess.ts +6 -0
  325. package/src/types/api/scdoGetAddress.ts +23 -0
  326. package/src/types/api/scdoSignMessage.ts +13 -0
  327. package/src/types/api/scdoSignTransaction.ts +24 -0
  328. package/src/types/api/searchDevices.ts +4 -0
  329. package/src/types/api/setU2FCounter.ts +7 -0
  330. package/src/types/api/solGetAddress.ts +23 -0
  331. package/src/types/api/solSignMessage.ts +17 -0
  332. package/src/types/api/solSignOffchainMessage.ts +24 -0
  333. package/src/types/api/solSignTransaction.ts +27 -0
  334. package/src/types/api/starcoinGetAddress.ts +23 -0
  335. package/src/types/api/starcoinGetPublicKey.ts +23 -0
  336. package/src/types/api/starcoinSignMessage.ts +13 -0
  337. package/src/types/api/starcoinSignTransaction.ts +13 -0
  338. package/src/types/api/starcoinVerifyMessage.ts +14 -0
  339. package/src/types/api/stellarGetAddress.ts +23 -0
  340. package/src/types/api/stellarSignTransaction.ts +154 -0
  341. package/src/types/api/suiGetAddress.ts +28 -0
  342. package/src/types/api/suiGetPublicKey.ts +27 -0
  343. package/src/types/api/suiSignMessage.ts +13 -0
  344. package/src/types/api/suiSignTransaction.ts +17 -0
  345. package/src/types/api/testInitializeDeviceDuration.ts +6 -0
  346. package/src/types/api/tonGetAddress.ts +34 -0
  347. package/src/types/api/tonSignMessage.ts +42 -0
  348. package/src/types/api/tonSignProof.ts +25 -0
  349. package/src/types/api/tronGetAddress.ts +23 -0
  350. package/src/types/api/tronSignMessage.ts +14 -0
  351. package/src/types/api/tronSignTransaction.ts +89 -0
  352. package/src/types/api/uiResponse.ts +3 -0
  353. package/src/types/api/xrpGetAddress.ts +28 -0
  354. package/src/types/api/xrpSignTransaction.ts +29 -0
  355. package/src/types/device.ts +194 -0
  356. package/src/types/firmware.ts +41 -0
  357. package/src/types/global.d.ts +3 -0
  358. package/src/types/index.ts +5 -0
  359. package/src/types/params.ts +64 -0
  360. package/src/types/settings.ts +144 -0
  361. package/src/utils/arrayUtils.ts +7 -0
  362. package/src/utils/assets.ts +5 -0
  363. package/src/utils/bridgeUpdate.ts +80 -0
  364. package/src/utils/capabilitieUtils.ts +12 -0
  365. package/src/utils/deviceFeaturesUtils.ts +352 -0
  366. package/src/utils/deviceInfoUtils.ts +167 -0
  367. package/src/utils/deviceSettings.ts +109 -0
  368. package/src/utils/deviceVersionUtils.ts +79 -0
  369. package/src/utils/findDefectiveBatchDevice.ts +39 -0
  370. package/src/utils/getMutex.ts +41 -0
  371. package/src/utils/getSynchronize.ts +25 -0
  372. package/src/utils/homescreen.ts +345 -0
  373. package/src/utils/index.ts +44 -0
  374. package/src/utils/logger.ts +190 -0
  375. package/src/utils/networkUtils.ts +25 -0
  376. package/src/utils/patch.ts +14 -0
  377. package/src/utils/promiseUtils.ts +4 -0
  378. package/src/utils/release.ts +42 -0
  379. package/src/utils/semver.test.js +53 -0
  380. package/src/utils/tracing.ts +238 -0
  381. package/src/utils/versionUtils.ts +120 -0
  382. package/tsconfig.json +11 -0
@@ -0,0 +1,194 @@
1
+ import { EDeviceType } from '@onetokenfe/hd-shared';
2
+
3
+ import type { IVersionArray } from './settings';
4
+ import type { PROTO } from '../constants';
5
+ import type { OneTokenDeviceCommType } from '@onetokenfe/hd-transport';
6
+
7
+ export type DeviceStatus = 'available' | 'occupied' | 'used';
8
+
9
+ export enum EOneTokenDeviceMode {
10
+ bootloader = 'bootloader',
11
+ normal = 'normal',
12
+ notInitialized = 'notInitialized',
13
+ backupMode = 'backupMode',
14
+ }
15
+
16
+ export type UnavailableCapability =
17
+ | 'no-capability'
18
+ | 'no-support'
19
+ | 'update-required'
20
+ | 'trezor-connect-outdated';
21
+
22
+ export type UnavailableCapabilities = { [key: string]: UnavailableCapability };
23
+
24
+ export type KnownDevice = {
25
+ connectId: string | null;
26
+ uuid: string;
27
+ deviceId: string | null;
28
+ deviceType: IDeviceType | null;
29
+ commType: OneTokenDeviceCommType | null;
30
+ path: string;
31
+ label: string;
32
+ bleName: string | null;
33
+ name: string;
34
+ error?: typeof undefined;
35
+ mode: EOneTokenDeviceMode;
36
+ features: PROTO.Features;
37
+ unavailableCapabilities: UnavailableCapabilities;
38
+ bleFirmwareVersion: IVersionArray | null;
39
+ firmwareVersion: IVersionArray | null;
40
+
41
+ // debug sdk
42
+ instanceId?: string;
43
+ sdkInstanceId?: string;
44
+ createdAt?: number;
45
+ };
46
+
47
+ export type SearchDevice = {
48
+ connectId: string | null;
49
+ uuid: string;
50
+ deviceId: string | null;
51
+ deviceType: IDeviceType;
52
+ name: string;
53
+ commType: OneTokenDeviceCommType;
54
+ };
55
+
56
+ // export type UnknownDevice = {
57
+ // type: 'unacquired';
58
+ // id?: null;
59
+ // path: string;
60
+ // label: string;
61
+ // error?: typeof undefined;
62
+ // features?: typeof undefined;
63
+ // firmware?: typeof undefined;
64
+ // firmwareRelease?: typeof undefined;
65
+ // status?: typeof undefined;
66
+ // mode?: typeof undefined;
67
+ // state?: typeof undefined;
68
+ // unavailableCapabilities?: typeof undefined;
69
+ // };
70
+
71
+ // export type UnreadableDevice = {
72
+ // type: 'unreadable';
73
+ // id?: null;
74
+ // path: string;
75
+ // label: string;
76
+ // error: string;
77
+ // features?: typeof undefined;
78
+ // firmware?: typeof undefined;
79
+ // firmwareRelease?: typeof undefined;
80
+ // status?: typeof undefined;
81
+ // mode?: typeof undefined;
82
+ // state?: typeof undefined;
83
+ // unavailableCapabilities?: typeof undefined;
84
+ // };
85
+
86
+ export type Device = KnownDevice;
87
+
88
+ export type Features = PROTO.Features;
89
+
90
+ export type onetokenfeatures = PROTO.onetokenfeatures;
91
+
92
+ export type IDeviceType =
93
+ | EDeviceType.Unknown
94
+ | EDeviceType.Classic
95
+ | EDeviceType.Classic1s
96
+ | EDeviceType.ClassicPure
97
+ | EDeviceType.Mini
98
+ | EDeviceType.Touch
99
+ | EDeviceType.Pro;
100
+
101
+ /**
102
+ * model_classic: 'classic' | 'classic1s' | 'classicpure'
103
+ * model_mini: 'classic' | 'classic1s' | 'classicpure' | 'mini'
104
+ * model_touch: 'touch' | 'pro'
105
+ */
106
+ export type IDeviceModel = 'model_classic' | 'model_mini' | 'model_touch' | 'model_classic1s';
107
+
108
+ export const DeviceModelToTypes: { [deviceModel in IDeviceModel]: IDeviceType[] } = {
109
+ model_mini: [
110
+ EDeviceType.Classic,
111
+ EDeviceType.Classic1s,
112
+ EDeviceType.ClassicPure,
113
+ EDeviceType.Mini,
114
+ ],
115
+ model_touch: [EDeviceType.Touch, EDeviceType.Pro],
116
+ model_classic: [EDeviceType.Classic, EDeviceType.Classic1s, EDeviceType.ClassicPure],
117
+ model_classic1s: [EDeviceType.Classic1s, EDeviceType.ClassicPure],
118
+ };
119
+
120
+ export const DeviceTypeToModels: { [deviceType in IDeviceType]: IDeviceModel[] } = {
121
+ [EDeviceType.Classic]: ['model_classic', 'model_mini'],
122
+ [EDeviceType.Classic1s]: ['model_classic', 'model_mini', 'model_classic1s'],
123
+ [EDeviceType.ClassicPure]: ['model_classic', 'model_mini', 'model_classic1s'],
124
+ [EDeviceType.Mini]: ['model_mini'],
125
+ [EDeviceType.Touch]: ['model_touch'],
126
+ [EDeviceType.Pro]: ['model_touch'],
127
+ [EDeviceType.Unknown]: [],
128
+ };
129
+
130
+ export type IDeviceFirmwareStatus = 'valid' | 'outdated' | 'required' | 'unknown' | 'none';
131
+
132
+ export type IDeviceBLEFirmwareStatus = 'valid' | 'outdated' | 'required' | 'unknown' | 'none';
133
+
134
+ export type ITransportStatus = 'valid' | 'outdated';
135
+
136
+ export type IVersionRange = {
137
+ min: string;
138
+ max?: string;
139
+ };
140
+
141
+ export type DeviceFirmwareRange = {
142
+ [deviceType in IDeviceType | IDeviceModel]?: IVersionRange;
143
+ };
144
+
145
+ type FeaturesNarrowing =
146
+ | {
147
+ major_version: 2;
148
+ fw_major: null;
149
+ fw_minor: null;
150
+ fw_patch: null;
151
+ bootloader_mode: true;
152
+ firmware_present: false;
153
+ }
154
+ | {
155
+ major_version: 2;
156
+ fw_major: null;
157
+ fw_minor: null;
158
+ fw_patch: null;
159
+ bootloader_mode: null;
160
+ firmware_present: null;
161
+ }
162
+ | {
163
+ major_version: 2;
164
+ fw_major: 2;
165
+ fw_minor: number;
166
+ fw_patch: number;
167
+ bootloader_mode: true;
168
+ firmware_present: true;
169
+ }
170
+ | {
171
+ major_version: 1;
172
+ fw_major: null;
173
+ fw_minor: null;
174
+ fw_patch: null;
175
+ bootloader_mode: true;
176
+ firmware_present: false;
177
+ }
178
+ | {
179
+ major_version: 1;
180
+ fw_major: null;
181
+ fw_minor: null;
182
+ fw_patch: null;
183
+ bootloader_mode: true;
184
+ firmware_present: true;
185
+ };
186
+
187
+ export type StrictFeatures = Features & FeaturesNarrowing;
188
+
189
+ export type SupportFeatureType = { support: boolean; require?: string };
190
+
191
+ export type SupportFeatures = {
192
+ inputPinOnSoftware: SupportFeatureType;
193
+ modifyHomescreen: SupportFeatureType;
194
+ };
@@ -0,0 +1,41 @@
1
+ export interface FirmwareRange {
2
+ '1': {
3
+ min: string;
4
+ max: string;
5
+ };
6
+ '2': {
7
+ min: string;
8
+ max: string;
9
+ };
10
+ }
11
+
12
+ export type MajorVersion = 1 | 2;
13
+ export type VersionArray = [MajorVersion, number, number];
14
+
15
+ export type FirmwareRelease = {
16
+ required: boolean;
17
+ url: string;
18
+ fingerprint: string;
19
+ changelog: string;
20
+ min_bridge_version: [number, number, number];
21
+ version: VersionArray;
22
+ min_firmware_version: VersionArray;
23
+ min_bootloader_version: VersionArray;
24
+ bootloader_version?: VersionArray;
25
+ url_bitcoinonly?: string;
26
+ fingerprint_bitcoinonly?: string;
27
+ notes?: string;
28
+ rollout?: number;
29
+ channel?: string;
30
+ };
31
+
32
+ export type ReleaseInfo = {
33
+ changelog: FirmwareRelease[] | null;
34
+ release: FirmwareRelease;
35
+ isLatest: boolean;
36
+ latest: FirmwareRelease;
37
+ isRequired: boolean | null;
38
+ isNewer: boolean | null;
39
+ };
40
+
41
+ export type TransportReleaseStatus = 'valid' | 'outdated';
@@ -0,0 +1,3 @@
1
+ interface Window {
2
+ ONETOKEN_CONNECT_SRC?: string;
3
+ }
@@ -0,0 +1,5 @@
1
+ export * from './api';
2
+ export * from './device';
3
+ export * from './firmware';
4
+ export * from './settings';
5
+ export * from './params';
@@ -0,0 +1,64 @@
1
+ export interface CommonParams {
2
+ keepSession?: boolean;
3
+ /**
4
+ * polling connect max retry count
5
+ */
6
+ retryCount?: number;
7
+ /**
8
+ * polling interval time
9
+ */
10
+ pollIntervalTime?: number;
11
+ /**
12
+ * Timeout time for single polling
13
+ */
14
+ timeout?: number;
15
+ /**
16
+ * passphrase state
17
+ */
18
+ passphraseState?: string;
19
+ /**
20
+ * Use empty passphrase
21
+ */
22
+ useEmptyPassphrase?: boolean;
23
+ /**
24
+ * Every init session
25
+ */
26
+ initSession?: boolean;
27
+
28
+ /**
29
+ * Use derive cardano
30
+ */
31
+ deriveCardano?: boolean;
32
+
33
+ // Detect hardware that is in bootloader mode and return an error
34
+ detectBootloaderDevice?: boolean;
35
+
36
+ /**
37
+ * Skip web device prompt
38
+ */
39
+ skipWebDevicePrompt?: boolean;
40
+
41
+ /**
42
+ * Skip passphrase check
43
+ */
44
+ skipPassphraseCheck?: boolean;
45
+
46
+ /**
47
+ * Only connect device, not initialize device, only ble connect
48
+ */
49
+ onlyConnectBleDevice?: boolean;
50
+ }
51
+
52
+ export type Params<T> = CommonParams & T & { bundle?: undefined };
53
+
54
+ export interface Unsuccessful {
55
+ success: false;
56
+ payload: { error: string; code?: string | number };
57
+ }
58
+
59
+ export interface Success<T> {
60
+ success: true;
61
+ payload: T;
62
+ }
63
+
64
+ export type Response<T> = Promise<Success<T> | Unsuccessful>;
@@ -0,0 +1,144 @@
1
+ import type { EFirmwareType } from '@onetokenfe/hd-shared';
2
+ import type { IDeviceType } from './device';
3
+
4
+ export type transportEnv =
5
+ | 'node'
6
+ | 'web'
7
+ | 'webextension'
8
+ | 'electron'
9
+ | 'react-native'
10
+ | 'webusb'
11
+ | 'desktop-webusb'
12
+ | 'desktop-web-ble'
13
+ | 'emulator'
14
+ | 'lowlevel';
15
+ export type ConnectSettings = {
16
+ connectSrc?: string;
17
+ debug?: boolean;
18
+ transportReconnect?: boolean;
19
+ lazyLoad?: boolean;
20
+ // internal part, not to be accepted from .init()
21
+ origin?: string;
22
+ parentOrigin?: string; // parent window origin
23
+ configSrc: string;
24
+ iframeSrc: string;
25
+ version: string;
26
+ priority: number;
27
+ trustedHost: boolean;
28
+ supportedBrowser?: boolean;
29
+ env: transportEnv;
30
+ timestamp: number;
31
+ isFrame?: boolean;
32
+ preRelease?: boolean;
33
+ fetchConfig?: boolean;
34
+ extension?: string;
35
+ configFetcher?: (url: string) => Promise<RemoteConfigResponse | null>;
36
+ };
37
+
38
+ export type IVersionArray = [number, number, number];
39
+
40
+ export type ILocale = 'zh-CN' | 'en-US';
41
+
42
+ /** STM32 firmware config */
43
+ export type IFirmwareReleaseInfo = {
44
+ required: boolean;
45
+ url: string;
46
+ /**
47
+ * Firmware type (bitcoinonly or universal)
48
+ * This field is not present in the remote config, but will be inferred from the firmware field name
49
+ */
50
+ firmwareType?: EFirmwareType;
51
+ /** Firmware UI resource */
52
+ resource?: string;
53
+ /** Firmware full UI resource */
54
+ fullResource?: string;
55
+ fullResourceRange?: string[];
56
+ bootloaderResource?: string;
57
+ bootloaderVersion?: IVersionArray;
58
+ displayBootloaderVersion?: IVersionArray;
59
+ bootloaderRelatedFirmwareVersion?: IVersionArray;
60
+ bootloaderChangelog?: {
61
+ [k in ILocale]: string;
62
+ };
63
+ fingerprint: string;
64
+ version: IVersionArray;
65
+ changelog: {
66
+ [k in ILocale]: string;
67
+ };
68
+ };
69
+
70
+ /** BLE firmware config */
71
+ export type IBLEFirmwareReleaseInfo = {
72
+ required: boolean;
73
+ /** bluetooth dfu version */
74
+ url: string;
75
+ /** stm bluetooth update version */
76
+ webUpdate: string;
77
+ fingerprint: string;
78
+ fingerprintWeb: string;
79
+ version: IVersionArray;
80
+ changelog: {
81
+ [k in ILocale]: string;
82
+ };
83
+ };
84
+
85
+ type IKnownDevice = Exclude<IDeviceType, 'unknown'>;
86
+
87
+ /**
88
+ * Device firmware configuration map
89
+ *
90
+ * IMPORTANT: This type is used for firmware update logic.
91
+ * - DO NOT remove existing firmware fields
92
+ * - Only ADD new optional firmware fields for new versions
93
+ * - 'firmware' field is required for backward compatibility
94
+ * - 'ble' field is required for BLE firmware updates
95
+ *
96
+ * @example
97
+ * // When adding firmware-v8:
98
+ * // {
99
+ * // firmware: IFirmwareReleaseInfo[];
100
+ * // 'firmware-v2'?: IFirmwareReleaseInfo[];
101
+ * // 'firmware-v8'?: IFirmwareReleaseInfo[];
102
+ * // 'firmware-v8'?: IFirmwareReleaseInfo[]; // New
103
+ * // 'firmware-btc-v8'?: IFirmwareReleaseInfo[];
104
+ * // 'firmware-btc-v8'?: IFirmwareReleaseInfo[]; // New
105
+ * // ble: IBLEFirmwareReleaseInfo[];
106
+ * // }
107
+ */
108
+ export type DeviceTypeMap = {
109
+ [k in IKnownDevice]: {
110
+ /** Base firmware field (required for backward compatibility) */
111
+ firmware: IFirmwareReleaseInfo[];
112
+ /** Firmware v2 (Touch/Pro specific) */
113
+ 'firmware-v2'?: IFirmwareReleaseInfo[];
114
+ /** Universal firmware v7 */
115
+ 'firmware-v8'?: IFirmwareReleaseInfo[];
116
+ /** Bitcoin-only firmware v7 */
117
+ 'firmware-btc-v8'?: IFirmwareReleaseInfo[];
118
+ // Future firmware versions should be added here as optional fields:
119
+ // 'firmware-v8'?: IFirmwareReleaseInfo[];
120
+ // 'firmware-btc-v8'?: IFirmwareReleaseInfo[];
121
+ /** BLE firmware (required) */
122
+ ble: IBLEFirmwareReleaseInfo[];
123
+ };
124
+ };
125
+
126
+ export type AssetsMap = {
127
+ bridge: {
128
+ version: IVersionArray;
129
+ linux32Rpm: string;
130
+ linux64Rpm: string;
131
+ linux32Deb: string;
132
+ linux64Deb: string;
133
+ win: string;
134
+ mac: string;
135
+ sha256sumAsc: string;
136
+ changelog: {
137
+ [k in ILocale]: string;
138
+ };
139
+ };
140
+ };
141
+
142
+ export type RemoteConfigResponse = {
143
+ bridge: AssetsMap['bridge'];
144
+ } & DeviceTypeMap;
@@ -0,0 +1,7 @@
1
+ export function splitArray<T>(array: T[], size: number): T[][] {
2
+ const result = [];
3
+ for (let i = 0; i < array.length; i += size) {
4
+ result.push(array.slice(i, i + size));
5
+ }
6
+ return result;
7
+ }
@@ -0,0 +1,5 @@
1
+ import { httpRequest as browserHttpRequest } from './networkUtils';
2
+
3
+ export const httpRequest = (url: string, type: string): any => browserHttpRequest(url, type);
4
+
5
+ export const getTimeStamp = () => new Date().getTime();
@@ -0,0 +1,80 @@
1
+ import axios from 'axios';
2
+ import semver from 'semver';
3
+ import { ERRORS, HardwareErrorCode } from '@onetokenfe/hd-shared';
4
+
5
+ import { DeviceModelToTypes } from '../types';
6
+ import { DataManager } from '../data-manager';
7
+
8
+ import type { IDeviceType } from '../types';
9
+
10
+ const REQUIRED_BRIDGE_VERSION = '2.2.0';
11
+ const TOUCH_NEED_UPDATE_BRIDGE_VERSION = '4.3.0';
12
+ const CLASSIC_MINI_NEED_UPDATE_BRIDGE_VERSION = '3.1.0';
13
+
14
+ export async function getBridgeReleaseInfo({
15
+ deviceType,
16
+ currentFirmwareVersion,
17
+ willUpdateFirmwareVersion,
18
+ }: {
19
+ deviceType: IDeviceType;
20
+ currentFirmwareVersion: string;
21
+ willUpdateFirmwareVersion?: string;
22
+ }) {
23
+ try {
24
+ const { data } = await axios.request({
25
+ url: 'http://localhost:21320',
26
+ method: 'POST',
27
+ withCredentials: false,
28
+ timeout: 3000,
29
+ });
30
+ const { version = '0.0.0' } = data;
31
+ const isOldVersionBridge = semver.lt(version, REQUIRED_BRIDGE_VERSION);
32
+
33
+ let shouldUpdate = false;
34
+ if (DeviceModelToTypes.model_touch.includes(deviceType)) {
35
+ if (
36
+ willUpdateFirmwareVersion &&
37
+ semver.gte(willUpdateFirmwareVersion, TOUCH_NEED_UPDATE_BRIDGE_VERSION) &&
38
+ isOldVersionBridge
39
+ ) {
40
+ shouldUpdate = true;
41
+ }
42
+ if (
43
+ semver.gte(currentFirmwareVersion, TOUCH_NEED_UPDATE_BRIDGE_VERSION) &&
44
+ isOldVersionBridge
45
+ ) {
46
+ shouldUpdate = true;
47
+ }
48
+ }
49
+
50
+ if (DeviceModelToTypes.model_mini.includes(deviceType)) {
51
+ if (
52
+ willUpdateFirmwareVersion &&
53
+ semver.gte(willUpdateFirmwareVersion, CLASSIC_MINI_NEED_UPDATE_BRIDGE_VERSION) &&
54
+ isOldVersionBridge
55
+ ) {
56
+ shouldUpdate = true;
57
+ }
58
+ if (
59
+ semver.gte(currentFirmwareVersion, CLASSIC_MINI_NEED_UPDATE_BRIDGE_VERSION) &&
60
+ isOldVersionBridge
61
+ ) {
62
+ shouldUpdate = true;
63
+ }
64
+ }
65
+
66
+ const changelog = DataManager.getBridgeChangelog();
67
+
68
+ return {
69
+ shouldUpdate,
70
+ status: shouldUpdate ? 'outdated' : 'valid',
71
+ releaseVersion: REQUIRED_BRIDGE_VERSION,
72
+ changelog,
73
+ };
74
+ } catch (e) {
75
+ if (e.code === 'ECONNABORTED') {
76
+ throw ERRORS.TypedError(HardwareErrorCode.BridgeTimeoutError);
77
+ }
78
+ throw ERRORS.TypedError(HardwareErrorCode.BridgeNotInstalled);
79
+ }
80
+ }
@@ -0,0 +1,12 @@
1
+ import type { Enum_Capability } from '@onetokenfe/hd-transport';
2
+ import type { Features } from '../types/device';
3
+
4
+ export const existCapability = (features?: Features, capability?: Enum_Capability) =>
5
+ // @ts-expect-error
6
+ features?.capabilities?.includes(capability);
7
+
8
+ export const requireCapability = (features: Features, capability: Enum_Capability) => {
9
+ if (!existCapability(features, capability)) {
10
+ throw new Error(`Capability ${capability} is required`);
11
+ }
12
+ };