@ledgerhq/coin-evm 0.2.1 → 0.2.2-nightly.0

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 (462) hide show
  1. package/.eslintrc.js +11 -46
  2. package/.turbo/turbo-build.log +1 -1
  3. package/CHANGELOG.md +29 -1
  4. package/lib/__tests__/adapters.unit.test.d.ts +2 -0
  5. package/lib/__tests__/adapters.unit.test.d.ts.map +1 -0
  6. package/lib/__tests__/adapters.unit.test.js +455 -0
  7. package/lib/__tests__/adapters.unit.test.js.map +1 -0
  8. package/lib/__tests__/broadcast.unit.test.d.ts +2 -0
  9. package/lib/__tests__/broadcast.unit.test.d.ts.map +1 -0
  10. package/lib/__tests__/broadcast.unit.test.js +181 -0
  11. package/lib/__tests__/broadcast.unit.test.js.map +1 -0
  12. package/lib/__tests__/buildOptimisticOperation.unit.test.d.ts +2 -0
  13. package/lib/__tests__/buildOptimisticOperation.unit.test.d.ts.map +1 -0
  14. package/lib/__tests__/buildOptimisticOperation.unit.test.js +166 -0
  15. package/lib/__tests__/buildOptimisticOperation.unit.test.js.map +1 -0
  16. package/lib/__tests__/createTransaction.unit.test.d.ts +2 -0
  17. package/lib/__tests__/createTransaction.unit.test.d.ts.map +1 -0
  18. package/lib/__tests__/createTransaction.unit.test.js +50 -0
  19. package/lib/__tests__/createTransaction.unit.test.js.map +1 -0
  20. package/lib/__tests__/deviceTransactionConfig.unit.test.d.ts +2 -0
  21. package/lib/__tests__/deviceTransactionConfig.unit.test.d.ts.map +1 -0
  22. package/lib/__tests__/deviceTransactionConfig.unit.test.js +231 -0
  23. package/lib/__tests__/deviceTransactionConfig.unit.test.js.map +1 -0
  24. package/lib/__tests__/estimateMaxSpendable.unit.test.d.ts +2 -0
  25. package/lib/__tests__/estimateMaxSpendable.unit.test.d.ts.map +1 -0
  26. package/lib/__tests__/estimateMaxSpendable.unit.test.js +145 -0
  27. package/lib/__tests__/estimateMaxSpendable.unit.test.js.map +1 -0
  28. package/lib/__tests__/gasTracker/index.unit.test.d.ts +2 -0
  29. package/lib/__tests__/gasTracker/index.unit.test.d.ts.map +1 -0
  30. package/lib/__tests__/gasTracker/index.unit.test.js +35 -0
  31. package/lib/__tests__/gasTracker/index.unit.test.js.map +1 -0
  32. package/lib/__tests__/gasTracker/ledger.unit.test.d.ts +2 -0
  33. package/lib/__tests__/gasTracker/ledger.unit.test.d.ts.map +1 -0
  34. package/lib/__tests__/gasTracker/ledger.unit.test.js +110 -0
  35. package/lib/__tests__/gasTracker/ledger.unit.test.js.map +1 -0
  36. package/lib/__tests__/getTransactionStatus.unit.test.d.ts +2 -0
  37. package/lib/__tests__/getTransactionStatus.unit.test.d.ts.map +1 -0
  38. package/lib/__tests__/getTransactionStatus.unit.test.js +216 -0
  39. package/lib/__tests__/getTransactionStatus.unit.test.js.map +1 -0
  40. package/lib/__tests__/hw-getAddress.unit.test.d.ts +2 -0
  41. package/lib/__tests__/hw-getAddress.unit.test.d.ts.map +1 -0
  42. package/lib/__tests__/hw-getAddress.unit.test.js +47 -0
  43. package/lib/__tests__/hw-getAddress.unit.test.js.map +1 -0
  44. package/lib/__tests__/logic.unit.test.d.ts +2 -0
  45. package/lib/__tests__/logic.unit.test.d.ts.map +1 -0
  46. package/lib/__tests__/logic.unit.test.js +296 -0
  47. package/lib/__tests__/logic.unit.test.js.map +1 -0
  48. package/lib/__tests__/preload.unit.test.d.ts +2 -0
  49. package/lib/__tests__/preload.unit.test.d.ts.map +1 -0
  50. package/lib/__tests__/preload.unit.test.js +149 -0
  51. package/lib/__tests__/preload.unit.test.js.map +1 -0
  52. package/lib/__tests__/prepareTransaction.unit.test.d.ts +2 -0
  53. package/lib/__tests__/prepareTransaction.unit.test.d.ts.map +1 -0
  54. package/lib/__tests__/prepareTransaction.unit.test.js +248 -0
  55. package/lib/__tests__/prepareTransaction.unit.test.js.map +1 -0
  56. package/lib/__tests__/rpc.unit.test.d.ts +2 -0
  57. package/lib/__tests__/rpc.unit.test.d.ts.map +1 -0
  58. package/lib/__tests__/rpc.unit.test.js +444 -0
  59. package/lib/__tests__/rpc.unit.test.js.map +1 -0
  60. package/lib/__tests__/signOperation.unit.test.d.ts +2 -0
  61. package/lib/__tests__/signOperation.unit.test.d.ts.map +1 -0
  62. package/lib/__tests__/signOperation.unit.test.js +160 -0
  63. package/lib/__tests__/signOperation.unit.test.js.map +1 -0
  64. package/lib/__tests__/synchronization.unit.test.d.ts +2 -0
  65. package/lib/__tests__/synchronization.unit.test.d.ts.map +1 -0
  66. package/lib/__tests__/synchronization.unit.test.js +499 -0
  67. package/lib/__tests__/synchronization.unit.test.js.map +1 -0
  68. package/lib/__tests__/transaction.unit.test.d.ts +2 -0
  69. package/lib/__tests__/transaction.unit.test.d.ts.map +1 -0
  70. package/lib/__tests__/transaction.unit.test.js +201 -0
  71. package/lib/__tests__/transaction.unit.test.js.map +1 -0
  72. package/lib/abis/erc20.abi.json +222 -0
  73. package/lib/abis/optimismGasPriceOracle.abi.json +252 -0
  74. package/lib/adapters.d.ts +21 -0
  75. package/lib/adapters.d.ts.map +1 -0
  76. package/lib/adapters.js +118 -0
  77. package/lib/adapters.js.map +1 -0
  78. package/lib/api/explorer/etherscan.d.ts +24 -0
  79. package/lib/api/explorer/etherscan.d.ts.map +1 -0
  80. package/lib/api/explorer/etherscan.js +90 -0
  81. package/lib/api/explorer/etherscan.js.map +1 -0
  82. package/lib/api/explorer/index.d.ts +26 -0
  83. package/lib/api/explorer/index.d.ts.map +1 -0
  84. package/lib/api/explorer/index.js +23 -0
  85. package/lib/api/explorer/index.js.map +1 -0
  86. package/lib/api/gasTracker/index.d.ts +13 -0
  87. package/lib/api/gasTracker/index.d.ts.map +1 -0
  88. package/lib/api/gasTracker/index.js +21 -0
  89. package/lib/api/gasTracker/index.js.map +1 -0
  90. package/lib/api/gasTracker/ledger.d.ts +9 -0
  91. package/lib/api/gasTracker/ledger.d.ts.map +1 -0
  92. package/lib/api/gasTracker/ledger.js +90 -0
  93. package/lib/api/gasTracker/ledger.js.map +1 -0
  94. package/lib/api/rpc/index.d.ts +3 -0
  95. package/lib/api/rpc/index.d.ts.map +1 -0
  96. package/lib/api/rpc/index.js +32 -0
  97. package/lib/api/rpc/index.js.map +1 -0
  98. package/lib/api/rpc/rpc.common.d.ts +93 -0
  99. package/lib/api/rpc/rpc.common.d.ts.map +1 -0
  100. package/lib/api/rpc/rpc.common.js +284 -0
  101. package/lib/api/rpc/rpc.common.js.map +1 -0
  102. package/lib/api/rpc/rpc.native.d.ts +6 -0
  103. package/lib/api/rpc/rpc.native.d.ts.map +1 -0
  104. package/lib/api/rpc/rpc.native.js +35 -0
  105. package/lib/api/rpc/rpc.native.js.map +1 -0
  106. package/lib/bridge/js.d.ts +11 -0
  107. package/lib/bridge/js.d.ts.map +1 -0
  108. package/lib/bridge/js.js +58 -0
  109. package/lib/bridge/js.js.map +1 -0
  110. package/lib/bridge.integration.test.d.ts +14 -0
  111. package/lib/bridge.integration.test.d.ts.map +1 -0
  112. package/lib/bridge.integration.test.js +85 -0
  113. package/lib/bridge.integration.test.js.map +1 -0
  114. package/lib/broadcast.d.ts +8 -0
  115. package/lib/broadcast.d.ts.map +1 -0
  116. package/lib/broadcast.js +25 -0
  117. package/lib/broadcast.js.map +1 -0
  118. package/lib/buildOptimisticOperation.d.ts +16 -0
  119. package/lib/buildOptimisticOperation.d.ts.map +1 -0
  120. package/lib/buildOptimisticOperation.js +80 -0
  121. package/lib/buildOptimisticOperation.js.map +1 -0
  122. package/lib/cli-transaction.d.ts +2 -0
  123. package/lib/cli-transaction.d.ts.map +1 -0
  124. package/lib/cli-transaction.js +9 -0
  125. package/lib/cli-transaction.js.map +1 -0
  126. package/lib/createTransaction.d.ts +9 -0
  127. package/lib/createTransaction.d.ts.map +1 -0
  128. package/lib/createTransaction.js +32 -0
  129. package/lib/createTransaction.js.map +1 -0
  130. package/lib/datasets/ethereum.scanAccounts.1.d.ts +7 -0
  131. package/lib/datasets/ethereum.scanAccounts.1.d.ts.map +1 -0
  132. package/lib/datasets/ethereum.scanAccounts.1.js +51 -0
  133. package/lib/datasets/ethereum.scanAccounts.1.js.map +1 -0
  134. package/lib/datasets/ethereum1.d.ts +3 -0
  135. package/lib/datasets/ethereum1.d.ts.map +1 -0
  136. package/lib/datasets/ethereum1.js +22 -0
  137. package/lib/datasets/ethereum1.js.map +1 -0
  138. package/lib/datasets/ethereum2.d.ts +3 -0
  139. package/lib/datasets/ethereum2.d.ts.map +1 -0
  140. package/lib/datasets/ethereum2.js +22 -0
  141. package/lib/datasets/ethereum2.js.map +1 -0
  142. package/lib/datasets/ethereum_classic.d.ts +5 -0
  143. package/lib/datasets/ethereum_classic.d.ts.map +1 -0
  144. package/lib/datasets/ethereum_classic.js +69 -0
  145. package/lib/datasets/ethereum_classic.js.map +1 -0
  146. package/lib/deviceTransactionConfig.d.ts +15 -0
  147. package/lib/deviceTransactionConfig.d.ts.map +1 -0
  148. package/lib/deviceTransactionConfig.js +44 -0
  149. package/lib/deviceTransactionConfig.js.map +1 -0
  150. package/lib/errors.d.ts +16 -0
  151. package/lib/errors.d.ts.map +1 -0
  152. package/lib/errors.js +11 -0
  153. package/lib/errors.js.map +1 -0
  154. package/lib/estimateMaxSpendable.d.ts +4 -0
  155. package/lib/estimateMaxSpendable.d.ts.map +1 -0
  156. package/lib/estimateMaxSpendable.js +23 -0
  157. package/lib/estimateMaxSpendable.js.map +1 -0
  158. package/lib/getTransactionStatus.d.ts +23 -0
  159. package/lib/getTransactionStatus.d.ts.map +1 -0
  160. package/lib/getTransactionStatus.js +132 -0
  161. package/lib/getTransactionStatus.js.map +1 -0
  162. package/lib/hw-getAddress.d.ts +6 -0
  163. package/lib/hw-getAddress.d.ts.map +1 -0
  164. package/lib/hw-getAddress.js +28 -0
  165. package/lib/hw-getAddress.js.map +1 -0
  166. package/lib/logic.d.ts +31 -0
  167. package/lib/logic.d.ts.map +1 -0
  168. package/lib/logic.js +131 -0
  169. package/lib/logic.js.map +1 -0
  170. package/lib/preload.d.ts +6 -0
  171. package/lib/preload.d.ts.map +1 -0
  172. package/lib/preload.js +58 -0
  173. package/lib/preload.js.map +1 -0
  174. package/lib/prepareTransaction.d.ts +26 -0
  175. package/lib/prepareTransaction.d.ts.map +1 -0
  176. package/lib/prepareTransaction.js +128 -0
  177. package/lib/prepareTransaction.js.map +1 -0
  178. package/lib/signOperation.d.ts +18 -0
  179. package/lib/signOperation.d.ts.map +1 -0
  180. package/lib/signOperation.js +88 -0
  181. package/lib/signOperation.js.map +1 -0
  182. package/lib/signer.d.ts +27 -0
  183. package/lib/signer.d.ts.map +1 -0
  184. package/lib/signer.js +3 -0
  185. package/lib/signer.js.map +1 -0
  186. package/lib/specs.d.ts +3 -0
  187. package/lib/specs.d.ts.map +1 -0
  188. package/lib/specs.js +238 -0
  189. package/lib/specs.js.map +1 -0
  190. package/lib/speculos-deviceActions.d.ts +8 -0
  191. package/lib/speculos-deviceActions.d.ts.map +1 -0
  192. package/lib/speculos-deviceActions.js +66 -0
  193. package/lib/speculos-deviceActions.js.map +1 -0
  194. package/lib/synchronization.d.ts +27 -0
  195. package/lib/synchronization.d.ts.map +1 -0
  196. package/lib/synchronization.js +220 -0
  197. package/lib/synchronization.js.map +1 -0
  198. package/lib/testUtils.d.ts +6 -0
  199. package/lib/testUtils.d.ts.map +1 -0
  200. package/lib/testUtils.js +111 -0
  201. package/lib/testUtils.js.map +1 -0
  202. package/lib/transaction.d.ts +43 -0
  203. package/lib/transaction.d.ts.map +1 -0
  204. package/lib/transaction.js +124 -0
  205. package/lib/transaction.js.map +1 -0
  206. package/lib/types.d.ts +111 -0
  207. package/lib/types.d.ts.map +1 -0
  208. package/lib/types.js +3 -0
  209. package/lib/types.js.map +1 -0
  210. package/lib-es/__tests__/adapters.unit.test.d.ts +2 -0
  211. package/lib-es/__tests__/adapters.unit.test.d.ts.map +1 -0
  212. package/lib-es/__tests__/adapters.unit.test.js +450 -0
  213. package/lib-es/__tests__/adapters.unit.test.js.map +1 -0
  214. package/lib-es/__tests__/broadcast.unit.test.d.ts +2 -0
  215. package/lib-es/__tests__/broadcast.unit.test.d.ts.map +1 -0
  216. package/lib-es/__tests__/broadcast.unit.test.js +153 -0
  217. package/lib-es/__tests__/broadcast.unit.test.js.map +1 -0
  218. package/lib-es/__tests__/buildOptimisticOperation.unit.test.d.ts +2 -0
  219. package/lib-es/__tests__/buildOptimisticOperation.unit.test.d.ts.map +1 -0
  220. package/lib-es/__tests__/buildOptimisticOperation.unit.test.js +161 -0
  221. package/lib-es/__tests__/buildOptimisticOperation.unit.test.js.map +1 -0
  222. package/lib-es/__tests__/createTransaction.unit.test.d.ts +2 -0
  223. package/lib-es/__tests__/createTransaction.unit.test.d.ts.map +1 -0
  224. package/lib-es/__tests__/createTransaction.unit.test.js +45 -0
  225. package/lib-es/__tests__/createTransaction.unit.test.js.map +1 -0
  226. package/lib-es/__tests__/deviceTransactionConfig.unit.test.d.ts +2 -0
  227. package/lib-es/__tests__/deviceTransactionConfig.unit.test.d.ts.map +1 -0
  228. package/lib-es/__tests__/deviceTransactionConfig.unit.test.js +226 -0
  229. package/lib-es/__tests__/deviceTransactionConfig.unit.test.js.map +1 -0
  230. package/lib-es/__tests__/estimateMaxSpendable.unit.test.d.ts +2 -0
  231. package/lib-es/__tests__/estimateMaxSpendable.unit.test.d.ts.map +1 -0
  232. package/lib-es/__tests__/estimateMaxSpendable.unit.test.js +117 -0
  233. package/lib-es/__tests__/estimateMaxSpendable.unit.test.js.map +1 -0
  234. package/lib-es/__tests__/gasTracker/index.unit.test.d.ts +2 -0
  235. package/lib-es/__tests__/gasTracker/index.unit.test.d.ts.map +1 -0
  236. package/lib-es/__tests__/gasTracker/index.unit.test.js +33 -0
  237. package/lib-es/__tests__/gasTracker/index.unit.test.js.map +1 -0
  238. package/lib-es/__tests__/gasTracker/ledger.unit.test.d.ts +2 -0
  239. package/lib-es/__tests__/gasTracker/ledger.unit.test.d.ts.map +1 -0
  240. package/lib-es/__tests__/gasTracker/ledger.unit.test.js +105 -0
  241. package/lib-es/__tests__/gasTracker/ledger.unit.test.js.map +1 -0
  242. package/lib-es/__tests__/getTransactionStatus.unit.test.d.ts +2 -0
  243. package/lib-es/__tests__/getTransactionStatus.unit.test.d.ts.map +1 -0
  244. package/lib-es/__tests__/getTransactionStatus.unit.test.js +211 -0
  245. package/lib-es/__tests__/getTransactionStatus.unit.test.js.map +1 -0
  246. package/lib-es/__tests__/hw-getAddress.unit.test.d.ts +2 -0
  247. package/lib-es/__tests__/hw-getAddress.unit.test.d.ts.map +1 -0
  248. package/lib-es/__tests__/hw-getAddress.unit.test.js +42 -0
  249. package/lib-es/__tests__/hw-getAddress.unit.test.js.map +1 -0
  250. package/lib-es/__tests__/logic.unit.test.d.ts +2 -0
  251. package/lib-es/__tests__/logic.unit.test.d.ts.map +1 -0
  252. package/lib-es/__tests__/logic.unit.test.js +268 -0
  253. package/lib-es/__tests__/logic.unit.test.js.map +1 -0
  254. package/lib-es/__tests__/preload.unit.test.d.ts +2 -0
  255. package/lib-es/__tests__/preload.unit.test.d.ts.map +1 -0
  256. package/lib-es/__tests__/preload.unit.test.js +121 -0
  257. package/lib-es/__tests__/preload.unit.test.js.map +1 -0
  258. package/lib-es/__tests__/prepareTransaction.unit.test.d.ts +2 -0
  259. package/lib-es/__tests__/prepareTransaction.unit.test.d.ts.map +1 -0
  260. package/lib-es/__tests__/prepareTransaction.unit.test.js +220 -0
  261. package/lib-es/__tests__/prepareTransaction.unit.test.js.map +1 -0
  262. package/lib-es/__tests__/rpc.unit.test.d.ts +2 -0
  263. package/lib-es/__tests__/rpc.unit.test.d.ts.map +1 -0
  264. package/lib-es/__tests__/rpc.unit.test.js +416 -0
  265. package/lib-es/__tests__/rpc.unit.test.js.map +1 -0
  266. package/lib-es/__tests__/signOperation.unit.test.d.ts +2 -0
  267. package/lib-es/__tests__/signOperation.unit.test.d.ts.map +1 -0
  268. package/lib-es/__tests__/signOperation.unit.test.js +132 -0
  269. package/lib-es/__tests__/signOperation.unit.test.js.map +1 -0
  270. package/lib-es/__tests__/synchronization.unit.test.d.ts +2 -0
  271. package/lib-es/__tests__/synchronization.unit.test.d.ts.map +1 -0
  272. package/lib-es/__tests__/synchronization.unit.test.js +471 -0
  273. package/lib-es/__tests__/synchronization.unit.test.js.map +1 -0
  274. package/lib-es/__tests__/transaction.unit.test.d.ts +2 -0
  275. package/lib-es/__tests__/transaction.unit.test.d.ts.map +1 -0
  276. package/lib-es/__tests__/transaction.unit.test.js +173 -0
  277. package/lib-es/__tests__/transaction.unit.test.js.map +1 -0
  278. package/lib-es/abis/erc20.abi.json +222 -0
  279. package/lib-es/abis/optimismGasPriceOracle.abi.json +252 -0
  280. package/lib-es/adapters.d.ts +21 -0
  281. package/lib-es/adapters.d.ts.map +1 -0
  282. package/lib-es/adapters.js +109 -0
  283. package/lib-es/adapters.js.map +1 -0
  284. package/lib-es/api/explorer/etherscan.d.ts +24 -0
  285. package/lib-es/api/explorer/etherscan.d.ts.map +1 -0
  286. package/lib-es/api/explorer/etherscan.js +84 -0
  287. package/lib-es/api/explorer/etherscan.js.map +1 -0
  288. package/lib-es/api/explorer/index.d.ts +26 -0
  289. package/lib-es/api/explorer/index.d.ts.map +1 -0
  290. package/lib-es/api/explorer/index.js +16 -0
  291. package/lib-es/api/explorer/index.js.map +1 -0
  292. package/lib-es/api/gasTracker/index.d.ts +13 -0
  293. package/lib-es/api/gasTracker/index.d.ts.map +1 -0
  294. package/lib-es/api/gasTracker/index.js +17 -0
  295. package/lib-es/api/gasTracker/index.js.map +1 -0
  296. package/lib-es/api/gasTracker/ledger.d.ts +9 -0
  297. package/lib-es/api/gasTracker/ledger.d.ts.map +1 -0
  298. package/lib-es/api/gasTracker/ledger.js +83 -0
  299. package/lib-es/api/gasTracker/ledger.js.map +1 -0
  300. package/lib-es/api/rpc/index.d.ts +3 -0
  301. package/lib-es/api/rpc/index.d.ts.map +1 -0
  302. package/lib-es/api/rpc/index.js +4 -0
  303. package/lib-es/api/rpc/index.js.map +1 -0
  304. package/lib-es/api/rpc/rpc.common.d.ts +93 -0
  305. package/lib-es/api/rpc/rpc.common.d.ts.map +1 -0
  306. package/lib-es/api/rpc/rpc.common.js +267 -0
  307. package/lib-es/api/rpc/rpc.common.js.map +1 -0
  308. package/lib-es/api/rpc/rpc.native.d.ts +6 -0
  309. package/lib-es/api/rpc/rpc.native.d.ts.map +1 -0
  310. package/lib-es/api/rpc/rpc.native.js +7 -0
  311. package/lib-es/api/rpc/rpc.native.js.map +1 -0
  312. package/lib-es/bridge/js.d.ts +11 -0
  313. package/lib-es/bridge/js.d.ts.map +1 -0
  314. package/lib-es/bridge/js.js +49 -0
  315. package/lib-es/bridge/js.js.map +1 -0
  316. package/lib-es/bridge.integration.test.d.ts +14 -0
  317. package/lib-es/bridge.integration.test.d.ts.map +1 -0
  318. package/lib-es/bridge.integration.test.js +79 -0
  319. package/lib-es/bridge.integration.test.js.map +1 -0
  320. package/lib-es/broadcast.d.ts +8 -0
  321. package/lib-es/broadcast.d.ts.map +1 -0
  322. package/lib-es/broadcast.js +21 -0
  323. package/lib-es/broadcast.js.map +1 -0
  324. package/lib-es/buildOptimisticOperation.d.ts +16 -0
  325. package/lib-es/buildOptimisticOperation.d.ts.map +1 -0
  326. package/lib-es/buildOptimisticOperation.js +71 -0
  327. package/lib-es/buildOptimisticOperation.js.map +1 -0
  328. package/lib-es/cli-transaction.d.ts +2 -0
  329. package/lib-es/cli-transaction.d.ts.map +1 -0
  330. package/lib-es/cli-transaction.js +6 -0
  331. package/lib-es/cli-transaction.js.map +1 -0
  332. package/lib-es/createTransaction.d.ts +9 -0
  333. package/lib-es/createTransaction.d.ts.map +1 -0
  334. package/lib-es/createTransaction.js +25 -0
  335. package/lib-es/createTransaction.js.map +1 -0
  336. package/lib-es/datasets/ethereum.scanAccounts.1.d.ts +7 -0
  337. package/lib-es/datasets/ethereum.scanAccounts.1.d.ts.map +1 -0
  338. package/lib-es/datasets/ethereum.scanAccounts.1.js +49 -0
  339. package/lib-es/datasets/ethereum.scanAccounts.1.js.map +1 -0
  340. package/lib-es/datasets/ethereum1.d.ts +3 -0
  341. package/lib-es/datasets/ethereum1.d.ts.map +1 -0
  342. package/lib-es/datasets/ethereum1.js +19 -0
  343. package/lib-es/datasets/ethereum1.js.map +1 -0
  344. package/lib-es/datasets/ethereum2.d.ts +3 -0
  345. package/lib-es/datasets/ethereum2.d.ts.map +1 -0
  346. package/lib-es/datasets/ethereum2.js +19 -0
  347. package/lib-es/datasets/ethereum2.js.map +1 -0
  348. package/lib-es/datasets/ethereum_classic.d.ts +5 -0
  349. package/lib-es/datasets/ethereum_classic.d.ts.map +1 -0
  350. package/lib-es/datasets/ethereum_classic.js +67 -0
  351. package/lib-es/datasets/ethereum_classic.js.map +1 -0
  352. package/lib-es/deviceTransactionConfig.d.ts +15 -0
  353. package/lib-es/deviceTransactionConfig.d.ts.map +1 -0
  354. package/lib-es/deviceTransactionConfig.js +42 -0
  355. package/lib-es/deviceTransactionConfig.js.map +1 -0
  356. package/lib-es/errors.d.ts +16 -0
  357. package/lib-es/errors.d.ts.map +1 -0
  358. package/lib-es/errors.js +8 -0
  359. package/lib-es/errors.js.map +1 -0
  360. package/lib-es/estimateMaxSpendable.d.ts +4 -0
  361. package/lib-es/estimateMaxSpendable.d.ts.map +1 -0
  362. package/lib-es/estimateMaxSpendable.js +19 -0
  363. package/lib-es/estimateMaxSpendable.js.map +1 -0
  364. package/lib-es/getTransactionStatus.d.ts +23 -0
  365. package/lib-es/getTransactionStatus.d.ts.map +1 -0
  366. package/lib-es/getTransactionStatus.js +125 -0
  367. package/lib-es/getTransactionStatus.js.map +1 -0
  368. package/lib-es/hw-getAddress.d.ts +6 -0
  369. package/lib-es/hw-getAddress.d.ts.map +1 -0
  370. package/lib-es/hw-getAddress.js +23 -0
  371. package/lib-es/hw-getAddress.js.map +1 -0
  372. package/lib-es/logic.d.ts +31 -0
  373. package/lib-es/logic.d.ts.map +1 -0
  374. package/lib-es/logic.js +119 -0
  375. package/lib-es/logic.js.map +1 -0
  376. package/lib-es/preload.d.ts +6 -0
  377. package/lib-es/preload.d.ts.map +1 -0
  378. package/lib-es/preload.js +49 -0
  379. package/lib-es/preload.js.map +1 -0
  380. package/lib-es/prepareTransaction.d.ts +26 -0
  381. package/lib-es/prepareTransaction.d.ts.map +1 -0
  382. package/lib-es/prepareTransaction.js +118 -0
  383. package/lib-es/prepareTransaction.js.map +1 -0
  384. package/lib-es/signOperation.d.ts +18 -0
  385. package/lib-es/signOperation.d.ts.map +1 -0
  386. package/lib-es/signOperation.js +83 -0
  387. package/lib-es/signOperation.js.map +1 -0
  388. package/lib-es/signer.d.ts +27 -0
  389. package/lib-es/signer.d.ts.map +1 -0
  390. package/lib-es/signer.js +2 -0
  391. package/lib-es/signer.js.map +1 -0
  392. package/lib-es/specs.d.ts +3 -0
  393. package/lib-es/specs.d.ts.map +1 -0
  394. package/lib-es/specs.js +233 -0
  395. package/lib-es/specs.js.map +1 -0
  396. package/lib-es/speculos-deviceActions.d.ts +8 -0
  397. package/lib-es/speculos-deviceActions.d.ts.map +1 -0
  398. package/lib-es/speculos-deviceActions.js +63 -0
  399. package/lib-es/speculos-deviceActions.js.map +1 -0
  400. package/lib-es/synchronization.d.ts +27 -0
  401. package/lib-es/synchronization.d.ts.map +1 -0
  402. package/lib-es/synchronization.js +212 -0
  403. package/lib-es/synchronization.js.map +1 -0
  404. package/lib-es/testUtils.d.ts +6 -0
  405. package/lib-es/testUtils.d.ts.map +1 -0
  406. package/lib-es/testUtils.js +102 -0
  407. package/lib-es/testUtils.js.map +1 -0
  408. package/lib-es/transaction.d.ts +43 -0
  409. package/lib-es/transaction.d.ts.map +1 -0
  410. package/lib-es/transaction.js +112 -0
  411. package/lib-es/transaction.js.map +1 -0
  412. package/lib-es/types.d.ts +111 -0
  413. package/lib-es/types.d.ts.map +1 -0
  414. package/lib-es/types.js +2 -0
  415. package/lib-es/types.js.map +1 -0
  416. package/package.json +8 -23
  417. package/src/__tests__/adapters.unit.test.ts +22 -52
  418. package/src/__tests__/broadcast.unit.test.ts +9 -27
  419. package/src/__tests__/buildOptimisticOperation.unit.test.ts +4 -4
  420. package/src/__tests__/deviceTransactionConfig.unit.test.ts +7 -7
  421. package/src/__tests__/estimateMaxSpendable.unit.test.ts +2 -4
  422. package/src/__tests__/gasTracker/index.unit.test.ts +36 -0
  423. package/src/__tests__/gasTracker/ledger.unit.test.ts +108 -0
  424. package/src/__tests__/getTransactionStatus.unit.test.ts +35 -40
  425. package/src/__tests__/hw-getAddress.unit.test.ts +15 -2
  426. package/src/__tests__/logic.unit.test.ts +25 -72
  427. package/src/__tests__/preload.unit.test.ts +3 -9
  428. package/src/__tests__/prepareTransaction.unit.test.ts +131 -76
  429. package/src/__tests__/rpc.unit.test.ts +46 -80
  430. package/src/__tests__/signOperation.unit.test.ts +27 -25
  431. package/src/__tests__/synchronization.unit.test.ts +101 -153
  432. package/src/__tests__/transaction.unit.test.ts +6 -14
  433. package/src/adapters.ts +8 -18
  434. package/src/api/{etherscan.ts → explorer/etherscan.ts} +14 -29
  435. package/src/api/explorer/index.ts +34 -0
  436. package/src/api/gasTracker/index.ts +31 -0
  437. package/src/api/gasTracker/ledger.ts +103 -0
  438. package/src/api/{rpc.common.ts → rpc/rpc.common.ts} +41 -64
  439. package/src/bridge/js.ts +15 -22
  440. package/src/bridge.integration.test.ts +3 -10
  441. package/src/broadcast.ts +3 -7
  442. package/src/buildOptimisticOperation.ts +7 -17
  443. package/src/cli-transaction.ts +1 -7
  444. package/src/createTransaction.ts +14 -15
  445. package/src/deviceTransactionConfig.ts +1 -1
  446. package/src/errors.ts +6 -0
  447. package/src/estimateMaxSpendable.ts +14 -11
  448. package/src/getTransactionStatus.ts +41 -52
  449. package/src/hw-getAddress.ts +18 -19
  450. package/src/logic.ts +5 -15
  451. package/src/preload.ts +6 -16
  452. package/src/prepareTransaction.ts +30 -31
  453. package/src/signOperation.ts +57 -69
  454. package/src/signer.ts +35 -0
  455. package/src/specs.ts +27 -52
  456. package/src/speculos-deviceActions.ts +56 -65
  457. package/src/synchronization.ts +21 -60
  458. package/src/testUtils.ts +5 -19
  459. package/src/transaction.ts +6 -10
  460. package/src/types.ts +6 -0
  461. /package/src/api/{rpc.ts → rpc/index.ts} +0 -0
  462. /package/src/api/{rpc.native.ts → rpc/rpc.native.ts} +0 -0
