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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (333) hide show
  1. package/lib/aptos/codegen/codegen.d.ts +1 -3
  2. package/lib/aptos/codegen/codegen.js +12 -16
  3. package/lib/aptos/codegen/codegen.js.map +1 -1
  4. package/lib/aptos/network.js +1 -1
  5. package/lib/aptos/network.js.map +1 -1
  6. package/lib/aptos/run-codegen.js +2 -2
  7. package/lib/aptos/run-codegen.js.map +1 -1
  8. package/lib/core/big-decimal.d.ts +2 -0
  9. package/lib/core/big-decimal.js +8 -0
  10. package/lib/core/big-decimal.js.map +1 -1
  11. package/lib/{chain.d.ts → core/chain.d.ts} +0 -0
  12. package/lib/{chain.js → core/chain.js} +0 -0
  13. package/lib/core/chain.js.map +1 -0
  14. package/lib/core/index.d.ts +2 -4
  15. package/lib/core/index.js +2 -4
  16. package/lib/core/index.js.map +1 -1
  17. package/lib/core/numberish.d.ts +0 -2
  18. package/lib/core/numberish.js +0 -9
  19. package/lib/core/numberish.js.map +1 -1
  20. package/lib/core/sui-plugin.js +1 -1
  21. package/lib/core/sui-plugin.js.map +1 -1
  22. package/lib/core/sui-processor.d.ts +1 -1
  23. package/lib/core/sui-processor.js +1 -1
  24. package/lib/core/sui-processor.js.map +1 -1
  25. package/lib/eth/account-processor.d.ts +4 -4
  26. package/lib/eth/account-processor.js +4 -4
  27. package/lib/eth/account-processor.js.map +1 -1
  28. package/lib/eth/base-processor-template.d.ts +5 -5
  29. package/lib/eth/base-processor-template.js +1 -1
  30. package/lib/eth/base-processor-template.js.map +1 -1
  31. package/lib/eth/base-processor.d.ts +5 -5
  32. package/lib/eth/base-processor.js +1 -1
  33. package/lib/eth/base-processor.js.map +1 -1
  34. package/lib/{core → eth}/bind-options.d.ts +0 -0
  35. package/lib/{core → eth}/bind-options.js +0 -0
  36. package/lib/eth/bind-options.js.map +1 -0
  37. package/lib/eth/binds.d.ts +2 -2
  38. package/lib/eth/binds.js +1 -1
  39. package/lib/eth/binds.js.map +1 -1
  40. package/lib/{builtin → eth/builtin}/eacaggregatorproxy/index.d.ts +0 -0
  41. package/lib/{builtin → eth/builtin}/eacaggregatorproxy/index.js +0 -0
  42. package/lib/eth/builtin/eacaggregatorproxy/index.js.map +1 -0
  43. package/lib/{builtin → eth/builtin}/eacaggregatorproxy/test-utils.d.ts +0 -0
  44. package/lib/{builtin → eth/builtin}/eacaggregatorproxy/test-utils.js +0 -0
  45. package/lib/eth/builtin/eacaggregatorproxy/test-utils.js.map +1 -0
  46. package/lib/{builtin → eth/builtin}/erc1155/index.d.ts +0 -0
  47. package/lib/{builtin → eth/builtin}/erc1155/index.js +0 -0
  48. package/lib/eth/builtin/erc1155/index.js.map +1 -0
  49. package/lib/{builtin → eth/builtin}/erc1155/test-utils.d.ts +0 -0
  50. package/lib/{builtin → eth/builtin}/erc1155/test-utils.js +0 -0
  51. package/lib/eth/builtin/erc1155/test-utils.js.map +1 -0
  52. package/lib/{builtin → eth/builtin}/erc20/index.d.ts +0 -0
  53. package/lib/{builtin → eth/builtin}/erc20/index.js +0 -0
  54. package/lib/eth/builtin/erc20/index.js.map +1 -0
  55. package/lib/{builtin → eth/builtin}/erc20/test-utils.d.ts +0 -0
  56. package/lib/{builtin → eth/builtin}/erc20/test-utils.js +0 -0
  57. package/lib/eth/builtin/erc20/test-utils.js.map +1 -0
  58. package/lib/{builtin → eth/builtin}/erc20bytes/index.d.ts +0 -0
  59. package/lib/{builtin → eth/builtin}/erc20bytes/index.js +0 -0
  60. package/lib/eth/builtin/erc20bytes/index.js.map +1 -0
  61. package/lib/{builtin → eth/builtin}/erc20bytes/test-utils.d.ts +0 -0
  62. package/lib/{builtin → eth/builtin}/erc20bytes/test-utils.js +0 -0
  63. package/lib/eth/builtin/erc20bytes/test-utils.js.map +1 -0
  64. package/lib/{builtin → eth/builtin}/erc721/index.d.ts +0 -0
  65. package/lib/{builtin → eth/builtin}/erc721/index.js +0 -0
  66. package/lib/eth/builtin/erc721/index.js.map +1 -0
  67. package/lib/{builtin → eth/builtin}/erc721/test-utils.d.ts +0 -0
  68. package/lib/{builtin → eth/builtin}/erc721/test-utils.js +0 -0
  69. package/lib/eth/builtin/erc721/test-utils.js.map +1 -0
  70. package/lib/{builtin → eth/builtin}/index.d.ts +0 -0
  71. package/lib/{builtin → eth/builtin}/index.js +0 -0
  72. package/lib/eth/builtin/index.js.map +1 -0
  73. package/lib/{builtin → eth/builtin}/internal/EACAggregatorProxy.d.ts +0 -0
  74. package/lib/{builtin → eth/builtin}/internal/EACAggregatorProxy.js +0 -0
  75. package/lib/eth/builtin/internal/EACAggregatorProxy.js.map +1 -0
  76. package/lib/{builtin → eth/builtin}/internal/ERC1155.d.ts +0 -0
  77. package/lib/{builtin → eth/builtin}/internal/ERC1155.js +0 -0
  78. package/lib/eth/builtin/internal/ERC1155.js.map +1 -0
  79. package/lib/{builtin → eth/builtin}/internal/ERC20.d.ts +0 -0
  80. package/lib/{builtin → eth/builtin}/internal/ERC20.js +0 -0
  81. package/lib/eth/builtin/internal/ERC20.js.map +1 -0
  82. package/lib/{builtin → eth/builtin}/internal/ERC20Bytes.d.ts +0 -0
  83. package/lib/{builtin → eth/builtin}/internal/ERC20Bytes.js +0 -0
  84. package/lib/eth/builtin/internal/ERC20Bytes.js.map +1 -0
  85. package/lib/{builtin → eth/builtin}/internal/ERC721.d.ts +0 -0
  86. package/lib/{builtin → eth/builtin}/internal/ERC721.js +0 -0
  87. package/lib/eth/builtin/internal/ERC721.js.map +1 -0
  88. package/lib/{builtin → eth/builtin}/internal/WETH9.d.ts +0 -0
  89. package/lib/{builtin → eth/builtin}/internal/WETH9.js +0 -0
  90. package/lib/eth/builtin/internal/WETH9.js.map +1 -0
  91. package/lib/{builtin → eth/builtin}/internal/common.d.ts +0 -0
  92. package/lib/{builtin → eth/builtin}/internal/common.js +0 -0
  93. package/lib/eth/builtin/internal/common.js.map +1 -0
  94. package/lib/{builtin → eth/builtin}/internal/eacaggregatorproxy_processor.d.ts +1 -1
  95. package/lib/{builtin → eth/builtin}/internal/eacaggregatorproxy_processor.js +1 -1
  96. package/lib/eth/builtin/internal/eacaggregatorproxy_processor.js.map +1 -0
  97. package/lib/{builtin → eth/builtin}/internal/erc1155_processor.d.ts +1 -1
  98. package/lib/{builtin → eth/builtin}/internal/erc1155_processor.js +1 -1
  99. package/lib/eth/builtin/internal/erc1155_processor.js.map +1 -0
  100. package/lib/{builtin → eth/builtin}/internal/erc20_processor.d.ts +1 -1
  101. package/lib/{builtin → eth/builtin}/internal/erc20_processor.js +1 -1
  102. package/lib/eth/builtin/internal/erc20_processor.js.map +1 -0
  103. package/lib/{builtin → eth/builtin}/internal/erc20bytes_processor.d.ts +1 -1
  104. package/lib/{builtin → eth/builtin}/internal/erc20bytes_processor.js +1 -1
  105. package/lib/eth/builtin/internal/erc20bytes_processor.js.map +1 -0
  106. package/lib/{builtin → eth/builtin}/internal/erc721_processor.d.ts +1 -1
  107. package/lib/{builtin → eth/builtin}/internal/erc721_processor.js +1 -1
  108. package/lib/eth/builtin/internal/erc721_processor.js.map +1 -0
  109. package/lib/{builtin → eth/builtin}/internal/factories/EACAggregatorProxy__factory.d.ts +0 -0
  110. package/lib/{builtin → eth/builtin}/internal/factories/EACAggregatorProxy__factory.js +0 -0
  111. package/lib/eth/builtin/internal/factories/EACAggregatorProxy__factory.js.map +1 -0
  112. package/lib/{builtin → eth/builtin}/internal/factories/ERC1155__factory.d.ts +0 -0
  113. package/lib/{builtin → eth/builtin}/internal/factories/ERC1155__factory.js +0 -0
  114. package/lib/eth/builtin/internal/factories/ERC1155__factory.js.map +1 -0
  115. package/lib/{builtin → eth/builtin}/internal/factories/ERC20Bytes__factory.d.ts +0 -0
  116. package/lib/{builtin → eth/builtin}/internal/factories/ERC20Bytes__factory.js +0 -0
  117. package/lib/eth/builtin/internal/factories/ERC20Bytes__factory.js.map +1 -0
  118. package/lib/{builtin → eth/builtin}/internal/factories/ERC20__factory.d.ts +0 -0
  119. package/lib/{builtin → eth/builtin}/internal/factories/ERC20__factory.js +0 -0
  120. package/lib/eth/builtin/internal/factories/ERC20__factory.js.map +1 -0
  121. package/lib/{builtin → eth/builtin}/internal/factories/ERC721__factory.d.ts +0 -0
  122. package/lib/{builtin → eth/builtin}/internal/factories/ERC721__factory.js +0 -0
  123. package/lib/eth/builtin/internal/factories/ERC721__factory.js.map +1 -0
  124. package/lib/{builtin → eth/builtin}/internal/factories/WETH9__factory.d.ts +0 -0
  125. package/lib/{builtin → eth/builtin}/internal/factories/WETH9__factory.js +0 -0
  126. package/lib/eth/builtin/internal/factories/WETH9__factory.js.map +1 -0
  127. package/lib/{builtin → eth/builtin}/internal/factories/index.d.ts +0 -0
  128. package/lib/{builtin → eth/builtin}/internal/factories/index.js +0 -0
  129. package/lib/eth/builtin/internal/factories/index.js.map +1 -0
  130. package/lib/{builtin → eth/builtin}/internal/index.d.ts +0 -0
  131. package/lib/{builtin → eth/builtin}/internal/index.js +0 -0
  132. package/lib/eth/builtin/internal/index.js.map +1 -0
  133. package/lib/{builtin → eth/builtin}/internal/weth9_processor.d.ts +1 -1
  134. package/lib/{builtin → eth/builtin}/internal/weth9_processor.js +1 -1
  135. package/lib/eth/builtin/internal/weth9_processor.js.map +1 -0
  136. package/lib/{builtin → eth/builtin}/weth9/index.d.ts +0 -0
  137. package/lib/{builtin → eth/builtin}/weth9/index.js +0 -0
  138. package/lib/eth/builtin/weth9/index.js.map +1 -0
  139. package/lib/{builtin → eth/builtin}/weth9/test-utils.d.ts +0 -0
  140. package/lib/{builtin → eth/builtin}/weth9/test-utils.js +0 -0
  141. package/lib/eth/builtin/weth9/test-utils.js.map +1 -0
  142. package/lib/eth/codegen/codegen.d.ts +1 -0
  143. package/lib/eth/codegen/codegen.js +53 -0
  144. package/lib/eth/codegen/codegen.js.map +1 -0
  145. package/lib/{target-ethers-sentio/index.d.cts → eth/codegen/ethers-sentio.d.ts} +1 -1
  146. package/lib/eth/codegen/ethers-sentio.js +57 -0
  147. package/lib/eth/codegen/ethers-sentio.js.map +1 -0
  148. package/lib/{target-ethers-sentio/event-handler.d.cts → eth/codegen/event-handler.d.ts} +0 -0
  149. package/lib/eth/codegen/event-handler.js +46 -0
  150. package/lib/eth/codegen/event-handler.js.map +1 -0
  151. package/lib/{target-ethers-sentio/file.d.cts → eth/codegen/file.d.ts} +0 -0
  152. package/lib/{target-ethers-sentio/file.cjs → eth/codegen/file.js} +27 -34
  153. package/lib/eth/codegen/file.js.map +1 -0
  154. package/lib/{target-ethers-sentio/functions-handler.d.cts → eth/codegen/functions-handler.d.ts} +0 -0
  155. package/lib/{target-ethers-sentio/functions-handler.cjs → eth/codegen/functions-handler.js} +13 -18
  156. package/lib/eth/codegen/functions-handler.js.map +1 -0
  157. package/lib/eth/codegen/index.d.ts +1 -0
  158. package/lib/eth/codegen/index.js +2 -0
  159. package/lib/eth/codegen/index.js.map +1 -0
  160. package/lib/{target-ethers-sentio/types.d.cts → eth/codegen/types.d.ts} +0 -0
  161. package/lib/{target-ethers-sentio/types.cjs → eth/codegen/types.js} +4 -10
  162. package/lib/eth/codegen/types.js.map +1 -0
  163. package/lib/{target-ethers-sentio/view-function.d.cts → eth/codegen/view-function.d.ts} +0 -0
  164. package/lib/{target-ethers-sentio/view-function.cjs → eth/codegen/view-function.js} +13 -20
  165. package/lib/eth/codegen/view-function.js.map +1 -0
  166. package/lib/{core → eth}/context.d.ts +3 -3
  167. package/lib/{core → eth}/context.js +3 -3
  168. package/lib/eth/context.js.map +1 -0
  169. package/lib/eth/error.d.ts +1 -0
  170. package/lib/eth/error.js +3 -0
  171. package/lib/eth/error.js.map +1 -0
  172. package/lib/eth/eth.d.ts +10 -2
  173. package/lib/eth/eth.js +43 -1
  174. package/lib/eth/eth.js.map +1 -1
  175. package/lib/eth/generic-processor.d.ts +2 -2
  176. package/lib/eth/generic-processor.js +1 -1
  177. package/lib/eth/generic-processor.js.map +1 -1
  178. package/lib/eth/generic-processor.test.js.map +1 -1
  179. package/lib/eth/index.d.ts +4 -1
  180. package/lib/eth/index.js +4 -1
  181. package/lib/eth/index.js.map +1 -1
  182. package/lib/eth/run-codegen.d.ts +2 -0
  183. package/lib/eth/run-codegen.js +12 -0
  184. package/lib/eth/run-codegen.js.map +1 -0
  185. package/lib/index.d.ts +1 -3
  186. package/lib/index.js +1 -5
  187. package/lib/index.js.map +1 -1
  188. package/lib/solana/codegen/codegen.d.ts +1 -1
  189. package/lib/solana/codegen/codegen.js +1 -1
  190. package/lib/solana/codegen/codegen.js.map +1 -1
  191. package/lib/solana/run-codegen.js +2 -2
  192. package/lib/solana/run-codegen.js.map +1 -1
  193. package/lib/testing/test-processor-server.js +1 -1
  194. package/lib/testing/test-processor-server.js.map +1 -1
  195. package/lib/testing/test-provider.js +1 -1
  196. package/lib/testing/test-provider.js.map +1 -1
  197. package/lib/tsup.config.ts +3 -0
  198. package/lib/utils/dex-price.js +2 -2
  199. package/lib/utils/dex-price.js.map +1 -1
  200. package/lib/utils/token.d.ts +0 -1
  201. package/lib/utils/token.js +17 -28
  202. package/lib/utils/token.js.map +1 -1
  203. package/package.json +22 -21
  204. package/src/aptos/codegen/codegen.ts +13 -22
  205. package/src/aptos/codegen/tsconfig.json +1 -1
  206. package/src/aptos/network.ts +1 -1
  207. package/src/aptos/run-codegen.ts +2 -2
  208. package/src/core/big-decimal.ts +11 -0
  209. package/src/{chain.ts → core/chain.ts} +0 -0
  210. package/src/core/index.ts +2 -5
  211. package/src/core/numberish.ts +0 -11
  212. package/src/core/sui-plugin.ts +1 -1
  213. package/src/core/sui-processor.ts +1 -1
  214. package/src/{abis → eth/abis}/EACAggregatorProxy.json +0 -0
  215. package/src/{abis → eth/abis}/ERC1155.json +0 -0
  216. package/src/{abis → eth/abis}/ERC20.json +0 -0
  217. package/src/{abis → eth/abis}/ERC20Bytes.json +0 -0
  218. package/src/{abis → eth/abis}/ERC721.json +0 -0
  219. package/src/{abis → eth/abis}/WETH9.json +0 -0
  220. package/src/eth/account-processor.ts +7 -7
  221. package/src/eth/base-processor-template.ts +5 -5
  222. package/src/eth/base-processor.ts +6 -6
  223. package/src/{core → eth}/bind-options.ts +0 -0
  224. package/src/eth/binds.ts +2 -2
  225. package/src/{builtin → eth/builtin}/eacaggregatorproxy/index.ts +0 -0
  226. package/src/{builtin → eth/builtin}/eacaggregatorproxy/test-utils.ts +0 -0
  227. package/src/{builtin → eth/builtin}/erc1155/index.ts +0 -0
  228. package/src/{builtin → eth/builtin}/erc1155/test-utils.ts +0 -0
  229. package/src/{builtin → eth/builtin}/erc20/index.ts +0 -0
  230. package/src/{builtin → eth/builtin}/erc20/test-utils.ts +0 -0
  231. package/src/{builtin → eth/builtin}/erc20bytes/index.ts +0 -0
  232. package/src/{builtin → eth/builtin}/erc20bytes/test-utils.ts +0 -0
  233. package/src/{builtin → eth/builtin}/erc721/index.ts +0 -0
  234. package/src/{builtin → eth/builtin}/erc721/test-utils.ts +0 -0
  235. package/src/{builtin → eth/builtin}/index.ts +0 -0
  236. package/src/{builtin → eth/builtin}/internal/EACAggregatorProxy.ts +0 -0
  237. package/src/{builtin → eth/builtin}/internal/ERC1155.ts +0 -0
  238. package/src/{builtin → eth/builtin}/internal/ERC20.ts +0 -0
  239. package/src/{builtin → eth/builtin}/internal/ERC20Bytes.ts +0 -0
  240. package/src/{builtin → eth/builtin}/internal/ERC721.ts +0 -0
  241. package/src/{builtin → eth/builtin}/internal/WETH9.ts +0 -0
  242. package/src/{builtin → eth/builtin}/internal/common.ts +0 -0
  243. package/src/{builtin → eth/builtin}/internal/eacaggregatorproxy_processor.ts +1 -1
  244. package/src/{builtin → eth/builtin}/internal/erc1155_processor.ts +1 -1
  245. package/src/{builtin → eth/builtin}/internal/erc20_processor.ts +1 -1
  246. package/src/{builtin → eth/builtin}/internal/erc20bytes_processor.ts +1 -1
  247. package/src/{builtin → eth/builtin}/internal/erc721_processor.ts +1 -1
  248. package/src/{builtin → eth/builtin}/internal/factories/EACAggregatorProxy__factory.ts +0 -0
  249. package/src/{builtin → eth/builtin}/internal/factories/ERC1155__factory.ts +0 -0
  250. package/src/{builtin → eth/builtin}/internal/factories/ERC20Bytes__factory.ts +0 -0
  251. package/src/{builtin → eth/builtin}/internal/factories/ERC20__factory.ts +0 -0
  252. package/src/{builtin → eth/builtin}/internal/factories/ERC721__factory.ts +0 -0
  253. package/src/{builtin → eth/builtin}/internal/factories/WETH9__factory.ts +0 -0
  254. package/src/{builtin → eth/builtin}/internal/factories/index.ts +0 -0
  255. package/src/{builtin → eth/builtin}/internal/index.ts +0 -0
  256. package/src/{builtin → eth/builtin}/internal/weth9_processor.ts +1 -1
  257. package/src/{builtin → eth/builtin}/weth9/index.ts +0 -0
  258. package/src/{builtin → eth/builtin}/weth9/test-utils.ts +0 -0
  259. package/src/eth/codegen/codegen.ts +62 -0
  260. package/src/{target-ethers-sentio/index.cts → eth/codegen/ethers-sentio.ts} +2 -2
  261. package/src/{target-ethers-sentio/event-handler.cts → eth/codegen/event-handler.ts} +2 -2
  262. package/src/{target-ethers-sentio/file.cts → eth/codegen/file.ts} +6 -6
  263. package/src/{target-ethers-sentio/functions-handler.cts → eth/codegen/functions-handler.ts} +4 -4
  264. package/src/eth/codegen/index.ts +1 -0
  265. package/src/eth/codegen/tsconfig.json +8 -0
  266. package/src/{target-ethers-sentio/types.cts → eth/codegen/types.ts} +1 -1
  267. package/src/{target-ethers-sentio/view-function.cts → eth/codegen/view-function.ts} +5 -3
  268. package/src/{core → eth}/context.ts +4 -4
  269. package/src/eth/error.ts +4 -0
  270. package/src/eth/eth.ts +53 -3
  271. package/src/eth/generic-processor.ts +2 -2
  272. package/src/eth/index.ts +5 -3
  273. package/src/eth/run-codegen.ts +12 -0
  274. package/src/index.ts +1 -6
  275. package/src/solana/codegen/codegen.ts +1 -1
  276. package/src/solana/codegen/tsconfig.json +1 -1
  277. package/src/solana/run-codegen.ts +2 -2
  278. package/src/testing/test-processor-server.ts +1 -1
  279. package/src/testing/test-provider.ts +1 -1
  280. package/src/tsup.config.ts +3 -0
  281. package/src/utils/dex-price.ts +2 -2
  282. package/src/utils/token.ts +19 -30
  283. package/lib/builtin/eacaggregatorproxy/index.js.map +0 -1
  284. package/lib/builtin/eacaggregatorproxy/test-utils.js.map +0 -1
  285. package/lib/builtin/erc1155/index.js.map +0 -1
  286. package/lib/builtin/erc1155/test-utils.js.map +0 -1
  287. package/lib/builtin/erc20/index.js.map +0 -1
  288. package/lib/builtin/erc20/test-utils.js.map +0 -1
  289. package/lib/builtin/erc20bytes/index.js.map +0 -1
  290. package/lib/builtin/erc20bytes/test-utils.js.map +0 -1
  291. package/lib/builtin/erc721/index.js.map +0 -1
  292. package/lib/builtin/erc721/test-utils.js.map +0 -1
  293. package/lib/builtin/index.js.map +0 -1
  294. package/lib/builtin/internal/EACAggregatorProxy.js.map +0 -1
  295. package/lib/builtin/internal/ERC1155.js.map +0 -1
  296. package/lib/builtin/internal/ERC20.js.map +0 -1
  297. package/lib/builtin/internal/ERC20Bytes.js.map +0 -1
  298. package/lib/builtin/internal/ERC721.js.map +0 -1
  299. package/lib/builtin/internal/WETH9.js.map +0 -1
  300. package/lib/builtin/internal/common.js.map +0 -1
  301. package/lib/builtin/internal/eacaggregatorproxy_processor.js.map +0 -1
  302. package/lib/builtin/internal/erc1155_processor.js.map +0 -1
  303. package/lib/builtin/internal/erc20_processor.js.map +0 -1
  304. package/lib/builtin/internal/erc20bytes_processor.js.map +0 -1
  305. package/lib/builtin/internal/erc721_processor.js.map +0 -1
  306. package/lib/builtin/internal/factories/EACAggregatorProxy__factory.js.map +0 -1
  307. package/lib/builtin/internal/factories/ERC1155__factory.js.map +0 -1
  308. package/lib/builtin/internal/factories/ERC20Bytes__factory.js.map +0 -1
  309. package/lib/builtin/internal/factories/ERC20__factory.js.map +0 -1
  310. package/lib/builtin/internal/factories/ERC721__factory.js.map +0 -1
  311. package/lib/builtin/internal/factories/WETH9__factory.js.map +0 -1
  312. package/lib/builtin/internal/factories/index.js.map +0 -1
  313. package/lib/builtin/internal/index.js.map +0 -1
  314. package/lib/builtin/internal/weth9_processor.js.map +0 -1
  315. package/lib/builtin/weth9/index.js.map +0 -1
  316. package/lib/builtin/weth9/test-utils.js.map +0 -1
  317. package/lib/chain.js.map +0 -1
  318. package/lib/core/bind-options.js.map +0 -1
  319. package/lib/core/context.js.map +0 -1
  320. package/lib/error.d.ts +0 -7
  321. package/lib/error.js +0 -36
  322. package/lib/error.js.map +0 -1
  323. package/lib/target-ethers-sentio/event-handler.cjs +0 -52
  324. package/lib/target-ethers-sentio/event-handler.cjs.map +0 -1
  325. package/lib/target-ethers-sentio/file.cjs.map +0 -1
  326. package/lib/target-ethers-sentio/functions-handler.cjs.map +0 -1
  327. package/lib/target-ethers-sentio/index.cjs +0 -61
  328. package/lib/target-ethers-sentio/index.cjs.map +0 -1
  329. package/lib/target-ethers-sentio/types.cjs.map +0 -1
  330. package/lib/target-ethers-sentio/view-function.cjs.map +0 -1
  331. package/src/error.ts +0 -43
  332. package/src/target-ethers-sentio/.eslintrc.json +0 -14
  333. package/src/target-ethers-sentio/tsconfig.json +0 -9
