@ledgerhq/coin-aptos 2.0.0-nightly.5 → 2.1.0-next.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 (533) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/.unimportedrc.json +18 -6
  3. package/CHANGELOG.md +178 -34
  4. package/jest.config.js +2 -1
  5. package/jest.integ.config.js +8 -0
  6. package/lib/__tests__/api/craftTransaction.unit.test.d.ts +2 -0
  7. package/lib/__tests__/api/craftTransaction.unit.test.d.ts.map +1 -0
  8. package/lib/__tests__/api/craftTransaction.unit.test.js +187 -0
  9. package/lib/__tests__/api/craftTransaction.unit.test.js.map +1 -0
  10. package/lib/__tests__/api/getBalance.unit.test.d.ts +2 -0
  11. package/lib/__tests__/api/getBalance.unit.test.d.ts.map +1 -0
  12. package/lib/__tests__/api/getBalance.unit.test.js +41 -0
  13. package/lib/__tests__/api/getBalance.unit.test.js.map +1 -0
  14. package/lib/__tests__/api/index.integ.test.d.ts +2 -0
  15. package/lib/__tests__/api/index.integ.test.d.ts.map +1 -0
  16. package/lib/__tests__/api/index.integ.test.js +319 -0
  17. package/lib/__tests__/api/index.integ.test.js.map +1 -0
  18. package/lib/__tests__/api/index.test.js +48 -404
  19. package/lib/__tests__/api/index.test.js.map +1 -1
  20. package/lib/__tests__/bridge/broadcast.test.js +5 -5
  21. package/lib/__tests__/bridge/broadcast.test.js.map +1 -1
  22. package/lib/__tests__/bridge/getFeesForTransaction.test.js +115 -14
  23. package/lib/__tests__/bridge/getFeesForTransaction.test.js.map +1 -1
  24. package/lib/__tests__/bridge/getTransactionStatus.test.js +175 -37
  25. package/lib/__tests__/bridge/getTransactionStatus.test.js.map +1 -1
  26. package/lib/__tests__/bridge/logic.test.js +703 -479
  27. package/lib/__tests__/bridge/logic.test.js.map +1 -1
  28. package/lib/__tests__/bridge/prepareTransaction.test.js +3 -3
  29. package/lib/__tests__/bridge/prepareTransaction.test.js.map +1 -1
  30. package/lib/__tests__/bridge/signOperation.test.js +137 -14
  31. package/lib/__tests__/bridge/signOperation.test.js.map +1 -1
  32. package/lib/__tests__/bridge/synchronisation.test.js +1215 -68
  33. package/lib/__tests__/bridge/synchronisation.test.js.map +1 -1
  34. package/lib/__tests__/index.test.js +1 -1
  35. package/lib/__tests__/index.test.js.map +1 -1
  36. package/lib/__tests__/logic/buildTransaction.test.d.ts.map +1 -0
  37. package/lib/__tests__/logic/buildTransaction.test.js +114 -0
  38. package/lib/__tests__/logic/buildTransaction.test.js.map +1 -0
  39. package/lib/__tests__/logic/calculateAmount.unit.test.d.ts +2 -0
  40. package/lib/__tests__/logic/calculateAmount.unit.test.d.ts.map +1 -0
  41. package/lib/__tests__/logic/calculateAmount.unit.test.js +45 -0
  42. package/lib/__tests__/logic/calculateAmount.unit.test.js.map +1 -0
  43. package/lib/__tests__/logic/combine.unit.test.d.ts +2 -0
  44. package/lib/__tests__/logic/combine.unit.test.d.ts.map +1 -0
  45. package/lib/__tests__/logic/combine.unit.test.js +47 -0
  46. package/lib/__tests__/logic/combine.unit.test.js.map +1 -0
  47. package/lib/__tests__/logic/compareAddress.unit.test.d.ts +2 -0
  48. package/lib/__tests__/logic/compareAddress.unit.test.d.ts.map +1 -0
  49. package/lib/__tests__/logic/compareAddress.unit.test.js +26 -0
  50. package/lib/__tests__/logic/compareAddress.unit.test.js.map +1 -0
  51. package/lib/__tests__/logic/createTransaction.test.d.ts.map +1 -0
  52. package/lib/__tests__/{bridge → logic}/createTransaction.test.js +2 -2
  53. package/lib/__tests__/logic/createTransaction.test.js.map +1 -0
  54. package/lib/__tests__/logic/getCoinAndAmounts.unit.test.d.ts +2 -0
  55. package/lib/__tests__/logic/getCoinAndAmounts.unit.test.d.ts.map +1 -0
  56. package/lib/__tests__/logic/getCoinAndAmounts.unit.test.js +186 -0
  57. package/lib/__tests__/logic/getCoinAndAmounts.unit.test.js.map +1 -0
  58. package/lib/__tests__/logic/getFunctionAddress.unit.test.d.ts +2 -0
  59. package/lib/__tests__/logic/getFunctionAddress.unit.test.d.ts.map +1 -0
  60. package/lib/__tests__/logic/getFunctionAddress.unit.test.js +29 -0
  61. package/lib/__tests__/logic/getFunctionAddress.unit.test.js.map +1 -0
  62. package/lib/__tests__/logic/getResourceAddress.unit.test.d.ts +2 -0
  63. package/lib/__tests__/logic/getResourceAddress.unit.test.d.ts.map +1 -0
  64. package/lib/__tests__/logic/getResourceAddress.unit.test.js +218 -0
  65. package/lib/__tests__/logic/getResourceAddress.unit.test.js.map +1 -0
  66. package/lib/__tests__/logic/isTestnet.unit.test.d.ts +2 -0
  67. package/lib/__tests__/logic/isTestnet.unit.test.d.ts.map +1 -0
  68. package/lib/__tests__/logic/isTestnet.unit.test.js +12 -0
  69. package/lib/__tests__/logic/isTestnet.unit.test.js.map +1 -0
  70. package/lib/__tests__/logic/normalizeAddress.unit.test.d.ts +2 -0
  71. package/lib/__tests__/logic/normalizeAddress.unit.test.d.ts.map +1 -0
  72. package/lib/__tests__/logic/normalizeAddress.unit.test.js +12 -0
  73. package/lib/__tests__/logic/normalizeAddress.unit.test.js.map +1 -0
  74. package/lib/__tests__/logic/processRecipients.unit.test.d.ts +2 -0
  75. package/lib/__tests__/logic/processRecipients.unit.test.d.ts.map +1 -0
  76. package/lib/__tests__/logic/processRecipients.unit.test.js +79 -0
  77. package/lib/__tests__/logic/processRecipients.unit.test.js.map +1 -0
  78. package/lib/__tests__/network/client.test.d.ts +2 -0
  79. package/lib/__tests__/network/client.test.d.ts.map +1 -0
  80. package/lib/__tests__/network/client.test.js +1124 -0
  81. package/lib/__tests__/network/client.test.js.map +1 -0
  82. package/lib/api/index.d.ts +4 -30
  83. package/lib/api/index.d.ts.map +1 -1
  84. package/lib/api/index.js +19 -170
  85. package/lib/api/index.js.map +1 -1
  86. package/lib/bridge/bridge.fixture.d.ts +2 -0
  87. package/lib/bridge/bridge.fixture.d.ts.map +1 -1
  88. package/lib/bridge/bridge.fixture.js +85 -13
  89. package/lib/bridge/bridge.fixture.js.map +1 -1
  90. package/lib/bridge/broadcast.d.ts +3 -2
  91. package/lib/bridge/broadcast.d.ts.map +1 -1
  92. package/lib/bridge/broadcast.js +4 -3
  93. package/lib/bridge/broadcast.js.map +1 -1
  94. package/lib/bridge/estimateMaxSpendable.d.ts.map +1 -1
  95. package/lib/bridge/estimateMaxSpendable.js +6 -5
  96. package/lib/bridge/estimateMaxSpendable.js.map +1 -1
  97. package/lib/bridge/getFeesForTransaction.d.ts +1 -1
  98. package/lib/bridge/getFeesForTransaction.d.ts.map +1 -1
  99. package/lib/bridge/getFeesForTransaction.js +20 -14
  100. package/lib/bridge/getFeesForTransaction.js.map +1 -1
  101. package/lib/bridge/getTransactionStatus.d.ts.map +1 -1
  102. package/lib/bridge/getTransactionStatus.js +28 -14
  103. package/lib/bridge/getTransactionStatus.js.map +1 -1
  104. package/lib/bridge/index.d.ts +1 -1
  105. package/lib/bridge/index.d.ts.map +1 -1
  106. package/lib/bridge/index.js +1 -1
  107. package/lib/bridge/index.js.map +1 -1
  108. package/lib/bridge/logic.d.ts +5 -19
  109. package/lib/bridge/logic.d.ts.map +1 -1
  110. package/lib/bridge/logic.js +50 -147
  111. package/lib/bridge/logic.js.map +1 -1
  112. package/lib/bridge/prepareTransaction.d.ts.map +1 -1
  113. package/lib/bridge/prepareTransaction.js +5 -4
  114. package/lib/bridge/prepareTransaction.js.map +1 -1
  115. package/lib/bridge/signOperation.d.ts.map +1 -1
  116. package/lib/bridge/signOperation.js +21 -7
  117. package/lib/bridge/signOperation.js.map +1 -1
  118. package/lib/bridge/synchronisation.d.ts +15 -0
  119. package/lib/bridge/synchronisation.d.ts.map +1 -1
  120. package/lib/bridge/synchronisation.js +129 -6
  121. package/lib/bridge/synchronisation.js.map +1 -1
  122. package/lib/config.d.ts +13 -0
  123. package/lib/config.d.ts.map +1 -0
  124. package/lib/config.js +9 -0
  125. package/lib/config.js.map +1 -0
  126. package/lib/constants.d.ts +13 -2
  127. package/lib/constants.d.ts.map +1 -1
  128. package/lib/constants.js +17 -2
  129. package/lib/constants.js.map +1 -1
  130. package/lib/logic/buildTransaction.d.ts +9 -0
  131. package/lib/logic/buildTransaction.d.ts.map +1 -0
  132. package/lib/logic/buildTransaction.js +47 -0
  133. package/lib/logic/buildTransaction.js.map +1 -0
  134. package/lib/logic/calculateAmount.d.ts +3 -0
  135. package/lib/logic/calculateAmount.d.ts.map +1 -0
  136. package/lib/logic/calculateAmount.js +13 -0
  137. package/lib/logic/calculateAmount.js.map +1 -0
  138. package/lib/logic/combine.d.ts +4 -0
  139. package/lib/logic/combine.d.ts.map +1 -0
  140. package/lib/logic/combine.js +34 -0
  141. package/lib/logic/combine.js.map +1 -0
  142. package/lib/logic/craftTransaction.d.ts +5 -0
  143. package/lib/logic/craftTransaction.d.ts.map +1 -0
  144. package/lib/logic/craftTransaction.js +68 -0
  145. package/lib/logic/craftTransaction.js.map +1 -0
  146. package/lib/logic/createTransaction.d.ts.map +1 -0
  147. package/lib/{bridge → logic}/createTransaction.js +3 -3
  148. package/lib/logic/createTransaction.js.map +1 -0
  149. package/lib/logic/getBalance.d.ts +5 -0
  150. package/lib/logic/getBalance.d.ts.map +1 -0
  151. package/lib/logic/getBalance.js +12 -0
  152. package/lib/logic/getBalance.js.map +1 -0
  153. package/lib/logic/getCoinAndAmounts.d.ts +13 -0
  154. package/lib/logic/getCoinAndAmounts.d.ts.map +1 -0
  155. package/lib/logic/getCoinAndAmounts.js +112 -0
  156. package/lib/logic/getCoinAndAmounts.js.map +1 -0
  157. package/lib/logic/getFunctionAddress.d.ts +3 -0
  158. package/lib/logic/getFunctionAddress.d.ts.map +1 -0
  159. package/lib/logic/getFunctionAddress.js +12 -0
  160. package/lib/logic/getFunctionAddress.js.map +1 -0
  161. package/lib/logic/getResourceAddress.d.ts +4 -0
  162. package/lib/logic/getResourceAddress.d.ts.map +1 -0
  163. package/lib/logic/getResourceAddress.js +17 -0
  164. package/lib/logic/getResourceAddress.js.map +1 -0
  165. package/lib/logic/isTestnet.d.ts +2 -0
  166. package/lib/logic/isTestnet.d.ts.map +1 -0
  167. package/lib/logic/isTestnet.js +9 -0
  168. package/lib/logic/isTestnet.js.map +1 -0
  169. package/lib/logic/isWriteSetChangeWriteResource.d.ts +3 -0
  170. package/lib/logic/isWriteSetChangeWriteResource.d.ts.map +1 -0
  171. package/lib/logic/isWriteSetChangeWriteResource.js +8 -0
  172. package/lib/logic/isWriteSetChangeWriteResource.js.map +1 -0
  173. package/lib/logic/normalizeAddress.d.ts +2 -0
  174. package/lib/logic/normalizeAddress.d.ts.map +1 -0
  175. package/lib/logic/normalizeAddress.js +12 -0
  176. package/lib/logic/normalizeAddress.js.map +1 -0
  177. package/lib/logic/normalizeTransactionOptions.d.ts +3 -0
  178. package/lib/logic/normalizeTransactionOptions.d.ts.map +1 -0
  179. package/lib/logic/normalizeTransactionOptions.js +21 -0
  180. package/lib/logic/normalizeTransactionOptions.js.map +1 -0
  181. package/lib/logic/processRecipients.d.ts +6 -0
  182. package/lib/logic/processRecipients.d.ts.map +1 -0
  183. package/lib/logic/processRecipients.js +58 -0
  184. package/lib/logic/processRecipients.js.map +1 -0
  185. package/lib/logic/transactionsToOperations.d.ts +7 -0
  186. package/lib/logic/transactionsToOperations.d.ts.map +1 -0
  187. package/lib/logic/transactionsToOperations.js +89 -0
  188. package/lib/logic/transactionsToOperations.js.map +1 -0
  189. package/lib/network/client.d.ts +38 -0
  190. package/lib/network/client.d.ts.map +1 -0
  191. package/lib/network/client.js +283 -0
  192. package/lib/network/client.js.map +1 -0
  193. package/lib/network/graphql/queries.d.ts.map +1 -0
  194. package/lib/{api → network}/graphql/queries.js +6 -6
  195. package/lib/network/graphql/queries.js.map +1 -0
  196. package/lib/{api → network}/graphql/types.d.ts +9 -9
  197. package/lib/network/graphql/types.d.ts.map +1 -0
  198. package/lib/{api → network}/graphql/types.js.map +1 -1
  199. package/lib/network/index.d.ts +2 -1
  200. package/lib/network/index.d.ts.map +1 -1
  201. package/lib/network/index.js +19 -7
  202. package/lib/network/index.js.map +1 -1
  203. package/lib/test/bot-specs.d.ts.map +1 -1
  204. package/lib/test/bot-specs.js +40 -1
  205. package/lib/test/bot-specs.js.map +1 -1
  206. package/lib/test/bridgeDatasetTest.d.ts.map +1 -1
  207. package/lib/test/bridgeDatasetTest.js +44 -62
  208. package/lib/test/bridgeDatasetTest.js.map +1 -1
  209. package/lib/test/speculos-deviceActions.d.ts +1 -0
  210. package/lib/test/speculos-deviceActions.d.ts.map +1 -1
  211. package/lib/test/speculos-deviceActions.js +37 -5
  212. package/lib/test/speculos-deviceActions.js.map +1 -1
  213. package/lib/types/assets.d.ts +16 -0
  214. package/lib/types/assets.d.ts.map +1 -0
  215. package/lib/types/assets.js +3 -0
  216. package/lib/types/assets.js.map +1 -0
  217. package/lib/types/index.d.ts +22 -7
  218. package/lib/types/index.d.ts.map +1 -1
  219. package/lib-es/__tests__/api/craftTransaction.unit.test.d.ts +2 -0
  220. package/lib-es/__tests__/api/craftTransaction.unit.test.d.ts.map +1 -0
  221. package/lib-es/__tests__/api/craftTransaction.unit.test.js +185 -0
  222. package/lib-es/__tests__/api/craftTransaction.unit.test.js.map +1 -0
  223. package/lib-es/__tests__/api/getBalance.unit.test.d.ts +2 -0
  224. package/lib-es/__tests__/api/getBalance.unit.test.d.ts.map +1 -0
  225. package/lib-es/__tests__/api/getBalance.unit.test.js +36 -0
  226. package/lib-es/__tests__/api/getBalance.unit.test.js.map +1 -0
  227. package/lib-es/__tests__/api/index.integ.test.d.ts +2 -0
  228. package/lib-es/__tests__/api/index.integ.test.d.ts.map +1 -0
  229. package/lib-es/__tests__/api/index.integ.test.js +317 -0
  230. package/lib-es/__tests__/api/index.integ.test.js.map +1 -0
  231. package/lib-es/__tests__/api/index.test.js +52 -408
  232. package/lib-es/__tests__/api/index.test.js.map +1 -1
  233. package/lib-es/__tests__/bridge/broadcast.test.js +2 -2
  234. package/lib-es/__tests__/bridge/broadcast.test.js.map +1 -1
  235. package/lib-es/__tests__/bridge/getFeesForTransaction.test.js +112 -11
  236. package/lib-es/__tests__/bridge/getFeesForTransaction.test.js.map +1 -1
  237. package/lib-es/__tests__/bridge/getTransactionStatus.test.js +177 -39
  238. package/lib-es/__tests__/bridge/getTransactionStatus.test.js.map +1 -1
  239. package/lib-es/__tests__/bridge/logic.test.js +703 -479
  240. package/lib-es/__tests__/bridge/logic.test.js.map +1 -1
  241. package/lib-es/__tests__/bridge/prepareTransaction.test.js +2 -2
  242. package/lib-es/__tests__/bridge/prepareTransaction.test.js.map +1 -1
  243. package/lib-es/__tests__/bridge/signOperation.test.js +137 -14
  244. package/lib-es/__tests__/bridge/signOperation.test.js.map +1 -1
  245. package/lib-es/__tests__/bridge/synchronisation.test.js +1213 -69
  246. package/lib-es/__tests__/bridge/synchronisation.test.js.map +1 -1
  247. package/lib-es/__tests__/index.test.js +1 -1
  248. package/lib-es/__tests__/index.test.js.map +1 -1
  249. package/lib-es/__tests__/logic/buildTransaction.test.d.ts.map +1 -0
  250. package/lib-es/__tests__/logic/buildTransaction.test.js +109 -0
  251. package/lib-es/__tests__/logic/buildTransaction.test.js.map +1 -0
  252. package/lib-es/__tests__/logic/calculateAmount.unit.test.d.ts +2 -0
  253. package/lib-es/__tests__/logic/calculateAmount.unit.test.d.ts.map +1 -0
  254. package/lib-es/__tests__/logic/calculateAmount.unit.test.js +40 -0
  255. package/lib-es/__tests__/logic/calculateAmount.unit.test.js.map +1 -0
  256. package/lib-es/__tests__/logic/combine.unit.test.d.ts +2 -0
  257. package/lib-es/__tests__/logic/combine.unit.test.d.ts.map +1 -0
  258. package/lib-es/__tests__/logic/combine.unit.test.js +45 -0
  259. package/lib-es/__tests__/logic/combine.unit.test.js.map +1 -0
  260. package/lib-es/__tests__/logic/compareAddress.unit.test.d.ts +2 -0
  261. package/lib-es/__tests__/logic/compareAddress.unit.test.d.ts.map +1 -0
  262. package/lib-es/__tests__/logic/compareAddress.unit.test.js +24 -0
  263. package/lib-es/__tests__/logic/compareAddress.unit.test.js.map +1 -0
  264. package/lib-es/__tests__/logic/createTransaction.test.d.ts.map +1 -0
  265. package/lib-es/__tests__/{bridge → logic}/createTransaction.test.js +2 -2
  266. package/lib-es/__tests__/logic/createTransaction.test.js.map +1 -0
  267. package/lib-es/__tests__/logic/getCoinAndAmounts.unit.test.d.ts +2 -0
  268. package/lib-es/__tests__/logic/getCoinAndAmounts.unit.test.d.ts.map +1 -0
  269. package/lib-es/__tests__/logic/getCoinAndAmounts.unit.test.js +181 -0
  270. package/lib-es/__tests__/logic/getCoinAndAmounts.unit.test.js.map +1 -0
  271. package/lib-es/__tests__/logic/getFunctionAddress.unit.test.d.ts +2 -0
  272. package/lib-es/__tests__/logic/getFunctionAddress.unit.test.d.ts.map +1 -0
  273. package/lib-es/__tests__/logic/getFunctionAddress.unit.test.js +27 -0
  274. package/lib-es/__tests__/logic/getFunctionAddress.unit.test.js.map +1 -0
  275. package/lib-es/__tests__/logic/getResourceAddress.unit.test.d.ts +2 -0
  276. package/lib-es/__tests__/logic/getResourceAddress.unit.test.d.ts.map +1 -0
  277. package/lib-es/__tests__/logic/getResourceAddress.unit.test.js +216 -0
  278. package/lib-es/__tests__/logic/getResourceAddress.unit.test.js.map +1 -0
  279. package/lib-es/__tests__/logic/isTestnet.unit.test.d.ts +2 -0
  280. package/lib-es/__tests__/logic/isTestnet.unit.test.d.ts.map +1 -0
  281. package/lib-es/__tests__/logic/isTestnet.unit.test.js +10 -0
  282. package/lib-es/__tests__/logic/isTestnet.unit.test.js.map +1 -0
  283. package/lib-es/__tests__/logic/normalizeAddress.unit.test.d.ts +2 -0
  284. package/lib-es/__tests__/logic/normalizeAddress.unit.test.d.ts.map +1 -0
  285. package/lib-es/__tests__/logic/normalizeAddress.unit.test.js +10 -0
  286. package/lib-es/__tests__/logic/normalizeAddress.unit.test.js.map +1 -0
  287. package/lib-es/__tests__/logic/processRecipients.unit.test.d.ts +2 -0
  288. package/lib-es/__tests__/logic/processRecipients.unit.test.d.ts.map +1 -0
  289. package/lib-es/__tests__/logic/processRecipients.unit.test.js +74 -0
  290. package/lib-es/__tests__/logic/processRecipients.unit.test.js.map +1 -0
  291. package/lib-es/__tests__/network/client.test.d.ts +2 -0
  292. package/lib-es/__tests__/network/client.test.d.ts.map +1 -0
  293. package/lib-es/__tests__/network/client.test.js +1119 -0
  294. package/lib-es/__tests__/network/client.test.js.map +1 -0
  295. package/lib-es/api/index.d.ts +4 -30
  296. package/lib-es/api/index.d.ts.map +1 -1
  297. package/lib-es/api/index.js +17 -168
  298. package/lib-es/api/index.js.map +1 -1
  299. package/lib-es/bridge/bridge.fixture.d.ts +2 -0
  300. package/lib-es/bridge/bridge.fixture.d.ts.map +1 -1
  301. package/lib-es/bridge/bridge.fixture.js +82 -12
  302. package/lib-es/bridge/bridge.fixture.js.map +1 -1
  303. package/lib-es/bridge/broadcast.d.ts +3 -2
  304. package/lib-es/bridge/broadcast.d.ts.map +1 -1
  305. package/lib-es/bridge/broadcast.js +4 -3
  306. package/lib-es/bridge/broadcast.js.map +1 -1
  307. package/lib-es/bridge/estimateMaxSpendable.d.ts.map +1 -1
  308. package/lib-es/bridge/estimateMaxSpendable.js +4 -3
  309. package/lib-es/bridge/estimateMaxSpendable.js.map +1 -1
  310. package/lib-es/bridge/getFeesForTransaction.d.ts +1 -1
  311. package/lib-es/bridge/getFeesForTransaction.d.ts.map +1 -1
  312. package/lib-es/bridge/getFeesForTransaction.js +15 -9
  313. package/lib-es/bridge/getFeesForTransaction.js.map +1 -1
  314. package/lib-es/bridge/getTransactionStatus.d.ts.map +1 -1
  315. package/lib-es/bridge/getTransactionStatus.js +28 -14
  316. package/lib-es/bridge/getTransactionStatus.js.map +1 -1
  317. package/lib-es/bridge/index.d.ts +1 -1
  318. package/lib-es/bridge/index.d.ts.map +1 -1
  319. package/lib-es/bridge/index.js +1 -1
  320. package/lib-es/bridge/index.js.map +1 -1
  321. package/lib-es/bridge/logic.d.ts +5 -19
  322. package/lib-es/bridge/logic.d.ts.map +1 -1
  323. package/lib-es/bridge/logic.js +44 -134
  324. package/lib-es/bridge/logic.js.map +1 -1
  325. package/lib-es/bridge/prepareTransaction.d.ts.map +1 -1
  326. package/lib-es/bridge/prepareTransaction.js +5 -4
  327. package/lib-es/bridge/prepareTransaction.js.map +1 -1
  328. package/lib-es/bridge/signOperation.d.ts.map +1 -1
  329. package/lib-es/bridge/signOperation.js +19 -5
  330. package/lib-es/bridge/signOperation.js.map +1 -1
  331. package/lib-es/bridge/synchronisation.d.ts +15 -0
  332. package/lib-es/bridge/synchronisation.d.ts.map +1 -1
  333. package/lib-es/bridge/synchronisation.js +124 -4
  334. package/lib-es/bridge/synchronisation.js.map +1 -1
  335. package/lib-es/config.d.ts +13 -0
  336. package/lib-es/config.d.ts.map +1 -0
  337. package/lib-es/config.js +4 -0
  338. package/lib-es/config.js.map +1 -0
  339. package/lib-es/constants.d.ts +13 -2
  340. package/lib-es/constants.d.ts.map +1 -1
  341. package/lib-es/constants.js +13 -1
  342. package/lib-es/constants.js.map +1 -1
  343. package/lib-es/logic/buildTransaction.d.ts +9 -0
  344. package/lib-es/logic/buildTransaction.d.ts.map +1 -0
  345. package/lib-es/logic/buildTransaction.js +43 -0
  346. package/lib-es/logic/buildTransaction.js.map +1 -0
  347. package/lib-es/logic/calculateAmount.d.ts +3 -0
  348. package/lib-es/logic/calculateAmount.d.ts.map +1 -0
  349. package/lib-es/logic/calculateAmount.js +9 -0
  350. package/lib-es/logic/calculateAmount.js.map +1 -0
  351. package/lib-es/logic/combine.d.ts +4 -0
  352. package/lib-es/logic/combine.d.ts.map +1 -0
  353. package/lib-es/logic/combine.js +29 -0
  354. package/lib-es/logic/combine.js.map +1 -0
  355. package/lib-es/logic/craftTransaction.d.ts +5 -0
  356. package/lib-es/logic/craftTransaction.d.ts.map +1 -0
  357. package/lib-es/logic/craftTransaction.js +38 -0
  358. package/lib-es/logic/craftTransaction.js.map +1 -0
  359. package/lib-es/logic/createTransaction.d.ts.map +1 -0
  360. package/lib-es/{bridge → logic}/createTransaction.js +1 -1
  361. package/lib-es/logic/createTransaction.js.map +1 -0
  362. package/lib-es/logic/getBalance.d.ts +5 -0
  363. package/lib-es/logic/getBalance.d.ts.map +1 -0
  364. package/lib-es/logic/getBalance.js +8 -0
  365. package/lib-es/logic/getBalance.js.map +1 -0
  366. package/lib-es/logic/getCoinAndAmounts.d.ts +13 -0
  367. package/lib-es/logic/getCoinAndAmounts.d.ts.map +1 -0
  368. package/lib-es/logic/getCoinAndAmounts.js +101 -0
  369. package/lib-es/logic/getCoinAndAmounts.js.map +1 -0
  370. package/lib-es/logic/getFunctionAddress.d.ts +3 -0
  371. package/lib-es/logic/getFunctionAddress.d.ts.map +1 -0
  372. package/lib-es/logic/getFunctionAddress.js +8 -0
  373. package/lib-es/logic/getFunctionAddress.js.map +1 -0
  374. package/lib-es/logic/getResourceAddress.d.ts +4 -0
  375. package/lib-es/logic/getResourceAddress.d.ts.map +1 -0
  376. package/lib-es/logic/getResourceAddress.js +13 -0
  377. package/lib-es/logic/getResourceAddress.js.map +1 -0
  378. package/lib-es/logic/isTestnet.d.ts +2 -0
  379. package/lib-es/logic/isTestnet.d.ts.map +1 -0
  380. package/lib-es/logic/isTestnet.js +5 -0
  381. package/lib-es/logic/isTestnet.js.map +1 -0
  382. package/lib-es/logic/isWriteSetChangeWriteResource.d.ts +3 -0
  383. package/lib-es/logic/isWriteSetChangeWriteResource.d.ts.map +1 -0
  384. package/lib-es/logic/isWriteSetChangeWriteResource.js +4 -0
  385. package/lib-es/logic/isWriteSetChangeWriteResource.js.map +1 -0
  386. package/lib-es/logic/normalizeAddress.d.ts +2 -0
  387. package/lib-es/logic/normalizeAddress.d.ts.map +1 -0
  388. package/lib-es/logic/normalizeAddress.js +8 -0
  389. package/lib-es/logic/normalizeAddress.js.map +1 -0
  390. package/lib-es/logic/normalizeTransactionOptions.d.ts +3 -0
  391. package/lib-es/logic/normalizeTransactionOptions.d.ts.map +1 -0
  392. package/lib-es/logic/normalizeTransactionOptions.js +17 -0
  393. package/lib-es/logic/normalizeTransactionOptions.js.map +1 -0
  394. package/lib-es/logic/processRecipients.d.ts +6 -0
  395. package/lib-es/logic/processRecipients.d.ts.map +1 -0
  396. package/lib-es/logic/processRecipients.js +54 -0
  397. package/lib-es/logic/processRecipients.js.map +1 -0
  398. package/lib-es/logic/transactionsToOperations.d.ts +7 -0
  399. package/lib-es/logic/transactionsToOperations.d.ts.map +1 -0
  400. package/lib-es/logic/transactionsToOperations.js +81 -0
  401. package/lib-es/logic/transactionsToOperations.js.map +1 -0
  402. package/lib-es/network/client.d.ts +38 -0
  403. package/lib-es/network/client.d.ts.map +1 -0
  404. package/lib-es/network/client.js +276 -0
  405. package/lib-es/network/client.js.map +1 -0
  406. package/lib-es/network/graphql/queries.d.ts.map +1 -0
  407. package/lib-es/{api → network}/graphql/queries.js +6 -6
  408. package/lib-es/network/graphql/queries.js.map +1 -0
  409. package/lib-es/{api → network}/graphql/types.d.ts +9 -9
  410. package/lib-es/network/graphql/types.d.ts.map +1 -0
  411. package/lib-es/{api → network}/graphql/types.js.map +1 -1
  412. package/lib-es/network/index.d.ts +2 -1
  413. package/lib-es/network/index.d.ts.map +1 -1
  414. package/lib-es/network/index.js +6 -8
  415. package/lib-es/network/index.js.map +1 -1
  416. package/lib-es/test/bot-specs.d.ts.map +1 -1
  417. package/lib-es/test/bot-specs.js +41 -2
  418. package/lib-es/test/bot-specs.js.map +1 -1
  419. package/lib-es/test/bridgeDatasetTest.d.ts.map +1 -1
  420. package/lib-es/test/bridgeDatasetTest.js +44 -59
  421. package/lib-es/test/bridgeDatasetTest.js.map +1 -1
  422. package/lib-es/test/speculos-deviceActions.d.ts +1 -0
  423. package/lib-es/test/speculos-deviceActions.d.ts.map +1 -1
  424. package/lib-es/test/speculos-deviceActions.js +36 -4
  425. package/lib-es/test/speculos-deviceActions.js.map +1 -1
  426. package/lib-es/types/assets.d.ts +16 -0
  427. package/lib-es/types/assets.d.ts.map +1 -0
  428. package/lib-es/types/assets.js +2 -0
  429. package/lib-es/types/assets.js.map +1 -0
  430. package/lib-es/types/index.d.ts +22 -7
  431. package/lib-es/types/index.d.ts.map +1 -1
  432. package/package.json +16 -13
  433. package/src/__tests__/api/craftTransaction.unit.test.ts +243 -0
  434. package/src/__tests__/api/getBalance.unit.test.ts +44 -0
  435. package/src/__tests__/api/index.integ.test.ts +401 -0
  436. package/src/__tests__/api/index.test.ts +60 -477
  437. package/src/__tests__/bridge/broadcast.test.ts +2 -2
  438. package/src/__tests__/bridge/getFeesForTransaction.test.ts +146 -11
  439. package/src/__tests__/bridge/getTransactionStatus.test.ts +217 -38
  440. package/src/__tests__/bridge/logic.test.ts +728 -569
  441. package/src/__tests__/bridge/prepareTransaction.test.ts +2 -2
  442. package/src/__tests__/bridge/signOperation.test.ts +153 -15
  443. package/src/__tests__/bridge/synchronisation.test.ts +1265 -71
  444. package/src/__tests__/index.test.ts +1 -1
  445. package/src/__tests__/logic/buildTransaction.test.ts +150 -0
  446. package/src/__tests__/logic/calculateAmount.unit.test.ts +51 -0
  447. package/src/__tests__/logic/combine.unit.test.ts +65 -0
  448. package/src/__tests__/logic/compareAddress.unit.test.ts +27 -0
  449. package/src/__tests__/{bridge → logic}/createTransaction.test.ts +2 -2
  450. package/src/__tests__/logic/getCoinAndAmounts.unit.test.ts +195 -0
  451. package/src/__tests__/logic/getFunctionAddress.unit.test.ts +33 -0
  452. package/src/__tests__/logic/getResourceAddress.unit.test.ts +241 -0
  453. package/src/__tests__/logic/isTestnet.unit.test.ts +11 -0
  454. package/src/__tests__/logic/normalizeAddress.unit.test.ts +15 -0
  455. package/src/__tests__/logic/processRecipients.unit.test.ts +95 -0
  456. package/src/__tests__/network/client.test.ts +1257 -0
  457. package/src/api/index.ts +29 -224
  458. package/src/bridge/bridge.fixture.ts +91 -12
  459. package/src/bridge/broadcast.ts +7 -7
  460. package/src/bridge/estimateMaxSpendable.ts +4 -3
  461. package/src/bridge/getFeesForTransaction.ts +17 -11
  462. package/src/bridge/getTransactionStatus.ts +35 -13
  463. package/src/bridge/index.ts +2 -2
  464. package/src/bridge/logic.ts +58 -194
  465. package/src/bridge/prepareTransaction.ts +7 -4
  466. package/src/bridge/signOperation.ts +21 -5
  467. package/src/bridge/synchronisation.ts +171 -4
  468. package/src/config.ts +19 -0
  469. package/src/constants.ts +22 -2
  470. package/src/logic/buildTransaction.ts +70 -0
  471. package/src/logic/calculateAmount.ts +15 -0
  472. package/src/logic/combine.ts +51 -0
  473. package/src/logic/craftTransaction.ts +65 -0
  474. package/src/{bridge → logic}/createTransaction.ts +1 -1
  475. package/src/logic/getBalance.ts +15 -0
  476. package/src/logic/getCoinAndAmounts.ts +141 -0
  477. package/src/logic/getFunctionAddress.ts +9 -0
  478. package/src/logic/getResourceAddress.ts +24 -0
  479. package/src/logic/isTestnet.ts +5 -0
  480. package/src/logic/isWriteSetChangeWriteResource.ts +7 -0
  481. package/src/logic/normalizeAddress.ts +8 -0
  482. package/src/logic/normalizeTransactionOptions.ts +18 -0
  483. package/src/logic/processRecipients.ts +88 -0
  484. package/src/logic/transactionsToOperations.ts +106 -0
  485. package/src/network/client.ts +374 -0
  486. package/src/{api → network}/graphql/queries.ts +6 -6
  487. package/src/{api → network}/graphql/types.ts +9 -9
  488. package/src/network/index.ts +6 -14
  489. package/src/test/bot-specs.ts +63 -3
  490. package/src/test/bridgeDatasetTest.ts +46 -59
  491. package/src/test/speculos-deviceActions.ts +40 -4
  492. package/src/types/assets.ts +20 -0
  493. package/src/types/index.ts +20 -1
  494. package/lib/__tests__/bridge/buildTransaction.test.d.ts.map +0 -1
  495. package/lib/__tests__/bridge/buildTransaction.test.js +0 -53
  496. package/lib/__tests__/bridge/buildTransaction.test.js.map +0 -1
  497. package/lib/__tests__/bridge/createTransaction.test.d.ts.map +0 -1
  498. package/lib/__tests__/bridge/createTransaction.test.js.map +0 -1
  499. package/lib/api/graphql/queries.d.ts.map +0 -1
  500. package/lib/api/graphql/queries.js.map +0 -1
  501. package/lib/api/graphql/types.d.ts.map +0 -1
  502. package/lib/bridge/buildTransaction.d.ts +0 -7
  503. package/lib/bridge/buildTransaction.d.ts.map +0 -1
  504. package/lib/bridge/buildTransaction.js +0 -19
  505. package/lib/bridge/buildTransaction.js.map +0 -1
  506. package/lib/bridge/createTransaction.d.ts.map +0 -1
  507. package/lib/bridge/createTransaction.js.map +0 -1
  508. package/lib-es/__tests__/bridge/buildTransaction.test.d.ts.map +0 -1
  509. package/lib-es/__tests__/bridge/buildTransaction.test.js +0 -48
  510. package/lib-es/__tests__/bridge/buildTransaction.test.js.map +0 -1
  511. package/lib-es/__tests__/bridge/createTransaction.test.d.ts.map +0 -1
  512. package/lib-es/__tests__/bridge/createTransaction.test.js.map +0 -1
  513. package/lib-es/api/graphql/queries.d.ts.map +0 -1
  514. package/lib-es/api/graphql/queries.js.map +0 -1
  515. package/lib-es/api/graphql/types.d.ts.map +0 -1
  516. package/lib-es/bridge/buildTransaction.d.ts +0 -7
  517. package/lib-es/bridge/buildTransaction.d.ts.map +0 -1
  518. package/lib-es/bridge/buildTransaction.js +0 -17
  519. package/lib-es/bridge/buildTransaction.js.map +0 -1
  520. package/lib-es/bridge/createTransaction.d.ts.map +0 -1
  521. package/lib-es/bridge/createTransaction.js.map +0 -1
  522. package/src/__tests__/bridge/buildTransaction.test.ts +0 -61
  523. package/src/bridge/buildTransaction.ts +0 -29
  524. /package/lib/__tests__/{bridge → logic}/buildTransaction.test.d.ts +0 -0
  525. /package/lib/__tests__/{bridge → logic}/createTransaction.test.d.ts +0 -0
  526. /package/lib/{bridge → logic}/createTransaction.d.ts +0 -0
  527. /package/lib/{api → network}/graphql/queries.d.ts +0 -0
  528. /package/lib/{api → network}/graphql/types.js +0 -0
  529. /package/lib-es/__tests__/{bridge → logic}/buildTransaction.test.d.ts +0 -0
  530. /package/lib-es/__tests__/{bridge → logic}/createTransaction.test.d.ts +0 -0
  531. /package/lib-es/{bridge → logic}/createTransaction.d.ts +0 -0
  532. /package/lib-es/{api → network}/graphql/queries.d.ts +0 -0
  533. /package/lib-es/{api → network}/graphql/types.js +0 -0
