@sentio/sdk 2.59.0-rc.3 → 2.59.0-rc.30

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 (286) hide show
  1. package/lib/aptos/api.d.ts +1 -0
  2. package/lib/aptos/api.d.ts.map +1 -1
  3. package/lib/aptos/api.js +13 -1
  4. package/lib/aptos/api.js.map +1 -1
  5. package/lib/aptos/aptos-plugin.d.ts +8 -4
  6. package/lib/aptos/aptos-plugin.d.ts.map +1 -1
  7. package/lib/aptos/aptos-plugin.js +51 -8
  8. package/lib/aptos/aptos-plugin.js.map +1 -1
  9. package/lib/aptos/aptos-processor.d.ts +21 -19
  10. package/lib/aptos/aptos-processor.d.ts.map +1 -1
  11. package/lib/aptos/aptos-processor.js +102 -50
  12. package/lib/aptos/aptos-processor.js.map +1 -1
  13. package/lib/aptos/aptos-resource-processor-template.d.ts +5 -4
  14. package/lib/aptos/aptos-resource-processor-template.d.ts.map +1 -1
  15. package/lib/aptos/aptos-resource-processor-template.js +8 -8
  16. package/lib/aptos/aptos-resource-processor-template.js.map +1 -1
  17. package/lib/aptos/builtin/0x1.d.ts +803 -317
  18. package/lib/aptos/builtin/0x1.d.ts.map +1 -1
  19. package/lib/aptos/builtin/0x1.js +1458 -635
  20. package/lib/aptos/builtin/0x1.js.map +1 -1
  21. package/lib/aptos/builtin/0x3.d.ts +66 -65
  22. package/lib/aptos/builtin/0x3.d.ts.map +1 -1
  23. package/lib/aptos/builtin/0x3.js +131 -131
  24. package/lib/aptos/builtin/0x3.js.map +1 -1
  25. package/lib/aptos/builtin/0x4.d.ts +29 -28
  26. package/lib/aptos/builtin/0x4.d.ts.map +1 -1
  27. package/lib/aptos/builtin/0x4.js +57 -57
  28. package/lib/aptos/builtin/0x4.js.map +1 -1
  29. package/lib/aptos/codegen/codegen.js +31 -4
  30. package/lib/aptos/codegen/codegen.js.map +1 -1
  31. package/lib/aptos/data.d.ts +45 -0
  32. package/lib/aptos/data.d.ts.map +1 -0
  33. package/lib/aptos/data.js +99 -0
  34. package/lib/aptos/data.js.map +1 -0
  35. package/lib/aptos/index.d.ts +1 -0
  36. package/lib/aptos/index.d.ts.map +1 -1
  37. package/lib/aptos/index.js.map +1 -1
  38. package/lib/aptos/models.d.ts +1 -0
  39. package/lib/aptos/models.d.ts.map +1 -1
  40. package/lib/aptos/move-coder.d.ts +8 -2
  41. package/lib/aptos/move-coder.d.ts.map +1 -1
  42. package/lib/aptos/move-coder.js +84 -1
  43. package/lib/aptos/move-coder.js.map +1 -1
  44. package/lib/aptos/network.d.ts +1 -0
  45. package/lib/aptos/network.d.ts.map +1 -1
  46. package/lib/aptos/network.js +1 -0
  47. package/lib/aptos/network.js.map +1 -1
  48. package/lib/btc/btc-plugin.d.ts +4 -1
  49. package/lib/btc/btc-plugin.d.ts.map +1 -1
  50. package/lib/btc/btc-plugin.js +27 -0
  51. package/lib/btc/btc-plugin.js.map +1 -1
  52. package/lib/btc/btc-processor.d.ts +6 -5
  53. package/lib/btc/btc-processor.d.ts.map +1 -1
  54. package/lib/btc/btc-processor.js +35 -9
  55. package/lib/btc/btc-processor.js.map +1 -1
  56. package/lib/btc/types.d.ts +2 -1
  57. package/lib/btc/types.d.ts.map +1 -1
  58. package/lib/core/base-context.d.ts +4 -2
  59. package/lib/core/base-context.d.ts.map +1 -1
  60. package/lib/core/base-context.js +8 -3
  61. package/lib/core/base-context.js.map +1 -1
  62. package/lib/core/event-logger.d.ts +5 -0
  63. package/lib/core/event-logger.d.ts.map +1 -1
  64. package/lib/core/event-logger.js +36 -1
  65. package/lib/core/event-logger.js.map +1 -1
  66. package/lib/core/handler-options.d.ts +25 -0
  67. package/lib/core/handler-options.d.ts.map +1 -0
  68. package/lib/core/handler-options.js +21 -0
  69. package/lib/core/handler-options.js.map +1 -0
  70. package/lib/core/index.d.ts +3 -1
  71. package/lib/core/index.d.ts.map +1 -1
  72. package/lib/core/index.js +3 -1
  73. package/lib/core/index.js.map +1 -1
  74. package/lib/core/meter.d.ts +45 -2
  75. package/lib/core/meter.d.ts.map +1 -1
  76. package/lib/core/meter.js +124 -2
  77. package/lib/core/meter.js.map +1 -1
  78. package/lib/core/numberish.d.ts +2 -1
  79. package/lib/core/numberish.d.ts.map +1 -1
  80. package/lib/core/numberish.js +35 -1
  81. package/lib/core/numberish.js.map +1 -1
  82. package/lib/core/partition-handler-manager.d.ts +44 -0
  83. package/lib/core/partition-handler-manager.d.ts.map +1 -0
  84. package/lib/core/partition-handler-manager.js +76 -0
  85. package/lib/core/partition-handler-manager.js.map +1 -0
  86. package/lib/cosmos/cosmos-processor.d.ts +3 -2
  87. package/lib/cosmos/cosmos-processor.d.ts.map +1 -1
  88. package/lib/cosmos/cosmos-processor.js +11 -1
  89. package/lib/cosmos/cosmos-processor.js.map +1 -1
  90. package/lib/cosmos/types.d.ts +1 -0
  91. package/lib/cosmos/types.d.ts.map +1 -1
  92. package/lib/eth/base-processor.d.ts +23 -17
  93. package/lib/eth/base-processor.d.ts.map +1 -1
  94. package/lib/eth/base-processor.js +173 -34
  95. package/lib/eth/base-processor.js.map +1 -1
  96. package/lib/eth/bind-options.d.ts +6 -0
  97. package/lib/eth/bind-options.d.ts.map +1 -1
  98. package/lib/eth/bind-options.js +2 -0
  99. package/lib/eth/bind-options.js.map +1 -1
  100. package/lib/eth/builtin/internal/eacaggregatorproxy-processor.d.ts +32 -31
  101. package/lib/eth/builtin/internal/eacaggregatorproxy-processor.d.ts.map +1 -1
  102. package/lib/eth/builtin/internal/eacaggregatorproxy-processor.js +62 -62
  103. package/lib/eth/builtin/internal/eacaggregatorproxy-processor.js.map +1 -1
  104. package/lib/eth/builtin/internal/erc1155-processor.d.ts +17 -16
  105. package/lib/eth/builtin/internal/erc1155-processor.d.ts.map +1 -1
  106. package/lib/eth/builtin/internal/erc1155-processor.js +32 -32
  107. package/lib/eth/builtin/internal/erc1155-processor.js.map +1 -1
  108. package/lib/eth/builtin/internal/erc20-processor.d.ts +25 -24
  109. package/lib/eth/builtin/internal/erc20-processor.d.ts.map +1 -1
  110. package/lib/eth/builtin/internal/erc20-processor.js +48 -48
  111. package/lib/eth/builtin/internal/erc20-processor.js.map +1 -1
  112. package/lib/eth/builtin/internal/erc20bytes-processor.d.ts +14 -13
  113. package/lib/eth/builtin/internal/erc20bytes-processor.d.ts.map +1 -1
  114. package/lib/eth/builtin/internal/erc20bytes-processor.js +26 -26
  115. package/lib/eth/builtin/internal/erc20bytes-processor.js.map +1 -1
  116. package/lib/eth/builtin/internal/erc721-processor.d.ts +21 -20
  117. package/lib/eth/builtin/internal/erc721-processor.d.ts.map +1 -1
  118. package/lib/eth/builtin/internal/erc721-processor.js +40 -40
  119. package/lib/eth/builtin/internal/erc721-processor.js.map +1 -1
  120. package/lib/eth/builtin/internal/weth9-processor.d.ts +20 -19
  121. package/lib/eth/builtin/internal/weth9-processor.d.ts.map +1 -1
  122. package/lib/eth/builtin/internal/weth9-processor.js +38 -38
  123. package/lib/eth/builtin/internal/weth9-processor.js.map +1 -1
  124. package/lib/eth/codegen/event-handler.js +2 -2
  125. package/lib/eth/codegen/event-handler.js.map +1 -1
  126. package/lib/eth/codegen/file.d.ts.map +1 -1
  127. package/lib/eth/codegen/file.js +1 -0
  128. package/lib/eth/codegen/file.js.map +1 -1
  129. package/lib/eth/codegen/functions-handler.js +2 -2
  130. package/lib/eth/codegen/functions-handler.js.map +1 -1
  131. package/lib/eth/eth-plugin.d.ts +5 -1
  132. package/lib/eth/eth-plugin.d.ts.map +1 -1
  133. package/lib/eth/eth-plugin.js +53 -5
  134. package/lib/eth/eth-plugin.js.map +1 -1
  135. package/lib/eth/eth.d.ts +2 -7
  136. package/lib/eth/eth.d.ts.map +1 -1
  137. package/lib/eth/eth.js +8 -1
  138. package/lib/eth/eth.js.map +1 -1
  139. package/lib/fuel/codegen/codegen.js +5 -5
  140. package/lib/fuel/codegen/codegen.js.map +1 -1
  141. package/lib/fuel/fuel-plugin.d.ts +4 -1
  142. package/lib/fuel/fuel-plugin.d.ts.map +1 -1
  143. package/lib/fuel/fuel-plugin.js +41 -0
  144. package/lib/fuel/fuel-plugin.js.map +1 -1
  145. package/lib/fuel/fuel-processor-template.d.ts +7 -4
  146. package/lib/fuel/fuel-processor-template.d.ts.map +1 -1
  147. package/lib/fuel/fuel-processor-template.js +11 -9
  148. package/lib/fuel/fuel-processor-template.js.map +1 -1
  149. package/lib/fuel/fuel-processor.d.ts +7 -7
  150. package/lib/fuel/fuel-processor.d.ts.map +1 -1
  151. package/lib/fuel/fuel-processor.js +91 -28
  152. package/lib/fuel/fuel-processor.js.map +1 -1
  153. package/lib/fuel/types.d.ts +3 -0
  154. package/lib/fuel/types.d.ts.map +1 -1
  155. package/lib/move/filter.d.ts +5 -0
  156. package/lib/move/filter.d.ts.map +1 -1
  157. package/lib/move/filter.js +5 -0
  158. package/lib/move/filter.js.map +1 -1
  159. package/lib/move/shared-network-codegen.d.ts.map +1 -1
  160. package/lib/move/shared-network-codegen.js +5 -4
  161. package/lib/move/shared-network-codegen.js.map +1 -1
  162. package/lib/solana/solana-processor.d.ts +10 -4
  163. package/lib/solana/solana-processor.d.ts.map +1 -1
  164. package/lib/solana/solana-processor.js +13 -4
  165. package/lib/solana/solana-processor.js.map +1 -1
  166. package/lib/stark/starknet-processor.d.ts +3 -1
  167. package/lib/stark/starknet-processor.d.ts.map +1 -1
  168. package/lib/stark/starknet-processor.js +32 -14
  169. package/lib/stark/starknet-processor.js.map +1 -1
  170. package/lib/store/codegen.d.ts.map +1 -1
  171. package/lib/store/codegen.js +36 -2
  172. package/lib/store/codegen.js.map +1 -1
  173. package/lib/store/schema.d.ts.map +1 -1
  174. package/lib/store/schema.js +3 -1
  175. package/lib/store/schema.js.map +1 -1
  176. package/lib/store/store.d.ts +4 -3
  177. package/lib/store/store.d.ts.map +1 -1
  178. package/lib/store/store.js +41 -1
  179. package/lib/store/store.js.map +1 -1
  180. package/lib/store/types.d.ts +20 -1
  181. package/lib/store/types.d.ts.map +1 -1
  182. package/lib/store/types.js +22 -0
  183. package/lib/store/types.js.map +1 -1
  184. package/lib/sui/builtin/0x1.d.ts +11 -6
  185. package/lib/sui/builtin/0x1.d.ts.map +1 -1
  186. package/lib/sui/builtin/0x1.js +13 -13
  187. package/lib/sui/builtin/0x1.js.map +1 -1
  188. package/lib/sui/builtin/0x2.d.ts +123 -59
  189. package/lib/sui/builtin/0x2.d.ts.map +1 -1
  190. package/lib/sui/builtin/0x2.js +397 -119
  191. package/lib/sui/builtin/0x2.js.map +1 -1
  192. package/lib/sui/builtin/0x3.d.ts +89 -61
  193. package/lib/sui/builtin/0x3.d.ts.map +1 -1
  194. package/lib/sui/builtin/0x3.js +222 -104
  195. package/lib/sui/builtin/0x3.js.map +1 -1
  196. package/lib/sui/models.d.ts +1 -0
  197. package/lib/sui/models.d.ts.map +1 -1
  198. package/lib/sui/sui-object-processor-template.js +1 -1
  199. package/lib/sui/sui-object-processor-template.js.map +1 -1
  200. package/lib/sui/sui-object-processor.d.ts +2 -0
  201. package/lib/sui/sui-object-processor.d.ts.map +1 -1
  202. package/lib/sui/sui-object-processor.js +4 -0
  203. package/lib/sui/sui-object-processor.js.map +1 -1
  204. package/lib/sui/sui-plugin.d.ts +6 -3
  205. package/lib/sui/sui-plugin.d.ts.map +1 -1
  206. package/lib/sui/sui-plugin.js +68 -24
  207. package/lib/sui/sui-plugin.js.map +1 -1
  208. package/lib/sui/sui-processor.d.ts +6 -4
  209. package/lib/sui/sui-processor.d.ts.map +1 -1
  210. package/lib/sui/sui-processor.js +48 -11
  211. package/lib/sui/sui-processor.js.map +1 -1
  212. package/lib/testing/eth-facet.d.ts +2 -1
  213. package/lib/testing/eth-facet.d.ts.map +1 -1
  214. package/lib/testing/eth-facet.js.map +1 -1
  215. package/lib/utils/block.d.ts +2 -0
  216. package/lib/utils/block.d.ts.map +1 -1
  217. package/lib/utils/block.js +13 -0
  218. package/lib/utils/block.js.map +1 -1
  219. package/package.json +9 -8
  220. package/src/aptos/abis/0x1.json +9650 -5284
  221. package/src/aptos/abis/0x3.json +13 -13
  222. package/src/aptos/abis/0x4.json +42 -42
  223. package/src/aptos/api.ts +13 -1
  224. package/src/aptos/aptos-plugin.ts +62 -13
  225. package/src/aptos/aptos-processor.ts +114 -74
  226. package/src/aptos/aptos-resource-processor-template.ts +9 -8
  227. package/src/aptos/builtin/0x1.ts +3105 -705
  228. package/src/aptos/builtin/0x3.ts +304 -131
  229. package/src/aptos/builtin/0x4.ts +125 -57
  230. package/src/aptos/codegen/codegen.ts +40 -5
  231. package/src/aptos/data.ts +123 -0
  232. package/src/aptos/index.ts +2 -0
  233. package/src/aptos/models.ts +2 -0
  234. package/src/aptos/move-coder.ts +96 -3
  235. package/src/aptos/network.ts +1 -0
  236. package/src/btc/btc-plugin.ts +38 -0
  237. package/src/btc/btc-processor.ts +35 -10
  238. package/src/btc/types.ts +2 -1
  239. package/src/core/base-context.ts +8 -3
  240. package/src/core/event-logger.ts +45 -1
  241. package/src/core/handler-options.ts +40 -0
  242. package/src/core/index.ts +17 -1
  243. package/src/core/meter.ts +159 -4
  244. package/src/core/numberish.ts +34 -1
  245. package/src/core/partition-handler-manager.ts +94 -0
  246. package/src/cosmos/cosmos-processor.ts +12 -1
  247. package/src/cosmos/types.ts +1 -0
  248. package/src/eth/base-processor.ts +163 -41
  249. package/src/eth/bind-options.ts +7 -0
  250. package/src/eth/builtin/internal/eacaggregatorproxy-processor.ts +118 -62
  251. package/src/eth/builtin/internal/erc1155-processor.ts +76 -32
  252. package/src/eth/builtin/internal/erc20-processor.ts +79 -48
  253. package/src/eth/builtin/internal/erc20bytes-processor.ts +47 -26
  254. package/src/eth/builtin/internal/erc721-processor.ts +77 -40
  255. package/src/eth/builtin/internal/weth9-processor.ts +79 -38
  256. package/src/eth/codegen/event-handler.ts +2 -2
  257. package/src/eth/codegen/file.ts +1 -0
  258. package/src/eth/codegen/functions-handler.ts +2 -2
  259. package/src/eth/eth-plugin.ts +76 -10
  260. package/src/eth/eth.ts +12 -1
  261. package/src/fuel/codegen/codegen.ts +5 -5
  262. package/src/fuel/fuel-plugin.ts +56 -0
  263. package/src/fuel/fuel-processor-template.ts +17 -10
  264. package/src/fuel/fuel-processor.ts +90 -22
  265. package/src/fuel/types.ts +3 -0
  266. package/src/move/filter.ts +5 -0
  267. package/src/move/shared-network-codegen.ts +5 -4
  268. package/src/solana/solana-processor.ts +28 -6
  269. package/src/stark/starknet-processor.ts +31 -13
  270. package/src/store/codegen.ts +50 -2
  271. package/src/store/schema.ts +3 -1
  272. package/src/store/store.ts +57 -4
  273. package/src/store/types.ts +30 -1
  274. package/src/sui/abis/0x1.json +8 -0
  275. package/src/sui/abis/0x2.json +437 -0
  276. package/src/sui/abis/0x3.json +116 -5
  277. package/src/sui/builtin/0x1.ts +28 -13
  278. package/src/sui/builtin/0x2.ts +631 -119
  279. package/src/sui/builtin/0x3.ts +450 -116
  280. package/src/sui/models.ts +2 -0
  281. package/src/sui/sui-object-processor-template.ts +1 -1
  282. package/src/sui/sui-object-processor.ts +6 -0
  283. package/src/sui/sui-plugin.ts +77 -26
  284. package/src/sui/sui-processor.ts +50 -11
  285. package/src/testing/eth-facet.ts +2 -1
  286. package/src/utils/block.ts +15 -0
