@sentio/sdk 1.0.0-development → 1.0.0-rc.2

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 (609) hide show
  1. package/LICENSE +55 -0
  2. package/lib/aptos/api.d.ts +2 -0
  3. package/lib/aptos/api.js +14 -0
  4. package/lib/aptos/api.js.map +1 -0
  5. package/lib/aptos/aptos-plugin.d.ts +14 -0
  6. package/lib/aptos/aptos-plugin.js +190 -0
  7. package/lib/aptos/aptos-plugin.js.map +1 -0
  8. package/lib/aptos/aptos-processor.d.ts +75 -0
  9. package/lib/aptos/aptos-processor.js +193 -0
  10. package/lib/aptos/aptos-processor.js.map +1 -0
  11. package/lib/aptos/context.d.ts +22 -0
  12. package/lib/aptos/context.js +69 -0
  13. package/lib/aptos/context.js.map +1 -0
  14. package/lib/aptos/index.d.ts +9 -0
  15. package/lib/aptos/index.js +34 -0
  16. package/lib/aptos/index.js.map +1 -0
  17. package/lib/aptos/models.d.ts +23 -0
  18. package/lib/aptos/models.js +3 -0
  19. package/lib/aptos/models.js.map +1 -0
  20. package/lib/aptos/network.d.ts +14 -0
  21. package/lib/aptos/network.js +46 -0
  22. package/lib/aptos/network.js.map +1 -0
  23. package/lib/aptos/runtime.d.ts +2 -0
  24. package/lib/aptos/runtime.js +16 -0
  25. package/lib/aptos/runtime.js.map +1 -0
  26. package/lib/aptos/type-registry.d.ts +21 -0
  27. package/lib/aptos/type-registry.js +156 -0
  28. package/lib/aptos/type-registry.js.map +1 -0
  29. package/lib/aptos/types.d.ts +9 -0
  30. package/lib/aptos/types.js +135 -0
  31. package/lib/aptos/types.js.map +1 -0
  32. package/{dist/numberish.test.d.ts → lib/aptos/types.test.d.ts} +0 -0
  33. package/lib/aptos/types.test.js.map +1 -0
  34. package/lib/aptos/utils.d.ts +7 -0
  35. package/lib/aptos/utils.js +27 -0
  36. package/lib/aptos/utils.js.map +1 -0
  37. package/lib/aptos-codegen/codegen.d.ts +23 -0
  38. package/lib/aptos-codegen/codegen.js +364 -0
  39. package/lib/aptos-codegen/codegen.js.map +1 -0
  40. package/lib/aptos-codegen/typegen.d.ts +17 -0
  41. package/lib/aptos-codegen/typegen.js +142 -0
  42. package/lib/aptos-codegen/typegen.js.map +1 -0
  43. package/lib/binds.d.ts +12 -0
  44. package/lib/binds.js +38 -0
  45. package/lib/binds.js.map +1 -0
  46. package/lib/builtin/aptos/0x1.d.ts +1913 -0
  47. package/lib/builtin/aptos/0x1.js +2748 -0
  48. package/lib/builtin/aptos/0x1.js.map +1 -0
  49. package/lib/builtin/aptos/0x3.d.ts +482 -0
  50. package/lib/builtin/aptos/0x3.js +526 -0
  51. package/lib/builtin/aptos/0x3.js.map +1 -0
  52. package/lib/builtin/aptos/index.d.ts +2 -0
  53. package/{dist/builtin/internal → lib/builtin/aptos}/index.js +3 -4
  54. package/lib/builtin/aptos/index.js.map +1 -0
  55. package/lib/builtin/eacaggregatorproxy/index.d.ts +2 -0
  56. package/lib/builtin/eacaggregatorproxy/index.js +22 -0
  57. package/lib/builtin/eacaggregatorproxy/index.js.map +1 -0
  58. package/lib/builtin/eacaggregatorproxy/test-utils.d.ts +6 -0
  59. package/lib/builtin/eacaggregatorproxy/test-utils.js +57 -0
  60. package/lib/builtin/eacaggregatorproxy/test-utils.js.map +1 -0
  61. package/lib/builtin/erc1155/index.d.ts +2 -0
  62. package/lib/builtin/erc1155/index.js +22 -0
  63. package/lib/builtin/erc1155/index.js.map +1 -0
  64. package/lib/builtin/erc1155/test-utils.d.ts +6 -0
  65. package/lib/builtin/erc1155/test-utils.js +57 -0
  66. package/lib/builtin/erc1155/test-utils.js.map +1 -0
  67. package/{dist → lib}/builtin/erc20/index.d.ts +1 -1
  68. package/{dist → lib}/builtin/erc20/index.js +1 -1
  69. package/lib/builtin/erc20/index.js.map +1 -0
  70. package/lib/builtin/erc20/test-utils.d.ts +5 -0
  71. package/lib/builtin/erc20/test-utils.js +46 -0
  72. package/lib/builtin/erc20/test-utils.js.map +1 -0
  73. package/lib/builtin/erc20bytes/index.d.ts +2 -0
  74. package/lib/builtin/erc20bytes/index.js +22 -0
  75. package/lib/builtin/erc20bytes/index.js.map +1 -0
  76. package/lib/builtin/erc20bytes/test-utils.d.ts +4 -0
  77. package/lib/builtin/erc20bytes/test-utils.js +35 -0
  78. package/lib/builtin/erc20bytes/test-utils.js.map +1 -0
  79. package/lib/builtin/erc721/index.d.ts +2 -0
  80. package/lib/builtin/erc721/index.js +22 -0
  81. package/lib/builtin/erc721/index.js.map +1 -0
  82. package/lib/builtin/erc721/test-utils.d.ts +5 -0
  83. package/lib/builtin/erc721/test-utils.js +46 -0
  84. package/lib/builtin/erc721/test-utils.js.map +1 -0
  85. package/lib/builtin/index.d.ts +6 -0
  86. package/lib/builtin/index.js +33 -0
  87. package/lib/builtin/index.js.map +1 -0
  88. package/lib/builtin/internal/EACAggregatorProxy.d.ts +460 -0
  89. package/lib/builtin/internal/EACAggregatorProxy.js +3 -0
  90. package/lib/builtin/internal/EACAggregatorProxy.js.map +1 -0
  91. package/lib/builtin/internal/ERC1155.d.ts +199 -0
  92. package/lib/builtin/internal/ERC1155.js +3 -0
  93. package/lib/builtin/internal/ERC1155.js.map +1 -0
  94. package/lib/builtin/internal/ERC20.d.ts +307 -0
  95. package/{dist/builtin/internal/Erc20.js → lib/builtin/internal/ERC20.js} +1 -1
  96. package/lib/builtin/internal/ERC20.js.map +1 -0
  97. package/{dist/builtin/internal/Erc20.d.ts → lib/builtin/internal/ERC20Bytes.d.ts} +62 -46
  98. package/lib/builtin/internal/ERC20Bytes.js +3 -0
  99. package/lib/builtin/internal/ERC20Bytes.js.map +1 -0
  100. package/lib/builtin/internal/ERC721.d.ts +252 -0
  101. package/lib/builtin/internal/ERC721.js +3 -0
  102. package/lib/builtin/internal/ERC721.js.map +1 -0
  103. package/lib/builtin/internal/WETH9.d.ts +221 -0
  104. package/lib/builtin/internal/WETH9.js +3 -0
  105. package/lib/builtin/internal/WETH9.js.map +1 -0
  106. package/{dist → lib}/builtin/internal/common.d.ts +0 -0
  107. package/{dist → lib}/builtin/internal/common.js +0 -0
  108. package/lib/builtin/internal/common.js.map +1 -0
  109. package/lib/builtin/internal/eacaggregatorproxy_processor.d.ts +294 -0
  110. package/lib/builtin/internal/eacaggregatorproxy_processor.js +761 -0
  111. package/lib/builtin/internal/eacaggregatorproxy_processor.js.map +1 -0
  112. package/lib/builtin/internal/erc1155_processor.d.ts +126 -0
  113. package/lib/builtin/internal/erc1155_processor.js +313 -0
  114. package/lib/builtin/internal/erc1155_processor.js.map +1 -0
  115. package/lib/builtin/internal/erc20_processor.d.ts +166 -0
  116. package/lib/builtin/internal/erc20_processor.js +418 -0
  117. package/lib/builtin/internal/erc20_processor.js.map +1 -0
  118. package/lib/builtin/internal/erc20bytes_processor.d.ts +101 -0
  119. package/lib/builtin/internal/erc20bytes_processor.js +311 -0
  120. package/lib/builtin/internal/erc20bytes_processor.js.map +1 -0
  121. package/lib/builtin/internal/erc721_processor.d.ts +155 -0
  122. package/lib/builtin/internal/erc721_processor.js +437 -0
  123. package/lib/builtin/internal/erc721_processor.js.map +1 -0
  124. package/lib/builtin/internal/factories/EACAggregatorProxy__factory.d.ts +46 -0
  125. package/lib/builtin/internal/factories/EACAggregatorProxy__factory.js +528 -0
  126. package/lib/builtin/internal/factories/EACAggregatorProxy__factory.js.map +1 -0
  127. package/{dist/builtin/internal/factories/Erc20__factory.d.ts → lib/builtin/internal/factories/ERC1155__factory.d.ts} +4 -4
  128. package/lib/builtin/internal/factories/ERC1155__factory.js +333 -0
  129. package/lib/builtin/internal/factories/ERC1155__factory.js.map +1 -0
  130. package/lib/builtin/internal/factories/ERC20Bytes__factory.d.ts +48 -0
  131. package/{dist/builtin/internal/factories/Erc20__factory.js → lib/builtin/internal/factories/ERC20Bytes__factory.js} +128 -89
  132. package/lib/builtin/internal/factories/ERC20Bytes__factory.js.map +1 -0
  133. package/lib/builtin/internal/factories/ERC20__factory.d.ts +42 -0
  134. package/lib/builtin/internal/factories/ERC20__factory.js +405 -0
  135. package/lib/builtin/internal/factories/ERC20__factory.js.map +1 -0
  136. package/lib/builtin/internal/factories/ERC721__factory.d.ts +51 -0
  137. package/lib/builtin/internal/factories/ERC721__factory.js +365 -0
  138. package/lib/builtin/internal/factories/ERC721__factory.js.map +1 -0
  139. package/lib/builtin/internal/factories/WETH9__factory.d.ts +45 -0
  140. package/lib/builtin/internal/factories/WETH9__factory.js +298 -0
  141. package/lib/builtin/internal/factories/WETH9__factory.js.map +1 -0
  142. package/lib/builtin/internal/factories/index.d.ts +6 -0
  143. package/lib/builtin/internal/factories/index.js +19 -0
  144. package/lib/builtin/internal/factories/index.js.map +1 -0
  145. package/lib/builtin/internal/index.d.ts +13 -0
  146. package/lib/builtin/internal/index.js +40 -0
  147. package/lib/builtin/internal/index.js.map +1 -0
  148. package/lib/builtin/internal/weth9_processor.d.ts +115 -0
  149. package/lib/builtin/internal/weth9_processor.js +353 -0
  150. package/lib/builtin/internal/weth9_processor.js.map +1 -0
  151. package/lib/builtin/solana/index.d.ts +2 -0
  152. package/lib/builtin/solana/index.js +19 -0
  153. package/lib/builtin/solana/index.js.map +1 -0
  154. package/lib/builtin/solana/spl-token-processor.d.ts +39 -0
  155. package/lib/builtin/solana/spl-token-processor.js +258 -0
  156. package/lib/builtin/solana/spl-token-processor.js.map +1 -0
  157. package/lib/builtin/solana/types.d.ts +427 -0
  158. package/lib/builtin/solana/types.js +203 -0
  159. package/lib/builtin/solana/types.js.map +1 -0
  160. package/lib/builtin/solana/wormhole-processor.d.ts +16 -0
  161. package/{dist/test-case/types/wormhole_processor.js → lib/builtin/solana/wormhole-processor.js} +57 -54
  162. package/lib/builtin/solana/wormhole-processor.js.map +1 -0
  163. package/lib/builtin/weth9/index.d.ts +2 -0
  164. package/lib/builtin/weth9/index.js +22 -0
  165. package/lib/builtin/weth9/index.js.map +1 -0
  166. package/lib/builtin/weth9/test-utils.d.ts +6 -0
  167. package/lib/builtin/weth9/test-utils.js +57 -0
  168. package/lib/builtin/weth9/test-utils.js.map +1 -0
  169. package/lib/chain-config.d.ts +6 -0
  170. package/lib/chain-config.js +3 -0
  171. package/lib/chain-config.js.map +1 -0
  172. package/lib/core/account-processor.d.ts +58 -0
  173. package/lib/core/account-processor.js +147 -0
  174. package/lib/core/account-processor.js.map +1 -0
  175. package/lib/core/base-context.d.ts +12 -0
  176. package/lib/core/base-context.js +25 -0
  177. package/lib/core/base-context.js.map +1 -0
  178. package/lib/core/base-processor-template.d.ts +42 -0
  179. package/{dist → lib/core}/base-processor-template.js +32 -6
  180. package/lib/core/base-processor-template.js.map +1 -0
  181. package/lib/core/base-processor.d.ts +39 -0
  182. package/lib/core/base-processor.js +153 -0
  183. package/lib/core/base-processor.js.map +1 -0
  184. package/lib/core/big-decimal.d.ts +1 -0
  185. package/lib/core/big-decimal.js +6 -0
  186. package/lib/core/big-decimal.js.map +1 -0
  187. package/{dist → lib/core}/bind-options.d.ts +5 -0
  188. package/{dist → lib/core}/bind-options.js +10 -1
  189. package/lib/core/bind-options.js.map +1 -0
  190. package/lib/core/context.d.ts +55 -0
  191. package/lib/core/context.js +162 -0
  192. package/lib/core/context.js.map +1 -0
  193. package/lib/core/eth-plugin.d.ts +14 -0
  194. package/lib/core/eth-plugin.js +221 -0
  195. package/lib/core/eth-plugin.js.map +1 -0
  196. package/lib/core/event-tracker.d.ts +26 -0
  197. package/lib/core/event-tracker.js +54 -0
  198. package/lib/core/event-tracker.js.map +1 -0
  199. package/lib/core/exporter.d.ts +13 -0
  200. package/lib/core/exporter.js +30 -0
  201. package/lib/core/exporter.js.map +1 -0
  202. package/lib/core/generic-processor.d.ts +10 -0
  203. package/lib/core/generic-processor.js +32 -0
  204. package/lib/core/generic-processor.js.map +1 -0
  205. package/{dist/test-case/erc20-template.test.d.ts → lib/core/generic-processor.test.d.ts} +0 -0
  206. package/lib/core/generic-processor.test.js.map +1 -0
  207. package/lib/core/index.d.ts +17 -0
  208. package/lib/core/index.js +46 -0
  209. package/lib/core/index.js.map +1 -0
  210. package/lib/core/logger.d.ts +14 -0
  211. package/lib/core/logger.js +42 -0
  212. package/lib/core/logger.js.map +1 -0
  213. package/lib/core/metadata.d.ts +7 -0
  214. package/lib/core/metadata.js +12 -0
  215. package/lib/core/metadata.js.map +1 -0
  216. package/lib/core/meter.d.ts +59 -0
  217. package/lib/core/meter.js +166 -0
  218. package/lib/core/meter.js.map +1 -0
  219. package/{dist/test-case/erc20.test.d.ts → lib/core/meter.test.d.ts} +0 -0
  220. package/lib/core/meter.test.js.map +1 -0
  221. package/lib/core/numberish.d.ts +8 -0
  222. package/lib/core/numberish.js +115 -0
  223. package/lib/core/numberish.js.map +1 -0
  224. package/{dist/test-case/mirrorworld.d.ts → lib/core/numberish.test.d.ts} +0 -0
  225. package/lib/core/numberish.test.js.map +1 -0
  226. package/lib/core/solana-context.d.ts +12 -0
  227. package/lib/core/solana-context.js +34 -0
  228. package/lib/core/solana-context.js.map +1 -0
  229. package/lib/core/solana-options.d.ts +9 -0
  230. package/lib/core/solana-options.js +13 -0
  231. package/lib/core/solana-options.js.map +1 -0
  232. package/lib/core/solana-plugin.d.ts +9 -0
  233. package/lib/core/solana-plugin.js +79 -0
  234. package/lib/core/solana-plugin.js.map +1 -0
  235. package/lib/core/solana-processor.d.ts +41 -0
  236. package/lib/core/solana-processor.js +90 -0
  237. package/lib/core/solana-processor.js.map +1 -0
  238. package/lib/core/sui-plugin.d.ts +8 -0
  239. package/lib/core/sui-plugin.js +46 -0
  240. package/lib/core/sui-plugin.js.map +1 -0
  241. package/lib/core/sui-processor.d.ts +26 -0
  242. package/lib/core/sui-processor.js +59 -0
  243. package/lib/core/sui-processor.js.map +1 -0
  244. package/lib/core/trace.d.ts +35 -0
  245. package/lib/core/trace.js +43 -0
  246. package/lib/core/trace.js.map +1 -0
  247. package/lib/endpoints.d.ts +6 -0
  248. package/lib/endpoints.js +11 -0
  249. package/lib/endpoints.js.map +1 -0
  250. package/lib/error.d.ts +7 -0
  251. package/lib/error.js +43 -0
  252. package/lib/error.js.map +1 -0
  253. package/{dist → lib}/gen/builtin.d.ts +0 -0
  254. package/{dist → lib}/gen/builtin.js +0 -0
  255. package/lib/gen/builtin.js.map +1 -0
  256. package/lib/gen/chainquery/protos/chainquery.d.ts +400 -0
  257. package/lib/gen/chainquery/protos/chainquery.js +972 -0
  258. package/lib/gen/chainquery/protos/chainquery.js.map +1 -0
  259. package/{dist → lib}/gen/google/protobuf/empty.d.ts +0 -0
  260. package/{dist → lib}/gen/google/protobuf/empty.js +0 -0
  261. package/lib/gen/google/protobuf/empty.js.map +1 -0
  262. package/lib/gen/google/protobuf/struct.d.ts +73 -0
  263. package/lib/gen/google/protobuf/struct.js +371 -0
  264. package/lib/gen/google/protobuf/struct.js.map +1 -0
  265. package/lib/gen/google/protobuf/timestamp.d.ts +18 -0
  266. package/lib/gen/google/protobuf/timestamp.js +71 -0
  267. package/lib/gen/google/protobuf/timestamp.js.map +1 -0
  268. package/lib/gen/index.d.ts +2 -0
  269. package/lib/gen/index.js +19 -0
  270. package/lib/gen/index.js.map +1 -0
  271. package/lib/gen/processor/protos/processor.d.ts +826 -0
  272. package/lib/gen/processor/protos/processor.js +3988 -0
  273. package/lib/gen/processor/protos/processor.js.map +1 -0
  274. package/lib/gen/service/price/protos/price.d.ts +85 -0
  275. package/lib/gen/service/price/protos/price.js +269 -0
  276. package/lib/gen/service/price/protos/price.js.map +1 -0
  277. package/lib/index.d.ts +7 -0
  278. package/lib/index.js +48 -0
  279. package/lib/index.js.map +1 -0
  280. package/lib/loader.d.ts +5 -0
  281. package/lib/loader.js +30 -0
  282. package/lib/loader.js.map +1 -0
  283. package/lib/plugin.d.ts +15 -0
  284. package/lib/plugin.js +32 -0
  285. package/lib/plugin.js.map +1 -0
  286. package/{dist → lib}/processor-runner.d.ts +0 -0
  287. package/lib/processor-runner.js +102 -0
  288. package/lib/processor-runner.js.map +1 -0
  289. package/lib/promise-or-void.d.ts +1 -0
  290. package/lib/promise-or-void.js +3 -0
  291. package/lib/promise-or-void.js.map +1 -0
  292. package/{dist → lib}/provider.d.ts +2 -1
  293. package/{dist → lib}/provider.js +19 -9
  294. package/lib/provider.js.map +1 -0
  295. package/lib/service.d.ts +26 -0
  296. package/lib/service.js +225 -0
  297. package/lib/service.js.map +1 -0
  298. package/lib/solana-codegen/codegen.d.ts +1 -0
  299. package/lib/solana-codegen/codegen.js +113 -0
  300. package/lib/solana-codegen/codegen.js.map +1 -0
  301. package/lib/state/processor-state.d.ts +3 -0
  302. package/lib/state/processor-state.js +8 -0
  303. package/lib/state/processor-state.js.map +1 -0
  304. package/lib/state/state-storage.d.ts +17 -0
  305. package/lib/state/state-storage.js +60 -0
  306. package/lib/state/state-storage.js.map +1 -0
  307. package/{dist/test-case/solana.test.d.ts → lib/state/state-storage.test.d.ts} +0 -0
  308. package/lib/state/state-storage.test.js.map +1 -0
  309. package/lib/target-ethers-sentio/event-handler.d.ts +3 -0
  310. package/lib/target-ethers-sentio/event-handler.js +35 -0
  311. package/lib/target-ethers-sentio/event-handler.js.map +1 -0
  312. package/{dist/target-ethers-sentio/codegen.d.ts → lib/target-ethers-sentio/file.d.ts} +1 -0
  313. package/lib/target-ethers-sentio/file.js +226 -0
  314. package/lib/target-ethers-sentio/file.js.map +1 -0
  315. package/lib/target-ethers-sentio/functions-handler.d.ts +3 -0
  316. package/lib/target-ethers-sentio/functions-handler.js +50 -0
  317. package/lib/target-ethers-sentio/functions-handler.js.map +1 -0
  318. package/{dist → lib}/target-ethers-sentio/index.d.ts +1 -0
  319. package/{dist → lib}/target-ethers-sentio/index.js +16 -3
  320. package/{dist → lib}/target-ethers-sentio/index.js.map +1 -1
  321. package/lib/target-ethers-sentio/types.d.ts +4 -0
  322. package/lib/target-ethers-sentio/types.js +46 -0
  323. package/lib/target-ethers-sentio/types.js.map +1 -0
  324. package/lib/target-ethers-sentio/view-function.d.ts +5 -0
  325. package/lib/target-ethers-sentio/view-function.js +74 -0
  326. package/lib/target-ethers-sentio/view-function.js.map +1 -0
  327. package/{dist/cli/cli.d.ts → lib/test-abi-code-gen.d.ts} +0 -0
  328. package/lib/test-abi-code-gen.js +20 -0
  329. package/lib/test-abi-code-gen.js.map +1 -0
  330. package/lib/testing/index.d.ts +2 -0
  331. package/lib/testing/index.js +11 -0
  332. package/lib/testing/index.js.map +1 -0
  333. package/lib/testing/metric-utils.d.ts +5 -0
  334. package/lib/testing/metric-utils.js +50 -0
  335. package/lib/testing/metric-utils.js.map +1 -0
  336. package/lib/testing/test-processor-server.d.ts +42 -0
  337. package/lib/testing/test-processor-server.js +293 -0
  338. package/lib/testing/test-processor-server.js.map +1 -0
  339. package/lib/testing/test-provider.d.ts +1 -0
  340. package/lib/testing/test-provider.js +33 -0
  341. package/lib/testing/test-provider.js.map +1 -0
  342. package/lib/utils/chain.d.ts +89 -0
  343. package/lib/utils/chain.js +128 -0
  344. package/lib/utils/chain.js.map +1 -0
  345. package/lib/utils/chainlink-oracles-goerli.csv +8 -0
  346. package/lib/utils/chainlink-oracles.csv +217 -0
  347. package/lib/utils/conversion.d.ts +6 -0
  348. package/lib/utils/conversion.js +27 -0
  349. package/lib/utils/conversion.js.map +1 -0
  350. package/lib/utils/dex-price.d.ts +22 -0
  351. package/lib/utils/dex-price.js +114 -0
  352. package/lib/utils/dex-price.js.map +1 -0
  353. package/{dist/test-case/wormhole-token-bridge.d.ts → lib/utils/dex-price.test.d.ts} +0 -0
  354. package/lib/utils/dex-price.test.js.map +1 -0
  355. package/lib/utils/erc20.test.d.ts +1 -0
  356. package/lib/utils/erc20.test.js.map +1 -0
  357. package/lib/utils/index.d.ts +4 -0
  358. package/lib/utils/index.js +31 -0
  359. package/lib/utils/index.js.map +1 -0
  360. package/lib/utils/price.d.ts +52 -0
  361. package/lib/utils/price.js +86 -0
  362. package/lib/utils/price.js.map +1 -0
  363. package/lib/utils/token.d.ts +15 -0
  364. package/lib/utils/token.js +60 -0
  365. package/lib/utils/token.js.map +1 -0
  366. package/package.json +43 -42
  367. package/src/abis/EACAggregatorProxy.json +227 -0
  368. package/src/abis/ERC1155.json +314 -0
  369. package/src/abis/ERC20.json +174 -0
  370. package/src/abis/ERC20Bytes.json +236 -0
  371. package/src/abis/ERC721.json +346 -0
  372. package/src/abis/WETH9.json +153 -0
  373. package/src/abis/aptos/0x1.json +9205 -0
  374. package/src/abis/aptos/0x3.json +1515 -0
  375. package/src/aptos/api.ts +11 -0
  376. package/src/aptos/aptos-plugin.ts +217 -0
  377. package/src/aptos/aptos-processor.ts +305 -0
  378. package/src/aptos/context.ts +75 -0
  379. package/src/aptos/index.ts +10 -0
  380. package/src/aptos/models.ts +34 -0
  381. package/src/aptos/network.ts +42 -0
  382. package/src/aptos/runtime.ts +13 -0
  383. package/src/aptos/type-registry.ts +187 -0
  384. package/src/aptos/types.ts +149 -0
  385. package/src/aptos/utils.ts +26 -0
  386. package/src/aptos-codegen/codegen.ts +428 -0
  387. package/src/aptos-codegen/tsconfig.json +9 -0
  388. package/src/aptos-codegen/typegen.ts +153 -0
  389. package/src/binds.ts +45 -0
  390. package/src/builtin/aptos/0x1.ts +4210 -0
  391. package/src/builtin/aptos/0x3.ts +888 -0
  392. package/src/builtin/aptos/index.ts +2 -0
  393. package/src/builtin/eacaggregatorproxy/index.ts +6 -0
  394. package/src/builtin/eacaggregatorproxy/test-utils.ts +89 -0
  395. package/src/builtin/erc1155/index.ts +6 -0
  396. package/src/builtin/erc1155/test-utils.ts +89 -0
  397. package/src/builtin/erc20/index.ts +6 -0
  398. package/src/builtin/erc20/test-utils.ts +71 -0
  399. package/src/builtin/erc20bytes/index.ts +6 -0
  400. package/src/builtin/erc20bytes/test-utils.ts +53 -0
  401. package/src/builtin/erc721/index.ts +6 -0
  402. package/src/builtin/erc721/test-utils.ts +71 -0
  403. package/src/builtin/index.ts +7 -0
  404. package/src/builtin/internal/EACAggregatorProxy.ts +861 -0
  405. package/src/builtin/internal/ERC1155.ts +529 -0
  406. package/src/builtin/internal/ERC20.ts +679 -0
  407. package/src/builtin/internal/ERC20Bytes.ts +384 -0
  408. package/src/builtin/internal/ERC721.ts +639 -0
  409. package/src/builtin/internal/WETH9.ts +480 -0
  410. package/src/builtin/internal/common.ts +46 -0
  411. package/src/builtin/internal/eacaggregatorproxy_processor.ts +1219 -0
  412. package/src/builtin/internal/erc1155_processor.ts +534 -0
  413. package/src/builtin/internal/erc20_processor.ts +663 -0
  414. package/src/builtin/internal/erc20bytes_processor.ts +474 -0
  415. package/src/builtin/internal/erc721_processor.ts +686 -0
  416. package/src/builtin/internal/factories/EACAggregatorProxy__factory.ts +534 -0
  417. package/src/builtin/internal/factories/ERC1155__factory.ts +336 -0
  418. package/src/builtin/internal/factories/ERC20Bytes__factory.ts +258 -0
  419. package/src/builtin/internal/factories/ERC20__factory.ts +405 -0
  420. package/src/builtin/internal/factories/ERC721__factory.ts +365 -0
  421. package/src/builtin/internal/factories/WETH9__factory.ts +298 -0
  422. package/src/builtin/internal/factories/index.ts +9 -0
  423. package/src/builtin/internal/index.ts +16 -0
  424. package/src/builtin/internal/weth9_processor.ts +536 -0
  425. package/src/builtin/solana/index.ts +2 -0
  426. package/src/builtin/solana/spl-token-processor.ts +298 -0
  427. package/src/builtin/solana/types.ts +279 -0
  428. package/src/builtin/solana/wormhole-processor.ts +178 -0
  429. package/src/builtin/weth9/index.ts +6 -0
  430. package/src/builtin/weth9/test-utils.ts +89 -0
  431. package/src/chain-config.ts +6 -0
  432. package/src/core/account-processor.ts +217 -0
  433. package/src/core/base-context.ts +28 -0
  434. package/src/core/base-processor-template.ts +150 -0
  435. package/src/core/base-processor.ts +217 -0
  436. package/src/core/big-decimal.ts +1 -0
  437. package/src/core/bind-options.ts +45 -0
  438. package/src/core/context.ts +183 -0
  439. package/src/core/eth-plugin.ts +255 -0
  440. package/src/core/event-tracker.ts +69 -0
  441. package/src/core/exporter.ts +32 -0
  442. package/src/core/generic-processor.ts +34 -0
  443. package/src/core/index.ts +22 -0
  444. package/src/core/logger.ts +49 -0
  445. package/src/core/metadata.ts +11 -0
  446. package/src/core/meter.ts +179 -0
  447. package/src/core/numberish.ts +121 -0
  448. package/src/core/solana-context.ts +35 -0
  449. package/src/core/solana-options.ts +10 -0
  450. package/src/core/solana-plugin.ts +97 -0
  451. package/src/core/solana-processor.ts +109 -0
  452. package/src/core/sui-plugin.ts +54 -0
  453. package/src/core/sui-processor.ts +65 -0
  454. package/src/core/trace.ts +86 -0
  455. package/src/endpoints.ts +9 -0
  456. package/src/error.ts +45 -0
  457. package/src/gen/builtin.ts +22 -0
  458. package/src/gen/chainquery/protos/chainquery.ts +1212 -0
  459. package/src/gen/google/protobuf/empty.ts +58 -0
  460. package/src/gen/google/protobuf/struct.ts +422 -0
  461. package/src/gen/google/protobuf/timestamp.ts +85 -0
  462. package/src/gen/index.ts +3 -0
  463. package/src/gen/processor/protos/processor.ts +4619 -0
  464. package/src/gen/service/price/protos/price.ts +329 -0
  465. package/src/index.ts +13 -0
  466. package/src/loader.ts +24 -0
  467. package/src/plugin.ts +41 -0
  468. package/src/processor-runner.ts +93 -0
  469. package/src/promise-or-void.ts +1 -0
  470. package/src/provider.ts +74 -0
  471. package/src/service.ts +255 -0
  472. package/src/solana-codegen/codegen.ts +116 -0
  473. package/src/state/processor-state.ts +3 -0
  474. package/src/state/state-storage.ts +65 -0
  475. package/src/target-ethers-sentio/event-handler.ts +31 -0
  476. package/src/target-ethers-sentio/file.ts +242 -0
  477. package/src/target-ethers-sentio/functions-handler.ts +57 -0
  478. package/src/target-ethers-sentio/index.ts +60 -0
  479. package/src/target-ethers-sentio/tsconfig.json +9 -0
  480. package/src/target-ethers-sentio/types.ts +42 -0
  481. package/src/target-ethers-sentio/view-function.ts +79 -0
  482. package/src/test-abi-code-gen.ts +16 -0
  483. package/src/testing/index.ts +4 -0
  484. package/src/testing/metric-utils.ts +48 -0
  485. package/src/testing/test-processor-server.ts +334 -0
  486. package/src/testing/test-provider.ts +33 -0
  487. package/src/types/global.d.ts +15 -0
  488. package/src/utils/chain.ts +127 -0
  489. package/src/utils/chainlink-oracles-goerli.csv +8 -0
  490. package/src/utils/chainlink-oracles.csv +217 -0
  491. package/src/utils/conversion.ts +27 -0
  492. package/src/utils/dex-price.ts +136 -0
  493. package/src/utils/index.ts +4 -0
  494. package/src/utils/price.ts +95 -0
  495. package/src/utils/token.ts +70 -0
  496. package/dist/base-processor-template.d.ts +0 -20
  497. package/dist/base-processor-template.js.map +0 -1
  498. package/dist/base-processor.d.ts +0 -22
  499. package/dist/base-processor.js +0 -103
  500. package/dist/base-processor.js.map +0 -1
  501. package/dist/bind-options.js.map +0 -1
  502. package/dist/binds.d.ts +0 -10
  503. package/dist/binds.js +0 -58
  504. package/dist/binds.js.map +0 -1
  505. package/dist/builtin/erc20/index.js.map +0 -1
  506. package/dist/builtin/internal/Erc20.js.map +0 -1
  507. package/dist/builtin/internal/common.js.map +0 -1
  508. package/dist/builtin/internal/erc20_processor.d.ts +0 -38
  509. package/dist/builtin/internal/erc20_processor.js +0 -209
  510. package/dist/builtin/internal/erc20_processor.js.map +0 -1
  511. package/dist/builtin/internal/factories/Erc20__factory.js.map +0 -1
  512. package/dist/builtin/internal/factories/index.d.ts +0 -1
  513. package/dist/builtin/internal/factories/index.js +0 -9
  514. package/dist/builtin/internal/factories/index.js.map +0 -1
  515. package/dist/builtin/internal/index.d.ts +0 -3
  516. package/dist/builtin/internal/index.js.map +0 -1
  517. package/dist/cli/build.d.ts +0 -3
  518. package/dist/cli/build.js +0 -161
  519. package/dist/cli/build.js.map +0 -1
  520. package/dist/cli/cli.js +0 -212
  521. package/dist/cli/cli.js.map +0 -1
  522. package/dist/cli/config.d.ts +0 -14
  523. package/dist/cli/config.js +0 -24
  524. package/dist/cli/config.js.map +0 -1
  525. package/dist/cli/key.d.ts +0 -2
  526. package/dist/cli/key.js +0 -44
  527. package/dist/cli/key.js.map +0 -1
  528. package/dist/cli/solana-code-gen.d.ts +0 -2
  529. package/dist/cli/solana-code-gen.js +0 -19
  530. package/dist/cli/solana-code-gen.js.map +0 -1
  531. package/dist/cli/upload.d.ts +0 -2
  532. package/dist/cli/upload.js +0 -76
  533. package/dist/cli/upload.js.map +0 -1
  534. package/dist/cli/webpack.config.js +0 -41
  535. package/dist/context.d.ts +0 -39
  536. package/dist/context.js +0 -75
  537. package/dist/context.js.map +0 -1
  538. package/dist/contract-namer.d.ts +0 -6
  539. package/dist/contract-namer.js +0 -20
  540. package/dist/contract-namer.js.map +0 -1
  541. package/dist/error.d.ts +0 -2
  542. package/dist/error.js +0 -39
  543. package/dist/error.js.map +0 -1
  544. package/dist/gen/builtin.js.map +0 -1
  545. package/dist/gen/google/protobuf/empty.js.map +0 -1
  546. package/dist/gen/processor/protos/processor.d.ts +0 -598
  547. package/dist/gen/processor/protos/processor.js +0 -2424
  548. package/dist/gen/processor/protos/processor.js.map +0 -1
  549. package/dist/index.d.ts +0 -13
  550. package/dist/index.js +0 -54
  551. package/dist/index.js.map +0 -1
  552. package/dist/meter.d.ts +0 -25
  553. package/dist/meter.js +0 -114
  554. package/dist/meter.js.map +0 -1
  555. package/dist/numberish.d.ts +0 -7
  556. package/dist/numberish.js +0 -74
  557. package/dist/numberish.js.map +0 -1
  558. package/dist/numberish.test.js +0 -54
  559. package/dist/numberish.test.js.map +0 -1
  560. package/dist/processor-runner.js +0 -66
  561. package/dist/processor-runner.js.map +0 -1
  562. package/dist/processor-state.d.ts +0 -16
  563. package/dist/processor-state.js +0 -20
  564. package/dist/processor-state.js.map +0 -1
  565. package/dist/provider.js.map +0 -1
  566. package/dist/service.d.ts +0 -22
  567. package/dist/service.js +0 -361
  568. package/dist/service.js.map +0 -1
  569. package/dist/solana/builtin/spl-token-processor.d.ts +0 -25
  570. package/dist/solana/builtin/spl-token-processor.js +0 -152
  571. package/dist/solana/builtin/spl-token-processor.js.map +0 -1
  572. package/dist/solana-processor.d.ts +0 -28
  573. package/dist/solana-processor.js +0 -79
  574. package/dist/solana-processor.js.map +0 -1
  575. package/dist/target-ethers-sentio/codegen.js +0 -201
  576. package/dist/target-ethers-sentio/codegen.js.map +0 -1
  577. package/dist/test-case/clean-test.d.ts +0 -1
  578. package/dist/test-case/clean-test.js +0 -9
  579. package/dist/test-case/clean-test.js.map +0 -1
  580. package/dist/test-case/erc20-template.d.ts +0 -1
  581. package/dist/test-case/erc20-template.js +0 -23
  582. package/dist/test-case/erc20-template.js.map +0 -1
  583. package/dist/test-case/erc20-template.test.js +0 -69
  584. package/dist/test-case/erc20-template.test.js.map +0 -1
  585. package/dist/test-case/erc20.d.ts +0 -1
  586. package/dist/test-case/erc20.js +0 -42
  587. package/dist/test-case/erc20.js.map +0 -1
  588. package/dist/test-case/erc20.test.js +0 -154
  589. package/dist/test-case/erc20.test.js.map +0 -1
  590. package/dist/test-case/mirrorworld.js +0 -42
  591. package/dist/test-case/mirrorworld.js.map +0 -1
  592. package/dist/test-case/solana.test.js +0 -58
  593. package/dist/test-case/solana.test.js.map +0 -1
  594. package/dist/test-case/types/game_wallet.d.ts +0 -45
  595. package/dist/test-case/types/game_wallet.js +0 -1396
  596. package/dist/test-case/types/game_wallet.js.map +0 -1
  597. package/dist/test-case/types/game_wallet_processor.d.ts +0 -107
  598. package/dist/test-case/types/game_wallet_processor.js +0 -102
  599. package/dist/test-case/types/game_wallet_processor.js.map +0 -1
  600. package/dist/test-case/types/wormhole_processor.d.ts +0 -16
  601. package/dist/test-case/types/wormhole_processor.js.map +0 -1
  602. package/dist/test-case/wormhole-token-bridge.js +0 -7
  603. package/dist/test-case/wormhole-token-bridge.js.map +0 -1
  604. package/dist/utils/chainmap.d.ts +0 -4
  605. package/dist/utils/chainmap.js +0 -95
  606. package/dist/utils/chainmap.js.map +0 -1
  607. package/dist/utils/index.d.ts +0 -1
  608. package/dist/utils/index.js +0 -6
  609. package/dist/utils/index.js.map +0 -1