package/src/api/index.ts CHANGED
@@ -1,225 +1,30 @@
1
- import { ApolloClient, InMemoryCache } from "@apollo/client";
2
-
3
- import {
4
- AccountData,
5
- Aptos,
6
- AptosApiType,
7
- AptosConfig,
8
- Ed25519PublicKey,
9
- GasEstimation,
10
- InputEntryFunctionData,
11
- InputGenerateTransactionOptions,
12
- MimeType,
13
- post,
14
- RawTransaction,
15
- SimpleTransaction,
16
- TransactionResponse,
17
- UserTransactionResponse,
18
- PostRequestOptions,
19
- Block,
20
- } from "@aptos-labs/ts-sdk";
21
- import { getEnv } from "@ledgerhq/live-env";
22
- import network from "@ledgerhq/live-network";
23
- import BigNumber from "bignumber.js";
24
- import isUndefined from "lodash/isUndefined";
25
- import { APTOS_ASSET_ID } from "../constants";
26
- import { isTestnet } from "../bridge/logic";
27
- import type { AptosTransaction, TransactionOptions } from "../types";
28
- import { GetAccountTransactionsData, GetAccountTransactionsDataGt } from "./graphql/queries";
29
- import {
30
- GetAccountTransactionsDataQuery,
31
- GetAccountTransactionsDataGtQueryVariables,
32
- } from "./graphql/types";
33
-
34
- const getApiEndpoint = (currencyId: string) =>
35
- isTestnet(currencyId) ? getEnv("APTOS_TESTNET_API_ENDPOINT") : getEnv("APTOS_API_ENDPOINT");
36
- const getIndexerEndpoint = (currencyId: string) =>
37
- isTestnet(currencyId)
38
- ? getEnv("APTOS_TESTNET_INDEXER_ENDPOINT")
39
- : getEnv("APTOS_INDEXER_ENDPOINT");
40
-
41
- export class AptosAPI {
42
- private apiUrl: string;
43
- private indexerUrl: string;
44
- private aptosConfig: AptosConfig;
45
- private aptosClient: Aptos;
46
- private apolloClient: ApolloClient<object>;
47
-
48
- constructor(currencyId: string) {
49
- this.apiUrl = getApiEndpoint(currencyId);
50
- this.indexerUrl = getIndexerEndpoint(currencyId);
51
- this.aptosConfig = new AptosConfig({
52
- fullnode: this.apiUrl,
53
- indexer: this.indexerUrl,
54
- });
55
- this.aptosClient = new Aptos(this.aptosConfig);
56
- this.apolloClient = new ApolloClient({
57
- uri: this.indexerUrl,
58
- cache: new InMemoryCache(),
59
- headers: {
60
- "x-client": "ledger-live",
61
- },
62
- });
63
- }
64
-
65
- async getAccount(address: string): Promise<AccountData> {
66
- return this.aptosClient.getAccountInfo({ accountAddress: address });
67
- }
68
-
69
- async getAccountInfo(address: string, startAt: string) {
70
- const [balance, transactions, blockHeight] = await Promise.all([
71
- this.getBalance(address),
72
- this.fetchTransactions(address, startAt),
73
- this.getHeight(),
74
- ]);
75
-
76
- return {
77
- balance,
78
- transactions,
79
- blockHeight,
80
- };
81
- }
82
-
83
- async estimateGasPrice(): Promise<GasEstimation> {
84
- return this.aptosClient.getGasPriceEstimation();
85
- }
86
-
87
- async generateTransaction(
88
- address: string,
89
- payload: InputEntryFunctionData,
90
- options: TransactionOptions,
91
- ): Promise<RawTransaction> {
92
- const opts: Partial<InputGenerateTransactionOptions> = {};
93
- if (!isUndefined(options.maxGasAmount)) {
94
- opts.maxGasAmount = Number(options.maxGasAmount);
95
- }
96
-
97
- if (!isUndefined(options.gasUnitPrice)) {
98
- opts.gasUnitPrice = Number(options.gasUnitPrice);
99
- }
100
-
101
- try {
102
- const { ledger_timestamp } = await this.aptosClient.getLedgerInfo();
103
- opts.expireTimestamp = Number(Math.ceil(+ledger_timestamp / 1_000_000 + 2 * 60)); // in milliseconds
104
- } catch {
105
- // skip
106
- }
107
-
108
- return this.aptosClient.transaction.build
109
- .simple({
110
- sender: address,
111
- data: payload,
112
- options: opts,
113
- })
114
- .then(t => t.rawTransaction)
115
- .catch(error => {
116
- throw error;
117
- });
118
- }
119
-
120
- async simulateTransaction(
121
- address: Ed25519PublicKey,
122
- tx: RawTransaction,
123
- options = {
124
- estimateGasUnitPrice: true,
125
- estimateMaxGasAmount: true,
126
- estimatePrioritizedGasUnitPrice: false,
127
- },
128
- ): Promise<UserTransactionResponse[]> {
129
- return this.aptosClient.transaction.simulate.simple({
130
- signerPublicKey: address,
131
- transaction: { rawTransaction: tx } as SimpleTransaction,
132
- options,
133
- });
134
- }
135
-
136
- async broadcast(signature: string): Promise<string> {
137
- const txBytes = Uint8Array.from(Buffer.from(signature, "hex"));
138
- const pendingTx = await post<PostRequestOptions, TransactionResponse>({
139
- contentType: MimeType.BCS_SIGNED_TRANSACTION,
140
- aptosConfig: this.aptosClient.config,
141
- body: txBytes,
142
- path: "transactions",
143
- type: AptosApiType.FULLNODE,
144
- originMethod: "",
145
- });
146
- return pendingTx.data.hash;
147
- }
148
-
149
- private async getBalance(address: string): Promise<BigNumber> {
150
- try {
151
- const [balanceStr] = await this.aptosClient.view<[string]>({
152
- payload: {
153
- function: "0x1::coin::balance",
154
- typeArguments: [APTOS_ASSET_ID],
155
- functionArguments: [address],
156
- },
157
- });
158
- const balance = parseInt(balanceStr, 10);
159
- return new BigNumber(balance);
160
- } catch (_) {
161
- return new BigNumber(0);
162
- }
163
- }
164
-
165
- private async fetchTransactions(address: string, gt?: string) {
166
- if (!address) {
167
- return [];
168
- }
169
-
170
- let query = GetAccountTransactionsData;
171
- if (gt) {
172
- query = GetAccountTransactionsDataGt;
173
- }
174
-
175
- const queryResponse = await this.apolloClient.query<
176
- GetAccountTransactionsDataQuery,
177
- GetAccountTransactionsDataGtQueryVariables
178
- >({
179
- query,
180
- variables: {
181
- address,
182
- limit: 1000,
183
- gt,
184
- },
185
- fetchPolicy: "network-only",
186
- });
187
-
188
- return Promise.all(
189
- queryResponse.data.address_version_from_move_resources.map(({ transaction_version }) => {
190
- return this.richItemByVersion(transaction_version);
191
- }),
192
- );
193
- }
194
-
195
- private async richItemByVersion(version: number): Promise<AptosTransaction | null> {
196
- try {
197
- const tx: TransactionResponse = await this.aptosClient.getTransactionByVersion({
198
- ledgerVersion: version,
199
- });
200
- const block = await this.getBlock(version);
201
- return {
202
- ...tx,
203
- block,
204
- } as AptosTransaction;
205
- } catch (error) {
206
- return null;
207
- }
208
- }
209
-
210
- private async getHeight(): Promise<number> {
211
- const { data } = await network<Block>({
212
- method: "GET",
213
- url: this.apiUrl,
214
- });
215
- return parseInt(data.block_height);
216
- }
217
-
218
- private async getBlock(version: number) {
219
- const block = await this.aptosClient.getBlockByVersion({ ledgerVersion: version });
220
- return {
221
- height: parseInt(block.block_height),
222
- hash: block.block_hash,
223
- };
224
- }
1
+ import type { Api } from "@ledgerhq/coin-framework/api/index";
2
+ import type { AptosConfig as AptosConfigApi } from "../config";
3
+ import type { Balance, Pagination, TransactionIntent } from "@ledgerhq/coin-framework/api/types";
4
+ import coinConfig from "../config";
5
+ import type { AptosAsset, AptosExtra, AptosFeeParameters, AptosSender } from "../types/assets";
6
+ import { AptosAPI } from "../network";
7
+ import { combine } from "../logic/combine";
8
+ import { craftTransaction } from "../logic/craftTransaction";
9
+ import { getBalance } from "../logic/getBalance";
10
+
11
+ export function createApi(
12
+ config: AptosConfigApi,
13
+ ): Api<AptosAsset, AptosExtra, AptosSender, AptosFeeParameters> {
14
+ coinConfig.setCoinConfig(() => ({ ...config, status: { type: "active" } }));
15
+
16
+ const client = new AptosAPI(config.aptosSettings);
17
+
18
+ return {
19
+ broadcast: (tx: string) => client.broadcast(tx),
20
+ combine: (tx, signature, pubkey): string => combine(tx, signature, pubkey),
21
+ craftTransaction: (transactionIntent, _customFees): Promise<string> =>
22
+ craftTransaction(client, transactionIntent),
23
+ estimateFees: (transactionIntent: TransactionIntent<AptosAsset, AptosExtra, AptosSender>) =>
24
+ client.estimateFees(transactionIntent),
25
+ getBalance: (address): Promise<Balance<AptosAsset>[]> => getBalance(client, address),
26
+ lastBlock: () => client.getLastBlock(),
27
+ listOperations: (address: string, pagination: Pagination) =>
28
+ client.listOperations(address, pagination),
29
+ };
225
30
  }
@@ -3,6 +3,7 @@ import { faker } from "@faker-js/faker";
3
3
  import type { AptosAccount, Transaction } from "../types/index";
4
4
  import { getCryptoCurrencyById } from "@ledgerhq/cryptoassets/currencies";
5
5
  import { emptyHistoryCache } from "@ledgerhq/coin-framework/account/index";
6
+ import { TokenCurrency } from "@ledgerhq/types-cryptoassets";
6
7
 
7
8
  const currency = getCryptoCurrencyById("aptos");
8
9
 
@@ -18,35 +19,113 @@ export function createFixtureAccount(account?: Partial<AptosAccount>): AptosAcco
18
19
  seedIdentifier: faker.string.uuid(),
19
20
  derivationMode: "",
20
21
  index: faker.number.int(),
21
- freshAddress: account?.freshAddress || freshAddress.address,
22
- freshAddressPath: account?.freshAddressPath || freshAddress.derivationPath,
22
+ freshAddress: freshAddress.address,
23
+ freshAddressPath: freshAddress.derivationPath,
23
24
  used: true,
24
- balance: account?.balance || new BigNumber(0),
25
- spendableBalance: account?.spendableBalance || new BigNumber(0),
25
+ balance: new BigNumber(0),
26
+ spendableBalance: new BigNumber(0),
26
27
  creationDate: faker.date.past(),
27
28
  blockHeight: faker.number.int({ min: 100_000, max: 200_000 }),
28
29
  currency,
29
- operationsCount: account?.operationsCount || 0,
30
- operations: account?.operations || [],
31
- pendingOperations: account?.pendingOperations || [],
30
+ operationsCount: 0,
31
+ operations: [],
32
+ pendingOperations: [],
32
33
  lastSyncDate: new Date(),
33
34
  balanceHistoryCache: emptyHistoryCache,
34
35
  swapHistory: [],
36
+ ...account,
37
+ };
38
+ }
39
+
40
+ export function createFixtureAccountWithSubAccount(
41
+ tokenType: string,
42
+ account?: Partial<AptosAccount>,
43
+ ): AptosAccount {
44
+ const freshAddress = {
45
+ address: "address",
46
+ derivationPath: "derivation_path",
47
+ };
48
+
49
+ const id = faker.string.uuid();
50
+
51
+ return {
52
+ type: "Account",
53
+ id,
54
+ seedIdentifier: faker.string.uuid(),
55
+ derivationMode: "",
56
+ index: faker.number.int(),
57
+ freshAddress: freshAddress.address,
58
+ freshAddressPath: freshAddress.derivationPath,
59
+ used: true,
60
+ balance: new BigNumber(0),
61
+ spendableBalance: new BigNumber(0),
62
+ creationDate: faker.date.past(),
63
+ blockHeight: faker.number.int({ min: 100_000, max: 200_000 }),
64
+ currency,
65
+ operationsCount: 0,
66
+ operations: [],
67
+ pendingOperations: [],
68
+ lastSyncDate: new Date(),
69
+ balanceHistoryCache: emptyHistoryCache,
70
+ swapHistory: [],
71
+ subAccounts: [
72
+ {
73
+ id: "1",
74
+ parentId: id,
75
+ type: "TokenAccount",
76
+ token: {
77
+ type: "TokenCurrency",
78
+ id: "aptToken",
79
+ contractAddress: "contract_address",
80
+ parentCurrency: currency,
81
+ tokenType,
82
+ } as TokenCurrency,
83
+ balance: BigNumber(1000),
84
+ spendableBalance: BigNumber(1000),
85
+ creationDate: new Date(),
86
+ operationsCount: 0,
87
+ operations: [],
88
+ pendingOperations: [],
89
+ balanceHistoryCache: emptyHistoryCache,
90
+ swapHistory: [],
91
+ },
92
+ ],
93
+ ...account,
35
94
  };
36
95
  }
