@sentio/sdk 3.9.0-rc.9 → 4.0.0-rc.2

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 (340) hide show
  1. package/lib/aptos/aptos-plugin.d.ts +1 -1
  2. package/lib/aptos/aptos-plugin.d.ts.map +1 -1
  3. package/lib/aptos/aptos-plugin.js +43 -42
  4. package/lib/aptos/aptos-plugin.js.map +1 -1
  5. package/lib/aptos/aptos-processor.d.ts +4 -4
  6. package/lib/aptos/aptos-processor.d.ts.map +1 -1
  7. package/lib/aptos/aptos-processor.js +25 -25
  8. package/lib/aptos/aptos-processor.js.map +1 -1
  9. package/lib/aptos/aptos-resource-processor-template.d.ts +1 -1
  10. package/lib/aptos/aptos-resource-processor-template.d.ts.map +1 -1
  11. package/lib/aptos/aptos-resource-processor-template.js +10 -5
  12. package/lib/aptos/aptos-resource-processor-template.js.map +1 -1
  13. package/lib/aptos/context.d.ts +1 -1
  14. package/lib/aptos/context.d.ts.map +1 -1
  15. package/lib/aptos/context.js +8 -6
  16. package/lib/aptos/context.js.map +1 -1
  17. package/lib/aptos/data.d.ts +4 -4
  18. package/lib/aptos/data.d.ts.map +1 -1
  19. package/lib/core/base-context.d.ts +3 -2
  20. package/lib/core/base-context.d.ts.map +1 -1
  21. package/lib/core/base-context.js +12 -11
  22. package/lib/core/base-context.js.map +1 -1
  23. package/lib/core/core-plugin.d.ts.map +1 -1
  24. package/lib/core/core-plugin.js +6 -4
  25. package/lib/core/core-plugin.js.map +1 -1
  26. package/lib/core/event-logger.d.ts +10 -2
  27. package/lib/core/event-logger.d.ts.map +1 -1
  28. package/lib/core/event-logger.js +42 -26
  29. package/lib/core/event-logger.js.map +1 -1
  30. package/lib/core/exporter.d.ts.map +1 -1
  31. package/lib/core/exporter.js +5 -3
  32. package/lib/core/exporter.js.map +1 -1
  33. package/lib/core/handler-options.d.ts +1 -1
  34. package/lib/core/handler-options.d.ts.map +1 -1
  35. package/lib/core/handler-register.d.ts +1 -1
  36. package/lib/core/handler-register.d.ts.map +1 -1
  37. package/lib/core/handler-register.js +2 -2
  38. package/lib/core/handler-register.js.map +1 -1
  39. package/lib/core/meter.d.ts +4 -3
  40. package/lib/core/meter.d.ts.map +1 -1
  41. package/lib/core/meter.js +5 -4
  42. package/lib/core/meter.js.map +1 -1
  43. package/lib/core/normalization.d.ts +1 -1
  44. package/lib/core/normalization.d.ts.map +1 -1
  45. package/lib/core/normalization.js +41 -31
  46. package/lib/core/normalization.js.map +1 -1
  47. package/lib/core/numberish.d.ts +1 -1
  48. package/lib/core/numberish.d.ts.map +1 -1
  49. package/lib/core/numberish.js +35 -30
  50. package/lib/core/numberish.js.map +1 -1
  51. package/lib/core/partition-handler-manager.d.ts +1 -1
  52. package/lib/core/partition-handler-manager.d.ts.map +1 -1
  53. package/lib/core/partition-handler-manager.js +10 -9
  54. package/lib/core/partition-handler-manager.js.map +1 -1
  55. package/lib/cosmos/context.d.ts.map +1 -1
  56. package/lib/cosmos/context.js +4 -2
  57. package/lib/cosmos/context.js.map +1 -1
  58. package/lib/cosmos/cosmos-plugin.d.ts.map +1 -1
  59. package/lib/cosmos/cosmos-plugin.js +11 -10
  60. package/lib/cosmos/cosmos-plugin.js.map +1 -1
  61. package/lib/cosmos/cosmos-processor.js.map +1 -1
  62. package/lib/eth/abi-decoder/decode-worker.js +2 -2
  63. package/lib/eth/abi-decoder/decode-worker.js.map +1 -1
  64. package/lib/eth/account-processor.d.ts +2 -2
  65. package/lib/eth/account-processor.d.ts.map +1 -1
  66. package/lib/eth/account-processor.js +10 -9
  67. package/lib/eth/account-processor.js.map +1 -1
  68. package/lib/eth/base-processor-template.d.ts +3 -3
  69. package/lib/eth/base-processor-template.d.ts.map +1 -1
  70. package/lib/eth/base-processor-template.js +14 -8
  71. package/lib/eth/base-processor-template.js.map +1 -1
  72. package/lib/eth/base-processor.d.ts +3 -3
  73. package/lib/eth/base-processor.d.ts.map +1 -1
  74. package/lib/eth/base-processor.js +53 -46
  75. package/lib/eth/base-processor.js.map +1 -1
  76. package/lib/eth/builtin/internal/eacaggregatorproxy-processor.d.ts.map +1 -1
  77. package/lib/eth/builtin/internal/eacaggregatorproxy-processor.js +48 -46
  78. package/lib/eth/builtin/internal/eacaggregatorproxy-processor.js.map +1 -1
  79. package/lib/eth/builtin/internal/erc1155-processor.d.ts.map +1 -1
  80. package/lib/eth/builtin/internal/erc1155-processor.js +18 -16
  81. package/lib/eth/builtin/internal/erc1155-processor.js.map +1 -1
  82. package/lib/eth/builtin/internal/erc20-processor.d.ts.map +1 -1
  83. package/lib/eth/builtin/internal/erc20-processor.js +38 -36
  84. package/lib/eth/builtin/internal/erc20-processor.js.map +1 -1
  85. package/lib/eth/builtin/internal/erc20bytes-processor.d.ts.map +1 -1
  86. package/lib/eth/builtin/internal/erc20bytes-processor.js +20 -18
  87. package/lib/eth/builtin/internal/erc20bytes-processor.js.map +1 -1
  88. package/lib/eth/builtin/internal/erc721-processor.d.ts.map +1 -1
  89. package/lib/eth/builtin/internal/erc721-processor.js +30 -28
  90. package/lib/eth/builtin/internal/erc721-processor.js.map +1 -1
  91. package/lib/eth/builtin/internal/weth9-processor.d.ts.map +1 -1
  92. package/lib/eth/builtin/internal/weth9-processor.js +24 -22
  93. package/lib/eth/builtin/internal/weth9-processor.js.map +1 -1
  94. package/lib/eth/codegen/file.d.ts.map +1 -1
  95. package/lib/eth/codegen/file.js +2 -1
  96. package/lib/eth/codegen/file.js.map +1 -1
  97. package/lib/eth/codegen/function-calls.js +1 -1
  98. package/lib/eth/context.d.ts +1 -1
  99. package/lib/eth/context.d.ts.map +1 -1
  100. package/lib/eth/context.js +12 -10
  101. package/lib/eth/context.js.map +1 -1
  102. package/lib/eth/eth-plugin.d.ts.map +1 -1
  103. package/lib/eth/eth-plugin.js +83 -75
  104. package/lib/eth/eth-plugin.js.map +1 -1
  105. package/lib/eth/eth.d.ts +6 -6
  106. package/lib/eth/eth.d.ts.map +1 -1
  107. package/lib/eth/eth.js +22 -14
  108. package/lib/eth/eth.js.map +1 -1
  109. package/lib/eth/index.d.ts +1 -1
  110. package/lib/eth/index.d.ts.map +1 -1
  111. package/lib/eth/index.js +0 -1
  112. package/lib/eth/index.js.map +1 -1
  113. package/lib/fuel/asset-processor.d.ts +2 -2
  114. package/lib/fuel/asset-processor.d.ts.map +1 -1
  115. package/lib/fuel/asset-processor.js +5 -3
  116. package/lib/fuel/asset-processor.js.map +1 -1
  117. package/lib/fuel/context.d.ts.map +1 -1
  118. package/lib/fuel/context.js +4 -2
  119. package/lib/fuel/context.js.map +1 -1
  120. package/lib/fuel/fuel-plugin.d.ts.map +1 -1
  121. package/lib/fuel/fuel-plugin.js +41 -53
  122. package/lib/fuel/fuel-plugin.js.map +1 -1
  123. package/lib/fuel/fuel-processor-template.d.ts.map +1 -1
  124. package/lib/fuel/fuel-processor-template.js +9 -5
  125. package/lib/fuel/fuel-processor-template.js.map +1 -1
  126. package/lib/fuel/fuel-processor.d.ts.map +1 -1
  127. package/lib/fuel/fuel-processor.js +30 -20
  128. package/lib/fuel/fuel-processor.js.map +1 -1
  129. package/lib/fuel/global-processor.d.ts.map +1 -1
  130. package/lib/fuel/global-processor.js +2 -1
  131. package/lib/fuel/global-processor.js.map +1 -1
  132. package/lib/fuel/types.d.ts +10 -4
  133. package/lib/fuel/types.d.ts.map +1 -1
  134. package/lib/fuel/types.js.map +1 -1
  135. package/lib/iota/context.d.ts +1 -1
  136. package/lib/iota/context.d.ts.map +1 -1
  137. package/lib/iota/context.js +8 -6
  138. package/lib/iota/context.js.map +1 -1
  139. package/lib/iota/iota-object-processor-template.d.ts +1 -1
  140. package/lib/iota/iota-object-processor-template.d.ts.map +1 -1
  141. package/lib/iota/iota-object-processor-template.js +17 -12
  142. package/lib/iota/iota-object-processor-template.js.map +1 -1
  143. package/lib/iota/iota-object-processor.d.ts +1 -1
  144. package/lib/iota/iota-object-processor.d.ts.map +1 -1
  145. package/lib/iota/iota-object-processor.js +23 -16
  146. package/lib/iota/iota-object-processor.js.map +1 -1
  147. package/lib/iota/iota-plugin-part.d.ts +1 -1
  148. package/lib/iota/iota-plugin-part.d.ts.map +1 -1
  149. package/lib/iota/iota-plugin-part.js +16 -15
  150. package/lib/iota/iota-plugin-part.js.map +1 -1
  151. package/lib/iota/iota-processor.d.ts +3 -3
  152. package/lib/iota/iota-processor.d.ts.map +1 -1
  153. package/lib/iota/iota-processor.js +20 -19
  154. package/lib/iota/iota-processor.js.map +1 -1
  155. package/lib/iota/network.js +2 -2
  156. package/lib/iota/network.js.map +1 -1
  157. package/lib/move/filter.d.ts +1 -1
  158. package/lib/move/filter.d.ts.map +1 -1
  159. package/lib/move/index.d.ts +1 -1
  160. package/lib/move/index.d.ts.map +1 -1
  161. package/lib/move/index.js +0 -1
  162. package/lib/move/index.js.map +1 -1
  163. package/lib/solana/builtin/types.d.ts +4 -4
  164. package/lib/solana/codegen/codegen.d.ts +1 -1
  165. package/lib/solana/codegen/codegen.d.ts.map +1 -1
  166. package/lib/solana/codegen/codegen.js +2 -2
  167. package/lib/solana/codegen/codegen.js.map +1 -1
  168. package/lib/solana/solana-context.d.ts.map +1 -1
  169. package/lib/solana/solana-context.js +4 -3
  170. package/lib/solana/solana-context.js.map +1 -1
  171. package/lib/solana/solana-plugin.d.ts.map +1 -1
  172. package/lib/solana/solana-plugin.js +19 -18
  173. package/lib/solana/solana-plugin.js.map +1 -1
  174. package/lib/solana/solana-processor.d.ts +2 -2
  175. package/lib/solana/solana-processor.d.ts.map +1 -1
  176. package/lib/solana/solana-processor.js +8 -3
  177. package/lib/solana/solana-processor.js.map +1 -1
  178. package/lib/store/cache.d.ts.map +1 -1
  179. package/lib/store/cache.js +22 -17
  180. package/lib/store/cache.js.map +1 -1
  181. package/lib/store/codegen.js +2 -2
  182. package/lib/store/codegen.js.map +1 -1
  183. package/lib/store/convert.d.ts +1 -1
  184. package/lib/store/convert.d.ts.map +1 -1
  185. package/lib/store/convert.js +67 -104
  186. package/lib/store/convert.js.map +1 -1
  187. package/lib/store/decorators.d.ts +1 -1
  188. package/lib/store/decorators.d.ts.map +1 -1
  189. package/lib/store/decorators.js +3 -1
  190. package/lib/store/decorators.js.map +1 -1
  191. package/lib/store/store.d.ts.map +1 -1
  192. package/lib/store/store.js +24 -16
  193. package/lib/store/store.js.map +1 -1
  194. package/lib/store/types.js +24 -32
  195. package/lib/store/types.js.map +1 -1
  196. package/lib/store/util.d.ts +1 -1
  197. package/lib/store/util.d.ts.map +1 -1
  198. package/lib/store/util.js +13 -17
  199. package/lib/store/util.js.map +1 -1
  200. package/lib/sui/context.d.ts +1 -1
  201. package/lib/sui/context.d.ts.map +1 -1
  202. package/lib/sui/context.js +8 -6
  203. package/lib/sui/context.js.map +1 -1
  204. package/lib/sui/sui-object-processor-template.d.ts +1 -1
  205. package/lib/sui/sui-object-processor-template.d.ts.map +1 -1
  206. package/lib/sui/sui-object-processor-template.js +17 -12
  207. package/lib/sui/sui-object-processor-template.js.map +1 -1
  208. package/lib/sui/sui-object-processor.d.ts +1 -1
  209. package/lib/sui/sui-object-processor.d.ts.map +1 -1
  210. package/lib/sui/sui-object-processor.js +23 -16
  211. package/lib/sui/sui-object-processor.js.map +1 -1
  212. package/lib/sui/sui-plugin-part.d.ts +1 -1
  213. package/lib/sui/sui-plugin-part.d.ts.map +1 -1
  214. package/lib/sui/sui-plugin-part.js +16 -15
  215. package/lib/sui/sui-plugin-part.js.map +1 -1
  216. package/lib/sui/sui-plugin.d.ts +1 -1
  217. package/lib/sui/sui-plugin.d.ts.map +1 -1
  218. package/lib/sui/sui-plugin.js +35 -34
  219. package/lib/sui/sui-plugin.js.map +1 -1
  220. package/lib/sui/sui-processor.d.ts +3 -3
  221. package/lib/sui/sui-processor.d.ts.map +1 -1
  222. package/lib/sui/sui-processor.js +20 -19
  223. package/lib/sui/sui-processor.js.map +1 -1
  224. package/lib/testing/aptos-facet.d.ts.map +1 -1
  225. package/lib/testing/aptos-facet.js +18 -11
  226. package/lib/testing/aptos-facet.js.map +1 -1
  227. package/lib/testing/cosmos-facet.d.ts.map +1 -1
  228. package/lib/testing/cosmos-facet.js +10 -6
  229. package/lib/testing/cosmos-facet.js.map +1 -1
  230. package/lib/testing/eth-facet.d.ts +1 -1
  231. package/lib/testing/eth-facet.d.ts.map +1 -1
  232. package/lib/testing/eth-facet.js +34 -18
  233. package/lib/testing/eth-facet.js.map +1 -1
  234. package/lib/testing/fuel-facet.d.ts.map +1 -1
  235. package/lib/testing/fuel-facet.js +28 -18
  236. package/lib/testing/fuel-facet.js.map +1 -1
  237. package/lib/testing/iota-facet.d.ts.map +1 -1
  238. package/lib/testing/iota-facet.js +32 -20
  239. package/lib/testing/iota-facet.js.map +1 -1
  240. package/lib/testing/memory-database.d.ts +1 -1
  241. package/lib/testing/memory-database.d.ts.map +1 -1
  242. package/lib/testing/memory-database.js +82 -69
  243. package/lib/testing/memory-database.js.map +1 -1
  244. package/lib/testing/metric-utils.d.ts +2 -2
  245. package/lib/testing/metric-utils.d.ts.map +1 -1
  246. package/lib/testing/metric-utils.js +13 -12
  247. package/lib/testing/metric-utils.js.map +1 -1
  248. package/lib/testing/solana-facet.d.ts +3 -2
  249. package/lib/testing/solana-facet.d.ts.map +1 -1
  250. package/lib/testing/solana-facet.js +8 -5
  251. package/lib/testing/solana-facet.js.map +1 -1
  252. package/lib/testing/sui-facet.d.ts.map +1 -1
  253. package/lib/testing/sui-facet.js +30 -20
  254. package/lib/testing/sui-facet.js.map +1 -1
  255. package/lib/testing/test-processor-server.d.ts +19 -13
  256. package/lib/testing/test-processor-server.d.ts.map +1 -1
  257. package/lib/testing/test-processor-server.js +22 -20
  258. package/lib/testing/test-processor-server.js.map +1 -1
  259. package/lib/utils/price.d.ts +1 -1
  260. package/lib/utils/price.d.ts.map +1 -1
  261. package/lib/utils/price.js +19 -12
  262. package/lib/utils/price.js.map +1 -1
  263. package/package.json +10 -12
  264. package/src/aptos/aptos-plugin.ts +105 -91
  265. package/src/aptos/aptos-processor.ts +42 -34
  266. package/src/aptos/aptos-resource-processor-template.ts +15 -6
  267. package/src/aptos/context.ts +8 -7
  268. package/src/aptos/data.ts +4 -4
  269. package/src/core/base-context.ts +19 -12
  270. package/src/core/core-plugin.ts +10 -7
  271. package/src/core/event-logger.ts +63 -34
  272. package/src/core/exporter.ts +5 -4
  273. package/src/core/handler-options.ts +1 -1
  274. package/src/core/handler-register.ts +3 -3
  275. package/src/core/meter.ts +9 -7
  276. package/src/core/normalization.ts +53 -31
  277. package/src/core/numberish.ts +46 -30
  278. package/src/core/partition-handler-manager.ts +13 -11
  279. package/src/cosmos/context.ts +4 -3
  280. package/src/cosmos/cosmos-plugin.ts +19 -15
  281. package/src/cosmos/cosmos-processor.ts +2 -2
  282. package/src/eth/abi-decoder/decode-worker.ts +2 -2
  283. package/src/eth/account-processor.ts +21 -12
  284. package/src/eth/base-processor-template.ts +27 -11
  285. package/src/eth/base-processor.ts +77 -65
  286. package/src/eth/builtin/internal/eacaggregatorproxy-processor.ts +177 -116
  287. package/src/eth/builtin/internal/erc1155-processor.ts +73 -38
  288. package/src/eth/builtin/internal/erc20-processor.ts +152 -91
  289. package/src/eth/builtin/internal/erc20bytes-processor.ts +80 -46
  290. package/src/eth/builtin/internal/erc721-processor.ts +109 -65
  291. package/src/eth/builtin/internal/weth9-processor.ts +95 -56
  292. package/src/eth/codegen/file.ts +2 -1
  293. package/src/eth/codegen/function-calls.ts +1 -1
  294. package/src/eth/context.ts +18 -11
  295. package/src/eth/eth-plugin.ts +135 -118
  296. package/src/eth/eth.ts +29 -20
  297. package/src/eth/index.ts +1 -1
  298. package/src/fuel/asset-processor.ts +16 -8
  299. package/src/fuel/context.ts +4 -3
  300. package/src/fuel/fuel-plugin.ts +71 -73
  301. package/src/fuel/fuel-processor-template.ts +10 -7
  302. package/src/fuel/fuel-processor.ts +35 -23
  303. package/src/fuel/global-processor.ts +3 -3
  304. package/src/fuel/types.ts +10 -4
  305. package/src/iota/context.ts +8 -7
  306. package/src/iota/iota-object-processor-template.ts +25 -15
  307. package/src/iota/iota-object-processor.ts +33 -22
  308. package/src/iota/iota-plugin-part.ts +41 -34
  309. package/src/iota/iota-processor.ts +35 -27
  310. package/src/iota/network.ts +2 -2
  311. package/src/move/filter.ts +1 -1
  312. package/src/move/index.ts +1 -1
  313. package/src/solana/codegen/codegen.ts +2 -2
  314. package/src/solana/solana-context.ts +4 -3
  315. package/src/solana/solana-plugin.ts +27 -24
  316. package/src/solana/solana-processor.ts +23 -11
  317. package/src/store/cache.ts +22 -18
  318. package/src/store/codegen.ts +2 -2
  319. package/src/store/convert.ts +68 -104
  320. package/src/store/decorators.ts +3 -2
  321. package/src/store/store.ts +31 -23
  322. package/src/store/types.ts +24 -33
  323. package/src/store/util.ts +13 -18
  324. package/src/sui/context.ts +8 -7
  325. package/src/sui/sui-object-processor-template.ts +25 -15
  326. package/src/sui/sui-object-processor.ts +33 -22
  327. package/src/sui/sui-plugin-part.ts +41 -34
  328. package/src/sui/sui-plugin.ts +49 -47
  329. package/src/sui/sui-processor.ts +35 -27
  330. package/src/testing/aptos-facet.ts +18 -11
  331. package/src/testing/cosmos-facet.ts +10 -6
  332. package/src/testing/eth-facet.ts +40 -18
  333. package/src/testing/fuel-facet.ts +28 -18
  334. package/src/testing/iota-facet.ts +32 -20
  335. package/src/testing/memory-database.ts +109 -82
  336. package/src/testing/metric-utils.ts +15 -14
  337. package/src/testing/solana-facet.ts +11 -6
  338. package/src/testing/sui-facet.ts +30 -20
  339. package/src/testing/test-processor-server.ts +64 -58
  340. package/src/utils/price.ts +20 -13
