@sentio/sdk 2.0.0-rc.2 → 2.0.0-rc.20

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 (595) hide show
  1. package/lib/aptos/api.d.ts +5 -0
  2. package/lib/aptos/api.js +21 -0
  3. package/lib/aptos/api.js.map +1 -0
  4. package/lib/aptos/aptos-plugin.d.ts +14 -0
  5. package/lib/aptos/aptos-plugin.js +146 -0
  6. package/lib/aptos/aptos-plugin.js.map +1 -0
  7. package/lib/aptos/aptos-processor.d.ts +72 -0
  8. package/lib/aptos/aptos-processor.js +201 -0
  9. package/lib/aptos/aptos-processor.js.map +1 -0
  10. package/lib/aptos/builtin/0x1.d.ts +1914 -0
  11. package/lib/aptos/builtin/0x1.js +2727 -0
  12. package/lib/aptos/builtin/0x1.js.map +1 -0
  13. package/lib/aptos/builtin/0x3.d.ts +491 -0
  14. package/lib/aptos/builtin/0x3.js +496 -0
  15. package/lib/aptos/builtin/0x3.js.map +1 -0
  16. package/lib/aptos/builtin/index.d.ts +2 -0
  17. package/lib/aptos/builtin/index.js +6 -0
  18. package/lib/aptos/builtin/index.js.map +1 -0
  19. package/lib/aptos/codegen/codegen.d.ts +21 -0
  20. package/lib/aptos/codegen/codegen.js +380 -0
  21. package/lib/aptos/codegen/codegen.js.map +1 -0
  22. package/lib/aptos/codegen/index.d.ts +1 -0
  23. package/lib/aptos/codegen/index.js +2 -0
  24. package/lib/aptos/codegen/index.js.map +1 -0
  25. package/lib/aptos/codegen/typegen.d.ts +18 -0
  26. package/lib/aptos/codegen/typegen.js +145 -0
  27. package/lib/aptos/codegen/typegen.js.map +1 -0
  28. package/lib/{core/generic-processor.test.d.ts → aptos/codegen/typegen.test.d.ts} +0 -0
  29. package/lib/aptos/codegen/typegen.test.js.map +1 -0
  30. package/lib/aptos/context.d.ts +21 -0
  31. package/lib/aptos/context.js +59 -0
  32. package/lib/aptos/context.js.map +1 -0
  33. package/lib/aptos/index.d.ts +9 -0
  34. package/lib/aptos/index.js +8 -0
  35. package/lib/aptos/index.js.map +1 -0
  36. package/lib/aptos/models.d.ts +27 -0
  37. package/lib/aptos/models.js +2 -0
  38. package/lib/aptos/models.js.map +1 -0
  39. package/lib/aptos/move-coder.d.ts +22 -0
  40. package/lib/aptos/move-coder.js +162 -0
  41. package/lib/aptos/move-coder.js.map +1 -0
  42. package/lib/aptos/move-types.d.ts +10 -0
  43. package/lib/aptos/move-types.js +2 -0
  44. package/lib/aptos/move-types.js.map +1 -0
  45. package/lib/aptos/network.d.ts +11 -0
  46. package/lib/aptos/network.js +27 -0
  47. package/lib/aptos/network.js.map +1 -0
  48. package/lib/aptos/run-codegen.d.ts +1 -0
  49. package/lib/aptos/run-codegen.js +12 -0
  50. package/lib/aptos/run-codegen.js.map +1 -0
  51. package/lib/aptos/tests/aptos.test.d.ts +1 -0
  52. package/lib/aptos/tests/aptos.test.js.map +1 -0
  53. package/lib/aptos/tests/souffl3.d.ts +1 -0
  54. package/lib/aptos/tests/souffl3.js +44 -0
  55. package/lib/aptos/tests/souffl3.js.map +1 -0
  56. package/lib/aptos/tests/types/index.d.ts +3 -0
  57. package/lib/aptos/tests/types/index.js +7 -0
  58. package/lib/aptos/tests/types/index.js.map +1 -0
  59. package/lib/aptos/tests/types/reserved.d.ts +345 -0
  60. package/lib/aptos/tests/types/reserved.js +301 -0
  61. package/lib/aptos/tests/types/reserved.js.map +1 -0
  62. package/lib/aptos/tests/types/soffl3.d.ts +812 -0
  63. package/lib/aptos/tests/types/soffl3.js +548 -0
  64. package/lib/aptos/tests/types/soffl3.js.map +1 -0
  65. package/lib/aptos/tests/types/souffle.d.ts +340 -0
  66. package/lib/aptos/tests/types/souffle.js +295 -0
  67. package/lib/aptos/tests/types/souffle.js.map +1 -0
  68. package/lib/aptos/types.d.ts +9 -0
  69. package/lib/aptos/types.js +130 -0
  70. package/lib/aptos/types.js.map +1 -0
  71. package/lib/aptos/types.test.d.ts +1 -0
  72. package/lib/aptos/types.test.js.map +1 -0
  73. package/lib/aptos/utils.d.ts +7 -0
  74. package/lib/aptos/utils.js +20 -0
  75. package/lib/aptos/utils.js.map +1 -0
  76. package/lib/core/base-context.d.ts +4 -4
  77. package/lib/core/base-context.js +7 -11
  78. package/lib/core/base-context.js.map +1 -1
  79. package/lib/core/big-decimal.d.ts +2 -0
  80. package/lib/core/big-decimal.js +11 -7
  81. package/lib/core/big-decimal.js.map +1 -1
  82. package/lib/{utils → core}/chain.d.ts +0 -0
  83. package/lib/{utils → core}/chain.js +7 -12
  84. package/lib/core/chain.js.map +1 -0
  85. package/lib/core/core-plugin.js +9 -13
  86. package/lib/core/core-plugin.js.map +1 -1
  87. package/lib/core/event-tracker.d.ts +2 -2
  88. package/lib/core/event-tracker.js +6 -13
  89. package/lib/core/event-tracker.js.map +1 -1
  90. package/lib/core/exporter.d.ts +2 -2
  91. package/lib/core/exporter.js +4 -9
  92. package/lib/core/exporter.js.map +1 -1
  93. package/lib/core/index.d.ts +10 -9
  94. package/lib/core/index.js +10 -32
  95. package/lib/core/index.js.map +1 -1
  96. package/lib/core/logger.d.ts +2 -2
  97. package/lib/core/logger.js +7 -11
  98. package/lib/core/logger.js.map +1 -1
  99. package/lib/core/metadata.d.ts +4 -0
  100. package/lib/core/metadata.js +21 -7
  101. package/lib/core/metadata.js.map +1 -1
  102. package/lib/core/meter.d.ts +3 -7
  103. package/lib/core/meter.js +22 -57
  104. package/lib/core/meter.js.map +1 -1
  105. package/lib/core/meter.test.js.map +1 -1
  106. package/lib/core/numberish.d.ts +1 -3
  107. package/lib/core/numberish.js +11 -26
  108. package/lib/core/numberish.js.map +1 -1
  109. package/lib/core/numberish.test.js.map +1 -1
  110. package/lib/core/sui-plugin.js +12 -16
  111. package/lib/core/sui-plugin.js.map +1 -1
  112. package/lib/core/sui-processor.d.ts +1 -1
  113. package/lib/core/sui-processor.js +6 -12
  114. package/lib/core/sui-processor.js.map +1 -1
  115. package/lib/eth/account-processor-state.d.ts +1 -1
  116. package/lib/eth/account-processor-state.js +2 -6
  117. package/lib/eth/account-processor-state.js.map +1 -1
  118. package/lib/eth/account-processor.d.ts +7 -7
  119. package/lib/eth/account-processor.js +23 -27
  120. package/lib/eth/account-processor.js.map +1 -1
  121. package/lib/eth/base-processor-template.d.ts +9 -8
  122. package/lib/eth/base-processor-template.js +8 -14
  123. package/lib/eth/base-processor-template.js.map +1 -1
  124. package/lib/eth/base-processor.d.ts +8 -7
  125. package/lib/eth/base-processor.js +21 -27
  126. package/lib/eth/base-processor.js.map +1 -1
  127. package/lib/{core → eth}/bind-options.d.ts +0 -0
  128. package/lib/eth/bind-options.js +40 -0
  129. package/lib/eth/bind-options.js.map +1 -0
  130. package/lib/eth/binds.d.ts +3 -3
  131. package/lib/eth/binds.js +11 -19
  132. package/lib/eth/binds.js.map +1 -1
  133. package/lib/eth/builtin/eacaggregatorproxy/index.d.ts +3 -0
  134. package/lib/eth/builtin/eacaggregatorproxy/index.js +7 -0
  135. package/lib/eth/builtin/eacaggregatorproxy/index.js.map +1 -0
  136. package/lib/{builtin → eth/builtin}/eacaggregatorproxy/test-utils.d.ts +1 -1
  137. package/lib/{builtin → eth/builtin}/eacaggregatorproxy/test-utils.js +9 -16
  138. package/lib/eth/builtin/eacaggregatorproxy/test-utils.js.map +1 -0
  139. package/lib/eth/builtin/erc1155/index.d.ts +3 -0
  140. package/lib/eth/builtin/erc1155/index.js +7 -0
  141. package/lib/eth/builtin/erc1155/index.js.map +1 -0
  142. package/lib/{builtin → eth/builtin}/erc1155/test-utils.d.ts +1 -1
  143. package/lib/{builtin → eth/builtin}/erc1155/test-utils.js +9 -16
  144. package/lib/eth/builtin/erc1155/test-utils.js.map +1 -0
  145. package/lib/eth/builtin/erc20/index.d.ts +3 -0
  146. package/lib/eth/builtin/erc20/index.js +7 -0
  147. package/lib/eth/builtin/erc20/index.js.map +1 -0
  148. package/lib/{builtin → eth/builtin}/erc20/test-utils.d.ts +1 -1
  149. package/lib/{builtin → eth/builtin}/erc20/test-utils.js +7 -13
  150. package/lib/eth/builtin/erc20/test-utils.js.map +1 -0
  151. package/lib/eth/builtin/erc20bytes/index.d.ts +3 -0
  152. package/lib/eth/builtin/erc20bytes/index.js +7 -0
  153. package/lib/eth/builtin/erc20bytes/index.js.map +1 -0
  154. package/lib/{builtin → eth/builtin}/erc20bytes/test-utils.d.ts +1 -1
  155. package/lib/{builtin → eth/builtin}/erc20bytes/test-utils.js +5 -10
  156. package/lib/eth/builtin/erc20bytes/test-utils.js.map +1 -0
  157. package/lib/eth/builtin/erc721/index.d.ts +3 -0
  158. package/lib/eth/builtin/erc721/index.js +7 -0
  159. package/lib/eth/builtin/erc721/index.js.map +1 -0
  160. package/lib/{builtin → eth/builtin}/erc721/test-utils.d.ts +1 -1
  161. package/lib/{builtin → eth/builtin}/erc721/test-utils.js +7 -13
  162. package/lib/eth/builtin/erc721/test-utils.js.map +1 -0
  163. package/lib/eth/builtin/index.d.ts +8 -0
  164. package/lib/eth/builtin/index.js +9 -0
  165. package/lib/eth/builtin/index.js.map +1 -0
  166. package/lib/{builtin → eth/builtin}/internal/EACAggregatorProxy.d.ts +6 -6
  167. package/lib/eth/builtin/internal/EACAggregatorProxy.js +2 -0
  168. package/lib/eth/builtin/internal/EACAggregatorProxy.js.map +1 -0
  169. package/lib/{builtin → eth/builtin}/internal/ERC1155.d.ts +6 -6
  170. package/lib/eth/builtin/internal/ERC1155.js +2 -0
  171. package/lib/eth/builtin/internal/ERC1155.js.map +1 -0
  172. package/lib/{builtin → eth/builtin}/internal/ERC20.d.ts +5 -5
  173. package/lib/eth/builtin/internal/ERC20.js +2 -0
  174. package/lib/eth/builtin/internal/ERC20.js.map +1 -0
  175. package/lib/{builtin → eth/builtin}/internal/ERC20Bytes.d.ts +4 -4
  176. package/lib/eth/builtin/internal/ERC20Bytes.js +2 -0
  177. package/lib/eth/builtin/internal/ERC20Bytes.js.map +1 -0
  178. package/lib/{builtin → eth/builtin}/internal/ERC721.d.ts +5 -5
  179. package/lib/eth/builtin/internal/ERC721.js +2 -0
  180. package/lib/eth/builtin/internal/ERC721.js.map +1 -0
  181. package/lib/{builtin → eth/builtin}/internal/WETH9.d.ts +6 -6
  182. package/lib/eth/builtin/internal/WETH9.js +2 -0
  183. package/lib/eth/builtin/internal/WETH9.js.map +1 -0
  184. package/lib/{builtin → eth/builtin}/internal/common.d.ts +4 -2
  185. package/lib/{builtin → eth/builtin}/internal/common.js +1 -2
  186. package/lib/eth/builtin/internal/common.js.map +1 -0
  187. package/lib/{builtin → eth/builtin}/internal/eacaggregatorproxy_processor.d.ts +3 -3
  188. package/lib/{builtin → eth/builtin}/internal/eacaggregatorproxy_processor.js +123 -221
  189. package/lib/eth/builtin/internal/eacaggregatorproxy_processor.js.map +1 -0
  190. package/lib/{builtin → eth/builtin}/internal/erc1155_processor.d.ts +3 -3
  191. package/lib/{builtin → eth/builtin}/internal/erc1155_processor.js +45 -78
  192. package/lib/eth/builtin/internal/erc1155_processor.js.map +1 -0
  193. package/lib/{builtin → eth/builtin}/internal/erc20_processor.d.ts +3 -3
  194. package/lib/{builtin → eth/builtin}/internal/erc20_processor.js +63 -111
  195. package/lib/eth/builtin/internal/erc20_processor.js.map +1 -0
  196. package/lib/{builtin → eth/builtin}/internal/erc20bytes_processor.d.ts +3 -3
  197. package/lib/{builtin → eth/builtin}/internal/erc20bytes_processor.js +51 -89
  198. package/lib/eth/builtin/internal/erc20bytes_processor.js.map +1 -0
  199. package/lib/{builtin → eth/builtin}/internal/erc721_processor.d.ts +3 -3
  200. package/lib/{builtin → eth/builtin}/internal/erc721_processor.js +69 -122
  201. package/lib/eth/builtin/internal/erc721_processor.js.map +1 -0
  202. package/lib/{builtin → eth/builtin}/internal/factories/EACAggregatorProxy__factory.d.ts +1 -1
  203. package/lib/{builtin → eth/builtin}/internal/factories/EACAggregatorProxy__factory.js +4 -8
  204. package/lib/eth/builtin/internal/factories/EACAggregatorProxy__factory.js.map +1 -0
  205. package/lib/{builtin → eth/builtin}/internal/factories/ERC1155__factory.d.ts +1 -1
  206. package/lib/{builtin → eth/builtin}/internal/factories/ERC1155__factory.js +4 -8
  207. package/lib/eth/builtin/internal/factories/ERC1155__factory.js.map +1 -0
  208. package/lib/{builtin → eth/builtin}/internal/factories/ERC20Bytes__factory.d.ts +1 -1
  209. package/lib/{builtin → eth/builtin}/internal/factories/ERC20Bytes__factory.js +4 -8
  210. package/lib/eth/builtin/internal/factories/ERC20Bytes__factory.js.map +1 -0
  211. package/lib/{builtin → eth/builtin}/internal/factories/ERC20__factory.d.ts +1 -1
  212. package/lib/{builtin → eth/builtin}/internal/factories/ERC20__factory.js +4 -8
  213. package/lib/eth/builtin/internal/factories/ERC20__factory.js.map +1 -0
  214. package/lib/{builtin → eth/builtin}/internal/factories/ERC721__factory.d.ts +1 -1
  215. package/lib/{builtin → eth/builtin}/internal/factories/ERC721__factory.js +4 -8
  216. package/lib/eth/builtin/internal/factories/ERC721__factory.js.map +1 -0
  217. package/lib/{builtin → eth/builtin}/internal/factories/WETH9__factory.d.ts +1 -1
  218. package/lib/{builtin → eth/builtin}/internal/factories/WETH9__factory.js +4 -8
  219. package/lib/eth/builtin/internal/factories/WETH9__factory.js.map +1 -0
  220. package/lib/eth/builtin/internal/factories/index.d.ts +6 -0
  221. package/lib/eth/builtin/internal/factories/index.js +10 -0
  222. package/lib/eth/builtin/internal/factories/index.js.map +1 -0
  223. package/lib/eth/builtin/internal/index.d.ts +13 -0
  224. package/lib/eth/builtin/internal/index.js +8 -0
  225. package/lib/eth/builtin/internal/index.js.map +1 -0
  226. package/lib/{builtin → eth/builtin}/internal/weth9_processor.d.ts +3 -3
  227. package/lib/{builtin → eth/builtin}/internal/weth9_processor.js +51 -89
  228. package/lib/eth/builtin/internal/weth9_processor.js.map +1 -0
  229. package/lib/eth/builtin/weth9/index.d.ts +3 -0
  230. package/lib/eth/builtin/weth9/index.js +7 -0
  231. package/lib/eth/builtin/weth9/index.js.map +1 -0
  232. package/lib/{builtin → eth/builtin}/weth9/test-utils.d.ts +1 -1
  233. package/lib/{builtin → eth/builtin}/weth9/test-utils.js +9 -16
  234. package/lib/eth/builtin/weth9/test-utils.js.map +1 -0
  235. package/lib/eth/codegen/codegen.d.ts +1 -0
  236. package/lib/eth/codegen/codegen.js +53 -0
  237. package/lib/eth/codegen/codegen.js.map +1 -0
  238. package/lib/{target-ethers-sentio/index.d.ts → eth/codegen/ethers-sentio.d.ts} +1 -1
  239. package/lib/eth/codegen/ethers-sentio.js +57 -0
  240. package/lib/eth/codegen/ethers-sentio.js.map +1 -0
  241. package/lib/{target-ethers-sentio → eth/codegen}/event-handler.d.ts +0 -0
  242. package/lib/eth/codegen/event-handler.js +46 -0
  243. package/lib/eth/codegen/event-handler.js.map +1 -0
  244. package/lib/{target-ethers-sentio → eth/codegen}/file.d.ts +0 -0
  245. package/lib/{target-ethers-sentio → eth/codegen}/file.js +33 -39
  246. package/lib/eth/codegen/file.js.map +1 -0
  247. package/lib/{target-ethers-sentio → eth/codegen}/functions-handler.d.ts +0 -0
  248. package/lib/{target-ethers-sentio → eth/codegen}/functions-handler.js +12 -18
  249. package/lib/eth/codegen/functions-handler.js.map +1 -0
  250. package/lib/eth/codegen/index.d.ts +1 -0
  251. package/lib/eth/codegen/index.js +2 -0
  252. package/lib/eth/codegen/index.js.map +1 -0
  253. package/lib/{target-ethers-sentio → eth/codegen}/types.d.ts +0 -0
  254. package/lib/{target-ethers-sentio → eth/codegen}/types.js +3 -9
  255. package/lib/eth/codegen/types.js.map +1 -0
  256. package/lib/{target-ethers-sentio → eth/codegen}/view-function.d.ts +0 -0
  257. package/lib/eth/codegen/view-function.js +62 -0
  258. package/lib/eth/codegen/view-function.js.map +1 -0
  259. package/lib/{core → eth}/context.d.ts +5 -5
  260. package/lib/{core → eth}/context.js +14 -23
  261. package/lib/eth/context.js.map +1 -0
  262. package/lib/eth/error.d.ts +1 -0
  263. package/lib/eth/error.js +3 -0
  264. package/lib/eth/error.js.map +1 -0
  265. package/lib/eth/eth-plugin.js +30 -34
  266. package/lib/eth/eth-plugin.js.map +1 -1
  267. package/lib/eth/eth.d.ts +13 -0
  268. package/lib/eth/eth.js +44 -0
  269. package/lib/eth/eth.js.map +1 -0
  270. package/lib/eth/generic-processor.d.ts +3 -3
  271. package/lib/eth/generic-processor.js +9 -13
  272. package/lib/eth/generic-processor.js.map +1 -1
  273. package/lib/eth/generic-processor.test.d.ts +1 -0
  274. package/lib/eth/generic-processor.test.js.map +1 -0
  275. package/lib/eth/index.d.ts +11 -6
  276. package/lib/eth/index.js +10 -14
  277. package/lib/eth/index.js.map +1 -1
  278. package/lib/eth/provider.js +13 -17
  279. package/lib/eth/provider.js.map +1 -1
  280. package/lib/eth/run-codegen.d.ts +2 -0
  281. package/lib/eth/run-codegen.js +12 -0
  282. package/lib/eth/run-codegen.js.map +1 -0
  283. package/lib/eth/trace.js +1 -2
  284. package/lib/eth/trace.js.map +1 -1
  285. package/lib/index.d.ts +2 -5
  286. package/lib/index.js +3 -18
  287. package/lib/index.js.map +1 -1
  288. package/lib/jest.config.d.ts +9 -0
  289. package/lib/jest.config.js +9 -0
  290. package/lib/jest.config.js.map +1 -0
  291. package/lib/promise-or-void.js +1 -2
  292. package/lib/solana/builtin/index.d.ts +1 -0
  293. package/lib/solana/builtin/index.js +2 -0
  294. package/lib/solana/builtin/index.js.map +1 -0
  295. package/lib/solana/builtin/spl-token-processor.d.ts +39 -0
  296. package/lib/solana/builtin/spl-token-processor.js +254 -0
  297. package/lib/solana/builtin/spl-token-processor.js.map +1 -0
  298. package/lib/solana/builtin/types.d.ts +427 -0
  299. package/lib/solana/builtin/types.js +200 -0
  300. package/lib/solana/builtin/types.js.map +1 -0
  301. package/lib/solana/codegen/codegen.d.ts +1 -0
  302. package/lib/solana/codegen/codegen.js +122 -0
  303. package/lib/solana/codegen/codegen.js.map +1 -0
  304. package/lib/solana/codegen/index.d.ts +1 -0
  305. package/lib/solana/codegen/index.js +2 -0
  306. package/lib/solana/codegen/index.js.map +1 -0
  307. package/lib/solana/index.d.ts +4 -0
  308. package/lib/solana/index.js +5 -0
  309. package/lib/solana/index.js.map +1 -0
  310. package/lib/solana/run-codegen.d.ts +2 -0
  311. package/lib/solana/run-codegen.js +12 -0
  312. package/lib/solana/run-codegen.js.map +1 -0
  313. package/lib/solana/solana-context.d.ts +9 -0
  314. package/lib/solana/solana-context.js +28 -0
  315. package/lib/solana/solana-context.js.map +1 -0
  316. package/lib/solana/solana-options.d.ts +10 -0
  317. package/lib/solana/solana-options.js +10 -0
  318. package/lib/solana/solana-options.js.map +1 -0
  319. package/lib/solana/solana-plugin.d.ts +9 -0
  320. package/lib/solana/solana-plugin.js +87 -0
  321. package/lib/solana/solana-plugin.js.map +1 -0
  322. package/lib/solana/solana-processor.d.ts +43 -0
  323. package/lib/solana/solana-processor.js +72 -0
  324. package/lib/solana/solana-processor.js.map +1 -0
  325. package/lib/solana/tests/solana.test.d.ts +1 -0
  326. package/lib/solana/tests/solana.test.js.map +1 -0
  327. package/lib/solana/tests/types/basic_1.d.ts +26 -0
  328. package/lib/solana/tests/types/basic_1.js +63 -0
  329. package/lib/solana/tests/types/basic_1.js.map +1 -0
  330. package/lib/solana/tests/types/basic_1_processor.d.ts +21 -0
  331. package/lib/solana/tests/types/basic_1_processor.js +35 -0
  332. package/lib/solana/tests/types/basic_1_processor.js.map +1 -0
  333. package/lib/solana/tests/types/token_bridge.d.ts +29 -0
  334. package/lib/solana/tests/types/token_bridge.js +938 -0
  335. package/lib/solana/tests/types/token_bridge.js.map +1 -0
  336. package/lib/solana/tests/types/token_bridge_processor.d.ts +212 -0
  337. package/lib/solana/tests/types/token_bridge_processor.js +134 -0
  338. package/lib/solana/tests/types/token_bridge_processor.js.map +1 -0
  339. package/lib/solana/tests/wormhole-token-bridge.d.ts +15 -0
  340. package/lib/solana/tests/wormhole-token-bridge.js +79 -0
  341. package/lib/solana/tests/wormhole-token-bridge.js.map +1 -0
  342. package/lib/testing/index.d.ts +3 -2
  343. package/lib/testing/index.js +3 -10
  344. package/lib/testing/index.js.map +1 -1
  345. package/lib/testing/metric-utils.d.ts +1 -1
  346. package/lib/testing/metric-utils.js +7 -13
  347. package/lib/testing/metric-utils.js.map +1 -1
  348. package/lib/testing/test-processor-server.d.ts +3 -4
  349. package/lib/testing/test-processor-server.js +24 -29
  350. package/lib/testing/test-processor-server.js.map +1 -1
  351. package/lib/testing/test-provider.js +5 -9
  352. package/lib/testing/test-provider.js.map +1 -1
  353. package/lib/tsup.config.ts +31 -0
  354. package/lib/utils/conversion.d.ts +0 -5
  355. package/lib/utils/conversion.js +22 -27
  356. package/lib/utils/conversion.js.map +1 -1
  357. package/lib/utils/dex-price.js +14 -19
  358. package/lib/utils/dex-price.js.map +1 -1
  359. package/lib/utils/dex-price.test.js.map +1 -1
  360. package/lib/utils/erc20.test.js.map +1 -1
  361. package/lib/utils/index.d.ts +3 -4
  362. package/lib/utils/index.js +3 -8
  363. package/lib/utils/index.js.map +1 -1
  364. package/lib/utils/price.d.ts +11 -11
  365. package/lib/utils/price.js +10 -16
  366. package/lib/utils/price.js.map +1 -1
  367. package/lib/utils/token.d.ts +1 -2
  368. package/lib/utils/token.js +23 -40
  369. package/lib/utils/token.js.map +1 -1
  370. package/package.json +51 -23
  371. package/src/aptos/abis/0x1.json +9205 -0
  372. package/src/aptos/abis/0x3.json +1515 -0
  373. package/src/aptos/api.ts +23 -0
  374. package/src/aptos/aptos-plugin.ts +183 -0
  375. package/src/aptos/aptos-processor.ts +331 -0
  376. package/src/aptos/builtin/0x1.ts +4685 -0
  377. package/src/aptos/builtin/0x3.ts +1010 -0
  378. package/src/{builtin/weth9 → aptos/builtin}/index.ts +2 -3
  379. package/src/aptos/codegen/codegen.ts +457 -0
  380. package/src/aptos/codegen/index.ts +1 -0
  381. package/src/aptos/codegen/tsconfig.json +8 -0
  382. package/src/aptos/codegen/typegen.ts +165 -0
  383. package/src/aptos/context.ts +72 -0
  384. package/src/aptos/index.ts +10 -0
  385. package/src/aptos/models.ts +35 -0
  386. package/src/aptos/move-coder.ts +199 -0
  387. package/src/aptos/move-types.ts +11 -0
  388. package/src/aptos/network.ts +29 -0
  389. package/src/aptos/run-codegen.ts +13 -0
  390. package/src/aptos/tests/abis/reserved.json +402 -0
  391. package/src/aptos/tests/abis/soffl3.json +1411 -0
  392. package/src/aptos/tests/abis/souffle.json +389 -0
  393. package/src/aptos/tests/souffl3.ts +57 -0
  394. package/src/aptos/tests/types/index.ts +6 -0
  395. package/src/aptos/tests/types/reserved.ts +781 -0
  396. package/src/aptos/tests/types/soffl3.ts +1567 -0
  397. package/src/aptos/tests/types/souffle.ts +780 -0
  398. package/src/aptos/types.ts +149 -0
  399. package/src/aptos/utils.ts +26 -0
  400. package/src/core/base-context.ts +4 -4
  401. package/src/core/big-decimal.ts +11 -0
  402. package/src/{utils → core}/chain.ts +0 -0
  403. package/src/core/core-plugin.ts +3 -3
  404. package/src/core/event-tracker.ts +2 -2
  405. package/src/core/exporter.ts +3 -3
  406. package/src/core/index.ts +10 -10
  407. package/src/core/logger.ts +2 -2
  408. package/src/core/metadata.ts +23 -2
  409. package/src/core/meter.ts +3 -26
  410. package/src/core/numberish.ts +1 -12
  411. package/src/core/sui-plugin.ts +2 -2
  412. package/src/core/sui-processor.ts +1 -1
  413. package/src/{abis → eth/abis}/EACAggregatorProxy.json +0 -0
  414. package/src/{abis → eth/abis}/ERC1155.json +0 -0
  415. package/src/{abis → eth/abis}/ERC20.json +0 -0
  416. package/src/{abis → eth/abis}/ERC20Bytes.json +0 -0
  417. package/src/{abis → eth/abis}/ERC721.json +0 -0
  418. package/src/{abis → eth/abis}/WETH9.json +0 -0
  419. package/src/eth/account-processor-state.ts +1 -1
  420. package/src/eth/account-processor.ts +11 -11
  421. package/src/eth/base-processor-template.ts +8 -7
  422. package/src/eth/base-processor.ts +12 -22
  423. package/src/{core → eth}/bind-options.ts +0 -0
  424. package/src/eth/binds.ts +3 -3
  425. package/src/eth/builtin/eacaggregatorproxy/index.ts +7 -0
  426. package/src/{builtin → eth/builtin}/eacaggregatorproxy/test-utils.ts +1 -1
  427. package/src/eth/builtin/erc1155/index.ts +7 -0
  428. package/src/{builtin → eth/builtin}/erc1155/test-utils.ts +1 -1
  429. package/src/eth/builtin/erc20/index.ts +7 -0
  430. package/src/{builtin → eth/builtin}/erc20/test-utils.ts +1 -1
  431. package/src/eth/builtin/erc20bytes/index.ts +7 -0
  432. package/src/{builtin → eth/builtin}/erc20bytes/test-utils.ts +1 -1
  433. package/src/eth/builtin/erc721/index.ts +7 -0
  434. package/src/{builtin → eth/builtin}/erc721/test-utils.ts +1 -1
  435. package/src/eth/builtin/index.ts +8 -0
  436. package/src/{builtin → eth/builtin}/internal/EACAggregatorProxy.ts +6 -10
  437. package/src/{builtin → eth/builtin}/internal/ERC1155.ts +6 -10
  438. package/src/{builtin → eth/builtin}/internal/ERC20.ts +5 -8
  439. package/src/{builtin → eth/builtin}/internal/ERC20Bytes.ts +4 -6
  440. package/src/{builtin → eth/builtin}/internal/ERC721.ts +5 -8
  441. package/src/{builtin → eth/builtin}/internal/WETH9.ts +6 -10
  442. package/src/eth/builtin/internal/common.ts +22 -0
  443. package/src/{builtin → eth/builtin}/internal/eacaggregatorproxy_processor.ts +93 -165
  444. package/src/{builtin → eth/builtin}/internal/erc1155_processor.ts +28 -52
  445. package/src/{builtin → eth/builtin}/internal/erc20_processor.ts +43 -75
  446. package/src/{builtin → eth/builtin}/internal/erc20bytes_processor.ts +33 -57
  447. package/src/{builtin → eth/builtin}/internal/erc721_processor.ts +48 -84
  448. package/src/{builtin → eth/builtin}/internal/factories/EACAggregatorProxy__factory.ts +1 -1
  449. package/src/{builtin → eth/builtin}/internal/factories/ERC1155__factory.ts +1 -1
  450. package/src/{builtin → eth/builtin}/internal/factories/ERC20Bytes__factory.ts +1 -1
  451. package/src/{builtin → eth/builtin}/internal/factories/ERC20__factory.ts +1 -1
  452. package/src/{builtin → eth/builtin}/internal/factories/ERC721__factory.ts +1 -1
  453. package/src/{builtin → eth/builtin}/internal/factories/WETH9__factory.ts +1 -1
  454. package/src/eth/builtin/internal/factories/index.ts +9 -0
  455. package/src/eth/builtin/internal/index.ts +16 -0
  456. package/src/{builtin → eth/builtin}/internal/weth9_processor.ts +33 -57
  457. package/src/eth/builtin/weth9/index.ts +7 -0
  458. package/src/{builtin → eth/builtin}/weth9/test-utils.ts +1 -1
  459. package/src/eth/codegen/codegen.ts +62 -0
  460. package/src/{target-ethers-sentio/index.ts → eth/codegen/ethers-sentio.ts} +5 -2
  461. package/src/{target-ethers-sentio → eth/codegen}/event-handler.ts +2 -2
  462. package/src/{target-ethers-sentio → eth/codegen}/file.ts +13 -12
  463. package/src/{target-ethers-sentio → eth/codegen}/functions-handler.ts +4 -5
  464. package/src/eth/codegen/index.ts +1 -0
  465. package/src/eth/codegen/tsconfig.json +8 -0
  466. package/src/{target-ethers-sentio → eth/codegen}/types.ts +1 -1
  467. package/src/{target-ethers-sentio → eth/codegen}/view-function.ts +7 -12
  468. package/src/{core → eth}/context.ts +5 -6
  469. package/src/eth/error.ts +4 -0
  470. package/src/eth/eth-plugin.ts +3 -3
  471. package/src/eth/eth.ts +56 -0
  472. package/src/eth/generic-processor.ts +5 -5
  473. package/src/eth/index.ts +12 -6
  474. package/src/eth/provider.ts +4 -3
  475. package/src/eth/run-codegen.ts +12 -0
  476. package/src/index.ts +2 -9
  477. package/src/jest.config.ts +8 -0
  478. package/src/solana/builtin/index.ts +1 -0
  479. package/src/solana/builtin/spl-token-processor.ts +298 -0
  480. package/src/solana/builtin/types.ts +279 -0
  481. package/src/solana/codegen/codegen.ts +140 -0
  482. package/src/solana/codegen/index.ts +1 -0
  483. package/src/solana/codegen/tsconfig.json +8 -0
  484. package/src/solana/index.ts +4 -0
  485. package/src/solana/run-codegen.ts +13 -0
  486. package/src/solana/solana-context.ts +30 -0
  487. package/src/solana/solana-options.ts +11 -0
  488. package/src/solana/solana-plugin.ts +103 -0
  489. package/src/solana/solana-processor.ts +102 -0
  490. package/src/solana/tests/abis/basic_1.json +62 -0
  491. package/src/solana/tests/abis/token_bridge.json +937 -0
  492. package/src/solana/tests/types/basic_1.ts +62 -0
  493. package/src/solana/tests/types/basic_1_processor.ts +42 -0
  494. package/src/solana/tests/types/token_bridge.ts +937 -0
  495. package/src/solana/tests/types/token_bridge_processor.ts +150 -0
  496. package/src/solana/tests/wormhole-token-bridge.ts +96 -0
  497. package/src/testing/index.ts +3 -3
  498. package/src/testing/metric-utils.ts +2 -2
  499. package/src/testing/test-processor-server.ts +5 -5
  500. package/src/testing/test-provider.ts +1 -1
  501. package/src/tsup.config.ts +31 -0
  502. package/src/utils/conversion.ts +21 -25
  503. package/src/utils/dex-price.ts +4 -5
  504. package/src/utils/index.ts +3 -4
  505. package/src/utils/price.ts +1 -1
  506. package/src/utils/token.ts +20 -31
  507. package/lib/builtin/eacaggregatorproxy/index.d.ts +0 -2
  508. package/lib/builtin/eacaggregatorproxy/index.js +0 -9
  509. package/lib/builtin/eacaggregatorproxy/index.js.map +0 -1
  510. package/lib/builtin/eacaggregatorproxy/test-utils.js.map +0 -1
  511. package/lib/builtin/erc1155/index.d.ts +0 -2
  512. package/lib/builtin/erc1155/index.js +0 -9
  513. package/lib/builtin/erc1155/index.js.map +0 -1
  514. package/lib/builtin/erc1155/test-utils.js.map +0 -1
  515. package/lib/builtin/erc20/index.d.ts +0 -2
  516. package/lib/builtin/erc20/index.js +0 -9
  517. package/lib/builtin/erc20/index.js.map +0 -1
  518. package/lib/builtin/erc20/test-utils.js.map +0 -1
  519. package/lib/builtin/erc20bytes/index.d.ts +0 -2
  520. package/lib/builtin/erc20bytes/index.js +0 -9
  521. package/lib/builtin/erc20bytes/index.js.map +0 -1
  522. package/lib/builtin/erc20bytes/test-utils.js.map +0 -1
  523. package/lib/builtin/erc721/index.d.ts +0 -2
  524. package/lib/builtin/erc721/index.js +0 -9
  525. package/lib/builtin/erc721/index.js.map +0 -1
  526. package/lib/builtin/erc721/test-utils.js.map +0 -1
  527. package/lib/builtin/index.d.ts +0 -4
  528. package/lib/builtin/index.js +0 -9
  529. package/lib/builtin/index.js.map +0 -1
  530. package/lib/builtin/internal/EACAggregatorProxy.js +0 -3
  531. package/lib/builtin/internal/EACAggregatorProxy.js.map +0 -1
  532. package/lib/builtin/internal/ERC1155.js +0 -3
  533. package/lib/builtin/internal/ERC1155.js.map +0 -1
  534. package/lib/builtin/internal/ERC20.js +0 -3
  535. package/lib/builtin/internal/ERC20.js.map +0 -1
  536. package/lib/builtin/internal/ERC20Bytes.js +0 -3
  537. package/lib/builtin/internal/ERC20Bytes.js.map +0 -1
  538. package/lib/builtin/internal/ERC721.js +0 -3
  539. package/lib/builtin/internal/ERC721.js.map +0 -1
  540. package/lib/builtin/internal/WETH9.js +0 -3
  541. package/lib/builtin/internal/WETH9.js.map +0 -1
  542. package/lib/builtin/internal/common.js.map +0 -1
  543. package/lib/builtin/internal/eacaggregatorproxy_processor.js.map +0 -1
  544. package/lib/builtin/internal/erc1155_processor.js.map +0 -1
  545. package/lib/builtin/internal/erc20_processor.js.map +0 -1
  546. package/lib/builtin/internal/erc20bytes_processor.js.map +0 -1
  547. package/lib/builtin/internal/erc721_processor.js.map +0 -1
  548. package/lib/builtin/internal/factories/EACAggregatorProxy__factory.js.map +0 -1
  549. package/lib/builtin/internal/factories/ERC1155__factory.js.map +0 -1
  550. package/lib/builtin/internal/factories/ERC20Bytes__factory.js.map +0 -1
  551. package/lib/builtin/internal/factories/ERC20__factory.js.map +0 -1
  552. package/lib/builtin/internal/factories/ERC721__factory.js.map +0 -1
  553. package/lib/builtin/internal/factories/WETH9__factory.js.map +0 -1
  554. package/lib/builtin/internal/factories/index.d.ts +0 -6
  555. package/lib/builtin/internal/factories/index.js +0 -19
  556. package/lib/builtin/internal/factories/index.js.map +0 -1
  557. package/lib/builtin/internal/index.d.ts +0 -13
  558. package/lib/builtin/internal/index.js +0 -18
  559. package/lib/builtin/internal/index.js.map +0 -1
  560. package/lib/builtin/internal/weth9_processor.js.map +0 -1
  561. package/lib/builtin/weth9/index.d.ts +0 -2
  562. package/lib/builtin/weth9/index.js +0 -9
  563. package/lib/builtin/weth9/index.js.map +0 -1
  564. package/lib/builtin/weth9/test-utils.js.map +0 -1
  565. package/lib/core/bind-options.js +0 -47
  566. package/lib/core/bind-options.js.map +0 -1
  567. package/lib/core/context.js.map +0 -1
  568. package/lib/core/generic-processor.test.js.map +0 -1
  569. package/lib/error.d.ts +0 -7
  570. package/lib/error.js +0 -43
  571. package/lib/error.js.map +0 -1
  572. package/lib/target-ethers-sentio/event-handler.js +0 -52
  573. package/lib/target-ethers-sentio/event-handler.js.map +0 -1
  574. package/lib/target-ethers-sentio/file.js.map +0 -1
  575. package/lib/target-ethers-sentio/functions-handler.js.map +0 -1
  576. package/lib/target-ethers-sentio/index.js +0 -58
  577. package/lib/target-ethers-sentio/index.js.map +0 -1
  578. package/lib/target-ethers-sentio/types.js.map +0 -1
  579. package/lib/target-ethers-sentio/view-function.js +0 -74
  580. package/lib/target-ethers-sentio/view-function.js.map +0 -1
  581. package/lib/utils/chain.js.map +0 -1
  582. package/lib/webpack.config.js +0 -50
  583. package/src/builtin/eacaggregatorproxy/index.ts +0 -6
  584. package/src/builtin/erc1155/index.ts +0 -6
  585. package/src/builtin/erc20/index.ts +0 -6
  586. package/src/builtin/erc20bytes/index.ts +0 -6
  587. package/src/builtin/erc721/index.ts +0 -6
  588. package/src/builtin/index.ts +0 -4
  589. package/src/builtin/internal/common.ts +0 -46
  590. package/src/builtin/internal/factories/index.ts +0 -9
  591. package/src/builtin/internal/index.ts +0 -16
  592. package/src/error.ts +0 -45
  593. package/src/target-ethers-sentio/.eslintrc.json +0 -14
  594. package/src/target-ethers-sentio/tsconfig.json +0 -9
  595. package/src/webpack.config.js +0 -50
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":";;;AAAA,iEAA6D;AAApD,4HAAA,mBAAmB,OAAA;AAC5B,+CAAwF;AAA/E,mHAAA,mBAAmB,OAAA;AAAE,iHAAA,iBAAiB,OAAA;AAAE,+GAAA,eAAe,OAAA;AAEhE,sHAAsH","sourcesContent":["export { TestProcessorServer } from './test-processor-server'\nexport { MetricValueToNumber, firstCounterValue, firstGaugeValue } from './metric-utils'\n\n// export { loadTestProvidersFromEnv } from './test-provider' // TODO make the interface more standard and then export\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAE3F,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA,CAAC,wDAAwD","sourcesContent":["export { TestProcessorServer } from './test-processor-server.js'\nexport { MetricValueToNumber, firstCounterValue, firstGaugeValue } from './metric-utils.js'\n\nexport { loadTestProvidersFromEnv } from './test-provider.js' // TODO make the interface more standard and then export\n"]}
@@ -1,5 +1,5 @@
1
1
  import { MetricValue, ProcessResult } from '@sentio/protos';
