@ledgerhq/coin-framework 0.0.2-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 (471) hide show
  1. package/lib/account/accountId.d.ts +16 -0
  2. package/lib/account/accountId.d.ts.map +1 -0
  3. package/lib/account/accountId.js +85 -0
  4. package/lib/account/accountId.js.map +1 -0
  5. package/lib/account/accountName.d.ts +14 -0
  6. package/lib/account/accountName.d.ts.map +1 -0
  7. package/lib/account/accountName.js +17 -0
  8. package/lib/account/accountName.js.map +1 -0
  9. package/lib/account/addAccounts.d.ts +35 -0
  10. package/lib/account/addAccounts.d.ts.map +1 -0
  11. package/lib/account/addAccounts.js +209 -0
  12. package/lib/account/addAccounts.js.map +1 -0
  13. package/lib/account/balanceHistoryCache.d.ts +25 -0
  14. package/lib/account/balanceHistoryCache.d.ts.map +1 -0
  15. package/lib/account/balanceHistoryCache.js +115 -0
  16. package/lib/account/balanceHistoryCache.js.map +1 -0
  17. package/lib/account/groupOperations.d.ts +17 -0
  18. package/lib/account/groupOperations.d.ts.map +1 -0
  19. package/lib/account/groupOperations.js +127 -0
  20. package/lib/account/groupOperations.js.map +1 -0
  21. package/lib/account/helpers.d.ts +44 -0
  22. package/lib/account/helpers.d.ts.map +1 -0
  23. package/lib/account/helpers.js +333 -0
  24. package/lib/account/helpers.js.map +1 -0
  25. package/lib/account/helpers.test.d.ts +2 -0
  26. package/lib/account/helpers.test.d.ts.map +1 -0
  27. package/lib/account/helpers.test.js +366 -0
  28. package/lib/account/helpers.test.js.map +1 -0
  29. package/lib/account/index.d.ts +11 -0
  30. package/lib/account/index.d.ts.map +1 -0
  31. package/lib/account/index.js +27 -0
  32. package/lib/account/index.js.map +1 -0
  33. package/lib/account/ordering.d.ts +10 -0
  34. package/lib/account/ordering.d.ts.map +1 -0
  35. package/lib/account/ordering.js +110 -0
  36. package/lib/account/ordering.js.map +1 -0
  37. package/lib/account/pending.d.ts +33 -0
  38. package/lib/account/pending.d.ts.map +1 -0
  39. package/lib/account/pending.js +64 -0
  40. package/lib/account/pending.js.map +1 -0
  41. package/lib/account/serialization.d.ts +6 -0
  42. package/lib/account/serialization.d.ts.map +1 -0
  43. package/lib/account/serialization.js +118 -0
  44. package/lib/account/serialization.js.map +1 -0
  45. package/lib/account/support.d.ts +9 -0
  46. package/lib/account/support.d.ts.map +1 -0
  47. package/lib/account/support.js +72 -0
  48. package/lib/account/support.js.map +1 -0
  49. package/lib/account.test.d.ts +2 -0
  50. package/lib/account.test.d.ts.map +1 -0
  51. package/lib/account.test.js +257 -0
  52. package/lib/account.test.js.map +1 -0
  53. package/lib/bot/bot-test-context.d.ts +3 -0
  54. package/lib/bot/bot-test-context.d.ts.map +1 -0
  55. package/lib/bot/bot-test-context.js +26 -0
  56. package/lib/bot/bot-test-context.js.map +1 -0
  57. package/lib/bot/bot-test-context.test.d.ts +2 -0
  58. package/lib/bot/bot-test-context.test.d.ts.map +1 -0
  59. package/lib/bot/bot-test-context.test.js +41 -0
  60. package/lib/bot/bot-test-context.test.js.map +1 -0
  61. package/lib/bot/formatters.d.ts +2 -0
  62. package/lib/bot/formatters.d.ts.map +1 -0
  63. package/lib/bot/formatters.js +31 -0
  64. package/lib/bot/formatters.js.map +1 -0
  65. package/lib/bot/specs.d.ts +50 -0
  66. package/lib/bot/specs.d.ts.map +1 -0
  67. package/lib/bot/specs.js +204 -0
  68. package/lib/bot/specs.js.map +1 -0
  69. package/lib/bot/types.d.ts +178 -0
  70. package/lib/bot/types.d.ts.map +1 -0
  71. package/lib/bot/types.js +3 -0
  72. package/lib/bot/types.js.map +1 -0
  73. package/lib/bridge/getAddressWrapper.d.ts +6 -0
  74. package/lib/bridge/getAddressWrapper.d.ts.map +1 -0
  75. package/lib/bridge/getAddressWrapper.js +27 -0
  76. package/lib/bridge/getAddressWrapper.js.map +1 -0
  77. package/lib/bridge/jsHelpers.d.ts +63 -0
  78. package/lib/bridge/jsHelpers.d.ts.map +1 -0
  79. package/lib/bridge/jsHelpers.js +574 -0
  80. package/lib/bridge/jsHelpers.js.map +1 -0
  81. package/lib/cache.d.ts +10 -0
  82. package/lib/cache.d.ts.map +1 -0
  83. package/lib/cache.js +100 -0
  84. package/lib/cache.js.map +1 -0
  85. package/lib/cross.d.ts +42 -0
  86. package/lib/cross.d.ts.map +1 -0
  87. package/lib/cross.js +254 -0
  88. package/lib/cross.js.map +1 -0
  89. package/lib/cross.test.d.ts +2 -0
  90. package/lib/cross.test.d.ts.map +1 -0
  91. package/lib/cross.test.js +99 -0
  92. package/lib/cross.test.js.map +1 -0
  93. package/lib/currencies/BigNumberToLocaleString.d.ts +8 -0
  94. package/lib/currencies/BigNumberToLocaleString.d.ts.map +1 -0
  95. package/lib/currencies/BigNumberToLocaleString.js +65 -0
  96. package/lib/currencies/BigNumberToLocaleString.js.map +1 -0
  97. package/lib/currencies/BigNumberToLocaleString.test.d.ts +2 -0
  98. package/lib/currencies/BigNumberToLocaleString.test.d.ts.map +1 -0
  99. package/lib/currencies/BigNumberToLocaleString.test.js +108 -0
  100. package/lib/currencies/BigNumberToLocaleString.test.js.map +1 -0
  101. package/lib/currencies/CurrencyURIScheme.d.ts +13 -0
  102. package/lib/currencies/CurrencyURIScheme.d.ts.map +1 -0
  103. package/lib/currencies/CurrencyURIScheme.js +124 -0
  104. package/lib/currencies/CurrencyURIScheme.js.map +1 -0
  105. package/lib/currencies/chopCurrencyUnitDecimals.d.ts +3 -0
  106. package/lib/currencies/chopCurrencyUnitDecimals.d.ts.map +1 -0
  107. package/lib/currencies/chopCurrencyUnitDecimals.js +29 -0
  108. package/lib/currencies/chopCurrencyUnitDecimals.js.map +1 -0
  109. package/lib/currencies/formatCurrencyUnit.d.ts +33 -0
  110. package/lib/currencies/formatCurrencyUnit.d.ts.map +1 -0
  111. package/lib/currencies/formatCurrencyUnit.js +126 -0
  112. package/lib/currencies/formatCurrencyUnit.js.map +1 -0
  113. package/lib/currencies/formatShort.d.ts +8 -0
  114. package/lib/currencies/formatShort.d.ts.map +1 -0
  115. package/lib/currencies/formatShort.js +27 -0
  116. package/lib/currencies/formatShort.js.map +1 -0
  117. package/lib/currencies/index.d.ts +13 -0
  118. package/lib/currencies/index.d.ts.map +1 -0
  119. package/lib/currencies/index.js +65 -0
  120. package/lib/currencies/index.js.map +1 -0
  121. package/lib/currencies/localeUtility.d.ts +8 -0
  122. package/lib/currencies/localeUtility.d.ts.map +1 -0
  123. package/lib/currencies/localeUtility.js +49 -0
  124. package/lib/currencies/localeUtility.js.map +1 -0
  125. package/lib/currencies/parseCurrencyUnit.d.ts +4 -0
  126. package/lib/currencies/parseCurrencyUnit.d.ts.map +1 -0
  127. package/lib/currencies/parseCurrencyUnit.js +18 -0
  128. package/lib/currencies/parseCurrencyUnit.js.map +1 -0
  129. package/lib/currencies/sanitizeValueString.d.ts +6 -0
  130. package/lib/currencies/sanitizeValueString.d.ts.map +1 -0
  131. package/lib/currencies/sanitizeValueString.js +56 -0
  132. package/lib/currencies/sanitizeValueString.js.map +1 -0
  133. package/lib/currencies/support.d.ts +8 -0
  134. package/lib/currencies/support.d.ts.map +1 -0
  135. package/lib/currencies/support.js +101 -0
  136. package/lib/currencies/support.js.map +1 -0
  137. package/lib/currencies/valueFromUnit.d.ts +9 -0
  138. package/lib/currencies/valueFromUnit.d.ts.map +1 -0
  139. package/lib/currencies/valueFromUnit.js +14 -0
  140. package/lib/currencies/valueFromUnit.js.map +1 -0
  141. package/lib/derivation.d.ts +232 -0
  142. package/lib/derivation.d.ts.map +1 -0
  143. package/lib/derivation.js +501 -0
  144. package/lib/derivation.js.map +1 -0
  145. package/lib/env.d.ts +30 -0
  146. package/lib/env.d.ts.map +1 -0
  147. package/lib/env.js +783 -0
  148. package/lib/env.js.map +1 -0
  149. package/lib/errors.d.ts +7 -0
  150. package/lib/errors.d.ts.map +1 -0
  151. package/lib/errors.js +7 -0
  152. package/lib/errors.js.map +1 -0
  153. package/lib/errors.test.d.ts +2 -0
  154. package/lib/errors.test.d.ts.map +1 -0
  155. package/lib/errors.test.js +20 -0
  156. package/lib/errors.test.js.map +1 -0
  157. package/lib/mocks/account.d.ts +25 -0
  158. package/lib/mocks/account.d.ts.map +1 -0
  159. package/lib/mocks/account.js +368 -0
  160. package/lib/mocks/account.js.map +1 -0
  161. package/lib/mocks/fixtures/nfts.d.ts +27 -0
  162. package/lib/mocks/fixtures/nfts.d.ts.map +1 -0
  163. package/lib/mocks/fixtures/nfts.js +398 -0
  164. package/lib/mocks/fixtures/nfts.js.map +1 -0
  165. package/lib/mocks/fixtures/nfts.test.d.ts +2 -0
  166. package/lib/mocks/fixtures/nfts.test.d.ts.map +1 -0
  167. package/lib/mocks/fixtures/nfts.test.js +20 -0
  168. package/lib/mocks/fixtures/nfts.test.js.map +1 -0
  169. package/lib/mocks/helpers.d.ts +15 -0
  170. package/lib/mocks/helpers.d.ts.map +1 -0
  171. package/lib/mocks/helpers.js +32 -0
  172. package/lib/mocks/helpers.js.map +1 -0
  173. package/lib/network.d.ts +5 -0
  174. package/lib/network.d.ts.map +1 -0
  175. package/lib/network.js +125 -0
  176. package/lib/network.js.map +1 -0
  177. package/lib/nft/nftId.d.ts +8 -0
  178. package/lib/nft/nftId.d.ts.map +1 -0
  179. package/lib/nft/nftId.js +34 -0
  180. package/lib/nft/nftId.js.map +1 -0
  181. package/lib/operation.d.ts +24 -0
  182. package/lib/operation.d.ts.map +1 -0
  183. package/lib/operation.js +183 -0
  184. package/lib/operation.js.map +1 -0
  185. package/lib/promise.d.ts +21 -0
  186. package/lib/promise.d.ts.map +1 -0
  187. package/lib/promise.js +187 -0
  188. package/lib/promise.js.map +1 -0
  189. package/lib/promise.test.d.ts +2 -0
  190. package/lib/promise.test.d.ts.map +1 -0
  191. package/lib/promise.test.js +72 -0
  192. package/lib/promise.test.js.map +1 -0
  193. package/lib/rangeDates.d.ts +29 -0
  194. package/lib/rangeDates.d.ts.map +1 -0
  195. package/lib/rangeDates.js +94 -0
  196. package/lib/rangeDates.js.map +1 -0
  197. package/lib/rangeDates.test.d.ts +2 -0
  198. package/lib/rangeDates.test.d.ts.map +1 -0
  199. package/lib/rangeDates.test.js +51 -0
  200. package/lib/rangeDates.test.js.map +1 -0
  201. package/lib/test-helpers/staticTime.d.ts +2 -0
  202. package/lib/test-helpers/staticTime.d.ts.map +1 -0
  203. package/lib/test-helpers/staticTime.js +10 -0
  204. package/lib/test-helpers/staticTime.js.map +1 -0
  205. package/lib/transaction/common.d.ts +26 -0
  206. package/lib/transaction/common.d.ts.map +1 -0
  207. package/lib/transaction/common.js +123 -0
  208. package/lib/transaction/common.js.map +1 -0
  209. package/lib-es/account/accountId.d.ts +16 -0
  210. package/lib-es/account/accountId.d.ts.map +1 -0
  211. package/lib-es/account/accountId.js +74 -0
  212. package/lib-es/account/accountId.js.map +1 -0
  213. package/lib-es/account/accountName.d.ts +14 -0
  214. package/lib-es/account/accountName.d.ts.map +1 -0
  215. package/lib-es/account/accountName.js +12 -0
  216. package/lib-es/account/accountName.js.map +1 -0
  217. package/lib-es/account/addAccounts.d.ts +35 -0
  218. package/lib-es/account/addAccounts.d.ts.map +1 -0
  219. package/lib-es/account/addAccounts.js +200 -0
  220. package/lib-es/account/addAccounts.js.map +1 -0
  221. package/lib-es/account/balanceHistoryCache.d.ts +25 -0
  222. package/lib-es/account/balanceHistoryCache.d.ts.map +1 -0
  223. package/lib-es/account/balanceHistoryCache.js +109 -0
  224. package/lib-es/account/balanceHistoryCache.js.map +1 -0
  225. package/lib-es/account/groupOperations.d.ts +17 -0
  226. package/lib-es/account/groupOperations.d.ts.map +1 -0
  227. package/lib-es/account/groupOperations.js +122 -0
  228. package/lib-es/account/groupOperations.js.map +1 -0
  229. package/lib-es/account/helpers.d.ts +44 -0
  230. package/lib-es/account/helpers.d.ts.map +1 -0
  231. package/lib-es/account/helpers.js +303 -0
  232. package/lib-es/account/helpers.js.map +1 -0
  233. package/lib-es/account/helpers.test.d.ts +2 -0
  234. package/lib-es/account/helpers.test.d.ts.map +1 -0
  235. package/lib-es/account/helpers.test.js +361 -0
  236. package/lib-es/account/helpers.test.js.map +1 -0
  237. package/lib-es/account/index.d.ts +11 -0
  238. package/lib-es/account/index.d.ts.map +1 -0
  239. package/lib-es/account/index.js +11 -0
  240. package/lib-es/account/index.js.map +1 -0
  241. package/lib-es/account/ordering.d.ts +10 -0
  242. package/lib-es/account/ordering.d.ts.map +1 -0
  243. package/lib-es/account/ordering.js +103 -0
  244. package/lib-es/account/ordering.js.map +1 -0
  245. package/lib-es/account/pending.d.ts +33 -0
  246. package/lib-es/account/pending.d.ts.map +1 -0
  247. package/lib-es/account/pending.js +59 -0
  248. package/lib-es/account/pending.js.map +1 -0
  249. package/lib-es/account/serialization.d.ts +6 -0
  250. package/lib-es/account/serialization.d.ts.map +1 -0
  251. package/lib-es/account/serialization.js +112 -0
  252. package/lib-es/account/serialization.js.map +1 -0
  253. package/lib-es/account/support.d.ts +9 -0
  254. package/lib-es/account/support.d.ts.map +1 -0
  255. package/lib-es/account/support.js +64 -0
  256. package/lib-es/account/support.js.map +1 -0
  257. package/lib-es/account.test.d.ts +2 -0
  258. package/lib-es/account.test.d.ts.map +1 -0
  259. package/lib-es/account.test.js +252 -0
  260. package/lib-es/account.test.js.map +1 -0
  261. package/lib-es/bot/bot-test-context.d.ts +3 -0
  262. package/lib-es/bot/bot-test-context.d.ts.map +1 -0
  263. package/lib-es/bot/bot-test-context.js +21 -0
  264. package/lib-es/bot/bot-test-context.js.map +1 -0
  265. package/lib-es/bot/bot-test-context.test.d.ts +2 -0
  266. package/lib-es/bot/bot-test-context.test.d.ts.map +1 -0
  267. package/lib-es/bot/bot-test-context.test.js +39 -0
  268. package/lib-es/bot/bot-test-context.test.js.map +1 -0
  269. package/lib-es/bot/formatters.d.ts +2 -0
  270. package/lib-es/bot/formatters.d.ts.map +1 -0
  271. package/lib-es/bot/formatters.js +27 -0
  272. package/lib-es/bot/formatters.js.map +1 -0
  273. package/lib-es/bot/specs.d.ts +50 -0
  274. package/lib-es/bot/specs.d.ts.map +1 -0
  275. package/lib-es/bot/specs.js +193 -0
  276. package/lib-es/bot/specs.js.map +1 -0
  277. package/lib-es/bot/types.d.ts +178 -0
  278. package/lib-es/bot/types.d.ts.map +1 -0
  279. package/lib-es/bot/types.js +2 -0
  280. package/lib-es/bot/types.js.map +1 -0
  281. package/lib-es/bridge/getAddressWrapper.d.ts +6 -0
  282. package/lib-es/bridge/getAddressWrapper.d.ts.map +1 -0
  283. package/lib-es/bridge/getAddressWrapper.js +25 -0
  284. package/lib-es/bridge/getAddressWrapper.js.map +1 -0
  285. package/lib-es/bridge/jsHelpers.d.ts +63 -0
  286. package/lib-es/bridge/jsHelpers.d.ts.map +1 -0
  287. package/lib-es/bridge/jsHelpers.js +562 -0
  288. package/lib-es/bridge/jsHelpers.js.map +1 -0
  289. package/lib-es/cache.d.ts +10 -0
  290. package/lib-es/cache.d.ts.map +1 -0
  291. package/lib-es/cache.js +93 -0
  292. package/lib-es/cache.js.map +1 -0
  293. package/lib-es/cross.d.ts +42 -0
  294. package/lib-es/cross.d.ts.map +1 -0
  295. package/lib-es/cross.js +244 -0
  296. package/lib-es/cross.js.map +1 -0
  297. package/lib-es/cross.test.d.ts +2 -0
  298. package/lib-es/cross.test.d.ts.map +1 -0
  299. package/lib-es/cross.test.js +97 -0
  300. package/lib-es/cross.test.js.map +1 -0
  301. package/lib-es/currencies/BigNumberToLocaleString.d.ts +8 -0
  302. package/lib-es/currencies/BigNumberToLocaleString.d.ts.map +1 -0
  303. package/lib-es/currencies/BigNumberToLocaleString.js +61 -0
  304. package/lib-es/currencies/BigNumberToLocaleString.js.map +1 -0
  305. package/lib-es/currencies/BigNumberToLocaleString.test.d.ts +2 -0
  306. package/lib-es/currencies/BigNumberToLocaleString.test.d.ts.map +1 -0
  307. package/lib-es/currencies/BigNumberToLocaleString.test.js +106 -0
  308. package/lib-es/currencies/BigNumberToLocaleString.test.js.map +1 -0
  309. package/lib-es/currencies/CurrencyURIScheme.d.ts +13 -0
  310. package/lib-es/currencies/CurrencyURIScheme.d.ts.map +1 -0
  311. package/lib-es/currencies/CurrencyURIScheme.js +116 -0
  312. package/lib-es/currencies/CurrencyURIScheme.js.map +1 -0
  313. package/lib-es/currencies/chopCurrencyUnitDecimals.d.ts +3 -0
  314. package/lib-es/currencies/chopCurrencyUnitDecimals.d.ts.map +1 -0
  315. package/lib-es/currencies/chopCurrencyUnitDecimals.js +25 -0
  316. package/lib-es/currencies/chopCurrencyUnitDecimals.js.map +1 -0
  317. package/lib-es/currencies/formatCurrencyUnit.d.ts +33 -0
  318. package/lib-es/currencies/formatCurrencyUnit.d.ts.map +1 -0
  319. package/lib-es/currencies/formatCurrencyUnit.js +121 -0
  320. package/lib-es/currencies/formatCurrencyUnit.js.map +1 -0
  321. package/lib-es/currencies/formatShort.d.ts +8 -0
  322. package/lib-es/currencies/formatShort.d.ts.map +1 -0
  323. package/lib-es/currencies/formatShort.js +20 -0
  324. package/lib-es/currencies/formatShort.js.map +1 -0
  325. package/lib-es/currencies/index.d.ts +13 -0
  326. package/lib-es/currencies/index.d.ts.map +1 -0
  327. package/lib-es/currencies/index.js +16 -0
  328. package/lib-es/currencies/index.js.map +1 -0
  329. package/lib-es/currencies/localeUtility.d.ts +8 -0
  330. package/lib-es/currencies/localeUtility.d.ts.map +1 -0
  331. package/lib-es/currencies/localeUtility.js +43 -0
  332. package/lib-es/currencies/localeUtility.js.map +1 -0
  333. package/lib-es/currencies/parseCurrencyUnit.d.ts +4 -0
  334. package/lib-es/currencies/parseCurrencyUnit.d.ts.map +1 -0
  335. package/lib-es/currencies/parseCurrencyUnit.js +14 -0
  336. package/lib-es/currencies/parseCurrencyUnit.js.map +1 -0
  337. package/lib-es/currencies/sanitizeValueString.d.ts +6 -0
  338. package/lib-es/currencies/sanitizeValueString.d.ts.map +1 -0
  339. package/lib-es/currencies/sanitizeValueString.js +52 -0
  340. package/lib-es/currencies/sanitizeValueString.js.map +1 -0
  341. package/lib-es/currencies/support.d.ts +8 -0
  342. package/lib-es/currencies/support.d.ts.map +1 -0
  343. package/lib-es/currencies/support.js +92 -0
  344. package/lib-es/currencies/support.js.map +1 -0
  345. package/lib-es/currencies/valueFromUnit.d.ts +9 -0
  346. package/lib-es/currencies/valueFromUnit.d.ts.map +1 -0
  347. package/lib-es/currencies/valueFromUnit.js +10 -0
  348. package/lib-es/currencies/valueFromUnit.js.map +1 -0
  349. package/lib-es/derivation.d.ts +232 -0
  350. package/lib-es/derivation.d.ts.map +1 -0
  351. package/lib-es/derivation.js +473 -0
  352. package/lib-es/derivation.js.map +1 -0
  353. package/lib-es/env.d.ts +30 -0
  354. package/lib-es/env.d.ts.map +1 -0
  355. package/lib-es/env.js +768 -0
  356. package/lib-es/env.js.map +1 -0
  357. package/lib-es/errors.d.ts +7 -0
  358. package/lib-es/errors.d.ts.map +1 -0
  359. package/lib-es/errors.js +4 -0
  360. package/lib-es/errors.js.map +1 -0
  361. package/lib-es/errors.test.d.ts +2 -0
  362. package/lib-es/errors.test.d.ts.map +1 -0
  363. package/lib-es/errors.test.js +18 -0
  364. package/lib-es/errors.test.js.map +1 -0
  365. package/lib-es/mocks/account.d.ts +25 -0
  366. package/lib-es/mocks/account.d.ts.map +1 -0
  367. package/lib-es/mocks/account.js +358 -0
  368. package/lib-es/mocks/account.js.map +1 -0
  369. package/lib-es/mocks/fixtures/nfts.d.ts +27 -0
  370. package/lib-es/mocks/fixtures/nfts.d.ts.map +1 -0
  371. package/lib-es/mocks/fixtures/nfts.js +390 -0
  372. package/lib-es/mocks/fixtures/nfts.js.map +1 -0
  373. package/lib-es/mocks/fixtures/nfts.test.d.ts +2 -0
  374. package/lib-es/mocks/fixtures/nfts.test.d.ts.map +1 -0
  375. package/lib-es/mocks/fixtures/nfts.test.js +18 -0
  376. package/lib-es/mocks/fixtures/nfts.test.js.map +1 -0
  377. package/lib-es/mocks/helpers.d.ts +15 -0
  378. package/lib-es/mocks/helpers.d.ts.map +1 -0
  379. package/lib-es/mocks/helpers.js +26 -0
  380. package/lib-es/mocks/helpers.js.map +1 -0
  381. package/lib-es/network.d.ts +5 -0
  382. package/lib-es/network.d.ts.map +1 -0
  383. package/lib-es/network.js +118 -0
  384. package/lib-es/network.js.map +1 -0
  385. package/lib-es/nft/nftId.d.ts +8 -0
  386. package/lib-es/nft/nftId.d.ts.map +1 -0
  387. package/lib-es/nft/nftId.js +29 -0
  388. package/lib-es/nft/nftId.js.map +1 -0
  389. package/lib-es/operation.d.ts +24 -0
  390. package/lib-es/operation.d.ts.map +1 -0
  391. package/lib-es/operation.js +168 -0
  392. package/lib-es/operation.js.map +1 -0
  393. package/lib-es/promise.d.ts +21 -0
  394. package/lib-es/promise.d.ts.map +1 -0
  395. package/lib-es/promise.js +179 -0
  396. package/lib-es/promise.js.map +1 -0
  397. package/lib-es/promise.test.d.ts +2 -0
  398. package/lib-es/promise.test.d.ts.map +1 -0
  399. package/lib-es/promise.test.js +70 -0
  400. package/lib-es/promise.test.js.map +1 -0
  401. package/lib-es/rangeDates.d.ts +29 -0
  402. package/lib-es/rangeDates.d.ts.map +1 -0
  403. package/lib-es/rangeDates.js +84 -0
  404. package/lib-es/rangeDates.js.map +1 -0
  405. package/lib-es/rangeDates.test.d.ts +2 -0
  406. package/lib-es/rangeDates.test.d.ts.map +1 -0
  407. package/lib-es/rangeDates.test.js +49 -0
  408. package/lib-es/rangeDates.test.js.map +1 -0
  409. package/lib-es/test-helpers/staticTime.d.ts +2 -0
  410. package/lib-es/test-helpers/staticTime.d.ts.map +1 -0
  411. package/lib-es/test-helpers/staticTime.js +5 -0
  412. package/lib-es/test-helpers/staticTime.js.map +1 -0
  413. package/lib-es/transaction/common.d.ts +26 -0
  414. package/lib-es/transaction/common.d.ts.map +1 -0
  415. package/lib-es/transaction/common.js +115 -0
  416. package/lib-es/transaction/common.js.map +1 -0
  417. package/package.json +113 -0
  418. package/src/__snapshots__/account.test.ts.snap +2065 -0
  419. package/src/__snapshots__/cross.test.ts.snap +57 -0
  420. package/src/account/accountId.ts +93 -0
  421. package/src/account/accountName.ts +25 -0
  422. package/src/account/addAccounts.ts +236 -0
  423. package/src/account/balanceHistoryCache.ts +146 -0
  424. package/src/account/groupOperations.ts +164 -0
  425. package/src/account/helpers.test.ts +441 -0
  426. package/src/account/helpers.ts +380 -0
  427. package/src/account/index.ts +10 -0
  428. package/src/account/ordering.ts +109 -0
  429. package/src/account/pending.ts +66 -0
  430. package/src/account/serialization.ts +189 -0
  431. package/src/account/support.ts +96 -0
  432. package/src/account.test.ts +237 -0
  433. package/src/bot/bot-test-context.test.ts +37 -0
  434. package/src/bot/bot-test-context.ts +24 -0
  435. package/src/bot/formatters.ts +22 -0
  436. package/src/bot/specs.ts +275 -0
  437. package/src/bot/types.ts +224 -0
  438. package/src/bridge/getAddressWrapper.ts +40 -0
  439. package/src/bridge/jsHelpers.ts +645 -0
  440. package/src/cache.ts +65 -0
  441. package/src/cross.test.ts +112 -0
  442. package/src/cross.ts +366 -0
  443. package/src/currencies/BigNumberToLocaleString.test.ts +155 -0
  444. package/src/currencies/BigNumberToLocaleString.ts +80 -0
  445. package/src/currencies/CurrencyURIScheme.ts +114 -0
  446. package/src/currencies/chopCurrencyUnitDecimals.ts +34 -0
  447. package/src/currencies/formatCurrencyUnit.ts +167 -0
  448. package/src/currencies/formatShort.ts +24 -0
  449. package/src/currencies/index.ts +78 -0
  450. package/src/currencies/localeUtility.ts +50 -0
  451. package/src/currencies/parseCurrencyUnit.ts +16 -0
  452. package/src/currencies/sanitizeValueString.ts +58 -0
  453. package/src/currencies/support.ts +107 -0
  454. package/src/currencies/valueFromUnit.ts +10 -0
  455. package/src/derivation.ts +595 -0
  456. package/src/env.ts +790 -0
  457. package/src/errors.test.ts +21 -0
  458. package/src/errors.ts +9 -0
  459. package/src/mocks/account.ts +476 -0
  460. package/src/mocks/fixtures/nfts.test.ts +25 -0
  461. package/src/mocks/fixtures/nfts.ts +432 -0
  462. package/src/mocks/helpers.ts +38 -0
  463. package/src/network.ts +135 -0
  464. package/src/nft/nftId.ts +26 -0
  465. package/src/operation.ts +212 -0
  466. package/src/promise.test.ts +20 -0
  467. package/src/promise.ts +101 -0
  468. package/src/rangeDates.test.ts +66 -0
  469. package/src/rangeDates.ts +96 -0
  470. package/src/test-helpers/staticTime.ts +4 -0
  471. package/src/transaction/common.ts +157 -0
