@sentio/sdk 1.7.13 → 1.7.16

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 (299) hide show
  1. package/{base-processor-template.d.ts → lib/base-processor-template.d.ts} +0 -0
  2. package/{base-processor-template.js → lib/base-processor-template.js} +0 -0
  3. package/lib/base-processor-template.js.map +1 -0
  4. package/{base-processor.d.ts → lib/base-processor.d.ts} +0 -0
  5. package/{base-processor.js → lib/base-processor.js} +0 -0
  6. package/lib/base-processor.js.map +1 -0
  7. package/{bind-options.d.ts → lib/bind-options.d.ts} +0 -0
  8. package/{bind-options.js → lib/bind-options.js} +0 -0
  9. package/lib/bind-options.js.map +1 -0
  10. package/{binds.d.ts → lib/binds.d.ts} +0 -0
  11. package/{binds.js → lib/binds.js} +0 -0
  12. package/lib/binds.js.map +1 -0
  13. package/{builtin → lib/builtin}/erc20/index.d.ts +0 -0
  14. package/{builtin → lib/builtin}/erc20/index.js +0 -0
  15. package/lib/builtin/erc20/index.js.map +1 -0
  16. package/{builtin → lib/builtin}/erc20/test-utils.d.ts +0 -0
  17. package/{builtin → lib/builtin}/erc20/test-utils.js +0 -0
  18. package/lib/builtin/erc20/test-utils.js.map +1 -0
  19. package/{builtin → lib/builtin}/internal/Erc20.d.ts +0 -0
  20. package/{builtin → lib/builtin}/internal/Erc20.js +0 -0
  21. package/lib/builtin/internal/Erc20.js.map +1 -0
  22. package/{builtin → lib/builtin}/internal/common.d.ts +0 -0
  23. package/{builtin → lib/builtin}/internal/common.js +0 -0
  24. package/lib/builtin/internal/common.js.map +1 -0
  25. package/{builtin → lib/builtin}/internal/erc20_processor.d.ts +0 -0
  26. package/{builtin → lib/builtin}/internal/erc20_processor.js +0 -0
  27. package/lib/builtin/internal/erc20_processor.js.map +1 -0
  28. package/{builtin → lib/builtin}/internal/factories/Erc20__factory.d.ts +0 -0
  29. package/{builtin → lib/builtin}/internal/factories/Erc20__factory.js +0 -0
  30. package/lib/builtin/internal/factories/Erc20__factory.js.map +1 -0
  31. package/{builtin → lib/builtin}/internal/factories/index.d.ts +0 -0
  32. package/{builtin → lib/builtin}/internal/factories/index.js +0 -0
  33. package/{builtin → lib/builtin}/internal/factories/index.js.map +1 -1
  34. package/{builtin → lib/builtin}/internal/index.d.ts +0 -0
  35. package/{builtin → lib/builtin}/internal/index.js +0 -0
  36. package/lib/builtin/internal/index.js.map +1 -0
  37. package/{chain-config.d.ts → lib/chain-config.d.ts} +0 -0
  38. package/{chain-config.js → lib/chain-config.js} +0 -0
  39. package/lib/chain-config.js.map +1 -0
  40. package/{cli → lib/cli}/build.d.ts +0 -0
  41. package/{cli → lib/cli}/build.js +0 -0
  42. package/lib/cli/build.js.map +1 -0
  43. package/{cli → lib/cli}/cli.d.ts +0 -0
  44. package/{cli → lib/cli}/cli.js +0 -0
  45. package/lib/cli/cli.js.map +1 -0
  46. package/{cli → lib/cli}/config.d.ts +0 -0
  47. package/{cli → lib/cli}/config.js +0 -0
  48. package/lib/cli/config.js.map +1 -0
  49. package/{cli → lib/cli}/key.d.ts +0 -0
  50. package/{cli → lib/cli}/key.js +0 -0
  51. package/{cli → lib/cli}/key.js.map +1 -1
  52. package/{cli → lib/cli}/solana-code-gen.d.ts +0 -0
  53. package/{cli → lib/cli}/solana-code-gen.js +0 -0
  54. package/{cli → lib/cli}/solana-code-gen.js.map +1 -1
  55. package/{cli → lib/cli}/upload.d.ts +0 -0
  56. package/{cli → lib/cli}/upload.js +0 -0
  57. package/{cli → lib/cli}/upload.js.map +1 -1
  58. package/{cli → lib/cli}/webpack.config.js +0 -0
  59. package/{context.d.ts → lib/context.d.ts} +0 -0
  60. package/{context.js → lib/context.js} +0 -0
  61. package/lib/context.js.map +1 -0
  62. package/{contract-namer.d.ts → lib/contract-namer.d.ts} +0 -0
  63. package/{contract-namer.js → lib/contract-namer.js} +0 -0
  64. package/{contract-namer.js.map → lib/contract-namer.js.map} +1 -1
  65. package/{error.d.ts → lib/error.d.ts} +0 -0
  66. package/{error.js → lib/error.js} +0 -0
  67. package/lib/error.js.map +1 -0
  68. package/{gen → lib/gen}/builtin.d.ts +0 -0
  69. package/{gen → lib/gen}/builtin.js +0 -0
  70. package/lib/gen/builtin.js.map +1 -0
  71. package/{gen → lib/gen}/google/protobuf/empty.d.ts +0 -0
  72. package/{gen → lib/gen}/google/protobuf/empty.js +0 -0
  73. package/lib/gen/google/protobuf/empty.js.map +1 -0
  74. package/{gen → lib/gen}/processor/protos/processor.d.ts +0 -0
  75. package/{gen → lib/gen}/processor/protos/processor.js +0 -0
  76. package/lib/gen/processor/protos/processor.js.map +1 -0
  77. package/{generic-processor.d.ts → lib/generic-processor.d.ts} +0 -0
  78. package/{generic-processor.js → lib/generic-processor.js} +0 -0
  79. package/lib/generic-processor.js.map +1 -0
  80. package/{index.d.ts → lib/index.d.ts} +0 -0
  81. package/{index.js → lib/index.js} +0 -0
  82. package/lib/index.js.map +1 -0
  83. package/lib/loader.d.ts +5 -0
  84. package/lib/loader.js +30 -0
  85. package/lib/loader.js.map +1 -0
  86. package/{meter.d.ts → lib/meter.d.ts} +0 -0
  87. package/{meter.js → lib/meter.js} +0 -0
  88. package/lib/meter.js.map +1 -0
  89. package/{numberish.d.ts → lib/numberish.d.ts} +0 -0
  90. package/{numberish.js → lib/numberish.js} +0 -0
  91. package/lib/numberish.js.map +1 -0
  92. package/{numberish.test.d.ts → lib/numberish.test.d.ts} +0 -0
  93. package/{numberish.test.js → lib/numberish.test.js} +0 -0
  94. package/{numberish.test.js.map → lib/numberish.test.js.map} +1 -1
  95. package/{processor-runner.d.ts → lib/processor-runner.d.ts} +0 -0
  96. package/{processor-runner.js → lib/processor-runner.js} +2 -27
  97. package/lib/processor-runner.js.map +1 -0
  98. package/{processor-state.d.ts → lib/processor-state.d.ts} +0 -0
  99. package/{processor-state.js → lib/processor-state.js} +0 -0
  100. package/lib/processor-state.js.map +1 -0
  101. package/{promise-or-void.d.ts → lib/promise-or-void.d.ts} +0 -0
  102. package/{promise-or-void.js → lib/promise-or-void.js} +0 -0
  103. package/lib/promise-or-void.js.map +1 -0
  104. package/{provider.d.ts → lib/provider.d.ts} +0 -0
  105. package/{provider.js → lib/provider.js} +0 -0
  106. package/lib/provider.js.map +1 -0
  107. package/{release.config.js → lib/release.config.js} +0 -0
  108. package/{service.d.ts → lib/service.d.ts} +2 -1
  109. package/{service.js → lib/service.js} +6 -3
  110. package/lib/service.js.map +1 -0
  111. package/{solana → lib/solana}/builtin/index.d.ts +0 -0
  112. package/{solana → lib/solana}/builtin/index.js +0 -0
  113. package/lib/solana/builtin/index.js.map +1 -0
  114. package/{solana → lib/solana}/builtin/spl-token-processor.d.ts +0 -0
  115. package/{solana → lib/solana}/builtin/spl-token-processor.js +0 -0
  116. package/lib/solana/builtin/spl-token-processor.js.map +1 -0
  117. package/{solana → lib/solana}/builtin/types.d.ts +0 -0
  118. package/{solana → lib/solana}/builtin/types.js +0 -0
  119. package/lib/solana/builtin/types.js.map +1 -0
  120. package/{solana → lib/solana}/builtin/wormhole-processor.d.ts +0 -0
  121. package/{solana → lib/solana}/builtin/wormhole-processor.js +0 -0
  122. package/lib/solana/builtin/wormhole-processor.js.map +1 -0
  123. package/{solana-processor.d.ts → lib/solana-processor.d.ts} +0 -0
  124. package/{solana-processor.js → lib/solana-processor.js} +0 -0
  125. package/lib/solana-processor.js.map +1 -0
  126. package/{target-ethers-sentio → lib/target-ethers-sentio}/codegen.d.ts +0 -0
  127. package/{target-ethers-sentio → lib/target-ethers-sentio}/codegen.js +0 -0
  128. package/{target-ethers-sentio → lib/target-ethers-sentio}/codegen.js.map +0 -0
  129. package/{target-ethers-sentio → lib/target-ethers-sentio}/index.d.ts +0 -0
  130. package/{target-ethers-sentio → lib/target-ethers-sentio}/index.js +0 -0
  131. package/{target-ethers-sentio → lib/target-ethers-sentio}/index.js.map +0 -0
  132. package/{test → lib/test}/codegen.test.d.ts +0 -0
  133. package/{test → lib/test}/codegen.test.js +1 -1
  134. package/lib/test/codegen.test.js.map +1 -0
  135. package/{test → lib/test}/erc20-template.d.ts +0 -0
  136. package/{test → lib/test}/erc20-template.js +0 -0
  137. package/lib/test/erc20-template.js.map +1 -0
  138. package/{test → lib/test}/erc20-template.test.d.ts +0 -0
  139. package/{test → lib/test}/erc20-template.test.js +1 -3
  140. package/lib/test/erc20-template.test.js.map +1 -0
  141. package/{test → lib/test}/erc20.d.ts +0 -0
  142. package/{test → lib/test}/erc20.js +0 -0
  143. package/lib/test/erc20.js.map +1 -0
  144. package/{test → lib/test}/erc20.test.d.ts +0 -0
  145. package/{test → lib/test}/erc20.test.js +1 -3
  146. package/lib/test/erc20.test.js.map +1 -0
  147. package/{test → lib/test}/generic-processor.test.d.ts +0 -0
  148. package/{test → lib/test}/generic-processor.test.js +14 -4
  149. package/lib/test/generic-processor.test.js.map +1 -0
  150. package/{test → lib/test}/index.d.ts +0 -0
  151. package/{test → lib/test}/index.js +0 -0
  152. package/{test → lib/test}/index.js.map +1 -1
  153. package/{test → lib/test}/metric-utils.d.ts +0 -0
  154. package/{test → lib/test}/metric-utils.js +0 -0
  155. package/lib/test/metric-utils.js.map +1 -0
  156. package/{test → lib/test}/mirrorworld.d.ts +0 -0
  157. package/{test → lib/test}/mirrorworld.js +0 -0
  158. package/{test → lib/test}/mirrorworld.js.map +1 -1
  159. package/{test → lib/test}/solana.test.d.ts +0 -0
  160. package/{test → lib/test}/solana.test.js +3 -3
  161. package/lib/test/solana.test.js.map +1 -0
  162. package/{test → lib/test}/test-processor-server.d.ts +1 -1
  163. package/{test → lib/test}/test-processor-server.js +3 -8
  164. package/lib/test/test-processor-server.js.map +1 -0
  165. package/{test → lib/test}/types/game_wallet.d.ts +0 -0
  166. package/{test → lib/test}/types/game_wallet.js +0 -0
  167. package/lib/test/types/game_wallet.js.map +1 -0
  168. package/{test → lib/test}/types/game_wallet_processor.d.ts +0 -0
  169. package/{test → lib/test}/types/game_wallet_processor.js +0 -0
  170. package/lib/test/types/game_wallet_processor.js.map +1 -0
  171. package/{test → lib/test}/wormhole-token-bridge.d.ts +0 -0
  172. package/{test → lib/test}/wormhole-token-bridge.js +0 -0
  173. package/lib/test/wormhole-token-bridge.js.map +1 -0
  174. package/{utils → lib/utils}/chainmap.d.ts +0 -0
  175. package/{utils → lib/utils}/chainmap.js +0 -0
  176. package/lib/utils/chainmap.js.map +1 -0
  177. package/{utils → lib/utils}/convert.d.ts +0 -0
  178. package/{utils → lib/utils}/convert.js +0 -0
  179. package/lib/utils/convert.js.map +1 -0
  180. package/{utils → lib/utils}/index.d.ts +0 -0
  181. package/{utils → lib/utils}/index.js +0 -0
  182. package/lib/utils/index.js.map +1 -0
  183. package/package.json +47 -6
  184. package/src/abis/erc20.json +198 -0
  185. package/src/base-processor-template.ts +92 -0
  186. package/src/base-processor.ts +128 -0
  187. package/src/bind-options.ts +41 -0
  188. package/src/binds.ts +73 -0
  189. package/src/builtin/erc20/index.ts +6 -0
  190. package/src/builtin/erc20/test-utils.ts +49 -0
  191. package/src/builtin/internal/Erc20.ts +356 -0
  192. package/src/builtin/internal/common.ts +46 -0
  193. package/src/builtin/internal/erc20_processor.ts +295 -0
  194. package/src/builtin/internal/factories/Erc20__factory.ts +216 -0
  195. package/src/builtin/internal/factories/index.ts +4 -0
  196. package/src/builtin/internal/index.ts +6 -0
  197. package/src/chain-config.ts +6 -0
  198. package/src/cli/build.ts +180 -0
  199. package/src/cli/cli.ts +217 -0
  200. package/src/cli/config.ts +43 -0
  201. package/src/cli/key.ts +43 -0
  202. package/src/cli/solana-code-gen.ts +16 -0
  203. package/src/cli/upload.ts +86 -0
  204. package/src/cli/webpack.config.js +42 -0
  205. package/src/context.ts +93 -0
  206. package/src/contract-namer.ts +17 -0
  207. package/src/error.ts +43 -0
  208. package/src/gen/builtin.ts +22 -0
  209. package/src/gen/google/protobuf/empty.ts +70 -0
  210. package/src/gen/processor/protos/processor.ts +3071 -0
  211. package/src/generic-processor.ts +38 -0
  212. package/src/index.ts +19 -0
  213. package/src/loader.ts +24 -0
  214. package/src/meter.ts +122 -0
  215. package/src/numberish.test.ts +82 -0
  216. package/src/numberish.ts +99 -0
  217. package/src/processor-runner.ts +49 -0
  218. package/src/processor-state.ts +24 -0
  219. package/src/promise-or-void.ts +1 -0
  220. package/src/provider.ts +74 -0
  221. package/src/service.ts +439 -0
  222. package/src/solana/builtin/index.ts +2 -0
  223. package/src/solana/builtin/spl-token-processor.ts +164 -0
  224. package/src/solana/builtin/types.ts +268 -0
  225. package/src/solana/builtin/wormhole-processor.ts +178 -0
  226. package/src/solana-processor.ts +105 -0
  227. package/src/target-ethers-sentio/codegen.ts +289 -0
  228. package/src/target-ethers-sentio/index.ts +50 -0
  229. package/src/target-ethers-sentio/tsconfig.json +9 -0
  230. package/src/test/abis/evm/anyswapRouter.json +490 -0
  231. package/src/test/abis/solana/mirrorworld.json +1392 -0
  232. package/src/test/codegen.test.ts +26 -0
  233. package/src/test/erc20-template.test.ts +37 -0
  234. package/src/test/erc20-template.ts +25 -0
  235. package/src/test/erc20.test.ts +90 -0
  236. package/src/test/erc20.ts +48 -0
  237. package/src/test/generic-processor.test.ts +70 -0
  238. package/src/test/index.ts +1 -0
  239. package/src/test/metric-utils.ts +49 -0
  240. package/src/test/mirrorworld.ts +40 -0
  241. package/src/test/sentio.yaml +4 -0
  242. package/src/test/solana.test.ts +93 -0
  243. package/src/test/test-processor-server.ts +205 -0
  244. package/src/test/types/game_wallet.ts +1392 -0
  245. package/src/test/types/game_wallet_processor.ts +113 -0
  246. package/src/test/wormhole-token-bridge.ts +21 -0
  247. package/src/types/global.d.ts +17 -0
  248. package/src/utils/chainmap.ts +95 -0
  249. package/src/utils/convert.ts +6 -0
  250. package/src/utils/index.ts +2 -0
  251. package/base-processor-template.js.map +0 -1
  252. package/base-processor.js.map +0 -1
  253. package/bind-options.js.map +0 -1
  254. package/binds.js.map +0 -1
  255. package/builtin/erc20/index.js.map +0 -1
  256. package/builtin/erc20/test-utils.js.map +0 -1
  257. package/builtin/internal/Erc20.js.map +0 -1
  258. package/builtin/internal/common.js.map +0 -1
  259. package/builtin/internal/erc20_processor.js.map +0 -1
  260. package/builtin/internal/factories/Erc20__factory.js.map +0 -1
  261. package/builtin/internal/index.js.map +0 -1
  262. package/chain-config.js.map +0 -1
  263. package/cli/build.js.map +0 -1
  264. package/cli/cli.js.map +0 -1
  265. package/cli/config.js.map +0 -1
  266. package/context.js.map +0 -1
  267. package/error.js.map +0 -1
  268. package/gen/builtin.js.map +0 -1
  269. package/gen/google/protobuf/empty.js.map +0 -1
  270. package/gen/processor/protos/processor.js.map +0 -1
  271. package/generic-processor.js.map +0 -1
  272. package/index.js.map +0 -1
  273. package/meter.js.map +0 -1
  274. package/numberish.js.map +0 -1
  275. package/processor-runner.js.map +0 -1
  276. package/processor-state.js.map +0 -1
  277. package/promise-or-void.js.map +0 -1
  278. package/provider.js.map +0 -1
  279. package/service.js.map +0 -1
  280. package/solana/builtin/index.js.map +0 -1
  281. package/solana/builtin/spl-token-processor.js.map +0 -1
  282. package/solana/builtin/types.js.map +0 -1
  283. package/solana/builtin/wormhole-processor.js.map +0 -1
  284. package/solana-processor.js.map +0 -1
  285. package/test/codegen.test.js.map +0 -1
  286. package/test/erc20-template.js.map +0 -1
  287. package/test/erc20-template.test.js.map +0 -1
  288. package/test/erc20.js.map +0 -1
  289. package/test/erc20.test.js.map +0 -1
  290. package/test/generic-processor.test.js.map +0 -1
  291. package/test/metric-utils.js.map +0 -1
  292. package/test/solana.test.js.map +0 -1
  293. package/test/test-processor-server.js.map +0 -1
  294. package/test/types/game_wallet.js.map +0 -1
  295. package/test/types/game_wallet_processor.js.map +0 -1
  296. package/test/wormhole-token-bridge.js.map +0 -1
  297. package/utils/chainmap.js.map +0 -1
  298. package/utils/convert.js.map +0 -1
  299. package/utils/index.js.map +0 -1
