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

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,162 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SuiContext = exports.BoundContractView = exports.ContractView = exports.ContractContext = exports.AccountContext = exports.EthContext = void 0;
7
+ const meter_1 = require("./meter");
8
+ const long_1 = __importDefault(require("long"));
9
+ const chain_1 = require("../utils/chain");
10
+ const base_context_1 = require("./base-context");
11
+ class EthContext extends base_context_1.BaseContext {
12
+ chainId;
13
+ address;
14
+ log;
15
+ block;
16
+ trace;
17
+ blockNumber;
18
+ transactionHash;
19
+ constructor(chainId, address, block, log, trace) {
20
+ super();
21
+ this.chainId = chainId;
22
+ this.log = log;
23
+ this.block = block;
24
+ this.trace = trace;
25
+ this.address = address;
26
+ if (log) {
27
+ this.blockNumber = long_1.default.fromNumber(log.blockNumber, true);
28
+ this.transactionHash = log.transactionHash;
29
+ }
30
+ else if (block) {
31
+ this.blockNumber = long_1.default.fromNumber(block.number, true);
32
+ }
33
+ else if (trace) {
34
+ this.blockNumber = long_1.default.fromNumber(trace.blockNumber, true);
35
+ this.transactionHash = trace.transactionHash;
36
+ }
37
+ }
38
+ getMetaData(name, labels) {
39
+ if (this.log) {
40
+ return {
41
+ address: this.address,
42
+ contractName: this.getContractName(),
43
+ blockNumber: this.blockNumber,
44
+ transactionIndex: this.log.transactionIndex,
45
+ transactionHash: this.transactionHash || '',
46
+ logIndex: this.log.logIndex,
47
+ chainId: this.chainId.toString(),
48
+ name: name,
49
+ labels: (0, meter_1.normalizeLabels)(labels),
50
+ };
51
+ }
52
+ if (this.block) {
53
+ return {
54
+ address: this.address,
55
+ contractName: this.getContractName(),
56
+ blockNumber: this.blockNumber,
57
+ transactionIndex: -1,
58
+ transactionHash: '',
59
+ logIndex: -1,
60
+ chainId: this.chainId.toString(),
61
+ name: name,
62
+ labels: (0, meter_1.normalizeLabels)(labels),
63
+ };
64
+ }
65
+ if (this.trace) {
66
+ return {
67
+ address: this.address,
68
+ contractName: this.getContractName(),
69
+ blockNumber: this.blockNumber,
70
+ transactionIndex: this.trace.transactionPosition,
71
+ transactionHash: this.transactionHash || '',
72
+ logIndex: -1,
73
+ chainId: this.chainId.toString(),
74
+ name: name,
75
+ labels: (0, meter_1.normalizeLabels)(labels),
76
+ };
77
+ }
78
+ throw new Error("Invaid ctx argument can't happen");
79
+ }
80
+ }
81
+ exports.EthContext = EthContext;
82
+ class AccountContext extends EthContext {
83
+ constructor(chainId, address, block, log, trace) {
84
+ super(chainId, address, block, log, trace);
85
+ }
86
+ getContractName() {
87
+ return 'account';
88
+ }
89
+ }
90
+ exports.AccountContext = AccountContext;
91
+ class ContractContext extends EthContext {
92
+ contract;
93
+ contractName;
94
+ constructor(contractName, view, chainId, block, log, trace) {
95
+ super(chainId, view.rawContract.address, block, log, trace);
96
+ view.context = this;
97
+ this.contractName = contractName;
98
+ this.contract = view;
99
+ }
100
+ getContractName() {
101
+ return this.contractName;
102
+ }
103
+ }
104
+ exports.ContractContext = ContractContext;
105
+ class ContractView {
106
+ filters;
107
+ contract;
108
+ constructor(contract) {
109
+ this.contract = contract;
110
+ this.filters = contract.filters;
111
+ }
112
+ get rawContract() {
113
+ return this.contract;
114
+ }
115
+ get provider() {
116
+ return this.contract.provider;
117
+ }
118
+ }
119
+ exports.ContractView = ContractView;
120
+ class BoundContractView {
121
+ view;
122
+ // context will be set right after context creation (in context's constructor)
123
+ context;
124
+ constructor(view) {
125
+ this.view = view;
126
+ }
127
+ get rawContract() {
128
+ return this.view.rawContract;
129
+ }
130
+ get provider() {
131
+ return this.view.provider;
132
+ }
133
+ get filters() {
134
+ return this.view.filters;
135
+ }
136
+ }
137
+ exports.BoundContractView = BoundContractView;
138
+ class SuiContext extends base_context_1.BaseContext {
139
+ address;
140
+ moduleName;
141
+ blockNumber;
142
+ constructor(address, slot) {
143
+ super();
144
+ this.address = address;
145
+ this.blockNumber = slot;
146
+ }
147
+ getMetaData(name, labels) {
148
+ return {
149
+ address: this.address,
150
+ contractName: this.moduleName,
151
+ blockNumber: this.blockNumber,
152
+ transactionIndex: 0,
153
+ transactionHash: '',
154
+ logIndex: 0,
155
+ chainId: chain_1.CHAIN_IDS.SUI_DEVNET,
156
+ name: name,
157
+ labels: (0, meter_1.normalizeLabels)(labels),
158
+ };
159
+ }
160
+ }
161
+ exports.SuiContext = SuiContext;
162
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":"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","sourcesContent":["import { RecordMetaData, ProcessResult } from '../gen'\nimport { BaseContract, EventFilter } from 'ethers'\nimport { Block, Log } from '@ethersproject/abstract-provider'\nimport { normalizeLabels } from './meter'\nimport Long from 'long'\nimport { Trace } from './trace'\nimport { Labels } from './metadata'\nimport { CHAIN_IDS } from '../utils/chain'\nimport { BaseContext } from './base-context'\n\nexport abstract class EthContext extends BaseContext {\n chainId: number\n address: string\n log?: Log\n block?: Block\n trace?: Trace\n blockNumber: Long\n transactionHash?: string\n\n protected constructor(chainId: number, address: string, block?: Block, log?: Log, trace?: Trace) {\n super()\n this.chainId = chainId\n this.log = log\n this.block = block\n this.trace = trace\n this.address = address\n if (log) {\n this.blockNumber = Long.fromNumber(log.blockNumber, true)\n this.transactionHash = log.transactionHash\n } else if (block) {\n this.blockNumber = Long.fromNumber(block.number, true)\n } else if (trace) {\n this.blockNumber = Long.fromNumber(trace.blockNumber, true)\n this.transactionHash = trace.transactionHash\n }\n }\n\n protected abstract getContractName(): string\n\n getMetaData(name: string, labels: Labels): RecordMetaData {\n if (this.log) {\n return {\n address: this.address,\n contractName: this.getContractName(),\n blockNumber: this.blockNumber,\n transactionIndex: this.log.transactionIndex,\n transactionHash: this.transactionHash || '',\n logIndex: this.log.logIndex,\n chainId: this.chainId.toString(),\n name: name,\n labels: normalizeLabels(labels),\n }\n }\n if (this.block) {\n return {\n address: this.address,\n contractName: this.getContractName(),\n blockNumber: this.blockNumber,\n transactionIndex: -1,\n transactionHash: '',\n logIndex: -1,\n chainId: this.chainId.toString(),\n name: name,\n labels: normalizeLabels(labels),\n }\n }\n if (this.trace) {\n return {\n address: this.address,\n contractName: this.getContractName(),\n blockNumber: this.blockNumber,\n transactionIndex: this.trace.transactionPosition,\n transactionHash: this.transactionHash || '',\n logIndex: -1,\n chainId: this.chainId.toString(),\n name: name,\n labels: normalizeLabels(labels),\n }\n }\n throw new Error(\"Invaid ctx argument can't happen\")\n }\n}\n\nexport class AccountContext extends EthContext {\n constructor(chainId: number, address: string, block?: Block, log?: Log, trace?: Trace) {\n super(chainId, address, block, log, trace)\n }\n protected getContractName(): string {\n return 'account'\n }\n}\n\nexport class ContractContext<\n TContract extends BaseContract,\n TContractBoundView extends BoundContractView<TContract, ContractView<TContract>>\n> extends EthContext {\n contract: TContractBoundView\n contractName: string\n\n constructor(\n contractName: string,\n view: TContractBoundView,\n chainId: number,\n block?: Block,\n log?: Log,\n trace?: Trace\n ) {\n super(chainId, view.rawContract.address, block, log, trace)\n view.context = this\n this.contractName = contractName\n this.contract = view\n }\n\n protected getContractName(): string {\n return this.contractName\n }\n}\n\nexport class ContractView<TContract extends BaseContract> {\n filters: { [name: string]: (...args: Array<any>) => EventFilter }\n protected contract: TContract\n\n constructor(contract: TContract) {\n this.contract = contract\n this.filters = contract.filters\n }\n\n get rawContract() {\n return this.contract\n }\n\n get provider() {\n return this.contract.provider\n }\n}\n\nexport class BoundContractView<TContract extends BaseContract, TContractView extends ContractView<TContract>> {\n protected view: TContractView\n // context will be set right after context creation (in context's constructor)\n context: ContractContext<TContract, BoundContractView<TContract, TContractView>>\n\n constructor(view: TContractView) {\n this.view = view\n }\n\n get rawContract() {\n return this.view.rawContract\n }\n\n get provider() {\n return this.view.provider\n }\n\n get filters() {\n return this.view.filters\n }\n}\n\nexport class SuiContext extends BaseContext {\n address: string\n moduleName: string\n blockNumber: Long\n\n constructor(address: string, slot: Long) {\n super()\n this.address = address\n this.blockNumber = slot\n }\n\n getMetaData(name: string, labels: Labels): RecordMetaData {\n return {\n address: this.address,\n contractName: this.moduleName,\n blockNumber: this.blockNumber,\n transactionIndex: 0,\n transactionHash: '', // TODO\n logIndex: 0,\n chainId: CHAIN_IDS.SUI_DEVNET, // TODO set in context\n name: name,\n labels: normalizeLabels(labels),\n }\n }\n}\n"]}
@@ -0,0 +1,14 @@
1
+ import { Plugin } from '../plugin';
2
+ import { DataBinding, HandlerType, ProcessConfigResponse, ProcessResult } from '../gen/processor/protos/processor';
3
+ export declare class EthPlugin implements Plugin {
4
+ name: string;
5
+ private eventHandlers;
6
+ private traceHandlers;
7
+ private blockHandlers;
8
+ configure(config: ProcessConfigResponse): void;
9
+ supportedHandlers: HandlerType[];
10
+ processBinding(request: DataBinding): Promise<ProcessResult>;
11
+ processLog(request: DataBinding): Promise<ProcessResult>;
12
+ processTrace(binding: DataBinding): Promise<ProcessResult>;
13
+ processBlock(binding: DataBinding): Promise<ProcessResult>;
14
+ }
@@ -0,0 +1,221 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.EthPlugin = void 0;
7
+ const plugin_1 = require("../plugin");
8
+ const processor_1 = require("../gen/processor/protos/processor");
9
+ const service_1 = require("../service");
10
+ const nice_grpc_1 = require("nice-grpc");
11
+ const binds_1 = require("../binds");
12
+ const account_processor_1 = require("./account-processor");
13
+ const long_1 = __importDefault(require("long"));
14
+ class EthPlugin {
15
+ name = 'EthPlugin';
16
+ eventHandlers = [];
17
+ traceHandlers = [];
18
+ blockHandlers = [];
19
+ configure(config) {
20
+ for (const processor of binds_1.ProcessorState.INSTANCE.getValues()) {
21
+ // If server favor incremental update this need to change
22
+ // Start basic config for contract
23
+ const chainId = processor.getChainId();
24
+ // this.processorsByChainId.set(chainId, processor)
25
+ const contractConfig = {
26
+ processorType: service_1.USER_PROCESSOR,
27
+ contract: {
28
+ name: processor.config.name,
29
+ chainId: chainId.toString(),
30
+ address: processor.config.address,
31
+ abi: '',
32
+ },
33
+ intervalConfigs: [],
34
+ logConfigs: [],
35
+ traceConfigs: [],
36
+ startBlock: processor.config.startBlock,
37
+ endBlock: service_1.DEFAULT_MAX_BLOCK,
38
+ instructionConfig: undefined,
39
+ aptosEventConfigs: [],
40
+ aptosCallConfigs: [],
41
+ };
42
+ if (processor.config.endBlock) {
43
+ contractConfig.endBlock = processor.config.endBlock;
44
+ }
45
+ // Step 1. Prepare all the block handlers
46
+ for (const blockHandler of processor.blockHandlers) {
47
+ const handlerId = this.blockHandlers.push(blockHandler.handler) - 1;
48
+ // TODO wrap the block handler into one
49
+ contractConfig.intervalConfigs.push({
50
+ slot: 0,
51
+ slotInterval: blockHandler.blockInterval,
52
+ minutes: 0,
53
+ minutesInterval: blockHandler.timeIntervalInMinutes,
54
+ handlerId: handlerId,
55
+ });
56
+ }
57
+ // Step 2. Prepare all trace handlers
58
+ for (const traceHandler of processor.traceHandlers) {
59
+ const handlerId = this.traceHandlers.push(traceHandler.handler) - 1;
60
+ contractConfig.traceConfigs.push({
61
+ signature: traceHandler.signature,
62
+ handlerId: handlerId,
63
+ });
64
+ }
65
+ // Step 3. Prepare all the event handlers
66
+ for (const eventsHandler of processor.eventHandlers) {
67
+ // associate id with filter
68
+ const handlerId = this.eventHandlers.push(eventsHandler.handler) - 1;
69
+ const logConfig = {
70
+ handlerId: handlerId,
71
+ filters: [],
72
+ };
73
+ for (const filter of eventsHandler.filters) {
74
+ if (!filter.topics) {
75
+ throw new nice_grpc_1.ServerError(nice_grpc_1.Status.INVALID_ARGUMENT, 'Topic should not be null');
76
+ }
77
+ const logFilter = {
78
+ addressType: undefined,
79
+ address: contractConfig.contract?.address,
80
+ topics: [],
81
+ };
82
+ for (const ts of filter.topics) {
83
+ let hashes = [];
84
+ if (Array.isArray(ts)) {
85
+ hashes = hashes.concat(ts);
86
+ }
87
+ else if (ts) {
88
+ hashes.push(ts);
89
+ }
90
+ logFilter.topics.push({ hashes: hashes });
91
+ }
92
+ logConfig.filters.push(logFilter);
93
+ }
94
+ contractConfig.logConfigs.push(logConfig);
95
+ }
96
+ // Finish up a contract
97
+ config.contractConfigs.push(contractConfig);
98
+ }
99
+ // part 1.b prepare EVM account processors
100
+ for (const processor of account_processor_1.AccountProcessorState.INSTANCE.getValues()) {
101
+ const accountConfig = {
102
+ address: processor.config.address,
103
+ chainId: processor.getChainId().toString(),
104
+ startBlock: processor.config.startBlock ? long_1.default.fromValue(processor.config.startBlock) : long_1.default.ZERO,
105
+ aptosIntervalConfigs: [],
106
+ intervalConfigs: [],
107
+ logConfigs: [],
108
+ };
109
+ // TODO add interval
110
+ for (const eventsHandler of processor.eventHandlers) {
111
+ // associate id with filter
112
+ const handlerId = this.eventHandlers.push(eventsHandler.handler) - 1;
113
+ const logConfig = {
114
+ handlerId: handlerId,
115
+ filters: [],
116
+ };
117
+ for (const filter of eventsHandler.filters) {
118
+ if (!filter.topics) {
119
+ throw new nice_grpc_1.ServerError(nice_grpc_1.Status.INVALID_ARGUMENT, 'Topic should not be null');
120
+ }
121
+ const logFilter = {
122
+ addressType: filter.addressType,
123
+ address: filter.address,
124
+ topics: [],
125
+ };
126
+ for (const ts of filter.topics) {
127
+ let hashes = [];
128
+ if (Array.isArray(ts)) {
129
+ hashes = hashes.concat(ts);
130
+ }
131
+ else if (ts) {
132
+ hashes.push(ts);
133
+ }
134
+ logFilter.topics.push({ hashes: hashes });
135
+ }
136
+ logConfig.filters.push(logFilter);
137
+ }
138
+ accountConfig.logConfigs.push(logConfig);
139
+ }
140
+ config.accountConfigs.push(accountConfig);
141
+ }
142
+ }
143
+ supportedHandlers = [processor_1.HandlerType.ETH_LOG, processor_1.HandlerType.ETH_BLOCK, processor_1.HandlerType.ETH_TRACE];
144
+ processBinding(request) {
145
+ // return Promise.resolve(undefined);
146
+ switch (request.handlerType) {
147
+ case processor_1.HandlerType.ETH_LOG:
148
+ return this.processLog(request);
149
+ case processor_1.HandlerType.ETH_TRACE:
150
+ return this.processTrace(request);
151
+ case processor_1.HandlerType.ETH_BLOCK:
152
+ return this.processBlock(request);
153
+ default:
154
+ throw new nice_grpc_1.ServerError(nice_grpc_1.Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType);
155
+ }
156
+ }
157
+ async processLog(request) {
158
+ if (!request.data) {
159
+ throw new nice_grpc_1.ServerError(nice_grpc_1.Status.INVALID_ARGUMENT, "Log can't be null");
160
+ }
161
+ const promises = [];
162
+ let log;
163
+ if (request.data.ethLog) {
164
+ log = request.data.ethLog.log;
165
+ }
166
+ else {
167
+ const jsonString = (0, service_1.Utf8ArrayToStr)(request.data.raw);
168
+ log = JSON.parse(jsonString);
169
+ }
170
+ for (const handlerId of request.handlerIds) {
171
+ const handler = this.eventHandlers[handlerId];
172
+ promises.push(handler(log).catch((e) => {
173
+ throw new nice_grpc_1.ServerError(nice_grpc_1.Status.INTERNAL, 'error processing log: ' + JSON.stringify(log) + '\n' + (0, service_1.errorString)(e));
174
+ }));
175
+ }
176
+ return (0, service_1.mergeProcessResults)(await Promise.all(promises));
177
+ }
178
+ async processTrace(binding) {
179
+ if (!binding.data) {
180
+ throw new nice_grpc_1.ServerError(nice_grpc_1.Status.INVALID_ARGUMENT, "Trace can't be empty");
181
+ }
182
+ let trace;
183
+ if (binding.data.ethTrace?.trace) {
184
+ trace = binding.data.ethTrace.trace;
185
+ }
186
+ else {
187
+ const jsonString = (0, service_1.Utf8ArrayToStr)(binding.data.raw);
188
+ trace = JSON.parse(jsonString);
189
+ }
190
+ const promises = [];
191
+ for (const handlerId of binding.handlerIds) {
192
+ promises.push(this.traceHandlers[handlerId](trace).catch((e) => {
193
+ throw new nice_grpc_1.ServerError(nice_grpc_1.Status.INTERNAL, 'error processing trace: ' + JSON.stringify(trace) + '\n' + (0, service_1.errorString)(e));
194
+ }));
195
+ }
196
+ return (0, service_1.mergeProcessResults)(await Promise.all(promises));
197
+ }
198
+ async processBlock(binding) {
199
+ if (!binding.data) {
200
+ throw new nice_grpc_1.ServerError(nice_grpc_1.Status.INVALID_ARGUMENT, "Block can't be empty");
201
+ }
202
+ let block;
203
+ if (binding.data.ethBlock?.block) {
204
+ block = binding.data.ethBlock.block;
205
+ }
206
+ else {
207
+ const jsonString = (0, service_1.Utf8ArrayToStr)(binding.data.raw);
208
+ block = JSON.parse(jsonString);
209
+ }
210
+ const promises = [];
211
+ for (const handlerId of binding.handlerIds) {
212
+ promises.push(this.blockHandlers[handlerId](block).catch((e) => {
213
+ throw new nice_grpc_1.ServerError(nice_grpc_1.Status.INTERNAL, 'error processing block: ' + block.number + '\n' + (0, service_1.errorString)(e));
214
+ }));
215
+ }
216
+ return (0, service_1.mergeProcessResults)(await Promise.all(promises));
217
+ }
218
+ }
219
+ exports.EthPlugin = EthPlugin;
220
+ plugin_1.PluginManager.INSTANCE.register(new EthPlugin());
221
+ //# sourceMappingURL=eth-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eth-plugin.js","sourceRoot":"","sources":["../../src/core/eth-plugin.ts"],"names":[],"mappings":"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","sourcesContent":["import { Plugin, PluginManager } from '../plugin'\nimport {\n AccountConfig,\n ContractConfig,\n DataBinding,\n HandlerType,\n LogFilter,\n LogHandlerConfig,\n ProcessConfigResponse,\n ProcessResult,\n} from '../gen/processor/protos/processor'\nimport { DEFAULT_MAX_BLOCK, errorString, mergeProcessResults, USER_PROCESSOR, Utf8ArrayToStr } from '../service'\n\nimport { ServerError, Status } from 'nice-grpc'\nimport { Block, Log } from '@ethersproject/abstract-provider'\nimport { Trace } from '@sentio/sdk'\nimport { ProcessorState } from '../binds'\nimport { AccountProcessorState } from './account-processor'\nimport Long from 'long'\n\nexport class EthPlugin implements Plugin {\n name: string = 'EthPlugin'\n\n private eventHandlers: ((event: Log) => Promise<ProcessResult>)[] = []\n private traceHandlers: ((trace: Trace) => Promise<ProcessResult>)[] = []\n private blockHandlers: ((block: Block) => Promise<ProcessResult>)[] = []\n\n configure(config: ProcessConfigResponse): void {\n for (const processor of ProcessorState.INSTANCE.getValues()) {\n // If server favor incremental update this need to change\n // Start basic config for contract\n const chainId = processor.getChainId()\n // this.processorsByChainId.set(chainId, processor)\n\n const contractConfig: ContractConfig = {\n processorType: USER_PROCESSOR,\n contract: {\n name: processor.config.name,\n chainId: chainId.toString(),\n address: processor.config.address,\n abi: '',\n },\n intervalConfigs: [],\n logConfigs: [],\n traceConfigs: [],\n startBlock: processor.config.startBlock,\n endBlock: DEFAULT_MAX_BLOCK,\n instructionConfig: undefined,\n aptosEventConfigs: [],\n aptosCallConfigs: [],\n }\n if (processor.config.endBlock) {\n contractConfig.endBlock = processor.config.endBlock\n }\n\n // Step 1. Prepare all the block handlers\n for (const blockHandler of processor.blockHandlers) {\n const handlerId = this.blockHandlers.push(blockHandler.handler) - 1\n // TODO wrap the block handler into one\n\n contractConfig.intervalConfigs.push({\n slot: 0,\n slotInterval: blockHandler.blockInterval,\n minutes: 0,\n minutesInterval: blockHandler.timeIntervalInMinutes,\n handlerId: handlerId,\n })\n }\n\n // Step 2. Prepare all trace handlers\n for (const traceHandler of processor.traceHandlers) {\n const handlerId = this.traceHandlers.push(traceHandler.handler) - 1\n contractConfig.traceConfigs.push({\n signature: traceHandler.signature,\n handlerId: handlerId,\n })\n }\n\n // Step 3. Prepare all the event handlers\n for (const eventsHandler of processor.eventHandlers) {\n // associate id with filter\n const handlerId = this.eventHandlers.push(eventsHandler.handler) - 1\n const logConfig: LogHandlerConfig = {\n handlerId: handlerId,\n filters: [],\n }\n\n for (const filter of eventsHandler.filters) {\n if (!filter.topics) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'Topic should not be null')\n }\n const logFilter: LogFilter = {\n addressType: undefined,\n address: contractConfig.contract?.address,\n topics: [],\n }\n\n for (const ts of filter.topics) {\n let hashes: string[] = []\n if (Array.isArray(ts)) {\n hashes = hashes.concat(ts)\n } else if (ts) {\n hashes.push(ts)\n }\n logFilter.topics.push({ hashes: hashes })\n }\n logConfig.filters.push(logFilter)\n }\n contractConfig.logConfigs.push(logConfig)\n }\n\n // Finish up a contract\n config.contractConfigs.push(contractConfig)\n }\n\n // part 1.b prepare EVM account processors\n for (const processor of AccountProcessorState.INSTANCE.getValues()) {\n const accountConfig: AccountConfig = {\n address: processor.config.address,\n chainId: processor.getChainId().toString(),\n startBlock: processor.config.startBlock ? Long.fromValue(processor.config.startBlock) : Long.ZERO,\n aptosIntervalConfigs: [],\n intervalConfigs: [],\n logConfigs: [],\n }\n // TODO add interval\n for (const eventsHandler of processor.eventHandlers) {\n // associate id with filter\n const handlerId = this.eventHandlers.push(eventsHandler.handler) - 1\n const logConfig: LogHandlerConfig = {\n handlerId: handlerId,\n filters: [],\n }\n\n for (const filter of eventsHandler.filters) {\n if (!filter.topics) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'Topic should not be null')\n }\n const logFilter: LogFilter = {\n addressType: filter.addressType,\n address: filter.address,\n topics: [],\n }\n\n for (const ts of filter.topics) {\n let hashes: string[] = []\n if (Array.isArray(ts)) {\n hashes = hashes.concat(ts)\n } else if (ts) {\n hashes.push(ts)\n }\n logFilter.topics.push({ hashes: hashes })\n }\n logConfig.filters.push(logFilter)\n }\n accountConfig.logConfigs.push(logConfig)\n }\n\n config.accountConfigs.push(accountConfig)\n }\n }\n\n supportedHandlers = [HandlerType.ETH_LOG, HandlerType.ETH_BLOCK, HandlerType.ETH_TRACE]\n\n processBinding(request: DataBinding): Promise<ProcessResult> {\n // return Promise.resolve(undefined);\n switch (request.handlerType) {\n case HandlerType.ETH_LOG:\n return this.processLog(request)\n case HandlerType.ETH_TRACE:\n return this.processTrace(request)\n case HandlerType.ETH_BLOCK:\n return this.processBlock(request)\n default:\n throw new ServerError(Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType)\n }\n }\n\n async processLog(request: DataBinding): Promise<ProcessResult> {\n if (!request.data) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"Log can't be null\")\n }\n\n const promises: Promise<ProcessResult>[] = []\n let log: Log\n if (request.data.ethLog) {\n log = request.data.ethLog.log as Log\n } else {\n const jsonString = Utf8ArrayToStr(request.data.raw)\n log = JSON.parse(jsonString)\n }\n\n for (const handlerId of request.handlerIds) {\n const handler = this.eventHandlers[handlerId]\n promises.push(\n handler(log).catch((e) => {\n throw new ServerError(Status.INTERNAL, 'error processing log: ' + JSON.stringify(log) + '\\n' + errorString(e))\n })\n )\n }\n return mergeProcessResults(await Promise.all(promises))\n }\n\n async processTrace(binding: DataBinding): Promise<ProcessResult> {\n if (!binding.data) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"Trace can't be empty\")\n }\n let trace: Trace\n if (binding.data.ethTrace?.trace) {\n trace = binding.data.ethTrace.trace as Trace\n } else {\n const jsonString = Utf8ArrayToStr(binding.data.raw)\n trace = JSON.parse(jsonString)\n }\n\n const promises: Promise<ProcessResult>[] = []\n\n for (const handlerId of binding.handlerIds) {\n promises.push(\n this.traceHandlers[handlerId](trace).catch((e) => {\n throw new ServerError(\n Status.INTERNAL,\n 'error processing trace: ' + JSON.stringify(trace) + '\\n' + errorString(e)\n )\n })\n )\n }\n return mergeProcessResults(await Promise.all(promises))\n }\n\n async processBlock(binding: DataBinding): Promise<ProcessResult> {\n if (!binding.data) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"Block can't be empty\")\n }\n let block: Block\n if (binding.data.ethBlock?.block) {\n block = binding.data.ethBlock.block as Block\n } else {\n const jsonString = Utf8ArrayToStr(binding.data.raw)\n block = JSON.parse(jsonString)\n }\n\n const promises: Promise<ProcessResult>[] = []\n for (const handlerId of binding.handlerIds) {\n promises.push(\n this.blockHandlers[handlerId](block).catch((e) => {\n throw new ServerError(Status.INTERNAL, 'error processing block: ' + block.number + '\\n' + errorString(e))\n })\n )\n }\n return mergeProcessResults(await Promise.all(promises))\n }\n}\n\nPluginManager.INSTANCE.register(new EthPlugin())\n"]}
@@ -0,0 +1,26 @@
1
+ import { BaseContext } from './base-context';
2
+ import { NamedResultDescriptor } from './metadata';
3
+ import { MapStateStorage } from '../state/state-storage';
4
+ export interface Event {
5
+ distinctId: string;
6
+ payload?: Record<string, string>;
7
+ }
8
+ export interface TrackerOptions {
9
+ totalByDay?: boolean;
10
+ unique?: boolean;
11
+ distinctByDays?: number[];
12
+ }
13
+ export declare class EventTrackerState extends MapStateStorage<EventTracker> {
14
+ static INSTANCE: EventTrackerState;
15
+ }
16
+ export declare class EventTracker extends NamedResultDescriptor {
17
+ static DEFAULT_OPTIONS: TrackerOptions;
18
+ static register(eventName: string, options?: TrackerOptions): EventTracker;
19
+ options: TrackerOptions;
20
+ protected constructor(eventName: string, options: TrackerOptions);
21
+ trackEvent(ctx: BaseContext, event: Event): void;
22
+ }
23
+ export declare class AccountEventTracker extends EventTracker {
24
+ static DEFAULT_OPTIONS: TrackerOptions;
25
+ static register(eventName?: string, options?: TrackerOptions): EventTracker;
26
+ }
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AccountEventTracker = exports.EventTracker = exports.EventTrackerState = void 0;
4
+ const metadata_1 = require("./metadata");
5
+ const state_storage_1 = require("../state/state-storage");
6
+ class EventTrackerState extends state_storage_1.MapStateStorage {
7
+ static INSTANCE = new EventTrackerState();
8
+ }
9
+ exports.EventTrackerState = EventTrackerState;
10
+ // Track Event with an identity associate with it
11
+ class EventTracker extends metadata_1.NamedResultDescriptor {
12
+ static DEFAULT_OPTIONS = {
13
+ totalByDay: true,
14
+ unique: true,
15
+ };
16
+ static register(eventName, options) {
17
+ const tracker = new EventTracker(eventName, { ...EventTracker.DEFAULT_OPTIONS, ...options });
18
+ return EventTrackerState.INSTANCE.getOrSetValue(eventName, tracker);
19
+ }
20
+ options;
21
+ constructor(eventName, options) {
22
+ super(eventName);
23
+ this.options = options;
24
+ }
25
+ trackEvent(ctx, event) {
26
+ const res = {
27
+ metadata: ctx.getMetaData(this.name, {}),
28
+ distinctEntityId: event.distinctId,
29
+ attributes: JSON.stringify({}),
30
+ runtimeInfo: undefined,
31
+ };
32
+ ctx.res.events.push(res);
33
+ }
34
+ }
35
+ exports.EventTracker = EventTracker;
36
+ class AccountEventTracker extends EventTracker {
37
+ static DEFAULT_OPTIONS = {
38
+ totalByDay: true,
39
+ unique: true,
40
+ distinctByDays: [1, 7, 30],
41
+ };
42
+ static register(eventName, options) {
43
+ if (eventName) {
44
+ eventName = ['user', eventName].join('_');
45
+ }
46
+ else {
47
+ eventName = 'user';
48
+ }
49
+ const tracker = new AccountEventTracker(eventName, { ...AccountEventTracker.DEFAULT_OPTIONS, ...options });
50
+ return EventTrackerState.INSTANCE.getOrSetValue(eventName, tracker);
51
+ }
52
+ }
53
+ exports.AccountEventTracker = AccountEventTracker;
54
+ //# sourceMappingURL=event-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-tracker.js","sourceRoot":"","sources":["../../src/core/event-tracker.ts"],"names":[],"mappings":";;;AAEA,yCAAkD;AAClD,0DAAwD;AAgBxD,MAAa,iBAAkB,SAAQ,+BAA6B;IAClE,MAAM,CAAC,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAA;;AAD3C,8CAEC;AAED,iDAAiD;AACjD,MAAa,YAAa,SAAQ,gCAAqB;IACrD,MAAM,CAAC,eAAe,GAAmB;QACvC,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;KACb,CAAA;IAED,MAAM,CAAC,QAAQ,CAAC,SAAiB,EAAE,OAAwB;QACzD,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,SAAS,EAAE,EAAE,GAAG,YAAY,CAAC,eAAe,EAAE,GAAG,OAAO,EAAE,CAAC,CAAA;QAC5F,OAAO,iBAAiB,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IACrE,CAAC;IAED,OAAO,CAAgB;IACvB,YAAsB,SAAiB,EAAE,OAAuB;QAC9D,KAAK,CAAC,SAAS,CAAC,CAAA;QAChB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,UAAU,CAAC,GAAgB,EAAE,KAAY;QACvC,MAAM,GAAG,GAAwB;YAC/B,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACxC,gBAAgB,EAAE,KAAK,CAAC,UAAU;YAClC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,WAAW,EAAE,SAAS;SACvB,CAAA;QACD,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC1B,CAAC;;AAzBH,oCA0BC;AAED,MAAa,mBAAoB,SAAQ,YAAY;IACnD,MAAM,CAAC,eAAe,GAAmB;QACvC,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;KAC3B,CAAA;IAED,MAAM,CAAC,QAAQ,CAAC,SAAkB,EAAE,OAAwB;QAC1D,IAAI,SAAS,EAAE;YACb,SAAS,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;SAC1C;aAAM;YACL,SAAS,GAAG,MAAM,CAAA;SACnB;QACD,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAC,SAAS,EAAE,EAAE,GAAG,mBAAmB,CAAC,eAAe,EAAE,GAAG,OAAO,EAAE,CAAC,CAAA;QAC1G,OAAO,iBAAiB,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IACrE,CAAC;;AAfH,kDAgBC","sourcesContent":["import { BaseContext } from './base-context'\nimport { EventTrackingResult } from '../gen'\nimport { NamedResultDescriptor } from './metadata'\nimport { MapStateStorage } from '../state/state-storage'\n\nexport interface Event {\n // The unique identifier of main identity associate with an event\n // .e.g user id / toekn address / account address / contract address id\n //\n distinctId: string\n payload?: Record<string, string>\n}\n\nexport interface TrackerOptions {\n totalByDay?: boolean\n unique?: boolean\n distinctByDays?: number[]\n}\n\nexport class EventTrackerState extends MapStateStorage<EventTracker> {\n static INSTANCE = new EventTrackerState()\n}\n\n// Track Event with an identity associate with it\nexport class EventTracker extends NamedResultDescriptor {\n static DEFAULT_OPTIONS: TrackerOptions = {\n totalByDay: true,\n unique: true,\n }\n\n static register(eventName: string, options?: TrackerOptions) {\n const tracker = new EventTracker(eventName, { ...EventTracker.DEFAULT_OPTIONS, ...options })\n return EventTrackerState.INSTANCE.getOrSetValue(eventName, tracker)\n }\n\n options: TrackerOptions\n protected constructor(eventName: string, options: TrackerOptions) {\n super(eventName)\n this.options = options\n }\n\n trackEvent(ctx: BaseContext, event: Event) {\n const res: EventTrackingResult = {\n metadata: ctx.getMetaData(this.name, {}),\n distinctEntityId: event.distinctId,\n attributes: JSON.stringify({}),\n runtimeInfo: undefined,\n }\n ctx.res.events.push(res)\n }\n}\n\nexport class AccountEventTracker extends EventTracker {\n static DEFAULT_OPTIONS: TrackerOptions = {\n totalByDay: true,\n unique: true,\n distinctByDays: [1, 7, 30],\n }\n\n static register(eventName?: string, options?: TrackerOptions) {\n if (eventName) {\n eventName = ['user', eventName].join('_')\n } else {\n eventName = 'user'\n }\n const tracker = new AccountEventTracker(eventName, { ...AccountEventTracker.DEFAULT_OPTIONS, ...options })\n return EventTrackerState.INSTANCE.getOrSetValue(eventName, tracker)\n }\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import { BaseContext } from './base-context';
2
+ import { NamedResultDescriptor } from './metadata';
3
+ import { MapStateStorage } from '../state/state-storage';
4
+ export declare type Export = Record<string, any>;
5
+ export declare class ExporterState extends MapStateStorage<Exporter> {
6
+ static INSTANCE: ExporterState;
7
+ }
8
+ export declare class Exporter extends NamedResultDescriptor {
9
+ static register(name: string, channel: string): Exporter;
10
+ channel: string;
11
+ protected constructor(name: string, channel: string);
12
+ emit(ctx: BaseContext, data: Export): void;
13
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Exporter = exports.ExporterState = void 0;
4
+ const metadata_1 = require("./metadata");
5
+ const state_storage_1 = require("../state/state-storage");
6
+ class ExporterState extends state_storage_1.MapStateStorage {
7
+ static INSTANCE = new ExporterState();
8
+ }
9
+ exports.ExporterState = ExporterState;
10
+ class Exporter extends metadata_1.NamedResultDescriptor {
11
+ static register(name, channel) {
12
+ const exporter = new Exporter(name, channel);
13
+ return ExporterState.INSTANCE.getOrSetValue(name, exporter);
14
+ }
15
+ channel;
16
+ constructor(name, channel) {
17
+ super(name);
18
+ this.channel = channel;
19
+ }
20
+ emit(ctx, data) {
21
+ const res = {
22
+ metadata: ctx.getMetaData(this.name, {}),
23
+ payload: JSON.stringify(data),
24
+ runtimeInfo: undefined,
25
+ };
26
+ ctx.res.exports.push(res);
27
+ }
28
+ }
29
+ exports.Exporter = Exporter;
30
+ //# sourceMappingURL=exporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exporter.js","sourceRoot":"","sources":["../../src/core/exporter.ts"],"names":[],"mappings":";;;AAEA,yCAAkD;AAClD,0DAAwD;AAIxD,MAAa,aAAc,SAAQ,+BAAyB;IAC1D,MAAM,CAAC,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAA;;AADvC,sCAEC;AAED,MAAa,QAAS,SAAQ,gCAAqB;IACjD,MAAM,CAAC,QAAQ,CAAC,IAAY,EAAE,OAAe;QAC3C,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAC5C,OAAO,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAC7D,CAAC;IAED,OAAO,CAAQ;IACf,YAAsB,IAAY,EAAE,OAAe;QACjD,KAAK,CAAC,IAAI,CAAC,CAAA;QACX,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,IAAI,CAAC,GAAgB,EAAE,IAAY;QACjC,MAAM,GAAG,GAAiB;YACxB,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACxC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAC7B,WAAW,EAAE,SAAS;SACvB,CAAA;QACD,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC3B,CAAC;CACF;AApBD,4BAoBC","sourcesContent":["import { BaseContext } from './base-context'\nimport { ExportResult } from '@sentio/sdk'\nimport { NamedResultDescriptor } from './metadata'\nimport { MapStateStorage } from '../state/state-storage'\n\nexport type Export = Record<string, any>\n\nexport class ExporterState extends MapStateStorage<Exporter> {\n static INSTANCE = new ExporterState()\n}\n\nexport class Exporter extends NamedResultDescriptor {\n static register(name: string, channel: string) {\n const exporter = new Exporter(name, channel)\n return ExporterState.INSTANCE.getOrSetValue(name, exporter)\n }\n\n channel: string\n protected constructor(name: string, channel: string) {\n super(name)\n this.channel = channel\n }\n\n emit(ctx: BaseContext, data: Export) {\n const res: ExportResult = {\n metadata: ctx.getMetaData(this.name, {}),\n payload: JSON.stringify(data),\n runtimeInfo: undefined,\n }\n ctx.res.exports.push(res)\n }\n}\n"]}
@@ -0,0 +1,10 @@
1
+ import { BaseContract } from '@ethersproject/contracts';
2
+ import { BoundContractView, ContractView } from './context';
3
+ import { BindOptions } from './bind-options';
4
+ import { BaseProcessor } from './base-processor';
5
+ export declare class GenericProcessor extends BaseProcessor<BaseContract, BoundContractView<BaseContract, ContractView<BaseContract>>> {
6
+ eventABI: string[];
7
+ constructor(eventABI: string[], options: BindOptions);
8
+ protected CreateBoundContractView(): BoundContractView<BaseContract, ContractView<BaseContract>>;
9
+ static bind(eventABI: string[] | string, options: BindOptions): GenericProcessor;
10
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GenericProcessor = void 0;
4
+ const contracts_1 = require("@ethersproject/contracts");
5
+ const context_1 = require("./context");
6
+ const base_processor_1 = require("./base-processor");
7
+ const provider_1 = require("../provider");
8
+ const binds_1 = require("../binds");
9
+ class GenericProcessor extends base_processor_1.BaseProcessor {
10
+ eventABI;
11
+ constructor(eventABI, options) {
12
+ super(options);
13
+ this.eventABI = eventABI;
14
+ }
15
+ CreateBoundContractView() {
16
+ const contract = new contracts_1.BaseContract(this.config.address, this.eventABI, (0, provider_1.getProvider)(this.config.network));
17
+ return new context_1.BoundContractView(new context_1.ContractView(contract));
18
+ }
19
+ static bind(eventABI, options) {
20
+ if (!Array.isArray(eventABI)) {
21
+ eventABI = [eventABI];
22
+ }
23
+ if (!options.name) {
24
+ options.name = 'Generic';
25
+ }
26
+ const processor = new GenericProcessor(eventABI, options);
27
+ (0, binds_1.addProcessor)(options, processor);
28
+ return processor;
29
+ }
30
+ }
31
+ exports.GenericProcessor = GenericProcessor;
32
+ //# sourceMappingURL=generic-processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generic-processor.js","sourceRoot":"","sources":["../../src/core/generic-processor.ts"],"names":[],"mappings":";;;AAAA,wDAAuD;AACvD,uCAA2D;AAE3D,qDAAgD;AAChD,0CAAyC;AACzC,oCAAuC;AAEvC,MAAa,gBAAiB,SAAQ,8BAGrC;IACC,QAAQ,CAAU;IAClB,YAAY,QAAkB,EAAE,OAAoB;QAClD,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;IAES,uBAAuB;QAC/B,MAAM,QAAQ,GAAG,IAAI,wBAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAA,sBAAW,EAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;QACvG,OAAO,IAAI,2BAAiB,CAAC,IAAI,sBAAY,CAAe,QAAQ,CAAC,CAAC,CAAA;IACxE,CAAC;IAEM,MAAM,CAAC,IAAI,CAAC,QAA2B,EAAE,OAAoB;QAClE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC5B,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAA;SACtB;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACjB,OAAO,CAAC,IAAI,GAAG,SAAS,CAAA;SACzB;QACD,MAAM,SAAS,GAAG,IAAI,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QACzD,IAAA,oBAAY,EAAC,OAAO,EAAE,SAAS,CAAC,CAAA;QAChC,OAAO,SAAS,CAAA;IAClB,CAAC;CACF;AA1BD,4CA0BC","sourcesContent":["import { BaseContract } from '@ethersproject/contracts'\nimport { BoundContractView, ContractView } from './context'\nimport { BindOptions } from './bind-options'\nimport { BaseProcessor } from './base-processor'\nimport { getProvider } from '../provider'\nimport { addProcessor } from '../binds'\n\nexport class GenericProcessor extends BaseProcessor<\n BaseContract,\n BoundContractView<BaseContract, ContractView<BaseContract>>\n> {\n eventABI: string[]\n constructor(eventABI: string[], options: BindOptions) {\n super(options)\n this.eventABI = eventABI\n }\n\n protected CreateBoundContractView(): BoundContractView<BaseContract, ContractView<BaseContract>> {\n const contract = new BaseContract(this.config.address, this.eventABI, getProvider(this.config.network))\n return new BoundContractView(new ContractView<BaseContract>(contract))\n }\n\n public static bind(eventABI: string[] | string, options: BindOptions): GenericProcessor {\n if (!Array.isArray(eventABI)) {\n eventABI = [eventABI]\n }\n if (!options.name) {\n options.name = 'Generic'\n }\n const processor = new GenericProcessor(eventABI, options)\n addProcessor(options, processor)\n return processor\n }\n}\n"]}