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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (609) hide show
  1. package/LICENSE +55 -0
  2. package/lib/aptos/api.d.ts +2 -0
  3. package/lib/aptos/api.js +14 -0
  4. package/lib/aptos/api.js.map +1 -0
  5. package/lib/aptos/aptos-plugin.d.ts +14 -0
  6. package/lib/aptos/aptos-plugin.js +190 -0
  7. package/lib/aptos/aptos-plugin.js.map +1 -0
  8. package/lib/aptos/aptos-processor.d.ts +75 -0
  9. package/lib/aptos/aptos-processor.js +193 -0
  10. package/lib/aptos/aptos-processor.js.map +1 -0
  11. package/lib/aptos/context.d.ts +22 -0
  12. package/lib/aptos/context.js +69 -0
  13. package/lib/aptos/context.js.map +1 -0
  14. package/lib/aptos/index.d.ts +9 -0
  15. package/lib/aptos/index.js +34 -0
  16. package/lib/aptos/index.js.map +1 -0
  17. package/lib/aptos/models.d.ts +23 -0
  18. package/lib/aptos/models.js +3 -0
  19. package/lib/aptos/models.js.map +1 -0
  20. package/lib/aptos/network.d.ts +14 -0
  21. package/lib/aptos/network.js +46 -0
  22. package/lib/aptos/network.js.map +1 -0
  23. package/lib/aptos/runtime.d.ts +2 -0
  24. package/lib/aptos/runtime.js +16 -0
  25. package/lib/aptos/runtime.js.map +1 -0
  26. package/lib/aptos/type-registry.d.ts +21 -0
  27. package/lib/aptos/type-registry.js +156 -0
  28. package/lib/aptos/type-registry.js.map +1 -0
  29. package/lib/aptos/types.d.ts +9 -0
  30. package/lib/aptos/types.js +135 -0
  31. package/lib/aptos/types.js.map +1 -0
  32. package/{dist/numberish.test.d.ts → lib/aptos/types.test.d.ts} +0 -0
  33. package/lib/aptos/types.test.js.map +1 -0
  34. package/lib/aptos/utils.d.ts +7 -0
  35. package/lib/aptos/utils.js +27 -0
  36. package/lib/aptos/utils.js.map +1 -0
  37. package/lib/aptos-codegen/codegen.d.ts +23 -0
  38. package/lib/aptos-codegen/codegen.js +364 -0
  39. package/lib/aptos-codegen/codegen.js.map +1 -0
  40. package/lib/aptos-codegen/typegen.d.ts +17 -0
  41. package/lib/aptos-codegen/typegen.js +142 -0
  42. package/lib/aptos-codegen/typegen.js.map +1 -0
  43. package/lib/binds.d.ts +12 -0
  44. package/lib/binds.js +38 -0
  45. package/lib/binds.js.map +1 -0
  46. package/lib/builtin/aptos/0x1.d.ts +1913 -0
  47. package/lib/builtin/aptos/0x1.js +2748 -0
  48. package/lib/builtin/aptos/0x1.js.map +1 -0
  49. package/lib/builtin/aptos/0x3.d.ts +482 -0
  50. package/lib/builtin/aptos/0x3.js +526 -0
  51. package/lib/builtin/aptos/0x3.js.map +1 -0
  52. package/lib/builtin/aptos/index.d.ts +2 -0
  53. package/{dist/builtin/internal → lib/builtin/aptos}/index.js +3 -4
  54. package/lib/builtin/aptos/index.js.map +1 -0
  55. package/lib/builtin/eacaggregatorproxy/index.d.ts +2 -0
  56. package/lib/builtin/eacaggregatorproxy/index.js +22 -0
  57. package/lib/builtin/eacaggregatorproxy/index.js.map +1 -0
  58. package/lib/builtin/eacaggregatorproxy/test-utils.d.ts +6 -0
  59. package/lib/builtin/eacaggregatorproxy/test-utils.js +57 -0
  60. package/lib/builtin/eacaggregatorproxy/test-utils.js.map +1 -0
  61. package/lib/builtin/erc1155/index.d.ts +2 -0
  62. package/lib/builtin/erc1155/index.js +22 -0
  63. package/lib/builtin/erc1155/index.js.map +1 -0
  64. package/lib/builtin/erc1155/test-utils.d.ts +6 -0
  65. package/lib/builtin/erc1155/test-utils.js +57 -0
  66. package/lib/builtin/erc1155/test-utils.js.map +1 -0
  67. package/{dist → lib}/builtin/erc20/index.d.ts +1 -1
  68. package/{dist → lib}/builtin/erc20/index.js +1 -1
  69. package/lib/builtin/erc20/index.js.map +1 -0
  70. package/lib/builtin/erc20/test-utils.d.ts +5 -0
  71. package/lib/builtin/erc20/test-utils.js +46 -0
  72. package/lib/builtin/erc20/test-utils.js.map +1 -0
  73. package/lib/builtin/erc20bytes/index.d.ts +2 -0
  74. package/lib/builtin/erc20bytes/index.js +22 -0
  75. package/lib/builtin/erc20bytes/index.js.map +1 -0
  76. package/lib/builtin/erc20bytes/test-utils.d.ts +4 -0
  77. package/lib/builtin/erc20bytes/test-utils.js +35 -0
  78. package/lib/builtin/erc20bytes/test-utils.js.map +1 -0
  79. package/lib/builtin/erc721/index.d.ts +2 -0
  80. package/lib/builtin/erc721/index.js +22 -0
  81. package/lib/builtin/erc721/index.js.map +1 -0
  82. package/lib/builtin/erc721/test-utils.d.ts +5 -0
  83. package/lib/builtin/erc721/test-utils.js +46 -0
  84. package/lib/builtin/erc721/test-utils.js.map +1 -0
  85. package/lib/builtin/index.d.ts +6 -0
  86. package/lib/builtin/index.js +33 -0
  87. package/lib/builtin/index.js.map +1 -0
  88. package/lib/builtin/internal/EACAggregatorProxy.d.ts +460 -0
  89. package/lib/builtin/internal/EACAggregatorProxy.js +3 -0
  90. package/lib/builtin/internal/EACAggregatorProxy.js.map +1 -0
  91. package/lib/builtin/internal/ERC1155.d.ts +199 -0
  92. package/lib/builtin/internal/ERC1155.js +3 -0
  93. package/lib/builtin/internal/ERC1155.js.map +1 -0
  94. package/lib/builtin/internal/ERC20.d.ts +307 -0
  95. package/{dist/builtin/internal/Erc20.js → lib/builtin/internal/ERC20.js} +1 -1
  96. package/lib/builtin/internal/ERC20.js.map +1 -0
  97. package/{dist/builtin/internal/Erc20.d.ts → lib/builtin/internal/ERC20Bytes.d.ts} +62 -46
  98. package/lib/builtin/internal/ERC20Bytes.js +3 -0
  99. package/lib/builtin/internal/ERC20Bytes.js.map +1 -0
  100. package/lib/builtin/internal/ERC721.d.ts +252 -0
  101. package/lib/builtin/internal/ERC721.js +3 -0
  102. package/lib/builtin/internal/ERC721.js.map +1 -0
  103. package/lib/builtin/internal/WETH9.d.ts +221 -0
  104. package/lib/builtin/internal/WETH9.js +3 -0
  105. package/lib/builtin/internal/WETH9.js.map +1 -0
  106. package/{dist → lib}/builtin/internal/common.d.ts +0 -0
  107. package/{dist → lib}/builtin/internal/common.js +0 -0
  108. package/lib/builtin/internal/common.js.map +1 -0
  109. package/lib/builtin/internal/eacaggregatorproxy_processor.d.ts +294 -0
  110. package/lib/builtin/internal/eacaggregatorproxy_processor.js +761 -0
  111. package/lib/builtin/internal/eacaggregatorproxy_processor.js.map +1 -0
  112. package/lib/builtin/internal/erc1155_processor.d.ts +126 -0
  113. package/lib/builtin/internal/erc1155_processor.js +313 -0
  114. package/lib/builtin/internal/erc1155_processor.js.map +1 -0
  115. package/lib/builtin/internal/erc20_processor.d.ts +166 -0
  116. package/lib/builtin/internal/erc20_processor.js +418 -0
  117. package/lib/builtin/internal/erc20_processor.js.map +1 -0
  118. package/lib/builtin/internal/erc20bytes_processor.d.ts +101 -0
  119. package/lib/builtin/internal/erc20bytes_processor.js +311 -0
  120. package/lib/builtin/internal/erc20bytes_processor.js.map +1 -0
  121. package/lib/builtin/internal/erc721_processor.d.ts +155 -0
  122. package/lib/builtin/internal/erc721_processor.js +437 -0
  123. package/lib/builtin/internal/erc721_processor.js.map +1 -0
  124. package/lib/builtin/internal/factories/EACAggregatorProxy__factory.d.ts +46 -0
  125. package/lib/builtin/internal/factories/EACAggregatorProxy__factory.js +528 -0
  126. package/lib/builtin/internal/factories/EACAggregatorProxy__factory.js.map +1 -0
  127. package/{dist/builtin/internal/factories/Erc20__factory.d.ts → lib/builtin/internal/factories/ERC1155__factory.d.ts} +4 -4
  128. package/lib/builtin/internal/factories/ERC1155__factory.js +333 -0
  129. package/lib/builtin/internal/factories/ERC1155__factory.js.map +1 -0
  130. package/lib/builtin/internal/factories/ERC20Bytes__factory.d.ts +48 -0
  131. package/{dist/builtin/internal/factories/Erc20__factory.js → lib/builtin/internal/factories/ERC20Bytes__factory.js} +128 -89
  132. package/lib/builtin/internal/factories/ERC20Bytes__factory.js.map +1 -0
  133. package/lib/builtin/internal/factories/ERC20__factory.d.ts +42 -0
  134. package/lib/builtin/internal/factories/ERC20__factory.js +405 -0
  135. package/lib/builtin/internal/factories/ERC20__factory.js.map +1 -0
  136. package/lib/builtin/internal/factories/ERC721__factory.d.ts +51 -0
  137. package/lib/builtin/internal/factories/ERC721__factory.js +365 -0
  138. package/lib/builtin/internal/factories/ERC721__factory.js.map +1 -0
  139. package/lib/builtin/internal/factories/WETH9__factory.d.ts +45 -0
  140. package/lib/builtin/internal/factories/WETH9__factory.js +298 -0
  141. package/lib/builtin/internal/factories/WETH9__factory.js.map +1 -0
  142. package/lib/builtin/internal/factories/index.d.ts +6 -0
  143. package/lib/builtin/internal/factories/index.js +19 -0
  144. package/lib/builtin/internal/factories/index.js.map +1 -0
  145. package/lib/builtin/internal/index.d.ts +13 -0
  146. package/lib/builtin/internal/index.js +40 -0
  147. package/lib/builtin/internal/index.js.map +1 -0
  148. package/lib/builtin/internal/weth9_processor.d.ts +115 -0
  149. package/lib/builtin/internal/weth9_processor.js +353 -0
  150. package/lib/builtin/internal/weth9_processor.js.map +1 -0
  151. package/lib/builtin/solana/index.d.ts +2 -0
  152. package/lib/builtin/solana/index.js +19 -0
  153. package/lib/builtin/solana/index.js.map +1 -0
  154. package/lib/builtin/solana/spl-token-processor.d.ts +39 -0
  155. package/lib/builtin/solana/spl-token-processor.js +258 -0
  156. package/lib/builtin/solana/spl-token-processor.js.map +1 -0
  157. package/lib/builtin/solana/types.d.ts +427 -0
  158. package/lib/builtin/solana/types.js +203 -0
  159. package/lib/builtin/solana/types.js.map +1 -0
  160. package/lib/builtin/solana/wormhole-processor.d.ts +16 -0
  161. package/{dist/test-case/types/wormhole_processor.js → lib/builtin/solana/wormhole-processor.js} +57 -54
  162. package/lib/builtin/solana/wormhole-processor.js.map +1 -0
  163. package/lib/builtin/weth9/index.d.ts +2 -0
  164. package/lib/builtin/weth9/index.js +22 -0
  165. package/lib/builtin/weth9/index.js.map +1 -0
  166. package/lib/builtin/weth9/test-utils.d.ts +6 -0
  167. package/lib/builtin/weth9/test-utils.js +57 -0
  168. package/lib/builtin/weth9/test-utils.js.map +1 -0
  169. package/lib/chain-config.d.ts +6 -0
  170. package/lib/chain-config.js +3 -0
  171. package/lib/chain-config.js.map +1 -0
  172. package/lib/core/account-processor.d.ts +58 -0
  173. package/lib/core/account-processor.js +147 -0
  174. package/lib/core/account-processor.js.map +1 -0
  175. package/lib/core/base-context.d.ts +12 -0
  176. package/lib/core/base-context.js +25 -0
  177. package/lib/core/base-context.js.map +1 -0
  178. package/lib/core/base-processor-template.d.ts +42 -0
  179. package/{dist → lib/core}/base-processor-template.js +32 -6
  180. package/lib/core/base-processor-template.js.map +1 -0
  181. package/lib/core/base-processor.d.ts +39 -0
  182. package/lib/core/base-processor.js +153 -0
  183. package/lib/core/base-processor.js.map +1 -0
  184. package/lib/core/big-decimal.d.ts +1 -0
  185. package/lib/core/big-decimal.js +6 -0
  186. package/lib/core/big-decimal.js.map +1 -0
  187. package/{dist → lib/core}/bind-options.d.ts +5 -0
  188. package/{dist → lib/core}/bind-options.js +10 -1
  189. package/lib/core/bind-options.js.map +1 -0
  190. package/lib/core/context.d.ts +55 -0
  191. package/lib/core/context.js +162 -0
  192. package/lib/core/context.js.map +1 -0
  193. package/lib/core/eth-plugin.d.ts +14 -0
  194. package/lib/core/eth-plugin.js +221 -0
  195. package/lib/core/eth-plugin.js.map +1 -0
  196. package/lib/core/event-tracker.d.ts +26 -0
  197. package/lib/core/event-tracker.js +54 -0
  198. package/lib/core/event-tracker.js.map +1 -0
  199. package/lib/core/exporter.d.ts +13 -0
  200. package/lib/core/exporter.js +30 -0
  201. package/lib/core/exporter.js.map +1 -0
  202. package/lib/core/generic-processor.d.ts +10 -0
  203. package/lib/core/generic-processor.js +32 -0
  204. package/lib/core/generic-processor.js.map +1 -0
  205. package/{dist/test-case/erc20-template.test.d.ts → lib/core/generic-processor.test.d.ts} +0 -0
  206. package/lib/core/generic-processor.test.js.map +1 -0
  207. package/lib/core/index.d.ts +17 -0
  208. package/lib/core/index.js +46 -0
  209. package/lib/core/index.js.map +1 -0
  210. package/lib/core/logger.d.ts +14 -0
  211. package/lib/core/logger.js +42 -0
  212. package/lib/core/logger.js.map +1 -0
  213. package/lib/core/metadata.d.ts +7 -0
  214. package/lib/core/metadata.js +12 -0
  215. package/lib/core/metadata.js.map +1 -0
  216. package/lib/core/meter.d.ts +59 -0
  217. package/lib/core/meter.js +166 -0
  218. package/lib/core/meter.js.map +1 -0
  219. package/{dist/test-case/erc20.test.d.ts → lib/core/meter.test.d.ts} +0 -0
  220. package/lib/core/meter.test.js.map +1 -0
  221. package/lib/core/numberish.d.ts +8 -0
  222. package/lib/core/numberish.js +115 -0
  223. package/lib/core/numberish.js.map +1 -0
  224. package/{dist/test-case/mirrorworld.d.ts → lib/core/numberish.test.d.ts} +0 -0
  225. package/lib/core/numberish.test.js.map +1 -0
  226. package/lib/core/solana-context.d.ts +12 -0
  227. package/lib/core/solana-context.js +34 -0
  228. package/lib/core/solana-context.js.map +1 -0
  229. package/lib/core/solana-options.d.ts +9 -0
  230. package/lib/core/solana-options.js +13 -0
  231. package/lib/core/solana-options.js.map +1 -0
  232. package/lib/core/solana-plugin.d.ts +9 -0
  233. package/lib/core/solana-plugin.js +79 -0
  234. package/lib/core/solana-plugin.js.map +1 -0
  235. package/lib/core/solana-processor.d.ts +41 -0
  236. package/lib/core/solana-processor.js +90 -0
  237. package/lib/core/solana-processor.js.map +1 -0
  238. package/lib/core/sui-plugin.d.ts +8 -0
  239. package/lib/core/sui-plugin.js +46 -0
  240. package/lib/core/sui-plugin.js.map +1 -0
  241. package/lib/core/sui-processor.d.ts +26 -0
  242. package/lib/core/sui-processor.js +59 -0
  243. package/lib/core/sui-processor.js.map +1 -0
  244. package/lib/core/trace.d.ts +35 -0
  245. package/lib/core/trace.js +43 -0
  246. package/lib/core/trace.js.map +1 -0
  247. package/lib/endpoints.d.ts +6 -0
  248. package/lib/endpoints.js +11 -0
  249. package/lib/endpoints.js.map +1 -0
  250. package/lib/error.d.ts +7 -0
  251. package/lib/error.js +43 -0
  252. package/lib/error.js.map +1 -0
  253. package/{dist → lib}/gen/builtin.d.ts +0 -0
  254. package/{dist → lib}/gen/builtin.js +0 -0
  255. package/lib/gen/builtin.js.map +1 -0
  256. package/lib/gen/chainquery/protos/chainquery.d.ts +400 -0
  257. package/lib/gen/chainquery/protos/chainquery.js +972 -0
  258. package/lib/gen/chainquery/protos/chainquery.js.map +1 -0
  259. package/{dist → lib}/gen/google/protobuf/empty.d.ts +0 -0
  260. package/{dist → lib}/gen/google/protobuf/empty.js +0 -0
  261. package/lib/gen/google/protobuf/empty.js.map +1 -0
  262. package/lib/gen/google/protobuf/struct.d.ts +73 -0
  263. package/lib/gen/google/protobuf/struct.js +371 -0
  264. package/lib/gen/google/protobuf/struct.js.map +1 -0
  265. package/lib/gen/google/protobuf/timestamp.d.ts +18 -0
  266. package/lib/gen/google/protobuf/timestamp.js +71 -0
  267. package/lib/gen/google/protobuf/timestamp.js.map +1 -0
  268. package/lib/gen/index.d.ts +2 -0
  269. package/lib/gen/index.js +19 -0
  270. package/lib/gen/index.js.map +1 -0
  271. package/lib/gen/processor/protos/processor.d.ts +826 -0
  272. package/lib/gen/processor/protos/processor.js +3988 -0
  273. package/lib/gen/processor/protos/processor.js.map +1 -0
  274. package/lib/gen/service/price/protos/price.d.ts +85 -0
  275. package/lib/gen/service/price/protos/price.js +269 -0
  276. package/lib/gen/service/price/protos/price.js.map +1 -0
  277. package/lib/index.d.ts +7 -0
  278. package/lib/index.js +48 -0
  279. package/lib/index.js.map +1 -0
  280. package/lib/loader.d.ts +5 -0
  281. package/lib/loader.js +30 -0
  282. package/lib/loader.js.map +1 -0
  283. package/lib/plugin.d.ts +15 -0
  284. package/lib/plugin.js +32 -0
  285. package/lib/plugin.js.map +1 -0
  286. package/{dist → lib}/processor-runner.d.ts +0 -0
  287. package/lib/processor-runner.js +102 -0
  288. package/lib/processor-runner.js.map +1 -0
  289. package/lib/promise-or-void.d.ts +1 -0
  290. package/lib/promise-or-void.js +3 -0
  291. package/lib/promise-or-void.js.map +1 -0
  292. package/{dist → lib}/provider.d.ts +2 -1
  293. package/{dist → lib}/provider.js +19 -9
  294. package/lib/provider.js.map +1 -0
  295. package/lib/service.d.ts +26 -0
  296. package/lib/service.js +225 -0
  297. package/lib/service.js.map +1 -0
  298. package/lib/solana-codegen/codegen.d.ts +1 -0
  299. package/lib/solana-codegen/codegen.js +113 -0
  300. package/lib/solana-codegen/codegen.js.map +1 -0
  301. package/lib/state/processor-state.d.ts +3 -0
  302. package/lib/state/processor-state.js +8 -0
  303. package/lib/state/processor-state.js.map +1 -0
  304. package/lib/state/state-storage.d.ts +17 -0
  305. package/lib/state/state-storage.js +60 -0
  306. package/lib/state/state-storage.js.map +1 -0
  307. package/{dist/test-case/solana.test.d.ts → lib/state/state-storage.test.d.ts} +0 -0
  308. package/lib/state/state-storage.test.js.map +1 -0
  309. package/lib/target-ethers-sentio/event-handler.d.ts +3 -0
  310. package/lib/target-ethers-sentio/event-handler.js +35 -0
  311. package/lib/target-ethers-sentio/event-handler.js.map +1 -0
  312. package/{dist/target-ethers-sentio/codegen.d.ts → lib/target-ethers-sentio/file.d.ts} +1 -0
  313. package/lib/target-ethers-sentio/file.js +226 -0
  314. package/lib/target-ethers-sentio/file.js.map +1 -0
  315. package/lib/target-ethers-sentio/functions-handler.d.ts +3 -0
  316. package/lib/target-ethers-sentio/functions-handler.js +50 -0
  317. package/lib/target-ethers-sentio/functions-handler.js.map +1 -0
  318. package/{dist → lib}/target-ethers-sentio/index.d.ts +1 -0
  319. package/{dist → lib}/target-ethers-sentio/index.js +16 -3
  320. package/{dist → lib}/target-ethers-sentio/index.js.map +1 -1
  321. package/lib/target-ethers-sentio/types.d.ts +4 -0
  322. package/lib/target-ethers-sentio/types.js +46 -0
  323. package/lib/target-ethers-sentio/types.js.map +1 -0
  324. package/lib/target-ethers-sentio/view-function.d.ts +5 -0
  325. package/lib/target-ethers-sentio/view-function.js +74 -0
  326. package/lib/target-ethers-sentio/view-function.js.map +1 -0
  327. package/{dist/cli/cli.d.ts → lib/test-abi-code-gen.d.ts} +0 -0
  328. package/lib/test-abi-code-gen.js +20 -0
  329. package/lib/test-abi-code-gen.js.map +1 -0
  330. package/lib/testing/index.d.ts +2 -0
  331. package/lib/testing/index.js +11 -0
  332. package/lib/testing/index.js.map +1 -0
  333. package/lib/testing/metric-utils.d.ts +5 -0
  334. package/lib/testing/metric-utils.js +50 -0
  335. package/lib/testing/metric-utils.js.map +1 -0
  336. package/lib/testing/test-processor-server.d.ts +42 -0
  337. package/lib/testing/test-processor-server.js +293 -0
  338. package/lib/testing/test-processor-server.js.map +1 -0
  339. package/lib/testing/test-provider.d.ts +1 -0
  340. package/lib/testing/test-provider.js +33 -0
  341. package/lib/testing/test-provider.js.map +1 -0
  342. package/lib/utils/chain.d.ts +89 -0
  343. package/lib/utils/chain.js +128 -0
  344. package/lib/utils/chain.js.map +1 -0
  345. package/lib/utils/chainlink-oracles-goerli.csv +8 -0
  346. package/lib/utils/chainlink-oracles.csv +217 -0
  347. package/lib/utils/conversion.d.ts +6 -0
  348. package/lib/utils/conversion.js +27 -0
  349. package/lib/utils/conversion.js.map +1 -0
  350. package/lib/utils/dex-price.d.ts +22 -0
  351. package/lib/utils/dex-price.js +114 -0
  352. package/lib/utils/dex-price.js.map +1 -0
  353. package/{dist/test-case/wormhole-token-bridge.d.ts → lib/utils/dex-price.test.d.ts} +0 -0
  354. package/lib/utils/dex-price.test.js.map +1 -0
  355. package/lib/utils/erc20.test.d.ts +1 -0
  356. package/lib/utils/erc20.test.js.map +1 -0
  357. package/lib/utils/index.d.ts +4 -0
  358. package/lib/utils/index.js +31 -0
  359. package/lib/utils/index.js.map +1 -0
  360. package/lib/utils/price.d.ts +52 -0
  361. package/lib/utils/price.js +86 -0
  362. package/lib/utils/price.js.map +1 -0
  363. package/lib/utils/token.d.ts +15 -0
  364. package/lib/utils/token.js +60 -0
  365. package/lib/utils/token.js.map +1 -0
  366. package/package.json +43 -42
  367. package/src/abis/EACAggregatorProxy.json +227 -0
  368. package/src/abis/ERC1155.json +314 -0
  369. package/src/abis/ERC20.json +174 -0
  370. package/src/abis/ERC20Bytes.json +236 -0
  371. package/src/abis/ERC721.json +346 -0
  372. package/src/abis/WETH9.json +153 -0
  373. package/src/abis/aptos/0x1.json +9205 -0
  374. package/src/abis/aptos/0x3.json +1515 -0
  375. package/src/aptos/api.ts +11 -0
  376. package/src/aptos/aptos-plugin.ts +217 -0
  377. package/src/aptos/aptos-processor.ts +305 -0
  378. package/src/aptos/context.ts +75 -0
  379. package/src/aptos/index.ts +10 -0
  380. package/src/aptos/models.ts +34 -0
  381. package/src/aptos/network.ts +42 -0
  382. package/src/aptos/runtime.ts +13 -0
  383. package/src/aptos/type-registry.ts +187 -0
  384. package/src/aptos/types.ts +149 -0
  385. package/src/aptos/utils.ts +26 -0
  386. package/src/aptos-codegen/codegen.ts +428 -0
  387. package/src/aptos-codegen/tsconfig.json +9 -0
  388. package/src/aptos-codegen/typegen.ts +153 -0
  389. package/src/binds.ts +45 -0
  390. package/src/builtin/aptos/0x1.ts +4210 -0
  391. package/src/builtin/aptos/0x3.ts +888 -0
  392. package/src/builtin/aptos/index.ts +2 -0
  393. package/src/builtin/eacaggregatorproxy/index.ts +6 -0
  394. package/src/builtin/eacaggregatorproxy/test-utils.ts +89 -0
  395. package/src/builtin/erc1155/index.ts +6 -0
  396. package/src/builtin/erc1155/test-utils.ts +89 -0
  397. package/src/builtin/erc20/index.ts +6 -0
  398. package/src/builtin/erc20/test-utils.ts +71 -0
  399. package/src/builtin/erc20bytes/index.ts +6 -0
  400. package/src/builtin/erc20bytes/test-utils.ts +53 -0
  401. package/src/builtin/erc721/index.ts +6 -0
  402. package/src/builtin/erc721/test-utils.ts +71 -0
  403. package/src/builtin/index.ts +7 -0
  404. package/src/builtin/internal/EACAggregatorProxy.ts +861 -0
  405. package/src/builtin/internal/ERC1155.ts +529 -0
  406. package/src/builtin/internal/ERC20.ts +679 -0
  407. package/src/builtin/internal/ERC20Bytes.ts +384 -0
  408. package/src/builtin/internal/ERC721.ts +639 -0
  409. package/src/builtin/internal/WETH9.ts +480 -0
  410. package/src/builtin/internal/common.ts +46 -0
  411. package/src/builtin/internal/eacaggregatorproxy_processor.ts +1219 -0
  412. package/src/builtin/internal/erc1155_processor.ts +534 -0
  413. package/src/builtin/internal/erc20_processor.ts +663 -0
  414. package/src/builtin/internal/erc20bytes_processor.ts +474 -0
  415. package/src/builtin/internal/erc721_processor.ts +686 -0
  416. package/src/builtin/internal/factories/EACAggregatorProxy__factory.ts +534 -0
  417. package/src/builtin/internal/factories/ERC1155__factory.ts +336 -0
  418. package/src/builtin/internal/factories/ERC20Bytes__factory.ts +258 -0
  419. package/src/builtin/internal/factories/ERC20__factory.ts +405 -0
  420. package/src/builtin/internal/factories/ERC721__factory.ts +365 -0
  421. package/src/builtin/internal/factories/WETH9__factory.ts +298 -0
  422. package/src/builtin/internal/factories/index.ts +9 -0
  423. package/src/builtin/internal/index.ts +16 -0
  424. package/src/builtin/internal/weth9_processor.ts +536 -0
  425. package/src/builtin/solana/index.ts +2 -0
  426. package/src/builtin/solana/spl-token-processor.ts +298 -0
  427. package/src/builtin/solana/types.ts +279 -0
  428. package/src/builtin/solana/wormhole-processor.ts +178 -0
  429. package/src/builtin/weth9/index.ts +6 -0
  430. package/src/builtin/weth9/test-utils.ts +89 -0
  431. package/src/chain-config.ts +6 -0
  432. package/src/core/account-processor.ts +217 -0
  433. package/src/core/base-context.ts +28 -0
  434. package/src/core/base-processor-template.ts +150 -0
  435. package/src/core/base-processor.ts +217 -0
  436. package/src/core/big-decimal.ts +1 -0
  437. package/src/core/bind-options.ts +45 -0
  438. package/src/core/context.ts +183 -0
  439. package/src/core/eth-plugin.ts +255 -0
  440. package/src/core/event-tracker.ts +69 -0
  441. package/src/core/exporter.ts +32 -0
  442. package/src/core/generic-processor.ts +34 -0
  443. package/src/core/index.ts +22 -0
  444. package/src/core/logger.ts +49 -0
  445. package/src/core/metadata.ts +11 -0
  446. package/src/core/meter.ts +179 -0
  447. package/src/core/numberish.ts +121 -0
  448. package/src/core/solana-context.ts +35 -0
  449. package/src/core/solana-options.ts +10 -0
  450. package/src/core/solana-plugin.ts +97 -0
  451. package/src/core/solana-processor.ts +109 -0
  452. package/src/core/sui-plugin.ts +54 -0
  453. package/src/core/sui-processor.ts +65 -0
  454. package/src/core/trace.ts +86 -0
  455. package/src/endpoints.ts +9 -0
  456. package/src/error.ts +45 -0
  457. package/src/gen/builtin.ts +22 -0
  458. package/src/gen/chainquery/protos/chainquery.ts +1212 -0
  459. package/src/gen/google/protobuf/empty.ts +58 -0
  460. package/src/gen/google/protobuf/struct.ts +422 -0
  461. package/src/gen/google/protobuf/timestamp.ts +85 -0
  462. package/src/gen/index.ts +3 -0
  463. package/src/gen/processor/protos/processor.ts +4619 -0
  464. package/src/gen/service/price/protos/price.ts +329 -0
  465. package/src/index.ts +13 -0
  466. package/src/loader.ts +24 -0
  467. package/src/plugin.ts +41 -0
  468. package/src/processor-runner.ts +93 -0
  469. package/src/promise-or-void.ts +1 -0
  470. package/src/provider.ts +74 -0
  471. package/src/service.ts +255 -0
  472. package/src/solana-codegen/codegen.ts +116 -0
  473. package/src/state/processor-state.ts +3 -0
  474. package/src/state/state-storage.ts +65 -0
  475. package/src/target-ethers-sentio/event-handler.ts +31 -0
  476. package/src/target-ethers-sentio/file.ts +242 -0
  477. package/src/target-ethers-sentio/functions-handler.ts +57 -0
  478. package/src/target-ethers-sentio/index.ts +60 -0
  479. package/src/target-ethers-sentio/tsconfig.json +9 -0
  480. package/src/target-ethers-sentio/types.ts +42 -0
  481. package/src/target-ethers-sentio/view-function.ts +79 -0
  482. package/src/test-abi-code-gen.ts +16 -0
  483. package/src/testing/index.ts +4 -0
  484. package/src/testing/metric-utils.ts +48 -0
  485. package/src/testing/test-processor-server.ts +334 -0
  486. package/src/testing/test-provider.ts +33 -0
  487. package/src/types/global.d.ts +15 -0
  488. package/src/utils/chain.ts +127 -0
  489. package/src/utils/chainlink-oracles-goerli.csv +8 -0
  490. package/src/utils/chainlink-oracles.csv +217 -0
  491. package/src/utils/conversion.ts +27 -0
  492. package/src/utils/dex-price.ts +136 -0
  493. package/src/utils/index.ts +4 -0
  494. package/src/utils/price.ts +95 -0
  495. package/src/utils/token.ts +70 -0
  496. package/dist/base-processor-template.d.ts +0 -20
  497. package/dist/base-processor-template.js.map +0 -1
  498. package/dist/base-processor.d.ts +0 -22
  499. package/dist/base-processor.js +0 -103
  500. package/dist/base-processor.js.map +0 -1
  501. package/dist/bind-options.js.map +0 -1
  502. package/dist/binds.d.ts +0 -10
  503. package/dist/binds.js +0 -58
  504. package/dist/binds.js.map +0 -1
  505. package/dist/builtin/erc20/index.js.map +0 -1
  506. package/dist/builtin/internal/Erc20.js.map +0 -1
  507. package/dist/builtin/internal/common.js.map +0 -1
  508. package/dist/builtin/internal/erc20_processor.d.ts +0 -38
  509. package/dist/builtin/internal/erc20_processor.js +0 -209
  510. package/dist/builtin/internal/erc20_processor.js.map +0 -1
  511. package/dist/builtin/internal/factories/Erc20__factory.js.map +0 -1
  512. package/dist/builtin/internal/factories/index.d.ts +0 -1
  513. package/dist/builtin/internal/factories/index.js +0 -9
  514. package/dist/builtin/internal/factories/index.js.map +0 -1
  515. package/dist/builtin/internal/index.d.ts +0 -3
  516. package/dist/builtin/internal/index.js.map +0 -1
  517. package/dist/cli/build.d.ts +0 -3
  518. package/dist/cli/build.js +0 -161
  519. package/dist/cli/build.js.map +0 -1
  520. package/dist/cli/cli.js +0 -212
  521. package/dist/cli/cli.js.map +0 -1
  522. package/dist/cli/config.d.ts +0 -14
  523. package/dist/cli/config.js +0 -24
  524. package/dist/cli/config.js.map +0 -1
  525. package/dist/cli/key.d.ts +0 -2
  526. package/dist/cli/key.js +0 -44
  527. package/dist/cli/key.js.map +0 -1
  528. package/dist/cli/solana-code-gen.d.ts +0 -2
  529. package/dist/cli/solana-code-gen.js +0 -19
  530. package/dist/cli/solana-code-gen.js.map +0 -1
  531. package/dist/cli/upload.d.ts +0 -2
  532. package/dist/cli/upload.js +0 -76
  533. package/dist/cli/upload.js.map +0 -1
  534. package/dist/cli/webpack.config.js +0 -41
  535. package/dist/context.d.ts +0 -39
  536. package/dist/context.js +0 -75
  537. package/dist/context.js.map +0 -1
  538. package/dist/contract-namer.d.ts +0 -6
  539. package/dist/contract-namer.js +0 -20
  540. package/dist/contract-namer.js.map +0 -1
  541. package/dist/error.d.ts +0 -2
  542. package/dist/error.js +0 -39
  543. package/dist/error.js.map +0 -1
  544. package/dist/gen/builtin.js.map +0 -1
  545. package/dist/gen/google/protobuf/empty.js.map +0 -1
  546. package/dist/gen/processor/protos/processor.d.ts +0 -598
  547. package/dist/gen/processor/protos/processor.js +0 -2424
  548. package/dist/gen/processor/protos/processor.js.map +0 -1
  549. package/dist/index.d.ts +0 -13
  550. package/dist/index.js +0 -54
  551. package/dist/index.js.map +0 -1
  552. package/dist/meter.d.ts +0 -25
  553. package/dist/meter.js +0 -114
  554. package/dist/meter.js.map +0 -1
  555. package/dist/numberish.d.ts +0 -7
  556. package/dist/numberish.js +0 -74
  557. package/dist/numberish.js.map +0 -1
  558. package/dist/numberish.test.js +0 -54
  559. package/dist/numberish.test.js.map +0 -1
  560. package/dist/processor-runner.js +0 -66
  561. package/dist/processor-runner.js.map +0 -1
  562. package/dist/processor-state.d.ts +0 -16
  563. package/dist/processor-state.js +0 -20
  564. package/dist/processor-state.js.map +0 -1
  565. package/dist/provider.js.map +0 -1
  566. package/dist/service.d.ts +0 -22
  567. package/dist/service.js +0 -361
  568. package/dist/service.js.map +0 -1
  569. package/dist/solana/builtin/spl-token-processor.d.ts +0 -25
  570. package/dist/solana/builtin/spl-token-processor.js +0 -152
  571. package/dist/solana/builtin/spl-token-processor.js.map +0 -1
  572. package/dist/solana-processor.d.ts +0 -28
  573. package/dist/solana-processor.js +0 -79
  574. package/dist/solana-processor.js.map +0 -1
  575. package/dist/target-ethers-sentio/codegen.js +0 -201
  576. package/dist/target-ethers-sentio/codegen.js.map +0 -1
  577. package/dist/test-case/clean-test.d.ts +0 -1
  578. package/dist/test-case/clean-test.js +0 -9
  579. package/dist/test-case/clean-test.js.map +0 -1
  580. package/dist/test-case/erc20-template.d.ts +0 -1
  581. package/dist/test-case/erc20-template.js +0 -23
  582. package/dist/test-case/erc20-template.js.map +0 -1
  583. package/dist/test-case/erc20-template.test.js +0 -69
  584. package/dist/test-case/erc20-template.test.js.map +0 -1
  585. package/dist/test-case/erc20.d.ts +0 -1
  586. package/dist/test-case/erc20.js +0 -42
  587. package/dist/test-case/erc20.js.map +0 -1
  588. package/dist/test-case/erc20.test.js +0 -154
  589. package/dist/test-case/erc20.test.js.map +0 -1
  590. package/dist/test-case/mirrorworld.js +0 -42
  591. package/dist/test-case/mirrorworld.js.map +0 -1
  592. package/dist/test-case/solana.test.js +0 -58
  593. package/dist/test-case/solana.test.js.map +0 -1
  594. package/dist/test-case/types/game_wallet.d.ts +0 -45
  595. package/dist/test-case/types/game_wallet.js +0 -1396
  596. package/dist/test-case/types/game_wallet.js.map +0 -1
  597. package/dist/test-case/types/game_wallet_processor.d.ts +0 -107
  598. package/dist/test-case/types/game_wallet_processor.js +0 -102
  599. package/dist/test-case/types/game_wallet_processor.js.map +0 -1
  600. package/dist/test-case/types/wormhole_processor.d.ts +0 -16
  601. package/dist/test-case/types/wormhole_processor.js.map +0 -1
  602. package/dist/test-case/wormhole-token-bridge.js +0 -7
  603. package/dist/test-case/wormhole-token-bridge.js.map +0 -1
  604. package/dist/utils/chainmap.d.ts +0 -4
  605. package/dist/utils/chainmap.js +0 -95
  606. package/dist/utils/chainmap.js.map +0 -1
  607. package/dist/utils/index.d.ts +0 -1
  608. package/dist/utils/index.js +0 -6
  609. package/dist/utils/index.js.map +0 -1