@@ -0,0 +1,9 @@
1
+ import { AccountBridge } from "@ledgerhq/types-live";
2
+ import { Transaction as EvmTransaction } from "./types";
3
+ /**
4
+ * EVM Transaction factory.
5
+ * By default the transaction is an EIP-1559 transaction.
6
+ * @see prepareTransaction that will make sure it's compatible or not
7
+ */
8
+ export declare const createTransaction: AccountBridge<EvmTransaction>["createTransaction"];
9
+ //# sourceMappingURL=createTransaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createTransaction.d.ts","sourceRoot":"","sources":["../src/createTransaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,SAAS,CAAC;AAGxD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC,mBAAmB,CAa/E,CAAC"}
@@ -0,0 +1,25 @@
1
+ import BigNumber from "bignumber.js";
2
+ import { DEFAULT_GAS_LIMIT } from "./transaction";
3
+ /**
4
+ * EVM Transaction factory.
5
+ * By default the transaction is an EIP-1559 transaction.
6
+ * @see prepareTransaction that will make sure it's compatible or not
7
+ */
8
+ export const createTransaction = account => {
9
+ var _a, _b;
10
+ return ({
11
+ family: "evm",
12
+ mode: "send",
13
+ amount: new BigNumber(0),
14
+ useAllAmount: false,
15
+ recipient: "",
16
+ maxFeePerGas: new BigNumber(0),
17
+ maxPriorityFeePerGas: new BigNumber(0),
18
+ gasLimit: DEFAULT_GAS_LIMIT,
19
+ nonce: account.operationsCount + 1,
20
+ chainId: ((_b = (_a = account.currency) === null || _a === void 0 ? void 0 : _a.ethereumLikeInfo) === null || _b === void 0 ? void 0 : _b.chainId) || 0,
21
+ feesStrategy: "medium",
22
+ type: 2,
23
+ });
24
+ };
25
+ //# sourceMappingURL=createTransaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createTransaction.js","sourceRoot":"","sources":["../src/createTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAGrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAuD,OAAO,CAAC,EAAE;;IAAC,OAAA,CAAC;QAC/F,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC;QACxB,YAAY,EAAE,KAAK;QACnB,SAAS,EAAE,EAAE;QACb,YAAY,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC;QAC9B,oBAAoB,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC;QACtC,QAAQ,EAAE,iBAAiB;QAC3B,KAAK,EAAE,OAAO,CAAC,eAAe,GAAG,CAAC;QAClC,OAAO,EAAE,CAAA,MAAA,MAAC,OAAmB,CAAC,QAAQ,0CAAE,gBAAgB,0CAAE,OAAO,KAAI,CAAC;QACtE,YAAY,EAAE,QAAQ;QACtB,IAAI,EAAE,CAAC;KACR,CAAC,CAAA;CAAA,CAAC"}
@@ -0,0 +1,7 @@
1
+ declare const _default: {
2
+ name: string;
3
+ unstableAccounts: boolean;
4
+ apdus: string;
5
+ };
6
+ export default _default;
7
+ //# sourceMappingURL=ethereum.scanAccounts.1.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ethereum.scanAccounts.1.d.ts","sourceRoot":"","sources":["../../src/datasets/ethereum.scanAccounts.1.ts"],"names":[],"mappings":";;;;;AAAA,wBA+CE"}
@@ -0,0 +1,49 @@
1
+ export default {
2
+ name: "ethereum seed 1",
3
+ unstableAccounts: true,
4
+ apdus: `
5
+ => e00200000d038000002c8000003c80000000
6
+ <= 410469877df9567b58e6ef8f6cf1fb8a8e1bf28a327dee31b183a6b9cd1f3da063af0924506a9912793ef31e41df19f8653fa31bb1fecc32d2e41abdddb22ccb621028373561453661383832363036353137343345356546433033373937313136413335363539663638359000
7
+ => e002000011048000002c8000003c8000000000000000
8
+ <= 4104b7577f404537d1e934a8d2a1fd2552a7f399928b5af0aad714acc17b36865b3f5d1843d6a580c737c051656ac35978283a388a759911d289e9994071247d167528356466304333363936343142384166336337653961653037364535343636654636373833313943649000
9
+ => e002000011048000002c8000003c8000000000000001
10
+ <= 4104bee21a16156c645d0150e262c40648b9fd938c6462efe3adf9051efe077d30b356c86b8bc8a182e58cdc514e6d0c2670f6626d34f78220187e2d279d661d23f628446336313732383838343733383239324134373236353042624133653936433261344638383739369000
11
+ => e002000011048000002c8000003c8000000000000002
12
+ <= 410467f77bf213f0de5fd7ae7ac2ca2b6f7ad6cacecbb8688acd0bcf0fcc5b7b58512fe786639619b9f4a513061dd0355590ec5b7d2c4d934c43a37778920bf07e1a28623262344230413836384543326530613162326533314131304142414130393365463032386544389000
13
+ => e002000011048000002c8000003c8000000000000003
14
+ <= 4104dcce479cd733a7972cea67f0b5bf92d786a1e62a9afe5e50ddd2f7f7c8c1aaff89e28b236f5f1e75c702c3c0116de49dde6b32f06f66937f0b190bdd730bd84e28613563334139333430364465323733666639386244443343653935314232653431423137436443469000
15
+ => e002000011048000002c8000003c8000000000000004
16
+ <= 4104b60582b8ea13540e5292396949f9d2ed23d9ec4344e2463e9fe7fa36c12372da03a0427c48d653dd59abfcbb7628b323076415f1fd53bc601b8071d82ddd635528393945363561463136626644393139303246623638394163373938343338633042464334373439359000
17
+ => e002000011048000002c8000003c8000000000000005
18
+ <= 4104126bf90b475158cb8c947dbe47d9ecdff88c34c96c7b7f4fc17a05257dff1024c089fd51f657fa7f5b1041d23bc67d46cd0dd4df86c5318f653486199313e18f28663736394533463933663831313733653836333365354461653646433031426262443163634230389000
19
+ => e002000011048000002c8000003c8000000000000006
20
+ <= 4104dc7934183510e92e07136e9192da7d5bbd4c3a757b4d9bdf8dcca9baabdf8efddfad24ef74e8a0db52d9e4171516665ff6e4cd152273f460627933df3ced177828463439386638653139323342653437633335343932376445334332313661633341453734666535619000
21
+ => e002000011048000002c8000003c8000000000000007
22
+ <= 4104b7664a7012f69cee691362377df6d8558b0acfe1541dbf95af90e919d6867ac9d46b3b0b42e98fe8543c15ae501fed3d85869fd0310d9804faed0d07ae3b871628353932393338336336626631624439666533383462423665363162394232413230416637434361429000
23
+ => e002000011048000002c8000003c8000000000000008
24
+ <= 41045cdb8bc99d890837444698a53d9c18d22c6159e0727e051fee54e7299318282d3fe882b4aa133e7e15529e90b824b4f83ea5242b3ad4651c7d9cca12c796e45428634339303838363541443934303634623733433739663235393861373966393843654544364446619000
25
+ => e002000011048000002c8000003c8000000000000009
26
+ <= 4104720ec99d2297e627e239764e519be6900d06fc3d9145e306daeace60944c3c6dc14e74f24d27fc98278c0c07de821bae71ed5c95e9a7b95538637e817763609128373731663039424535353143386346393734426141426336373365324232323132643637383236469000
27
+ => e002000011048000002c8000003c800000000000000a
28
+ <= 41043a98496a4115f61e264bd74ba1ea661729ccfa239e72318ecbd307fb747d2032be5e308e435b24417320a95b719d60b7740b0bf297f926b414b4d3b44d903a9f28384138383238373537353662333831336262613844644631376634304232363064423232466334379000
29
+ => e002000011048000002c8000003c800000000000000b
30
+ <= 41040f3a6497cdef24c68b895a0d8a9f8b54e16ee84e4905a24236a242a82a900e068cb72ad71f52b57dfa41e00090cd035d1a4205dbe3982ac88189c743edb856a828646431344537456135384533384343316134653737386265663338323831664139413134353232419000
31
+ => e002000015058000002c8000003c800000000000000000000001
32
+ <= 41040374fb34926a57e184cdd3438109021b3169a9c74ffe726d1abc7a187fa9440a11f071b96f72c8e9e0ea1f82dc2180166bd8c7bae9401cdd3d2466a40e1755ca28304536613732456439323243323338394466303365383666354537394261374336344535343933379000
33
+ => e002000015058000002c8000003c800000000000000000000000
34
+ <= 410478f6d00bc3be349f69a8b88b3957d569d7ed44d27d0824988107ba1a6117cfcefc22b03b9be870ddadb643eeda4357761d44419cfbdccb19701be086780ff71128304533463062623935313646303166324333346332354530393537353138623861433934313463359000
35
+ => e002000015058000002c8000003c800000010000000000000000
36
+ <= 4104c20d717f7652a279588b267457c051e387fbeb8648b730cd3daeaa8fa3774f37ab535ab9bd024b87776b77b3409546a0b64e1b14828ea43891b4200318fc90fd28363637463942453934613432343538636235334133413636353131446361313962333937373338649000
37
+ => e002000015058000002c8000003c800000020000000000000000
38
+ <= 4104e788111a6c0254ec8184453383d2d8b18c8e0b86d1fea93c2691a9bc6240572f24129a634155d1291228a1721fc88737f75e51bb7575ccc69937d649c1422ea028386639353530323931314338316135454332626134623831356564326432433565316338383932359000
39
+ => e002000015058000002c8000003c800000030000000000000000
40
+ <= 4104ffd79641446518c675ad32e6434a2aba9e7c426200bc336d78222cbec00d2c8aa7a8c685084f450870e2a801049795ba051f8b3a878a586158697d6bd4ce0b6d28386261343131303566464135343531306362394436376362334137323632344434303532634130389000
41
+ => e002000015058000002c8000003c800000040000000000000000
42
+ <= 4104602f7c0f3f73a914b3dd83e8bb6f11f3dc8ea1d2c7308fa4f8d9d2000a4419eec324393f4cf191e83f3adc64de9388f5979664c6d6dac4c23c0566d7aabbddfa28366233343933464531383145413238336530333335653544384437363865323132326243366331389000
43
+ => e002000015058000002c8000003c800000050000000000000000
44
+ <= 410484f94dfa2c52fee4f8b37b578b0087de88ee282cb788a56af1eabd7711ddd37e6da1c9eada59926b7828d7e12db21c443ed0a2ca4521561806d3175407a557c128323546456139343435344664334137413138443935383131463565346562353733633163434334329000
45
+ => e002000015058000002c8000003c800000060000000000000000
46
+ <= 4104e7c7f373d0a568554b5372b68f6e697aee3947c053ee5d882afba2f2c9a44273768b2e61b01de519b0c1f365e23aea5e3d041a40a347a125e202a2d7d7ef596828624636373337664138373538463134443838376531646633323442423431363136334533366436319000
47
+ `,
48
+ };
49
+ //# sourceMappingURL=ethereum.scanAccounts.1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ethereum.scanAccounts.1.js","sourceRoot":"","sources":["../../src/datasets/ethereum.scanAccounts.1.ts"],"names":[],"mappings":"AAAA,eAAe;IACb,IAAI,EAAE,iBAAiB;IACvB,gBAAgB,EAAE,IAAI;IACtB,KAAK,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA2CJ;CACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { AccountRaw } from "@ledgerhq/types-live";
2
+ export declare const ethereum1: AccountRaw;
3
+ //# sourceMappingURL=ethereum1.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ethereum1.d.ts","sourceRoot":"","sources":["../../src/datasets/ethereum1.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,eAAO,MAAM,SAAS,EAAE,UAiBvB,CAAC"}
@@ -0,0 +1,19 @@
1
+ export const ethereum1 = {
2
+ id: "js:1:ethereum:0x0E3F0bb9516F01f2C34c25E0957518b8aC9414c5:",
3
+ seedIdentifier: "0x0E3F0bb9516F01f2C34c25E0957518b8aC9414c5",
4
+ name: "Ethereum legacy xpub6Bem...JyAdpYZy",
5
+ derivationMode: "",
6
+ index: 0,
7
+ freshAddress: "0x0E3F0bb9516F01f2C34c25E0957518b8aC9414c5",
8
+ freshAddressPath: "44'/60'/0'/0/0",
9
+ freshAddresses: [],
10
+ pendingOperations: [],
11
+ operations: [],
12
+ currencyId: "ethereum",
13
+ unitMagnitude: 18,
14
+ balance: "",
15
+ blockHeight: 0,
16
+ lastSyncDate: "",
17
+ xpub: "",
18
+ };
19
+ //# sourceMappingURL=ethereum1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ethereum1.js","sourceRoot":"","sources":["../../src/datasets/ethereum1.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAe;IACnC,EAAE,EAAE,2DAA2D;IAC/D,cAAc,EAAE,4CAA4C;IAC5D,IAAI,EAAE,qCAAqC;IAC3C,cAAc,EAAE,EAAE;IAClB,KAAK,EAAE,CAAC;IACR,YAAY,EAAE,4CAA4C;IAC1D,gBAAgB,EAAE,gBAAgB;IAClC,cAAc,EAAE,EAAE;IAClB,iBAAiB,EAAE,EAAE;IACrB,UAAU,EAAE,EAAE;IACd,UAAU,EAAE,UAAU;IACtB,aAAa,EAAE,EAAE;IACjB,OAAO,EAAE,EAAE;IACX,WAAW,EAAE,CAAC;IACd,YAAY,EAAE,EAAE;IAChB,IAAI,EAAE,EAAE;CACT,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { AccountRaw } from "@ledgerhq/types-live";
2
+ export declare const ethereum2: AccountRaw;
3
+ //# sourceMappingURL=ethereum2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ethereum2.d.ts","sourceRoot":"","sources":["../../src/datasets/ethereum2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,eAAO,MAAM,SAAS,EAAE,UAiBvB,CAAC"}
@@ -0,0 +1,19 @@
1
+ export const ethereum2 = {
2
+ id: "js:2:ethereum:0x789d2f10826BF8f3a56Ec524359bBA4e738Af5bF:",
3
+ seedIdentifier: "0x789d2f10826BF8f3a56Ec524359bBA4e738Af5bF",
4
+ name: "Ethereum legacy xpub6Bem...JyAdpYZy",
5
+ derivationMode: "",
6
+ index: 0,
7
+ freshAddress: "0x789d2f10826BF8f3a56Ec524359bBA4e738Af5bF",
8
+ freshAddressPath: "44'/60'/0'/0/0",
9
+ freshAddresses: [],
10
+ pendingOperations: [],
11
+ operations: [],
12
+ currencyId: "ethereum",
13
+ unitMagnitude: 18,
14
+ balance: "",
15
+ blockHeight: 0,
16
+ lastSyncDate: "",
17
+ xpub: "",
18
+ };
19
+ //# sourceMappingURL=ethereum2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ethereum2.js","sourceRoot":"","sources":["../../src/datasets/ethereum2.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAe;IACnC,EAAE,EAAE,2DAA2D;IAC/D,cAAc,EAAE,4CAA4C;IAC5D,IAAI,EAAE,qCAAqC;IAC3C,cAAc,EAAE,EAAE;IAClB,KAAK,EAAE,CAAC;IACR,YAAY,EAAE,4CAA4C;IAC1D,gBAAgB,EAAE,gBAAgB;IAClC,cAAc,EAAE,EAAE;IAClB,iBAAiB,EAAE,EAAE;IACrB,UAAU,EAAE,EAAE;IACd,UAAU,EAAE,UAAU;IACtB,aAAa,EAAE,EAAE;IACjB,OAAO,EAAE,EAAE;IACX,WAAW,EAAE,CAAC;IACd,YAAY,EAAE,EAAE;IAChB,IAAI,EAAE,EAAE;CACT,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { CurrenciesData } from "@ledgerhq/types-live";
2
+ import type { Transaction } from "../types";
3
+ declare const dataset: CurrenciesData<Transaction>;
4
+ export default dataset;
5
+ //# sourceMappingURL=ethereum_classic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ethereum_classic.d.ts","sourceRoot":"","sources":["../../src/datasets/ethereum_classic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,QAAA,MAAM,OAAO,EAAE,cAAc,CAAC,WAAW,CAgExC,CAAC;AACF,eAAe,OAAO,CAAC"}
@@ -0,0 +1,67 @@
1
+ const dataset = {
2
+ scanAccounts: [
3
+ {
4
+ name: "ethereum_classic seed 1",
5
+ apdus: `
6
+ => e00200000d038000002c8000003d80000000
7
+ <= 4104484d1e44afab12402f8d40684619f916936eb83872b4fb0b0cdcfe84bd73db6adc535ad2d4368ee7d8df42a261e295e04aabc60d80bdb010bd791d5fe87e731d28354564426331363364613164353133363936353530344265423732353361653346303432623542379000
8
+ => e002000011048000002c8000003c8000000000000000
9
+ <= 4104b7577f404537d1e934a8d2a1fd2552a7f399928b5af0aad714acc17b36865b3f5d1843d6a580c737c051656ac35978283a388a759911d289e9994071247d167528356466304333363936343142384166336337653961653037364535343636654636373833313943649000
10
+ => e002000011048000002c8000003c8000000000000001
11
+ <= 4104bee21a16156c645d0150e262c40648b9fd938c6462efe3adf9051efe077d30b356c86b8bc8a182e58cdc514e6d0c2670f6626d34f78220187e2d279d661d23f628446336313732383838343733383239324134373236353042624133653936433261344638383739369000
12
+ => e002000011048000002c8000003c8000000000000002
13
+ <= 410467f77bf213f0de5fd7ae7ac2ca2b6f7ad6cacecbb8688acd0bcf0fcc5b7b58512fe786639619b9f4a513061dd0355590ec5b7d2c4d934c43a37778920bf07e1a28623262344230413836384543326530613162326533314131304142414130393365463032386544389000
14
+ => e002000011048000002c8000003c8000000000000003
15
+ <= 4104dcce479cd733a7972cea67f0b5bf92d786a1e62a9afe5e50ddd2f7f7c8c1aaff89e28b236f5f1e75c702c3c0116de49dde6b32f06f66937f0b190bdd730bd84e28613563334139333430364465323733666639386244443343653935314232653431423137436443469000
16
+ => e002000011048000002c8000003c8000000000000004
17
+ <= 4104b60582b8ea13540e5292396949f9d2ed23d9ec4344e2463e9fe7fa36c12372da03a0427c48d653dd59abfcbb7628b323076415f1fd53bc601b8071d82ddd635528393945363561463136626644393139303246623638394163373938343338633042464334373439359000
18
+ => e002000011048000002c8000003c8000000000000005
19
+ <= 4104126bf90b475158cb8c947dbe47d9ecdff88c34c96c7b7f4fc17a05257dff1024c089fd51f657fa7f5b1041d23bc67d46cd0dd4df86c5318f653486199313e18f28663736394533463933663831313733653836333365354461653646433031426262443163634230389000
20
+ => e002000011048000002c8000003c8000000000000006
21
+ <= 4104dc7934183510e92e07136e9192da7d5bbd4c3a757b4d9bdf8dcca9baabdf8efddfad24ef74e8a0db52d9e4171516665ff6e4cd152273f460627933df3ced177828463439386638653139323342653437633335343932376445334332313661633341453734666535619000
22
+ => e002000011048000002c8000003c8000000000000007
23
+ <= 4104b7664a7012f69cee691362377df6d8558b0acfe1541dbf95af90e919d6867ac9d46b3b0b42e98fe8543c15ae501fed3d85869fd0310d9804faed0d07ae3b871628353932393338336336626631624439666533383462423665363162394232413230416637434361429000
24
+ => e002000011048000002c8000003c8000000000000008
25
+ <= 41045cdb8bc99d890837444698a53d9c18d22c6159e0727e051fee54e7299318282d3fe882b4aa133e7e15529e90b824b4f83ea5242b3ad4651c7d9cca12c796e45428634339303838363541443934303634623733433739663235393861373966393843654544364446619000
26
+ => e002000011048000002c8000003c8000000000000009
27
+ <= 4104720ec99d2297e627e239764e519be6900d06fc3d9145e306daeace60944c3c6dc14e74f24d27fc98278c0c07de821bae71ed5c95e9a7b95538637e817763609128373731663039424535353143386346393734426141426336373365324232323132643637383236469000
28
+ => e002000011048000002c8000003c800000000000000a
29
+ <= 41043a98496a4115f61e264bd74ba1ea661729ccfa239e72318ecbd307fb747d2032be5e308e435b24417320a95b719d60b7740b0bf297f926b414b4d3b44d903a9f28384138383238373537353662333831336262613844644631376634304232363064423232466334379000
30
+ => e002000011048000002c8000003c800000000000000b
31
+ <= 41040f3a6497cdef24c68b895a0d8a9f8b54e16ee84e4905a24236a242a82a900e068cb72ad71f52b57dfa41e00090cd035d1a4205dbe3982ac88189c743edb856a828646431344537456135384533384343316134653737386265663338323831664139413134353232419000
32
+ => e002000015058000002c8000003c800000000000000000000001
33
+ <= 41040374fb34926a57e184cdd3438109021b3169a9c74ffe726d1abc7a187fa9440a11f071b96f72c8e9e0ea1f82dc2180166bd8c7bae9401cdd3d2466a40e1755ca28304536613732456439323243323338394466303365383666354537394261374336344535343933379000
34
+ => e002000015058000002c8000003c800273d08000000000000000
35
+ <= 41048ebb30f7ad91340633bf4079b094df192c01e902b978a744463612f4d92779a26a981f940f5d1562ce2f7ece9410e2a510cbf0d58a72213a32ce5a4ac5ba2b4b28384438433044364436313243426531386545393339623438383130326330463266323330306342319000
36
+ => e002000015058000002c8000003c800273d08000000000000001
37
+ <= 41044a0ed12ec0f81f63916275abb0a598f5cfaed33ee71a446b4cf4aa0c913f2dce6463416384b2da8aed0bc82495de7d98a4b97788a81fccabb6ccf18b02b3103f28304345383662333261393235304639373538393934396231664635386230653439383745426134319000
38
+ => e002000015058000002c8000003c800273d08000000000000002
39
+ <= 41047c3451f44f8e83a6d1717d02b2d753a6f48d460ce658ac11e49aa7f23e24e9c163c44de44b545e50261ecc56071646aa206449360dc3d868d60f2ecf42f81a3928423234664145303442453136363132323061303939624334614339436334634431463131323735319000
40
+ => e002000015058000002c8000003c800273d08000000000000003
41
+ <= 41044022220fe926b53f6ae37ab9750436da58de9954fd32b8360a084f6ba1886d89c9b0f5f54bd273eca6aef4efb5a838c1aeaffa679609b4997e4ef4375958abb628313963326334636432636131393732353142623530436235433043323537373532413631416237339000
42
+ => e002000015058000002c8000003c800273d08000000000000004
43
+ <= 4104f639ceaa8f6bd63edc2168e8016c28bc7bb2e88b1655c5a340eea522121f5da8dd06351dc8329430b02d865b1b62f93ea5d29f6503ee4b79a8cebfdbde0bc03228306435663331313344393237413532333631356139303338644236343963334135613335313766439000
44
+ => e002000015058000002c8000003c800273d08000000000000005
45
+ <= 4104fab595f8b864663c1dd3dcdcff04e79ef2c552a2a9bfdaa1f2870ee4fbb577d165444d1b88c89a93e7dec0fac582698cfb6d22ca0912fabc8f59b510e8d14aeb28613832643633303962416438343444663331333531646644354563323436333330643036334166339000
46
+ => e002000015058000002c8000003c800273d08000000000000006
47
+ <= 410428bf0106161a8f6ee85702c927daf25b0933e87f30912c3731dd82cb734b8368358dd7b395f6a308ad10df2e669730e88f4bb25af4e470d0676330c9516c1e3228383946623865386531353134454435383837443430353439313130353033394539616531333861339000
48
+ => e002000015058000002c8000003c800273d08000000000000007
49
+ <= 4104e9862872e1bd6db9369ce076c73e96cf5c48e3247cb57bc830835d5f9a1b561f170ccc871834083b55ec67146c82674c6198b1b1ff8d388ffc768eb39e1fdf9728323544336463393734353145453137456565363537374661653843453133653936313738623862399000
50
+ => e002000015058000002c8000003c800273d08000000000000008
51
+ <= 41048267b52b06601d87bf6cc3aced6de50b5f9575b447cffaaf8575fc9ff0e3f20a82476e8798c805ad192946d5a7e0291e15d2ca2aa64554b77ba044d3558dd9bf28304331396631383643323064454241333934393937393431353845316339334641343039626238659000
52
+ => e002000015058000002c8000003c800273d08000000000000009
53
+ <= 41045a03c0346a5744a2dc91720b58e09e19ca614e014e0ba2b2f16335ad759f94585cecf2be542b9c559b45f13781d19255d9d07b1c2a3c3edd233fe0f31056278c28433663364662643362303365326431463243633064313739413530373444303738313639336242459000
54
+ => e002000015058000002c8000003c800273d0800000000000000a
55
+ <= 410406b58afef3acc41294fa5b75dacf131e7c0a112cea3fd479d967885fd5a7dd283bedeb63289dba3d941274b74e77a54173ea9f461b785708951dd2cf6425904928424264433236384545463134356539383964376238383342373233323736644130453342353134429000
56
+ => e002000015058000002c8000003c800273d0800000000000000b
57
+ <= 4104d386c86afec5afc490ac49373c1853d7c52ec77084e79afe6bc4c06506647f16f1cca01cecb9fa9b9c858a88ac3fdea2b0e9db4dfa73bca657eb7f10edeb5e7728324364433246313866303834383337374430394661383862613546653163323865414144363065329000
58
+ => e002000015058000002c8000003d800000000000000000000000
59
+ <= 4104e6961fb205192c59e2fc93113b38e3e352479b8903be6900db84aa1bb3849c7beb9b60795e61ca1bb8b13be0bf4e9190fffa7021b255d639921d9e46bc82495328363939343037623045453838323936323832303531413165444265623862626635343031466539629000
60
+ => e002000015058000002c8000003d800000010000000000000000
61
+ <= 4104a7befc3709876c8787641f45c92fc065ffcd873338f41a571482822ae91825364c22ff2cde1ff0f91d8a00926e6ff92e0b5296362f4b6cce3ea02393505dbadb28323863386162303964633038463266363237623538384233363035353930413238363162336344319000
62
+ `,
63
+ },
64
+ ],
65
+ };
66
+ export default dataset;
67
+ //# sourceMappingURL=ethereum_classic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ethereum_classic.js","sourceRoot":"","sources":["../../src/datasets/ethereum_classic.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,GAAgC;IAC3C,YAAY,EAAE;QACZ;YACE,IAAI,EAAE,yBAAyB;YAC/B,KAAK,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAyDN;SACF;KACF;CACF,CAAC;AACF,eAAe,OAAO,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { Account, AccountLike } from "@ledgerhq/types-live";
2
+ import type { CommonDeviceTransactionField } from "@ledgerhq/coin-framework/transaction/common";
3
+ import { Transaction as EvmTransaction, TransactionStatus } from "./types";
4
+ type DeviceTransactionField = CommonDeviceTransactionField;
5
+ /**
6
+ * Method responsible for creating the summary of the screens visible on the nano
7
+ */
8
+ declare function getDeviceTransactionConfig({ account, parentAccount, transaction, }: {
9
+ account: AccountLike;
10
+ parentAccount: Account | null | undefined;
11
+ transaction: EvmTransaction;
12
+ status: TransactionStatus;
13
+ }): Array<DeviceTransactionField>;
14
+ export default getDeviceTransactionConfig;
15
+ //# sourceMappingURL=deviceTransactionConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deviceTransactionConfig.d.ts","sourceRoot":"","sources":["../src/deviceTransactionConfig.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAChG,OAAO,EAAE,WAAW,IAAI,cAAc,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE3E,KAAK,sBAAsB,GAAG,4BAA4B,CAAC;AAE3D;;GAEG;AACH,iBAAS,0BAA0B,CAAC,EAClC,OAAO,EACP,aAAa,EACb,WAAW,GACZ,EAAE;IACD,OAAO,EAAE,WAAW,CAAC;IACrB,aAAa,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1C,WAAW,EAAE,cAAc,CAAC;IAC5B,MAAM,EAAE,iBAAiB,CAAC;CAC3B,GAAG,KAAK,CAAC,sBAAsB,CAAC,CAwChC;AAED,eAAe,0BAA0B,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { getMainAccount } from "@ledgerhq/coin-framework/account/index";
2
+ import { validateDomain } from "@ledgerhq/domain-service/utils/index";
3
+ /**
4
+ * Method responsible for creating the summary of the screens visible on the nano
5
+ */
6
+ function getDeviceTransactionConfig({ account, parentAccount, transaction, }) {
7
+ var _a;
8
+ const mainAccount = getMainAccount(account, parentAccount);
9
+ const { mode } = transaction;
10
+ const fields = [];
11
+ const hasValidDomain = validateDomain((_a = transaction.recipientDomain) === null || _a === void 0 ? void 0 : _a.domain);
12
+ switch (mode) {
13
+ default:
14
+ case "send":
15
+ fields.push({
16
+ type: "amount",
17
+ label: "Amount",
18
+ }, transaction.recipientDomain && hasValidDomain
19
+ ? {
20
+ type: "text",
21
+ label: "Domain",
22
+ value: transaction.recipientDomain.domain,
23
+ }
24
+ : {
25
+ type: "address",
26
+ label: "Address",
27
+ address: transaction.recipient,
28
+ }, {
29
+ type: "text",
30
+ label: "Network",
31
+ value: mainAccount.currency.name,
32
+ });
33
+ break;
34
+ }
35
+ fields.push({
36
+ type: "fees",
37
+ label: "Max fees",
38
+ });
39
+ return fields;
40
+ }
41
+ export default getDeviceTransactionConfig;
42
+ //# sourceMappingURL=deviceTransactionConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deviceTransactionConfig.js","sourceRoot":"","sources":["../src/deviceTransactionConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAQtE;;GAEG;AACH,SAAS,0BAA0B,CAAC,EAClC,OAAO,EACP,aAAa,EACb,WAAW,GAMZ;;IACC,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAC3D,MAAM,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC;IAC7B,MAAM,MAAM,GAAkC,EAAE,CAAC;IACjD,MAAM,cAAc,GAAG,cAAc,CAAC,MAAA,WAAW,CAAC,eAAe,0CAAE,MAAM,CAAC,CAAC;IAE3E,QAAQ,IAAI,EAAE;QACZ,QAAQ;QACR,KAAK,MAAM;YACT,MAAM,CAAC,IAAI,CACT;gBACE,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,QAAQ;aAChB,EACD,WAAW,CAAC,eAAe,IAAI,cAAc;gBAC3C,CAAC,CAAC;oBACE,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,QAAQ;oBACf,KAAK,EAAE,WAAW,CAAC,eAAe,CAAC,MAAM;iBAC1C;gBACH,CAAC,CAAC;oBACE,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,SAAS;oBAChB,OAAO,EAAE,WAAW,CAAC,SAAS;iBAC/B,EACL;gBACE,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,SAAS;gBAChB,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,IAAI;aACjC,CACF,CAAC;YACF,MAAM;KACT;IAED,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,UAAU;KAClB,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,eAAe,0BAA0B,CAAC"}
@@ -0,0 +1,16 @@
1
+ export declare const EtherscanAPIError: import("@ledgerhq/errors/lib/helpers").LedgerErrorConstructor<{
2
+ [key: string]: unknown;
3
+ }>;
4
+ export declare const GasEstimationError: import("@ledgerhq/errors/lib/helpers").LedgerErrorConstructor<{
5
+ [key: string]: unknown;
6
+ }>;
7
+ export declare const InsufficientFunds: import("@ledgerhq/errors/lib/helpers").LedgerErrorConstructor<{
8
+ [key: string]: unknown;
9
+ }>;
10
+ export declare const NoGasTrackerFound: import("@ledgerhq/errors/lib/helpers").LedgerErrorConstructor<{
11
+ [key: string]: unknown;
12
+ }>;
13
+ export declare const GasTrackerDoesNotSupportEIP1559: import("@ledgerhq/errors/lib/helpers").LedgerErrorConstructor<{
14
+ [key: string]: unknown;
15
+ }>;
16
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB;;EAA8C,CAAC;AAC7E,eAAO,MAAM,kBAAkB;;EAA+C,CAAC;AAC/E,eAAO,MAAM,iBAAiB;;EAA8C,CAAC;AAG7E,eAAO,MAAM,iBAAiB;;EAA8C,CAAC;AAC7E,eAAO,MAAM,+BAA+B;;EAE3C,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { createCustomErrorClass } from "@ledgerhq/errors";
2
+ export const EtherscanAPIError = createCustomErrorClass("EtherscanAPIError");
3
+ export const GasEstimationError = createCustomErrorClass("GasEstimationError");
4
+ export const InsufficientFunds = createCustomErrorClass("InsufficientFunds");
5
+ // GasTracker errors
6
+ export const NoGasTrackerFound = createCustomErrorClass("NoGasTrackerFound");
7
+ export const GasTrackerDoesNotSupportEIP1559 = createCustomErrorClass("GasTrackerDoesNotSupportEIP1559");
8
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,MAAM,CAAC,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,mBAAmB,CAAC,CAAC;AAC7E,MAAM,CAAC,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,oBAAoB,CAAC,CAAC;AAC/E,MAAM,CAAC,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,mBAAmB,CAAC,CAAC;AAE7E,oBAAoB;AACpB,MAAM,CAAC,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,mBAAmB,CAAC,CAAC;AAC7E,MAAM,CAAC,MAAM,+BAA+B,GAAG,sBAAsB,CACnE,iCAAiC,CAClC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { AccountBridge } from "@ledgerhq/types-live";
2
+ import { Transaction as EvmTransaction } from "./types";
3
+ export declare const estimateMaxSpendable: AccountBridge<EvmTransaction>["estimateMaxSpendable"];
4
+ //# sourceMappingURL=estimateMaxSpendable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"estimateMaxSpendable.d.ts","sourceRoot":"","sources":["../src/estimateMaxSpendable.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,SAAS,CAAC;AAExD,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC,sBAAsB,CAetF,CAAC"}
@@ -0,0 +1,19 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { getMainAccount } from "@ledgerhq/coin-framework/account/index";
11
+ import { createTransaction } from "./createTransaction";
12
+ import { prepareTransaction } from "./prepareTransaction";
13
+ export const estimateMaxSpendable = ({ account, parentAccount, transaction, }) => __awaiter(void 0, void 0, void 0, function* () {
14
+ const mainAccount = getMainAccount(account, parentAccount);
15
+ const estimatedTx = Object.assign(Object.assign(Object.assign({}, createTransaction(mainAccount)), transaction), { useAllAmount: true });
16
+ const { amount } = yield prepareTransaction(mainAccount, estimatedTx);
17
+ return amount;
18
+ });
19
+ //# sourceMappingURL=estimateMaxSpendable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"estimateMaxSpendable.js","sourceRoot":"","sources":["../src/estimateMaxSpendable.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAExE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,MAAM,CAAC,MAAM,oBAAoB,GAA0D,CAAO,EAChG,OAAO,EACP,aAAa,EACb,WAAW,GACZ,EAAE,EAAE;IACH,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,8CACf,iBAAiB,CAAC,WAAW,CAAC,GAC9B,WAAW,KACd,YAAY,EAAE,IAAI,GACD,CAAC;IAEpB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,kBAAkB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAEtE,OAAO,MAAM,CAAC;AAChB,CAAC,CAAA,CAAC"}
@@ -0,0 +1,23 @@
1
+ import BigNumber from "bignumber.js";
2
+ import { Account, AccountBridge, SubAccount } from "@ledgerhq/types-live";
3
+ import { Transaction as EvmTransaction } from "./types";
4
+ type ValidatedTransactionFields = "recipient" | "gasLimit" | "gasPrice" | "amount" | "maxPriorityFee";
5
+ type ValidationIssues = Partial<Record<ValidatedTransactionFields, Error>>;
6
+ /**
7
+ * Validate an address for a transaction
8
+ */
9
+ export declare const validateRecipient: (account: Account, tx: EvmTransaction) => Array<ValidationIssues>;
10
+ /**
11
+ * Validate the amount of a transaction for an account
12
+ */
13
+ export declare const validateAmount: (account: Account | SubAccount, transaction: EvmTransaction, totalSpent: BigNumber) => Array<ValidationIssues>;
14
+ /**
15
+ * Validate gas properties of a transaction, depending on its type and the account emitter
16
+ */
17
+ export declare const validateGas: (account: Account, tx: EvmTransaction, gasLimit: BigNumber, estimatedFees: BigNumber) => Array<ValidationIssues>;
18
+ /**
19
+ * Validate a transaction and get all possibles errors and warnings about it
20
+ */
21
+ export declare const getTransactionStatus: AccountBridge<EvmTransaction>["getTransactionStatus"];
22
+ export default getTransactionStatus;
23
+ //# sourceMappingURL=getTransactionStatus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTransactionStatus.d.ts","sourceRoot":"","sources":["../src/getTransactionStatus.ts"],"names":[],"mappings":"AAYA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAG1E,OAAO,EAGL,WAAW,IAAI,cAAc,EAC9B,MAAM,SAAS,CAAC;AAEjB,KAAK,0BAA0B,GAC3B,WAAW,GACX,UAAU,GACV,UAAU,GACV,QAAQ,GACR,gBAAgB,CAAC;AACrB,KAAK,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC,CAAC;AAK3E;;GAEG;AACH,eAAO,MAAM,iBAAiB,YACnB,OAAO,MACZ,cAAc,KACjB,MAAM,gBAAgB,CA8BxB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,YAChB,OAAO,GAAG,UAAU,eAChB,cAAc,cACf,SAAS,KACpB,MAAM,gBAAgB,CAmBxB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,YACb,OAAO,MACZ,cAAc,YACR,SAAS,iBACJ,SAAS,KACvB,MAAM,gBAAgB,CAwBxB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC,sBAAsB,CAoCtF,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,125 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { NotEnoughGas, FeeNotLoaded, InvalidAddress, ETHAddressNonEIP, RecipientRequired, AmountRequired, NotEnoughBalance, GasLessThanEstimate, PriorityFeeTooLow, } from "@ledgerhq/errors";
11
+ import { ethers } from "ethers";
12
+ import { findSubAccountById } from "@ledgerhq/coin-framework/account/index";
13
+ import { eip1559TransactionHasFees, getEstimatedFees, legacyTransactionHasFees } from "./logic";
14
+ // This regex will not work with Starknet since addresses are 65 caracters long after the 0x
15
+ const ethAddressRegEx = /^(0x)?[0-9a-fA-F]{40}$/;
16
+ /**
17
+ * Validate an address for a transaction
18
+ */
19
+ export const validateRecipient = (account, tx) => {
20
+ const errors = {};
21
+ const warnings = {};
22
+ if (tx.recipient) {
23
+ // Check if recipient is matching the format of a valid eth address or not
24
+ const isRecipientMatchingEthFormat = tx.recipient.match(ethAddressRegEx);
25
+ if (!isRecipientMatchingEthFormat) {
26
+ errors.recipient = new InvalidAddress("", {
27
+ currency: account.currency,
28
+ });
29
+ }
30
+ else {
31
+ // Check if address is respecting EIP-55
32
+ try {
33
+ const recipientChecksumed = ethers.utils.getAddress(tx.recipient);
34
+ if (tx.recipient !== recipientChecksumed) {
35
+ // this case can happen if the user is entering an ICAP address.
36
+ throw new Error();
37
+ }
38
+ }
39
+ catch (e) {
40
+ // either getAddress throws for a bad checksum or we throw manually if the recipient isn't the same.
41
+ warnings.recipient = new ETHAddressNonEIP(); // "Auto-verification not available: carefully verify the address"
42
+ }
43
+ }
44
+ }
45
+ else {
46
+ errors.recipient = new RecipientRequired(); // ""
47
+ }
48
+ return [errors, warnings];
49
+ };
50
+ /**
51
+ * Validate the amount of a transaction for an account
52
+ */
53
+ export const validateAmount = (account, transaction, totalSpent) => {
54
+ const errors = {};
55
+ const warnings = {};
56
+ const isTokenTransaction = (account === null || account === void 0 ? void 0 : account.type) === "TokenAccount";
57
+ const isSmartContractInteraction = isTokenTransaction || transaction.data; // if the transaction is a smart contract interaction, it's normal that transaction has no amount
58
+ const transactionHasFees = legacyTransactionHasFees(transaction) ||
59
+ eip1559TransactionHasFees(transaction);
60
+ const canHaveZeroAmount = isSmartContractInteraction && transactionHasFees;
61
+ // if no amount or 0
62
+ if ((!transaction.amount || transaction.amount.isZero()) && !canHaveZeroAmount) {
63
+ errors.amount = new AmountRequired(); // "Amount required"
64
+ }
65
+ else if (totalSpent.isGreaterThan(account.balance)) {
66
+ // if not enough to make the transaction
67
+ errors.amount = new NotEnoughBalance(); // "Sorry, insufficient funds"
68
+ }
69
+ return [errors, warnings];
70
+ };
71
+ /**
72
+ * Validate gas properties of a transaction, depending on its type and the account emitter
73
+ */
74
+ export const validateGas = (account, tx, gasLimit, estimatedFees) => {
75
+ const errors = {};
76
+ const warnings = {};
77
+ if (
78
+ // if fees are not set or wrongly set
79
+ !(legacyTransactionHasFees(tx) ||
80
+ eip1559TransactionHasFees(tx))) {
81
+ errors.gasPrice = new FeeNotLoaded(); // "Could not load fee rates. Please set manual fees"
82
+ }
83
+ else if (gasLimit.isZero()) {
84
+ errors.gasLimit = new FeeNotLoaded(); // "Could not load fee rates. Please set manual fees"
85
+ }
86
+ else if (gasLimit.isLessThan(21000)) {
87
+ // minimum gas for a tx is 21000
88
+ errors.gasLimit = new GasLessThanEstimate(); // "This may be too low. Please increase"
89
+ }
90
+ else if (tx.recipient && estimatedFees.gt(account.balance)) {
91
+ errors.gasPrice = new NotEnoughGas(); // "The parent account balance is insufficient for network fees"
92
+ }
93
+ else if (tx.maxPriorityFeePerGas && tx.maxPriorityFeePerGas.isZero()) {
94
+ errors.maxPriorityFee = new PriorityFeeTooLow();
95
+ }
96
+ return [errors, warnings];
97
+ };
98
+ /**
99
+ * Validate a transaction and get all possibles errors and warnings about it
100
+ */
101
+ export const getTransactionStatus = (account, tx) => __awaiter(void 0, void 0, void 0, function* () {
102
+ const subAccount = findSubAccountById(account, tx.subAccountId || "");
103
+ const isTokenTransaction = (subAccount === null || subAccount === void 0 ? void 0 : subAccount.type) === "TokenAccount";
104
+ const { gasLimit, additionalFees, amount } = tx;
105
+ const estimatedFees = getEstimatedFees(tx);
106
+ const totalFees = estimatedFees.plus(additionalFees || 0);
107
+ const totalSpent = isTokenTransaction ? tx.amount : tx.amount.plus(totalFees);
108
+ // Recipient related errors and warnings
109
+ const [recipientErr, recipientWarn] = validateRecipient(account, tx);
110
+ // Amount related errors and warnings
111
+ const [amountErr, amountWarn] = validateAmount(subAccount || account, tx, totalSpent);
112
+ // Gas related errors and warnings
113
+ const [gasErr, gasWarn] = validateGas(account, tx, gasLimit, totalFees);
114
+ const errors = Object.assign(Object.assign(Object.assign({}, recipientErr), gasErr), amountErr);
115
+ const warnings = Object.assign(Object.assign(Object.assign({}, recipientWarn), gasWarn), amountWarn);
116
+ return {
117
+ errors,
118
+ warnings,
119
+ estimatedFees,
120
+ amount,
121
+ totalSpent,
122
+ };
123
+ });
124
+ export default getTransactionStatus;
125
+ //# sourceMappingURL=getTransactionStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTransactionStatus.js","sourceRoot":"","sources":["../src/getTransactionStatus.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { GetAddressFn } from "@ledgerhq/coin-framework/bridge/getAddressWrapper";
2
+ import { SignerContext } from "@ledgerhq/coin-framework/signer";
3
+ import { EvmAddress, EvmSignature, EvmSigner } from "./signer";
4
+ declare const resolver: (signerContext: SignerContext<EvmSigner, EvmAddress | EvmSignature>) => GetAddressFn;
5
+ export default resolver;
6
+ //# sourceMappingURL=hw-getAddress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hw-getAddress.d.ts","sourceRoot":"","sources":["../src/hw-getAddress.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mDAAmD,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE/D,QAAA,MAAM,QAAQ,kBACG,cAAc,SAAS,EAAE,UAAU,GAAG,YAAY,CAAC,KACjE,YAYF,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,23 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import eip55 from "eip55";
11
+ const resolver = (signerContext) => {
12
+ return (deviceId, { path, verify }) => __awaiter(void 0, void 0, void 0, function* () {
13
+ const { address, publicKey, chainCode } = (yield signerContext(deviceId, signer => signer.getAddress(path, verify, false)));
14
+ return {
15
+ address: eip55.encode(address),
16
+ publicKey,
17
+ chainCode,
18
+ path,
19
+ };
20
+ });
21
+ };
22
+ export default resolver;
23
+ //# sourceMappingURL=hw-getAddress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hw-getAddress.js","sourceRoot":"","sources":["../src/hw-getAddress.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,MAAM,QAAQ,GAAG,CACf,aAAkE,EACpD,EAAE;IAChB,OAAO,CAAO,QAAgB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAqB,EAAE,EAAE;QACrE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAChF,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CACvC,CAAe,CAAC;QACjB,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;YAC9B,SAAS;YACT,SAAS;YACT,IAAI;SACL,CAAC;IACJ,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,QAAQ,CAAC"}