@@ -0,0 +1,217 @@
1
+ import { BytesLike } from '@ethersproject/bytes'
2
+ import { Block, Log, getNetwork } from '@ethersproject/providers'
3
+ import { BaseContract, Event, EventFilter } from '@ethersproject/contracts'
4
+ import Long from 'long'
5
+
6
+ import { BoundContractView, ContractContext, ContractView } from './context'
7
+ import { AddressType, HandleInterval, ProcessResult } from '../gen'
8
+ import { BindInternalOptions, BindOptions } from './bind-options'
9
+ import { PromiseOrVoid } from '../promise-or-void'
10
+ import { Trace } from './trace'
11
+
12
+ export interface AddressOrTypeEventFilter extends EventFilter {
13
+ addressType?: AddressType
14
+ }
15
+
16
+ export class EventsHandler {
17
+ filters: AddressOrTypeEventFilter[]
18
+ handler: (event: Log) => Promise<ProcessResult>
19
+ }
20
+
21
+ export class TraceHandler {
22
+ signature: string
23
+ handler: (trace: Trace) => Promise<ProcessResult>
24
+ }
25
+
26
+ export class BlockHandlder {
27
+ blockInterval?: HandleInterval
28
+ timeIntervalInMinutes?: HandleInterval
29
+ handler: (block: Block) => Promise<ProcessResult>
30
+ }
31
+
32
+ export abstract class BaseProcessor<
33
+ TContract extends BaseContract,
34
+ TBoundContractView extends BoundContractView<TContract, ContractView<TContract>>
35
+ > {
36
+ blockHandlers: BlockHandlder[] = []
37
+ eventHandlers: EventsHandler[] = []
38
+ traceHandlers: TraceHandler[] = []
39
+
40
+ config: BindInternalOptions
41
+
42
+ constructor(config: BindOptions) {
43
+ this.config = {
44
+ address: config.address,
45
+ name: config.name || '',
46
+ network: config.network ? config.network : 1,
47
+ startBlock: new Long(0),
48
+ }
49
+ if (config.startBlock) {
50
+ if (typeof config.startBlock === 'number') {
51
+ this.config.startBlock = Long.fromNumber(config.startBlock)
52
+ } else {
53
+ this.config.startBlock = config.startBlock
54
+ }
55
+ }
56
+ if (config.endBlock) {
57
+ if (typeof config.endBlock === 'number') {
58
+ this.config.endBlock = Long.fromNumber(config.endBlock)
59
+ } else {
60
+ this.config.endBlock = config.endBlock
61
+ }
62
+ }
63
+ }
64
+
65
+ protected abstract CreateBoundContractView(): TBoundContractView
66
+
67
+ public getChainId(): number {
68
+ return getNetwork(this.config.network).chainId
69
+ }
70
+
71
+ public onEvent(
72
+ handler: (event: Event, ctx: ContractContext<TContract, TBoundContractView>) => PromiseOrVoid,
73
+ filter: EventFilter | EventFilter[]
74
+ ) {
75
+ const chainId = this.getChainId()
76
+
77
+ let _filters: EventFilter[] = []
78
+
79
+ if (Array.isArray(filter)) {
80
+ _filters = filter
81
+ } else {
82
+ _filters.push(filter)
83
+ }
84
+
85
+ const contractView = this.CreateBoundContractView()
86
+ const contractName = this.config.name
87
+ this.eventHandlers.push({
88
+ filters: _filters,
89
+ handler: async function (log) {
90
+ const ctx = new ContractContext<TContract, TBoundContractView>(
91
+ contractName,
92
+ contractView,
93
+ chainId,
94
+ undefined,
95
+ log
96
+ )
97
+ // let event: Event = <Event>deepCopy(log);
98
+ const event: Event = <Event>log
99
+ const parsed = contractView.rawContract.interface.parseLog(log)
100
+ if (parsed) {
101
+ event.args = parsed.args
102
+ event.decode = (data: BytesLike, topics?: Array<any>) => {
103
+ return contractView.rawContract.interface.decodeEventLog(parsed.eventFragment, data, topics)
104
+ }
105
+ event.event = parsed.name
106
+ event.eventSignature = parsed.signature
107
+
108
+ // TODO fix this bug
109
+ await handler(event, ctx)
110
+ return ctx.getProcessResult()
111
+ }
112
+ return ProcessResult.fromPartial({})
113
+ },
114
+ })
115
+ return this
116
+ }
117
+
118
+ public onBlock(handler: (block: Block, ctx: ContractContext<TContract, TBoundContractView>) => PromiseOrVoid) {
119
+ return this.onBlockInterval(handler)
120
+ }
121
+
122
+ public onBlockInterval(
123
+ handler: (block: Block, ctx: ContractContext<TContract, TBoundContractView>) => PromiseOrVoid,
124
+ blockInterval = 1000,
125
+ backfillBlockInterval = 4000
126
+ ) {
127
+ return this.onInterval(handler, undefined, {
128
+ recentInterval: blockInterval,
129
+ backfillInterval: backfillBlockInterval,
130
+ })
131
+ }
132
+
133
+ public onTimeInterval(
134
+ handler: (block: Block, ctx: ContractContext<TContract, TBoundContractView>) => PromiseOrVoid,
135
+ timeIntervalInMinutes = 60,
136
+ backfillTimeIntervalInMinutes = 240
137
+ ) {
138
+ return this.onInterval(
139
+ handler,
140
+ { recentInterval: timeIntervalInMinutes, backfillInterval: backfillTimeIntervalInMinutes },
141
+ undefined
142
+ )
143
+ }
144
+
145
+ public onInterval(
146
+ handler: (block: Block, ctx: ContractContext<TContract, TBoundContractView>) => PromiseOrVoid,
147
+ timeInterval: HandleInterval | undefined,
148
+ blockInterval: HandleInterval | undefined
149
+ ) {
150
+ const chainId = this.getChainId()
151
+ const contractView = this.CreateBoundContractView()
152
+ const contractName = this.config.name
153
+
154
+ this.blockHandlers.push({
155
+ handler: async function (block: Block) {
156
+ const ctx = new ContractContext<TContract, TBoundContractView>(
157
+ contractName,
158
+ contractView,
159
+ chainId,
160
+ block,
161
+ undefined
162
+ )
163
+ await handler(block, ctx)
164
+ return ctx.getProcessResult()
165
+ },
166
+ timeIntervalInMinutes: timeInterval,
167
+ blockInterval: blockInterval,
168
+ })
169
+ return this
170
+ }
171
+
172
+ public onAllEvents(handler: (event: Log, ctx: ContractContext<TContract, TBoundContractView>) => PromiseOrVoid) {
173
+ const _filters: EventFilter[] = []
174
+ const tmpContract = this.CreateBoundContractView()
175
+
176
+ for (const key in tmpContract.filters) {
177
+ _filters.push(tmpContract.filters[key]())
178
+ }
179
+ return this.onEvent(function (log, ctx) {
180
+ return handler(log, ctx)
181
+ }, _filters)
182
+ }
183
+
184
+ protected onTrace(
185
+ signature: string,
186
+ handler: (trace: Trace, ctx: ContractContext<TContract, TBoundContractView>) => PromiseOrVoid
187
+ ) {
188
+ const chainId = this.getChainId()
189
+ const contractView = this.CreateBoundContractView()
190
+ const contractName = this.config.name
191
+
192
+ this.traceHandlers.push({
193
+ signature,
194
+ handler: async function (trace: Trace) {
195
+ const contractInterface = contractView.rawContract.interface
196
+ const fragment = contractInterface.getFunction(signature)
197
+ if (!trace.action.input) {
198
+ return ProcessResult.fromPartial({})
199
+ }
200
+ const traceData = '0x' + trace.action.input.slice(10)
201
+ trace.args = contractInterface._abiCoder.decode(fragment.inputs, traceData)
202
+
203
+ const ctx = new ContractContext<TContract, TBoundContractView>(
204
+ contractName,
205
+ contractView,
206
+ chainId,
207
+ undefined,
208
+ undefined,
209
+ trace
210
+ )
211
+ await handler(trace, ctx)
212
+ return ctx.getProcessResult()
213
+ },
214
+ })
215
+ return this
216
+ }
217
+ }
@@ -0,0 +1 @@
1
+ export { BigNumber as BigDecimal } from 'bignumber.js'
@@ -0,0 +1,45 @@
1
+ import { Networkish } from '@ethersproject/networks'
2
+ import Long from 'long'
3
+ import { getNetwork } from '@ethersproject/providers'
4
+
5
+ export class BindOptions {
6
+ // Contract address
7
+ address: string
8
+ // Optional, if not set, then use eth mainnet
9
+ network?: Networkish = 1
10
+ // Optional, override default contract name
11
+ name?: string
12
+ startBlock?: Long | number
13
+ endBlock?: Long | number
14
+ }
15
+
16
+ export function getOptionsSignature(opts: BindOptions): string {
17
+ const sig = [opts.address]
18
+ if (opts.network) {
19
+ sig.push(getNetwork(opts.network).chainId.toString())
20
+ }
21
+ if (opts.name) {
22
+ sig.push(opts.name)
23
+ }
24
+ if (opts.startBlock) {
25
+ sig.push(opts.startBlock.toString())
26
+ }
27
+ if (opts.endBlock) {
28
+ sig.push(opts.endBlock.toString())
29
+ }
30
+ return sig.join('_')
31
+ }
32
+
33
+ export class BindInternalOptions {
34
+ address: string
35
+ network: Networkish
36
+ name: string
37
+ startBlock: Long
38
+ endBlock?: Long
39
+ }
40
+
41
+ export class AccountBindOptions {
42
+ address: string
43
+ network?: Networkish
44
+ startBlock?: Long | number
45
+ }
@@ -0,0 +1,183 @@
1
+ import { RecordMetaData, ProcessResult } from '../gen'
2
+ import { BaseContract, EventFilter } from 'ethers'
3
+ import { Block, Log } from '@ethersproject/abstract-provider'
4
+ import { normalizeLabels } from './meter'
5
+ import Long from 'long'
6
+ import { Trace } from './trace'
7
+ import { Labels } from './metadata'
8
+ import { CHAIN_IDS } from '../utils/chain'
9
+ import { BaseContext } from './base-context'
10
+
11
+ export abstract class EthContext extends BaseContext {
12
+ chainId: number
13
+ address: string
14
+ log?: Log
15
+ block?: Block
16
+ trace?: Trace
17
+ blockNumber: Long
18
+ transactionHash?: string
19
+
20
+ protected constructor(chainId: number, address: string, block?: Block, log?: Log, trace?: Trace) {
21
+ super()
22
+ this.chainId = chainId
23
+ this.log = log
24
+ this.block = block
25
+ this.trace = trace
26
+ this.address = address
27
+ if (log) {
28
+ this.blockNumber = Long.fromNumber(log.blockNumber, true)
29
+ this.transactionHash = log.transactionHash
30
+ } else if (block) {
31
+ this.blockNumber = Long.fromNumber(block.number, true)
32
+ } else if (trace) {
33
+ this.blockNumber = Long.fromNumber(trace.blockNumber, true)
34
+ this.transactionHash = trace.transactionHash
35
+ }
36
+ }
37
+
38
+ protected abstract getContractName(): string
39
+
40
+ getMetaData(name: string, labels: Labels): RecordMetaData {
41
+ if (this.log) {
42
+ return {
43
+ address: this.address,
44
+ contractName: this.getContractName(),
45
+ blockNumber: this.blockNumber,
46
+ transactionIndex: this.log.transactionIndex,
47
+ transactionHash: this.transactionHash || '',
48
+ logIndex: this.log.logIndex,
49
+ chainId: this.chainId.toString(),
50
+ name: name,
51
+ labels: normalizeLabels(labels),
52
+ }
53
+ }
54
+ if (this.block) {
55
+ return {
56
+ address: this.address,
57
+ contractName: this.getContractName(),
58
+ blockNumber: this.blockNumber,
59
+ transactionIndex: -1,
60
+ transactionHash: '',
61
+ logIndex: -1,
62
+ chainId: this.chainId.toString(),
63
+ name: name,
64
+ labels: normalizeLabels(labels),
65
+ }
66
+ }
67
+ if (this.trace) {
68
+ return {
69
+ address: this.address,
70
+ contractName: this.getContractName(),
71
+ blockNumber: this.blockNumber,
72
+ transactionIndex: this.trace.transactionPosition,
73
+ transactionHash: this.transactionHash || '',
74
+ logIndex: -1,
75
+ chainId: this.chainId.toString(),
76
+ name: name,
77
+ labels: normalizeLabels(labels),
78
+ }
79
+ }
80
+ throw new Error("Invaid ctx argument can't happen")
81
+ }
82
+ }
83
+
84
+ export class AccountContext extends EthContext {
85
+ constructor(chainId: number, address: string, block?: Block, log?: Log, trace?: Trace) {
86
+ super(chainId, address, block, log, trace)
87
+ }
88
+ protected getContractName(): string {
89
+ return 'account'
90
+ }
91
+ }
92
+
93
+ export class ContractContext<
94
+ TContract extends BaseContract,
95
+ TContractBoundView extends BoundContractView<TContract, ContractView<TContract>>
96
+ > extends EthContext {
97
+ contract: TContractBoundView
98
+ contractName: string
99
+
100
+ constructor(
101
+ contractName: string,
102
+ view: TContractBoundView,
103
+ chainId: number,
104
+ block?: Block,
105
+ log?: Log,
106
+ trace?: Trace
107
+ ) {
108
+ super(chainId, view.rawContract.address, block, log, trace)
109
+ view.context = this
110
+ this.contractName = contractName
111
+ this.contract = view
112
+ }
113
+
114
+ protected getContractName(): string {
115
+ return this.contractName
116
+ }
117
+ }
118
+
119
+ export class ContractView<TContract extends BaseContract> {
120
+ filters: { [name: string]: (...args: Array<any>) => EventFilter }
121
+ protected contract: TContract
122
+
123
+ constructor(contract: TContract) {
124
+ this.contract = contract
125
+ this.filters = contract.filters
126
+ }
127
+
128
+ get rawContract() {
129
+ return this.contract
130
+ }
131
+
132
+ get provider() {
133
+ return this.contract.provider
134
+ }
135
+ }
136
+
137
+ export class BoundContractView<TContract extends BaseContract, TContractView extends ContractView<TContract>> {
138
+ protected view: TContractView
139
+ // context will be set right after context creation (in context's constructor)
140
+ context: ContractContext<TContract, BoundContractView<TContract, TContractView>>
141
+
142
+ constructor(view: TContractView) {
143
+ this.view = view
144
+ }
145
+
146
+ get rawContract() {
147
+ return this.view.rawContract
148
+ }
149
+
150
+ get provider() {
151
+ return this.view.provider
152
+ }
153
+
154
+ get filters() {
155
+ return this.view.filters
156
+ }
157
+ }
158
+
159
+ export class SuiContext extends BaseContext {
160
+ address: string
161
+ moduleName: string
162
+ blockNumber: Long
163
+
164
+ constructor(address: string, slot: Long) {
165
+ super()
166
+ this.address = address
167
+ this.blockNumber = slot
168
+ }
169
+
170
+ getMetaData(name: string, labels: Labels): RecordMetaData {
171
+ return {
172
+ address: this.address,
173
+ contractName: this.moduleName,
174
+ blockNumber: this.blockNumber,
175
+ transactionIndex: 0,
176
+ transactionHash: '', // TODO
177
+ logIndex: 0,
178
+ chainId: CHAIN_IDS.SUI_DEVNET, // TODO set in context
179
+ name: name,
180
+ labels: normalizeLabels(labels),
181
+ }
182
+ }
183
+ }
@@ -0,0 +1,255 @@
1
+ import { Plugin, PluginManager } from '../plugin'
2
+ import {
3
+ AccountConfig,
4
+ ContractConfig,
5
+ DataBinding,
6
+ HandlerType,
7
+ LogFilter,
8
+ LogHandlerConfig,
9
+ ProcessConfigResponse,
10
+ ProcessResult,
11
+ } from '../gen/processor/protos/processor'
12
+ import { DEFAULT_MAX_BLOCK, errorString, mergeProcessResults, USER_PROCESSOR, Utf8ArrayToStr } from '../service'
13
+
14
+ import { ServerError, Status } from 'nice-grpc'
15
+ import { Block, Log } from '@ethersproject/abstract-provider'
16
+ import { Trace } from '@sentio/sdk'
17
+ import { ProcessorState } from '../binds'
18
+ import { AccountProcessorState } from './account-processor'
19
+ import Long from 'long'
20
+
21
+ export class EthPlugin implements Plugin {
22
+ name: string = 'EthPlugin'
23
+
24
+ private eventHandlers: ((event: Log) => Promise<ProcessResult>)[] = []
25
+ private traceHandlers: ((trace: Trace) => Promise<ProcessResult>)[] = []
26
+ private blockHandlers: ((block: Block) => Promise<ProcessResult>)[] = []
27
+
28
+ configure(config: ProcessConfigResponse): void {
29
+ for (const processor of ProcessorState.INSTANCE.getValues()) {
30
+ // If server favor incremental update this need to change
31
+ // Start basic config for contract
32
+ const chainId = processor.getChainId()
33
+ // this.processorsByChainId.set(chainId, processor)
34
+
35
+ const contractConfig: ContractConfig = {
36
+ processorType: USER_PROCESSOR,
37
+ contract: {
38
+ name: processor.config.name,
39
+ chainId: chainId.toString(),
40
+ address: processor.config.address,
41
+ abi: '',
42
+ },
43
+ intervalConfigs: [],
44
+ logConfigs: [],
45
+ traceConfigs: [],
46
+ startBlock: processor.config.startBlock,
47
+ endBlock: DEFAULT_MAX_BLOCK,
48
+ instructionConfig: undefined,
49
+ aptosEventConfigs: [],
50
+ aptosCallConfigs: [],
51
+ }
52
+ if (processor.config.endBlock) {
53
+ contractConfig.endBlock = processor.config.endBlock
54
+ }
55
+
56
+ // Step 1. Prepare all the block handlers
57
+ for (const blockHandler of processor.blockHandlers) {
58
+ const handlerId = this.blockHandlers.push(blockHandler.handler) - 1
59
+ // TODO wrap the block handler into one
60
+
61
+ contractConfig.intervalConfigs.push({
62
+ slot: 0,
63
+ slotInterval: blockHandler.blockInterval,
64
+ minutes: 0,
65
+ minutesInterval: blockHandler.timeIntervalInMinutes,
66
+ handlerId: handlerId,
67
+ })
68
+ }
69
+
70
+ // Step 2. Prepare all trace handlers
71
+ for (const traceHandler of processor.traceHandlers) {
72
+ const handlerId = this.traceHandlers.push(traceHandler.handler) - 1
73
+ contractConfig.traceConfigs.push({
74
+ signature: traceHandler.signature,
75
+ handlerId: handlerId,
76
+ })
77
+ }
78
+
79
+ // Step 3. Prepare all the event handlers
80
+ for (const eventsHandler of processor.eventHandlers) {
81
+ // associate id with filter
82
+ const handlerId = this.eventHandlers.push(eventsHandler.handler) - 1
83
+ const logConfig: LogHandlerConfig = {
84
+ handlerId: handlerId,
85
+ filters: [],
86
+ }
87
+
88
+ for (const filter of eventsHandler.filters) {
89
+ if (!filter.topics) {
90
+ throw new ServerError(Status.INVALID_ARGUMENT, 'Topic should not be null')
91
+ }
92
+ const logFilter: LogFilter = {
93
+ addressType: undefined,
94
+ address: contractConfig.contract?.address,
95
+ topics: [],
96
+ }
97
+
98
+ for (const ts of filter.topics) {
99
+ let hashes: string[] = []
100
+ if (Array.isArray(ts)) {
101
+ hashes = hashes.concat(ts)
102
+ } else if (ts) {
103
+ hashes.push(ts)
104
+ }
105
+ logFilter.topics.push({ hashes: hashes })
106
+ }
107
+ logConfig.filters.push(logFilter)
108
+ }
109
+ contractConfig.logConfigs.push(logConfig)
110
+ }
111
+
112
+ // Finish up a contract
113
+ config.contractConfigs.push(contractConfig)
114
+ }
115
+
116
+ // part 1.b prepare EVM account processors
117
+ for (const processor of AccountProcessorState.INSTANCE.getValues()) {
118
+ const accountConfig: AccountConfig = {
119
+ address: processor.config.address,
120
+ chainId: processor.getChainId().toString(),
121
+ startBlock: processor.config.startBlock ? Long.fromValue(processor.config.startBlock) : Long.ZERO,
122
+ aptosIntervalConfigs: [],
123
+ intervalConfigs: [],
124
+ logConfigs: [],
125
+ }
126
+ // TODO add interval
127
+ for (const eventsHandler of processor.eventHandlers) {
128
+ // associate id with filter
129
+ const handlerId = this.eventHandlers.push(eventsHandler.handler) - 1
130
+ const logConfig: LogHandlerConfig = {
131
+ handlerId: handlerId,
132
+ filters: [],
133
+ }
134
+
135
+ for (const filter of eventsHandler.filters) {
136
+ if (!filter.topics) {
137
+ throw new ServerError(Status.INVALID_ARGUMENT, 'Topic should not be null')
138
+ }
139
+ const logFilter: LogFilter = {
140
+ addressType: filter.addressType,
141
+ address: filter.address,
142
+ topics: [],
143
+ }
144
+
145
+ for (const ts of filter.topics) {
146
+ let hashes: string[] = []
147
+ if (Array.isArray(ts)) {
148
+ hashes = hashes.concat(ts)
149
+ } else if (ts) {
150
+ hashes.push(ts)
151
+ }
152
+ logFilter.topics.push({ hashes: hashes })
153
+ }
154
+ logConfig.filters.push(logFilter)
155
+ }
156
+ accountConfig.logConfigs.push(logConfig)
157
+ }
158
+
159
+ config.accountConfigs.push(accountConfig)
160
+ }
161
+ }
162
+
163
+ supportedHandlers = [HandlerType.ETH_LOG, HandlerType.ETH_BLOCK, HandlerType.ETH_TRACE]
164
+
165
+ processBinding(request: DataBinding): Promise<ProcessResult> {
166
+ // return Promise.resolve(undefined);
167
+ switch (request.handlerType) {
168
+ case HandlerType.ETH_LOG:
169
+ return this.processLog(request)
170
+ case HandlerType.ETH_TRACE:
171
+ return this.processTrace(request)
172
+ case HandlerType.ETH_BLOCK:
173
+ return this.processBlock(request)
174
+ default:
175
+ throw new ServerError(Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType)
176
+ }
177
+ }
178
+
179
+ async processLog(request: DataBinding): Promise<ProcessResult> {
180
+ if (!request.data) {
181
+ throw new ServerError(Status.INVALID_ARGUMENT, "Log can't be null")
182
+ }
183
+
184
+ const promises: Promise<ProcessResult>[] = []
185
+ let log: Log
186
+ if (request.data.ethLog) {
187
+ log = request.data.ethLog.log as Log
188
+ } else {
189
+ const jsonString = Utf8ArrayToStr(request.data.raw)
190
+ log = JSON.parse(jsonString)
191
+ }
192
+
193
+ for (const handlerId of request.handlerIds) {
194
+ const handler = this.eventHandlers[handlerId]
195
+ promises.push(
196
+ handler(log).catch((e) => {
197
+ throw new ServerError(Status.INTERNAL, 'error processing log: ' + JSON.stringify(log) + '\n' + errorString(e))
198
+ })
199
+ )
200
+ }
201
+ return mergeProcessResults(await Promise.all(promises))
202
+ }
203
+
204
+ async processTrace(binding: DataBinding): Promise<ProcessResult> {
205
+ if (!binding.data) {
206
+ throw new ServerError(Status.INVALID_ARGUMENT, "Trace can't be empty")
207
+ }
208
+ let trace: Trace
209
+ if (binding.data.ethTrace?.trace) {
210
+ trace = binding.data.ethTrace.trace as Trace
211
+ } else {
212
+ const jsonString = Utf8ArrayToStr(binding.data.raw)
213
+ trace = JSON.parse(jsonString)
214
+ }
215
+
216
+ const promises: Promise<ProcessResult>[] = []
217
+
218
+ for (const handlerId of binding.handlerIds) {
219
+ promises.push(
220
+ this.traceHandlers[handlerId](trace).catch((e) => {
221
+ throw new ServerError(
222
+ Status.INTERNAL,
223
+ 'error processing trace: ' + JSON.stringify(trace) + '\n' + errorString(e)
224
+ )
225
+ })
226
+ )
227
+ }
228
+ return mergeProcessResults(await Promise.all(promises))
229
+ }
230
+
231
+ async processBlock(binding: DataBinding): Promise<ProcessResult> {
232
+ if (!binding.data) {
233
+ throw new ServerError(Status.INVALID_ARGUMENT, "Block can't be empty")
234
+ }
235
+ let block: Block
236
+ if (binding.data.ethBlock?.block) {
237
+ block = binding.data.ethBlock.block as Block
238
+ } else {
239
+ const jsonString = Utf8ArrayToStr(binding.data.raw)
240
+ block = JSON.parse(jsonString)
241
+ }
242
+
243
+ const promises: Promise<ProcessResult>[] = []
244
+ for (const handlerId of binding.handlerIds) {
245
+ promises.push(
246
+ this.blockHandlers[handlerId](block).catch((e) => {
247
+ throw new ServerError(Status.INTERNAL, 'error processing block: ' + block.number + '\n' + errorString(e))
248
+ })
249
+ )
250
+ }
251
+ return mergeProcessResults(await Promise.all(promises))
252
+ }
253
+ }
254
+
255
+ PluginManager.INSTANCE.register(new EthPlugin())