@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,43 @@
1
+ import type { MessageFactoryFn } from './utils';
2
+ import type {
3
+ getBleFirmwareReleaseInfo,
4
+ getFirmwareReleaseInfo,
5
+ } from '../api/firmware/releaseHelper';
6
+ import type { KnownDevice as Device } from '../types/device';
7
+
8
+ export const FIRMWARE_EVENT = 'FIRMWARE_EVENT';
9
+ export const FIRMWARE = {
10
+ RELEASE_INFO: 'firmware-release-info',
11
+ BLE_RELEASE_INFO: 'ble-firmware-release-info',
12
+ } as const;
13
+
14
+ export type ReleaseInfoPayload = ReturnType<typeof getFirmwareReleaseInfo> & {
15
+ device?: Device | null;
16
+ };
17
+ export interface ReleaseInfoEvent {
18
+ type: typeof FIRMWARE.RELEASE_INFO;
19
+ payload: ReleaseInfoPayload;
20
+ }
21
+
22
+ export type BleReleaseInfoPayload = ReturnType<typeof getBleFirmwareReleaseInfo> & {
23
+ device?: Device | null;
24
+ };
25
+
26
+ export interface BleReleaseInfoEvent {
27
+ type: typeof FIRMWARE.BLE_RELEASE_INFO;
28
+ payload: BleReleaseInfoPayload;
29
+ }
30
+
31
+ export type FirmwareEvent = ReleaseInfoEvent | BleReleaseInfoEvent;
32
+
33
+ export type FirmwareMessage = FirmwareEvent & { event: typeof FIRMWARE_EVENT };
34
+
35
+ export const createFirmwareMessage: MessageFactoryFn<typeof FIRMWARE_EVENT, FirmwareEvent> = (
36
+ type,
37
+ payload
38
+ ) =>
39
+ ({
40
+ event: FIRMWARE_EVENT,
41
+ type,
42
+ payload,
43
+ } as any);
@@ -0,0 +1,55 @@
1
+ import { UI_EVENT } from './ui-request';
2
+
3
+ import type { MessageFactoryFn } from './utils';
4
+ import type { ConnectSettings } from '../types';
5
+
6
+ export const IFRAME = {
7
+ INIT: 'iframe-init',
8
+ INIT_BRIDGE: 'iframe-init-bridge',
9
+ CALL: 'iframe-call',
10
+ CANCEL: 'iframe-cancel',
11
+ SWITCH_TRANSPORT: 'iframe-switch-transport',
12
+ CALLBACK: 'iframe-callback',
13
+ } as const;
14
+
15
+ export interface IFrameInit {
16
+ type: typeof IFRAME.INIT;
17
+ payload: {
18
+ settings: ConnectSettings;
19
+ };
20
+ }
21
+
22
+ export interface IFrameBridge {
23
+ type: typeof IFRAME.INIT_BRIDGE;
24
+ payload: unknown;
25
+ }
26
+
27
+ export interface IFrameSwitchTransport {
28
+ type: typeof IFRAME.SWITCH_TRANSPORT;
29
+ payload: {
30
+ env: ConnectSettings['env'];
31
+ };
32
+ }
33
+
34
+ export interface IFrameCallback {
35
+ type: typeof IFRAME.CALLBACK;
36
+ payload: {
37
+ callbackId: string;
38
+ data?: any;
39
+ error?: any;
40
+ finished?: boolean;
41
+ };
42
+ }
43
+
44
+ export type IFrameEvent = IFrameInit | IFrameBridge | IFrameSwitchTransport | IFrameCallback;
45
+ export type IFrameEventMessage = IFrameEvent & { event: typeof UI_EVENT };
46
+
47
+ export const createIFrameMessage: MessageFactoryFn<typeof UI_EVENT, IFrameEvent> = (
48
+ type,
49
+ payload
50
+ ) =>
51
+ ({
52
+ event: UI_EVENT,
53
+ type,
54
+ payload,
55
+ } as any);
@@ -0,0 +1,10 @@
1
+ export * from './core';
2
+ export * from './iframe';
3
+ export * from './call';
4
+ export * from './ui-request';
5
+ export * from './ui-promise';
6
+ export * from './ui-response';
7
+ export * from './device';
8
+ export * from './log';
9
+ export * from './firmware';
10
+ export * from './logBlockEvent';
@@ -0,0 +1,23 @@
1
+ import type { MessageFactoryFn } from './utils';
2
+
3
+ export const LOG_EVENT = 'LOG_EVENT';
4
+
5
+ export const LOG = {
6
+ OUTPUT: 'log-output',
7
+ } as const;
8
+
9
+ export interface LogOutput {
10
+ type: typeof LOG.OUTPUT;
11
+ payload: any;
12
+ }
13
+
14
+ export type LogEvent = LogOutput;
15
+
16
+ export type LogEventMessage = LogEvent & { event: typeof LOG_EVENT };
17
+
18
+ export const createLogMessage: MessageFactoryFn<typeof LOG_EVENT, LogEvent> = (type, payload) =>
19
+ ({
20
+ event: LOG_EVENT,
21
+ type,
22
+ payload,
23
+ } as any);
@@ -0,0 +1,6 @@
1
+ import { UI_RESPONSE } from './ui-response';
2
+
3
+ export const LogBlockEvent: Set<string> = new Set([
4
+ UI_RESPONSE.RECEIVE_PIN,
5
+ UI_RESPONSE.RECEIVE_PASSPHRASE,
6
+ ]);
@@ -0,0 +1,14 @@
1
+ import type { Deferred } from '@onetokenfe/hd-shared';
2
+ import type { DEVICE } from './device';
3
+ import type { Device } from '../device/Device';
4
+ import type { UiResponseEvent } from './ui-response';
5
+
6
+ export type UiPromiseResponse =
7
+ | UiResponseEvent
8
+ | { type: typeof DEVICE.DISCONNECT; payload?: undefined };
9
+
10
+ export type UiPromise<T extends UiPromiseResponse['type']> = Deferred<
11
+ Extract<UiPromiseResponse, { type: T }>,
12
+ T,
13
+ Device
14
+ >;
@@ -0,0 +1,216 @@
1
+ import type { PROTO } from '../constants';
2
+ import type { Device } from '../types';
3
+ import type { DeviceButtonRequest } from './device';
4
+ import type { MessageFactoryFn } from './utils';
5
+
6
+ export const UI_EVENT = 'UI_EVENT';
7
+
8
+ export const UI_REQUEST = {
9
+ REQUEST_PIN: 'ui-request_pin',
10
+ INVALID_PIN: 'ui-invalid_pin',
11
+ REQUEST_BUTTON: 'ui-button',
12
+ REQUEST_PASSPHRASE: 'ui-request_passphrase',
13
+ REQUEST_PASSPHRASE_ON_DEVICE: 'ui-request_passphrase_on_device',
14
+ REQUEST_DEVICE_IN_BOOTLOADER_FOR_WEB_DEVICE:
15
+ 'ui-request_select_device_in_bootloader_for_web_device',
16
+ REQUEST_DEVICE_FOR_SWITCH_FIRMWARE_WEB_DEVICE:
17
+ 'ui-request_select_device_for_switch_firmware_web_device',
18
+
19
+ CLOSE_UI_WINDOW: 'ui-close_window',
20
+ CLOSE_UI_PIN_WINDOW: 'ui-close_pin_window',
21
+ DEVICE_PROGRESS: 'ui-device_progress',
22
+
23
+ BLUETOOTH_PERMISSION: 'ui-bluetooth_permission',
24
+ BLUETOOTH_UNSUPPORTED: 'ui-bluetooth_unsupported',
25
+ BLUETOOTH_POWERED_OFF: 'ui-bluetooth_powered_off',
26
+
27
+ BLUETOOTH_CHARACTERISTIC_NOTIFY_CHANGE_FAILURE:
28
+ 'ui-bluetooth_characteristic_notify_change_failure',
29
+ LOCATION_PERMISSION: 'ui-location_permission',
30
+ LOCATION_SERVICE_PERMISSION: 'ui-location_service_permission',
31
+
32
+ FIRMWARE_PROCESSING: 'ui-firmware-processing',
33
+ FIRMWARE_PROGRESS: 'ui-firmware-progress',
34
+ FIRMWARE_TIP: 'ui-firmware-tip',
35
+
36
+ PREVIOUS_ADDRESS_RESULT: 'ui-previous_address_result',
37
+
38
+ WEB_DEVICE_PROMPT_ACCESS_PERMISSION: 'ui-web_device_prompt_access_permission',
39
+
40
+ BOOTLOADER: 'ui-device_bootloader_mode',
41
+ NOT_IN_BOOTLOADER: 'ui-device_not_in_bootloader_mode',
42
+ REQUIRE_MODE: 'ui-device_require_mode',
43
+ NOT_INITIALIZE: 'ui-device_not_initialized',
44
+ SEEDLESS: 'ui-device_seedless',
45
+ FIRMWARE_OLD: 'ui-device_firmware_old',
46
+ FIRMWARE_NOT_SUPPORTED: 'ui-device_firmware_unsupported',
47
+ FIRMWARE_NOT_COMPATIBLE: 'ui-device_firmware_not_compatible',
48
+ FIRMWARE_NOT_INSTALLED: 'ui-device_firmware_not_installed',
49
+ NOT_USE_ONETOKEN_DEVICE: 'ui-device_please_use_onetoken_device',
50
+ } as const;
51
+
52
+ export interface UiRequestWithoutPayload {
53
+ type:
54
+ | typeof UI_REQUEST.CLOSE_UI_WINDOW
55
+ | typeof UI_REQUEST.CLOSE_UI_PIN_WINDOW
56
+ | typeof UI_REQUEST.BLUETOOTH_PERMISSION
57
+ | typeof UI_REQUEST.BLUETOOTH_UNSUPPORTED
58
+ | typeof UI_REQUEST.BLUETOOTH_POWERED_OFF
59
+ | typeof UI_REQUEST.BLUETOOTH_CHARACTERISTIC_NOTIFY_CHANGE_FAILURE
60
+ | typeof UI_REQUEST.LOCATION_PERMISSION
61
+ | typeof UI_REQUEST.LOCATION_SERVICE_PERMISSION
62
+ | typeof UI_REQUEST.FIRMWARE_PROCESSING
63
+ | typeof UI_REQUEST.WEB_DEVICE_PROMPT_ACCESS_PERMISSION;
64
+ payload?: typeof undefined;
65
+ }
66
+
67
+ export interface UiRequestFirmwareProgressing {
68
+ type: typeof UI_REQUEST.FIRMWARE_PROCESSING;
69
+ payload: {
70
+ type: 'firmware' | 'ble' | 'bootloader' | 'resource';
71
+ };
72
+ }
73
+
74
+ export type UiRequestDeviceAction = {
75
+ type: typeof UI_REQUEST.REQUEST_PIN;
76
+ payload: {
77
+ device: Device;
78
+ type?: PROTO.PinMatrixRequestType | 'ButtonRequest_PinEntry' | 'ButtonRequest_AttachPin';
79
+ };
80
+ };
81
+
82
+ export interface UiRequestButton {
83
+ type: typeof UI_REQUEST.REQUEST_BUTTON;
84
+ payload: DeviceButtonRequest['payload'];
85
+ }
86
+
87
+ export interface UiRequestPassphrase {
88
+ type: typeof UI_REQUEST.REQUEST_PASSPHRASE;
89
+ payload: {
90
+ device: Device;
91
+ passphraseState?: string;
92
+ existsAttachPinUser?: boolean;
93
+ };
94
+ }
95
+
96
+ export interface UiRequestPassphraseOnDevice {
97
+ type: typeof UI_REQUEST.REQUEST_PASSPHRASE_ON_DEVICE;
98
+ payload: {
99
+ device: Device;
100
+ passphraseState?: string;
101
+ };
102
+ }
103
+
104
+ export interface UiRequestSelectDeviceInBootloaderForWebDevice {
105
+ type: typeof UI_REQUEST.REQUEST_DEVICE_IN_BOOTLOADER_FOR_WEB_DEVICE;
106
+ payload: {
107
+ device: Device;
108
+ };
109
+ }
110
+
111
+ export interface UiRequestSelectDeviceForSwitchFirmwareWebDevice {
112
+ type: typeof UI_REQUEST.REQUEST_DEVICE_FOR_SWITCH_FIRMWARE_WEB_DEVICE;
113
+ payload: {
114
+ device: Device;
115
+ };
116
+ }
117
+
118
+ export interface FirmwareProcessing {
119
+ type: typeof UI_REQUEST.FIRMWARE_PROCESSING;
120
+ payload: {
121
+ type: 'firmware' | 'ble' | 'bootloader' | 'resource';
122
+ };
123
+ }
124
+
125
+ export type IFirmwareUpdateProgressType = 'transferData' | 'installingFirmware';
126
+ export interface FirmwareProgress {
127
+ type: typeof UI_REQUEST.FIRMWARE_PROGRESS;
128
+ payload: {
129
+ device: Device;
130
+ progress: number;
131
+ progressType: IFirmwareUpdateProgressType;
132
+ };
133
+ }
134
+
135
+ export interface FirmwareTip {
136
+ type: typeof UI_REQUEST.FIRMWARE_TIP;
137
+ payload: {
138
+ device: Device;
139
+ data: { message: string };
140
+ };
141
+ }
142
+
143
+ export interface DeviceProgress {
144
+ type: typeof UI_REQUEST.DEVICE_PROGRESS;
145
+ payload: {
146
+ progress?: number;
147
+ };
148
+ }
149
+
150
+ export interface PreviousAddressResult {
151
+ type: typeof UI_REQUEST.PREVIOUS_ADDRESS_RESULT;
152
+ payload: {
153
+ device: Device;
154
+ data: {
155
+ address?: string;
156
+ path?: string;
157
+ };
158
+ };
159
+ }
160
+
161
+ export type UiEvent =
162
+ | UiRequestWithoutPayload
163
+ | UiRequestDeviceAction
164
+ | UiRequestButton
165
+ | UiRequestPassphraseOnDevice
166
+ | UiRequestPassphrase
167
+ | UiRequestSelectDeviceInBootloaderForWebDevice
168
+ | UiRequestSelectDeviceForSwitchFirmwareWebDevice
169
+ | FirmwareProcessing
170
+ | UiRequestSelectDeviceInBootloaderForWebDevice
171
+ | FirmwareProgress
172
+ | FirmwareTip
173
+ | DeviceProgress
174
+ | PreviousAddressResult;
175
+
176
+ export enum FirmwareUpdateTipMessage {
177
+ CheckLatestUiResource = 'CheckLatestUiResource',
178
+
179
+ StartDownloadFirmware = 'StartDownloadFirmware',
180
+ FinishDownloadFirmware = 'FinishDownloadFirmware',
181
+ DownloadLatestUiResource = 'DownloadLatestUiResource',
182
+ DownloadFirmware = 'DownloadFirmware',
183
+ DownloadBleFirmware = 'DownloadBleFirmware',
184
+ DownloadLatestBootloaderResource = 'DownloadLatestBootloaderResource',
185
+
186
+ DownloadLatestUiResourceSuccess = 'DownloadLatestUiResourceSuccess',
187
+ DownloadFirmwareSuccess = 'DownloadFirmwareSuccess',
188
+ DownloadBleFirmwareSuccess = 'DownloadBleFirmwareSuccess',
189
+ DownloadLatestBootloaderResourceSuccess = 'DownloadLatestBootloaderResourceSuccess',
190
+
191
+ AutoRebootToBootloader = 'AutoRebootToBootloader',
192
+ GoToBootloaderSuccess = 'GoToBootloaderSuccess',
193
+ SelectDeviceInBootloaderForWebDevice = 'SelectDeviceInBootloaderForWebDevice',
194
+ SwitchFirmwareReconnectDevice = 'SwitchFirmwareReconnectDevice',
195
+ ConfirmOnDevice = 'ConfirmOnDevice',
196
+ FirmwareEraseSuccess = 'FirmwareEraseSuccess',
197
+ StartTransferData = 'StartTransferData',
198
+ InstallingFirmware = 'InstallingFirmware',
199
+ UpdateBootloader = 'UpdateBootloader',
200
+ UpdateBootloaderSuccess = 'UpdateBootloaderSuccess',
201
+ UpdateSysResource = 'UpdateSysResource',
202
+ UpdateSysResourceSuccess = 'UpdateSysResourceSuccess',
203
+ FirmwareUpdating = 'FirmwareUpdating',
204
+ FirmwareUpdateCompleted = 'FirmwareUpdateCompleted',
205
+ }
206
+
207
+ export type IFirmwareUpdateTipMessage = `${FirmwareUpdateTipMessage}`;
208
+
209
+ export type UiEventMessage = UiEvent & { event: typeof UI_EVENT };
210
+
211
+ export const createUiMessage: MessageFactoryFn<typeof UI_EVENT, UiEvent> = (type, payload) =>
212
+ ({
213
+ event: UI_EVENT,
214
+ type,
215
+ payload,
216
+ } as any);
@@ -0,0 +1,59 @@
1
+ import { UI_EVENT } from './ui-request';
2
+
3
+ import type { MessageFactoryFn } from './utils';
4
+
5
+ export const UI_RESPONSE = {
6
+ RECEIVE_PIN: 'ui-receive_pin',
7
+ RECEIVE_PASSPHRASE: 'ui-receive_passphrase',
8
+ SELECT_DEVICE_IN_BOOTLOADER_FOR_WEB_DEVICE:
9
+ 'ui-receive_select-device-in-bootloader-for-web-device',
10
+ SELECT_DEVICE_FOR_SWITCH_FIRMWARE_WEB_DEVICE:
11
+ 'ui-receive_select-device-for-switch-firmware-web-device',
12
+ } as const;
13
+
14
+ export interface UiResponsePin {
15
+ type: typeof UI_RESPONSE.RECEIVE_PIN;
16
+ payload: string;
17
+ }
18
+
19
+ export interface UiResponsePassphrase {
20
+ type: typeof UI_RESPONSE.RECEIVE_PASSPHRASE;
21
+ payload: {
22
+ value: string;
23
+ passphraseOnDevice?: boolean;
24
+ attachPinOnDevice?: boolean;
25
+ save?: boolean;
26
+ };
27
+ }
28
+
29
+ export interface UiResponseSelectDeviceInBootloaderForWebDevice {
30
+ type: typeof UI_RESPONSE.SELECT_DEVICE_IN_BOOTLOADER_FOR_WEB_DEVICE;
31
+ payload: {
32
+ deviceId: string;
33
+ };
34
+ }
35
+
36
+ export interface UiResponseSelectDeviceForSwitchFirmwareWebDevice {
37
+ type: typeof UI_RESPONSE.SELECT_DEVICE_FOR_SWITCH_FIRMWARE_WEB_DEVICE;
38
+ payload: {
39
+ deviceId: string;
40
+ };
41
+ }
42
+
43
+ export type UiResponseEvent =
44
+ | UiResponsePin
45
+ | UiResponsePassphrase
46
+ | UiResponseSelectDeviceInBootloaderForWebDevice
47
+ | UiResponseSelectDeviceForSwitchFirmwareWebDevice;
48
+
49
+ export type UiResponseMessage = UiResponseEvent & { event: typeof UI_EVENT };
50
+
51
+ export const createUiResponse: MessageFactoryFn<typeof UI_EVENT, UiResponseEvent> = (
52
+ type,
53
+ payload
54
+ ) =>
55
+ ({
56
+ event: UI_EVENT,
57
+ type,
58
+ payload,
59
+ } as any);
@@ -0,0 +1,19 @@
1
+ export type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (
2
+ k: infer I
3
+ ) => void
4
+ ? I
5
+ : never;
6
+
7
+ export type MessageFactoryFn<Group, Event> = UnionToIntersection<
8
+ Event extends { type: string }
9
+ ? Event extends { payload: any }
10
+ ? (
11
+ type: Event['type'],
12
+ payload: Event['payload']
13
+ ) => { event: Group; type: Event['type']; payload: Event['payload'] }
14
+ : (
15
+ type: Event['type'],
16
+ payload?: undefined
17
+ ) => { event: Group; type: Event['type']; payload: undefined }
18
+ : never
19
+ >;
package/src/index.ts ADDED
@@ -0,0 +1,70 @@
1
+ import { cleanupCallback, executeCallback, inject } from './inject';
2
+ import { lowLevelInject } from './lowLevelInject';
3
+ import { topLevelInject } from './topLevelInject';
4
+
5
+ import type { LowLevelCoreApi, LowLevelInjectApi } from './lowLevelInject';
6
+ import type { InjectApi } from './inject';
7
+ import type { CoreApi } from './types/api';
8
+
9
+ export type { LowLevelCoreApi, LowLevelInjectApi } from './lowLevelInject';
10
+ export type { TopLevelInjectApi } from './topLevelInject';
11
+
12
+ export { default as Core, init as initCore, switchTransport } from './core';
13
+
14
+ export * from './constants';
15
+ export * from './utils';
16
+ export * from './data-manager';
17
+ export * from './events';
18
+ export * from './types';
19
+ export { whitelist, whitelistExtension } from './data/config';
20
+ export { executeCallback, cleanupCallback };
21
+
22
+ const HardwareSdk = ({
23
+ init,
24
+ call,
25
+ dispose,
26
+ eventEmitter,
27
+ uiResponse,
28
+ cancel,
29
+ updateSettings,
30
+ switchTransport,
31
+ }: InjectApi): CoreApi =>
32
+ inject({
33
+ init,
34
+ call,
35
+ dispose,
36
+ eventEmitter,
37
+ uiResponse,
38
+ cancel,
39
+ updateSettings,
40
+ switchTransport,
41
+ });
42
+
43
+ const HardwareSDKLowLevel = ({
44
+ init,
45
+ call,
46
+ dispose,
47
+ eventEmitter,
48
+ addHardwareGlobalEventListener,
49
+ uiResponse,
50
+ cancel,
51
+ updateSettings,
52
+ switchTransport,
53
+ }: LowLevelInjectApi): LowLevelCoreApi =>
54
+ lowLevelInject({
55
+ init,
56
+ call,
57
+ dispose,
58
+ eventEmitter,
59
+ addHardwareGlobalEventListener,
60
+ uiResponse,
61
+ cancel,
62
+ updateSettings,
63
+ switchTransport,
64
+ });
65
+
66
+ const HardwareTopLevelSdk = (): CoreApi => topLevelInject();
67
+
68
+ export { HardwareTopLevelSdk, HardwareSDKLowLevel };
69
+
70
+ export default HardwareSdk;