@@ -1,6 +1,7 @@
1
1
  import { BaseContext, Labels, normalizeLabels } from '../core/index.js'
2
2
  import { FuelChainId } from '@sentio/chain'
3
- import { RecordMetaData } from '@sentio/protos'
3
+ import { RecordMetaData, RecordMetaDataSchema } from '@sentio/protos'
4
+ import { create } from '@bufbuild/protobuf'
4
5
  import type { CallResult, Contract } from 'fuels'
5
6
  import { InvocationScopeLike } from 'fuels'
6
7
  import { FuelBlock, FuelLog, FuelTransaction } from './types.js'
@@ -39,7 +40,7 @@ export class FuelContext extends BaseContext {
39
40
  }
40
41
 
41
42
  protected getMetaDataInternal(name: string, labels: Labels): RecordMetaData {
42
- return {
43
+ return create(RecordMetaDataSchema, {
43
44
  address: this.contractAddress,
44
45
  contractName: this.contractName,
45
46
  blockNumber: BigInt(this.block?.height?.toString() ?? (this.transaction?.blockNumber || 0)),
@@ -49,7 +50,7 @@ export class FuelContext extends BaseContext {
49
50
  name: name,
50
51
  logIndex: this.logIndex,
51
52
  labels: normalizeLabels(labels)
52
- }
53
+ })
53
54
  }
54
55
  }