@@ -0,0 +1,428 @@
1
+ import fs from 'fs'
2
+ import path from 'path'
3
+ import prettier from 'prettier'
4
+ import { MoveFunction, MoveModule, MoveModuleBytecode, MoveStruct } from 'aptos-sdk/src/generated'
5
+ import { AccountModulesImportInfo, AccountRegister, generateType } from './typegen'
6
+ import { getMeaningfulFunctionParams, isFrameworkAccount, moduleQname, SPLITTER } from '../aptos/utils'
7
+ import chalk from 'chalk'
8
+ import { AptosNetwork, getAptosChainName, getRpcClient } from '../aptos/network'
9
+ import { parseMoveType } from '../aptos/types'
10
+
11
+ export function codeGenAptosProcessor(abisDir: string, outDir = 'src/types/aptos') {
12
+ if (!fs.existsSync(abisDir)) {
13
+ return
14
+ }
15
+ console.log(chalk.green('Generated Types for Aptos'))
16
+ generate(abisDir, outDir)
17
+ }
18
+
19
+ export async function generate(srcDir: string, outputDir: string) {
20
+ await generateForNetwork(srcDir, outputDir, AptosNetwork.MAIN_NET)
21
+ await generateForNetwork(path.join(srcDir, 'testnet'), path.join(outputDir, 'testnet'), AptosNetwork.TEST_NET)
22
+ }
23
+
24
+ export async function generateForNetwork(srcDir: string, outputDir: string, network: AptosNetwork) {
25
+ if (!fs.existsSync(srcDir)) {
26
+ return
27
+ }
28
+ if (network === AptosNetwork.TEST_NET) {
29
+ console.log('Found testnet directory, generate code for testnet modules')
30
+ }
31
+ const files = fs.readdirSync(srcDir)
32
+ outputDir = path.resolve(outputDir)
33
+ const outputs: OutputFile[] = []
34
+
35
+ fs.mkdirSync(outputDir, { recursive: true })
36
+
37
+ const loader = new AccountRegister()
38
+
39
+ // when generating user code, don't need to generate framework account
40
+ loader.accountImports.set('0x1', new AccountModulesImportInfo('0x1', '0x1'))
41
+ loader.accountImports.set('0x2', new AccountModulesImportInfo('0x2', '0x2'))
42
+ loader.accountImports.set('0x3', new AccountModulesImportInfo('0x3', '0x3'))
43
+ const client = getRpcClient(network)
44
+
45
+ for (const file of files) {
46
+ if (!file.endsWith('.json')) {
47
+ continue
48
+ }
49
+ const fullPath = path.resolve(srcDir, file)
50
+ const modules = JSON.parse(fs.readFileSync(fullPath, 'utf-8'))
51
+
52
+ for (const module of modules) {
53
+ if (module.abi) {
54
+ loader.register(module.abi, path.basename(file, '.json'))
55
+ }
56
+ }
57
+ const codeGen = new AccountCodegen(loader, modules, {
58
+ fileName: path.basename(file, '.json'),
59
+ outputDir: outputDir,
60
+ network,
61
+ })
62
+
63
+ outputs.push(...codeGen.generate())
64
+ }
65
+
66
+ while (loader.pendingAccounts.size > 0) {
67
+ for (const account of loader.pendingAccounts) {
68
+ console.log(`download dependent module for account ${account} at ${getAptosChainName(network)}`)
69
+
70
+ try {
71
+ const modules = await client.getAccountModules(account)
72
+ fs.writeFileSync(path.resolve(srcDir, account + '.json'), JSON.stringify(modules, null, '\t'))
73
+
74
+ for (const module of modules) {
75
+ if (module.abi) {
76
+ loader.register(module.abi, account)
77
+ }
78
+ }
79
+ const codeGen = new AccountCodegen(loader, modules, {
80
+ fileName: account,
81
+ outputDir: outputDir,
82
+ network,
83
+ })
84
+
85
+ outputs.push(...codeGen.generate())
86
+ } catch (e) {
87
+ console.error(
88
+ chalk.red(
89
+ 'Error downloading account module, check if you choose the right network,or download account modules manually into your director'
90
+ )
91
+ )
92
+ console.error(e)
93
+ process.exit(1)
94
+ }
95
+ }
96
+ }
97
+
98
+ for (const output of outputs) {
99
+ const content = prettier.format(output.fileContent, { parser: 'typescript' })
100
+ fs.writeFileSync(path.join(outputDir, output.fileName), content)
101
+ }
102
+ }
103
+
104
+ interface OutputFile {
105
+ fileName: string
106
+ fileContent: string
107
+ }
108
+
109
+ interface Config {
110
+ fileName: string
111
+ outputDir: string
112
+ network: AptosNetwork
113
+ }
114
+
115
+ export class AccountCodegen {
116
+ modules: MoveModuleBytecode[]
117
+ config: Config
118
+ loader: AccountRegister
119
+
120
+ constructor(loader: AccountRegister, modules: MoveModuleBytecode[], config: Config) {
121
+ // const json = fs.readFileSync(config.srcFile, 'utf-8')
122
+ this.modules = modules
123
+ this.config = config
124
+ this.loader = loader
125
+ }
126
+
127
+ generate(): OutputFile[] {
128
+ if (!this.modules) {
129
+ return []
130
+ }
131
+ // const baseName = path.basename(this.config.fileName, '.json')
132
+
133
+ let address: string | undefined
134
+ for (const module of this.modules) {
135
+ if (module.abi && module.abi.address) {
136
+ address = module.abi.address
137
+ }
138
+ }
139
+ if (!address) {
140
+ return []
141
+ }
142
+
143
+ const imports = `
144
+ import { aptos } from "@sentio/sdk"
145
+ import { Address, MoveModule } from "aptos-sdk/src/generated"
146
+ `
147
+
148
+ const dependedAccounts: string[] = []
149
+
150
+ const moduleImports: string[] = []
151
+
152
+ const info = this.loader.accountImports.get(address)
153
+
154
+ if (info) {
155
+ for (const [account] of info.imports.entries()) {
156
+ // Remap to user's filename if possible, TODO codepath not well tested
157
+ let tsAccountModule = './' + (this.loader.accountImports.get(account)?.moduleName || account)
158
+ if (isFrameworkAccount(account) && !isFrameworkAccount(address)) {
159
+ // Decide where to find runtime library
160
+ let srcRoot = 'lib'
161
+ if (__dirname.includes('sdk/src/aptos-codegen')) {
162
+ srcRoot = 'src'
163
+ }
164
+ tsAccountModule = `@sentio/sdk/${srcRoot}/builtin/aptos/${account}`
165
+ }
166
+ moduleImports.push(`import * as _${account} from "${tsAccountModule}"`)
167
+
168
+ dependedAccounts.push(account)
169
+ }
170
+ }
171
+
172
+ const source = `
173
+ /* Autogenerated file. Do not edit manually. */
174
+ /* tslint:disable */
175
+ /* eslint-disable */
176
+
177
+ /* Generated modules for account ${address} */
178
+
179
+ ${imports}
180
+
181
+ ${moduleImports.join('\n')}
182
+
183
+ ${this.modules.map((m) => generateModule(m, this.config.network)).join('\n')}
184
+
185
+ export function loadAllTypes(_r: aptos.TypeRegistry) {
186
+ ${dependedAccounts.map((a) => `_${a}.loadAllTypes(_r)`).join('\n')}
187
+
188
+ ${this.modules
189
+ .map((m) => {
190
+ return `_r.load(${m.abi?.name}.ABI)`
191
+ })
192
+ .join('\n')}
193
+ }
194
+ ` // source
195
+
196
+ return [
197
+ {
198
+ fileName: this.config.fileName + '.ts',
199
+ fileContent: source,
200
+ },
201
+ ]
202
+ }
203
+ }
204
+
205
+ function generateNetworkOption(network: AptosNetwork) {
206
+ switch (network) {
207
+ case AptosNetwork.TEST_NET:
208
+ return 'TEST_NET'
209
+ }
210
+ return 'MAIN_NET'
211
+ }
212
+
213
+ function generateModule(moduleByteCode: MoveModuleBytecode, network: AptosNetwork) {
214
+ if (!moduleByteCode.abi) {
215
+ return ''
216
+ }
217
+ const module = moduleByteCode.abi
218
+
219
+ const functions = module.exposed_functions.map((f) => generateOnEntryFunctions(module, f)).filter((s) => s !== '')
220
+
221
+ const eventStructs = getEventStructs(module)
222
+ const eventTypes = new Set(eventStructs.keys())
223
+ const events = Array.from(eventStructs.values())
224
+ .map((e) => generateOnEvents(module, e))
225
+ .filter((s) => s !== '')
226
+ const structs = module.structs.map((s) => generateStructs(module, s, eventTypes))
227
+ const callArgs = module.exposed_functions.map((f) => generateCallArgsStructs(module, f))
228
+
229
+ let processor = ''
230
+ if (functions.length > 0 || events.length > 0) {
231
+ processor = `export class ${module.name} extends aptos.AptosBaseProcessor {
232
+
233
+ constructor(options: aptos.AptosBindOptions) {
234
+ super("${module.name}", options)
235
+ }
236
+ static DEFAULT_OPTIONS: aptos.AptosBindOptions = {
237
+ address: "${module.address}",
238
+ network: aptos.AptosNetwork.${generateNetworkOption(network)}
239
+ }
240
+
241
+ static bind(options: Partial<aptos.AptosBindOptions> = {}): ${module.name} {
242
+ return new ${module.name}({ ...${module.name}.DEFAULT_OPTIONS, ...options })
243
+ }
244
+
245
+ ${functions.join('\n')}
246
+
247
+ ${events.join('\n')}
248
+
249
+ loadTypesInternal(registry: aptos.TypeRegistry) {
250
+ loadAllTypes(registry)
251
+ }
252
+ }
253
+ `
254
+ }
255
+
256
+ return `
257
+ ${processor}
258
+
259
+ export namespace ${module.name} {
260
+ ${structs.join('\n')}
261
+
262
+ ${callArgs.join('\n')}
263
+
264
+ export function loadTypes(_r: aptos.TypeRegistry) {
265
+ loadAllTypes(_r)
266
+ }
267
+ export const ABI: MoveModule = JSON.parse('${JSON.stringify(module)}')
268
+ }
269
+ `
270
+ }
271
+
272
+ function generateStructs(module: MoveModule, struct: MoveStruct, events: Set<string>) {
273
+ const genericString = generateStructTypeParameters(struct)
274
+ const genericStringAny = generateStructTypeParameters(struct, true)
275
+
276
+ const fields = struct.fields.map((field) => {
277
+ return `${field.name}: ${generateType(field.type, module.address)}`
278
+ })
279
+
280
+ let eventPayload = ''
281
+ if (events.has(moduleQname(module) + SPLITTER + struct.name)) {
282
+ eventPayload = `
283
+ export interface ${struct.name}Instance extends
284
+ aptos.TypedEventInstance<${struct.name}${genericStringAny}> {
285
+ data_typed: ${struct.name}${genericStringAny}
286
+ type_arguments: [${struct.generic_type_params.map((_) => 'string').join(', ')}]
287
+ }
288
+ `
289
+ }
290
+
291
+ return `
292
+ export class ${struct.name}${genericString} {
293
+ static TYPE_QNAME = '${module.address}::${module.name}::${struct.name}'
294
+ ${fields.join('\n')}
295
+ }
296
+
297
+ ${eventPayload}
298
+ `
299
+ }
300
+
301
+ function generateFunctionTypeParameters(func: MoveFunction) {
302
+ let genericString = ''
303
+ if (func.generic_type_params && func.generic_type_params.length > 0) {
304
+ const params = func.generic_type_params
305
+ .map((v, idx) => {
306
+ return `T${idx}=any`
307
+ })
308
+ .join(',')
309
+ genericString = `<${params}>`
310
+ }
311
+ return genericString
312
+ }
313
+
314
+ function generateStructTypeParameters(struct: MoveStruct, useAny = false) {
315
+ let genericString = ''
316
+
317
+ if (struct.generic_type_params && struct.generic_type_params.length > 0) {
318
+ const params = struct.generic_type_params
319
+ .map((v, idx) => {
320
+ return useAny ? 'any' : 'T' + idx
321
+ })
322
+ .join(',')
323
+ genericString = `<${params}>`
324
+ }
325
+ return genericString
326
+ }
327
+
328
+ function generateCallArgsStructs(module: MoveModule, func: MoveFunction) {
329
+ if (!func.is_entry) {
330
+ return
331
+ }
332
+
333
+ const fields = getMeaningfulFunctionParams(func).map((param) => {
334
+ return `${generateType(param, module.address)}`
335
+ })
336
+
337
+ const camelFuncName = capitalizeFirstChar(camelize(func.name))
338
+
339
+ const genericString = generateFunctionTypeParameters(func)
340
+ return `
341
+ export interface ${camelFuncName}Payload${genericString}
342
+ extends aptos.TypedEntryFunctionPayload<[${fields.join(',')}]> {
343
+ arguments_typed: [${fields.join(',')}],
344
+ type_arguments: [${func.generic_type_params.map((_) => 'string').join(', ')}]
345
+ }
346
+ `
347
+ }
348
+
349
+ function generateOnEntryFunctions(module: MoveModule, func: MoveFunction) {
350
+ if (!func.is_entry) {
351
+ return ''
352
+ }
353
+
354
+ // const genericString = generateFunctionTypeParameters(func)
355
+
356
+ const camelFuncName = capitalizeFirstChar(camelize(func.name))
357
+ const source = `
358
+ onEntry${camelFuncName}(func: (call: ${module.name}.${camelFuncName}Payload, ctx: aptos.AptosContext) => void, filter?: aptos.CallFilter): ${module.name} {
359
+ this.onEntryFunctionCall(func, {
360
+ ...filter,
361
+ function: '${module.name}::${func.name}'
362
+ })
363
+ return this
364
+ }`
365
+
366
+ return source
367
+ }
368
+
369
+ function getEventStructs(module: MoveModule) {
370
+ const qname = moduleQname(module)
371
+ const structMap = new Map<string, MoveStruct>()
372
+ const eventMap = new Map<string, MoveStruct>()
373
+
374
+ for (const struct of module.structs) {
375
+ structMap.set(qname + SPLITTER + struct.name, struct)
376
+ }
377
+
378
+ for (const struct of module.structs) {
379
+ for (const field of struct.fields) {
380
+ const t = parseMoveType(field.type)
381
+ if (t.qname === '0x1::event::EventHandle') {
382
+ const event = t.typeArgs[0].qname
383
+ const eventStruct = structMap.get(event)
384
+ if (eventStruct) {
385
+ eventMap.set(event, eventStruct)
386
+ }
387
+ }
388
+ }
389
+ }
390
+
391
+ return eventMap
392
+ }
393
+
394
+ function generateOnEvents(module: MoveModule, struct: MoveStruct): string {
395
+ // for struct that has drop + store
396
+ // if (!isEvent(struct, module)) {
397
+ // return ''
398
+ // }
399
+
400
+ // const genericString = generateStructTypeParameters(struct)
401
+
402
+ const source = `
403
+ onEvent${struct.name}(func: (event: ${module.name}.${struct.name}Instance, ctx: aptos.AptosContext) => void): ${module.name} {
404
+ this.onEvent(func, {
405
+ type: '${module.name}::${struct.name}'
406
+ })
407
+ return this
408
+ }
409
+ `
410
+ return source
411
+ }
412
+
413
+ function camelize(input: string): string {
414
+ return input
415
+ .split('_')
416
+ .reduce(
417
+ (res, word, i) =>
418
+ i === 0 ? word.toLowerCase() : `${res}${word.charAt(0).toUpperCase()}${word.substr(1).toLowerCase()}`,
419
+ ''
420
+ )
421
+ }
422
+
423
+ function capitalizeFirstChar(input: string): string {
424
+ if (!input) {
425
+ return input
426
+ }
427
+ return input[0].toUpperCase() + (input.length > 1 ? input.substring(1) : '')
428
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "extends": "../../../tsconfig.json",
3
+ "compilerOptions": {
4
+ "rootDir": "..",
5
+ "outDir": "../../lib"
6
+ },
7
+ "exclude": ["lib"],
8
+ "include": ["."]
9
+ }
@@ -0,0 +1,153 @@
1
+ import { MoveModule } from 'aptos-sdk/src/generated'
2
+ import { parseMoveType, TypeDescriptor } from '../aptos/types'
3
+ import { moduleQname, moduleQnameForType, SPLITTER, VECTOR_STR } from '../aptos/utils'
4
+
5
+ function generateTypeForDescriptor(type: TypeDescriptor, currentAddress: string): string {
6
+ // TODO &signer is defintely an address, but what if &OTHER_TYPE?
7
+ if (type.qname.startsWith('&')) {
8
+ return 'Address'
9
+ }
10
+
11
+ switch (type.qname) {
12
+ case 'signer': // TODO check this
13
+ case 'address':
14
+ return 'Address'
15
+ case '0x1::string::String':
16
+ return 'string'
17
+ case 'bool':
18
+ return 'Boolean'
19
+ case 'u8':
20
+ case 'u16':
21
+ case 'u32':
22
+ return 'number'
23
+ case 'u64':
24
+ case 'u128':
25
+ return 'bigint'
26
+ }
27
+
28
+ if (type.qname === VECTOR_STR) {
29
+ // vector<u8> as hex string
30
+ const elementTypeQname = type.typeArgs[0].qname
31
+ if (elementTypeQname === 'u8') {
32
+ return 'string'
33
+ }
34
+ if (elementTypeQname.startsWith('T') && !elementTypeQname.includes(SPLITTER)) {
35
+ return `${elementTypeQname}[] | string`
36
+ }
37
+ return generateTypeForDescriptor(type.typeArgs[0], currentAddress) + '[]'
38
+ }
39
+
40
+ const simpleName = generateSimpleType(type.qname, currentAddress)
41
+ if (simpleName.length === 0) {
42
+ console.error('unexpected error')
43
+ }
44
+ if (simpleName.includes('vector')) {
45
+ console.error('unexpected error')
46
+ }
47
+ if (type.typeArgs.length > 0) {
48
+ // return simpleName
49
+ return simpleName + '<' + type.typeArgs.map((t) => generateTypeForDescriptor(t, currentAddress)).join(',') + '>'
50
+ }
51
+ return simpleName
52
+ }
53
+
54
+ function generateSimpleType(type: string, currentAddress: string): string {
55
+ const parts = type.split(SPLITTER)
56
+ if (parts.length < 2) {
57
+ return parts[0]
58
+ }
59
+ if (parts[0] === currentAddress) {
60
+ return parts.slice(1).join('.')
61
+ }
62
+ return '_' + parts.join('.')
63
+ }
64
+
65
+ // TODO ctx need to have type parameters
66
+ export function generateType(type: string, currentAddress: string): string {
67
+ return generateTypeForDescriptor(parseMoveType(type), currentAddress)
68
+ }
69
+
70
+ export class AccountModulesImportInfo {
71
+ // account to module
72
+ imports: Map<string, Set<string>>
73
+ account: string
74
+ moduleName: string
75
+
76
+ constructor(account: string, tsModuleName: string) {
77
+ this.account = account
78
+ this.moduleName = tsModuleName
79
+ this.imports = new Map<string, Set<string>>()
80
+ }
81
+
82
+ addImport(account: string, module: string) {
83
+ if (account === this.account) {
84
+ return
85
+ }
86
+ let accountModules = this.imports.get(account)
87
+ if (!accountModules) {
88
+ accountModules = new Set<string>()
89
+ this.imports.set(account, accountModules)
90
+ }
91
+ accountModules.add(module)
92
+ }
93
+ }
94
+
95
+ export class AccountRegister {
96
+ accountImports = new Map<string, AccountModulesImportInfo>()
97
+ pendingAccounts = new Set<string>()
98
+
99
+ // loadedAccount = new Set<string>()
100
+ typeRegistry = new Map<string, TypeDescriptor>()
101
+
102
+ private loadTypeDescriptor(type: string) {
103
+ let descriptor = this.typeRegistry.get(type)
104
+
105
+ // const descriptparseMoveType(type)
106
+ if (!descriptor) {
107
+ descriptor = parseMoveType(type)
108
+ this.typeRegistry.set(type, descriptor)
109
+ }
110
+ return descriptor
111
+ }
112
+
113
+ register(module: MoveModule, tsModuleName: string): AccountModulesImportInfo {
114
+ const currentModuleFqn = moduleQname(module)
115
+
116
+ let accountModuleImports = this.accountImports.get(module.address)
117
+ if (!accountModuleImports) {
118
+ accountModuleImports = new AccountModulesImportInfo(module.address, tsModuleName)
119
+ this.accountImports.set(module.address, accountModuleImports)
120
+ // the account has already be processed, delete pending task
121
+ this.pendingAccounts.delete(module.address)
122
+ }
123
+
124
+ for (const struct of module.structs) {
125
+ for (const field of struct.fields) {
126
+ for (const type of this.loadTypeDescriptor(field.type).dependedTypes()) {
127
+ const [account, module] = moduleQnameForType(type)
128
+ accountModuleImports.addImport(account, module)
129
+ if (!this.accountImports.has(account)) {
130
+ this.pendingAccounts.add(account)
131
+ }
132
+ }
133
+ }
134
+ }
135
+
136
+ for (const func of module.exposed_functions) {
137
+ if (!func.is_entry) {
138
+ continue
139
+ }
140
+ for (const param of func.params) {
141
+ for (const type of this.loadTypeDescriptor(param).dependedTypes()) {
142
+ const [account, module] = moduleQnameForType(type)
143
+ accountModuleImports.addImport(account, module)
144
+ if (!this.accountImports.has(account)) {
145
+ this.pendingAccounts.add(account)
146
+ }
147
+ }
148
+ }
149
+ }
150
+ this.accountImports.set(currentModuleFqn, accountModuleImports)
151
+ return accountModuleImports
152
+ }
153
+ }
package/src/binds.ts ADDED
@@ -0,0 +1,45 @@
1
+ import { BindOptions, getOptionsSignature } from './core/bind-options'
2
+ import { BaseProcessor, ContractView } from './core'
3
+ import { Networkish } from '@ethersproject/networks'
4
+ import { getNetwork } from '@ethersproject/providers'
5
+ import { BaseContract } from 'ethers'
6
+ import { MapStateStorage } from './state/state-storage'
7
+
8
+ export class ProcessorState extends MapStateStorage<BaseProcessor<any, any>> {
9
+ static INSTANCE = new ProcessorState()
10
+ }
11
+
12
+ // from abiName_address_chainId => contract wrapper
13
+ const contracts = new Map<string, ContractView<BaseContract>>()
14
+
15
+ function getKey(abiName: string, address: string, network: Networkish) {
16
+ const chainId = getNetwork(network).chainId.toString()
17
+ return [abiName, address.toLowerCase(), chainId].join('_')
18
+ }
19
+
20
+ // Dedup processor that bind multiple times
21
+ export function getProcessor(opts: BindOptions) {
22
+ const sig = getOptionsSignature(opts)
23
+ return ProcessorState.INSTANCE.getValue(sig)
24
+ }
25
+
26
+ export function addProcessor(opts: BindOptions, processor: BaseProcessor<any, any>) {
27
+ const sig = getOptionsSignature(opts)
28
+
29
+ ProcessorState.INSTANCE.getOrSetValue(sig, processor)
30
+ }
31
+
32
+ export function getContractByABI(abiName: string, address: string, network: Networkish) {
33
+ const key = getKey(abiName, address, network)
34
+ return contracts.get(key)
35
+ }
36
+
37
+ export function addContractByABI(
38
+ abiName: string,
39
+ address: string,
40
+ network: Networkish,
41
+ contract: ContractView<BaseContract>
42
+ ) {
43
+ const key = getKey(abiName, address, network)
44
+ return contracts.set(key, contract)
45
+ }