2
- import { Numberish } from '../core';
2
+ import { Numberish } from '../core/index.js';
3
3
  export declare function MetricValueToNumber(v: Partial<MetricValue> | undefined): Numberish | undefined;
4
4
  export declare function firstCounterValue(result: ProcessResult | undefined, name: string): Numberish | undefined;
5
5
  export declare function firstGaugeValue(result: ProcessResult | undefined, name: string): Numberish | undefined;
@@ -1,9 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.firstGaugeValue = exports.firstCounterValue = exports.MetricValueToNumber = void 0;
4
- const core_1 = require("../core");
5
- const conversion_1 = require("../utils/conversion");
6
- function MetricValueToNumber(v) {
1
+ import { BigDecimal } from '../core/index.js';
2
+ import { bytesToBigInt } from '../utils/conversion.js';
3
+ export function MetricValueToNumber(v) {
7
4
  if (v === undefined) {
8
5
  return undefined;
9
6
  }
@@ -11,19 +8,18 @@ function MetricValueToNumber(v) {
11
8
  return v.doubleValue;
12
9
  }
13
10
  if (v.bigInteger !== undefined) {
14
- let intValue = (0, conversion_1.bytesToBigInt)(v.bigInteger.data);
11
+ let intValue = bytesToBigInt(v.bigInteger.data);
15
12
  if (v.bigInteger.negative) {
16
13
  intValue = -intValue;
17
14
  }
18
15
  return intValue;
19
16
  }
20
17
  if (v.bigDecimal !== undefined) {
21
- return new core_1.BigDecimal(v.bigDecimal);
18
+ return new BigDecimal(v.bigDecimal);
22
19
  }
23
20
  return undefined;
24
21
  }
25
- exports.MetricValueToNumber = MetricValueToNumber;
26
- function firstCounterValue(result, name) {
22
+ export function firstCounterValue(result, name) {
27
23
  if (!result) {
28
24
  return undefined;
29
25
  }
@@ -34,8 +30,7 @@ function firstCounterValue(result, name) {
34
30
  }
35
31
  return undefined;
36
32
  }
37
- exports.firstCounterValue = firstCounterValue;
38
- function firstGaugeValue(result, name) {
33
+ export function firstGaugeValue(result, name) {
39
34
  if (!result) {
40
35
  return undefined;
41
36
  }
@@ -46,5 +41,4 @@ function firstGaugeValue(result, name) {
46
41
  }
47
42
  return undefined;
48
43
  }
49
- exports.firstGaugeValue = firstGaugeValue;
50
44
  //# sourceMappingURL=metric-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metric-utils.js","sourceRoot":"","sources":["../../src/testing/metric-utils.ts"],"names":[],"mappings":";;;AACA,kCAA+C;AAC/C,oDAAmD;AAEnD,SAAgB,mBAAmB,CAAC,CAAmC;IACrE,IAAI,CAAC,KAAK,SAAS,EAAE;QACnB,OAAO,SAAS,CAAA;KACjB;IAED,IAAI,CAAC,CAAC,WAAW,KAAK,SAAS,EAAE;QAC/B,OAAO,CAAC,CAAC,WAAW,CAAA;KACrB;IACD,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS,EAAE;QAC9B,IAAI,QAAQ,GAAG,IAAA,0BAAa,EAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QAC/C,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE;YACzB,QAAQ,GAAG,CAAC,QAAQ,CAAA;SACrB;QACD,OAAO,QAAQ,CAAA;KAChB;IACD,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS,EAAE;QAC9B,OAAO,IAAI,iBAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;KACpC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAnBD,kDAmBC;AAED,SAAgB,iBAAiB,CAAC,MAAiC,EAAE,IAAY;IAC/E,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,SAAS,CAAA;KACjB;IACD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE;QACrC,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI,KAAK,IAAI,EAAE;YACnC,OAAO,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;SAChD;KACF;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAVD,8CAUC;AAED,SAAgB,eAAe,CAAC,MAAiC,EAAE,IAAY;IAC7E,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,SAAS,CAAA;KACjB;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE;QACjC,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,KAAK,IAAI,EAAE;YACjC,OAAO,mBAAmB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;SAC9C;KACF;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAVD,0CAUC","sourcesContent":["import { MetricValue, ProcessResult } from '@sentio/protos'\nimport { Numberish, BigDecimal } from '../core'\nimport { bytesToBigInt } from '../utils/conversion'\n\nexport function MetricValueToNumber(v: Partial<MetricValue> | undefined): Numberish | undefined {\n if (v === undefined) {\n return undefined\n }\n\n if (v.doubleValue !== undefined) {\n return v.doubleValue\n }\n if (v.bigInteger !== undefined) {\n let intValue = bytesToBigInt(v.bigInteger.data)\n if (v.bigInteger.negative) {\n intValue = -intValue\n }\n return intValue\n }\n if (v.bigDecimal !== undefined) {\n return new BigDecimal(v.bigDecimal)\n }\n return undefined\n}\n\nexport function firstCounterValue(result: ProcessResult | undefined, name: string): Numberish | undefined {\n if (!result) {\n return undefined\n }\n for (const counter of result.counters) {\n if (counter.metadata?.name === name) {\n return MetricValueToNumber(counter.metricValue)\n }\n }\n return undefined\n}\n\nexport function firstGaugeValue(result: ProcessResult | undefined, name: string): Numberish | undefined {\n if (!result) {\n return undefined\n }\n for (const gauge of result.gauges) {\n if (gauge.metadata?.name === name) {\n return MetricValueToNumber(gauge.metricValue)\n }\n }\n return undefined\n}\n"]}
1
+ {"version":3,"file":"metric-utils.js","sourceRoot":"","sources":["../../src/testing/metric-utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAEtD,MAAM,UAAU,mBAAmB,CAAC,CAAmC;IACrE,IAAI,CAAC,KAAK,SAAS,EAAE;QACnB,OAAO,SAAS,CAAA;KACjB;IAED,IAAI,CAAC,CAAC,WAAW,KAAK,SAAS,EAAE;QAC/B,OAAO,CAAC,CAAC,WAAW,CAAA;KACrB;IACD,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS,EAAE;QAC9B,IAAI,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QAC/C,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE;YACzB,QAAQ,GAAG,CAAC,QAAQ,CAAA;SACrB;QACD,OAAO,QAAQ,CAAA;KAChB;IACD,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS,EAAE;QAC9B,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;KACpC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAiC,EAAE,IAAY;IAC/E,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,SAAS,CAAA;KACjB;IACD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE;QACrC,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI,KAAK,IAAI,EAAE;YACnC,OAAO,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;SAChD;KACF;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAiC,EAAE,IAAY;IAC7E,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,SAAS,CAAA;KACjB;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE;QACjC,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,KAAK,IAAI,EAAE;YACjC,OAAO,mBAAmB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;SAC9C;KACF;IACD,OAAO,SAAS,CAAA;AAClB,CAAC","sourcesContent":["import { MetricValue, ProcessResult } from '@sentio/protos'\nimport { Numberish, BigDecimal } from '../core/index.js'\nimport { bytesToBigInt } from '../utils/conversion.js'\n\nexport function MetricValueToNumber(v: Partial<MetricValue> | undefined): Numberish | undefined {\n if (v === undefined) {\n return undefined\n }\n\n if (v.doubleValue !== undefined) {\n return v.doubleValue\n }\n if (v.bigInteger !== undefined) {\n let intValue = bytesToBigInt(v.bigInteger.data)\n if (v.bigInteger.negative) {\n intValue = -intValue\n }\n return intValue\n }\n if (v.bigDecimal !== undefined) {\n return new BigDecimal(v.bigDecimal)\n }\n return undefined\n}\n\nexport function firstCounterValue(result: ProcessResult | undefined, name: string): Numberish | undefined {\n if (!result) {\n return undefined\n }\n for (const counter of result.counters) {\n if (counter.metadata?.name === name) {\n return MetricValueToNumber(counter.metricValue)\n }\n }\n return undefined\n}\n\nexport function firstGaugeValue(result: ProcessResult | undefined, name: string): Numberish | undefined {\n if (!result) {\n return undefined\n }\n for (const gauge of result.gauges) {\n if (gauge.metadata?.name === name) {\n return MetricValueToNumber(gauge.metricValue)\n }\n }\n return undefined\n}\n"]}
@@ -1,8 +1,7 @@
1
- import { AccountConfig, ContractConfig, DataBinding, Data_SolInstruction, ProcessBindingResponse, ProcessBindingsRequest, ProcessConfigRequest, ProcessConfigResponse, ProcessorServiceImplementation, StartRequest } from '@sentio/protos';
1
+ import { AccountConfig, ContractConfig, DataBinding, Data_SolInstruction, ProcessBindingResponse, ProcessBindingsRequest, ProcessConfigRequest, ProcessConfigResponse, ProcessorServiceImplementation, StartRequest, Empty } from '@sentio/protos';
2
2
  import { CallContext } from 'nice-grpc-common';
3
- import { Empty } from '@sentio/protos/lib/google/protobuf/empty';
4
3
  import { ProcessorServiceImpl } from '@sentio/runtime';
5
- import { Trace } from '../eth/trace';
4
+ import { Trace } from '../eth/trace.js';
6
5
  import { LogParams, Networkish, BlockParams } from 'ethers/providers';
7
6
  import { Block } from 'ethers';
8
7
  export declare const TEST_CONTEXT: CallContext;
@@ -11,7 +10,7 @@ export declare class TestProcessorServer implements ProcessorServiceImplementati
11
10
  service: ProcessorServiceImpl;
12
11
  contractConfigs: ContractConfig[];
13
12
  accountConfigs: AccountConfig[];
14
- constructor(loader: () => void, httpEndpoints?: Record<string, string>);
13
+ constructor(loader: () => Promise<any>, httpEndpoints?: Record<string, string>);
15
14
  start(request?: StartRequest, context?: CallContext): Promise<Empty>;
16
15
  stop(request: Empty, context?: CallContext): Promise<Empty>;
17
16
  getConfig(request: ProcessConfigRequest, context?: CallContext): Promise<ProcessConfigResponse>;
@@ -1,39 +1,35 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TestProcessorServer = exports.cleanTest = exports.TEST_CONTEXT = void 0;
4
- const protos_1 = require("@sentio/protos");
5
- const runtime_1 = require("@sentio/runtime");
6
- const chain_1 = require("../utils/chain");
7
- const providers_1 = require("ethers/providers");
8
- exports.TEST_CONTEXT = {};
9
- function cleanTest() {
10
- runtime_1.State.reset();
1
+ import { HandlerType, } from '@sentio/protos';
2
+ import { ProcessorServiceImpl, Endpoints, State } from '@sentio/runtime';
3
+ import { CHAIN_MAP } from '../core/chain.js';
4
+ import { Network } from 'ethers/providers';
5
+ export const TEST_CONTEXT = {};
6
+ export function cleanTest() {
7
+ State.reset();
11
8
  // Endpoints.reset()
12
9
  }
13
- exports.cleanTest = cleanTest;
14
- class TestProcessorServer {
10
+ export class TestProcessorServer {
15
11
  service;
16
12
  contractConfigs;
17
13
  accountConfigs;
18
14
  constructor(loader, httpEndpoints = {}) {
19
15
  cleanTest();
20
- this.service = new runtime_1.ProcessorServiceImpl(loader);
21
- for (const k in chain_1.CHAIN_MAP) {
16
+ this.service = new ProcessorServiceImpl(loader);
17
+ for (const k in CHAIN_MAP) {
22
18
  const http = httpEndpoints[k] || '';
23
- runtime_1.Endpoints.INSTANCE.chainServer.set(k, http);
19
+ Endpoints.INSTANCE.chainServer.set(k, http);
24
20
  }
25
21
  }
26
- async start(request = { templateInstances: [] }, context = exports.TEST_CONTEXT) {
22
+ async start(request = { templateInstances: [] }, context = TEST_CONTEXT) {
27
23
  const res = await this.service.start(request, context);
28
24
  const config = await this.getConfig({});
29
25
  this.contractConfigs = config.contractConfigs;
30
26
  this.accountConfigs = config.accountConfigs;
31
27
  return res;
32
28
  }
33
- stop(request, context = exports.TEST_CONTEXT) {
29
+ stop(request, context = TEST_CONTEXT) {
34
30
  return this.service.stop(request, context);
35
31
  }
36
- getConfig(request, context = exports.TEST_CONTEXT) {
32
+ getConfig(request, context = TEST_CONTEXT) {
37
33
  return this.service.getConfig(request, context);
38
34
  }
39
35
  // processLogs(request: ProcessBindingsRequest, context = TEST_CONTEXT): Promise<ProcessBindingResponse> {
@@ -65,7 +61,7 @@ class TestProcessorServer {
65
61
  }
66
62
  const signature = trace.action.input.slice(0, 10);
67
63
  for (const contract of this.contractConfigs) {
68
- if (contract.contract?.chainId !== providers_1.Network.from(network).chainId.toString()) {
64
+ if (contract.contract?.chainId !== Network.from(network).chainId.toString()) {
69
65
  continue;
70
66
  }
71
67
  if (trace.action.to?.toLowerCase() !== contract.contract?.address.toLowerCase()) {
@@ -81,7 +77,7 @@ class TestProcessorServer {
81
77
  },
82
78
  },
83
79
  handlerIds: [config.handlerId],
84
- handlerType: protos_1.HandlerType.ETH_TRACE,
80
+ handlerType: HandlerType.ETH_TRACE,
85
81
  };
86
82
  }
87
83
  }
@@ -106,7 +102,7 @@ class TestProcessorServer {
106
102
  }
107
103
  buildLogBinding(log, network = 1) {
108
104
  for (const contract of this.contractConfigs) {
109
- if (contract.contract?.chainId !== providers_1.Network.from(network).chainId.toString()) {
105
+ if (contract.contract?.chainId !== Network.from(network).chainId.toString()) {
110
106
  continue;
111
107
  }
112
108
  if (log.address.toLowerCase() !== contract.contract?.address.toLowerCase()) {
@@ -138,7 +134,7 @@ class TestProcessorServer {
138
134
  ethLog: { log, timestamp: new Date() },
139
135
  },
140
136
  handlerIds: [config.handlerId],
141
- handlerType: protos_1.HandlerType.ETH_LOG,
137
+ handlerType: HandlerType.ETH_LOG,
142
138
  };
143
139
  }
144
140
  }
@@ -164,7 +160,7 @@ class TestProcessorServer {
164
160
  }
165
161
  buildAccountLogBinding(address, log, network = 1) {
166
162
  for (const account of this.accountConfigs) {
167
- if (account.chainId !== providers_1.Network.from(network).chainId.toString()) {
163
+ if (account.chainId !== Network.from(network).chainId.toString()) {
168
164
  continue;
169
165
  }
170
166
  if (address.toLowerCase() !== account.address.toLowerCase()) {
@@ -196,7 +192,7 @@ class TestProcessorServer {
196
192
  ethLog: { log, timestamp: new Date() },
197
193
  },
198
194
  handlerIds: [config.handlerId],
199
- handlerType: protos_1.HandlerType.ETH_LOG,
195
+ handlerType: HandlerType.ETH_LOG,
200
196
  };
201
197
  }
202
198
  }
@@ -225,11 +221,11 @@ class TestProcessorServer {
225
221
  data: {
226
222
  ethBlock: { block },
227
223
  },
228
- handlerType: protos_1.HandlerType.ETH_BLOCK,
224
+ handlerType: HandlerType.ETH_BLOCK,
229
225
  handlerIds: [],
230
226
  };
231
227
  for (const contract of this.contractConfigs) {
232
- if (contract.contract?.chainId !== providers_1.Network.from(network).chainId.toString()) {
228
+ if (contract.contract?.chainId !== Network.from(network).chainId.toString()) {
233
229
  continue;
234
230
  }
235
231
  const longBlockNumber = block.number;
@@ -254,17 +250,16 @@ class TestProcessorServer {
254
250
  solInstruction: instruction,
255
251
  },
256
252
  handlerIds: [],
257
- handlerType: protos_1.HandlerType.SOL_INSTRUCTION,
253
+ handlerType: HandlerType.SOL_INSTRUCTION,
258
254
  };
259
255
  }),
260
256
  });
261
257
  }
262
- processBindings(request, context = exports.TEST_CONTEXT) {
258
+ processBindings(request, context = TEST_CONTEXT) {
263
259
  return this.service.processBindings(request, context);
264
260
  }
265
261
  processBindingsStream(request, context) {
266
262
  return this.service.processBindingsStream(request, context);
267
263
  }
268
264
  }
269
- exports.TestProcessorServer = TestProcessorServer;
270
265
  //# sourceMappingURL=test-processor-server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-processor-server.js","sourceRoot":"","sources":["../../src/testing/test-processor-server.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AccountConfig,\n ContractConfig,\n DataBinding,\n HandlerType,\n Data_SolInstruction,\n ProcessBindingResponse,\n ProcessBindingsRequest,\n ProcessConfigRequest,\n ProcessConfigResponse,\n ProcessorServiceImplementation,\n StartRequest,\n} from '@sentio/protos'\nimport { CallContext } from 'nice-grpc-common'\nimport { Empty } from '@sentio/protos/lib/google/protobuf/empty'\nimport { ChainConfig, ProcessorServiceImpl, Endpoints, State } from '@sentio/runtime'\nimport { CHAIN_MAP } from '../utils/chain'\n\nimport { Trace } from '../eth/trace'\nimport { LogParams, Networkish, BlockParams, Network } from 'ethers/providers'\n\nimport { Block, Log } from 'ethers'\n\nexport const TEST_CONTEXT: CallContext = <CallContext>{}\n\nexport function cleanTest() {\n State.reset()\n // Endpoints.reset()\n}\n\nexport class TestProcessorServer implements ProcessorServiceImplementation {\n service: ProcessorServiceImpl\n contractConfigs: ContractConfig[]\n accountConfigs: AccountConfig[]\n\n constructor(loader: () => void, httpEndpoints: Record<string, string> = {}) {\n cleanTest()\n\n this.service = new ProcessorServiceImpl(loader)\n\n for (const k in CHAIN_MAP) {\n const http = httpEndpoints[k] || ''\n Endpoints.INSTANCE.chainServer.set(k, http)\n }\n }\n\n async start(request: StartRequest = { templateInstances: [] }, context = TEST_CONTEXT): Promise<Empty> {\n const res = await this.service.start(request, context)\n const config = await this.getConfig({})\n this.contractConfigs = config.contractConfigs\n this.accountConfigs = config.accountConfigs\n return res\n }\n\n stop(request: Empty, context = TEST_CONTEXT): Promise<Empty> {\n return this.service.stop(request, context)\n }\n\n getConfig(request: ProcessConfigRequest, context = TEST_CONTEXT): Promise<ProcessConfigResponse> {\n return this.service.getConfig(request, context)\n }\n\n // processLogs(request: ProcessBindingsRequest, context = TEST_CONTEXT): Promise<ProcessBindingResponse> {\n // return this.service.processLogs(request, context)\n // }\n //\n // processTraces(request: ProcessBindingsRequest, context: CallContext = TEST_CONTEXT): Promise<ProcessBindingResponse> {\n // return this.service.processTraces(request, context)\n // }\n\n testTrace(trace: Trace, network: Networkish = 1): Promise<ProcessBindingResponse> {\n return this.testTraces([trace], network)\n }\n\n testTraces(traces: Trace[], network: Networkish = 1): Promise<ProcessBindingResponse> {\n const bindings = []\n for (const trace of traces) {\n const binding = this.buildTraceBinding(trace, network)\n if (!binding) {\n throw Error('Invalid test trace: ' + JSON.stringify(trace))\n }\n bindings.push(binding)\n }\n return this.processBindings({\n bindings: bindings,\n })\n }\n\n buildTraceBinding(trace: Trace, network: Networkish = 1): DataBinding | undefined {\n if (trace.type !== 'call' || !trace.action.input) {\n throw Error('Invalid test trace: ' + JSON.stringify(trace))\n }\n const signature = trace.action.input.slice(0, 10)\n\n for (const contract of this.contractConfigs) {\n if (contract.contract?.chainId !== Network.from(network).chainId.toString()) {\n continue\n }\n if (trace.action.to?.toLowerCase() !== contract.contract?.address.toLowerCase()) {\n continue\n }\n for (const config of contract.traceConfigs) {\n if (config.signature == signature) {\n return {\n data: {\n ethTrace: {\n trace,\n timestamp: new Date(),\n },\n },\n handlerIds: [config.handlerId],\n handlerType: HandlerType.ETH_TRACE,\n }\n }\n }\n }\n return undefined\n }\n\n testLog(log: LogParams, network: Networkish = 1): Promise<ProcessBindingResponse> {\n return this.testLogs([log], network)\n }\n\n testLogs(logs: LogParams[], network: Networkish = 1): Promise<ProcessBindingResponse> {\n const bindings = []\n for (const log of logs) {\n const binding = this.buildLogBinding(log, network)\n if (!binding) {\n throw Error('Invalid test log: ' + JSON.stringify(log))\n }\n bindings.push(binding)\n }\n return this.processBindings({\n bindings: bindings,\n })\n }\n\n buildLogBinding(log: LogParams, network: Networkish = 1): DataBinding | undefined {\n for (const contract of this.contractConfigs) {\n if (contract.contract?.chainId !== Network.from(network).chainId.toString()) {\n continue\n }\n if (log.address.toLowerCase() !== contract.contract?.address.toLowerCase()) {\n continue\n }\n for (const config of contract.logConfigs) {\n for (const filter of config.filters) {\n // if (filter.topics.length != log.topics.length) {\n // continue\n // }\n\n let match = true\n for (const topicIdx in filter.topics) {\n const logTopic = log.topics[topicIdx]\n const possibleTopic = filter.topics[topicIdx].hashes\n if (possibleTopic.length === 0) {\n // match all\n continue\n }\n if (possibleTopic.find((e) => e.toLowerCase() === logTopic.toLowerCase())) {\n // find one\n continue\n }\n match = false\n break\n }\n if (match) {\n return {\n data: {\n ethLog: { log, timestamp: new Date() },\n },\n handlerIds: [config.handlerId],\n handlerType: HandlerType.ETH_LOG,\n }\n }\n }\n }\n }\n return undefined\n }\n testAccountLog(address: string, log: LogParams, network: Networkish = 1): Promise<ProcessBindingResponse> {\n return this.testAccountLogs(address, [log], network)\n }\n\n testAccountLogs(address: string, logs: LogParams[], network: Networkish = 1): Promise<ProcessBindingResponse> {\n const bindings = []\n for (const log of logs) {\n const binding = this.buildAccountLogBinding(address, log, network)\n if (!binding) {\n throw Error('Invalid test log: ' + JSON.stringify(log))\n }\n bindings.push(binding)\n }\n return this.processBindings({\n bindings: bindings,\n })\n }\n\n buildAccountLogBinding(address: string, log: LogParams, network: Networkish = 1): DataBinding | undefined {\n for (const account of this.accountConfigs) {\n if (account.chainId !== Network.from(network).chainId.toString()) {\n continue\n }\n if (address.toLowerCase() !== account.address.toLowerCase()) {\n continue\n }\n for (const config of account.logConfigs) {\n for (const filter of config.filters) {\n // if (filter.topics.length != log.topics.length) {\n // continue\n // }\n\n let match = true\n for (const topicIdx in filter.topics) {\n const logTopic = log.topics[topicIdx]\n const possibleTopic = filter.topics[topicIdx].hashes\n if (possibleTopic.length === 0) {\n // match all\n continue\n }\n if (possibleTopic.find((e) => e.toLowerCase() === logTopic.toLowerCase())) {\n // find one\n continue\n }\n match = false\n break\n }\n if (match) {\n return {\n data: {\n ethLog: { log, timestamp: new Date() },\n },\n handlerIds: [config.handlerId],\n handlerType: HandlerType.ETH_LOG,\n }\n }\n }\n }\n }\n return undefined\n }\n\n testBlock(\n block: Partial<BlockParams> & { number: number },\n network: Networkish = 1\n ): Promise<ProcessBindingResponse> {\n return this.testBlocks([block], network)\n }\n\n testBlocks(blocks: Partial<BlockParams> & { number: number }[], network: Networkish = 1) {\n const bindings = []\n for (const block of blocks) {\n const binding = this.buildBlockBinding(block, network)\n if (!binding) {\n throw Error('Invalid test block: ' + JSON.stringify(block))\n }\n bindings.push(binding)\n }\n return this.processBindings({\n bindings: bindings,\n })\n }\n\n buildBlockBinding(block: Partial<Block> & { number: number }, network: Networkish = 1): DataBinding {\n const binding: DataBinding = {\n data: {\n ethBlock: { block },\n },\n handlerType: HandlerType.ETH_BLOCK,\n handlerIds: [],\n }\n for (const contract of this.contractConfigs) {\n if (contract.contract?.chainId !== Network.from(network).chainId.toString()) {\n continue\n }\n const longBlockNumber = block.number\n if (longBlockNumber < contract.startBlock) {\n continue\n }\n if (contract.endBlock !== 0n && longBlockNumber >= contract.endBlock) {\n continue\n }\n\n for (const config of contract.intervalConfigs) {\n binding.handlerIds.push(config.handlerId)\n }\n }\n return binding\n }\n\n testInstructions(instructions: Data_SolInstruction[]): Promise<ProcessBindingResponse> {\n return this.processBindings({\n bindings: instructions.map((instruction) => {\n return {\n data: {\n raw: new Uint8Array(),\n solInstruction: instruction,\n },\n handlerIds: [],\n handlerType: HandlerType.SOL_INSTRUCTION,\n }\n }),\n })\n }\n\n processBindings(\n request: ProcessBindingsRequest,\n context: CallContext = TEST_CONTEXT\n ): Promise<ProcessBindingResponse> {\n return this.service.processBindings(request, context)\n }\n\n processBindingsStream(request: AsyncIterable<DataBinding>, context: CallContext) {\n return this.service.processBindingsStream(request, context)\n }\n}\n"]}
1
+ {"version":3,"file":"test-processor-server.js","sourceRoot":"","sources":["../../src/testing/test-processor-server.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AccountConfig,\n ContractConfig,\n DataBinding,\n HandlerType,\n Data_SolInstruction,\n ProcessBindingResponse,\n ProcessBindingsRequest,\n ProcessConfigRequest,\n ProcessConfigResponse,\n ProcessorServiceImplementation,\n StartRequest,\n Empty,\n} from '@sentio/protos'\nimport { CallContext } from 'nice-grpc-common'\nimport { ProcessorServiceImpl, Endpoints, State } from '@sentio/runtime'\nimport { CHAIN_MAP } from '../core/chain.js'\n\nimport { Trace } from '../eth/trace.js'\nimport { LogParams, Networkish, BlockParams, Network } from 'ethers/providers'\n\nimport { Block, Log } from 'ethers'\n\nexport const TEST_CONTEXT: CallContext = <CallContext>{}\n\nexport function cleanTest() {\n State.reset()\n // Endpoints.reset()\n}\n\nexport class TestProcessorServer implements ProcessorServiceImplementation {\n service: ProcessorServiceImpl\n contractConfigs: ContractConfig[]\n accountConfigs: AccountConfig[]\n\n constructor(loader: () => Promise<any>, httpEndpoints: Record<string, string> = {}) {\n cleanTest()\n\n this.service = new ProcessorServiceImpl(loader)\n\n for (const k in CHAIN_MAP) {\n const http = httpEndpoints[k] || ''\n Endpoints.INSTANCE.chainServer.set(k, http)\n }\n }\n\n async start(request: StartRequest = { templateInstances: [] }, context = TEST_CONTEXT): Promise<Empty> {\n const res = await this.service.start(request, context)\n const config = await this.getConfig({})\n this.contractConfigs = config.contractConfigs\n this.accountConfigs = config.accountConfigs\n return res\n }\n\n stop(request: Empty, context = TEST_CONTEXT): Promise<Empty> {\n return this.service.stop(request, context)\n }\n\n getConfig(request: ProcessConfigRequest, context = TEST_CONTEXT): Promise<ProcessConfigResponse> {\n return this.service.getConfig(request, context)\n }\n\n // processLogs(request: ProcessBindingsRequest, context = TEST_CONTEXT): Promise<ProcessBindingResponse> {\n // return this.service.processLogs(request, context)\n // }\n //\n // processTraces(request: ProcessBindingsRequest, context: CallContext = TEST_CONTEXT): Promise<ProcessBindingResponse> {\n // return this.service.processTraces(request, context)\n // }\n\n testTrace(trace: Trace, network: Networkish = 1): Promise<ProcessBindingResponse> {\n return this.testTraces([trace], network)\n }\n\n testTraces(traces: Trace[], network: Networkish = 1): Promise<ProcessBindingResponse> {\n const bindings = []\n for (const trace of traces) {\n const binding = this.buildTraceBinding(trace, network)\n if (!binding) {\n throw Error('Invalid test trace: ' + JSON.stringify(trace))\n }\n bindings.push(binding)\n }\n return this.processBindings({\n bindings: bindings,\n })\n }\n\n buildTraceBinding(trace: Trace, network: Networkish = 1): DataBinding | undefined {\n if (trace.type !== 'call' || !trace.action.input) {\n throw Error('Invalid test trace: ' + JSON.stringify(trace))\n }\n const signature = trace.action.input.slice(0, 10)\n\n for (const contract of this.contractConfigs) {\n if (contract.contract?.chainId !== Network.from(network).chainId.toString()) {\n continue\n }\n if (trace.action.to?.toLowerCase() !== contract.contract?.address.toLowerCase()) {\n continue\n }\n for (const config of contract.traceConfigs) {\n if (config.signature == signature) {\n return {\n data: {\n ethTrace: {\n trace,\n timestamp: new Date(),\n },\n },\n handlerIds: [config.handlerId],\n handlerType: HandlerType.ETH_TRACE,\n }\n }\n }\n }\n return undefined\n }\n\n testLog(log: LogParams, network: Networkish = 1): Promise<ProcessBindingResponse> {\n return this.testLogs([log], network)\n }\n\n testLogs(logs: LogParams[], network: Networkish = 1): Promise<ProcessBindingResponse> {\n const bindings = []\n for (const log of logs) {\n const binding = this.buildLogBinding(log, network)\n if (!binding) {\n throw Error('Invalid test log: ' + JSON.stringify(log))\n }\n bindings.push(binding)\n }\n return this.processBindings({\n bindings: bindings,\n })\n }\n\n buildLogBinding(log: LogParams, network: Networkish = 1): DataBinding | undefined {\n for (const contract of this.contractConfigs) {\n if (contract.contract?.chainId !== Network.from(network).chainId.toString()) {\n continue\n }\n if (log.address.toLowerCase() !== contract.contract?.address.toLowerCase()) {\n continue\n }\n for (const config of contract.logConfigs) {\n for (const filter of config.filters) {\n // if (filter.topics.length != log.topics.length) {\n // continue\n // }\n\n let match = true\n for (const topicIdx in filter.topics) {\n const logTopic = log.topics[topicIdx]\n const possibleTopic = filter.topics[topicIdx].hashes\n if (possibleTopic.length === 0) {\n // match all\n continue\n }\n if (possibleTopic.find((e) => e.toLowerCase() === logTopic.toLowerCase())) {\n // find one\n continue\n }\n match = false\n break\n }\n if (match) {\n return {\n data: {\n ethLog: { log, timestamp: new Date() },\n },\n handlerIds: [config.handlerId],\n handlerType: HandlerType.ETH_LOG,\n }\n }\n }\n }\n }\n return undefined\n }\n testAccountLog(address: string, log: LogParams, network: Networkish = 1): Promise<ProcessBindingResponse> {\n return this.testAccountLogs(address, [log], network)\n }\n\n testAccountLogs(address: string, logs: LogParams[], network: Networkish = 1): Promise<ProcessBindingResponse> {\n const bindings = []\n for (const log of logs) {\n const binding = this.buildAccountLogBinding(address, log, network)\n if (!binding) {\n throw Error('Invalid test log: ' + JSON.stringify(log))\n }\n bindings.push(binding)\n }\n return this.processBindings({\n bindings: bindings,\n })\n }\n\n buildAccountLogBinding(address: string, log: LogParams, network: Networkish = 1): DataBinding | undefined {\n for (const account of this.accountConfigs) {\n if (account.chainId !== Network.from(network).chainId.toString()) {\n continue\n }\n if (address.toLowerCase() !== account.address.toLowerCase()) {\n continue\n }\n for (const config of account.logConfigs) {\n for (const filter of config.filters) {\n // if (filter.topics.length != log.topics.length) {\n // continue\n // }\n\n let match = true\n for (const topicIdx in filter.topics) {\n const logTopic = log.topics[topicIdx]\n const possibleTopic = filter.topics[topicIdx].hashes\n if (possibleTopic.length === 0) {\n // match all\n continue\n }\n if (possibleTopic.find((e) => e.toLowerCase() === logTopic.toLowerCase())) {\n // find one\n continue\n }\n match = false\n break\n }\n if (match) {\n return {\n data: {\n ethLog: { log, timestamp: new Date() },\n },\n handlerIds: [config.handlerId],\n handlerType: HandlerType.ETH_LOG,\n }\n }\n }\n }\n }\n return undefined\n }\n\n testBlock(\n block: Partial<BlockParams> & { number: number },\n network: Networkish = 1\n ): Promise<ProcessBindingResponse> {\n return this.testBlocks([block], network)\n }\n\n testBlocks(blocks: Partial<BlockParams> & { number: number }[], network: Networkish = 1) {\n const bindings = []\n for (const block of blocks) {\n const binding = this.buildBlockBinding(block, network)\n if (!binding) {\n throw Error('Invalid test block: ' + JSON.stringify(block))\n }\n bindings.push(binding)\n }\n return this.processBindings({\n bindings: bindings,\n })\n }\n\n buildBlockBinding(block: Partial<Block> & { number: number }, network: Networkish = 1): DataBinding {\n const binding: DataBinding = {\n data: {\n ethBlock: { block },\n },\n handlerType: HandlerType.ETH_BLOCK,\n handlerIds: [],\n }\n for (const contract of this.contractConfigs) {\n if (contract.contract?.chainId !== Network.from(network).chainId.toString()) {\n continue\n }\n const longBlockNumber = block.number\n if (longBlockNumber < contract.startBlock) {\n continue\n }\n if (contract.endBlock !== 0n && longBlockNumber >= contract.endBlock) {\n continue\n }\n\n for (const config of contract.intervalConfigs) {\n binding.handlerIds.push(config.handlerId)\n }\n }\n return binding\n }\n\n testInstructions(instructions: Data_SolInstruction[]): Promise<ProcessBindingResponse> {\n return this.processBindings({\n bindings: instructions.map((instruction) => {\n return {\n data: {\n raw: new Uint8Array(),\n solInstruction: instruction,\n },\n handlerIds: [],\n handlerType: HandlerType.SOL_INSTRUCTION,\n }\n }),\n })\n }\n\n processBindings(\n request: ProcessBindingsRequest,\n context: CallContext = TEST_CONTEXT\n ): Promise<ProcessBindingResponse> {\n return this.service.processBindings(request, context)\n }\n\n processBindingsStream(request: AsyncIterable<DataBinding>, context: CallContext) {\n return this.service.processBindingsStream(request, context)\n }\n}\n"]}
@@ -1,21 +1,18 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.loadTestProvidersFromEnv = void 0;
4
- const runtime_1 = require("@sentio/runtime");
5
- const chain_1 = require("../utils/chain");
6
- function loadTestProvidersFromEnv(requiredChainIds) {
1
+ import { Endpoints } from '@sentio/runtime';
2
+ import { CHAIN_MAP } from '../core/chain.js';
3
+ export function loadTestProvidersFromEnv(requiredChainIds) {
7
4
  const found = [];
8
5
  if (!Array.isArray(requiredChainIds)) {
9
6
  requiredChainIds = [requiredChainIds];
10
7
  }
11
- for (const k of Object.keys(chain_1.CHAIN_MAP)) {
8
+ for (const k of Object.keys(CHAIN_MAP)) {
12
9
  const envKey = 'TEST_ENDPOINT_' + k;
13
10
  const http = process.env[envKey];
14
11
  if (!http) {
15
12
  continue;
16
13
  }
17
14
  found.push(k);
18
- runtime_1.Endpoints.INSTANCE.chainServer.set(k, http);
15
+ Endpoints.INSTANCE.chainServer.set(k, http);
19
16
  }
20
17
  for (const id of requiredChainIds) {
21
18
  if (!found.includes(id)) {
@@ -24,5 +21,4 @@ function loadTestProvidersFromEnv(requiredChainIds) {
24
21
  }
25
22
  return true;
26
23
  }
27
- exports.loadTestProvidersFromEnv = loadTestProvidersFromEnv;
28
24
  //# sourceMappingURL=test-provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-provider.js","sourceRoot":"","sources":["../../src/testing/test-provider.ts"],"names":[],"mappings":";;;AAAA,6CAA2C;AAC3C,0CAA0C;AAE1C,SAAgB,wBAAwB,CAAC,gBAAmC;IAC1E,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;QACpC,gBAAgB,GAAG,CAAC,gBAAgB,CAAC,CAAA;KACtC;IAED,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAS,CAAC,EAAE;QACtC,MAAM,MAAM,GAAG,gBAAgB,GAAG,CAAC,CAAA;QACnC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAChC,IAAI,CAAC,IAAI,EAAE;YACT,SAAQ;SACT;QACD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACb,mBAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;KAC5C;IAED,KAAK,MAAM,EAAE,IAAI,gBAAgB,EAAE;QACjC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;YACvB,OAAO,KAAK,CAAA;SACb;KACF;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAvBD,4DAuBC","sourcesContent":["import { Endpoints } from '@sentio/runtime'\nimport { CHAIN_MAP } from '../utils/chain'\n\nexport function loadTestProvidersFromEnv(requiredChainIds: string[] | string): boolean {\n const found: string[] = []\n\n if (!Array.isArray(requiredChainIds)) {\n requiredChainIds = [requiredChainIds]\n }\n\n for (const k of Object.keys(CHAIN_MAP)) {\n const envKey = 'TEST_ENDPOINT_' + k\n const http = process.env[envKey]\n if (!http) {\n continue\n }\n found.push(k)\n Endpoints.INSTANCE.chainServer.set(k, http)\n }\n\n for (const id of requiredChainIds) {\n if (!found.includes(id)) {\n return false\n }\n }\n return true\n}\n"]}
1
+ {"version":3,"file":"test-provider.js","sourceRoot":"","sources":["../../src/testing/test-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE5C,MAAM,UAAU,wBAAwB,CAAC,gBAAmC;IAC1E,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;QACpC,gBAAgB,GAAG,CAAC,gBAAgB,CAAC,CAAA;KACtC;IAED,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;QACtC,MAAM,MAAM,GAAG,gBAAgB,GAAG,CAAC,CAAA;QACnC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAChC,IAAI,CAAC,IAAI,EAAE;YACT,SAAQ;SACT;QACD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACb,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;KAC5C;IAED,KAAK,MAAM,EAAE,IAAI,gBAAgB,EAAE;QACjC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;YACvB,OAAO,KAAK,CAAA;SACb;KACF;IACD,OAAO,IAAI,CAAA;AACb,CAAC","sourcesContent":["import { Endpoints } from '@sentio/runtime'\nimport { CHAIN_MAP } from '../core/chain.js'\n\nexport function loadTestProvidersFromEnv(requiredChainIds: string[] | string): boolean {\n const found: string[] = []\n\n if (!Array.isArray(requiredChainIds)) {\n requiredChainIds = [requiredChainIds]\n }\n\n for (const k of Object.keys(CHAIN_MAP)) {\n const envKey = 'TEST_ENDPOINT_' + k\n const http = process.env[envKey]\n if (!http) {\n continue\n }\n found.push(k)\n Endpoints.INSTANCE.chainServer.set(k, http)\n }\n\n for (const id of requiredChainIds) {\n if (!found.includes(id)) {\n return false\n }\n }\n return true\n}\n"]}
@@ -0,0 +1,31 @@
1
+ import { defineConfig } from 'tsup'
2
+
3
+ export default defineConfig({
4
+ esbuildOptions: (options) => {
5
+ options.banner = {
6
+ js: `import { createRequire } from 'module'; const require = createRequire(import.meta.url);`,
7
+ }
8
+ },
9
+ entry: {
10
+ lib: 'src/processor.ts',
11
+ },
12
+ minify: true,
13
+ sourcemap: 'inline',
14
+ clean: true,
15
+ format: 'esm',
16
+ dts: {
17
+ resolve: true,
18
+ },
19
+ external: [
20
+ 'protobufjs',
21
+ 'aptos',
22
+ 'aptos-sdk',
23
+ 'ethers',
24
+ 'bs58',
25
+ 'bn.js',
26
+ 'csv-parse',
27
+ /^nice-grpc.*$/,
28
+ /^@(ethersproject|solana|project-serum).*$/,
29
+ /^@sentio\/(sdk|runtime|protos|bigdecimal|ethers).*$/,
30
+ ],
31
+ })
@@ -1,6 +1 @@
1
- import { BigDecimal } from '../core/big-decimal';
2
- import { Numberish } from '../core';
3
- import { MetricValue } from '@sentio/protos';
4
- export declare function toBigDecimal(n: bigint): BigDecimal;
5
1
  export declare function bytesToBigInt(bytes: Uint8Array): bigint;
6
- export declare function metricValueToNumberish(v: MetricValue): Numberish;
@@ -1,34 +1,29 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.metricValueToNumberish = exports.bytesToBigInt = exports.toBigDecimal = void 0;
4
- const big_decimal_1 = require("../core/big-decimal");
5
- function toBigDecimal(n) {
6
- return new big_decimal_1.BigDecimal(n.toString());
7
- }
8
- exports.toBigDecimal = toBigDecimal;
9
- function bytesToBigInt(bytes) {
1
+ // import { BigDecimal } from '../core/big-decimal.js'
2
+ // import { Numberish } from '../core/index.js'
3
+ // import { MetricValue } from '@sentio/protos'
4
+ export function bytesToBigInt(bytes) {
10
5
  let intValue = BigInt(0);
11
6
  for (let i = 0; i < bytes.length; i++) {
12
7
  intValue = intValue * BigInt(256) + BigInt(bytes[i]);
13
8
  }
14
9
  return intValue;
15
10
  }
16
- exports.bytesToBigInt = bytesToBigInt;
17
- function metricValueToNumberish(v) {
18
- if (v.doubleValue) {
19
- return v.doubleValue;
20
- }
21
- if (v.bigInteger) {
22
- let intValue = bytesToBigInt(v.bigInteger.data);
23
- if (v.bigInteger.negative) {
24
- intValue = -intValue;
25
- }
26
- return intValue;
27
- }
28
- if (v.bigDecimal) {
29
- return new big_decimal_1.BigDecimal(v.bigDecimal);
30
- }
31
- throw Error("MetricValue doesn't contain any of possible value");
32
- }
33
- exports.metricValueToNumberish = metricValueToNumberish;
11
+ // export function metricValueToNumberish(v: MetricValue): Numberish {
12
+ // if (v.doubleValue) {
13
+ // return v.doubleValue
14
+ // }
15
+ // if (v.bigInteger) {
16
+ // let intValue = bytesToBigInt(v.bigInteger.data)
17
+ // if (v.bigInteger.negative) {
18
+ // intValue = -intValue
19
+ // }
20
+ // return intValue
21
+ // }
22
+ //
23
+ // if (v.bigDecimal) {
24
+ // return new BigDecimal(v.bigDecimal)
25
+ // }
26
+ //
27
+ // throw Error("MetricValue doesn't contain any of possible value")
28
+ // }
34
29
  //# sourceMappingURL=conversion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversion.js","sourceRoot":"","sources":["../../src/utils/conversion.ts"],"names":[],"mappings":";;;AAAA,qDAAgD;AAIhD,SAAgB,YAAY,CAAC,CAAS;IACpC,OAAO,IAAI,wBAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;AACrC,CAAC;AAFD,oCAEC;AAED,SAAgB,aAAa,CAAC,KAAiB;IAC7C,IAAI,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACrC,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;KACrD;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAND,sCAMC;AAED,SAAgB,sBAAsB,CAAC,CAAc;IACnD,IAAI,CAAC,CAAC,WAAW,EAAE;QACjB,OAAO,CAAC,CAAC,WAAW,CAAA;KACrB;IACD,IAAI,CAAC,CAAC,UAAU,EAAE;QAChB,IAAI,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QAC/C,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE;YACzB,QAAQ,GAAG,CAAC,QAAQ,CAAA;SACrB;QACD,OAAO,QAAQ,CAAA;KAChB;IAED,IAAI,CAAC,CAAC,UAAU,EAAE;QAChB,OAAO,IAAI,wBAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;KACpC;IAED,MAAM,KAAK,CAAC,mDAAmD,CAAC,CAAA;AAClE,CAAC;AAjBD,wDAiBC","sourcesContent":["import { BigDecimal } from '../core/big-decimal'\nimport { Numberish } from '../core'\nimport { MetricValue } from '@sentio/protos'\n\nexport function toBigDecimal(n: bigint) {\n return new BigDecimal(n.toString())\n}\n\nexport function bytesToBigInt(bytes: Uint8Array) {\n let intValue = BigInt(0)\n for (let i = 0; i < bytes.length; i++) {\n intValue = intValue * BigInt(256) + BigInt(bytes[i])\n }\n return intValue\n}\n\nexport function metricValueToNumberish(v: MetricValue): Numberish {\n if (v.doubleValue) {\n return v.doubleValue\n }\n if (v.bigInteger) {\n let intValue = bytesToBigInt(v.bigInteger.data)\n if (v.bigInteger.negative) {\n intValue = -intValue\n }\n return intValue\n }\n\n if (v.bigDecimal) {\n return new BigDecimal(v.bigDecimal)\n }\n\n throw Error(\"MetricValue doesn't contain any of possible value\")\n}\n"]}
1
+ {"version":3,"file":"conversion.js","sourceRoot":"","sources":["../../src/utils/conversion.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,+CAA+C;AAC/C,+CAA+C;AAE/C,MAAM,UAAU,aAAa,CAAC,KAAiB;IAC7C,IAAI,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACrC,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;KACrD;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,sEAAsE;AACtE,yBAAyB;AACzB,2BAA2B;AAC3B,MAAM;AACN,wBAAwB;AACxB,sDAAsD;AACtD,mCAAmC;AACnC,6BAA6B;AAC7B,QAAQ;AACR,sBAAsB;AACtB,MAAM;AACN,EAAE;AACF,wBAAwB;AACxB,0CAA0C;AAC1C,MAAM;AACN,EAAE;AACF,qEAAqE;AACrE,IAAI","sourcesContent":["// import { BigDecimal } from '../core/big-decimal.js'\n// import { Numberish } from '../core/index.js'\n// import { MetricValue } from '@sentio/protos'\n\nexport function bytesToBigInt(bytes: Uint8Array) {\n let intValue = BigInt(0)\n for (let i = 0; i < bytes.length; i++) {\n intValue = intValue * BigInt(256) + BigInt(bytes[i])\n }\n return intValue\n}\n\n// export function metricValueToNumberish(v: MetricValue): Numberish {\n// if (v.doubleValue) {\n// return v.doubleValue\n// }\n// if (v.bigInteger) {\n// let intValue = bytesToBigInt(v.bigInteger.data)\n// if (v.bigInteger.negative) {\n// intValue = -intValue\n// }\n// return intValue\n// }\n//\n// if (v.bigDecimal) {\n// return new BigDecimal(v.bigDecimal)\n// }\n//\n// throw Error(\"MetricValue doesn't contain any of possible value\")\n// }\n"]}
@@ -1,19 +1,14 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GoerliDexPrice = exports.EthereumDexPrice = exports.PriceUnit = void 0;
4
- const tslib_1 = require("tslib");
5
- const eacaggregatorproxy_processor_1 = require("../builtin/internal/eacaggregatorproxy_processor");
6
- const path_1 = tslib_1.__importDefault(require("path"));
7
- const fs_1 = tslib_1.__importDefault(require("fs"));
8
- // @ts-ignore type def not provided
9
- const sync_1 = require("csv-parse/sync");
10
- const token_1 = require("./token");
11
- var PriceUnit;
1
+ import { getEACAggregatorProxyContract } from '../eth/builtin/internal/eacaggregatorproxy_processor.js';
2
+ import fs from 'fs';
3
+ import { parse } from 'csv-parse/sync';
4
+ import url from 'url';
5
+ import { scaleDown } from '../core/big-decimal.js';
6
+ export var PriceUnit;
12
7
  (function (PriceUnit) {
13
8
  PriceUnit[PriceUnit["USD"] = 0] = "USD";
14
9
  PriceUnit[PriceUnit["ETH"] = 1] = "ETH";
15
10
  PriceUnit[PriceUnit["BTC"] = 2] = "BTC";
16
- })(PriceUnit = exports.PriceUnit || (exports.PriceUnit = {}));
11
+ })(PriceUnit || (PriceUnit = {}));
17
12
  // Load price feed from https://docs.chain.link/docs/data-feeds/price-feeds/addresses/?network=ethereum
18
13
  // and then use EACAggregatorProxy contract to get price
19
14
  class DexPrice {
@@ -24,10 +19,10 @@ class DexPrice {
24
19
  chainId;
25
20
  constructor(csvFileName, chainId) {
26
21
  this.chainId = chainId;
27
- const csvFilePath = path_1.default.resolve(__dirname, csvFileName);
28
- const fileContent = fs_1.default.readFileSync(csvFilePath, { encoding: 'utf-8' });
22
+ const csvFilePath = url.fileURLToPath(new URL('./' + csvFileName, import.meta.url));
23
+ const fileContent = fs.readFileSync(csvFilePath, { encoding: 'utf-8' });
29
24
  const headers = ['Pair', 'Asset', 'Type', 'Address'];
30
- const records = (0, sync_1.parse)(fileContent, {
25
+ const records = parse(fileContent, {
31
26
  delimiter: ',',
32
27
  columns: headers,
33
28
  skip_empty_lines: true,
@@ -80,7 +75,7 @@ class DexPrice {
80
75
  error: 'No price feed found for asset',
81
76
  };
82
77
  }
83
- const contract = (0, eacaggregatorproxy_processor_1.getEACAggregatorProxyContract)(addr, this.chainId);
78
+ const contract = getEACAggregatorProxyContract(addr, this.chainId);
84
79
  try {
85
80
  const price = await contract.latestAnswer({
86
81
  blockTag: blockTag,
@@ -91,7 +86,7 @@ class DexPrice {
91
86
  this.ASSETS_INFOS.set(asset, decimal);
92
87
  }
93
88
  return {
94
- price: (0, token_1.scaleDown)(price, decimal).toNumber(),
89
+ price: scaleDown(price, decimal).toNumber(),
95
90
  };
96
91
  }
97
92
  catch (e) {
@@ -108,6 +103,6 @@ class DexPrice {
108
103
  }
109
104
  }
110
105
  }
111
- exports.EthereumDexPrice = new DexPrice('chainlink-oracles.csv', 1);
112
- exports.GoerliDexPrice = new DexPrice('chainlink-oracles-goerli.csv', 5);
106
+ export const EthereumDexPrice = new DexPrice('chainlink-oracles.csv', 1);
107
+ export const GoerliDexPrice = new DexPrice('chainlink-oracles-goerli.csv', 5);
113
108
  //# sourceMappingURL=dex-price.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dex-price.js","sourceRoot":"","sources":["../../src/utils/dex-price.ts"],"names":[],"mappings":"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","sourcesContent":["import { getEACAggregatorProxyContract } from '../builtin/internal/eacaggregatorproxy_processor'\nimport path from 'path'\nimport fs from 'fs'\n// @ts-ignore type def not provided\nimport { parse } from 'csv-parse/sync'\nimport { BlockTag } from 'ethers/providers'\nimport { scaleDown } from './token'\n\ntype OralceRecord = {\n Pair: string\n Asset: string\n Type: string\n Address: string\n}\n\nexport enum PriceUnit {\n USD = 0,\n ETH = 1,\n BTC = 2,\n}\n\nexport interface DexPriceResult {\n price?: number\n error?: string\n}\n\n// Load price feed from https://docs.chain.link/docs/data-feeds/price-feeds/addresses/?network=ethereum\n// and then use EACAggregatorProxy contract to get price\nclass DexPrice {\n USD_ORACLE_MAP = new Map<string, string>()\n ETH_ORACLE_MAP = new Map<string, string>()\n BTC_ORACLE_MAP = new Map<string, string>()\n ASSETS_INFOS = new Map<string, number>()\n\n readonly chainId: number\n\n constructor(csvFileName: string, chainId: number) {\n this.chainId = chainId\n const csvFilePath = path.resolve(__dirname, csvFileName)\n const fileContent = fs.readFileSync(csvFilePath, { encoding: 'utf-8' })\n const headers = ['Pair', 'Asset', 'Type', 'Address']\n\n const records: OralceRecord[] = parse(fileContent, {\n delimiter: ',',\n columns: headers,\n skip_empty_lines: true,\n })\n\n for (const record of records) {\n const pair = record.Pair.split('/')\n const asset = pair[0].trim().toLowerCase()\n const target = pair[1].trim().toLowerCase()\n const address = record.Address.toLowerCase()\n if (target === 'usd') {\n this.USD_ORACLE_MAP.set(asset, address)\n } else if (target === 'eth') {\n this.ETH_ORACLE_MAP.set(asset, address)\n } else if (target == 'btc') {\n this.BTC_ORACLE_MAP.set(asset, address)\n } else {\n console.error('wrong asset record:' + JSON.stringify(record))\n }\n\n // console.log(asset, target, address)\n }\n }\n\n // asset: symbol of the asset\n // unit: usd, eth or btc\n // blockTag: blockNumber of block symbol like \"latest\"\n // returns the asset price,\n // throw exception if calling to price feed failed, e.g. due to a invalid block number\n async getPrice(\n asset: string,\n blockTag: BlockTag = 'latest',\n unit: PriceUnit = PriceUnit.USD\n ): Promise<DexPriceResult> {\n // if (chainId !== 1 && chainId !== 5) {\n // return {\n // error: \"current dex price only support chain 1 (mainnet) or 5 (goerli)\"\n // }\n // }\n\n let oracleMap = this.USD_ORACLE_MAP\n switch (unit) {\n case PriceUnit.ETH:\n oracleMap = this.ETH_ORACLE_MAP\n break\n case PriceUnit.BTC:\n oracleMap = this.BTC_ORACLE_MAP\n break\n default:\n }\n\n asset = asset.trim().toLowerCase()\n\n const addr = oracleMap.get(asset)\n if (!addr) {\n return {\n error: 'No price feed found for asset',\n }\n }\n\n const contract = getEACAggregatorProxyContract(addr, this.chainId)\n try {\n const price = await contract.latestAnswer({\n blockTag: blockTag,\n })\n\n let decimal = this.ASSETS_INFOS.get(asset)\n if (!decimal) {\n decimal = Number(await contract.decimals())\n this.ASSETS_INFOS.set(asset, decimal)\n }\n\n return {\n price: scaleDown(price, decimal).toNumber(),\n }\n } catch (e) {\n return {\n error:\n 'Price query error for ' +\n asset +\n ' failed at ' +\n addr +\n ' at chain ' +\n this.chainId +\n '. Details: ' +\n e.toString(),\n }\n }\n }\n}\n\nexport const EthereumDexPrice = new DexPrice('chainlink-oracles.csv', 1)\nexport const GoerliDexPrice = new DexPrice('chainlink-oracles-goerli.csv', 5)\n"]}
1
+ {"version":3,"file":"dex-price.js","sourceRoot":"","sources":["../../src/utils/dex-price.ts"],"names":[],"mappings":"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","sourcesContent":["import { getEACAggregatorProxyContract } from '../eth/builtin/internal/eacaggregatorproxy_processor.js'\nimport fs from 'fs'\nimport { parse } from 'csv-parse/sync'\nimport { BlockTag } from 'ethers/providers'\nimport url from 'url'\nimport { scaleDown } from '../core/big-decimal.js'\n\ntype OralceRecord = {\n Pair: string\n Asset: string\n Type: string\n Address: string\n}\n\nexport enum PriceUnit {\n USD = 0,\n ETH = 1,\n BTC = 2,\n}\n\nexport interface DexPriceResult {\n price?: number\n error?: string\n}\n\n// Load price feed from https://docs.chain.link/docs/data-feeds/price-feeds/addresses/?network=ethereum\n// and then use EACAggregatorProxy contract to get price\nclass DexPrice {\n USD_ORACLE_MAP = new Map<string, string>()\n ETH_ORACLE_MAP = new Map<string, string>()\n BTC_ORACLE_MAP = new Map<string, string>()\n ASSETS_INFOS = new Map<string, number>()\n\n readonly chainId: number\n\n constructor(csvFileName: string, chainId: number) {\n this.chainId = chainId\n const csvFilePath = url.fileURLToPath(new URL('./' + csvFileName, import.meta.url))\n const fileContent = fs.readFileSync(csvFilePath, { encoding: 'utf-8' })\n const headers = ['Pair', 'Asset', 'Type', 'Address']\n\n const records: OralceRecord[] = parse(fileContent, {\n delimiter: ',',\n columns: headers,\n skip_empty_lines: true,\n })\n\n for (const record of records) {\n const pair = record.Pair.split('/')\n const asset = pair[0].trim().toLowerCase()\n const target = pair[1].trim().toLowerCase()\n const address = record.Address.toLowerCase()\n if (target === 'usd') {\n this.USD_ORACLE_MAP.set(asset, address)\n } else if (target === 'eth') {\n this.ETH_ORACLE_MAP.set(asset, address)\n } else if (target == 'btc') {\n this.BTC_ORACLE_MAP.set(asset, address)\n } else {\n console.error('wrong asset record:' + JSON.stringify(record))\n }\n\n // console.log(asset, target, address)\n }\n }\n\n // asset: symbol of the asset\n // unit: usd, eth or btc\n // blockTag: blockNumber of block symbol like \"latest\"\n // returns the asset price,\n // throw exception if calling to price feed failed, e.g. due to a invalid block number\n async getPrice(\n asset: string,\n blockTag: BlockTag = 'latest',\n unit: PriceUnit = PriceUnit.USD\n ): Promise<DexPriceResult> {\n // if (chainId !== 1 && chainId !== 5) {\n // return {\n // error: \"current dex price only support chain 1 (mainnet) or 5 (goerli)\"\n // }\n // }\n\n let oracleMap = this.USD_ORACLE_MAP\n switch (unit) {\n case PriceUnit.ETH:\n oracleMap = this.ETH_ORACLE_MAP\n break\n case PriceUnit.BTC:\n oracleMap = this.BTC_ORACLE_MAP\n break\n default:\n }\n\n asset = asset.trim().toLowerCase()\n\n const addr = oracleMap.get(asset)\n if (!addr) {\n return {\n error: 'No price feed found for asset',\n }\n }\n\n const contract = getEACAggregatorProxyContract(addr, this.chainId)\n try {\n const price = await contract.latestAnswer({\n blockTag: blockTag,\n })\n\n let decimal = this.ASSETS_INFOS.get(asset)\n if (!decimal) {\n decimal = Number(await contract.decimals())\n this.ASSETS_INFOS.set(asset, decimal)\n }\n\n return {\n price: scaleDown(price, decimal).toNumber(),\n }\n } catch (e) {\n return {\n error:\n 'Price query error for ' +\n asset +\n ' failed at ' +\n addr +\n ' at chain ' +\n this.chainId +\n '. Details: ' +\n e.toString(),\n }\n }\n }\n}\n\nexport const EthereumDexPrice = new DexPrice('chainlink-oracles.csv', 1)\nexport const GoerliDexPrice = new DexPrice('chainlink-oracles-goerli.csv', 5)\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"dex-price.test.js","sourceRoot":"","sources":["../../src/utils/dex-price.test.ts"],"names":[],"mappings":";;AAAA,2CAA8D;AAC9D,6CAAkD;AAClD,4DAAmE;AAEnE,+BAA6B;AAE7B,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,eAAK,CAAC,KAAK,EAAE,CAAA;IACb,oBAAoB;IAEpB,MAAM,aAAa,GAAG,IAAA,wCAAwB,EAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;IAE1D,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;IAE/C,MAAM,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,IAAI,GAAG,MAAM,4BAAgB,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAC9D,IAAA,aAAM,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA;QAEjC,MAAM,QAAQ,GAAG,MAAM,4BAAgB,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAClE,IAAA,aAAM,EAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,GAAG,GAAG,MAAM,0BAAc,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QACzD,IAAA,aAAM,EAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA","sourcesContent":["import { EthereumDexPrice, GoerliDexPrice } from './dex-price'\nimport { State, Endpoints } from '@sentio/runtime'\nimport { loadTestProvidersFromEnv } from '../testing/test-provider'\n\nimport { expect } from 'chai'\n\ndescribe('dex price tests', () => {\n State.reset()\n // Endpoints.reset()\n\n const haveProviders = loadTestProvidersFromEnv(['1', '5'])\n\n const testIf = haveProviders ? test : test.skip\n\n testIf('get price at mainnet', async () => {\n const usdc = await EthereumDexPrice.getPrice('usdc', 15677823)\n expect(usdc.price).eq(0.99991649)\n\n const compound = await EthereumDexPrice.getPrice('COMP', 15677823)\n expect(compound.price).eq(60.27)\n })\n\n testIf('get price at goerli', async () => {\n const dai = await GoerliDexPrice.getPrice('DAI', 7712734)\n expect(dai.price).eq(0.99971281)\n })\n})\n"]}
1
+ {"version":3,"file":"dex-price.test.js","sourceRoot":"","sources":["../../src/utils/dex-price.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACjE,OAAO,EAAE,KAAK,EAAa,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAE9D,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAE7B,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,KAAK,CAAC,KAAK,EAAE,CAAA;IACb,oBAAoB;IAEpB,MAAM,aAAa,GAAG,wBAAwB,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;IAE1D,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;IAE/C,MAAM,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAC9D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA;QAEjC,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAClE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QACzD,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA","sourcesContent":["import { EthereumDexPrice, GoerliDexPrice } from './dex-price.js'\nimport { State, Endpoints } from '@sentio/runtime'\nimport { loadTestProvidersFromEnv } from '@sentio/sdk/testing'\n\nimport { expect } from 'chai'\n\ndescribe('dex price tests', () => {\n State.reset()\n // Endpoints.reset()\n\n const haveProviders = loadTestProvidersFromEnv(['1', '5'])\n\n const testIf = haveProviders ? test : test.skip\n\n testIf('get price at mainnet', async () => {\n const usdc = await EthereumDexPrice.getPrice('usdc', 15677823)\n expect(usdc.price).eq(0.99991649)\n\n const compound = await EthereumDexPrice.getPrice('COMP', 15677823)\n expect(compound.price).eq(60.27)\n })\n\n testIf('get price at goerli', async () => {\n const dai = await GoerliDexPrice.getPrice('DAI', 7712734)\n expect(dai.price).eq(0.99971281)\n })\n})\n"]}