55
56
 
@@ -2,17 +2,22 @@ import { errorString, GLOBAL_CONFIG, mergeProcessResults, Plugin, PluginManager,
2
2
  import { PartitionHandlerManager } from '../core/index.js'
3
3
  import { HandlerRegister } from '../core/handler-register.js'
4
4
  import {
5
- ContractConfig,
5
+ ContractConfigSchema,
6
6
  DataBinding,
7
+ FuelAssetHandlerConfigSchema,
8
+ FuelReceiptHandlerConfigSchema,
9
+ FuelTransactionHandlerConfigSchema,
7
10
  HandlerType,
8
11
  InitResponse,
12
+ OnIntervalConfigSchema,
9
13
  ProcessConfigResponse,
10
14
  ProcessResult,
11
15
  ProcessStreamResponse_Partitions,
16
+ ProcessStreamResponse_PartitionsSchema,
12
17
  StartRequest
13
18
  } from '@sentio/protos'
14
-
15
- import { ServerError, Status } from 'nice-grpc'
19
+ import { create } from '@bufbuild/protobuf'
20
+ import { ConnectError, Code } from '@connectrpc/connect'
16
21
  import { FuelAssetProcessor } from './asset-processor.js'
17
22
  import { FuelProcessorState } from './types.js'
18
23
  import { FuelProcessor } from './fuel-processor.js'
@@ -39,7 +44,7 @@ export class FuelPlugin extends Plugin {
39
44
  continue
40
45
  }
41
46
  const processorConfig = processor.config
42
- const contractConfig = ContractConfig.fromPartial({
47
+ const contractConfig = create(ContractConfigSchema, {
43
48
  processorType: USER_PROCESSOR,
44
49
  contract: {
45
50
  name: processorConfig.name,
@@ -60,24 +65,25 @@ export class FuelPlugin extends Plugin {
60
65
  const handlerName = txHandler.handlerName
61
66
  if (processor instanceof FuelProcessor) {
62
67
  // on transaction
63
- const fetchConfig = {
68
+ const fetchConfig = create(FuelTransactionHandlerConfigSchema, {
64
69
  handlerId,
65
70
  handlerName
66
- }
71
+ })
67
72
  contractConfig.fuelTransactionConfigs.push(fetchConfig)
68
73
  } else if (processor instanceof FuelAssetProcessor) {
69
74
  const assetConfig = txHandler.assetConfig
70
- contractConfig.assetConfigs.push({
71
- filters: assetConfig?.filters || [],
75
+ contractConfig.assetConfigs.push(
76
+ create(FuelAssetHandlerConfigSchema, {
77
+ filters: assetConfig?.filters || [],
78
+ handlerId,
79
+ handlerName
80
+ })
81
+ )
82
+ } else if (processor instanceof FuelGlobalProcessor) {
83
+ const fetchConfig = create(FuelTransactionHandlerConfigSchema, {
72
84
  handlerId,
73
85
  handlerName
74
86
  })
75
- } else if (processor instanceof FuelGlobalProcessor) {
76
- const fetchConfig = {
77
- handlerId,
78
- handlerName,
79
- filters: []
80
- }
81
87
  contractConfig.fuelTransactionConfigs.push(fetchConfig)
82
88
  contractConfig.contract!.address = '*'
83
89
  }
@@ -92,39 +98,38 @@ export class FuelPlugin extends Plugin {
92
98
  )
93
99
  const handlerName = receiptHandler.handlerName
94
100
  if (processor instanceof FuelProcessor) {
95
- contractConfig.fuelReceiptConfigs.push({
96
- ...receiptHandler.receiptConfig,
97
- handlerId,
98
- handlerName
99
- })
101
+ contractConfig.fuelReceiptConfigs.push(
102
+ create(FuelReceiptHandlerConfigSchema, {
103
+ ...receiptHandler.receiptConfig,
104
+ handlerId,
105
+ handlerName
106
+ })
107
+ )
100
108
  }
101
109
  }
102
110
 
103
111
  for (const blockHandler of processor.blockHandlers) {
104
112
  const handlerId = this.handlerRegister.register(blockHandler.handler, chainId)
105
113
  this.partitionManager.registerPartitionHandler(HandlerType.FUEL_BLOCK, handlerId, blockHandler.partitionHandler)
106
- contractConfig.intervalConfigs.push({
107
- slot: 0,
108
- slotInterval: blockHandler.blockInterval,
109
- minutes: 0,
110
- minutesInterval: blockHandler.timeIntervalInMinutes,
111
- handlerId: handlerId,
112
- handlerName: blockHandler.handlerName,
113
- fetchConfig: undefined
114
- // fetchConfig: blockHandler.fetchConfig
115
- })
114
+ contractConfig.intervalConfigs.push(
115
+ create(OnIntervalConfigSchema, {
116
+ slot: 0,
117
+ slotInterval: blockHandler.blockInterval,
118
+ minutes: 0,
119
+ minutesInterval: blockHandler.timeIntervalInMinutes,
120
+ handlerId: handlerId,
121
+ handlerName: blockHandler.handlerName,
122
+ fetchConfig: undefined
123
+ // fetchConfig: blockHandler.fetchConfig
124
+ })
125
+ )
116
126
  }
117
127
 
118
128
  config.contractConfigs.push(contractConfig)
119
129
  }
120
130
  }
121
131
 
122
- supportedHandlers = [
123
- HandlerType.FUEL_TRANSACTION,
124
- HandlerType.FUEL_RECEIPT,
125
- HandlerType.FUEL_CALL,
126
- HandlerType.FUEL_BLOCK
127
- ]
132
+ supportedHandlers = [HandlerType.FUEL_TRANSACTION, HandlerType.FUEL_RECEIPT, HandlerType.FUEL_BLOCK]
128
133
 
129
134
  processBinding(request: DataBinding): Promise<ProcessResult> {
130
135
  switch (request.handlerType) {
@@ -135,7 +140,7 @@ export class FuelPlugin extends Plugin {
135
140
  case HandlerType.FUEL_BLOCK:
136
141
  return this.processBlock(request)
137
142
  default:
138
- throw new ServerError(Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType)
143
+ throw new ConnectError('No handle type registered ' + request.handlerType, Code.InvalidArgument)
139
144
  }
140
145
  }
141
146
 
@@ -143,41 +148,34 @@ export class FuelPlugin extends Plugin {
143
148
  let data: any
144
149
  switch (request.handlerType) {
145
150
  case HandlerType.FUEL_TRANSACTION:
146
- if (!request.data?.fuelTransaction) {
147
- throw new ServerError(Status.INVALID_ARGUMENT, "fuelTransaction can't be empty")
151
+ if (request.data?.value.case !== 'fuelTransaction') {
152
+ throw new ConnectError("fuelTransaction can't be empty", Code.InvalidArgument)
148
153
  }
149
- data = request.data.fuelTransaction
154
+ data = request.data.value.value
150
155
  break
151
156
  case HandlerType.FUEL_RECEIPT:
152
- if (!request.data?.fuelLog) {
153
- throw new ServerError(Status.INVALID_ARGUMENT, "fuelReceipt can't be empty")
157
+ if (request.data?.value.case !== 'fuelLog') {
158
+ throw new ConnectError("fuelReceipt can't be empty", Code.InvalidArgument)
154
159
  }
155
- data = request.data.fuelLog
160
+ data = request.data.value.value
156
161
  break
157
162
  case HandlerType.FUEL_BLOCK:
158
- if (!request.data?.fuelBlock) {
159
- throw new ServerError(Status.INVALID_ARGUMENT, "fuelBlock can't be empty")
160
- }
161
- data = request.data.fuelBlock
162
- break
163
- case HandlerType.FUEL_CALL:
164
- // FUEL_CALL uses the same data as FUEL_TRANSACTION
165
- if (!request.data?.fuelTransaction) {
166
- throw new ServerError(Status.INVALID_ARGUMENT, "fuelTransaction can't be empty for FUEL_CALL")
163
+ if (request.data?.value.case !== 'fuelBlock') {
164
+ throw new ConnectError("fuelBlock can't be empty", Code.InvalidArgument)
167
165
  }
168
- data = request.data.fuelTransaction
166
+ data = request.data.value.value
169
167
  break
170
168
  default:
171
- throw new ServerError(Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType)
169
+ throw new ConnectError('No handle type registered ' + request.handlerType, Code.InvalidArgument)
172
170
  }
173
171
  const partitions = await this.partitionManager.processPartitionForHandlerType(
174
172
  request.handlerType,
175
173
  request.handlerIds,
176
174
  data
177
175
  )
178
- return {
176
+ return create(ProcessStreamResponse_PartitionsSchema, {
179
177
  partitions
180
- }
178
+ })
181
179
  }
182
180
 
183
181
  async start(request: StartRequest) {
@@ -186,15 +184,15 @@ export class FuelPlugin extends Plugin {
186
184
  await processor.configure()
187
185
  }
188
186
  } catch (e) {
189
- throw new ServerError(Status.INTERNAL, 'error starting FuelPlugin: ' + errorString(e))
187
+ throw new ConnectError('error starting FuelPlugin: ' + errorString(e), Code.Internal)
190
188
  }
191
189
  }
192
190
 
193
191
  async processReceipt(binding: DataBinding): Promise<ProcessResult> {
194
- const receipt = binding?.data?.fuelLog
192
+ const receipt = binding?.data?.value.case === 'fuelLog' ? binding.data.value.value : undefined
195
193
 
196
194
  if (!receipt?.transaction) {
197
- throw new ServerError(Status.INVALID_ARGUMENT, "transaction can't be null")
195
+ throw new ConnectError("transaction can't be null", Code.InvalidArgument)
198
196
  }
199
197
 
200
198
  const promises: Promise<ProcessResult>[] = []
@@ -206,9 +204,9 @@ export class FuelPlugin extends Plugin {
206
204
  handlerId
207
205
  )(receipt)
208
206
  .catch((e: any) => {
209
- throw new ServerError(
210
- Status.INTERNAL,
211
- 'error processing transaction: ' + JSON.stringify(receipt) + '\n' + errorString(e)
207
+ throw new ConnectError(
208
+ 'error processing transaction: ' + JSON.stringify(receipt) + '\n' + errorString(e),
209
+ Code.Internal
212
210
  )
213
211
  })
214
212
  if (GLOBAL_CONFIG.execution.sequential) {
@@ -220,10 +218,10 @@ export class FuelPlugin extends Plugin {
220
218
  }
221
219
 
222
220
  async processTransaction(binding: DataBinding): Promise<ProcessResult> {
223
- if (!binding.data?.fuelTransaction?.transaction) {
224
- throw new ServerError(Status.INVALID_ARGUMENT, "transaction can't be null")
221
+ if (binding.data?.value.case !== 'fuelTransaction' || !binding.data.value.value.transaction) {
222
+ throw new ConnectError("transaction can't be null", Code.InvalidArgument)
225
223
  }
226
- const fuelTransaction = binding.data.fuelTransaction
224
+ const fuelTransaction = binding.data.value.value
227
225
 
228
226
  const promises: Promise<ProcessResult>[] = []
229
227
 
@@ -234,9 +232,9 @@ export class FuelPlugin extends Plugin {
234
232
  handlerId
235
233
  )(fuelTransaction)
236
234
  .catch((e: any) => {
237
- throw new ServerError(
238
- Status.INTERNAL,
239
- 'error processing transaction: ' + JSON.stringify(fuelTransaction.transaction) + '\n' + errorString(e)
235
+ throw new ConnectError(
236
+ 'error processing transaction: ' + JSON.stringify(fuelTransaction.transaction) + '\n' + errorString(e),
237
+ Code.Internal
240
238
  )
241
239
  })
242
240
  if (GLOBAL_CONFIG.execution.sequential) {
@@ -248,10 +246,10 @@ export class FuelPlugin extends Plugin {
248
246
  }
249
247
 
250
248
  async processBlock(binding: DataBinding): Promise<ProcessResult> {
251
- if (!binding.data?.fuelBlock?.block) {
252
- throw new ServerError(Status.INVALID_ARGUMENT, "Block can't be empty")
249
+ if (binding.data?.value.case !== 'fuelBlock' || !binding.data.value.value.block) {
250
+ throw new ConnectError("Block can't be empty", Code.InvalidArgument)
253
251
  }
254
- const ethBlock = binding.data.fuelBlock
252
+ const ethBlock = binding.data.value.value
255
253
 
256
254
  const promises: Promise<ProcessResult>[] = []
257
255
  for (const handlerId of binding.handlerIds) {
@@ -262,9 +260,9 @@ export class FuelPlugin extends Plugin {
262
260
  )(ethBlock)
263
261
  .catch((e: any) => {
264
262
  console.error('error processing block: ', e)
265
- throw new ServerError(
266
- Status.INTERNAL,
267
- 'error processing block: ' + ethBlock.block?.height + '\n' + errorString(e)
263
+ throw new ConnectError(
264
+ 'error processing block: ' + (ethBlock.block as any)?.height + '\n' + errorString(e),
265
+ Code.Internal
268
266
  )
269
267
  })
270
268
  if (GLOBAL_CONFIG.execution.sequential) {
@@ -1,5 +1,6 @@
1
1
  import { FuelContext, FuelContractContext } from './context.js'
2
- import { HandleInterval, TemplateInstance } from '@sentio/protos'
2
+ import { HandleInterval, HandleIntervalSchema, TemplateInstance, TemplateInstanceSchema } from '@sentio/protos'
3
+ import { create } from '@bufbuild/protobuf'
3
4
  import { PromiseOrVoid } from '../core/promises.js'
4
5
  import { ListStateStorage, processMetrics } from '@sentio/runtime'
5
6
  import { Contract } from 'fuels'
@@ -41,7 +42,9 @@ export abstract class FuelBaseProcessorTemplate<TContract extends Contract> {
41
42
 
42
43
  constructor() {
43
44
  this.id = FuelProcessorTemplateProcessorState.INSTANCE.getValues().length
44
- FuelProcessorTemplateProcessorState.INSTANCE.addValue(this)
45
+ // Stored type-erased as the base instantiation; the concrete type parameter only appears in
46
+ // handler parameter positions, which `strictFunctionTypes` checks contravariantly.
47
+ FuelProcessorTemplateProcessorState.INSTANCE.addValue(this as unknown as FuelBaseProcessorTemplate<Contract>)
45
48
  return proxyProcessor(this)
46
49
  }
47
50
 
@@ -51,7 +54,7 @@ export abstract class FuelBaseProcessorTemplate<TContract extends Contract> {
51
54
  * @param ctx
52
55
  */
53
56
  public bind(options: Omit<Omit<FuelProcessorConfig, 'chainId'>, 'abi'>, ctx: FuelContext): void {
54
- const instance: TemplateInstance = {
57
+ const instance: TemplateInstance = create(TemplateInstanceSchema, {
55
58
  templateId: this.id,
56
59
  contract: {
57
60
  address: options.address,
@@ -63,7 +66,7 @@ export abstract class FuelBaseProcessorTemplate<TContract extends Contract> {
63
66
  endBlock: BigInt(options.endBlock || 0),
64
67
  baseLabels: {}
65
68
  // baseLabels: options.baseLabels
66
- }
69
+ })
67
70
 
68
71
  ctx.sendTemplateInstance(instance)
69
72
 
@@ -128,10 +131,10 @@ export abstract class FuelBaseProcessorTemplate<TContract extends Contract> {
128
131
  return this.onInterval(
129
132
  handler,
130
133
  undefined,
131
- {
134
+ create(HandleIntervalSchema, {
132
135
  recentInterval: blockInterval,
133
136
  backfillInterval: backfillBlockInterval
134
- }
137
+ })
135
138
  // fetchConfig
136
139
  )
137
140
  }
@@ -144,7 +147,7 @@ export abstract class FuelBaseProcessorTemplate<TContract extends Contract> {
144
147
  ) {
145
148
  return this.onInterval(
146
149
  handler,
147
- { recentInterval: timeIntervalInMinutes, backfillInterval: backfillBlockInterval },
150
+ create(HandleIntervalSchema, { recentInterval: timeIntervalInMinutes, backfillInterval: backfillBlockInterval }),
148
151
  undefined
149
152
  // fetchConfig
150
153
  )
@@ -2,10 +2,12 @@ import {
2
2
  Data_FuelBlock,
3
3
  Data_FuelTransaction,
4
4
  Data_FuelReceipt,
5
- FuelCallFilter,
6
5
  HandleInterval,
7
- ProcessResult
6
+ HandleIntervalSchema,
7
+ ProcessResultSchema,
8
+ timestampDate
8
9
  } from '@sentio/protos'
10
+ import { create } from '@bufbuild/protobuf'
9
11
  import { FuelCall, FuelContext, FuelContractContext } from './context.js'
10
12
  import { bn, Contract, InputType, Interface, JsonAbi, Provider, ReceiptTransfer, ReceiptTransferOut } from 'fuels'
11
13
  import { FuelNetwork, getProvider } from './network.js'
@@ -22,13 +24,14 @@ import {
22
24
  ContractTransferFilter,
23
25
  FuelBaseProcessor,
24
26
  FuelBlock,
27
+ FuelCallFilter,
25
28
  FuelLog,
26
29
  FuelProcessorState,
27
30
  FuelTransaction,
28
31
  ReceiptHandler
29
32
  } from './types.js'
30
33
  import { PromiseOrVoid, HandlerOptions } from '../core/index.js'
31
- import { ServerError, Status } from 'nice-grpc'
34
+ import { ConnectError, Code } from '@connectrpc/connect'
32
35
  import { getHandlerName, proxyProcessor } from '../utils/metrics.js'
33
36
 
34
37
  export class FuelProcessor<TContract extends Contract> implements FuelBaseProcessor<FuelProcessorConfig> {
@@ -106,7 +109,7 @@ export class FuelProcessor<TContract extends Contract> implements FuelBaseProces
106
109
  this.getContract(tx),
107
110
  this.config.address,
108
111
  this.config.name ?? this.config.address,
109
- call.timestamp || new Date(0),
112
+ call.timestamp ? timestampDate(call.timestamp) : new Date(0),
110
113
  tx,
111
114
  null
112
115
  )
@@ -176,7 +179,7 @@ export class FuelProcessor<TContract extends Contract> implements FuelBaseProces
176
179
  this.config.chainId,
177
180
  this.config.address,
178
181
  this.config.name ?? this.config.address,
179
- call.timestamp || new Date(0),
182
+ call.timestamp ? timestampDate(call.timestamp) : new Date(0),
180
183
  tx,
181
184
  null
182
185
  )
@@ -198,7 +201,7 @@ export class FuelProcessor<TContract extends Contract> implements FuelBaseProces
198
201
  return ctx.stopAndGetResult()
199
202
  } catch (e) {
200
203
  console.error(e)
201
- return ProcessResult.fromPartial({})
204
+ return create(ProcessResultSchema)
202
205
  }
203
206
  },
204
207
  fetchConfig: {
@@ -231,7 +234,7 @@ export class FuelProcessor<TContract extends Contract> implements FuelBaseProces
231
234
  this.getContract(tx),
232
235
  this.config.address,
233
236
  this.config.name ?? this.config.address,
234
- timestamp || new Date(0),
237
+ timestamp ? timestampDate(timestamp) : new Date(0),
235
238
  tx,
236
239
  null
237
240
  )
@@ -245,11 +248,14 @@ export class FuelProcessor<TContract extends Contract> implements FuelBaseProces
245
248
  console.error(e)
246
249
  }
247
250
 
248
- return ProcessResult.fromPartial({})
251
+ return create(ProcessResultSchema)
249
252
  },
250
253
  receiptConfig: {
251
- log: {
252
- logIds: Array.from(logIds)
254
+ receiptFilter: {
255
+ case: 'log',
256
+ value: {
257
+ logIds: Array.from(logIds)
258
+ }
253
259
  }
254
260
  },
255
261
  partitionHandler: async (data: Data_FuelReceipt): Promise<string | undefined> => {
@@ -297,7 +303,7 @@ export class FuelProcessor<TContract extends Contract> implements FuelBaseProces
297
303
  this.getContract(tx),
298
304
  this.config.address,
299
305
  this.config.name ?? this.config.address,
300
- timestamp || new Date(0),
306
+ timestamp ? timestampDate(timestamp) : new Date(0),
301
307
  tx,
302
308
  null
303
309
  )
@@ -307,13 +313,16 @@ export class FuelProcessor<TContract extends Contract> implements FuelBaseProces
307
313
  console.error(e)
308
314
  }
309
315
 
310
- return ProcessResult.fromPartial({})
316
+ return create(ProcessResultSchema)
311
317
  },
312
318
  receiptConfig: {
313
- transfer: {
314
- from,
315
- to,
316
- assetId
319
+ receiptFilter: {
320
+ case: 'transfer',
321
+ value: {
322
+ from,
323
+ to,
324
+ assetId
325
+ }
317
326
  }
318
327
  },
319
328
  partitionHandler: async (data: Data_FuelReceipt): Promise<string | undefined> => {
@@ -357,9 +366,9 @@ export class FuelProcessor<TContract extends Contract> implements FuelBaseProces
357
366
  timeIntervalInMinutes: timeInterval,
358
367
  handlerName,
359
368
  handler: async function (data: Data_FuelBlock) {
360
- const header = data.block
369
+ const header = data.block as any
361
370
  if (!header) {
362
- throw new ServerError(Status.INVALID_ARGUMENT, 'Block is empty')
371
+ throw new ConnectError('Block is empty', Code.InvalidArgument)
363
372
  }
364
373
 
365
374
  const block: FuelBlock = {
@@ -383,7 +392,7 @@ export class FuelProcessor<TContract extends Contract> implements FuelBaseProces
383
392
  contract,
384
393
  processor.config.address,
385
394
  processor.config.name ?? processor.config.address,
386
- data.timestamp || new Date(0),
395
+ data.timestamp ? timestampDate(data.timestamp) : new Date(0),
387
396
  null,
388
397
  block
389
398
  )
@@ -394,7 +403,7 @@ export class FuelProcessor<TContract extends Contract> implements FuelBaseProces
394
403
  const p = handlerOptions?.partitionKey
395
404
  if (!p) return undefined
396
405
  if (typeof p === 'function') {
397
- const header = data.block
406
+ const header = data.block as any
398
407
  if (!header) return undefined
399
408
  const block: FuelBlock = {
400
409
  id: header.id,
@@ -428,10 +437,10 @@ export class FuelProcessor<TContract extends Contract> implements FuelBaseProces
428
437
  return this.onInterval(
429
438
  handler,
430
439
  undefined,
431
- {
440
+ create(HandleIntervalSchema, {
432
441
  recentInterval: blockInterval,
433
442
  backfillInterval: backfillBlockInterval
434
- },
443
+ }),
435
444
  handlerOptions
436
445
  )
437
446
  }
@@ -444,7 +453,10 @@ export class FuelProcessor<TContract extends Contract> implements FuelBaseProces
444
453
  ): this {
445
454
  return this.onInterval(
446
455
  handler,
447
- { recentInterval: timeIntervalInMinutes, backfillInterval: backfillTimeIntervalInMinutes },
456
+ create(HandleIntervalSchema, {
457
+ recentInterval: timeIntervalInMinutes,
458
+ backfillInterval: backfillTimeIntervalInMinutes
459
+ }),
448
460
  undefined,
449
461
  handlerOptions
450
462
  )
@@ -1,5 +1,5 @@
1
1
  import { CallHandler, FuelBaseProcessor, FuelBlock, FuelProcessorState, FuelTransaction } from './types.js'
2
- import { Data_FuelTransaction } from '@sentio/protos'
2
+ import { Data_FuelTransaction, timestampDate } from '@sentio/protos'
3
3
  import { Provider, bn } from 'fuels'
4
4
  import { getProvider } from './network.js'
5
5
  import { decodeFuelTransaction, DEFAULT_FUEL_FETCH_CONFIG, FuelFetchConfig } from './transaction.js'
@@ -51,12 +51,12 @@ export class FuelGlobalProcessor implements FuelBaseProcessor<GlobalFuelProcesso
51
51
  console.error('error decoding transaction', e)
52
52
  return mergeProcessResults([])
53
53
  }
54
- const header = call.transaction?.status.block.header
54
+ const header = (call.transaction as any)?.status.block.header
55
55
  const ctx = new FuelContext(
56
56
  this.config.chainId,
57
57
  ALL_ADDRESS,
58
58
  this.config.name ?? '*',
59
- call.timestamp || new Date(0),
59
+ call.timestamp ? timestampDate(call.timestamp) : new Date(0),
60
60
  tx,
61
61
  header
62
62
  ? ({
package/src/fuel/types.ts CHANGED
@@ -4,7 +4,6 @@ import {
4
4
  Data_FuelReceipt,
5
5
  Data_FuelTransaction,
6
6
  FuelAssetHandlerConfig,
7
- FuelCallHandlerConfig,
8
7
  FuelReceiptHandlerConfig,
9
8
  HandleInterval,
10
9
  OnIntervalConfig,
@@ -12,6 +11,13 @@ import {
12
11
  } from '@sentio/protos'
13
12
  import { Block, TransactionSummary } from 'fuels'
14
13
 
14
+ // Client-side only filter for `onCall`. Fuel calls are delivered as FUEL_TRANSACTION
15
+ // data and filtered in-handler, so this never reaches the backend.
16
+ export interface FuelCallFilter {
17
+ function: string
18
+ includeFailed: boolean
19
+ }
20
+
15
21
  export interface FuelBaseProcessor<T> {
16
22
  configure(): Promise<void>
17
23
  config: T
@@ -27,15 +33,15 @@ export class FuelProcessorState extends MapStateStorage<FuelBaseProcessor<any>>
27
33
  export type CallHandler<T> = {
28
34
  handlerName: string
29
35
  handler: (call: T) => Promise<ProcessResult>
30
- fetchConfig?: Partial<FuelCallHandlerConfig>
31
- assetConfig?: Partial<FuelAssetHandlerConfig>
36
+ fetchConfig?: { filters: FuelCallFilter[] }
37
+ assetConfig?: Omit<Partial<FuelAssetHandlerConfig>, '$typeName' | '$unknown'>
32
38
  partitionHandler?: (call: T) => Promise<string | undefined>
33
39
  }
34
40
 
35
41
  export type ReceiptHandler = {
36
42
  handlerName: string
37
43
  handler: (receipt: Data_FuelReceipt) => Promise<ProcessResult>
38
- receiptConfig?: Partial<FuelReceiptHandlerConfig>
44
+ receiptConfig?: Omit<Partial<FuelReceiptHandlerConfig>, '$typeName' | '$unknown'>
39
45
  partitionHandler?: (receipt: Data_FuelReceipt) => Promise<string | undefined>
40
46
  }
41
47
 
@@ -1,4 +1,5 @@
1
- import { RecordMetaData } from '@sentio/protos'
1
+ import { type RecordMetaData, RecordMetaDataSchema } from '@sentio/protos'
2
+ import { create } from '@bufbuild/protobuf'
2
3
  import { type Labels, normalizeLabels } from '../index.js'
3
4
  import { getClient, IotaNetwork } from './network.js'
4
5
  import {
@@ -52,7 +53,7 @@ export class IotaContext extends MoveContext<IotaNetwork, IotaMoveNormalizedModu
52
53
  }
53
54
 
54
55
  getMetaDataInternal(name: string, labels: Labels): RecordMetaData {
55
- return {
56
+ return create(RecordMetaDataSchema, {
56
57
  address: this.address,
57
58
  contractName: this.moduleName,
58
59
  blockNumber: this.checkpoint,
@@ -62,7 +63,7 @@ export class IotaContext extends MoveContext<IotaNetwork, IotaMoveNormalizedModu
62
63
  chainId: this.getChainId(),
63
64
  name: name,
64
65
  labels: normalizeLabels(labels)
65
- }
66
+ })
66
67
  }
67
68
 
68
69
  get client(): IotaClient {
@@ -106,7 +107,7 @@ export class IotaObjectChangeContext extends MoveContext<
106
107
  }
107
108
 
108
109
  getMetaDataInternal(name: string, labels: Labels): RecordMetaData {
109
- return {
110
+ return create(RecordMetaDataSchema, {
110
111
  address: this.address,
111
112
  contractName: '*',
112
113
  blockNumber: this.checkpoint,
@@ -116,7 +117,7 @@ export class IotaObjectChangeContext extends MoveContext<
116
117
  chainId: this.getChainId(),
117
118
  name: name,
118
119
  labels: normalizeLabels(labels)
119
- }
120
+ })
120
121
  }
121
122
 
122
123
  get client(): IotaClient {
@@ -158,7 +159,7 @@ export class IotaAddressContext extends MoveAccountContext<
158
159
  }
159
160
 
160
161
  getMetaDataInternal(name: string, labels: Labels): RecordMetaData {
161
- return {
162
+ return create(RecordMetaDataSchema, {
162
163
  address: this.address,
163
164
  contractName: this.contractName,
164
165
  blockNumber: this.checkpoint,
@@ -168,7 +169,7 @@ export class IotaAddressContext extends MoveAccountContext<
168
169
  chainId: this.getChainId(),
169
170
  name: name,
170
171
  labels: normalizeLabels(labels)
171
- }
172
+ })
172
173
  }
173
174
 
174
175
  get client(): IotaClient {