@@ -1,9 +1,7 @@
1
1
  import { MoveModuleBytecode } from '../move-types.js';
2
2
  import { AccountRegister } from './typegen.js';
3
3
  import { AptosNetwork } from '../network.js';
4
- export declare function codeGenAptosProcessor(abisDir: string, outDir?: string): Promise<void>;
5
- export declare function generate(srcDir: string, outputDir: string): Promise<void>;
6
- export declare function generateForNetwork(srcDir: string, outputDir: string, network: AptosNetwork): Promise<void>;
4
+ export declare function codegen(abisDir: string, outDir?: string): Promise<void>;
7
5
  interface OutputFile {
8
6
  fileName: string;
9
7
  fileContent: string;
@@ -7,6 +7,14 @@ import chalk from 'chalk';
7
7
  import { AptosNetwork, getAptosChainName } from '../network.js';
8
8
  import { parseMoveType } from '../types.js';
9
9
  import { AptosClient } from 'aptos-sdk';
10
+ import { camelCase } from 'lodash-es';
11
+ export async function codegen(abisDir, outDir = 'src/types/aptos') {
12
+ if (!fs.existsSync(abisDir)) {
13
+ return;
14
+ }
15
+ console.log(chalk.green('Generated Types for Aptos'));
16
+ await generate(abisDir, outDir);
17
+ }
10
18
  function getRpcEndpoint(network) {
11
19
  switch (network) {
12
20
  case AptosNetwork.TEST_NET:
@@ -17,18 +25,11 @@ function getRpcEndpoint(network) {
17
25
  function getRpcClient(network) {
18
26
  return new AptosClient(getRpcEndpoint(network));
19
27
  }
20
- export async function codeGenAptosProcessor(abisDir, outDir = 'src/types/aptos') {
21
- if (!fs.existsSync(abisDir)) {
22
- return;
23
- }
24
- console.log(chalk.green('Generated Types for Aptos'));
25
- await generate(abisDir, outDir);
26
- }
27
- export async function generate(srcDir, outputDir) {
28
+ async function generate(srcDir, outputDir) {
28
29
  await generateForNetwork(srcDir, outputDir, AptosNetwork.MAIN_NET);
29
30
  await generateForNetwork(path.join(srcDir, 'testnet'), path.join(outputDir, 'testnet'), AptosNetwork.TEST_NET);
30
31
  }
31
- export async function generateForNetwork(srcDir, outputDir, network) {
32
+ async function generateForNetwork(srcDir, outputDir, network) {
32
33
  if (!fs.existsSync(srcDir)) {
33
34
  return;
34
35
  }
@@ -303,7 +304,7 @@ function generateCallArgsStructs(module, func) {
303
304
  const fields = getMeaningfulFunctionParams(func).map((param) => {
304
305
  return `${generateType(param, module.address)}`;
305
306
  });
306
- const camelFuncName = capitalizeFirstChar(camelize(func.name));
307
+ const camelFuncName = capitalizeFirstChar(camelCase(func.name));
307
308
  const genericString = generateFunctionTypeParameters(func);
308
309
  return `
309
310
  export interface ${camelFuncName}Payload${genericString}
@@ -319,7 +320,7 @@ function generateOnEntryFunctions(module, func) {
319
320
  }
320
321
  // const genericString = generateFunctionTypeParameters(func)
321
322
  const moduleName = normalizeToJSName(module.name);
322
- const camelFuncName = capitalizeFirstChar(camelize(func.name));
323
+ const camelFuncName = capitalizeFirstChar(camelCase(func.name));
323
324
  const source = `
324
325
  onEntry${camelFuncName}(func: (call: ${moduleName}.${camelFuncName}Payload, ctx: AptosContext) => void, filter?: CallFilter, fetchConfig?: AptosFetchConfig): ${moduleName} {
325
326
  this.onEntryFunctionCall(func, {
@@ -370,11 +371,6 @@ function generateOnEvents(module, struct) {
370
371
  `;
371
372
  return source;
372
373
  }
373
- function camelize(input) {
374
- return input
375
- .split('_')
376
- .reduce((res, word, i) => i === 0 ? word.toLowerCase() : `${res}${word.charAt(0).toUpperCase()}${word.slice(1).toLowerCase()}`, '');
377
- }
378
374
  function capitalizeFirstChar(input) {
379
375
  if (!input) {
380
376
  return input;
@@ -1 +1 @@
1
- {"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../../src/aptos/codegen/codegen.ts"],"names":[],"mappings":"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","sourcesContent":["import * as fs from 'fs'\nimport * as path from 'path'\nimport { format } from 'prettier'\nimport { MoveFunction, MoveModule, MoveModuleBytecode, MoveStruct } from '../move-types.js'\nimport { AccountModulesImportInfo, AccountRegister, generateType, normalizeToJSName } from './typegen.js'\nimport { getMeaningfulFunctionParams, isFrameworkAccount, moduleQname, SPLITTER } from '../utils.js'\nimport chalk from 'chalk'\nimport { AptosNetwork, getAptosChainName } from '../network.js'\nimport { parseMoveType } from '../types.js'\nimport { AptosClient } from 'aptos-sdk'\n\nfunction getRpcEndpoint(network: AptosNetwork): string {\n switch (network) {\n case AptosNetwork.TEST_NET:\n return 'https://testnet.aptoslabs.com/'\n }\n return 'https://mainnet.aptoslabs.com/'\n}\n\nfunction getRpcClient(network: AptosNetwork): AptosClient {\n return new AptosClient(getRpcEndpoint(network))\n}\n\nexport async function codeGenAptosProcessor(abisDir: string, outDir = 'src/types/aptos') {\n if (!fs.existsSync(abisDir)) {\n return\n }\n console.log(chalk.green('Generated Types for Aptos'))\n await generate(abisDir, outDir)\n}\n\nexport async function generate(srcDir: string, outputDir: string) {\n await generateForNetwork(srcDir, outputDir, AptosNetwork.MAIN_NET)\n await generateForNetwork(path.join(srcDir, 'testnet'), path.join(outputDir, 'testnet'), AptosNetwork.TEST_NET)\n}\n\nexport async function generateForNetwork(srcDir: string, outputDir: string, network: AptosNetwork) {\n if (!fs.existsSync(srcDir)) {\n return\n }\n if (network === AptosNetwork.TEST_NET) {\n console.log('Found testnet directory, generate code for testnet modules')\n }\n const files = fs.readdirSync(srcDir)\n outputDir = path.resolve(outputDir)\n const outputs: OutputFile[] = []\n\n fs.mkdirSync(outputDir, { recursive: true })\n\n const loader = new AccountRegister()\n\n // when generating user code, don't need to generate framework account\n loader.accountImports.set('0x1', new AccountModulesImportInfo('0x1', '0x1'))\n loader.accountImports.set('0x2', new AccountModulesImportInfo('0x2', '0x2'))\n loader.accountImports.set('0x3', new AccountModulesImportInfo('0x3', '0x3'))\n const client = getRpcClient(network)\n\n for (const file of files) {\n if (!file.endsWith('.json')) {\n continue\n }\n const fullPath = path.resolve(srcDir, file)\n const modules = JSON.parse(fs.readFileSync(fullPath, 'utf-8'))\n\n for (const module of modules) {\n if (module.abi) {\n loader.register(module.abi, path.basename(file, '.json'))\n }\n }\n const codeGen = new AccountCodegen(loader, modules, {\n fileName: path.basename(file, '.json'),\n outputDir: outputDir,\n network,\n })\n\n outputs.push(...codeGen.generate())\n }\n\n while (loader.pendingAccounts.size > 0) {\n for (const account of loader.pendingAccounts) {\n console.log(`download dependent module for account ${account} at ${getAptosChainName(network)}`)\n\n try {\n const modules = await client.getAccountModules(account)\n fs.writeFileSync(path.resolve(srcDir, account + '.json'), JSON.stringify(modules, null, '\\t'))\n\n for (const module of modules) {\n if (module.abi) {\n loader.register(module.abi, account)\n }\n }\n const codeGen = new AccountCodegen(loader, modules, {\n fileName: account,\n outputDir: outputDir,\n network,\n })\n\n outputs.push(...codeGen.generate())\n } catch (e) {\n console.error(\n chalk.red(\n 'Error downloading account module, check if you choose the right network,or download account modules manually into your director'\n )\n )\n console.error(e)\n process.exit(1)\n }\n }\n }\n\n for (const output of outputs) {\n const content = format(output.fileContent, { parser: 'typescript' })\n fs.writeFileSync(path.join(outputDir, output.fileName), content)\n }\n\n const rootFile = path.join(outputDir, 'index.ts')\n fs.writeFileSync(\n rootFile,\n `/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n`\n )\n for (const output of outputs) {\n const parsed = path.parse(output.fileName)\n const content = `export * as _${parsed.name} from './${parsed.name}.js'\\n`\n fs.appendFileSync(rootFile, content)\n }\n}\n\ninterface OutputFile {\n fileName: string\n fileContent: string\n}\n\ninterface Config {\n fileName: string\n outputDir: string\n network: AptosNetwork\n}\n\nexport class AccountCodegen {\n modules: MoveModuleBytecode[]\n config: Config\n loader: AccountRegister\n\n constructor(loader: AccountRegister, modules: MoveModuleBytecode[], config: Config) {\n // const json = fs.readFileSync(config.srcFile, 'utf-8')\n this.modules = modules\n this.config = config\n this.loader = loader\n }\n\n generate(): OutputFile[] {\n if (!this.modules) {\n return []\n }\n // const baseName = path.basename(this.config.fileName, '.json')\n\n let address: string | undefined\n for (const module of this.modules) {\n if (module.abi && module.abi.address) {\n address = module.abi.address\n }\n }\n if (!address) {\n return []\n }\n\n const imports = `\n import { \n MoveCoder, AptosBindOptions, AptosBaseProcessor, \n TypedEventInstance, AptosNetwork, TypedEntryFunctionPayload,\n AptosContext, CallFilter\n } from \"@sentio/sdk/aptos\"\n import { AptosFetchConfig } from \"@sentio/protos\"\n import { Address, MoveModule } from \"@sentio/sdk/aptos\"\n `\n\n const dependedAccounts: string[] = []\n\n const moduleImports: string[] = []\n\n const info = this.loader.accountImports.get(address)\n\n if (info) {\n for (const [account] of info.imports.entries()) {\n // Remap to user's filename if possible, TODO codepath not well tested\n const tsAccountModule = './' + (this.loader.accountImports.get(account)?.moduleName || account)\n if (isFrameworkAccount(account) && !isFrameworkAccount(address)) {\n // Decide where to find runtime library\n moduleImports.push(`import { _${account} } from \"@sentio/sdk/aptos/builtin\"`)\n } else {\n moduleImports.push(`import * as _${account} from \"${tsAccountModule}.js\"`)\n }\n\n dependedAccounts.push(account)\n }\n }\n\n const source = `\n /* Autogenerated file. Do not edit manually. */\n /* tslint:disable */\n /* eslint-disable */\n \n /* Generated modules for account ${address} */\n \n ${imports}\n \n ${moduleImports.join('\\n')}\n \n ${this.modules.map((m) => generateModule(m, this.config.network)).join('\\n')}\n \n export function loadAllTypes(_r: MoveCoder) {\n ${dependedAccounts.map((a) => `_${a}.loadAllTypes(_r)`).join('\\n')}\n\n ${this.modules\n .map((m) => {\n return `_r.load(${normalizeToJSName(m.abi!.name)}.ABI)`\n })\n .join('\\n')}\n }\n ` // source\n\n return [\n {\n fileName: this.config.fileName + '.ts',\n fileContent: source,\n },\n ]\n }\n}\n\nfunction generateNetworkOption(network: AptosNetwork) {\n switch (network) {\n case AptosNetwork.TEST_NET:\n return 'TEST_NET'\n }\n return 'MAIN_NET'\n}\n\nfunction generateModule(moduleByteCode: MoveModuleBytecode, network: AptosNetwork) {\n if (!moduleByteCode.abi) {\n return ''\n }\n const module = moduleByteCode.abi\n\n const functions = module.exposed_functions.map((f) => generateOnEntryFunctions(module, f)).filter((s) => s !== '')\n\n const eventStructs = getEventStructs(module)\n const eventTypes = new Set(eventStructs.keys())\n const events = Array.from(eventStructs.values())\n .map((e) => generateOnEvents(module, e))\n .filter((s) => s !== '')\n const structs = module.structs.map((s) => generateStructs(module, s, eventTypes))\n const callArgs = module.exposed_functions.map((f) => generateCallArgsStructs(module, f))\n\n const moduleName = normalizeToJSName(module.name)\n let processor = ''\n if (functions.length > 0 || events.length > 0) {\n processor = `export class ${moduleName} extends AptosBaseProcessor {\n\n constructor(options: AptosBindOptions) {\n super(\"${module.name}\", options)\n }\n static DEFAULT_OPTIONS: AptosBindOptions = {\n address: \"${module.address}\",\n network: AptosNetwork.${generateNetworkOption(network)} \n }\n\n static bind(options: Partial<AptosBindOptions> = {}): ${moduleName} {\n return new ${moduleName}({ ...${moduleName}.DEFAULT_OPTIONS, ...options })\n }\n \n ${functions.join('\\n')}\n \n ${events.join('\\n')}\n \n loadTypesInternal(registry: MoveCoder) {\n loadAllTypes(registry)\n }\n }\n `\n }\n\n return `\n ${processor}\n\n export namespace ${moduleName} {\n ${structs.join('\\n')}\n \n ${callArgs.join('\\n')}\n \n export function loadTypes(_r: MoveCoder) {\n loadAllTypes(_r)\n }\n export const ABI: MoveModule = JSON.parse('${JSON.stringify(module)}')\n }\n `\n}\n\nfunction generateStructs(module: MoveModule, struct: MoveStruct, events: Set<string>) {\n const genericString = generateStructTypeParameters(struct)\n const genericStringAny = generateStructTypeParameters(struct, true)\n\n const structName = normalizeToJSName(struct.name)\n\n const fields = struct.fields.map((field) => {\n return `${field.name}: ${generateType(field.type, module.address)}`\n })\n\n let eventPayload = ''\n if (events.has(moduleQname(module) + SPLITTER + struct.name)) {\n eventPayload = `\n export interface ${structName}Instance extends \n TypedEventInstance<${structName}${genericStringAny}> {\n data_decoded: ${structName}${genericStringAny}\n type_arguments: [${struct.generic_type_params.map((_) => 'string').join(', ')}]\n }\n `\n }\n\n return `\n export class ${structName}${genericString} {\n static TYPE_QNAME = '${module.address}::${module.name}::${struct.name}'\n ${fields.join('\\n')} \n }\n \n ${eventPayload}\n `\n}\n\nfunction generateFunctionTypeParameters(func: MoveFunction) {\n let genericString = ''\n if (func.generic_type_params && func.generic_type_params.length > 0) {\n const params = func.generic_type_params\n .map((v, idx) => {\n return `T${idx}=any`\n })\n .join(',')\n genericString = `<${params}>`\n }\n return genericString\n}\n\nfunction generateStructTypeParameters(struct: MoveStruct, useAny = false) {\n let genericString = ''\n\n if (struct.generic_type_params && struct.generic_type_params.length > 0) {\n const params = struct.generic_type_params\n .map((v, idx) => {\n return useAny ? 'any' : 'T' + idx\n })\n .join(',')\n genericString = `<${params}>`\n }\n return genericString\n}\n\nfunction generateCallArgsStructs(module: MoveModule, func: MoveFunction) {\n if (!func.is_entry) {\n return\n }\n\n const fields = getMeaningfulFunctionParams(func).map((param) => {\n return `${generateType(param, module.address)}`\n })\n\n const camelFuncName = capitalizeFirstChar(camelize(func.name))\n\n const genericString = generateFunctionTypeParameters(func)\n return `\n export interface ${camelFuncName}Payload${genericString}\n extends TypedEntryFunctionPayload<[${fields.join(',')}]> {\n arguments_decoded: [${fields.join(',')}],\n type_arguments: [${func.generic_type_params.map((_) => 'string').join(', ')}]\n }\n `\n}\n\nfunction generateOnEntryFunctions(module: MoveModule, func: MoveFunction) {\n if (!func.is_entry) {\n return ''\n }\n\n // const genericString = generateFunctionTypeParameters(func)\n const moduleName = normalizeToJSName(module.name)\n\n const camelFuncName = capitalizeFirstChar(camelize(func.name))\n const source = `\n onEntry${camelFuncName}(func: (call: ${moduleName}.${camelFuncName}Payload, ctx: AptosContext) => void, filter?: CallFilter, fetchConfig?: AptosFetchConfig): ${moduleName} {\n this.onEntryFunctionCall(func, {\n ...filter,\n function: '${module.name}::${func.name}'\n },\n fetchConfig)\n return this\n }`\n\n return source\n}\n\nfunction getEventStructs(module: MoveModule) {\n const qname = moduleQname(module)\n const structMap = new Map<string, MoveStruct>()\n const eventMap = new Map<string, MoveStruct>()\n\n for (const struct of module.structs) {\n structMap.set(qname + SPLITTER + struct.name, struct)\n }\n\n for (const struct of module.structs) {\n for (const field of struct.fields) {\n const t = parseMoveType(field.type)\n if (t.qname === '0x1::event::EventHandle') {\n const event = t.typeArgs[0].qname\n const eventStruct = structMap.get(event)\n if (eventStruct) {\n eventMap.set(event, eventStruct)\n }\n }\n }\n }\n\n return eventMap\n}\n\nfunction generateOnEvents(module: MoveModule, struct: MoveStruct): string {\n // for struct that has drop + store\n // if (!isEvent(struct, module)) {\n // return ''\n // }\n\n // const genericString = generateStructTypeParameters(struct)\n\n const moduleName = normalizeToJSName(module.name)\n const source = `\n onEvent${struct.name}(func: (event: ${moduleName}.${normalizeToJSName(\n struct.name\n )}Instance, ctx: AptosContext) => void, fetchConfig?: AptosFetchConfig): ${moduleName} {\n this.onEvent(func, {\n type: '${module.name}::${struct.name}'\n },\n fetchConfig)\n return this\n }\n `\n return source\n}\n\nfunction camelize(input: string): string {\n return input\n .split('_')\n .reduce(\n (res, word, i) =>\n i === 0 ? word.toLowerCase() : `${res}${word.charAt(0).toUpperCase()}${word.slice(1).toLowerCase()}`,\n ''\n )\n}\n\nfunction capitalizeFirstChar(input: string): string {\n if (!input) {\n return input\n }\n return input[0].toUpperCase() + (input.length > 1 ? input.substring(1) : '')\n}\n"]}
1
+ {"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../../src/aptos/codegen/codegen.ts"],"names":[],"mappings":"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","sourcesContent":["import * as fs from 'fs'\nimport * as path from 'path'\nimport { format } from 'prettier'\nimport { MoveFunction, MoveModule, MoveModuleBytecode, MoveStruct } from '../move-types.js'\nimport { AccountModulesImportInfo, AccountRegister, generateType, normalizeToJSName } from './typegen.js'\nimport { getMeaningfulFunctionParams, isFrameworkAccount, moduleQname, SPLITTER } from '../utils.js'\nimport chalk from 'chalk'\nimport { AptosNetwork, getAptosChainName } from '../network.js'\nimport { parseMoveType } from '../types.js'\nimport { AptosClient } from 'aptos-sdk'\nimport { camelCase } from 'lodash-es'\n\nexport async function codegen(abisDir: string, outDir = 'src/types/aptos') {\n if (!fs.existsSync(abisDir)) {\n return\n }\n console.log(chalk.green('Generated Types for Aptos'))\n await generate(abisDir, outDir)\n}\n\nfunction getRpcEndpoint(network: AptosNetwork): string {\n switch (network) {\n case AptosNetwork.TEST_NET:\n return 'https://testnet.aptoslabs.com/'\n }\n return 'https://mainnet.aptoslabs.com/'\n}\n\nfunction getRpcClient(network: AptosNetwork): AptosClient {\n return new AptosClient(getRpcEndpoint(network))\n}\n\nasync function generate(srcDir: string, outputDir: string) {\n await generateForNetwork(srcDir, outputDir, AptosNetwork.MAIN_NET)\n await generateForNetwork(path.join(srcDir, 'testnet'), path.join(outputDir, 'testnet'), AptosNetwork.TEST_NET)\n}\n\nasync function generateForNetwork(srcDir: string, outputDir: string, network: AptosNetwork) {\n if (!fs.existsSync(srcDir)) {\n return\n }\n if (network === AptosNetwork.TEST_NET) {\n console.log('Found testnet directory, generate code for testnet modules')\n }\n const files = fs.readdirSync(srcDir)\n outputDir = path.resolve(outputDir)\n const outputs: OutputFile[] = []\n\n fs.mkdirSync(outputDir, { recursive: true })\n\n const loader = new AccountRegister()\n\n // when generating user code, don't need to generate framework account\n loader.accountImports.set('0x1', new AccountModulesImportInfo('0x1', '0x1'))\n loader.accountImports.set('0x2', new AccountModulesImportInfo('0x2', '0x2'))\n loader.accountImports.set('0x3', new AccountModulesImportInfo('0x3', '0x3'))\n const client = getRpcClient(network)\n\n for (const file of files) {\n if (!file.endsWith('.json')) {\n continue\n }\n const fullPath = path.resolve(srcDir, file)\n const modules = JSON.parse(fs.readFileSync(fullPath, 'utf-8'))\n\n for (const module of modules) {\n if (module.abi) {\n loader.register(module.abi, path.basename(file, '.json'))\n }\n }\n const codeGen = new AccountCodegen(loader, modules, {\n fileName: path.basename(file, '.json'),\n outputDir: outputDir,\n network,\n })\n\n outputs.push(...codeGen.generate())\n }\n\n while (loader.pendingAccounts.size > 0) {\n for (const account of loader.pendingAccounts) {\n console.log(`download dependent module for account ${account} at ${getAptosChainName(network)}`)\n\n try {\n const modules = await client.getAccountModules(account)\n fs.writeFileSync(path.resolve(srcDir, account + '.json'), JSON.stringify(modules, null, '\\t'))\n\n for (const module of modules) {\n if (module.abi) {\n loader.register(module.abi, account)\n }\n }\n const codeGen = new AccountCodegen(loader, modules, {\n fileName: account,\n outputDir: outputDir,\n network,\n })\n\n outputs.push(...codeGen.generate())\n } catch (e) {\n console.error(\n chalk.red(\n 'Error downloading account module, check if you choose the right network,or download account modules manually into your director'\n )\n )\n console.error(e)\n process.exit(1)\n }\n }\n }\n\n for (const output of outputs) {\n const content = format(output.fileContent, { parser: 'typescript' })\n fs.writeFileSync(path.join(outputDir, output.fileName), content)\n }\n\n const rootFile = path.join(outputDir, 'index.ts')\n fs.writeFileSync(\n rootFile,\n `/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n`\n )\n for (const output of outputs) {\n const parsed = path.parse(output.fileName)\n const content = `export * as _${parsed.name} from './${parsed.name}.js'\\n`\n fs.appendFileSync(rootFile, content)\n }\n}\n\ninterface OutputFile {\n fileName: string\n fileContent: string\n}\n\ninterface Config {\n fileName: string\n outputDir: string\n network: AptosNetwork\n}\n\nexport class AccountCodegen {\n modules: MoveModuleBytecode[]\n config: Config\n loader: AccountRegister\n\n constructor(loader: AccountRegister, modules: MoveModuleBytecode[], config: Config) {\n // const json = fs.readFileSync(config.srcFile, 'utf-8')\n this.modules = modules\n this.config = config\n this.loader = loader\n }\n\n generate(): OutputFile[] {\n if (!this.modules) {\n return []\n }\n // const baseName = path.basename(this.config.fileName, '.json')\n\n let address: string | undefined\n for (const module of this.modules) {\n if (module.abi && module.abi.address) {\n address = module.abi.address\n }\n }\n if (!address) {\n return []\n }\n\n const imports = `\n import { \n MoveCoder, AptosBindOptions, AptosBaseProcessor, \n TypedEventInstance, AptosNetwork, TypedEntryFunctionPayload,\n AptosContext, CallFilter\n } from \"@sentio/sdk/aptos\"\n import { AptosFetchConfig } from \"@sentio/protos\"\n import { Address, MoveModule } from \"@sentio/sdk/aptos\"\n `\n\n const dependedAccounts: string[] = []\n\n const moduleImports: string[] = []\n\n const info = this.loader.accountImports.get(address)\n\n if (info) {\n for (const [account] of info.imports.entries()) {\n // Remap to user's filename if possible, TODO codepath not well tested\n const tsAccountModule = './' + (this.loader.accountImports.get(account)?.moduleName || account)\n if (isFrameworkAccount(account) && !isFrameworkAccount(address)) {\n // Decide where to find runtime library\n moduleImports.push(`import { _${account} } from \"@sentio/sdk/aptos/builtin\"`)\n } else {\n moduleImports.push(`import * as _${account} from \"${tsAccountModule}.js\"`)\n }\n\n dependedAccounts.push(account)\n }\n }\n\n const source = `\n /* Autogenerated file. Do not edit manually. */\n /* tslint:disable */\n /* eslint-disable */\n \n /* Generated modules for account ${address} */\n \n ${imports}\n \n ${moduleImports.join('\\n')}\n \n ${this.modules.map((m) => generateModule(m, this.config.network)).join('\\n')}\n \n export function loadAllTypes(_r: MoveCoder) {\n ${dependedAccounts.map((a) => `_${a}.loadAllTypes(_r)`).join('\\n')}\n\n ${this.modules\n .map((m) => {\n return `_r.load(${normalizeToJSName(m.abi!.name)}.ABI)`\n })\n .join('\\n')}\n }\n ` // source\n\n return [\n {\n fileName: this.config.fileName + '.ts',\n fileContent: source,\n },\n ]\n }\n}\n\nfunction generateNetworkOption(network: AptosNetwork) {\n switch (network) {\n case AptosNetwork.TEST_NET:\n return 'TEST_NET'\n }\n return 'MAIN_NET'\n}\n\nfunction generateModule(moduleByteCode: MoveModuleBytecode, network: AptosNetwork) {\n if (!moduleByteCode.abi) {\n return ''\n }\n const module = moduleByteCode.abi\n\n const functions = module.exposed_functions.map((f) => generateOnEntryFunctions(module, f)).filter((s) => s !== '')\n\n const eventStructs = getEventStructs(module)\n const eventTypes = new Set(eventStructs.keys())\n const events = Array.from(eventStructs.values())\n .map((e) => generateOnEvents(module, e))\n .filter((s) => s !== '')\n const structs = module.structs.map((s) => generateStructs(module, s, eventTypes))\n const callArgs = module.exposed_functions.map((f) => generateCallArgsStructs(module, f))\n\n const moduleName = normalizeToJSName(module.name)\n let processor = ''\n if (functions.length > 0 || events.length > 0) {\n processor = `export class ${moduleName} extends AptosBaseProcessor {\n\n constructor(options: AptosBindOptions) {\n super(\"${module.name}\", options)\n }\n static DEFAULT_OPTIONS: AptosBindOptions = {\n address: \"${module.address}\",\n network: AptosNetwork.${generateNetworkOption(network)} \n }\n\n static bind(options: Partial<AptosBindOptions> = {}): ${moduleName} {\n return new ${moduleName}({ ...${moduleName}.DEFAULT_OPTIONS, ...options })\n }\n \n ${functions.join('\\n')}\n \n ${events.join('\\n')}\n \n loadTypesInternal(registry: MoveCoder) {\n loadAllTypes(registry)\n }\n }\n `\n }\n\n return `\n ${processor}\n\n export namespace ${moduleName} {\n ${structs.join('\\n')}\n \n ${callArgs.join('\\n')}\n \n export function loadTypes(_r: MoveCoder) {\n loadAllTypes(_r)\n }\n export const ABI: MoveModule = JSON.parse('${JSON.stringify(module)}')\n }\n `\n}\n\nfunction generateStructs(module: MoveModule, struct: MoveStruct, events: Set<string>) {\n const genericString = generateStructTypeParameters(struct)\n const genericStringAny = generateStructTypeParameters(struct, true)\n\n const structName = normalizeToJSName(struct.name)\n\n const fields = struct.fields.map((field) => {\n return `${field.name}: ${generateType(field.type, module.address)}`\n })\n\n let eventPayload = ''\n if (events.has(moduleQname(module) + SPLITTER + struct.name)) {\n eventPayload = `\n export interface ${structName}Instance extends \n TypedEventInstance<${structName}${genericStringAny}> {\n data_decoded: ${structName}${genericStringAny}\n type_arguments: [${struct.generic_type_params.map((_) => 'string').join(', ')}]\n }\n `\n }\n\n return `\n export class ${structName}${genericString} {\n static TYPE_QNAME = '${module.address}::${module.name}::${struct.name}'\n ${fields.join('\\n')} \n }\n \n ${eventPayload}\n `\n}\n\nfunction generateFunctionTypeParameters(func: MoveFunction) {\n let genericString = ''\n if (func.generic_type_params && func.generic_type_params.length > 0) {\n const params = func.generic_type_params\n .map((v, idx) => {\n return `T${idx}=any`\n })\n .join(',')\n genericString = `<${params}>`\n }\n return genericString\n}\n\nfunction generateStructTypeParameters(struct: MoveStruct, useAny = false) {\n let genericString = ''\n\n if (struct.generic_type_params && struct.generic_type_params.length > 0) {\n const params = struct.generic_type_params\n .map((v, idx) => {\n return useAny ? 'any' : 'T' + idx\n })\n .join(',')\n genericString = `<${params}>`\n }\n return genericString\n}\n\nfunction generateCallArgsStructs(module: MoveModule, func: MoveFunction) {\n if (!func.is_entry) {\n return\n }\n\n const fields = getMeaningfulFunctionParams(func).map((param) => {\n return `${generateType(param, module.address)}`\n })\n\n const camelFuncName = capitalizeFirstChar(camelCase(func.name))\n\n const genericString = generateFunctionTypeParameters(func)\n return `\n export interface ${camelFuncName}Payload${genericString}\n extends TypedEntryFunctionPayload<[${fields.join(',')}]> {\n arguments_decoded: [${fields.join(',')}],\n type_arguments: [${func.generic_type_params.map((_) => 'string').join(', ')}]\n }\n `\n}\n\nfunction generateOnEntryFunctions(module: MoveModule, func: MoveFunction) {\n if (!func.is_entry) {\n return ''\n }\n\n // const genericString = generateFunctionTypeParameters(func)\n const moduleName = normalizeToJSName(module.name)\n\n const camelFuncName = capitalizeFirstChar(camelCase(func.name))\n const source = `\n onEntry${camelFuncName}(func: (call: ${moduleName}.${camelFuncName}Payload, ctx: AptosContext) => void, filter?: CallFilter, fetchConfig?: AptosFetchConfig): ${moduleName} {\n this.onEntryFunctionCall(func, {\n ...filter,\n function: '${module.name}::${func.name}'\n },\n fetchConfig)\n return this\n }`\n\n return source\n}\n\nfunction getEventStructs(module: MoveModule) {\n const qname = moduleQname(module)\n const structMap = new Map<string, MoveStruct>()\n const eventMap = new Map<string, MoveStruct>()\n\n for (const struct of module.structs) {\n structMap.set(qname + SPLITTER + struct.name, struct)\n }\n\n for (const struct of module.structs) {\n for (const field of struct.fields) {\n const t = parseMoveType(field.type)\n if (t.qname === '0x1::event::EventHandle') {\n const event = t.typeArgs[0].qname\n const eventStruct = structMap.get(event)\n if (eventStruct) {\n eventMap.set(event, eventStruct)\n }\n }\n }\n }\n\n return eventMap\n}\n\nfunction generateOnEvents(module: MoveModule, struct: MoveStruct): string {\n // for struct that has drop + store\n // if (!isEvent(struct, module)) {\n // return ''\n // }\n\n // const genericString = generateStructTypeParameters(struct)\n\n const moduleName = normalizeToJSName(module.name)\n const source = `\n onEvent${struct.name}(func: (event: ${moduleName}.${normalizeToJSName(\n struct.name\n )}Instance, ctx: AptosContext) => void, fetchConfig?: AptosFetchConfig): ${moduleName} {\n this.onEvent(func, {\n type: '${module.name}::${struct.name}'\n },\n fetchConfig)\n return this\n }\n `\n return source\n}\n\nfunction capitalizeFirstChar(input: string): string {\n if (!input) {\n return input\n }\n return input[0].toUpperCase() + (input.length > 1 ? input.substring(1) : '')\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { CHAIN_IDS, getChainName } from '../chain.js';
1
+ import { CHAIN_IDS, getChainName } from '../core/chain.js';
2
2
  export var AptosNetwork;
3
3
  (function (AptosNetwork) {
4
4
  AptosNetwork[AptosNetwork["MAIN_NET"] = 1] = "MAIN_NET";
@@ -1 +1 @@
1
- {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/aptos/network.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAErD,MAAM,CAAN,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,uDAAY,CAAA;IACZ,uDAAY,CAAA;IACZ,WAAW;AACb,CAAC,EAJW,YAAY,KAAZ,YAAY,QAIvB;AAED,MAAM,UAAU,UAAU,CAAC,OAAqB;IAC9C,QAAQ,OAAO,EAAE;QACf,KAAK,YAAY,CAAC,QAAQ;YACxB,OAAO,SAAS,CAAC,aAAa,CAAA;KACjC;IACD,OAAO,SAAS,CAAC,aAAa,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAqB;IACrD,QAAQ,OAAO,EAAE;QACf,KAAK,YAAY,CAAC,QAAQ;YACxB,OAAO,YAAY,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;KAC/C;IACD,OAAO,YAAY,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;AAC9C,CAAC;AAED,MAAM,OAAO,gBAAgB;IAC3B,OAAO,CAAQ;IACf,OAAO,GAAkB,YAAY,CAAC,QAAQ,CAAA;IAC9C,YAAY,CAAkB;CAC/B","sourcesContent":["import { CHAIN_IDS, getChainName } from '../chain.js'\n\nexport enum AptosNetwork {\n MAIN_NET = 1,\n TEST_NET = 2,\n // DEV_NET,\n}\n\nexport function getChainId(network: AptosNetwork): string {\n switch (network) {\n case AptosNetwork.TEST_NET:\n return CHAIN_IDS.APTOS_TESTNET\n }\n return CHAIN_IDS.APTOS_MAINNET\n}\n\nexport function getAptosChainName(network: AptosNetwork): string {\n switch (network) {\n case AptosNetwork.TEST_NET:\n return getChainName(CHAIN_IDS.APTOS_TESTNET)\n }\n return getChainName(CHAIN_IDS.APTOS_MAINNET)\n}\n\nexport class AptosBindOptions {\n address: string\n network?: AptosNetwork = AptosNetwork.MAIN_NET\n startVersion?: bigint | number\n}\n"]}
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/aptos/network.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE1D,MAAM,CAAN,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,uDAAY,CAAA;IACZ,uDAAY,CAAA;IACZ,WAAW;AACb,CAAC,EAJW,YAAY,KAAZ,YAAY,QAIvB;AAED,MAAM,UAAU,UAAU,CAAC,OAAqB;IAC9C,QAAQ,OAAO,EAAE;QACf,KAAK,YAAY,CAAC,QAAQ;YACxB,OAAO,SAAS,CAAC,aAAa,CAAA;KACjC;IACD,OAAO,SAAS,CAAC,aAAa,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAqB;IACrD,QAAQ,OAAO,EAAE;QACf,KAAK,YAAY,CAAC,QAAQ;YACxB,OAAO,YAAY,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;KAC/C;IACD,OAAO,YAAY,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;AAC9C,CAAC;AAED,MAAM,OAAO,gBAAgB;IAC3B,OAAO,CAAQ;IACf,OAAO,GAAkB,YAAY,CAAC,QAAQ,CAAA;IAC9C,YAAY,CAAkB;CAC/B","sourcesContent":["import { CHAIN_IDS, getChainName } from '../core/chain.js'\n\nexport enum AptosNetwork {\n MAIN_NET = 1,\n TEST_NET = 2,\n // DEV_NET,\n}\n\nexport function getChainId(network: AptosNetwork): string {\n switch (network) {\n case AptosNetwork.TEST_NET:\n return CHAIN_IDS.APTOS_TESTNET\n }\n return CHAIN_IDS.APTOS_MAINNET\n}\n\nexport function getAptosChainName(network: AptosNetwork): string {\n switch (network) {\n case AptosNetwork.TEST_NET:\n return getChainName(CHAIN_IDS.APTOS_TESTNET)\n }\n return getChainName(CHAIN_IDS.APTOS_MAINNET)\n}\n\nexport class AptosBindOptions {\n address: string\n network?: AptosNetwork = AptosNetwork.MAIN_NET\n startVersion?: bigint | number\n}\n"]}
@@ -1,9 +1,9 @@
1
1
  // #!/usr/bin/env node
2
- import { codeGenAptosProcessor } from './codegen/codegen.js';
2
+ import { codegen } from './codegen/codegen.js';
3
3
  if (process.argv.length > 3) {
4
4
  const abisDir = process.argv[2];
5
5
  const targetDir = process.argv[3];
6
- await codeGenAptosProcessor(abisDir, targetDir);
6
+ await codegen(abisDir, targetDir);
7
7
  }
8
8
  else {
9
9
  console.error('Not enough argument');
@@ -1 +1 @@
1
- {"version":3,"file":"run-codegen.js","sourceRoot":"","sources":["../../src/aptos/run-codegen.ts"],"names":[],"mappings":"AAAA,sBAAsB;AAEtB,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAE5D,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;IAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAEjC,MAAM,qBAAqB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;CAChD;KAAM;IACL,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAA;IACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;CAChB","sourcesContent":["// #!/usr/bin/env node\n\nimport { codeGenAptosProcessor } from './codegen/codegen.js'\n\nif (process.argv.length > 3) {\n const abisDir = process.argv[2]\n const targetDir = process.argv[3]\n\n await codeGenAptosProcessor(abisDir, targetDir)\n} else {\n console.error('Not enough argument')\n process.exit(1)\n}\n"]}
1
+ {"version":3,"file":"run-codegen.js","sourceRoot":"","sources":["../../src/aptos/run-codegen.ts"],"names":[],"mappings":"AAAA,sBAAsB;AAEtB,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAE9C,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;IAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAEjC,MAAM,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;CAClC;KAAM;IACL,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAA;IACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;CAChB","sourcesContent":["// #!/usr/bin/env node\n\nimport { codegen } from './codegen/codegen.js'\n\nif (process.argv.length > 3) {\n const abisDir = process.argv[2]\n const targetDir = process.argv[3]\n\n await codegen(abisDir, targetDir)\n} else {\n console.error('Not enough argument')\n process.exit(1)\n}\n"]}
@@ -3,5 +3,7 @@ export { BigDecimal } from '@sentio/bigdecimal';
3
3
  declare global {
4
4
  interface BigInt {
5
5
  asBigDecimal(): BigDecimal;
6
+ scaleDown(decimal: number | bigint): BigDecimal;
6
7
  }
7
8
  }
9
+ export declare function scaleDown(amount: bigint, decimal: number | bigint): BigDecimal;
@@ -3,4 +3,12 @@ export { BigDecimal } from '@sentio/bigdecimal';
3
3
  BigInt.prototype.asBigDecimal = function () {
4
4
  return new BigDecimal(this.toString());
5
5
  };
6
+ BigInt.prototype.scaleDown = function (decimal) {
7
+ // @ts-ignore this is fine
8
+ return scaleDown(this, decimal);
9
+ };
10
+ export function scaleDown(amount, decimal) {
11
+ const divider = new BigDecimal(10).pow(Number(decimal));
12
+ return amount.asBigDecimal().dividedBy(divider);
13
+ }
6
14
  //# sourceMappingURL=big-decimal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"big-decimal.js","sourceRoot":"","sources":["../../src/core/big-decimal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAO/C,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG;IAC9B,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;AACxC,CAAC,CAAA","sourcesContent":["import { BigDecimal } from '@sentio/bigdecimal'\n\nexport { BigDecimal } from '@sentio/bigdecimal'\n\ndeclare global {\n interface BigInt {\n asBigDecimal(): BigDecimal\n }\n}\nBigInt.prototype.asBigDecimal = function () {\n return new BigDecimal(this.toString())\n}\n"]}
1
+ {"version":3,"file":"big-decimal.js","sourceRoot":"","sources":["../../src/core/big-decimal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAQ/C,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG;IAC9B,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;AACxC,CAAC,CAAA;AAED,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,OAAwB;IAC7D,0BAA0B;IAC1B,OAAO,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AACjC,CAAC,CAAA;AAED,MAAM,UAAU,SAAS,CAAC,MAAc,EAAE,OAAwB;IAChE,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;IACvD,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;AACjD,CAAC","sourcesContent":["import { BigDecimal } from '@sentio/bigdecimal'\n\nexport { BigDecimal } from '@sentio/bigdecimal'\n\ndeclare global {\n interface BigInt {\n asBigDecimal(): BigDecimal\n scaleDown(decimal: number | bigint): BigDecimal\n }\n}\nBigInt.prototype.asBigDecimal = function () {\n return new BigDecimal(this.toString())\n}\n\nBigInt.prototype.scaleDown = function (decimal: number | bigint) {\n // @ts-ignore this is fine\n return scaleDown(this, decimal)\n}\n\nexport function scaleDown(amount: bigint, decimal: number | bigint): BigDecimal {\n const divider = new BigDecimal(10).pow(Number(decimal))\n return amount.asBigDecimal().dividedBy(divider)\n}\n"]}
File without changes
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.js","sourceRoot":"","sources":["../../src/core/chain.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,6EAA6E;AAE7E,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,MAAM,EAAE,GAAG;IACX,QAAQ,EAAE,GAAG;IACb,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,GAAG;IACZ,MAAM,EAAE,GAAG;IACX,KAAK,EAAE,GAAG;IACV,IAAI,EAAE,GAAG;IACT,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,GAAG,EAAE,IAAI;IACT,KAAK,EAAE,IAAI;IACX,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,IAAI;IACZ,SAAS,EAAE,IAAI;IACf,GAAG,EAAE,IAAI;IACT,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,IAAI;IACf,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,KAAK;IACZ,WAAW,EAAE,KAAK;IAClB,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,KAAK;IACZ,SAAS,EAAE,KAAK;IAChB,MAAM,EAAE,KAAK;IACb,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,KAAK;IACX,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,KAAK;IACZ,EAAE,EAAE,KAAK;IACT,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,KAAK;IACZ,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,MAAM;IACf,QAAQ,EAAE,MAAM;IAChB,SAAS,EAAE,MAAM;IACjB,QAAQ,EAAE,MAAM;IAChB,GAAG,EAAE,MAAM;IACX,KAAK,EAAE,MAAM;IACb,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,MAAM;IACf,GAAG,EAAE,MAAM;IACX,KAAK,EAAE,MAAM;IACb,GAAG,EAAE,MAAM;IACX,MAAM,EAAE,MAAM;IACd,QAAQ,EAAE,MAAM;IAChB,MAAM,EAAE,MAAM;IACd,KAAK,EAAE,MAAM;IACb,QAAQ,EAAE,OAAO;IACjB,UAAU,EAAE,QAAQ;IACpB,MAAM,EAAE,OAAO;IACf,QAAQ,EAAE,OAAO;IACjB,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,OAAO;IAClB,QAAQ,EAAE,OAAO;IACjB,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,QAAQ;IACf,aAAa,EAAE,QAAQ;IACvB,OAAO,EAAE,UAAU;IACnB,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE,YAAY;IACrB,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,iBAAiB;IACxB,cAAc,EAAE,aAAa;IAC7B,aAAa,EAAE,YAAY;IAC3B,cAAc,EAAE,aAAa;IAC7B,WAAW,EAAE,UAAU;IACvB,UAAU,EAAE,YAAY;IACxB,aAAa,EAAE,eAAe;IAC9B,aAAa,EAAE,eAAe;CAC/B,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAA2B,EAAE,CAAA;AAEnD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;IACpD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC5B,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK;SACrB,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACnB,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;IAC9C,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CAAA;CACb;AAED,MAAM,UAAU,YAAY,CAAC,OAA2C;IACtE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAA;KAC7B;IACD,IAAI,OAAO,EAAE;QACX,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;QAC/B,IAAI,IAAI,EAAE;YACR,OAAO,IAAI,CAAA;SACZ;KACF;IACD,OAAO,OAAO,IAAI,EAAE,CAAA;AACtB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAyB;IACpD,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAA;IACxC,IAAI,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;QACxB,OAAO,QAAQ,CAAA;KAChB;IACD,IAAI,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;QACxB,OAAO,KAAK,CAAA;KACb;IACD,IAAI,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;QACxB,OAAO,OAAO,CAAA;KACf;IACD,OAAO,KAAK,CAAA;AACd,CAAC","sourcesContent":["// copy from https://github.com/DefiLlama/chainlist/blob/main/constants/chainIds.js\n// and https://besu.hyperledger.org/en/stable/Concepts/NetworkID-And-ChainID/\n\nexport const CHAIN_IDS = {\n KARDIA: '0',\n ETHEREUM: '1',\n EXPANSE: '2',\n ROPSTEN: '3',\n RINKEBY: '4',\n GOERLI: '5',\n KOTTI: '6',\n UBIQ: '8',\n OPTIMISM: '10',\n SONGBIRD: '19',\n ELASTOS: '20',\n CRONOS: '25',\n RSK: '30',\n TELOS: '40',\n XDC: '50',\n CSC: '52',\n ZYX: '55',\n BINANCE: '56',\n SYSCOIN: '57',\n GOCHAIN: '60',\n ETHCLASSIC: '61',\n MORDOR: '63',\n OKEXCHAIN: '66',\n HOO: '70',\n METER: '82',\n TOMOCHAIN: '88',\n XDAI: '100',\n VELAS: '106',\n THUNDERCORE: '108',\n FUSE: '122',\n HECO: '128',\n POLYGON: '137',\n XDAIARB: '200',\n ASTOR: '212',\n ENERGYWEB: '246',\n FANTOM: '250',\n HPB: '269',\n BOBA: '288',\n KUCOIN: '321',\n SHIDEN: '336',\n THETA: '361',\n SX: '416',\n CANDLE: '534',\n ASTAR: '592',\n CALLISTO: '820',\n WANCHAIN: '888',\n METIS: '1088',\n OMCHAIN: '1246',\n MOONBEAM: '1284',\n MOONRIVER: '1285',\n MOONBASE: '1287',\n DEV: '2018',\n RONIN: '2020',\n KAVA: '2222',\n EZCHAIN: '2612',\n PHI: '4181',\n IOTEX: '4689',\n XLC: '5050',\n NAHMII: '5551',\n NMACTEST: '7777',\n KLAYTN: '8217',\n EVMOS: '9001',\n SMARTBCH: '10000',\n CRYSTALEUM: '103090',\n FUSION: '32659',\n ARBITRUM: '42161',\n CELO: '42220',\n OASIS: '42262',\n AVALANCHE: '43114',\n GODWOKEN: '71402',\n AKROMA: '200625',\n POLIS: '333999',\n ARBITRUM_TEST: '421613',\n SEPOLIA: '11155111',\n AURORA: '1313161554',\n HARMONY: '1666600000',\n PALM: '11297108109',\n CURIO: '836542336838601',\n SOLANA_MAINNET: 'sol_mainnet',\n SOLANA_DEVNET: 'sol_devnet',\n SOLANA_TESTNET: 'sol_testnet',\n SOLANA_PYTH: 'sol_pyth',\n SUI_DEVNET: 'sui_devnet',\n APTOS_MAINNET: 'aptos_mainnet',\n APTOS_TESTNET: 'aptos_testnet',\n}\n\nexport const CHAIN_MAP: Record<string, string> = {}\n\nfor (const [key, value] of Object.entries(CHAIN_IDS)) {\n const parts = key.split('_')\n CHAIN_MAP[value] = parts\n .map((part, index) => {\n return part[0] + part.slice(1).toLowerCase()\n })\n .join(' ')\n}\n\nexport function getChainName(chainId: string | number | null | undefined): string {\n if (typeof chainId === 'number') {\n chainId = chainId.toString()\n }\n if (chainId) {\n const name = CHAIN_MAP[chainId]\n if (name) {\n return name\n }\n }\n return chainId || ''\n}\n\nexport function getChainType(chainId?: string | number): string {\n const id = String(chainId).toLowerCase()\n if (id.startsWith('sol')) {\n return 'solana'\n }\n if (id.startsWith('sui')) {\n return 'sui'\n }\n if (id.startsWith('apt')) {\n return 'aptos'\n }\n return 'EVM'\n}\n"]}
@@ -1,12 +1,10 @@
1
- export { BigDecimal } from './big-decimal.js';
1
+ export { BigDecimal, scaleDown } from './big-decimal.js';
2
2
  export { BaseContext } from './base-context.js';
3
3
  export { type Labels, normalizeLabels } from './metadata.js';
4
- export { ContractContext, ContractView, BoundContractView } from './context.js';
5
4
  export { CounterBinding, Meter, GaugeBinding, Counter, Gauge, MetricOptions } from './meter.js';
6
5
  export { EventTracker, AccountEventTracker } from './event-tracker.js';
7
6
  export { Exporter } from './exporter.js';
8
- export { type Numberish, toBigInteger, toMetricValue, toBlockTag } from './numberish.js';
9
- export { BindOptions } from './bind-options.js';
7
+ export { type Numberish, toBigInteger, toMetricValue } from './numberish.js';
10
8
  export { SuiBaseProcessor, SuiBindOptions } from './sui-processor.js';
11
9
  export { SuiPlugin } from './sui-plugin.js';
12
10
  export { CorePlugin } from './core-plugin.js';
package/lib/core/index.js CHANGED
@@ -1,12 +1,10 @@
1
- export { BigDecimal } from './big-decimal.js';
1
+ export { BigDecimal, scaleDown } from './big-decimal.js';
2
2
  export { BaseContext } from './base-context.js';
3
3
  export { normalizeLabels } from './metadata.js';
4
- export { ContractContext, ContractView, BoundContractView } from './context.js';
5
4
  export { CounterBinding, Meter, GaugeBinding, Counter, Gauge, MetricOptions } from './meter.js';
6
5
  export { EventTracker, AccountEventTracker } from './event-tracker.js';
7
6
  export { Exporter } from './exporter.js';
8
- export { toBigInteger, toMetricValue, toBlockTag } from './numberish.js';
9
- export { BindOptions } from './bind-options.js';
7
+ export { toBigInteger, toMetricValue } from './numberish.js';
10
8
  export { SuiBaseProcessor, SuiBindOptions } from './sui-processor.js';
11
9
  export { SuiPlugin } from './sui-plugin.js';
12
10
  export { CorePlugin } from './core-plugin.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAe,eAAe,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAC/E,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC/F,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAkB,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAExF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE/C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAErE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA","sourcesContent":["export { BigDecimal } from './big-decimal.js'\nexport { BaseContext } from './base-context.js'\nexport { type Labels, normalizeLabels } from './metadata.js'\nexport { ContractContext, ContractView, BoundContractView } from './context.js'\nexport { CounterBinding, Meter, GaugeBinding, Counter, Gauge, MetricOptions } from './meter.js'\nexport { EventTracker, AccountEventTracker } from './event-tracker.js'\nexport { Exporter } from './exporter.js'\nexport { type Numberish, toBigInteger, toMetricValue, toBlockTag } from './numberish.js'\n\nexport { BindOptions } from './bind-options.js'\n\nexport { SuiBaseProcessor, SuiBindOptions } from './sui-processor.js'\n\nexport { SuiPlugin } from './sui-plugin.js'\nexport { CorePlugin } from './core-plugin.js'\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAe,eAAe,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC/F,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAkB,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAE5E,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAErE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA","sourcesContent":["export { BigDecimal, scaleDown } from './big-decimal.js'\nexport { BaseContext } from './base-context.js'\nexport { type Labels, normalizeLabels } from './metadata.js'\nexport { CounterBinding, Meter, GaugeBinding, Counter, Gauge, MetricOptions } from './meter.js'\nexport { EventTracker, AccountEventTracker } from './event-tracker.js'\nexport { Exporter } from './exporter.js'\nexport { type Numberish, toBigInteger, toMetricValue } from './numberish.js'\n\nexport { SuiBaseProcessor, SuiBindOptions } from './sui-processor.js'\n\nexport { SuiPlugin } from './sui-plugin.js'\nexport { CorePlugin } from './core-plugin.js'\n"]}
@@ -1,7 +1,5 @@
1
1
  import { BigInteger, MetricValue } from '@sentio/protos';
2
2
  import { BigDecimal } from './big-decimal.js';
3
- import { BlockTag } from 'ethers/providers';
4
3
  export type Numberish = number | bigint | BigDecimal | string;
5
- export declare function toBlockTag(a: number | bigint): BlockTag;
6
4
  export declare function toMetricValue(value: Numberish): MetricValue;
7
5
  export declare function toBigInteger(a: Numberish): BigInteger;
@@ -1,14 +1,5 @@
1
1
  import { MetricValue } from '@sentio/protos';
2
2
  import { BigDecimal } from './big-decimal.js';
3
- export function toBlockTag(a) {
4
- if (typeof a === 'number') {
5
- return a;
6
- }
7
- if (a > Number.MAX_SAFE_INTEGER) {
8
- return '0x' + a.toString(16);
9
- }
10
- return Number(a);
11
- }
12
3
  export function toMetricValue(value) {
13
4
  if (typeof value === 'number') {
14
5
  if (Number.isNaN(value)) {
@@ -1 +1 @@
1
- {"version":3,"file":"numberish.js","sourceRoot":"","sources":["../../src/core/numberish.ts"],"names":[],"mappings":"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","sourcesContent":["import { BigInteger, MetricValue } from '@sentio/protos'\nimport { BigDecimal } from './big-decimal.js'\nimport { BlockTag } from 'ethers/providers'\n\nexport type Numberish = number | bigint | BigDecimal | string\n\nexport function toBlockTag(a: number | bigint): BlockTag {\n if (typeof a === 'number') {\n return a\n }\n if (a > Number.MAX_SAFE_INTEGER) {\n return '0x' + a.toString(16)\n }\n return Number(a)\n}\n\nexport function toMetricValue(value: Numberish): MetricValue {\n if (typeof value === 'number') {\n if (Number.isNaN(value)) {\n throw new Error('Cannot record NaN value')\n }\n if (!Number.isFinite(value)) {\n throw new Error('Cannot record infinite value')\n }\n if (Number.isInteger(value) && !Number.isSafeInteger(value)) {\n return MetricValue.fromPartial({\n bigInteger: toBigInteger(value),\n })\n }\n\n return MetricValue.fromPartial({\n doubleValue: Number(value),\n })\n }\n if (typeof value === 'bigint') {\n return MetricValue.fromPartial({\n bigInteger: toBigInteger(value),\n })\n }\n if (typeof value === 'string') {\n return MetricValue.fromPartial({\n bigDecimal: value,\n })\n }\n // if (value instanceof BigDecimal) {\n // Carefully consider the use case here\n if (value.isInteger()) {\n return MetricValue.fromPartial({\n bigInteger: bigDecimalToBigInteger(value),\n })\n } else {\n if (value.isNaN()) {\n throw new Error('Cannot record NaN value')\n }\n if (!value.isFinite()) {\n // NaN also not finite\n throw new Error('Cannot record infinite value')\n }\n return MetricValue.fromPartial({\n bigDecimal: value.toString(), // e.g. -7.350918e-428\n })\n }\n // }\n}\n\nfunction bigDecimalToBigInteger(a: BigDecimal): BigInteger {\n const negative = a.isNegative()\n if (negative) {\n a = a.abs()\n }\n return hexToBigInteger(a.toString(16), negative)\n}\n\nfunction intToBigInteger(a: bigint | number): BigInteger {\n const negative = a < 0\n if (negative) {\n a = -a\n }\n return hexToBigInteger(a.toString(16), negative)\n}\n\nexport function toBigInteger(a: Numberish): BigInteger {\n if (typeof a === 'number') {\n return intToBigInteger(a)\n }\n if (typeof a === 'bigint') {\n return intToBigInteger(a)\n }\n if (typeof a === 'string') {\n return intToBigInteger(BigInt(a))\n }\n if (a instanceof BigDecimal) {\n return bigDecimalToBigInteger(a)\n }\n return intToBigInteger(a)\n\n // Following code is actually very slow\n // while (a > 0) {\n // const d = a & 0xffn\n // a >>= 8n\n // value.push(Number(d))\n // }\n //\n // return {\n // negative, value: new Uint8Array(value.reverse()),\n // }\n}\n\nfunction hexToBigInteger(hex: string, negative: boolean): BigInteger {\n if (hex.length % 2 === 1) {\n hex = '0' + hex\n }\n const buffer = Buffer.from(hex, 'hex')\n\n return {\n negative: negative,\n data: new Uint8Array(buffer),\n }\n}\n"]}
1
+ {"version":3,"file":"numberish.js","sourceRoot":"","sources":["../../src/core/numberish.ts"],"names":[],"mappings":"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","sourcesContent":["import { BigInteger, MetricValue } from '@sentio/protos'\nimport { BigDecimal } from './big-decimal.js'\n\nexport type Numberish = number | bigint | BigDecimal | string\n\nexport function toMetricValue(value: Numberish): MetricValue {\n if (typeof value === 'number') {\n if (Number.isNaN(value)) {\n throw new Error('Cannot record NaN value')\n }\n if (!Number.isFinite(value)) {\n throw new Error('Cannot record infinite value')\n }\n if (Number.isInteger(value) && !Number.isSafeInteger(value)) {\n return MetricValue.fromPartial({\n bigInteger: toBigInteger(value),\n })\n }\n\n return MetricValue.fromPartial({\n doubleValue: Number(value),\n })\n }\n if (typeof value === 'bigint') {\n return MetricValue.fromPartial({\n bigInteger: toBigInteger(value),\n })\n }\n if (typeof value === 'string') {\n return MetricValue.fromPartial({\n bigDecimal: value,\n })\n }\n // if (value instanceof BigDecimal) {\n // Carefully consider the use case here\n if (value.isInteger()) {\n return MetricValue.fromPartial({\n bigInteger: bigDecimalToBigInteger(value),\n })\n } else {\n if (value.isNaN()) {\n throw new Error('Cannot record NaN value')\n }\n if (!value.isFinite()) {\n // NaN also not finite\n throw new Error('Cannot record infinite value')\n }\n return MetricValue.fromPartial({\n bigDecimal: value.toString(), // e.g. -7.350918e-428\n })\n }\n // }\n}\n\nfunction bigDecimalToBigInteger(a: BigDecimal): BigInteger {\n const negative = a.isNegative()\n if (negative) {\n a = a.abs()\n }\n return hexToBigInteger(a.toString(16), negative)\n}\n\nfunction intToBigInteger(a: bigint | number): BigInteger {\n const negative = a < 0\n if (negative) {\n a = -a\n }\n return hexToBigInteger(a.toString(16), negative)\n}\n\nexport function toBigInteger(a: Numberish): BigInteger {\n if (typeof a === 'number') {\n return intToBigInteger(a)\n }\n if (typeof a === 'bigint') {\n return intToBigInteger(a)\n }\n if (typeof a === 'string') {\n return intToBigInteger(BigInt(a))\n }\n if (a instanceof BigDecimal) {\n return bigDecimalToBigInteger(a)\n }\n return intToBigInteger(a)\n\n // Following code is actually very slow\n // while (a > 0) {\n // const d = a & 0xffn\n // a >>= 8n\n // value.push(Number(d))\n // }\n //\n // return {\n // negative, value: new Uint8Array(value.reverse()),\n // }\n}\n\nfunction hexToBigInteger(hex: string, negative: boolean): BigInteger {\n if (hex.length % 2 === 1) {\n hex = '0' + hex\n }\n const buffer = Buffer.from(hex, 'hex')\n\n return {\n negative: negative,\n data: new Uint8Array(buffer),\n }\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { Plugin, PluginManager, USER_PROCESSOR } from '@sentio/runtime';
2
2
  import { HandlerType } from '@sentio/protos';
3
3
  import { ServerError, Status } from 'nice-grpc';
4
- import { CHAIN_IDS } from '../chain.js';
4
+ import { CHAIN_IDS } from './chain.js';
5
5
  import { SuiProcessorState } from './sui-processor.js';
6
6
  export class SuiPlugin extends Plugin {
7
7
  name = 'SuiPlugin';
@@ -1 +1 @@
1
- {"version":3,"file":"sui-plugin.js","sourceRoot":"","sources":["../../src/core/sui-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACvE,OAAO,EAA+B,WAAW,EAAwC,MAAM,gBAAgB,CAAA;AAE/G,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEtD,MAAM,OAAO,SAAU,SAAQ,MAAM;IACnC,IAAI,GAAW,WAAW,CAAA;IAE1B,KAAK,CAAC,SAAS,CAAC,MAA6B;QAC3C,KAAK,MAAM,YAAY,IAAI,iBAAiB,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE;YACjE,MAAM,cAAc,GAAmB;gBACrC,iBAAiB,EAAE,EAAE;gBACrB,aAAa,EAAE,cAAc;gBAC7B,QAAQ,EAAE;oBACR,IAAI,EAAE,cAAc;oBACpB,OAAO,EAAE,SAAS,CAAC,UAAU;oBAC7B,OAAO,EAAE,YAAY,CAAC,OAAO;oBAC7B,GAAG,EAAE,EAAE;iBACR;gBACD,UAAU,EAAE,EAAE;gBACd,eAAe,EAAE,EAAE;gBACnB,YAAY,EAAE,EAAE;gBAChB,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC,cAAc;gBAC9C,QAAQ,EAAE,EAAE;gBACZ,iBAAiB,EAAE,SAAS;gBAC5B,iBAAiB,EAAE,EAAE;gBACrB,gBAAgB,EAAE,EAAE;aACrB,CAAA;YACD,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;SAC5C;IACH,CAAC;IAED,iBAAiB,GAAG,EAAE,CAAA;IAEtB,cAAc,CAAC,OAAoB;QACjC,QAAQ,OAAO,CAAC,WAAW,EAAE;YAC3B,KAAK,WAAW,CAAC,eAAe,CAAC;YACjC,6CAA6C;YAC7C;gBACE,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE,4BAA4B,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;SACrG;IACH,CAAC;CACF;AAED,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,SAAS,EAAE,CAAC,CAAA","sourcesContent":["import { Plugin, PluginManager, USER_PROCESSOR } from '@sentio/runtime'\nimport { ContractConfig, DataBinding, HandlerType, ProcessConfigResponse, ProcessResult } from '@sentio/protos'\n\nimport { ServerError, Status } from 'nice-grpc'\n\nimport { CHAIN_IDS } from '../chain.js'\nimport { SuiProcessorState } from './sui-processor.js'\n\nexport class SuiPlugin extends Plugin {\n name: string = 'SuiPlugin'\n\n async configure(config: ProcessConfigResponse) {\n for (const suiProcessor of SuiProcessorState.INSTANCE.getValues()) {\n const contractConfig: ContractConfig = {\n transactionConfig: [],\n processorType: USER_PROCESSOR,\n contract: {\n name: 'sui contract',\n chainId: CHAIN_IDS.SUI_DEVNET,\n address: suiProcessor.address,\n abi: '',\n },\n logConfigs: [],\n intervalConfigs: [],\n traceConfigs: [],\n startBlock: suiProcessor.config.startSeqNumber,\n endBlock: 0n,\n instructionConfig: undefined,\n aptosEventConfigs: [],\n aptosCallConfigs: [],\n }\n config.contractConfigs.push(contractConfig)\n }\n }\n\n supportedHandlers = []\n\n processBinding(request: DataBinding): Promise<ProcessResult> {\n switch (request.handlerType) {\n case HandlerType.SUI_TRANSACTION:\n // return this.processSolInstruction(request)\n default:\n throw new ServerError(Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType)\n }\n }\n}\n\nPluginManager.INSTANCE.register(new SuiPlugin())\n"]}
1
+ {"version":3,"file":"sui-plugin.js","sourceRoot":"","sources":["../../src/core/sui-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACvE,OAAO,EAA+B,WAAW,EAAwC,MAAM,gBAAgB,CAAA;AAE/G,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEtD,MAAM,OAAO,SAAU,SAAQ,MAAM;IACnC,IAAI,GAAW,WAAW,CAAA;IAE1B,KAAK,CAAC,SAAS,CAAC,MAA6B;QAC3C,KAAK,MAAM,YAAY,IAAI,iBAAiB,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE;YACjE,MAAM,cAAc,GAAmB;gBACrC,iBAAiB,EAAE,EAAE;gBACrB,aAAa,EAAE,cAAc;gBAC7B,QAAQ,EAAE;oBACR,IAAI,EAAE,cAAc;oBACpB,OAAO,EAAE,SAAS,CAAC,UAAU;oBAC7B,OAAO,EAAE,YAAY,CAAC,OAAO;oBAC7B,GAAG,EAAE,EAAE;iBACR;gBACD,UAAU,EAAE,EAAE;gBACd,eAAe,EAAE,EAAE;gBACnB,YAAY,EAAE,EAAE;gBAChB,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC,cAAc;gBAC9C,QAAQ,EAAE,EAAE;gBACZ,iBAAiB,EAAE,SAAS;gBAC5B,iBAAiB,EAAE,EAAE;gBACrB,gBAAgB,EAAE,EAAE;aACrB,CAAA;YACD,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;SAC5C;IACH,CAAC;IAED,iBAAiB,GAAG,EAAE,CAAA;IAEtB,cAAc,CAAC,OAAoB;QACjC,QAAQ,OAAO,CAAC,WAAW,EAAE;YAC3B,KAAK,WAAW,CAAC,eAAe,CAAC;YACjC,6CAA6C;YAC7C;gBACE,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE,4BAA4B,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;SACrG;IACH,CAAC;CACF;AAED,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,SAAS,EAAE,CAAC,CAAA","sourcesContent":["import { Plugin, PluginManager, USER_PROCESSOR } from '@sentio/runtime'\nimport { ContractConfig, DataBinding, HandlerType, ProcessConfigResponse, ProcessResult } from '@sentio/protos'\n\nimport { ServerError, Status } from 'nice-grpc'\n\nimport { CHAIN_IDS } from './chain.js'\nimport { SuiProcessorState } from './sui-processor.js'\n\nexport class SuiPlugin extends Plugin {\n name: string = 'SuiPlugin'\n\n async configure(config: ProcessConfigResponse) {\n for (const suiProcessor of SuiProcessorState.INSTANCE.getValues()) {\n const contractConfig: ContractConfig = {\n transactionConfig: [],\n processorType: USER_PROCESSOR,\n contract: {\n name: 'sui contract',\n chainId: CHAIN_IDS.SUI_DEVNET,\n address: suiProcessor.address,\n abi: '',\n },\n logConfigs: [],\n intervalConfigs: [],\n traceConfigs: [],\n startBlock: suiProcessor.config.startSeqNumber,\n endBlock: 0n,\n instructionConfig: undefined,\n aptosEventConfigs: [],\n aptosCallConfigs: [],\n }\n config.contractConfigs.push(contractConfig)\n }\n }\n\n supportedHandlers = []\n\n processBinding(request: DataBinding): Promise<ProcessResult> {\n switch (request.handlerType) {\n case HandlerType.SUI_TRANSACTION:\n // return this.processSolInstruction(request)\n default:\n throw new ServerError(Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType)\n }\n }\n}\n\nPluginManager.INSTANCE.register(new SuiPlugin())\n"]}
@@ -1,4 +1,4 @@
1
- import { SuiContext } from './context.js';
1
+ import { SuiContext } from '../eth/context.js';
2
2
  import { ProcessResult } from '@sentio/protos';
3
3
  import { ListStateStorage } from '@sentio/runtime';
4
4
  type IndexConfigure = {
@@ -1,4 +1,4 @@
1
- import { SuiContext } from './context.js';
1
+ import { SuiContext } from '../eth/context.js';
2
2
  import { ListStateStorage } from '@sentio/runtime';
3
3
  export class SuiBindOptions {
4
4
  address;
@@ -1 +1 @@
1
- {"version":3,"file":"sui-processor.js","sourceRoot":"","sources":["../../src/core/sui-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAOlD,MAAM,OAAO,cAAc;IACzB,OAAO,CAAQ;IACf,2BAA2B;IAC3B,gBAAgB;IAChB,UAAU,CAAkB;CAE7B;AAED,MAAM,OAAO,iBAAkB,SAAQ,gBAAkC;IACvE,MAAM,CAAC,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAA;;AAG3C,MAAM,OAAO,gBAAgB;IACpB,kBAAkB,CAA6C;IACtE,OAAO,CAAQ;IACf,MAAM,GAAmB,EAAE,cAAc,EAAE,EAAE,EAAE,CAAA;IAE/C,YAAY,IAAY,EAAE,OAAuB;QAC/C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;QAC9B,IAAI,OAAO,CAAC,UAAU,EAAE;YACtB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;SACnC;QACD,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC3C,CAAC;IAEM,aAAa,CAAC,OAAoD;QACvE,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAA;QACjC,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,iBAAiB,CAAC,GAAQ,EAAE,IAAY;QAC7C,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAE9C,IAAI,GAAG,EAAE;YACP,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;SAClC;QACD,OAAO,GAAG,CAAC,gBAAgB,EAAE,CAAA;IAC/B,CAAC;IAEM,SAAS,CAAC,SAA0B;QACzC,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,CAAA;QAC9C,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,QAAQ,CAAC,QAAyB;QACvC,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC3C,OAAO,IAAI,CAAA;IACb,CAAC;CACF","sourcesContent":["import { SuiContext } from './context.js'\nimport { ProcessResult } from '@sentio/protos'\nimport { ListStateStorage } from '@sentio/runtime'\n\ntype IndexConfigure = {\n startSeqNumber: bigint\n endSeqNumber?: bigint\n}\n\nexport class SuiBindOptions {\n address: string\n // network?: Networkish = 1\n // name?: string\n startBlock?: bigint | number\n // endBlock?: Long | number\n}\n\nexport class SuiProcessorState extends ListStateStorage<SuiBaseProcessor> {\n static INSTANCE = new SuiProcessorState()\n}\n\nexport class SuiBaseProcessor {\n public transactionHanlder: (transaction: any, ctx: SuiContext) => void\n address: string\n config: IndexConfigure = { startSeqNumber: 0n }\n\n constructor(name: string, options: SuiBindOptions) {\n this.address = options.address\n if (options.startBlock) {\n this.startSlot(options.startBlock)\n }\n SuiProcessorState.INSTANCE.addValue(this)\n }\n\n public onTransaction(handler: (transaction: any, ctx: SuiContext) => void) {\n this.transactionHanlder = handler\n return this\n }\n\n public handleTransaction(txn: any, slot: bigint): ProcessResult | null {\n const ctx = new SuiContext(this.address, slot)\n\n if (txn) {\n this.transactionHanlder(txn, ctx)\n }\n return ctx.getProcessResult()\n }\n\n public startSlot(startSlot: bigint | number) {\n this.config.startSeqNumber = BigInt(startSlot)\n return this\n }\n\n public endBlock(endBlock: bigint | number) {\n this.config.endSeqNumber = BigInt(endBlock)\n return this\n }\n}\n"]}
1
+ {"version":3,"file":"sui-processor.js","sourceRoot":"","sources":["../../src/core/sui-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAOlD,MAAM,OAAO,cAAc;IACzB,OAAO,CAAQ;IACf,2BAA2B;IAC3B,gBAAgB;IAChB,UAAU,CAAkB;CAE7B;AAED,MAAM,OAAO,iBAAkB,SAAQ,gBAAkC;IACvE,MAAM,CAAC,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAA;;AAG3C,MAAM,OAAO,gBAAgB;IACpB,kBAAkB,CAA6C;IACtE,OAAO,CAAQ;IACf,MAAM,GAAmB,EAAE,cAAc,EAAE,EAAE,EAAE,CAAA;IAE/C,YAAY,IAAY,EAAE,OAAuB;QAC/C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;QAC9B,IAAI,OAAO,CAAC,UAAU,EAAE;YACtB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;SACnC;QACD,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC3C,CAAC;IAEM,aAAa,CAAC,OAAoD;QACvE,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAA;QACjC,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,iBAAiB,CAAC,GAAQ,EAAE,IAAY;QAC7C,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAE9C,IAAI,GAAG,EAAE;YACP,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;SAClC;QACD,OAAO,GAAG,CAAC,gBAAgB,EAAE,CAAA;IAC/B,CAAC;IAEM,SAAS,CAAC,SAA0B;QACzC,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,CAAA;QAC9C,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,QAAQ,CAAC,QAAyB;QACvC,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC3C,OAAO,IAAI,CAAA;IACb,CAAC;CACF","sourcesContent":["import { SuiContext } from '../eth/context.js'\nimport { ProcessResult } from '@sentio/protos'\nimport { ListStateStorage } from '@sentio/runtime'\n\ntype IndexConfigure = {\n startSeqNumber: bigint\n endSeqNumber?: bigint\n}\n\nexport class SuiBindOptions {\n address: string\n // network?: Networkish = 1\n // name?: string\n startBlock?: bigint | number\n // endBlock?: Long | number\n}\n\nexport class SuiProcessorState extends ListStateStorage<SuiBaseProcessor> {\n static INSTANCE = new SuiProcessorState()\n}\n\nexport class SuiBaseProcessor {\n public transactionHanlder: (transaction: any, ctx: SuiContext) => void\n address: string\n config: IndexConfigure = { startSeqNumber: 0n }\n\n constructor(name: string, options: SuiBindOptions) {\n this.address = options.address\n if (options.startBlock) {\n this.startSlot(options.startBlock)\n }\n SuiProcessorState.INSTANCE.addValue(this)\n }\n\n public onTransaction(handler: (transaction: any, ctx: SuiContext) => void) {\n this.transactionHanlder = handler\n return this\n }\n\n public handleTransaction(txn: any, slot: bigint): ProcessResult | null {\n const ctx = new SuiContext(this.address, slot)\n\n if (txn) {\n this.transactionHanlder(txn, ctx)\n }\n return ctx.getProcessResult()\n }\n\n public startSlot(startSlot: bigint | number) {\n this.config.startSeqNumber = BigInt(startSlot)\n return this\n }\n\n public endBlock(endBlock: bigint | number) {\n this.config.endSeqNumber = BigInt(endBlock)\n return this\n }\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  import { EthFetchConfig } from '@sentio/protos';
2
- import { AccountBindOptions } from '../core/bind-options.js';
3
- import { TransferEvent as ERC20TransferEvent } from '../builtin/internal/ERC20.js';
4
- import { TransferEvent as ERC721TransferEvent } from '../builtin/internal/ERC721.js';
5
- import { AccountContext } from '../core/context.js';
2
+ import { AccountBindOptions } from './bind-options.js';
3
+ import { TransferEvent as ERC20TransferEvent } from './builtin/internal/ERC20.js';
4
+ import { TransferEvent as ERC721TransferEvent } from './builtin/internal/ERC721.js';
5
+ import { AccountContext } from './context.js';
6
6
  import { PromiseOrVoid } from '../promise-or-void.js';
7
7
  import { AddressOrTypeEventFilter, EventsHandler } from './base-processor.js';
8
8
  import { LogDescription } from 'ethers';
@@ -1,9 +1,9 @@
1
- import { ERC20__factory, ERC721__factory } from '../builtin/internal/index.js';
1
+ import { ERC20__factory, ERC721__factory } from './builtin/internal/index.js';
2
2
  import { AddressType, EthFetchConfig, ProcessResult } from '@sentio/protos';
3
3
  import { Network } from 'ethers/providers';
4
- import { ERC20Processor } from '../builtin/internal/erc20_processor.js';
5
- import { ERC721Processor } from '../builtin/internal/erc721_processor.js';
6
- import { AccountContext } from '../core/context.js';
4
+ import { ERC20Processor } from './builtin/internal/erc20_processor.js';
5
+ import { ERC721Processor } from './builtin/internal/erc721_processor.js';
6
+ import { AccountContext } from './context.js';
7
7
  import { AccountProcessorState } from './account-processor-state.js';
8
8
  const ERC20_INTERFACE = ERC20__factory.createInterface();
9
9
  const ERC721_INTERFACE = ERC721__factory.createInterface();
@@ -1 +1 @@
1
- {"version":3,"file":"account-processor.js","sourceRoot":"","sources":["../../src/eth/account-processor.ts"],"names":[],"mappings":"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","sourcesContent":["import { ERC20__factory, ERC721__factory } from '../builtin/internal/index.js'\nimport { AddressType, EthFetchConfig, ProcessResult } from '@sentio/protos'\nimport { AccountBindOptions } from '../core/bind-options.js'\n\nimport { Network, LogParams } from 'ethers/providers'\n\nimport { TransferEvent as ERC20TransferEvent } from '../builtin/internal/ERC20.js'\nimport { TransferEvent as ERC721TransferEvent } from '../builtin/internal/ERC721.js'\n\nimport { ERC20Processor } from '../builtin/internal/erc20_processor.js'\nimport { ERC721Processor } from '../builtin/internal/erc721_processor.js'\n\nimport { AccountContext } from '../core/context.js'\nimport { PromiseOrVoid } from '../promise-or-void.js'\nimport { AddressOrTypeEventFilter, EventsHandler } from './base-processor.js'\nimport { Transaction, Block, TransactionReceipt, LogDescription } from 'ethers'\nimport { AccountProcessorState } from './account-processor-state.js'\n\nconst ERC20_INTERFACE = ERC20__factory.createInterface()\nconst ERC721_INTERFACE = ERC721__factory.createInterface()\n\nexport class AccountProcessor {\n config: AccountBindOptions\n eventHandlers: EventsHandler[] = []\n\n static bind(config: AccountBindOptions): AccountProcessor {\n const processor = new AccountProcessor(config)\n AccountProcessorState.INSTANCE.addValue(processor)\n return processor\n }\n\n protected constructor(config: AccountBindOptions) {\n this.config = config\n if (typeof this.config.network === 'string') {\n const asInt = parseInt(this.config.network)\n if (Number.isFinite(asInt)) {\n this.config.network = asInt\n }\n }\n }\n\n public getChainId(): number {\n return Number(Network.from(this.config.network || 1).chainId)\n }\n\n /**\n * Register custom handler function to process erc20 transfer event to this account\n * @param handler custom handler function\n * @param tokensAddresses all the erc20 token address to watch\n * @param fetchConfig\n */\n onERC20TransferIn(\n handler: (event: ERC20TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n tokensAddresses: string[] = [],\n fetchConfig?: EthFetchConfig\n ) {\n return this.onERC20(\n handler,\n tokensAddresses,\n (address: string) => ERC721Processor.filters.Transfer(null, this.config.address),\n fetchConfig\n )\n }\n\n /**\n * Register custom handler function to process erc20 transfer event from this account\n * @param handler custom handler function\n * @param tokensAddresses all the erc20 token address to watch\n * @param fetchConfig\n */\n onERC20TransferOut(\n handler: (event: ERC20TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n tokensAddresses: string[] = [],\n fetchConfig?: EthFetchConfig\n ) {\n return this.onERC20(\n handler,\n tokensAddresses,\n (address: string) => ERC20Processor.filters.Transfer(this.config.address),\n fetchConfig\n )\n }\n\n /**\n * Register custom handler function to process erc20 mint for this account\n * @param handler custom handler function\n * @param tokensAddresses all the erc20 token address to watch\n * @param fetchConfig\n */\n onERC20Minted(\n handler: (event: ERC20TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n tokensAddresses: string[] = [],\n fetchConfig?: EthFetchConfig\n ) {\n return this.onERC20(\n handler,\n tokensAddresses,\n (address: string) =>\n ERC20Processor.filters.Transfer('0x0000000000000000000000000000000000000000', this.config.address),\n fetchConfig\n )\n }\n\n private onERC20(\n handler: (event: ERC20TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n tokensAddresses: string[] = [],\n defaultFilter: (address: string) => AddressOrTypeEventFilter,\n fetchConfig?: EthFetchConfig\n ) {\n return this.onERC(handler, tokensAddresses, defaultFilter, AddressType.ERC20, fetchConfig)\n }\n\n /**\n * Register custom handler function to process ERC721 transfer event to this account\n * @param handler custom handler function\n * @param collections all the ERC721 token address to watch, if not provided then watch all ERC721\n * @param fetchConfig\n */\n onERC721TransferIn(\n handler: (event: ERC721TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n collections: string[],\n fetchConfig?: EthFetchConfig\n ) {\n return this.onERC721(\n handler,\n collections,\n (address: string) => ERC721Processor.filters.Transfer(null, this.config.address),\n fetchConfig\n )\n }\n\n /**\n * Register custom handler function to process ERC721 transfer event from this account\n * @param handler custom handler function\n * @param collections all the ERC721 token address to watch, if not provided then watch all ERC721\n * @param fetchConfig\n */\n onERC721TransferOut(\n handler: (event: ERC721TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n collections: string[],\n fetchConfig?: EthFetchConfig\n ) {\n return this.onERC721(\n handler,\n collections,\n (address: string) => ERC721Processor.filters.Transfer(this.config.address),\n fetchConfig\n )\n }\n\n /**\n * Register custom handler function to process ERC721 mint for this account\n * @param handler custom handler function\n * @param collections all the ERC721 token address to watch, if not provided then watch all ERC721\n * @param fetchConfig\n */\n onERC721Minted(\n handler: (event: ERC721TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n collections: string[] = [],\n fetchConfig?: EthFetchConfig\n ) {\n return this.onERC721(\n handler,\n collections,\n (address: string) =>\n ERC721Processor.filters.Transfer('0x0000000000000000000000000000000000000000', this.config.address),\n fetchConfig\n )\n }\n\n private onERC721(\n handler: (event: ERC721TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n collections: string[],\n defaultFilter: (address: string) => AddressOrTypeEventFilter,\n fetchConfig?: EthFetchConfig\n ) {\n return this.onERC(handler, collections, defaultFilter, AddressType.ERC721, fetchConfig)\n }\n\n private onERC(\n handler: (event: any, ctx: AccountContext) => PromiseOrVoid,\n contractAddresses: string[],\n defaultFilter: (address: string) => AddressOrTypeEventFilter,\n addressType: AddressType,\n fetchConfig?: EthFetchConfig\n ) {\n const filters = []\n for (const token of contractAddresses) {\n const filter = defaultFilter(this.config.address)\n filter.address = token\n filters.push(filter)\n }\n if (!filters.length) {\n const filter = defaultFilter(this.config.address)\n filter.address = undefined\n filter.addressType = addressType\n filters.push(filter)\n }\n return this.onEvent(handler, filters, fetchConfig)\n }\n\n protected onEvent(\n handler: (event: LogDescription, ctx: AccountContext) => PromiseOrVoid,\n filter: AddressOrTypeEventFilter | AddressOrTypeEventFilter[],\n fetchConfig?: EthFetchConfig\n ) {\n const chainId = this.getChainId()\n\n let _filters: AddressOrTypeEventFilter[] = []\n\n if (Array.isArray(filter)) {\n _filters = filter\n } else {\n _filters.push(filter)\n }\n\n // let hasVaildConfig = false\n // for (const filter of _filters) {\n // if (filter.address) {\n // hasVaildConfig = true\n // break\n // }\n // if (filter.topics && filter.topics.length) {\n // hasVaildConfig = true\n // break\n // }\n // }\n //\n // if (!hasVaildConfig) {\n // throw Error('no valid config has been found for this account')\n // }\n\n const config = this.config\n\n this.eventHandlers.push({\n filters: _filters,\n fetchConfig: fetchConfig || EthFetchConfig.fromPartial({}),\n handler: async function (data) {\n const log = data.log as { topics: Array<string>; data: string }\n const ctx = new AccountContext(\n chainId,\n config.address,\n data.timestamp,\n data.block as Block,\n log as any as LogParams,\n undefined,\n data.transaction as Transaction,\n data.transactionReceipt as TransactionReceipt\n )\n const parsed = ERC20_INTERFACE.parseLog(log)\n if (parsed) {\n await handler(parsed, ctx)\n return ctx.getProcessResult()\n }\n return ProcessResult.fromPartial({})\n },\n })\n\n return this\n }\n}\n"]}
1
+ {"version":3,"file":"account-processor.js","sourceRoot":"","sources":["../../src/eth/account-processor.ts"],"names":[],"mappings":"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","sourcesContent":["import { ERC20__factory, ERC721__factory } from './builtin/internal/index.js'\nimport { AddressType, EthFetchConfig, ProcessResult } from '@sentio/protos'\nimport { AccountBindOptions } from './bind-options.js'\n\nimport { Network, LogParams } from 'ethers/providers'\n\nimport { TransferEvent as ERC20TransferEvent } from './builtin/internal/ERC20.js'\nimport { TransferEvent as ERC721TransferEvent } from './builtin/internal/ERC721.js'\n\nimport { ERC20Processor } from './builtin/internal/erc20_processor.js'\nimport { ERC721Processor } from './builtin/internal/erc721_processor.js'\n\nimport { AccountContext } from './context.js'\nimport { PromiseOrVoid } from '../promise-or-void.js'\nimport { AddressOrTypeEventFilter, EventsHandler } from './base-processor.js'\nimport { Transaction, Block, TransactionReceipt, LogDescription } from 'ethers'\nimport { AccountProcessorState } from './account-processor-state.js'\n\nconst ERC20_INTERFACE = ERC20__factory.createInterface()\nconst ERC721_INTERFACE = ERC721__factory.createInterface()\n\nexport class AccountProcessor {\n config: AccountBindOptions\n eventHandlers: EventsHandler[] = []\n\n static bind(config: AccountBindOptions): AccountProcessor {\n const processor = new AccountProcessor(config)\n AccountProcessorState.INSTANCE.addValue(processor)\n return processor\n }\n\n protected constructor(config: AccountBindOptions) {\n this.config = config\n if (typeof this.config.network === 'string') {\n const asInt = parseInt(this.config.network)\n if (Number.isFinite(asInt)) {\n this.config.network = asInt\n }\n }\n }\n\n public getChainId(): number {\n return Number(Network.from(this.config.network || 1).chainId)\n }\n\n /**\n * Register custom handler function to process erc20 transfer event to this account\n * @param handler custom handler function\n * @param tokensAddresses all the erc20 token address to watch\n * @param fetchConfig\n */\n onERC20TransferIn(\n handler: (event: ERC20TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n tokensAddresses: string[] = [],\n fetchConfig?: EthFetchConfig\n ) {\n return this.onERC20(\n handler,\n tokensAddresses,\n (address: string) => ERC721Processor.filters.Transfer(null, this.config.address),\n fetchConfig\n )\n }\n\n /**\n * Register custom handler function to process erc20 transfer event from this account\n * @param handler custom handler function\n * @param tokensAddresses all the erc20 token address to watch\n * @param fetchConfig\n */\n onERC20TransferOut(\n handler: (event: ERC20TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n tokensAddresses: string[] = [],\n fetchConfig?: EthFetchConfig\n ) {\n return this.onERC20(\n handler,\n tokensAddresses,\n (address: string) => ERC20Processor.filters.Transfer(this.config.address),\n fetchConfig\n )\n }\n\n /**\n * Register custom handler function to process erc20 mint for this account\n * @param handler custom handler function\n * @param tokensAddresses all the erc20 token address to watch\n * @param fetchConfig\n */\n onERC20Minted(\n handler: (event: ERC20TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n tokensAddresses: string[] = [],\n fetchConfig?: EthFetchConfig\n ) {\n return this.onERC20(\n handler,\n tokensAddresses,\n (address: string) =>\n ERC20Processor.filters.Transfer('0x0000000000000000000000000000000000000000', this.config.address),\n fetchConfig\n )\n }\n\n private onERC20(\n handler: (event: ERC20TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n tokensAddresses: string[] = [],\n defaultFilter: (address: string) => AddressOrTypeEventFilter,\n fetchConfig?: EthFetchConfig\n ) {\n return this.onERC(handler, tokensAddresses, defaultFilter, AddressType.ERC20, fetchConfig)\n }\n\n /**\n * Register custom handler function to process ERC721 transfer event to this account\n * @param handler custom handler function\n * @param collections all the ERC721 token address to watch, if not provided then watch all ERC721\n * @param fetchConfig\n */\n onERC721TransferIn(\n handler: (event: ERC721TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n collections: string[],\n fetchConfig?: EthFetchConfig\n ) {\n return this.onERC721(\n handler,\n collections,\n (address: string) => ERC721Processor.filters.Transfer(null, this.config.address),\n fetchConfig\n )\n }\n\n /**\n * Register custom handler function to process ERC721 transfer event from this account\n * @param handler custom handler function\n * @param collections all the ERC721 token address to watch, if not provided then watch all ERC721\n * @param fetchConfig\n */\n onERC721TransferOut(\n handler: (event: ERC721TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n collections: string[],\n fetchConfig?: EthFetchConfig\n ) {\n return this.onERC721(\n handler,\n collections,\n (address: string) => ERC721Processor.filters.Transfer(this.config.address),\n fetchConfig\n )\n }\n\n /**\n * Register custom handler function to process ERC721 mint for this account\n * @param handler custom handler function\n * @param collections all the ERC721 token address to watch, if not provided then watch all ERC721\n * @param fetchConfig\n */\n onERC721Minted(\n handler: (event: ERC721TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n collections: string[] = [],\n fetchConfig?: EthFetchConfig\n ) {\n return this.onERC721(\n handler,\n collections,\n (address: string) =>\n ERC721Processor.filters.Transfer('0x0000000000000000000000000000000000000000', this.config.address),\n fetchConfig\n )\n }\n\n private onERC721(\n handler: (event: ERC721TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n collections: string[],\n defaultFilter: (address: string) => AddressOrTypeEventFilter,\n fetchConfig?: EthFetchConfig\n ) {\n return this.onERC(handler, collections, defaultFilter, AddressType.ERC721, fetchConfig)\n }\n\n private onERC(\n handler: (event: any, ctx: AccountContext) => PromiseOrVoid,\n contractAddresses: string[],\n defaultFilter: (address: string) => AddressOrTypeEventFilter,\n addressType: AddressType,\n fetchConfig?: EthFetchConfig\n ) {\n const filters = []\n for (const token of contractAddresses) {\n const filter = defaultFilter(this.config.address)\n filter.address = token\n filters.push(filter)\n }\n if (!filters.length) {\n const filter = defaultFilter(this.config.address)\n filter.address = undefined\n filter.addressType = addressType\n filters.push(filter)\n }\n return this.onEvent(handler, filters, fetchConfig)\n }\n\n protected onEvent(\n handler: (event: LogDescription, ctx: AccountContext) => PromiseOrVoid,\n filter: AddressOrTypeEventFilter | AddressOrTypeEventFilter[],\n fetchConfig?: EthFetchConfig\n ) {\n const chainId = this.getChainId()\n\n let _filters: AddressOrTypeEventFilter[] = []\n\n if (Array.isArray(filter)) {\n _filters = filter\n } else {\n _filters.push(filter)\n }\n\n // let hasVaildConfig = false\n // for (const filter of _filters) {\n // if (filter.address) {\n // hasVaildConfig = true\n // break\n // }\n // if (filter.topics && filter.topics.length) {\n // hasVaildConfig = true\n // break\n // }\n // }\n //\n // if (!hasVaildConfig) {\n // throw Error('no valid config has been found for this account')\n // }\n\n const config = this.config\n\n this.eventHandlers.push({\n filters: _filters,\n fetchConfig: fetchConfig || EthFetchConfig.fromPartial({}),\n handler: async function (data) {\n const log = data.log as { topics: Array<string>; data: string }\n const ctx = new AccountContext(\n chainId,\n config.address,\n data.timestamp,\n data.block as Block,\n log as any as LogParams,\n undefined,\n data.transaction as Transaction,\n data.transactionReceipt as TransactionReceipt\n )\n const parsed = ERC20_INTERFACE.parseLog(log)\n if (parsed) {\n await handler(parsed, ctx)\n return ctx.getProcessResult()\n }\n return ProcessResult.fromPartial({})\n },\n })\n\n return this\n }\n}\n"]}
@@ -1,13 +1,13 @@
1
- import { BoundContractView, ContractContext, ContractView } from '../core/context.js';
1
+ import { BoundContractView, ContractContext, ContractView } from './context.js';
2
2
  import { BaseContract, Block } from 'ethers';
3
3
  import { BaseProcessor } from './base-processor.js';
4
- import { BindOptions } from '../core/bind-options.js';
4
+ import { BindOptions } from './bind-options.js';
5
5
  import { EthFetchConfig, HandleInterval, TemplateInstance } from '@sentio/protos';
6
6
  import { PromiseOrVoid } from '../promise-or-void.js';
7
7
  import { Trace } from './trace.js';
8
8
  import { ListStateStorage } from '@sentio/runtime';
9
9
  import { DeferredTopicFilter } from 'ethers/contract';
10
- import { Eth } from './eth.js';
10
+ import { EthLog } from './eth.js';
11
11
  export declare class ProcessorTemplateProcessorState extends ListStateStorage<BaseProcessorTemplate<BaseContract, BoundContractView<BaseContract, any>>> {
12
12
  static INSTANCE: ProcessorTemplateProcessorState;
13
13
  }
@@ -28,13 +28,13 @@ export declare abstract class BaseProcessorTemplate<TContract extends BaseContra
28
28
  fetchConfig?: EthFetchConfig;
29
29
  }[];
30
30
  eventHandlers: {
31
- handler: (event: Eth, ctx: ContractContext<TContract, TBoundContractView>) => PromiseOrVoid;
31
+ handler: (event: EthLog, ctx: ContractContext<TContract, TBoundContractView>) => PromiseOrVoid;
32
32
  filter: DeferredTopicFilter | DeferredTopicFilter[];
33
33
  fetchConfig?: EthFetchConfig;
34
34
  }[];
35
35
  constructor();
36
36
  bind(options: BindOptions): BaseProcessor<TContract, TBoundContractView> | undefined;
37
- onEvent(handler: (event: Eth, ctx: ContractContext<TContract, TBoundContractView>) => PromiseOrVoid, filter: DeferredTopicFilter | DeferredTopicFilter[], fetchConfig?: EthFetchConfig): this;
37
+ onEvent(handler: (event: EthLog, ctx: ContractContext<TContract, TBoundContractView>) => PromiseOrVoid, filter: DeferredTopicFilter | DeferredTopicFilter[], fetchConfig?: EthFetchConfig): this;
38
38
  onBlockInterval(handler: (block: Block, ctx: ContractContext<TContract, TBoundContractView>) => PromiseOrVoid, blockInterval?: number, backfillBlockInterval?: number): this;
39
39
  onTimeInterval(handler: (block: Block, ctx: ContractContext<TContract, TBoundContractView>) => PromiseOrVoid, timeIntervalInMinutes?: number, backfillBlockInterval?: number): this;
40
40
  onInterval(handler: (block: Block, ctx: ContractContext<TContract, TBoundContractView>) => PromiseOrVoid, timeInterval: HandleInterval | undefined, blockInterval: HandleInterval | undefined): this;
@@ -1,4 +1,4 @@
1
- import { getOptionsSignature } from '../core/bind-options.js';
1
+ import { getOptionsSignature } from './bind-options.js';
2
2
  import { ListStateStorage } from '@sentio/runtime';
3
3
  import { Network } from 'ethers/providers';
4
4
  export class ProcessorTemplateProcessorState extends ListStateStorage {