@@ -1,4 +1,5 @@
1
1
  import { errorString, GLOBAL_CONFIG, mergeProcessResults, Plugin, PluginManager, USER_PROCESSOR } from '@sentio/runtime'
2
+ import { PartitionHandlerManager } from '../core/index.js'
2
3
  import {
3
4
  ContractConfig,
4
5
  Data_FuelBlock,
@@ -8,6 +9,7 @@ import {
8
9
  HandlerType,
9
10
  ProcessConfigResponse,
10
11
  ProcessResult,
12
+ ProcessStreamResponse_Partitions,
11
13
  StartRequest
12
14
  } from '@sentio/protos'
13
15
 
@@ -32,6 +34,8 @@ export class FuelPlugin extends Plugin {
32
34
  receiptHandlers: []
33
35
  }
34
36
 
37
+ partitionManager = new PartitionHandlerManager()
38
+
35
39
  async configure(config: ProcessConfigResponse) {
36
40
  const handlers: Handlers = {
37
41
  transactionHandlers: [],
@@ -54,6 +58,11 @@ export class FuelPlugin extends Plugin {
54
58
  })
55
59
  for (const txHandler of processor.txHandlers) {
56
60
  const handlerId = handlers.transactionHandlers.push(txHandler.handler) - 1
61
+ this.partitionManager.registerPartitionHandler(
62
+ HandlerType.FUEL_TRANSACTION,
63
+ handlerId,
64
+ txHandler.partitionHandler
65
+ )
57
66
  const handlerName = txHandler.handlerName
58
67
  if (processor instanceof FuelProcessor) {
59
68
  // on transaction
@@ -82,6 +91,11 @@ export class FuelPlugin extends Plugin {
82
91
 
83
92
  for (const receiptHandler of processor.receiptHandlers ?? []) {
84
93
  const handlerId = handlers.receiptHandlers.push(receiptHandler.handler) - 1
94
+ this.partitionManager.registerPartitionHandler(
95
+ HandlerType.FUEL_RECEIPT,
96
+ handlerId,
97
+ receiptHandler.partitionHandler
98
+ )
85
99
  const handlerName = receiptHandler.handlerName
86
100
  if (processor instanceof FuelProcessor) {
87
101
  contractConfig.fuelReceiptConfigs.push({
@@ -94,6 +108,7 @@ export class FuelPlugin extends Plugin {
94
108
 
95
109
  for (const blockHandler of processor.blockHandlers) {
96
110
  const handlerId = handlers.blockHandlers.push(blockHandler.handler) - 1
111
+ this.partitionManager.registerPartitionHandler(HandlerType.FUEL_BLOCK, handlerId, blockHandler.partitionHandler)
97
112
  contractConfig.intervalConfigs.push({
98
113
  slot: 0,
99
114
  slotInterval: blockHandler.blockInterval,
@@ -132,6 +147,47 @@ export class FuelPlugin extends Plugin {
132
147
  }
133
148
  }
134
149
 
150
+ async partition(request: DataBinding): Promise<ProcessStreamResponse_Partitions> {
151
+ let data: any
152
+ switch (request.handlerType) {
153
+ case HandlerType.FUEL_TRANSACTION:
154
+ if (!request.data?.fuelTransaction) {
155
+ throw new ServerError(Status.INVALID_ARGUMENT, "fuelTransaction can't be empty")
156
+ }
157
+ data = request.data.fuelTransaction
158
+ break
159
+ case HandlerType.FUEL_RECEIPT:
160
+ if (!request.data?.fuelLog) {
161
+ throw new ServerError(Status.INVALID_ARGUMENT, "fuelReceipt can't be empty")
162
+ }
163
+ data = request.data.fuelLog
164
+ break
165
+ case HandlerType.FUEL_BLOCK:
166
+ if (!request.data?.fuelBlock) {
167
+ throw new ServerError(Status.INVALID_ARGUMENT, "fuelBlock can't be empty")
168
+ }
169
+ data = request.data.fuelBlock
170
+ break
171
+ case HandlerType.FUEL_CALL:
172
+ // FUEL_CALL uses the same data as FUEL_TRANSACTION
173
+ if (!request.data?.fuelTransaction) {
174
+ throw new ServerError(Status.INVALID_ARGUMENT, "fuelTransaction can't be empty for FUEL_CALL")
175
+ }
176
+ data = request.data.fuelTransaction
177
+ break
178
+ default:
179
+ throw new ServerError(Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType)
180
+ }
181
+ const partitions = await this.partitionManager.processPartitionForHandlerType(
182
+ request.handlerType,
183
+ request.handlerIds,
184
+ data
185
+ )
186
+ return {
187
+ partitions
188
+ }
189
+ }
190
+
135
191
  async start(request: StartRequest) {
136
192
  try {
137
193
  for (const processor of FuelProcessorState.INSTANCE.getValues()) {
@@ -8,6 +8,7 @@ import { FuelBlock, FuelLog, FuelTransaction } from './types.js'
8
8
  import { DEFAULT_FUEL_FETCH_CONFIG, FuelFetchConfig } from './transaction.js'
9
9
  import { FuelProcessor, FuelProcessorConfig, getOptionsSignature } from './fuel-processor.js'
10
10
  import { getHandlerName, proxyProcessor } from '../utils/metrics.js'
11
+ import { HandlerOptions } from '../core/index.js'
11
12
 
12
13
  export class FuelProcessorTemplateProcessorState extends ListStateStorage<FuelBaseProcessorTemplate<Contract>> {
13
14
  static INSTANCE = new FuelProcessorTemplateProcessorState()
@@ -21,6 +22,7 @@ export abstract class FuelBaseProcessorTemplate<TContract extends Contract> {
21
22
  handler: (block: FuelBlock, ctx: FuelContractContext<TContract>) => PromiseOrVoid
22
23
  blockInterval?: HandleInterval
23
24
  timeIntervalInMinutes?: HandleInterval
25
+ handlerOptions?: HandlerOptions<object, FuelBlock>
24
26
  // fetchConfig?: FuelFetchConfig
25
27
  }[] = []
26
28
 
@@ -28,13 +30,14 @@ export abstract class FuelBaseProcessorTemplate<TContract extends Contract> {
28
30
  logIdFilter: string | string[]
29
31
  handlerName: string
30
32
  handler: (logs: FuelLog<any>, ctx: FuelContractContext<TContract>) => PromiseOrVoid
33
+ handlerOptions?: HandlerOptions<object, FuelLog<any>>
31
34
  // fetchConfig?: FuelFetchConfig
32
35
  }[] = []
33
36
 
34
37
  transactionHandlers: {
35
38
  handlerName: string
36
39
  handler: (transaction: FuelTransaction, ctx: FuelContractContext<TContract>) => PromiseOrVoid
37
- fetchConfig: FuelFetchConfig
40
+ handlerOptions?: HandlerOptions<FuelFetchConfig, FuelTransaction>
38
41
  }[] = []
39
42
 
40
43
  constructor() {
@@ -62,13 +65,13 @@ export abstract class FuelBaseProcessorTemplate<TContract extends Contract> {
62
65
  const processor = this.bindInternal({ ...options, chainId: ctx.chainId })
63
66
 
64
67
  for (const eh of this.logHandlers) {
65
- processor.onLog(eh.logIdFilter, eh.handler, eh.handlerName)
68
+ processor.onLog(eh.logIdFilter, eh.handler, eh.handlerOptions, eh.handlerName)
66
69
  }
67
70
  for (const bh of this.blockHandlers) {
68
- processor.onInterval(bh.handler, bh.timeIntervalInMinutes, bh.blockInterval, bh.handlerName)
71
+ processor.onInterval(bh.handler, bh.timeIntervalInMinutes, bh.blockInterval, bh.handlerOptions, bh.handlerName)
69
72
  }
70
73
  for (const th of this.transactionHandlers) {
71
- processor.onTransaction(th.handler, undefined, th.handlerName)
74
+ processor.onTransaction(th.handler, th.handlerOptions, th.handlerName)
72
75
  }
73
76
 
74
77
  const instance: TemplateInstance = {
@@ -94,13 +97,15 @@ export abstract class FuelBaseProcessorTemplate<TContract extends Contract> {
94
97
 
95
98
  protected onLog<T>(
96
99
  logIdFilter: string | string[],
97
- handler: (logs: FuelLog<T>, ctx: FuelContractContext<TContract>) => PromiseOrVoid
100
+ handler: (logs: FuelLog<T>, ctx: FuelContractContext<TContract>) => PromiseOrVoid,
101
+ handlerOptions: HandlerOptions<object, FuelLog<T>> = {}
98
102
  // fetchConfig?: Partial<FuelFetchConfig>
99
103
  ) {
100
104
  this.logHandlers.push({
101
105
  logIdFilter,
102
106
  handlerName: getHandlerName(),
103
- handler
107
+ handler,
108
+ handlerOptions
104
109
  // fetchConfig: { ...fetchConfig}
105
110
  })
106
111
  return this
@@ -140,14 +145,16 @@ export abstract class FuelBaseProcessorTemplate<TContract extends Contract> {
140
145
  public onInterval(
141
146
  handler: (block: FuelBlock, ctx: FuelContractContext<TContract>) => PromiseOrVoid,
142
147
  timeInterval: HandleInterval | undefined,
143
- blockInterval: HandleInterval | undefined
148
+ blockInterval: HandleInterval | undefined,
149
+ handlerOptions: HandlerOptions<object, FuelBlock> = {}
144
150
  // fetchConfig?: FuelFetchConfig
145
151
  ) {
146
152
  this.blockHandlers.push({
147
153
  handlerName: getHandlerName(),
148
154
  handler,
149
155
  timeIntervalInMinutes: timeInterval,
150
- blockInterval
156
+ blockInterval,
157
+ handlerOptions
151
158
  // fetchConfig: { ...fetchConfig }
152
159
  })
153
160
  return this
@@ -155,12 +162,12 @@ export abstract class FuelBaseProcessorTemplate<TContract extends Contract> {
155
162
 
156
163
  protected onTransaction(
157
164
  handler: (transaction: FuelTransaction, ctx: FuelContractContext<TContract>) => PromiseOrVoid,
158
- config: FuelFetchConfig = DEFAULT_FUEL_FETCH_CONFIG
165
+ handlerOptions: HandlerOptions<FuelFetchConfig, FuelTransaction> = DEFAULT_FUEL_FETCH_CONFIG
159
166
  ) {
160
167
  this.transactionHandlers.push({
161
168
  handlerName: getHandlerName(),
162
169
  handler,
163
- fetchConfig: config
170
+ handlerOptions
164
171
  })
165
172
  return this
166
173
  }
@@ -27,7 +27,7 @@ import {
27
27
  FuelTransaction,
28
28
  ReceiptHandler
29
29
  } from './types.js'
30
- import { PromiseOrVoid } from '../core/index.js'
30
+ import { PromiseOrVoid, HandlerOptions } from '../core/index.js'
31
31
  import { ServerError, Status } from 'nice-grpc'
32
32
  import { getHandlerName, proxyProcessor } from '../utils/metrics.js'
33
33
 
@@ -88,7 +88,7 @@ export class FuelProcessor<TContract extends Contract> implements FuelBaseProces
88
88
 
89
89
  public onTransaction(
90
90
  handler: (transaction: FuelTransaction, ctx: FuelContractContext<TContract>) => PromiseOrVoid,
91
- config: FuelFetchConfig = DEFAULT_FUEL_FETCH_CONFIG,
91
+ handlerOptions?: HandlerOptions<FuelFetchConfig, FuelTransaction>,
92
92
  handlerName = getHandlerName()
93
93
  ) {
94
94
  const callHandler = {
@@ -115,7 +115,21 @@ export class FuelProcessor<TContract extends Contract> implements FuelBaseProces
115
115
  },
116
116
  fetchConfig: {
117
117
  filters: [],
118
- ...config
118
+ ...handlerOptions
119
+ },
120
+ partitionHandler: async (call: Data_FuelTransaction): Promise<string | undefined> => {
121
+ const p = handlerOptions?.partitionKey
122
+ if (!p) return undefined
123
+ if (typeof p === 'function') {
124
+ const abiMap = this.config.abi
125
+ ? {
126
+ [this.config.address]: this.config.abi
127
+ }
128
+ : {}
129
+ const tx = await decodeFuelTransactionWithAbi(call.transaction, abiMap, this.provider)
130
+ return p(tx)
131
+ }
132
+ return p
119
133
  }
120
134
  }
121
135
  this.txHandlers.push(callHandler)
@@ -184,15 +198,7 @@ export class FuelProcessor<TContract extends Contract> implements FuelBaseProces
184
198
  return ctx.stopAndGetResult()
185
199
  } catch (e) {
186
200
  console.error(e)
187
- return {
188
- gauges: [],
189
- counters: [],
190
- events: [],
191
- exports: [],
192
- states: {
193
- configUpdated: false
194
- }
195
- }
201
+ return ProcessResult.fromPartial({})
196
202
  }
197
203
  },
198
204
  fetchConfig: {
@@ -206,6 +212,7 @@ export class FuelProcessor<TContract extends Contract> implements FuelBaseProces
206
212
  public onLog<T>(
207
213
  logIdFilter: string | string[],
208
214
  handler: (logs: FuelLog<T>, ctx: FuelContractContext<TContract>) => PromiseOrVoid,
215
+ handlerOptions?: HandlerOptions<object, FuelLog<T>>,
209
216
  handlerName = getHandlerName()
210
217
  ) {
211
218
  const logIds = new Set(Array.isArray(logIdFilter) ? logIdFilter : [logIdFilter])
@@ -244,6 +251,25 @@ export class FuelProcessor<TContract extends Contract> implements FuelBaseProces
244
251
  log: {
245
252
  logIds: Array.from(logIds)
246
253
  }
254
+ },
255
+ partitionHandler: async (data: Data_FuelReceipt): Promise<string | undefined> => {
256
+ const p = handlerOptions?.partitionKey
257
+ if (!p) return undefined
258
+ if (typeof p === 'function') {
259
+ try {
260
+ const tx = await decodeFuelTransaction(data.transaction, this.provider)
261
+ const index = Number(data.receiptIndex)
262
+ const receipt = tx.receipts[index]
263
+ const log = decodeLog(receipt, this.config.abi)
264
+ if (log) {
265
+ return p({ receiptIndex: index, ...log })
266
+ }
267
+ } catch (e) {
268
+ console.error(e)
269
+ }
270
+ return undefined
271
+ }
272
+ return p
247
273
  }
248
274
  } as ReceiptHandler
249
275
  this.receiptHandlers.push(logHandler)
@@ -255,7 +281,8 @@ export class FuelProcessor<TContract extends Contract> implements FuelBaseProces
255
281
  */
256
282
  public onTransfer(
257
283
  filter: ContractTransferFilter,
258
- handler: (transfer: ReceiptTransfer | ReceiptTransferOut, ctx: FuelContractContext<TContract>) => PromiseOrVoid
284
+ handler: (transfer: ReceiptTransfer | ReceiptTransferOut, ctx: FuelContractContext<TContract>) => PromiseOrVoid,
285
+ handlerOptions?: HandlerOptions<object, ReceiptTransfer | ReceiptTransferOut>
259
286
  ) {
260
287
  const { from, to, assetId } = filter
261
288
  const h = {
@@ -288,6 +315,22 @@ export class FuelProcessor<TContract extends Contract> implements FuelBaseProces
288
315
  to,
289
316
  assetId
290
317
  }
318
+ },
319
+ partitionHandler: async (data: Data_FuelReceipt): Promise<string | undefined> => {
320
+ const p = handlerOptions?.partitionKey
321
+ if (!p) return undefined
322
+ if (typeof p === 'function') {
323
+ try {
324
+ const tx = await decodeFuelTransaction(data.transaction, this.provider)
325
+ const index = Number(data.receiptIndex)
326
+ const receipt = tx.receipts[index] as ReceiptTransfer | ReceiptTransferOut
327
+ return p(receipt)
328
+ } catch (e) {
329
+ console.error(e)
330
+ }
331
+ return undefined
332
+ }
333
+ return p
291
334
  }
292
335
  } as ReceiptHandler
293
336
  this.receiptHandlers.push(h)
@@ -298,8 +341,8 @@ export class FuelProcessor<TContract extends Contract> implements FuelBaseProces
298
341
  handler: (block: FuelBlock, ctx: FuelContractContext<TContract>) => PromiseOrVoid,
299
342
  timeInterval: HandleInterval | undefined,
300
343
  blockInterval: HandleInterval | undefined,
344
+ handlerOptions?: HandlerOptions<object, FuelBlock>,
301
345
  handlerName = getHandlerName()
302
- // fetchConfig: Partial<FuelFetchConfig> | undefined
303
346
  ): this {
304
347
  if (timeInterval) {
305
348
  if (timeInterval.backfillInterval < timeInterval.recentInterval) {
@@ -346,6 +389,31 @@ export class FuelProcessor<TContract extends Contract> implements FuelBaseProces
346
389
  )
347
390
  await handler(block, ctx)
348
391
  return ctx.stopAndGetResult()
392
+ },
393
+ partitionHandler: async (data: Data_FuelBlock): Promise<string | undefined> => {
394
+ const p = handlerOptions?.partitionKey
395
+ if (!p) return undefined
396
+ if (typeof p === 'function') {
397
+ const header = data.block
398
+ if (!header) return undefined
399
+ const block: FuelBlock = {
400
+ id: header.id,
401
+ height: bn(header.height),
402
+ time: header.time,
403
+ header: {
404
+ applicationHash: header.applicationHash,
405
+ daHeight: bn(header.daHeight),
406
+ eventInboxRoot: header.eventInboxRoot,
407
+ messageOutboxRoot: header.messageOutboxRoot,
408
+ prevRoot: header.prevRoot,
409
+ stateTransitionBytecodeVersion: header.stateTransitionBytecodeVersion,
410
+ transactionsCount: header.transactionsCount,
411
+ transactionsRoot: header.transactionsRoot
412
+ }
413
+ }
414
+ return p(block)
415
+ }
416
+ return p
349
417
  }
350
418
  })
351
419
  return this
@@ -354,8 +422,8 @@ export class FuelProcessor<TContract extends Contract> implements FuelBaseProces
354
422
  public onBlockInterval(
355
423
  handler: (block: FuelBlock, ctx: FuelContractContext<TContract>) => PromiseOrVoid,
356
424
  blockInterval = 250,
357
- backfillBlockInterval = 1000
358
- // fetchConfig?: Partial<FuelFetchConfig>
425
+ backfillBlockInterval = 1000,
426
+ handlerOptions?: HandlerOptions<object, FuelBlock>
359
427
  ): this {
360
428
  return this.onInterval(
361
429
  handler,
@@ -363,22 +431,22 @@ export class FuelProcessor<TContract extends Contract> implements FuelBaseProces
363
431
  {
364
432
  recentInterval: blockInterval,
365
433
  backfillInterval: backfillBlockInterval
366
- }
367
- // fetchConfig,
434
+ },
435
+ handlerOptions
368
436
  )
369
437
  }
370
438
 
371
439
  public onTimeInterval(
372
440
  handler: (block: FuelBlock, ctx: FuelContractContext<TContract>) => PromiseOrVoid,
373
441
  timeIntervalInMinutes = 60,
374
- backfillTimeIntervalInMinutes = 240
375
- // fetchConfig?: Partial<FuelFetchConfig>,
442
+ backfillTimeIntervalInMinutes = 240,
443
+ handlerOptions?: HandlerOptions<object, FuelBlock>
376
444
  ): this {
377
445
  return this.onInterval(
378
446
  handler,
379
447
  { recentInterval: timeIntervalInMinutes, backfillInterval: backfillTimeIntervalInMinutes },
380
- undefined
381
- // fetchConfig
448
+ undefined,
449
+ handlerOptions
382
450
  )
383
451
  }
384
452
  }
package/src/fuel/types.ts CHANGED
@@ -29,12 +29,14 @@ export type CallHandler<T> = {
29
29
  handler: (call: T) => Promise<ProcessResult>
30
30
  fetchConfig?: Partial<FuelCallHandlerConfig>
31
31
  assetConfig?: Partial<FuelAssetHandlerConfig>
32
+ partitionHandler?: (call: T) => Promise<string | undefined>
32
33
  }
33
34
 
34
35
  export type ReceiptHandler = {
35
36
  handlerName: string
36
37
  handler: (receipt: Data_FuelReceipt) => Promise<ProcessResult>
37
38
  receiptConfig?: Partial<FuelReceiptHandlerConfig>
39
+ partitionHandler?: (receipt: Data_FuelReceipt) => Promise<string | undefined>
38
40
  }
39
41
 
40
42
  export type BlockHandler = {
@@ -43,6 +45,7 @@ export type BlockHandler = {
43
45
  handler: (block: Data_FuelBlock) => Promise<ProcessResult>
44
46
  handlerName: string
45
47
  fetchConfig?: Partial<OnIntervalConfig>
48
+ partitionHandler?: (block: Data_FuelBlock) => Promise<string | undefined>
46
49
  }
47
50
 
48
51
  export interface FuelLog<T> {
@@ -38,6 +38,7 @@ export class EventHandler<T> {
38
38
  handlerName: string
39
39
  handler: (event: T) => Promise<ProcessResult>
40
40
  fetchConfig: MoveFetchConfig
41
+ partitionHandler?: (event: T) => Promise<string | undefined>
41
42
  }
42
43
 
43
44
  export class CallHandler<T> {
@@ -45,6 +46,7 @@ export class CallHandler<T> {
45
46
  handlerName: string
46
47
  handler: (call: T) => Promise<ProcessResult>
47
48
  fetchConfig: MoveFetchConfig
49
+ partitionHandler?: (call: T) => Promise<string | undefined>
48
50
  }
49
51
 
50
52
  export class ObjectChangeHandler<T> {
@@ -57,6 +59,7 @@ export class ResourceChangeHandler<T> {
57
59
  handlerName: string
58
60
  handler: (call: T) => Promise<ProcessResult>
59
61
  type: string
62
+ partitionHandler?: (call: T) => Promise<string | undefined>
60
63
  }
61
64
 
62
65
  export class ResourceIntervalHandler {
@@ -66,6 +69,7 @@ export class ResourceIntervalHandler {
66
69
  handler: (resource: Data_AptResource) => Promise<ProcessResult>
67
70
  handlerName: string
68
71
  fetchConfig: MoveAccountFetchConfig
72
+ partitionHandler?: (resource: Data_AptResource) => Promise<string | undefined>
69
73
  }
70
74
 
71
75
  export class TransactionIntervalHandler {
@@ -74,4 +78,5 @@ export class TransactionIntervalHandler {
74
78
  handler: (tx: Data_AptCall) => Promise<ProcessResult>
75
79
  handlerName: string
76
80
  fetchConfig: MoveFetchConfig
81
+ partitionHandler?: (tx: Data_AptCall) => Promise<string | undefined>
77
82
  }
@@ -96,12 +96,12 @@ export abstract class SharedNetworkCodegen<NetworkType, ModuleTypes, StructType>
96
96
 
97
97
  const camelFuncName = upperFirst(camel(func.name))
98
98
  const source = `
99
- onEntry${camelFuncName}(func: (call: ${moduleName}.${camelFuncName}Payload, ctx: ${this.PREFIX}Context) => void, filter?: CallFilter, fetchConfig?: Partial<MoveFetchConfig>): ${moduleName} {
99
+ onEntry${camelFuncName}(func: (call: ${moduleName}.${camelFuncName}Payload, ctx: ${this.PREFIX}Context) => void, filter?: CallFilter, handlerOptions?: HandlerOptions<MoveFetchConfig, ${moduleName}.${camelFuncName}Payload>): ${moduleName} {
100
100
  this.onEntryFunctionCall(func, {
101
101
  ...filter,
102
102
  function: '${module.name}::${func.name}'
103
103
  },
104
- fetchConfig)
104
+ handlerOptions)
105
105
  return this
106
106
  }`
107
107
 
@@ -113,8 +113,8 @@ export abstract class SharedNetworkCodegen<NetworkType, ModuleTypes, StructType>
113
113
  const source = `
114
114
  onEvent${struct.name}(func: (event: ${moduleName}.${normalizeToJSName(struct.name)}Instance, ctx: ${
115
115
  this.PREFIX
116
- }Context) => void, fetchConfig?: Partial<MoveFetchConfig>, eventFilter?: Omit<EventFilter, "type"|"account">): ${moduleName} {
117
- this.onMoveEvent(func, {...eventFilter ?? {}, type: '${module.name}::${struct.name}' }, fetchConfig)
116
+ }Context) => void, handlerOptions?: HandlerOptions<MoveFetchConfig, ${moduleName}.${normalizeToJSName(struct.name)}Instance>, eventFilter?: Omit<EventFilter, "type"|"account">): ${moduleName} {
117
+ this.onMoveEvent(func, {...eventFilter ?? {}, type: '${module.name}::${struct.name}' }, handlerOptions)
118
118
  return this
119
119
  }`
120
120
  return source
@@ -123,6 +123,7 @@ onEvent${struct.name}(func: (event: ${moduleName}.${normalizeToJSName(struct.nam
123
123
  generateImports() {
124
124
  return `
125
125
  import { CallFilter, MoveFetchConfig, EventFilter } from "@sentio/sdk/move"
126
+ import { HandlerOptions } from "@sentio/sdk"
126
127
  import {
127
128
  ${this.PREFIX}BindOptions, ${this.PREFIX}BaseProcessor,
128
129
  ${this.PREFIX}Network, TypedFunctionPayload,
@@ -5,6 +5,7 @@ import { SolanaBindOptions } from './solana-options.js'
5
5
  import { ListStateStorage } from '@sentio/runtime'
6
6
  import { Labels } from '../core/index.js'
7
7
  import { SolanaChainId } from '@sentio/chain'
8
+ import { HandlerOptions } from '../core/handler-options.js'
8
9
 
9
10
  type IndexConfigure = {
10
11
  startSlot: bigint
@@ -17,12 +18,17 @@ export interface InstructionCoder {
17
18
 
18
19
  export type SolanaInstructionHandler = (instruction: Instruction, ctx: SolanaContext, accounts?: string[]) => void
19
20
 
21
+ export interface InstructionHandlerEntry {
22
+ handler: SolanaInstructionHandler
23
+ handlerOptions?: HandlerOptions<object, Instruction>
24
+ }
25
+
20
26
  export class SolanaProcessorState extends ListStateStorage<SolanaBaseProcessor> {
21
27
  static INSTANCE: SolanaProcessorState = new SolanaProcessorState()
22
28
  }
23
29
 
24
30
  export class SolanaBaseProcessor {
25
- public instructionHandlerMap: Map<string, SolanaInstructionHandler> = new Map()
31
+ public instructionHandlerMap: Map<string, InstructionHandlerEntry> = new Map()
26
32
  address: string
27
33
  endpoint: string
28
34
  contractName: string
@@ -61,8 +67,12 @@ export class SolanaBaseProcessor {
61
67
  SolanaProcessorState.INSTANCE.addValue(this)
62
68
  }
63
69
 
64
- public onInstruction(instructionName: string, handler: SolanaInstructionHandler) {
65
- this.instructionHandlerMap.set(instructionName, handler)
70
+ public onInstruction(
71
+ instructionName: string,
72
+ handler: SolanaInstructionHandler,
73
+ handlerOptions?: HandlerOptions<object, Instruction>
74
+ ) {
75
+ this.instructionHandlerMap.set(instructionName, { handler, handlerOptions })
66
76
  return this
67
77
  }
68
78
 
@@ -78,21 +88,33 @@ export class SolanaBaseProcessor {
78
88
  return null
79
89
  }
80
90
 
81
- public getInstructionHandler(parsedInstruction: Instruction): SolanaInstructionHandler | undefined {
91
+ public getInstructionHandler(parsedInstruction: Instruction): InstructionHandlerEntry | undefined {
82
92
  return this.instructionHandlerMap.get(parsedInstruction.name)
83
93
  }
84
94
 
85
95
  public async handleInstruction(
86
96
  parsedInstruction: Instruction,
87
97
  accounts: string[],
88
- handler: SolanaInstructionHandler,
98
+ handlerEntry: InstructionHandlerEntry,
89
99
  slot: bigint
90
100
  ): Promise<ProcessResult> {
91
101
  const ctx = new SolanaContext(this.contractName, this.network, this.address, slot, this.baseLabels)
92
- await handler(parsedInstruction, ctx, accounts)
102
+ await handlerEntry.handler(parsedInstruction, ctx, accounts)
93
103
  return ctx.stopAndGetResult()
94
104
  }
95
105
 
106
+ public async getPartitionKey(
107
+ parsedInstruction: Instruction,
108
+ handlerEntry: InstructionHandlerEntry
109
+ ): Promise<string | undefined> {
110
+ const p = handlerEntry.handlerOptions?.partitionKey
111
+ if (!p) return undefined
112
+ if (typeof p === 'function') {
113
+ return p(parsedInstruction)
114
+ }
115
+ return p
116
+ }
117
+
96
118
  public startSlot(startSlot: bigint | number) {
97
119
  this.config.startSlot = BigInt(startSlot)
98
120
  return this
@@ -1,12 +1,13 @@
1
1
  import { Data_StarknetEvent, ProcessResult } from '@sentio/protos'
2
2
  import { StarknetChainId } from '@sentio/chain'
3
- import { CallData, constants, events, ParsedEvent, RpcProvider } from 'starknet'
3
+ import { CallData, events, ParsedEvent, RpcProvider } from 'starknet'
4
4
  import { StarknetContext } from './context.js'
5
5
  import { StarknetEvent } from './event.js'
6
6
  import { ListStateStorage, mergeProcessResults } from '@sentio/runtime'
7
7
  import { StarknetProcessorConfig } from './types.js'
8
8
  import { StarknetContractView } from './contract.js'
9
9
  import { getHandlerName, proxyProcessor } from '../utils/metrics.js'
10
+ import { HandlerOptions } from '../core/handler-options.js'
10
11
 
11
12
  export class StarknetProcessor {
12
13
  callHandlers: CallHandler<Data_StarknetEvent>[] = []
@@ -42,7 +43,8 @@ export class StarknetProcessor {
42
43
 
43
44
  public onEvent(
44
45
  event: string | string[],
45
- handler: (events: StarknetEvent<ParsedEvent>, ctx: StarknetContext<StarknetContractView>) => void | Promise<void>
46
+ handler: (events: StarknetEvent<ParsedEvent>, ctx: StarknetContext<StarknetContractView>) => void | Promise<void>,
47
+ handlerOptions?: HandlerOptions<object, StarknetEvent<ParsedEvent>>
46
48
  ) {
47
49
  const eventFilter = Array.isArray(event) ? event : [event]
48
50
  if (!this.config.abi) {
@@ -83,18 +85,33 @@ export class StarknetProcessor {
83
85
  return mergeProcessResults(results)
84
86
  } catch (e) {
85
87
  console.error(e)
86
- return {
87
- gauges: [],
88
- counters: [],
89
- events: [],
90
- exports: [],
91
- states: {
92
- configUpdated: false
88
+ return ProcessResult.fromPartial({})
89
+ }
90
+ },
91
+ eventFilter,
92
+ partitionHandler: async (call: Data_StarknetEvent): Promise<string | undefined> => {
93
+ const p = handlerOptions?.partitionKey
94
+ if (!p) return undefined
95
+ if (typeof p === 'function') {
96
+ try {
97
+ const eventData = [call.result] as any[]
98
+ const abiEvents = events.getAbiEvents(abi)
99
+ const abiStructs = CallData.getAbiStruct(abi)
100
+ const abiEnums = CallData.getAbiEnum(abi)
101
+ const parsedEvents = events.parseEvents(eventData, abiEvents, abiStructs, abiEnums)
102
+ if (parsedEvents.length > 0) {
103
+ const { from_address, transaction_hash } = call.result!
104
+ const e = new StarknetEvent(from_address, transaction_hash, parsedEvents[0])
105
+ return p(e)
93
106
  }
107
+ return undefined
108
+ } catch (e) {
109
+ console.error(e)
110
+ return undefined
94
111
  }
95
112
  }
96
- },
97
- eventFilter
113
+ return p
114
+ }
98
115
  }
99
116
  this.callHandlers.push(callHandler)
100
117
  return this
@@ -105,14 +122,15 @@ export type CallHandler<T> = {
105
122
  handlerName: string
106
123
  handler: (call: T) => Promise<ProcessResult>
107
124
  eventFilter?: string[]
125
+ partitionHandler?: (call: T) => Promise<string | undefined>
108
126
  }
109
127
 
110
128
  function getRpcEndpoint(chainId: StarknetChainId | string) {
111
129
  switch (chainId) {
112
130
  case StarknetChainId.STARKNET_MAINNET:
113
- return constants.NetworkName.SN_MAIN
131
+ return 'https://starknet-mainnet.g.alchemy.com/starknet/version/rpc/v0_8/8sD5yitBslIYCPFzSq_Q1ObJHqPlZxFw'
114
132
  default:
115
- return constants.NetworkName.SN_SEPOLIA
133
+ return 'https://starknet-sepolia.g.alchemy.com/starknet/version/rpc/v0_8/8sD5yitBslIYCPFzSq_Q1ObJHqPlZxFw'
116
134
  }
117
135
  }
118
136