37
96
 
38
97
  export function createFixtureTransaction(tx?: Partial<Transaction>): Transaction {
39
98
  const transaction: Transaction = {
40
- amount: tx?.amount || new BigNumber(0),
41
- recipient: tx?.recipient || "",
42
- useAllAmount: tx?.useAllAmount || false,
99
+ amount: new BigNumber(0),
100
+ recipient: "recipient",
101
+ useAllAmount: false,
102
+ family: "aptos",
103
+ mode: "send",
104
+ fees: null,
105
+ options: {
106
+ maxGasAmount: BigNumber(0).toString(),
107
+ gasUnitPrice: BigNumber(0).toString(),
108
+ },
109
+ ...tx,
110
+ };
111
+
112
+ return transaction;
113
+ }
114
+
115
+ export function createFixtureTransactionWithSubAccount(tx?: Partial<Transaction>): Transaction {
116
+ const transaction: Transaction = {
117
+ amount: new BigNumber(0),
118
+ recipient: "recipient",
119
+ useAllAmount: false,
43
120
  family: "aptos",
44
- mode: tx?.mode || "send",
45
- fees: tx?.fees || null,
121
+ mode: "send",
122
+ fees: null,
46
123
  options: {
47
124
  maxGasAmount: BigNumber(0).toString(),
48
125
  gasUnitPrice: BigNumber(0).toString(),
49
126
  },
127
+ subAccountId: "1",
128
+ ...tx,
50
129
  };
51
130
 
52
131
  return transaction;
@@ -1,16 +1,16 @@
1
1
  import type { Account, Operation, SignedOperation } from "@ledgerhq/types-live";
2
2
  import { patchOperationWithHash } from "@ledgerhq/coin-framework/operation";
3
- import { AptosAPI } from "../api";
3
+ import { AptosAPI } from "../network";
4
4
 
5
- const broadcast = async ({
6
- signedOperation,
7
- account,
8
- }: {
5
+ type broadcastFunc = {
9
6
  signedOperation: SignedOperation;
10
7
  account: Account;
11
- }): Promise<Operation> => {
8
+ };
9
+
10
+ const broadcast = async ({ signedOperation, account }: broadcastFunc): Promise<Operation> => {
12
11
  const { signature, operation } = signedOperation;
13
- const hash = await new AptosAPI(account.currency.id).broadcast(signature);
12
+ const client = new AptosAPI(account.currency.id);
13
+ const hash = await client.broadcast(signature);
14
14
  return patchOperationWithHash(operation, hash);
15
15
  };
16
16
 
@@ -1,10 +1,11 @@
1
1
  import type { Account, AccountLike } from "@ledgerhq/types-live";
2
2
  import { BigNumber } from "bignumber.js";
3
3
  import { getMainAccount } from "@ledgerhq/coin-framework/account/index";
4
- import { AptosAPI } from "../api";
4
+ import { AptosAPI } from "../network";
5
5
  import { getEstimatedGas } from "./getFeesForTransaction";
6
- import { DEFAULT_GAS, DEFAULT_GAS_PRICE, getMaxSendBalance } from "./logic";
6
+ import { getMaxSendBalance } from "./logic";
7
7
  import type { Transaction } from "../types";
8
+ import { DEFAULT_GAS, DEFAULT_GAS_PRICE } from "../constants";
8
9
 
9
10
  const estimateMaxSpendable = async ({
10
11
  account,
@@ -29,7 +30,7 @@ const estimateMaxSpendable = async ({
29
30
  gasUnitPrice = BigNumber(estimate.gasUnitPrice);
30
31
  }
31
32
 
32
- return getMaxSendBalance(mainAccount.spendableBalance, maxGasAmount, gasUnitPrice);
33
+ return getMaxSendBalance(maxGasAmount, gasUnitPrice, mainAccount, transaction);
33
34
  };
34
35
 
35
36
  export default estimateMaxSpendable;
@@ -3,10 +3,11 @@ import { log } from "@ledgerhq/logs";
3
3
  import type { Account } from "@ledgerhq/types-live";
4
4
  import BigNumber from "bignumber.js";
5
5
  import { makeLRUCache, seconds } from "@ledgerhq/live-network/cache";
6
- import { AptosAPI } from "../api";
7
- import buildTransaction from "./buildTransaction";
8
- import { DEFAULT_GAS, DEFAULT_GAS_PRICE, ESTIMATE_GAS_MUL } from "./logic";
6
+ import { AptosAPI } from "../network";
7
+ import { getTokenAccount } from "./logic";
8
+ import { DEFAULT_GAS, DEFAULT_GAS_PRICE, ESTIMATE_GAS_MUL } from "../constants";
9
9
  import type { Transaction, TransactionErrors } from "../types";
10
+ import buildTransaction from "../logic/buildTransaction";
10
11
 
11
12
  type IGetEstimatedGasReturnType = {
12
13
  fees: BigNumber;
@@ -49,16 +50,18 @@ export const getFee = async (
49
50
 
50
51
  const expectedGas = gasPrice.multipliedBy(gasLimit);
51
52
 
52
- const isUnderMaxSpendable = transaction.amount
53
- .plus(expectedGas)
54
- .isLessThan(account.spendableBalance);
55
-
56
- if (isUnderMaxSpendable && !completedTx.success) {
57
- // we want to skip INSUFFICIENT_BALANCE error because it will be processed by getTransactionStatus
58
- if (!completedTx.vm_status.includes("INSUFFICIENT_BALANCE")) {
53
+ if (!completedTx.success) {
54
+ if (completedTx.vm_status.includes("MAX_GAS_UNITS_BELOW_MIN_TRANSACTION_GAS_UNITS")) {
55
+ res.errors.maxGasAmount = "GasInsufficientBalance";
56
+ } else if (
57
+ !completedTx.vm_status.includes("INSUFFICIENT_BALANCE") &&
58
+ !completedTx.vm_status.includes("0x203ed") // 0x203ed -> PROLOGUE_ECANT_PAY_GAS_DEPOSIT equivalent to INSUFFICIENT_BALANCE_FOR_TRANSACTION_FEE
59
+ ) {
60
+ // INSUFFICIENT_BALANCE will be processed by getTransactionStatus
59
61
  throw Error(`Simulation failed with following error: ${completedTx.vm_status}`);
60
62
  }
61
63
  }
64
+
62
65
  res.fees = expectedGas;
63
66
  res.estimate.maxGasAmount = gasLimit.toString();
64
67
  res.estimate.gasUnitPrice = completedTx.gas_unit_price;
@@ -72,7 +75,10 @@ export const getFee = async (
72
75
 
73
76
  const CACHE = makeLRUCache(
74
77
  getFee,
75
- (account: Account, transaction: Transaction) => `${account.id}-${transaction.amount.toString()}}`,
78
+ (account: Account, transaction: Transaction) => {
79
+ const tokenAccount = getTokenAccount(account, transaction);
80
+ return `${tokenAccount ? tokenAccount.id : account.id}-${transaction.amount.toString()}}`;
81
+ },
76
82
  seconds(30),
77
83
  );
78
84
 
@@ -1,4 +1,3 @@
1
- import { BigNumber } from "bignumber.js";
2
1
  import {
3
2
  NotEnoughBalance,
4
3
  RecipientRequired,
@@ -6,40 +5,63 @@ import {
6
5
  FeeNotLoaded,
7
6
  InvalidAddressBecauseDestinationIsAlsoSource,
8
7
  AmountRequired,
8
+ NotEnoughBalanceFees,
9
9
  } from "@ledgerhq/errors";
10
10
  import type { Account } from "@ledgerhq/types-live";
11
+ import { BigNumber } from "bignumber.js";
11
12
  import type { Transaction, TransactionStatus } from "../types";
12
13
 
13
14
  import { AccountAddress } from "@aptos-labs/ts-sdk";
15
+ import { getTokenAccount } from "./logic";
14
16
 
15
17
  const getTransactionStatus = async (a: Account, t: Transaction): Promise<TransactionStatus> => {
16
18
  const errors: Record<string, Error> = {};
17
19
  const warnings = {};
18
20
 
21
+ if (!t.recipient) {
22
+ errors.recipient = new RecipientRequired();
23
+ }
24
+
25
+ if (!AccountAddress.isValid({ input: t.recipient }).valid && !errors.recipient) {
26
+ errors.recipient = new InvalidAddress("", { currencyName: a.currency.name });
27
+ }
28
+
29
+ if (t.recipient === a.freshAddress && !errors.recipient) {
30
+ errors.recipient = new InvalidAddressBecauseDestinationIsAlsoSource();
31
+ }
32
+
19
33
  if (!t.fees) {
20
34
  errors.fees = new FeeNotLoaded();
21
35
  }
22
36
 
23
37
  const estimatedFees = t.fees || BigNumber(0);
24
38
 
25
- if (t.amount.eq(0)) {
39
+ if (t.amount.lte(0)) {
26
40
  errors.amount = new AmountRequired();
27
41
  }
28
42
 
29
- const amount = t.amount;
43
+ const tokenAccount = getTokenAccount(a, t);
30
44
 
31
- const totalSpent = BigNumber(t.amount).plus(estimatedFees);
45
+ const amount = t.useAllAmount
46
+ ? tokenAccount
47
+ ? tokenAccount.spendableBalance
48
+ : a.spendableBalance.minus(estimatedFees).isLessThan(0)
49
+ ? BigNumber(0)
50
+ : a.spendableBalance.minus(estimatedFees)
51
+ : t.amount;
32
52
 
33
- if (totalSpent.gt(a.balance) && !errors.amount) {
34
- errors.amount = new NotEnoughBalance();
35
- }
53
+ const totalSpent = tokenAccount ? amount : amount.plus(estimatedFees);
36
54
 
37
- if (!t.recipient) {
38
- errors.recipient = new RecipientRequired();
39
- } else if (AccountAddress.isValid({ input: t.recipient }).valid === false && !errors.recipient) {
40
- errors.recipient = new InvalidAddress("", { currencyName: a.currency.name });
41
- } else if (t.recipient === a.freshAddress && !errors.recipient) {
42
- errors.recipient = new InvalidAddressBecauseDestinationIsAlsoSource();
55
+ if (tokenAccount && t.errors?.maxGasAmount == "GasInsufficientBalance" && !errors.amount) {
56
+ errors.amount = new NotEnoughBalanceFees();
57
+ }
58
+ if (
59
+ tokenAccount
60
+ ? tokenAccount.spendableBalance.isLessThan(totalSpent) ||
61
+ a.spendableBalance.isLessThan(estimatedFees)
62
+ : a.spendableBalance.isLessThan(totalSpent) && !errors.amount
63
+ ) {
64
+ errors.amount = new NotEnoughBalance();
43
65
  }
44
66
 
45
67
  return Promise.resolve({
@@ -6,17 +6,17 @@ import {
6
6
  updateTransaction,
7
7
  } from "@ledgerhq/coin-framework/bridge/jsHelpers";
8
8
  import getAddressWrapper from "@ledgerhq/coin-framework/bridge/getAddressWrapper";
9
- import { SignerContext } from "@ledgerhq/coin-framework/signer";
9
+ import type { SignerContext } from "@ledgerhq/coin-framework/signer";
10
10
  import type { Account, AccountBridge, CurrencyBridge } from "@ledgerhq/types-live";
11
11
  import resolver from "../signer";
12
12
  import type { Transaction, TransactionStatus, AptosSigner } from "../types";
13
13
  import getTransactionStatus from "./getTransactionStatus";
14
14
  import estimateMaxSpendable from "./estimateMaxSpendable";
15
15
  import prepareTransaction from "./prepareTransaction";
16
- import createTransaction from "./createTransaction";
17
16
  import { getAccountShape } from "./synchronisation";
18
17
  import buildSignOperation from "./signOperation";
19
18
  import broadcast from "./broadcast";
19
+ import createTransaction from "../logic/createTransaction";
20
20
 
21
21
  function buildCurrencyBridge(signerContext: SignerContext<AptosSigner>): CurrencyBridge {
22
22
  const getAddress = resolver(signerContext);