@@ -0,0 +1,216 @@
1
+ /* Autogenerated file. Do not edit manually. */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+
5
+ import { Contract, Signer, utils } from "ethers";
6
+ import type { Provider } from "@ethersproject/providers";
7
+ import type { Erc20, Erc20Interface } from "../Erc20";
8
+
9
+ const _abi = [
10
+ {
11
+ anonymous: false,
12
+ inputs: [
13
+ {
14
+ indexed: true,
15
+ internalType: "address",
16
+ name: "owner",
17
+ type: "address",
18
+ },
19
+ {
20
+ indexed: true,
21
+ internalType: "address",
22
+ name: "spender",
23
+ type: "address",
24
+ },
25
+ {
26
+ indexed: false,
27
+ internalType: "uint256",
28
+ name: "value",
29
+ type: "uint256",
30
+ },
31
+ ],
32
+ name: "Approval",
33
+ type: "event",
34
+ },
35
+ {
36
+ anonymous: false,
37
+ inputs: [
38
+ {
39
+ indexed: true,
40
+ internalType: "address",
41
+ name: "from",
42
+ type: "address",
43
+ },
44
+ {
45
+ indexed: true,
46
+ internalType: "address",
47
+ name: "to",
48
+ type: "address",
49
+ },
50
+ {
51
+ indexed: false,
52
+ internalType: "uint256",
53
+ name: "value",
54
+ type: "uint256",
55
+ },
56
+ ],
57
+ name: "Transfer",
58
+ type: "event",
59
+ },
60
+ {
61
+ inputs: [
62
+ {
63
+ internalType: "address",
64
+ name: "owner",
65
+ type: "address",
66
+ },
67
+ {
68
+ internalType: "address",
69
+ name: "spender",
70
+ type: "address",
71
+ },
72
+ ],
73
+ name: "allowance",
74
+ outputs: [
75
+ {
76
+ internalType: "uint256",
77
+ name: "",
78
+ type: "uint256",
79
+ },
80
+ ],
81
+ stateMutability: "view",
82
+ type: "function",
83
+ },
84
+ {
85
+ inputs: [
86
+ {
87
+ internalType: "address",
88
+ name: "spender",
89
+ type: "address",
90
+ },
91
+ {
92
+ internalType: "uint256",
93
+ name: "amount",
94
+ type: "uint256",
95
+ },
96
+ ],
97
+ name: "approve",
98
+ outputs: [
99
+ {
100
+ internalType: "bool",
101
+ name: "",
102
+ type: "bool",
103
+ },
104
+ ],
105
+ stateMutability: "nonpayable",
106
+ type: "function",
107
+ },
108
+ {
109
+ inputs: [
110
+ {
111
+ internalType: "address",
112
+ name: "account",
113
+ type: "address",
114
+ },
115
+ ],
116
+ name: "balanceOf",
117
+ outputs: [
118
+ {
119
+ internalType: "uint256",
120
+ name: "",
121
+ type: "uint256",
122
+ },
123
+ ],
124
+ stateMutability: "view",
125
+ type: "function",
126
+ },
127
+ {
128
+ inputs: [],
129
+ name: "decimals",
130
+ outputs: [
131
+ {
132
+ internalType: "uint8",
133
+ name: "",
134
+ type: "uint8",
135
+ },
136
+ ],
137
+ stateMutability: "view",
138
+ type: "function",
139
+ },
140
+ {
141
+ inputs: [],
142
+ name: "totalSupply",
143
+ outputs: [
144
+ {
145
+ internalType: "uint256",
146
+ name: "",
147
+ type: "uint256",
148
+ },
149
+ ],
150
+ stateMutability: "view",
151
+ type: "function",
152
+ },
153
+ {
154
+ inputs: [
155
+ {
156
+ internalType: "address",
157
+ name: "to",
158
+ type: "address",
159
+ },
160
+ {
161
+ internalType: "uint256",
162
+ name: "amount",
163
+ type: "uint256",
164
+ },
165
+ ],
166
+ name: "transfer",
167
+ outputs: [
168
+ {
169
+ internalType: "bool",
170
+ name: "",
171
+ type: "bool",
172
+ },
173
+ ],
174
+ stateMutability: "nonpayable",
175
+ type: "function",
176
+ },
177
+ {
178
+ inputs: [
179
+ {
180
+ internalType: "address",
181
+ name: "from",
182
+ type: "address",
183
+ },
184
+ {
185
+ internalType: "address",
186
+ name: "to",
187
+ type: "address",
188
+ },
189
+ {
190
+ internalType: "uint256",
191
+ name: "amount",
192
+ type: "uint256",
193
+ },
194
+ ],
195
+ name: "transferFrom",
196
+ outputs: [
197
+ {
198
+ internalType: "bool",
199
+ name: "",
200
+ type: "bool",
201
+ },
202
+ ],
203
+ stateMutability: "nonpayable",
204
+ type: "function",
205
+ },
206
+ ];
207
+
208
+ export class Erc20__factory {
209
+ static readonly abi = _abi;
210
+ static createInterface(): Erc20Interface {
211
+ return new utils.Interface(_abi) as Erc20Interface;
212
+ }
213
+ static connect(address: string, signerOrProvider: Signer | Provider): Erc20 {
214
+ return new Contract(address, _abi, signerOrProvider) as Erc20;
215
+ }
216
+ }
@@ -0,0 +1,4 @@
1
+ /* Autogenerated file. Do not edit manually. */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ export { Erc20__factory } from "./Erc20__factory";
@@ -0,0 +1,6 @@
1
+ /* Autogenerated file. Do not edit manually. */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ export type { Erc20 } from "./Erc20";
5
+ export * as factories from "./factories";
6
+ export { Erc20__factory } from "./factories/Erc20__factory";
@@ -0,0 +1,6 @@
1
+ export interface ChainConfig {
2
+ ChainID: string
3
+ Https: string[]
4
+ WebSockets?: string[]
5
+ ChainServer?: string
6
+ }
@@ -0,0 +1,180 @@
1
+ import chalk from 'chalk'
2
+ import path from 'path'
3
+ import fs from 'fs'
4
+ import { exec } from 'child_process'
5
+ import { EVM, SOLANA, Target } from './config'
6
+
7
+ export async function buildProcessor(onlyGen: boolean, targets: Target[]) {
8
+ if (!onlyGen) {
9
+ await installDeps()
10
+ }
11
+
12
+ // targets.forEach(async (target) => await buildProcessorForTarget(onlyGen, target))
13
+ for (const target of targets) {
14
+ await buildProcessorForTarget(onlyGen, target)
15
+ }
16
+
17
+ if (!onlyGen) {
18
+ const WEBPACK_CONFIG = path.join(__dirname, 'webpack.config.js')
19
+ await execStep('yarn tsc -p .', 'Compile')
20
+ await execStep('yarn webpack --config=' + WEBPACK_CONFIG, 'Packaging')
21
+ }
22
+ }
23
+
24
+ async function buildProcessorForTarget(onlyGen: boolean, target: Target) {
25
+ if (target.chain === EVM) {
26
+ await codeGenEthersProcessor(target.abisDir ?? path.join('abis', 'evm'))
27
+ } else if (target.chain === SOLANA) {
28
+ codeGenSolanaProcessor(target.abisDir ?? path.join('abis', 'solana'))
29
+ }
30
+
31
+ if (onlyGen) {
32
+ return
33
+ }
34
+ }
35
+
36
+ async function installDeps() {
37
+ await execStep('yarn install --ignore-scripts', 'Yarn Install')
38
+ }
39
+
40
+ export async function codeGenEthersProcessor(
41
+ abisDir: string,
42
+ ETHERS_TARGET = path.join(__dirname, '../target-ethers-sentio'),
43
+ outDir = 'src/types/internal'
44
+ ) {
45
+ // TODO this will fail during postinstall, need to locate real typechain path
46
+ await execStep(
47
+ 'yarn typechain --target ' + ETHERS_TARGET + ` --out-dir ${outDir} ${path.join(abisDir, '*.json')}`,
48
+ 'Type definitions gen'
49
+ )
50
+ }
51
+
52
+ export function codeGenSolanaProcessor(abisDir: string, root = '', targetPath = path.join('src', 'types')) {
53
+ const abisFolder = path.join(root, abisDir)
54
+ const abisFiles = fs.readdirSync(abisFolder)
55
+ const typeFolder = path.join(root, targetPath)
56
+ for (const file of abisFiles) {
57
+ if (path.extname(file) === '.json') {
58
+ if (!fs.existsSync(typeFolder)) {
59
+ fs.mkdirSync(typeFolder)
60
+ }
61
+ const idlContent = fs.readFileSync(path.join(abisFolder, file), 'utf-8')
62
+ const idlObj = JSON.parse(idlContent)
63
+ const idlName = idlObj.name
64
+ const idlFile = path.join(typeFolder, idlName + '.ts')
65
+ fs.writeFileSync(idlFile, `export const ${idlName}_idl = ${idlContent}`)
66
+ fs.writeFileSync(path.join(typeFolder, `${idlName}_processor.ts`), codeGenSolanaIdlProcessor(idlObj))
67
+ }
68
+ }
69
+ }
70
+
71
+ function codeGenSolanaIdlProcessor(idlObj: any): string {
72
+ const idlName = idlObj.name
73
+ const idlNamePascalCase = toPascalCase(idlName)
74
+ const instructions: any[] = idlObj.instructions
75
+ return `import { BorshInstructionCoder, Instruction, Idl, BN } from '@project-serum/anchor'
76
+ import { SolanaBaseProcessor, SolanaContext, SolanaBindOptions } from "@sentio/sdk"
77
+ import { ${idlName}_idl } from "./${idlName}"
78
+ import bs58 from 'bs58'
79
+ import { PublicKey } from '@solana/web3.js'
80
+
81
+ export class ${idlNamePascalCase}Processor extends SolanaBaseProcessor {
82
+ static bind(options: SolanaBindOptions): ${idlNamePascalCase}Processor {
83
+ if (options && !options.name) {
84
+ options.name = '${idlNamePascalCase}'
85
+ }
86
+ return new ${idlNamePascalCase}Processor(options)
87
+ }
88
+
89
+ decodeInstruction: (rawInstruction: string) => Instruction | null = (rawInstruction) => {
90
+ const instructionCoder = new BorshInstructionCoder(${idlName}_idl as Idl)
91
+ const decodedIns = instructionCoder.decode(Buffer.from(bs58.decode(rawInstruction)))
92
+ return decodedIns
93
+ }
94
+
95
+ ${instructions.map((ins) => codeGenSolanaInstruction(idlNamePascalCase, ins)).join('')}
96
+ }
97
+ `
98
+ }
99
+
100
+ function codeGenSolanaInstruction(idlName: string, ins: any): string {
101
+ const instructionName = ins.name
102
+ const argsTypeString = codeGenInstructionArgs(ins.args)
103
+ return `
104
+ on${
105
+ instructionName.charAt(0).toUpperCase() + instructionName.slice(1)
106
+ }(handler: (args: ${argsTypeString}, ctx: SolanaContext) => void): ${idlName}Processor {
107
+ this.onInstruction('${instructionName}', (ins: Instruction, ctx) => {
108
+ if (ins) {
109
+ handler(ins.data as ${argsTypeString}, ctx)
110
+ }
111
+ })
112
+ return this
113
+ }
114
+ `
115
+ }
116
+
117
+ function codeGenInstructionArgs(args: { name: string; type: string }[]): string {
118
+ return `{ ${args.map((arg) => arg.name + ': ' + mapType(arg.type)).join(', ')} }`
119
+ }
120
+
121
+ // Reference: https://github.com/coral-xyz/anchor/blob/93332766f13e86efbe77c9986722731742317ede/ts/src/program/namespace/types.ts#L104
122
+ function mapType(tpe: string): string {
123
+ switch (tpe) {
124
+ case 'publicKey':
125
+ return 'PublicKey'
126
+ case 'bool':
127
+ return 'boolean'
128
+ case 'string':
129
+ return 'string'
130
+ case 'u8':
131
+ case 'i8':
132
+ case 'u16':
133
+ case 'i16':
134
+ case 'u32':
135
+ case 'i32':
136
+ case 'f32':
137
+ case 'f64':
138
+ return 'number'
139
+ case 'u64':
140
+ case 'i64':
141
+ case 'u128':
142
+ case 'i128':
143
+ return 'BN'
144
+ default:
145
+ return 'any'
146
+ }
147
+ }
148
+
149
+ function toPascalCase(str: string) {
150
+ return `${str}`
151
+ .toLowerCase()
152
+ .replace(new RegExp(/[-_]+/, 'g'), ' ')
153
+ .replace(new RegExp(/[^\w\s]/, 'g'), '')
154
+ .replace(new RegExp(/\s+(.)(\w*)/, 'g'), ($1, $2, $3) => `${$2.toUpperCase() + $3}`)
155
+ .replace(new RegExp(/\w/), (s) => s.toUpperCase())
156
+ }
157
+
158
+ async function execStep(cmd: string, stepName: string) {
159
+ const child = exec(cmd)
160
+ console.log(chalk.blue(stepName + ' begin'))
161
+
162
+ if (!child.stdout || !child.stderr) {
163
+ console.error(chalk.red(stepName + ' failed'))
164
+ process.exit(1)
165
+ }
166
+
167
+ child.stdout.pipe(process.stdout)
168
+ child.stderr.pipe(process.stderr)
169
+
170
+ await new Promise((resolve) => {
171
+ child.on('close', resolve)
172
+ })
173
+
174
+ if (child.exitCode) {
175
+ console.error(chalk.red(stepName + ' failed'))
176
+ process.exit(child.exitCode)
177
+ }
178
+ console.log(chalk.blue(stepName + ' success'))
179
+ console.log()
180
+ }
package/src/cli/cli.ts ADDED
@@ -0,0 +1,217 @@
1
+ #!/usr/bin/env node
2
+
3
+ import commandLineArgs from 'command-line-args'
4
+ import commandLineUsage from 'command-line-usage'
5
+ import fs from 'fs'
6
+ import https from 'https'
7
+ import http from 'http'
8
+ import path from 'path'
9
+
10
+ import yaml from 'js-yaml'
11
+ import { EVM, FinalizeHost, FinalizeProjectName, SentioProjectConfig } from './config'
12
+ import { WriteKey } from './key'
13
+ import { uploadFile } from './upload'
14
+ import chalk from 'chalk'
15
+ import { buildProcessor } from './build'
16
+
17
+ const mainDefinitions = [{ name: 'command', defaultOption: true }]
18
+ const mainOptions = commandLineArgs(mainDefinitions, {
19
+ stopAtFirstUnknown: true,
20
+ })
21
+ const argv = mainOptions._unknown || []
22
+
23
+ // Process configs
24
+ let processorConfig: SentioProjectConfig = { host: '', project: '', source: '', build: true, targets: [] }
25
+ // Fist step, read from project yaml file
26
+ try {
27
+ console.log(chalk.blue('Loading Process config'))
28
+ // TODO correctly located sentio.yaml
29
+ const pwd = process.cwd()
30
+ const packageJson = path.join(pwd, 'package.json')
31
+ if (!fs.existsSync(packageJson)) {
32
+ console.error('package.json not found, please run this command in the root of your project')
33
+ process.exit(1)
34
+ }
35
+
36
+ const yamlPath = path.join(pwd, 'sentio.yaml')
37
+ if (!fs.existsSync(yamlPath)) {
38
+ console.error('sentio.yaml not found, please create one according to: TODO docs')
39
+ process.exit(1)
40
+ }
41
+
42
+ processorConfig = yaml.load(fs.readFileSync('sentio.yaml', 'utf8')) as SentioProjectConfig
43
+ if (!processorConfig.project === undefined) {
44
+ console.error('Config yaml must have contain a valid project identifier')
45
+ process.exit(1)
46
+ }
47
+ if (processorConfig.build === undefined) {
48
+ processorConfig.build = true
49
+ }
50
+ if (!processorConfig.host) {
51
+ processorConfig.host = 'prod'
52
+ }
53
+
54
+ if (!processorConfig.source) {
55
+ processorConfig.source = 'src/processor.ts'
56
+ }
57
+ if (!processorConfig.targets) {
58
+ console.warn('targets is not defined, use EVM as the default target')
59
+ processorConfig.targets = []
60
+ }
61
+ if (processorConfig.targets.length === 0) {
62
+ // By default evm
63
+ processorConfig.targets.push({ chain: EVM })
64
+ }
65
+ } catch (e) {
66
+ console.error(e)
67
+ process.exit(1)
68
+ }
69
+
70
+ if (mainOptions.command === 'upload') {
71
+ const optionDefinitions = [
72
+ {
73
+ name: 'help',
74
+ alias: 'h',
75
+ type: Boolean,
76
+ description: 'Display this usage guide.',
77
+ },
78
+ {
79
+ name: 'api-key',
80
+ type: String,
81
+ description: '(Optional) Manually provide API key rather than use saved credential',
82
+ },
83
+ {
84
+ name: 'host',
85
+ description: '(Optional) Override Sentio Host name',
86
+ type: String,
87
+ },
88
+ {
89
+ name: 'owner',
90
+ description: '(Optional) Override Project owner',
91
+ type: String,
92
+ },
93
+ {
94
+ name: 'nobuild',
95
+ description: '(Optional) Skip build & pack file before uploading, default false',
96
+ type: Boolean,
97
+ },
98
+ ]
99
+ const options = commandLineArgs(optionDefinitions, { argv })
100
+ if (options.help) {
101
+ const usage = commandLineUsage([
102
+ {
103
+ header: 'Sentio upload',
104
+ content: 'Upload your project files to Sentio.',
105
+ },
106
+ {
107
+ header: 'Options',
108
+ optionList: optionDefinitions,
109
+ },
110
+ ])
111
+ console.log(usage)
112
+ } else {
113
+ if (options.host) {
114
+ processorConfig.host = options.host
115
+ }
116
+ if (options.nobuild) {
117
+ processorConfig.build = false
118
+ }
119
+ FinalizeHost(processorConfig)
120
+ FinalizeProjectName(processorConfig, options.owner)
121
+ console.log(processorConfig)
122
+
123
+ let apiOverride = undefined
124
+ if (options['api-key']) {
125
+ apiOverride = options['api-key']
126
+ }
127
+ uploadFile(processorConfig, apiOverride)
128
+ }
129
+ } else if (mainOptions.command === 'login') {
130
+ const optionDefinitions = [
131
+ {
132
+ name: 'help',
133
+ alias: 'h',
134
+ type: Boolean,
135
+ description: 'Display this usage guide.',
136
+ },
137
+ {
138
+ name: 'api-key',
139
+ type: String,
140
+ description: '(Required) Your API key',
141
+ },
142
+ {
143
+ name: 'host',
144
+ description: '(Optional) Override Sentio Host name',
145
+ type: String,
146
+ },
147
+ ]
148
+ const options = commandLineArgs(optionDefinitions, { argv })
149
+
150
+ if (options.help || !options['api-key']) {
151
+ const usage = commandLineUsage([
152
+ {
153
+ header: 'Sentio login',
154
+ content: 'Try login to Sentio with your apikey.',
155
+ },
156
+ {
157
+ header: 'Options',
158
+ optionList: optionDefinitions,
159
+ },
160
+ ])
161
+ console.log(usage)
162
+ } else {
163
+ if (options.host) {
164
+ processorConfig.host = options.host
165
+ }
166
+ FinalizeHost(processorConfig)
167
+ console.log(processorConfig)
168
+
169
+ const url = new URL(processorConfig.host)
170
+ const reqOptions = {
171
+ hostname: url.hostname,
172
+ port: url.port,
173
+ path: '/api/v1/processors/check_key',
174
+ method: 'HEAD',
175
+ headers: {
176
+ 'api-key': options['api-key'],
177
+ },
178
+ }
179
+ const h = url.protocol == 'https:' ? https : http
180
+ const req = h.request(reqOptions, (res) => {
181
+ if (res.statusCode == 200) {
182
+ WriteKey(processorConfig.host, options['api-key'])
183
+ console.log(chalk.green('login success'))
184
+ } else {
185
+ console.error(chalk.red('login failed, code:', res.statusCode, res.statusMessage))
186
+ }
187
+ })
188
+
189
+ req.on('error', (error) => {
190
+ console.error(error)
191
+ })
192
+
193
+ req.end()
194
+ }
195
+ } else if (mainOptions.command === 'build') {
196
+ buildProcessor(false, processorConfig.targets)
197
+ } else if (mainOptions.command === 'gen') {
198
+ buildProcessor(true, processorConfig.targets)
199
+ } else {
200
+ const usage = commandLineUsage([
201
+ {
202
+ header: 'Sentio',
203
+ content: 'Login & Upload your project files to Sentio.',
204
+ },
205
+ {
206
+ header: 'Usage',
207
+ content: [
208
+ 'sentio $command --help\t\tshow detail usage of specific command',
209
+ 'sentio login --api-key=xx\t\tsave credential to local',
210
+ 'sentio upload\t\t\t\tbuild and upload processor to sentio',
211
+ 'sentio gen\t\t\t\tgenerate abi',
212
+ 'sentio build\t\t\t\tgenerate abi and build',
213
+ ],
214
+ },
215
+ ])
216
+ console.log(usage)
217
+ }
@@ -0,0 +1,43 @@
1
+ export interface SentioProjectConfig {
2
+ project: string
3
+ host: string
4
+ source: string
5
+ build: boolean
6
+ targets: Target[]
7
+ }
8
+
9
+ export function FinalizeHost(config: SentioProjectConfig) {
10
+ switch (config.host) {
11
+ case '':
12
+ case 'prod':
13
+ config.host = 'https://app.sentio.xyz'
14
+ break
15
+ case 'test':
16
+ config.host = 'https://test.sentio.xyz'
17
+ break
18
+ case 'staging':
19
+ config.host = 'https://staging.sentio.xyz'
20
+ break
21
+ case 'local':
22
+ config.host = 'http://localhost:10000'
23
+ }
24
+ }
25
+
26
+ export function FinalizeProjectName(config: SentioProjectConfig, owner: string | undefined) {
27
+ if (owner) {
28
+ let name = config.project
29
+ if (name.includes('/')) {
30
+ name = config.project.split('/')[1]
31
+ }
32
+ config.project = [owner, name].join('/')
33
+ }
34
+ }
35
+
36
+ export interface Target {
37
+ chain: string
38
+ abisDir?: string
39
+ }
40
+
41
+ // Supported target chain, lower case
42
+ export const EVM = 'evm'
43
+ export const SOLANA = 'solana'