@@ -0,0 +1,432 @@
1
+ import BigNumber from "bignumber.js";
2
+ import type { CryptoCurrency } from "@ledgerhq/types-cryptoassets";
3
+ import type {
4
+ Account,
5
+ AccountLike,
6
+ NFTStandard,
7
+ Operation,
8
+ ProtoNFT,
9
+ } from "@ledgerhq/types-live";
10
+ import { cryptocurrenciesById } from "@ledgerhq/cryptoassets";
11
+ import Prando from "prando";
12
+ import { inferSubOperations } from "../../account";
13
+ import { genAddress, genHex } from "../helpers";
14
+ import { encodeNftId } from "../../nft/nftId";
15
+
16
+ const defaultEthCryptoFamily = cryptocurrenciesById["ethereum"];
17
+
18
+ export const NFTs = [
19
+ {
20
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0xb1540922Be7c7Ed011cb41cc0Cc4adDf089b3AaF+7833",
21
+ tokenId: "7833",
22
+ amount: "1",
23
+ collection: {
24
+ contract: "0xb1540922Be7c7Ed011cb41cc0Cc4adDf089b3AaF",
25
+ standard: "ERC721",
26
+ },
27
+ },
28
+ {
29
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0xb1540922Be7c7Ed011cb41cc0Cc4adDf089b3AaF+2372",
30
+ tokenId: "2372",
31
+ amount: "1",
32
+ collection: {
33
+ contract: "0xb1540922Be7c7Ed011cb41cc0Cc4adDf089b3AaF",
34
+ standard: "ERC721",
35
+ },
36
+ },
37
+ {
38
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0x9191DFd6Ec2Ec31A7aaE86D89B44f94a70096194+203",
39
+ tokenId: "203",
40
+ amount: "1",
41
+ collection: {
42
+ contract: "0x9191DFd6Ec2Ec31A7aaE86D89B44f94a70096194",
43
+ standard: "ERC721",
44
+ },
45
+ },
46
+ {
47
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0x65498bF901A0C47ba9507C8a778d2bdee4Db12b4+4628",
48
+ tokenId: "4628",
49
+ amount: "1",
50
+ collection: {
51
+ contract: "0x65498bF901A0C47ba9507C8a778d2bdee4Db12b4",
52
+ standard: "ERC721",
53
+ },
54
+ },
55
+ {
56
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0x85ff6EC2BD7446C90F24F6a5e5acdD82Bcd2D4BE+4628",
57
+ tokenId: "4628",
58
+ amount: "1",
59
+ collection: {
60
+ contract: "0x85ff6EC2BD7446C90F24F6a5e5acdD82Bcd2D4BE",
61
+ standard: "ERC721",
62
+ },
63
+ },
64
+ {
65
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0x495f947276749Ce646f68AC8c248420045cb7b5e+15219551248750507857885240633851073364192113972571174309573660185104102719489",
66
+ tokenId:
67
+ "15219551248750507857885240633851073364192113972571174309573660185104102719489",
68
+ amount: "1",
69
+ collection: {
70
+ contract: "0x495f947276749Ce646f68AC8c248420045cb7b5e",
71
+ standard: "ERC1155",
72
+ },
73
+ },
74
+ {
75
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0x7A56a078da312bbfB5916CE118786f39cf6DF74f+323",
76
+ tokenId: "323",
77
+ amount: "1",
78
+ collection: {
79
+ contract: "0x7A56a078da312bbfB5916CE118786f39cf6DF74f",
80
+ standard: "ERC721",
81
+ },
82
+ },
83
+ {
84
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0x7A56a078da312bbfB5916CE118786f39cf6DF74f+711",
85
+ tokenId: "711",
86
+ amount: "1",
87
+ collection: {
88
+ contract: "0x7A56a078da312bbfB5916CE118786f39cf6DF74f",
89
+ standard: "ERC721",
90
+ },
91
+ },
92
+ {
93
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0xCa98FdF936243Edc3bbD65dc1dCc386Ec7a7d540+1203",
94
+ tokenId: "1203",
95
+ amount: "1",
96
+ collection: {
97
+ contract: "0xCa98FdF936243Edc3bbD65dc1dCc386Ec7a7d540",
98
+ standard: "ERC721",
99
+ },
100
+ },
101
+ {
102
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0xCa98FdF936243Edc3bbD65dc1dCc386Ec7a7d540+203",
103
+ tokenId: "203",
104
+ amount: "1",
105
+ collection: {
106
+ contract: "0xCa98FdF936243Edc3bbD65dc1dCc386Ec7a7d540",
107
+ standard: "ERC721",
108
+ },
109
+ },
110
+ {
111
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0xA04C6BD65E4352B30DCc6B0f21CF58aDEcc52781+16",
112
+ tokenId: "16",
113
+ amount: "1",
114
+ collection: {
115
+ contract: "0xA04C6BD65E4352B30DCc6B0f21CF58aDEcc52781",
116
+ standard: "ERC721",
117
+ },
118
+ },
119
+ {
120
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0xA35f12D3b934E21b9212e82f3CADdE20a0820352+5502",
121
+ tokenId: "5502",
122
+ amount: "1",
123
+ collection: {
124
+ contract: "0xA35f12D3b934E21b9212e82f3CADdE20a0820352",
125
+ standard: "ERC721",
126
+ },
127
+ },
128
+ {
129
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0x8e6da68d4a928e673b3A24014169515B293Ed5A4+19896",
130
+ tokenId: "19896",
131
+ amount: "1",
132
+ collection: {
133
+ contract: "0x8e6da68d4a928e673b3A24014169515B293Ed5A4",
134
+ standard: "ERC721",
135
+ },
136
+ },
137
+ {
138
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0x27fd9575a484E374B8e62B6738b5FbF415C9Be4E+112",
139
+ tokenId: "112",
140
+ amount: "1",
141
+ collection: {
142
+ contract: "0x27fd9575a484E374B8e62B6738b5FbF415C9Be4E",
143
+ standard: "ERC721",
144
+ },
145
+ },
146
+ {
147
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0x8e6da68d4a928e673b3A24014169515B293Ed5A4+13885",
148
+ tokenId: "13885",
149
+ amount: "1",
150
+ collection: {
151
+ contract: "0x8e6da68d4a928e673b3A24014169515B293Ed5A4",
152
+ standard: "ERC721",
153
+ },
154
+ },
155
+ {
156
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0x1447Cd4d3CE6C7FdB0da8d20450d92b08F7c4A54+1208",
157
+ tokenId: "1208",
158
+ amount: "1",
159
+ collection: {
160
+ contract: "0x1447Cd4d3CE6C7FdB0da8d20450d92b08F7c4A54",
161
+ standard: "ERC721",
162
+ },
163
+ },
164
+ {
165
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0xb1778D7Aa4a384757800D1429DfCae58dCD6DB42+1",
166
+ tokenId: "1",
167
+ amount: "1",
168
+ collection: {
169
+ contract: "0xb1778D7Aa4a384757800D1429DfCae58dCD6DB42",
170
+ standard: "ERC1155",
171
+ },
172
+ },
173
+ {
174
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0xf61F24c2d93bF2dE187546B14425BF631F28d6dC+4628",
175
+ tokenId: "4628",
176
+ amount: "1",
177
+ collection: {
178
+ contract: "0xf61F24c2d93bF2dE187546B14425BF631F28d6dC",
179
+ standard: "ERC721",
180
+ },
181
+ },
182
+ {
183
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0x8e6da68d4a928e673b3A24014169515B293Ed5A4+11117",
184
+ tokenId: "11117",
185
+ amount: "1",
186
+ collection: {
187
+ contract: "0x8e6da68d4a928e673b3A24014169515B293Ed5A4",
188
+ standard: "ERC721",
189
+ },
190
+ },
191
+ {
192
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0x184c949436f6E4e8314dA3F4d78B2D38B0222823+3634",
193
+ tokenId: "3634",
194
+ amount: "1",
195
+ collection: {
196
+ contract: "0x184c949436f6E4e8314dA3F4d78B2D38B0222823",
197
+ standard: "ERC721",
198
+ },
199
+ },
200
+ {
201
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0x184c949436f6E4e8314dA3F4d78B2D38B0222823+1229",
202
+ tokenId: "1229",
203
+ amount: "1",
204
+ collection: {
205
+ contract: "0x184c949436f6E4e8314dA3F4d78B2D38B0222823",
206
+ standard: "ERC721",
207
+ },
208
+ },
209
+ {
210
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0x8e6da68d4a928e673b3A24014169515B293Ed5A4+2278",
211
+ tokenId: "2278",
212
+ amount: "1",
213
+ collection: {
214
+ contract: "0x8e6da68d4a928e673b3A24014169515B293Ed5A4",
215
+ standard: "ERC721",
216
+ },
217
+ },
218
+ {
219
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0x2963bA471e265e5F51cAfaFca78310FE87F8E6D1+6348",
220
+ tokenId: "6348",
221
+ amount: "1",
222
+ collection: {
223
+ contract: "0x2963bA471e265e5F51cAfaFca78310FE87F8E6D1",
224
+ standard: "ERC721",
225
+ },
226
+ },
227
+ {
228
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0xFBeef911Dc5821886e1dda71586d90eD28174B7d+76100",
229
+ tokenId: "76100",
230
+ amount: "1",
231
+ collection: {
232
+ contract: "0xFBeef911Dc5821886e1dda71586d90eD28174B7d",
233
+ standard: "ERC721",
234
+ },
235
+ },
236
+ {
237
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0xBEA73B677c2A8ec4d358a74ff5EC344F34a0d214+7281",
238
+ tokenId: "7281",
239
+ amount: "1",
240
+ collection: {
241
+ contract: "0xBEA73B677c2A8ec4d358a74ff5EC344F34a0d214",
242
+ standard: "ERC721",
243
+ },
244
+ },
245
+ {
246
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0xd929FB5B7357Ed59ba770af812eFC116f873C795+1",
247
+ tokenId: "1",
248
+ amount: "1",
249
+ collection: {
250
+ contract: "0xd929FB5B7357Ed59ba770af812eFC116f873C795",
251
+ standard: "ERC1155",
252
+ },
253
+ },
254
+ {
255
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0xd1169e5349d1cB9941F3DCbA135C8A4b9eACFDDE+171000106229",
256
+ tokenId: "171000106229",
257
+ amount: "1",
258
+ collection: {
259
+ contract: "0xd1169e5349d1cB9941F3DCbA135C8A4b9eACFDDE",
260
+ standard: "ERC721",
261
+ },
262
+ },
263
+ {
264
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0x6315d09bc75eE00B767142C05265Eeb180765093+559",
265
+ tokenId: "559",
266
+ amount: "1",
267
+ collection: {
268
+ contract: "0x6315d09bc75eE00B767142C05265Eeb180765093",
269
+ standard: "ERC721",
270
+ },
271
+ },
272
+ {
273
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0xDDB149AE8E6635Df01a530da1E46921Bd78Dc385+1",
274
+ tokenId: "1",
275
+ amount: "1",
276
+ collection: {
277
+ contract: "0xDDB149AE8E6635Df01a530da1E46921Bd78Dc385",
278
+ standard: "ERC1155",
279
+ },
280
+ },
281
+ {
282
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0xABB3738f04Dc2Ec20f4AE4462c3d069d02AE045B+9602000",
283
+ tokenId: "9602000",
284
+ amount: "1",
285
+ collection: {
286
+ contract: "0xABB3738f04Dc2Ec20f4AE4462c3d069d02AE045B",
287
+ standard: "ERC721",
288
+ },
289
+ },
290
+ {
291
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0xABB3738f04Dc2Ec20f4AE4462c3d069d02AE045B+9640021",
292
+ tokenId: "9640021",
293
+ amount: "1",
294
+ collection: {
295
+ contract: "0xABB3738f04Dc2Ec20f4AE4462c3d069d02AE045B",
296
+ standard: "ERC721",
297
+ },
298
+ },
299
+ {
300
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0xa7d8d9ef8D8Ce8992Df33D8b8CF4Aebabd5bD270+282001002",
301
+ tokenId: "282001002",
302
+ amount: "1",
303
+ collection: {
304
+ contract: "0xa7d8d9ef8D8Ce8992Df33D8b8CF4Aebabd5bD270",
305
+ standard: "ERC721",
306
+ },
307
+ },
308
+ ];
309
+
310
+ export const NFTs_POLYGON = [
311
+ {
312
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0x68a0B29526f342de944BBd6bF61D9c644B96b771+7",
313
+ tokenId: "7",
314
+ amount: "1",
315
+ collection: {
316
+ contract: "0x68a0B29526f342de944BBd6bF61D9c644B96b771",
317
+ standard: "ERC1155",
318
+ },
319
+ },
320
+
321
+ {
322
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0x68a0b29526f342de944bbd6bf61d9c644b96b771+4",
323
+ tokenId: "4",
324
+ amount: "1",
325
+ collection: {
326
+ contract: "0x68a0b29526f342de944bbd6bf61d9c644b96b771",
327
+ standard: "ERC1155",
328
+ },
329
+ },
330
+
331
+ {
332
+ id: "js:2:ethereum:0xB98d10d9f6d07bA283bFD21B2dFEc050f9Ae282A:+0x68a0b29526f342de944bbd6bf61d9c644b96b771+3",
333
+ tokenId: "3",
334
+ amount: "1",
335
+ collection: {
336
+ contract: "0x68a0b29526f342de944bbd6bf61d9c644b96b771",
337
+ standard: "ERC1155",
338
+ },
339
+ },
340
+ ];
341
+ export function createFixtureNFT(
342
+ accountId: string,
343
+ currency: CryptoCurrency = defaultEthCryptoFamily
344
+ ): ProtoNFT {
345
+ const nfts = currency.id === "ethereum" ? NFTs : NFTs_POLYGON;
346
+ const index = Math.floor(Math.random() * nfts.length);
347
+
348
+ const nft = nfts[index];
349
+ return {
350
+ id: encodeNftId(
351
+ accountId,
352
+ nft.collection.contract,
353
+ nft.tokenId,
354
+ currency.id
355
+ ),
356
+ tokenId: nft.tokenId,
357
+ amount: new BigNumber(0),
358
+ contract: nft.collection.contract,
359
+ standard: nft.collection.standard as NFTStandard,
360
+ currencyId: currency.id,
361
+ metadata: undefined,
362
+ };
363
+ }
364
+
365
+ /**
366
+ * @memberof mock/account
367
+ */
368
+ export function genNFTOperation(
369
+ superAccount: Account,
370
+ account: AccountLike,
371
+ ops: any,
372
+ rng: Prando,
373
+ contract: string,
374
+ standard: NFTStandard,
375
+ tokenId: string
376
+ ): Operation {
377
+ const ticker =
378
+ account.type === "TokenAccount"
379
+ ? account.token.ticker
380
+ : account.currency.ticker;
381
+ const lastOp = ops[ops.length - 1];
382
+ const date = new Date(
383
+ (lastOp ? lastOp.date : Date.now()) -
384
+ rng.nextInt(0, 100000000 * rng.next() * rng.next())
385
+ );
386
+ const address = genAddress(superAccount.currency, rng);
387
+ const type = rng.next() < 0.3 ? "NFT_OUT" : "NFT_IN";
388
+ const divider = 2;
389
+ const value = new BigNumber(
390
+ Math.floor(rng.nextInt(0, 100000 * rng.next() * rng.next()) / divider)
391
+ );
392
+
393
+ if (Number.isNaN(value)) {
394
+ throw new Error("invalid amount generated for " + ticker);
395
+ }
396
+
397
+ const hash = genHex(64, rng);
398
+ const op: Operation = {
399
+ id: String(`mock_op_${ops.length}_${account.id}`),
400
+ hash,
401
+ type,
402
+ value,
403
+ fee: new BigNumber(Math.round(value.toNumber() * 0.01)),
404
+ senders: [
405
+ type !== "NFT_IN" ? genAddress(superAccount.currency, rng) : address,
406
+ ],
407
+ recipients: [
408
+ type === "NFT_IN" ? genAddress(superAccount.currency, rng) : address,
409
+ ],
410
+ blockHash: genHex(64, rng),
411
+ blockHeight:
412
+ superAccount.blockHeight -
413
+ Math.floor((Date.now() - (date as any)) / 900000),
414
+ accountId: account.id,
415
+ date,
416
+ extra: {},
417
+ contract,
418
+ standard,
419
+ tokenId,
420
+ };
421
+
422
+ if (account.type === "Account") {
423
+ const { subAccounts } = account;
424
+
425
+ if (subAccounts) {
426
+ // TODO make sure tokenAccounts sometimes reuse an existing op hash from main account
427
+ op.subOperations = inferSubOperations(hash, subAccounts);
428
+ }
429
+ }
430
+
431
+ return op;
432
+ }
@@ -0,0 +1,38 @@
1
+ import Prando from "prando";
2
+ import type {
3
+ CryptoCurrency,
4
+ TokenCurrency,
5
+ } from "@ledgerhq/types-cryptoassets";
6
+
7
+ /**
8
+ * @memberof mock/account
9
+ */
10
+ export function genBitcoinAddressLike(rng: Prando): string {
11
+ const charset = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
12
+ return `1${rng.nextString(rng.nextInt(25, 34), charset)}`;
13
+ }
14
+
15
+ /**
16
+ * @memberof mock/account
17
+ */
18
+ export function genHex(length: number, rng: Prando): string {
19
+ return rng.nextString(length, "0123456789ABCDEF");
20
+ }
21
+
22
+ /**
23
+ * @memberof mock/account
24
+ */
25
+ export function genAddress(
26
+ currency: CryptoCurrency | TokenCurrency,
27
+ rng: Prando
28
+ ): string {
29
+ if (
30
+ currency.type === "CryptoCurrency"
31
+ ? currency.family === "ethereum" // all eth family
32
+ : currency.id.startsWith("ethereum") // erc20 case
33
+ ) {
34
+ return `0x${genHex(40, rng)}`;
35
+ }
36
+
37
+ return genBitcoinAddressLike(rng);
38
+ }
package/src/network.ts ADDED
@@ -0,0 +1,135 @@
1
+ import invariant from "invariant";
2
+ import axios from "axios";
3
+ import type { AxiosError, AxiosRequestConfig, Method } from "axios";
4
+ import { log } from "@ledgerhq/logs";
5
+ import { NetworkDown, LedgerAPI5xx, LedgerAPI4xx } from "@ledgerhq/errors";
6
+ import { retry } from "./promise";
7
+ import { getEnv, changes } from "./env";
8
+
9
+ export const errorInterceptor = (error: AxiosError<any>): AxiosError<any> => {
10
+ const config = error?.response?.config || null;
11
+ if (!config) throw error;
12
+ const { baseURL, url, method = "" } = config;
13
+
14
+ let errorToThrow;
15
+ if (error.response) {
16
+ // The request was made and the server responded with a status code
17
+ // that falls out of the range of 2xx
18
+ const { data, status } = error.response;
19
+ let msg;
20
+ try {
21
+ if (data && typeof data === "string") {
22
+ msg = extractErrorMessage(data);
23
+ } else if (data && typeof data === "object") {
24
+ msg = getErrorMessage(data);
25
+ }
26
+ } catch (e) {
27
+ log("warn", "can't parse server result " + String(e));
28
+ }
29
+
30
+ if (msg) {
31
+ errorToThrow = makeError(msg, status, url, method);
32
+ } else {
33
+ errorToThrow = makeError(`API HTTP ${status}`, status, url, method);
34
+ }
35
+ log(
36
+ "network-error",
37
+ `${status} ${method} ${baseURL || ""}${url}: ${errorToThrow.message}`,
38
+ getEnv("DEBUG_HTTP_RESPONSE") ? { data: data } : {}
39
+ );
40
+ throw errorToThrow;
41
+ } else if (error.request) {
42
+ log("network-down", `DOWN ${method} ${baseURL || ""}${url}`);
43
+ throw new NetworkDown();
44
+ }
45
+ throw error;
46
+ };
47
+
48
+ axios.interceptors.response.use(undefined, errorInterceptor);
49
+
50
+ const makeError = (
51
+ msg: string,
52
+ status: number,
53
+ url: string | undefined,
54
+ method: Method | ""
55
+ ) => {
56
+ const obj = {
57
+ status,
58
+ url,
59
+ method,
60
+ };
61
+ return (status || "").toString().startsWith("4")
62
+ ? new LedgerAPI4xx(msg, obj)
63
+ : new LedgerAPI5xx(msg, obj);
64
+ };
65
+
66
+ const getErrorMessage = (
67
+ data: Record<string, any>
68
+ ): string | null | undefined => {
69
+ if (!data) return "";
70
+ if (typeof data === "string") return data;
71
+ if (data.errors) {
72
+ return getErrorMessage(data.errors[0]);
73
+ }
74
+ return data.message || data.error_message || data.error || data.msg;
75
+ };
76
+
77
+ const extractErrorMessage = (raw: string): string | undefined => {
78
+ let data = JSON.parse(raw);
79
+ if (data && Array.isArray(data)) data = data[0];
80
+ let msg = getErrorMessage(data);
81
+
82
+ if (typeof msg === "string") {
83
+ const m = msg.match(/^JsDefined\((.*)\)$/);
84
+ const innerPart = m ? m[1] : msg;
85
+
86
+ const r = JSON.parse(innerPart);
87
+ let message = r.message;
88
+ if (typeof message === "object") {
89
+ message = message.message;
90
+ }
91
+ if (typeof message === "string") {
92
+ msg = message;
93
+ }
94
+
95
+ return msg ? String(msg) : undefined;
96
+ }
97
+
98
+ return;
99
+ };
100
+
101
+ const implementation = (arg: AxiosRequestConfig): Promise<any> => {
102
+ invariant(typeof arg === "object", "network takes an object as parameter");
103
+ let promise;
104
+
105
+ if (arg.method === "GET") {
106
+ if (!("timeout" in arg)) {
107
+ arg.timeout = getEnv("GET_CALLS_TIMEOUT");
108
+ }
109
+
110
+ promise = retry(() => axios(arg), {
111
+ maxRetry: getEnv("GET_CALLS_RETRY"),
112
+ });
113
+ } else {
114
+ promise = axios(arg);
115
+ }
116
+
117
+ return promise;
118
+ };
119
+
120
+ // attach the env "LEDGER_CLIENT_VERSION" to set the header globally for axios
121
+ function setAxiosLedgerClientVersionHeader(value: string) {
122
+ if (value) {
123
+ axios.defaults.headers.common["X-Ledger-Client-Version"] = value;
124
+ } else {
125
+ delete axios.defaults.headers.common["X-Ledger-Client-Version"];
126
+ }
127
+ }
128
+ setAxiosLedgerClientVersionHeader(getEnv("LEDGER_CLIENT_VERSION"));
129
+ changes.subscribe((e) => {
130
+ if (e.name === "LEDGER_CLIENT_VERSION") {
131
+ setAxiosLedgerClientVersionHeader(e.value);
132
+ }
133
+ });
134
+
135
+ export default implementation;
@@ -0,0 +1,26 @@
1
+ export const encodeNftId = (
2
+ accountId: string,
3
+ contract: string,
4
+ tokenId: string,
5
+ currencyId: string
6
+ ): string => {
7
+ return `${accountId}+${contract}+${tokenId}+${currencyId}`;
8
+ };
9
+
10
+ export const decodeNftId = (
11
+ id: string
12
+ ): {
13
+ accountId: string;
14
+ contract: string;
15
+ tokenId: string;
16
+ currencyId: string;
17
+ } => {
18
+ const [accountId, contract, tokenId, currencyId] = id.split("+");
19
+
20
+ return {
21
+ accountId,
22
+ contract,
23
+ tokenId,
24
+ currencyId,
25
+ };
26
+ };