@sentio/sdk 2.57.12-rc.j → 2.57.13-rc.1

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 (250) hide show
  1. package/lib/core/template.d.ts +1 -5
  2. package/lib/core/template.d.ts.map +1 -1
  3. package/lib/core/template.js +1 -4
  4. package/lib/core/template.js.map +1 -1
  5. package/lib/store/store.d.ts +2 -2
  6. package/lib/store/store.d.ts.map +1 -1
  7. package/lib/store/store.js.map +1 -1
  8. package/package.json +3 -3
  9. package/src/core/template.ts +1 -6
  10. package/src/store/store.ts +2 -3
  11. package/lib/chunk-2F2KNF4Z.js +0 -71905
  12. package/lib/chunk-2F2KNF4Z.js.map +0 -1
  13. package/lib/chunk-43HP4DQZ.js +0 -47
  14. package/lib/chunk-43HP4DQZ.js.map +0 -1
  15. package/lib/chunk-4HPFNKDX.js +0 -6763
  16. package/lib/chunk-4HPFNKDX.js.map +0 -1
  17. package/lib/chunk-4OCWUYSJ.js +0 -898
  18. package/lib/chunk-4OCWUYSJ.js.map +0 -1
  19. package/lib/chunk-6UVWNOIX.js +0 -4207
  20. package/lib/chunk-6UVWNOIX.js.map +0 -1
  21. package/lib/chunk-73SHERGU.js +0 -23970
  22. package/lib/chunk-73SHERGU.js.map +0 -1
  23. package/lib/chunk-742S42NO.js +0 -1323
  24. package/lib/chunk-742S42NO.js.map +0 -1
  25. package/lib/chunk-7ECRTQD7.js +0 -26757
  26. package/lib/chunk-7ECRTQD7.js.map +0 -1
  27. package/lib/chunk-7IDGS56O.js +0 -5058
  28. package/lib/chunk-7IDGS56O.js.map +0 -1
  29. package/lib/chunk-7S6WQ4RL.js +0 -1069
  30. package/lib/chunk-7S6WQ4RL.js.map +0 -1
  31. package/lib/chunk-AZFMPZRN.js +0 -3613
  32. package/lib/chunk-AZFMPZRN.js.map +0 -1
  33. package/lib/chunk-BZCXYTDE.js +0 -1333
  34. package/lib/chunk-BZCXYTDE.js.map +0 -1
  35. package/lib/chunk-E2DS6WZF.js +0 -1690
  36. package/lib/chunk-E2DS6WZF.js.map +0 -1
  37. package/lib/chunk-GE6BRIGS.js +0 -1721
  38. package/lib/chunk-GE6BRIGS.js.map +0 -1
  39. package/lib/chunk-J3I3VNTV.js +0 -767
  40. package/lib/chunk-J3I3VNTV.js.map +0 -1
  41. package/lib/chunk-J3QOJ2RV.js +0 -661
  42. package/lib/chunk-J3QOJ2RV.js.map +0 -1
  43. package/lib/chunk-J5UEW4B7.js +0 -1351
  44. package/lib/chunk-J5UEW4B7.js.map +0 -1
  45. package/lib/chunk-LPSNAS2G.js +0 -460
  46. package/lib/chunk-LPSNAS2G.js.map +0 -1
  47. package/lib/chunk-LR232ZJV.js +0 -2593
  48. package/lib/chunk-LR232ZJV.js.map +0 -1
  49. package/lib/chunk-N36N7RXJ.js +0 -653
  50. package/lib/chunk-N36N7RXJ.js.map +0 -1
  51. package/lib/chunk-OJG2VJ5T.js +0 -7063
  52. package/lib/chunk-OJG2VJ5T.js.map +0 -1
  53. package/lib/chunk-ONBEMKI5.js +0 -323
  54. package/lib/chunk-ONBEMKI5.js.map +0 -1
  55. package/lib/chunk-PVX2LIM5.js +0 -205
  56. package/lib/chunk-PVX2LIM5.js.map +0 -1
  57. package/lib/chunk-R7PMHHKJ.js +0 -52
  58. package/lib/chunk-R7PMHHKJ.js.map +0 -1
  59. package/lib/chunk-RMT2JEWA.js +0 -7740
  60. package/lib/chunk-RMT2JEWA.js.map +0 -1
  61. package/lib/chunk-S6MJ3KIL.js +0 -27798
  62. package/lib/chunk-S6MJ3KIL.js.map +0 -1
  63. package/lib/chunk-UEFVZL4I.js +0 -199
  64. package/lib/chunk-UEFVZL4I.js.map +0 -1
  65. package/lib/chunk-UIBPOKNT.js +0 -945
  66. package/lib/chunk-UIBPOKNT.js.map +0 -1
  67. package/lib/chunk-ZR7UHHH2.js +0 -5
  68. package/lib/chunk-ZR7UHHH2.js.map +0 -1
  69. package/lib/multipart-parser-SQIYSR67.js +0 -368
  70. package/lib/multipart-parser-SQIYSR67.js.map +0 -1
  71. package/src/aptos/builtin/0x1.d.ts +0 -6451
  72. package/src/aptos/builtin/0x1.d.ts.map +0 -1
  73. package/src/aptos/builtin/0x1.js +0 -7138
  74. package/src/aptos/builtin/0x1.js.map +0 -1
  75. package/src/aptos/builtin/0x3.d.ts +0 -1122
  76. package/src/aptos/builtin/0x3.d.ts.map +0 -1
  77. package/src/aptos/builtin/0x3.js +0 -937
  78. package/src/aptos/builtin/0x3.js.map +0 -1
  79. package/src/aptos/builtin/0x4.d.ts +0 -551
  80. package/src/aptos/builtin/0x4.d.ts.map +0 -1
  81. package/src/aptos/builtin/0x4.js +0 -529
  82. package/src/aptos/builtin/0x4.js.map +0 -1
  83. package/src/aptos/builtin/index.d.ts +0 -4
  84. package/src/aptos/builtin/index.d.ts.map +0 -1
  85. package/src/aptos/builtin/index.js +0 -7
  86. package/src/aptos/builtin/index.js.map +0 -1
  87. package/src/eth/builtin/eacaggregatorproxy.d.ts +0 -5
  88. package/src/eth/builtin/eacaggregatorproxy.d.ts.map +0 -1
  89. package/src/eth/builtin/eacaggregatorproxy.js +0 -8
  90. package/src/eth/builtin/eacaggregatorproxy.js.map +0 -1
  91. package/src/eth/builtin/erc1155.d.ts +0 -5
  92. package/src/eth/builtin/erc1155.d.ts.map +0 -1
  93. package/src/eth/builtin/erc1155.js +0 -8
  94. package/src/eth/builtin/erc1155.js.map +0 -1
  95. package/src/eth/builtin/erc20.d.ts +0 -5
  96. package/src/eth/builtin/erc20.d.ts.map +0 -1
  97. package/src/eth/builtin/erc20.js +0 -8
  98. package/src/eth/builtin/erc20.js.map +0 -1
  99. package/src/eth/builtin/erc20bytes.d.ts +0 -5
  100. package/src/eth/builtin/erc20bytes.d.ts.map +0 -1
  101. package/src/eth/builtin/erc20bytes.js +0 -8
  102. package/src/eth/builtin/erc20bytes.js.map +0 -1
  103. package/src/eth/builtin/erc721.d.ts +0 -5
  104. package/src/eth/builtin/erc721.d.ts.map +0 -1
  105. package/src/eth/builtin/erc721.js +0 -8
  106. package/src/eth/builtin/erc721.js.map +0 -1
  107. package/src/eth/builtin/index.d.ts +0 -13
  108. package/src/eth/builtin/index.d.ts.map +0 -1
  109. package/src/eth/builtin/index.js +0 -16
  110. package/src/eth/builtin/index.js.map +0 -1
  111. package/src/eth/builtin/internal/EACAggregatorProxy.d.ts +0 -50
  112. package/src/eth/builtin/internal/EACAggregatorProxy.d.ts.map +0 -1
  113. package/src/eth/builtin/internal/EACAggregatorProxy.js +0 -2
  114. package/src/eth/builtin/internal/EACAggregatorProxy.js.map +0 -1
  115. package/src/eth/builtin/internal/ERC1155.d.ts +0 -57
  116. package/src/eth/builtin/internal/ERC1155.d.ts.map +0 -1
  117. package/src/eth/builtin/internal/ERC1155.js +0 -2
  118. package/src/eth/builtin/internal/ERC1155.js.map +0 -1
  119. package/src/eth/builtin/internal/ERC20.d.ts +0 -41
  120. package/src/eth/builtin/internal/ERC20.d.ts.map +0 -1
  121. package/src/eth/builtin/internal/ERC20.js +0 -2
  122. package/src/eth/builtin/internal/ERC20.js.map +0 -1
  123. package/src/eth/builtin/internal/ERC20Bytes.d.ts +0 -32
  124. package/src/eth/builtin/internal/ERC20Bytes.d.ts.map +0 -1
  125. package/src/eth/builtin/internal/ERC20Bytes.js +0 -2
  126. package/src/eth/builtin/internal/ERC20Bytes.js.map +0 -1
  127. package/src/eth/builtin/internal/ERC721.d.ts +0 -43
  128. package/src/eth/builtin/internal/ERC721.d.ts.map +0 -1
  129. package/src/eth/builtin/internal/ERC721.js +0 -2
  130. package/src/eth/builtin/internal/ERC721.js.map +0 -1
  131. package/src/eth/builtin/internal/WETH9.d.ts +0 -47
  132. package/src/eth/builtin/internal/WETH9.d.ts.map +0 -1
  133. package/src/eth/builtin/internal/WETH9.js +0 -2
  134. package/src/eth/builtin/internal/WETH9.js.map +0 -1
  135. package/src/eth/builtin/internal/common.d.ts +0 -3
  136. package/src/eth/builtin/internal/common.d.ts.map +0 -1
  137. package/src/eth/builtin/internal/common.js +0 -8
  138. package/src/eth/builtin/internal/common.js.map +0 -1
  139. package/src/eth/builtin/internal/eacaggregatorproxy-processor.d.ts +0 -373
  140. package/src/eth/builtin/internal/eacaggregatorproxy-processor.d.ts.map +0 -1
  141. package/src/eth/builtin/internal/eacaggregatorproxy-processor.js +0 -1355
  142. package/src/eth/builtin/internal/eacaggregatorproxy-processor.js.map +0 -1
  143. package/src/eth/builtin/internal/eacaggregatorproxy-test-utils.d.ts +0 -7
  144. package/src/eth/builtin/internal/eacaggregatorproxy-test-utils.d.ts.map +0 -1
  145. package/src/eth/builtin/internal/eacaggregatorproxy-test-utils.js +0 -55
  146. package/src/eth/builtin/internal/eacaggregatorproxy-test-utils.js.map +0 -1
  147. package/src/eth/builtin/internal/erc1155-processor.d.ts +0 -173
  148. package/src/eth/builtin/internal/erc1155-processor.d.ts.map +0 -1
  149. package/src/eth/builtin/internal/erc1155-processor.js +0 -596
  150. package/src/eth/builtin/internal/erc1155-processor.js.map +0 -1
  151. package/src/eth/builtin/internal/erc1155-test-utils.d.ts +0 -7
  152. package/src/eth/builtin/internal/erc1155-test-utils.d.ts.map +0 -1
  153. package/src/eth/builtin/internal/erc1155-test-utils.js +0 -55
  154. package/src/eth/builtin/internal/erc1155-test-utils.js.map +0 -1
  155. package/src/eth/builtin/internal/erc20-processor.d.ts +0 -244
  156. package/src/eth/builtin/internal/erc20-processor.d.ts.map +0 -1
  157. package/src/eth/builtin/internal/erc20-processor.js +0 -1109
  158. package/src/eth/builtin/internal/erc20-processor.js.map +0 -1
  159. package/src/eth/builtin/internal/erc20-test-utils.d.ts +0 -6
  160. package/src/eth/builtin/internal/erc20-test-utils.d.ts.map +0 -1
  161. package/src/eth/builtin/internal/erc20-test-utils.js +0 -44
  162. package/src/eth/builtin/internal/erc20-test-utils.js.map +0 -1
  163. package/src/eth/builtin/internal/erc20bytes-processor.d.ts +0 -144
  164. package/src/eth/builtin/internal/erc20bytes-processor.d.ts.map +0 -1
  165. package/src/eth/builtin/internal/erc20bytes-processor.js +0 -594
  166. package/src/eth/builtin/internal/erc20bytes-processor.js.map +0 -1
  167. package/src/eth/builtin/internal/erc20bytes-test-utils.d.ts +0 -5
  168. package/src/eth/builtin/internal/erc20bytes-test-utils.d.ts.map +0 -1
  169. package/src/eth/builtin/internal/erc20bytes-test-utils.js +0 -33
  170. package/src/eth/builtin/internal/erc20bytes-test-utils.js.map +0 -1
  171. package/src/eth/builtin/internal/erc721-processor.d.ts +0 -215
  172. package/src/eth/builtin/internal/erc721-processor.d.ts.map +0 -1
  173. package/src/eth/builtin/internal/erc721-processor.js +0 -895
  174. package/src/eth/builtin/internal/erc721-processor.js.map +0 -1
  175. package/src/eth/builtin/internal/erc721-test-utils.d.ts +0 -6
  176. package/src/eth/builtin/internal/erc721-test-utils.d.ts.map +0 -1
  177. package/src/eth/builtin/internal/erc721-test-utils.js +0 -44
  178. package/src/eth/builtin/internal/erc721-test-utils.js.map +0 -1
  179. package/src/eth/builtin/internal/factories/EACAggregatorProxy__factory.d.ts +0 -400
  180. package/src/eth/builtin/internal/factories/EACAggregatorProxy__factory.d.ts.map +0 -1
  181. package/src/eth/builtin/internal/factories/EACAggregatorProxy__factory.js +0 -524
  182. package/src/eth/builtin/internal/factories/EACAggregatorProxy__factory.js.map +0 -1
  183. package/src/eth/builtin/internal/factories/ERC1155__factory.d.ts +0 -251
  184. package/src/eth/builtin/internal/factories/ERC1155__factory.d.ts.map +0 -1
  185. package/src/eth/builtin/internal/factories/ERC1155__factory.js +0 -329
  186. package/src/eth/builtin/internal/factories/ERC1155__factory.js.map +0 -1
  187. package/src/eth/builtin/internal/factories/ERC20Bytes__factory.d.ts +0 -185
  188. package/src/eth/builtin/internal/factories/ERC20Bytes__factory.d.ts.map +0 -1
  189. package/src/eth/builtin/internal/factories/ERC20Bytes__factory.js +0 -251
  190. package/src/eth/builtin/internal/factories/ERC20Bytes__factory.js.map +0 -1
  191. package/src/eth/builtin/internal/factories/ERC20__factory.d.ts +0 -303
  192. package/src/eth/builtin/internal/factories/ERC20__factory.d.ts.map +0 -1
  193. package/src/eth/builtin/internal/factories/ERC20__factory.js +0 -401
  194. package/src/eth/builtin/internal/factories/ERC20__factory.js.map +0 -1
  195. package/src/eth/builtin/internal/factories/ERC721__factory.d.ts +0 -273
  196. package/src/eth/builtin/internal/factories/ERC721__factory.d.ts.map +0 -1
  197. package/src/eth/builtin/internal/factories/ERC721__factory.js +0 -361
  198. package/src/eth/builtin/internal/factories/ERC721__factory.js.map +0 -1
  199. package/src/eth/builtin/internal/factories/WETH9__factory.d.ts +0 -220
  200. package/src/eth/builtin/internal/factories/WETH9__factory.d.ts.map +0 -1
  201. package/src/eth/builtin/internal/factories/WETH9__factory.js +0 -294
  202. package/src/eth/builtin/internal/factories/WETH9__factory.js.map +0 -1
  203. package/src/eth/builtin/internal/factories/index.d.ts +0 -7
  204. package/src/eth/builtin/internal/factories/index.d.ts.map +0 -1
  205. package/src/eth/builtin/internal/factories/index.js +0 -10
  206. package/src/eth/builtin/internal/factories/index.js.map +0 -1
  207. package/src/eth/builtin/internal/index.d.ts +0 -14
  208. package/src/eth/builtin/internal/index.d.ts.map +0 -1
  209. package/src/eth/builtin/internal/index.js +0 -8
  210. package/src/eth/builtin/internal/index.js.map +0 -1
  211. package/src/eth/builtin/internal/weth9-processor.d.ts +0 -172
  212. package/src/eth/builtin/internal/weth9-processor.d.ts.map +0 -1
  213. package/src/eth/builtin/internal/weth9-processor.js +0 -729
  214. package/src/eth/builtin/internal/weth9-processor.js.map +0 -1
  215. package/src/eth/builtin/internal/weth9-test-utils.d.ts +0 -7
  216. package/src/eth/builtin/internal/weth9-test-utils.d.ts.map +0 -1
  217. package/src/eth/builtin/internal/weth9-test-utils.js +0 -55
  218. package/src/eth/builtin/internal/weth9-test-utils.js.map +0 -1
  219. package/src/eth/builtin/weth9.d.ts +0 -5
  220. package/src/eth/builtin/weth9.d.ts.map +0 -1
  221. package/src/eth/builtin/weth9.js +0 -8
  222. package/src/eth/builtin/weth9.js.map +0 -1
  223. package/src/solana/builtin/index.d.ts +0 -2
  224. package/src/solana/builtin/index.d.ts.map +0 -1
  225. package/src/solana/builtin/index.js +0 -2
  226. package/src/solana/builtin/index.js.map +0 -1
  227. package/src/solana/builtin/spl-token-processor.d.ts +0 -40
  228. package/src/solana/builtin/spl-token-processor.d.ts.map +0 -1
  229. package/src/solana/builtin/spl-token-processor.js +0 -254
  230. package/src/solana/builtin/spl-token-processor.js.map +0 -1
  231. package/src/solana/builtin/types.d.ts +0 -428
  232. package/src/solana/builtin/types.d.ts.map +0 -1
  233. package/src/solana/builtin/types.js +0 -201
  234. package/src/solana/builtin/types.js.map +0 -1
  235. package/src/sui/builtin/0x1.d.ts +0 -114
  236. package/src/sui/builtin/0x1.d.ts.map +0 -1
  237. package/src/sui/builtin/0x1.js +0 -159
  238. package/src/sui/builtin/0x1.js.map +0 -1
  239. package/src/sui/builtin/0x2.d.ts +0 -1250
  240. package/src/sui/builtin/0x2.d.ts.map +0 -1
  241. package/src/sui/builtin/0x2.js +0 -1511
  242. package/src/sui/builtin/0x2.js.map +0 -1
  243. package/src/sui/builtin/0x3.d.ts +0 -774
  244. package/src/sui/builtin/0x3.d.ts.map +0 -1
  245. package/src/sui/builtin/0x3.js +0 -720
  246. package/src/sui/builtin/0x3.js.map +0 -1
  247. package/src/sui/builtin/index.d.ts +0 -4
  248. package/src/sui/builtin/index.d.ts.map +0 -1
  249. package/src/sui/builtin/index.js +0 -7
  250. package/src/sui/builtin/index.js.map +0 -1
@@ -1,460 +0,0 @@
1
- import { createRequire as createRequireSdkShim } from 'module'; const require = createRequireSdkShim(import.meta.url);
2
- import {
3
- getHandlerName,
4
- proxyProcessor
5
- } from "./chunk-43HP4DQZ.js";
6
- import {
7
- BTCTransactionFilter_Condition,
8
- BTCTransactionFilter_Filter,
9
- BTCTransactionFilter_Filters,
10
- BTCTransactionFilter_VOutFilter,
11
- BTCTransactionFilter_VinFilter,
12
- BaseContext,
13
- ContractConfig,
14
- HandlerType,
15
- TemplateInstanceState,
16
- normalizeLabels,
17
- serializeRichValue
18
- } from "./chunk-2F2KNF4Z.js";
19
- import {
20
- BigDecimal
21
- } from "./chunk-J5UEW4B7.js";
22
- import {
23
- require_lib
24
- } from "./chunk-73SHERGU.js";
25
- import {
26
- __name,
27
- __toESM
28
- } from "./chunk-R7PMHHKJ.js";
29
-
30
- // src/btc/types.ts
31
- var BTCContext = class extends BaseContext {
32
- constructor(chainId, name, tx, address) {
33
- super({});
34
- this.chainId = chainId;
35
- this.name = name;
36
- this.tx = tx;
37
- this.address = address;
38
- }
39
- static {
40
- __name(this, "BTCContext");
41
- }
42
- getMetaDataInternal(name, labels) {
43
- return {
44
- address: this.address,
45
- contractName: this.name,
46
- blockNumber: BigInt(this.tx.blockheight ?? 0),
47
- transactionIndex: 0,
48
- transactionHash: this.tx.txid,
49
- chainId: this.getChainId(),
50
- name,
51
- logIndex: 0,
52
- labels: normalizeLabels(labels)
53
- };
54
- }
55
- getChainId() {
56
- return this.chainId;
57
- }
58
- };
59
- var BTCBlockContext = class extends BaseContext {
60
- constructor(chainId, name, block, address) {
61
- super({});
62
- this.chainId = chainId;
63
- this.name = name;
64
- this.block = block;
65
- this.address = address;
66
- }
67
- static {
68
- __name(this, "BTCBlockContext");
69
- }
70
- getMetaDataInternal(name, labels) {
71
- return {
72
- address: this.address ?? "",
73
- contractName: this.name,
74
- blockNumber: BigInt(this.block.height ?? 0),
75
- transactionIndex: 0,
76
- transactionHash: "",
77
- chainId: this.getChainId(),
78
- name,
79
- logIndex: 0,
80
- labels: normalizeLabels(labels)
81
- };
82
- }
83
- getChainId() {
84
- return this.chainId;
85
- }
86
- };
87
- import("node:process").then((p) => p.stdout.write(""));
88
-
89
- // src/btc/btc-processor.ts
90
- import { ListStateStorage } from "@sentio/runtime";
91
- var import_nice_grpc = __toESM(require_lib(), 1);
92
- var BTCProcessorState = class _BTCProcessorState extends ListStateStorage {
93
- static {
94
- __name(this, "BTCProcessorState");
95
- }
96
- static INSTANCE = new _BTCProcessorState();
97
- };
98
- var BTCProcessor = class _BTCProcessor {
99
- constructor(config) {
100
- this.config = config;
101
- return proxyProcessor(this);
102
- }
103
- static {
104
- __name(this, "BTCProcessor");
105
- }
106
- callHandlers = [];
107
- blockHandlers = [];
108
- static bind(config) {
109
- const processor = new _BTCProcessor(config);
110
- BTCProcessorState.INSTANCE.addValue(processor);
111
- return processor;
112
- }
113
- onTransaction(handler, filter) {
114
- const callHandler = {
115
- handlerName: getHandlerName(),
116
- handler: /* @__PURE__ */ __name(async (call) => {
117
- const tx = call.transaction;
118
- const ctx = new BTCContext(
119
- this.config.chainId,
120
- this.config.name ?? this.config.address ?? "",
121
- tx,
122
- this.config.address ?? tx.vout?.[0]?.scriptPubKey?.address
123
- );
124
- await handler(tx, ctx);
125
- return ctx.stopAndGetResult();
126
- }, "handler"),
127
- filter
128
- };
129
- this.callHandlers.push(callHandler);
130
- return this;
131
- }
132
- onInterval(handler, timeInterval, blockInterval, fetchConfig) {
133
- if (timeInterval) {
134
- if (timeInterval.backfillInterval < timeInterval.recentInterval) {
135
- timeInterval.backfillInterval = timeInterval.recentInterval;
136
- }
137
- }
138
- const processor = this;
139
- this.blockHandlers.push({
140
- blockInterval,
141
- timeIntervalInMinutes: timeInterval,
142
- handlerName: getHandlerName(),
143
- handler: /* @__PURE__ */ __name(async function(data) {
144
- const header = data.block;
145
- if (!header) {
146
- throw new import_nice_grpc.ServerError(import_nice_grpc.Status.INVALID_ARGUMENT, "Block is empty");
147
- }
148
- const block = {
149
- ...header
150
- };
151
- if (fetchConfig?.getTransactions) {
152
- block.tx = header.rawtx?.map((tx) => tx);
153
- }
154
- const ctx = new BTCBlockContext(
155
- processor.config.chainId,
156
- processor.config.name ?? processor.config.address ?? "",
157
- block,
158
- processor.config.address
159
- );
160
- await handler(block, ctx);
161
- return ctx.stopAndGetResult();
162
- }, "handler"),
163
- fetchConfig
164
- });
165
- return this;
166
- }
167
- onBlockInterval(handler, blockInterval = 250, backfillBlockInterval = 1e3, fetchConfig) {
168
- return this.onInterval(
169
- handler,
170
- void 0,
171
- {
172
- recentInterval: blockInterval,
173
- backfillInterval: backfillBlockInterval
174
- },
175
- fetchConfig
176
- );
177
- }
178
- onTimeInterval(handler, timeIntervalInMinutes = 60, backfillTimeIntervalInMinutes = 240, fetchConfig) {
179
- return this.onInterval(
180
- handler,
181
- { recentInterval: timeIntervalInMinutes, backfillInterval: backfillTimeIntervalInMinutes },
182
- void 0,
183
- fetchConfig
184
- );
185
- }
186
- };
187
- import("node:process").then((p) => p.stdout.write(""));
188
-
189
- // src/btc/filter.ts
190
- function toVinFilter(inputFilter) {
191
- if (inputFilter) {
192
- const ret = BTCTransactionFilter_VinFilter.create();
193
- const filters = [];
194
- const vouts = [];
195
- const txs = [];
196
- for (const f of Array.isArray(inputFilter) ? inputFilter : [inputFilter]) {
197
- const { preVOut, preTransaction, ...rest } = f;
198
- filters.push(rest);
199
- if (preVOut) {
200
- vouts.push(preVOut);
201
- }
202
- if (preTransaction) {
203
- txs.push(preTransaction);
204
- }
205
- }
206
- ret.filters = BTCTransactionFilter_Filters.create({
207
- filters: convertFilters(filters)
208
- });
209
- if (vouts.length > 0) {
210
- const voutFilters = convertFilters(vouts);
211
- if (voutFilters && voutFilters.length > 0) {
212
- ret.preVOut = voutFilters[0];
213
- }
214
- }
215
- if (txs.length > 0) {
216
- ret.preTransaction = filters2Proto(txs)?.[0];
217
- }
218
- return ret;
219
- }
220
- return void 0;
221
- }
222
- __name(toVinFilter, "toVinFilter");
223
- function toVOutFilter(outputFilter) {
224
- if (outputFilter) {
225
- const ret = BTCTransactionFilter_VOutFilter.create();
226
- const filters = Array.isArray(outputFilter) ? outputFilter : [outputFilter];
227
- ret.filters = BTCTransactionFilter_Filters.create({
228
- filters: convertFilters(filters)
229
- });
230
- return ret;
231
- }
232
- return void 0;
233
- }
234
- __name(toVOutFilter, "toVOutFilter");
235
- function filters2Proto(filter) {
236
- const filters = Array.isArray(filter) ? filter : [filter];
237
- return filters.map((f) => {
238
- return {
239
- filter: convertFilters(f.filter),
240
- inputFilter: toVinFilter(f.inputFilter),
241
- outputFilter: toVOutFilter(f.outputFilter)
242
- };
243
- });
244
- }
245
- __name(filters2Proto, "filters2Proto");
246
- function toCondition(value) {
247
- const ret = BTCTransactionFilter_Condition.create();
248
- if (value instanceof Date) {
249
- ret.eq = serializeRichValue(value);
250
- }
251
- if (typeof value === "number") {
252
- ret.eq = serializeRichValue(value);
253
- }
254
- if (typeof value === "string") {
255
- ret.eq = serializeRichValue(value);
256
- }
257
- if (value instanceof BigDecimal) {
258
- ret.eq = serializeRichValue(value);
259
- }
260
- if (typeof value === "bigint") {
261
- ret.eq = serializeRichValue(value);
262
- }
263
- if (typeof value === "boolean") {
264
- ret.eq = serializeRichValue(value);
265
- }
266
- if (Array.isArray(value)) {
267
- ret.in = { values: value.map((v) => serializeRichValue(v)) };
268
- }
269
- for (const [k, v] of Object.entries(value)) {
270
- switch (k) {
271
- case "prefix":
272
- case "contains":
273
- case "notContains":
274
- ret[k] = v.toString();
275
- break;
276
- case "length":
277
- ret["lengthEq"] = v;
278
- break;
279
- case "lengthGt":
280
- case "lengthLt":
281
- ret[k] = v;
282
- break;
283
- case "hasAny":
284
- case "hasAll":
285
- case "in":
286
- ret[k] = { values: v.map((v2) => serializeRichValue(v2)) };
287
- break;
288
- case "eq":
289
- case "gt":
290
- case "gte":
291
- case "lt":
292
- case "lte":
293
- case "ne":
294
- ret[k] = serializeRichValue(v);
295
- break;
296
- default:
297
- throw new Error("Unknown condition op: " + k);
298
- }
299
- }
300
- return ret;
301
- }
302
- __name(toCondition, "toCondition");
303
- function convertFilters(filters) {
304
- if (filters && filters.length > 0) {
305
- const ret = [];
306
- for (const filter of filters) {
307
- const f = BTCTransactionFilter_Filter.create();
308
- for (const [key, value] of Object.entries(filter)) {
309
- f.conditions[key] = toCondition(value);
310
- }
311
- ret.push(f);
312
- }
313
- return ret;
314
- }
315
- return [];
316
- }
317
- __name(convertFilters, "convertFilters");
318
- import("node:process").then((p) => p.stdout.write(""));
319
-
320
- // src/btc/btc-plugin.ts
321
- import { errorString, GLOBAL_CONFIG, mergeProcessResults, Plugin, PluginManager, USER_PROCESSOR } from "@sentio/runtime";
322
- var import_nice_grpc2 = __toESM(require_lib(), 1);
323
- var BTCPlugin = class extends Plugin {
324
- static {
325
- __name(this, "BTCPlugin");
326
- }
327
- name = "BTCPlugin";
328
- handlers = {
329
- txHandlers: [],
330
- blockHandlers: []
331
- };
332
- async configure(config) {
333
- const handlers = {
334
- txHandlers: [],
335
- blockHandlers: []
336
- };
337
- for (const processor of BTCProcessorState.INSTANCE.getValues()) {
338
- const contractConfig = ContractConfig.fromPartial({
339
- processorType: USER_PROCESSOR,
340
- contract: {
341
- name: processor.config.name,
342
- chainId: processor.config.chainId.toString(),
343
- address: processor.config.address || "*",
344
- abi: ""
345
- },
346
- startBlock: processor.config.startBlock,
347
- endBlock: processor.config.endBlock
348
- });
349
- for (const callHandler of processor.callHandlers) {
350
- const handlerId = handlers.txHandlers.push(callHandler.handler) - 1;
351
- const handlerName = callHandler.handlerName;
352
- if (callHandler.filter) {
353
- contractConfig.btcTransactionConfigs.push({
354
- filters: filters2Proto(callHandler.filter),
355
- handlerId,
356
- handlerName
357
- });
358
- } else if (contractConfig.contract?.address != "*") {
359
- contractConfig.btcTransactionConfigs.push({
360
- filters: filters2Proto({
361
- outputFilter: {
362
- script_address: processor.config.address
363
- }
364
- }),
365
- handlerId,
366
- handlerName
367
- });
368
- }
369
- }
370
- for (const blockHandler of processor.blockHandlers) {
371
- const handlerId = handlers.blockHandlers.push(blockHandler.handler) - 1;
372
- contractConfig.intervalConfigs.push({
373
- slot: 0,
374
- slotInterval: blockHandler.blockInterval,
375
- minutes: 0,
376
- minutesInterval: blockHandler.timeIntervalInMinutes,
377
- handlerId,
378
- handlerName: blockHandler.handlerName,
379
- fetchConfig: {
380
- transaction: blockHandler.fetchConfig?.getTransactions ?? false,
381
- trace: false,
382
- block: true,
383
- transactionReceipt: false,
384
- transactionReceiptLogs: false
385
- }
386
- });
387
- }
388
- config.contractConfigs.push(contractConfig);
389
- }
390
- this.handlers = handlers;
391
- }
392
- supportedHandlers = [HandlerType.BTC_TRANSACTION, HandlerType.BTC_BLOCK];
393
- processBinding(request) {
394
- switch (request.handlerType) {
395
- case HandlerType.BTC_TRANSACTION:
396
- return this.processTransaction(request);
397
- case HandlerType.BTC_BLOCK:
398
- return this.processBlock(request);
399
- default:
400
- throw new import_nice_grpc2.ServerError(import_nice_grpc2.Status.INVALID_ARGUMENT, "No handle type registered " + request.handlerType);
401
- }
402
- }
403
- async start(request) {
404
- }
405
- stateDiff(config) {
406
- return TemplateInstanceState.INSTANCE.getValues().length !== config.templateInstances.length;
407
- }
408
- async processTransaction(binding) {
409
- if (!binding.data?.btcTransaction) {
410
- throw new import_nice_grpc2.ServerError(import_nice_grpc2.Status.INVALID_ARGUMENT, "BTCEvents can't be null");
411
- }
412
- const promises = [];
413
- const result = binding.data?.btcTransaction;
414
- for (const handlerId of binding.handlerIds) {
415
- const promise = this.handlers.txHandlers[handlerId](binding.data?.btcTransaction).catch((e) => {
416
- throw new import_nice_grpc2.ServerError(
417
- import_nice_grpc2.Status.INTERNAL,
418
- "error processing transaction: " + JSON.stringify(result) + "\n" + errorString(e)
419
- );
420
- });
421
- if (GLOBAL_CONFIG.execution.sequential) {
422
- await promise;
423
- }
424
- promises.push(promise);
425
- }
426
- return mergeProcessResults(await Promise.all(promises));
427
- }
428
- async processBlock(request) {
429
- if (!request.data?.btcBlock) {
430
- throw new import_nice_grpc2.ServerError(import_nice_grpc2.Status.INVALID_ARGUMENT, "Block can't be empty");
431
- }
432
- const block = request.data.btcBlock;
433
- const promises = [];
434
- for (const handlerId of request.handlerIds) {
435
- const promise = this.handlers.blockHandlers[handlerId](block).catch((e) => {
436
- throw new import_nice_grpc2.ServerError(
437
- import_nice_grpc2.Status.INTERNAL,
438
- "error processing block: " + JSON.stringify(block) + "\n" + errorString(e)
439
- );
440
- });
441
- if (GLOBAL_CONFIG.execution.sequential) {
442
- await promise;
443
- }
444
- promises.push(promise);
445
- }
446
- return mergeProcessResults(await Promise.all(promises));
447
- }
448
- };
449
- PluginManager.INSTANCE.register(new BTCPlugin());
450
- import("node:process").then((p) => p.stdout.write(""));
451
-
452
- export {
453
- BTCContext,
454
- BTCBlockContext,
455
- BTCProcessorState,
456
- BTCProcessor,
457
- filters2Proto,
458
- BTCPlugin
459
- };
460
- //# sourceMappingURL=chunk-LPSNAS2G.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/btc/types.ts","../src/btc/btc-processor.ts","../src/btc/filter.ts","../src/btc/btc-plugin.ts"],"sourcesContent":["import { BaseContext, Labels, normalizeLabels } from '../core/index.js'\nimport { Data_BTCBlock, HandleInterval, ProcessResult, RecordMetaData } from '@sentio/protos'\nimport { ChainId } from '@sentio/chain'\n\nexport type Transaction = {\n txid: string\n hash: string\n txindex: number\n blockhash: string\n blockheight: number\n blocktime: number\n size: number\n vsize: number\n version: number\n locktime: number\n vin: Vin[]\n vout: Vout[]\n}\n\nexport type Vin = {\n vin_index: number\n coinbase?: string\n txid?: string\n vout?: number\n sequence: number\n witness?: string[]\n scriptSig: {\n asm: string\n hex: string\n }\n pre_vout?: Vout\n pre_transaction?: Transaction\n}\n\nexport type Vout = {\n value: number\n n: number\n scriptPubKey: {\n asm: string\n hex: string\n reqSigs: number\n type: string\n address: string\n }\n}\n\nexport type BTCBlock = {\n hash: string\n confirmations: number\n strippedsize: number\n size: number\n weight: number\n height: number\n version: number\n merkleroot: string\n tx?: Transaction[]\n time: number\n nonce: number\n bits: string\n difficulty: number\n previousblockhash: string\n nextblockhash: string\n}\n\nexport class BTCContext extends BaseContext {\n constructor(\n readonly chainId: string,\n readonly name: string,\n readonly tx: Transaction,\n readonly address: string\n ) {\n super({})\n }\n\n protected getMetaDataInternal(name: string, labels: Labels): RecordMetaData {\n return {\n address: this.address,\n contractName: this.name,\n blockNumber: BigInt(this.tx.blockheight ?? 0),\n transactionIndex: 0,\n transactionHash: this.tx.txid,\n chainId: this.getChainId(),\n name: name,\n logIndex: 0,\n labels: normalizeLabels(labels)\n }\n }\n\n getChainId(): ChainId {\n return this.chainId as ChainId\n }\n}\n\nexport class BTCBlockContext extends BaseContext {\n constructor(\n readonly chainId: string,\n readonly name: string,\n readonly block: BTCBlock,\n readonly address?: string\n ) {\n super({})\n }\n\n protected getMetaDataInternal(name: string, labels: Labels): RecordMetaData {\n return {\n address: this.address ?? '',\n contractName: this.name,\n blockNumber: BigInt(this.block.height ?? 0),\n transactionIndex: 0,\n transactionHash: '',\n chainId: this.getChainId(),\n name: name,\n logIndex: 0,\n labels: normalizeLabels(labels)\n }\n }\n\n getChainId(): ChainId {\n return this.chainId as ChainId\n }\n}\n\nexport type BlockHandler = {\n blockInterval?: HandleInterval\n timeIntervalInMinutes?: HandleInterval\n handler: (block: Data_BTCBlock) => Promise<ProcessResult>\n handlerName: string\n fetchConfig?: BTCOnIntervalFetchConfig\n}\n\nexport type BTCOnIntervalFetchConfig = {\n getTransactions: boolean\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import { ListStateStorage } from '@sentio/runtime'\nimport { BlockHandler, BTCBlock, BTCBlockContext, BTCContext, BTCOnIntervalFetchConfig, Transaction } from './types.js'\nimport { Data_BTCBlock, Data_BTCTransaction, HandleInterval, ProcessResult } from '@sentio/protos'\nimport { TransactionFilters } from './filter.js'\nimport { PromiseOrVoid } from '../core/index.js'\nimport { ServerError, Status } from 'nice-grpc'\nimport { getHandlerName, proxyProcessor } from '../utils/metrics.js'\n\nexport class BTCProcessorState extends ListStateStorage<BTCProcessor> {\n static INSTANCE = new BTCProcessorState()\n}\n\nexport class BTCProcessor {\n callHandlers: CallHandler<Data_BTCTransaction>[] = []\n blockHandlers: BlockHandler[] = []\n\n constructor(readonly config: BTCProcessorConfig) {\n return proxyProcessor(this)\n }\n\n static bind(config: BTCProcessorConfig): BTCProcessor {\n const processor = new BTCProcessor(config)\n BTCProcessorState.INSTANCE.addValue(processor)\n return processor\n }\n\n public onTransaction(\n handler: (transaction: Transaction, ctx: BTCContext) => void | Promise<void>,\n filter?: TransactionFilters\n ) {\n const callHandler = {\n handlerName: getHandlerName(),\n handler: async (call: Data_BTCTransaction) => {\n const tx = call.transaction as Transaction\n\n const ctx = new BTCContext(\n this.config.chainId,\n this.config.name ?? this.config.address ?? '',\n tx,\n this.config.address ?? tx.vout?.[0]?.scriptPubKey?.address\n )\n await handler(tx, ctx)\n return ctx.stopAndGetResult()\n },\n filter\n }\n this.callHandlers.push(callHandler)\n return this\n }\n\n public onInterval(\n handler: (block: BTCBlock, ctx: BTCBlockContext) => PromiseOrVoid,\n timeInterval: HandleInterval | undefined,\n blockInterval: HandleInterval | undefined,\n fetchConfig?: BTCOnIntervalFetchConfig\n ): this {\n if (timeInterval) {\n if (timeInterval.backfillInterval < timeInterval.recentInterval) {\n timeInterval.backfillInterval = timeInterval.recentInterval\n }\n }\n\n const processor = this\n\n this.blockHandlers.push({\n blockInterval,\n timeIntervalInMinutes: timeInterval,\n handlerName: getHandlerName(),\n handler: async function (data: Data_BTCBlock) {\n const header = data.block\n if (!header) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'Block is empty')\n }\n\n const block = {\n ...header\n } as BTCBlock\n if (fetchConfig?.getTransactions) {\n block.tx = header.rawtx?.map((tx: any) => tx as Transaction)\n }\n\n const ctx = new BTCBlockContext(\n processor.config.chainId,\n processor.config.name ?? processor.config.address ?? '',\n block,\n processor.config.address\n )\n await handler(block, ctx)\n return ctx.stopAndGetResult()\n },\n fetchConfig\n })\n return this\n }\n\n public onBlockInterval(\n handler: (block: BTCBlock, ctx: BTCBlockContext) => PromiseOrVoid,\n blockInterval = 250,\n backfillBlockInterval = 1000,\n fetchConfig?: BTCOnIntervalFetchConfig\n ): this {\n return this.onInterval(\n handler,\n undefined,\n {\n recentInterval: blockInterval,\n backfillInterval: backfillBlockInterval\n },\n fetchConfig\n )\n }\n\n public onTimeInterval(\n handler: (block: BTCBlock, ctx: BTCBlockContext) => PromiseOrVoid,\n timeIntervalInMinutes = 60,\n backfillTimeIntervalInMinutes = 240,\n fetchConfig?: BTCOnIntervalFetchConfig\n ): this {\n return this.onInterval(\n handler,\n { recentInterval: timeIntervalInMinutes, backfillInterval: backfillTimeIntervalInMinutes },\n undefined,\n fetchConfig\n )\n }\n}\n\ninterface BTCProcessorConfig {\n chainId: string\n name?: string\n address?: string\n startBlock?: bigint\n endBlock?: bigint\n}\n\nexport type CallHandler<T> = {\n handlerName: string\n handler: (call: T) => Promise<ProcessResult>\n filter?: TransactionFilters\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import {\n BTCTransactionFilter,\n BTCTransactionFilter_Condition,\n BTCTransactionFilter_Filter,\n BTCTransactionFilter_Filters,\n BTCTransactionFilter_VinFilter,\n BTCTransactionFilter_VOutFilter\n} from '@sentio/protos'\nimport { serializeRichValue } from '../store/util.js'\nimport { BigDecimal } from '@sentio/bigdecimal'\nimport { Transaction, Vin, Vout } from './types.js'\n\nexport type TransactionFields = keyof Omit<Transaction, 'vin' | 'vout'>\n\nexport type VinFields = keyof Omit<Vin, 'pre_vout' | 'pre_transaction' | 'scriptSig'> | 'script_asm' | 'script_hex'\n\nexport type VOutFields =\n | keyof Omit<Vout, 'scriptPubKey'>\n | 'script_asm'\n | 'script_hex'\n | 'script_type'\n | 'script_address'\n\nexport type Filter<F extends string> = {\n [K in F]?: Condition | Comparable\n}\n\nexport type Condition = {\n eq?: Comparable\n gt?: Comparable\n gte?: Comparable\n lt?: Comparable\n lte?: Comparable\n ne?: Comparable\n // string has the prefix\n prefix?: string\n // string contains\n contains?: string\n notContains?: string\n length?: number\n lengthGt?: number\n lengthLt?: number\n // array contains any of the values\n hasAny?: Array<Comparable>\n // array contains all the values\n hasAll?: Array<Comparable>\n in?: Array<Comparable>\n}\n\nexport type Filters<T extends string> = Filter<T> | Filter<T>[]\n\nexport type VinFilter = Filter<VinFields> & {\n preVOut?: Filter<VOutFields>\n preTransaction?: {\n filter?: Array<Filter<TransactionFields>>\n outputFilter?: Filters<VOutFields>\n // can't have inputFilter here, we can only support one level of nesting\n }\n}\n\nexport type VOutFilter = Filter<VOutFields>\n\nexport type TransactionFilter = {\n inputFilter?: VinFilter | VinFilter[]\n outputFilter?: VOutFilter | VOutFilter[]\n filter?: Array<Filter<TransactionFields>>\n}\n\nexport type Comparable = number | BigDecimal | bigint | Date | string | boolean\n\nexport type TransactionFilters = TransactionFilter | TransactionFilter[]\n\nfunction toVinFilter(inputFilter?: VinFilter | VinFilter[]): BTCTransactionFilter_VinFilter | undefined {\n if (inputFilter) {\n const ret = BTCTransactionFilter_VinFilter.create()\n const filters = []\n const vouts: Filter<VOutFields>[] = []\n const txs: TransactionFilters = []\n\n for (const f of Array.isArray(inputFilter) ? inputFilter : [inputFilter]) {\n const { preVOut, preTransaction, ...rest } = f\n filters.push(rest)\n if (preVOut) {\n vouts.push(preVOut)\n }\n if (preTransaction) {\n txs.push(preTransaction)\n }\n }\n ret.filters = BTCTransactionFilter_Filters.create({\n filters: convertFilters(filters)\n })\n\n if (vouts.length > 0) {\n const voutFilters = convertFilters(vouts)\n if (voutFilters && voutFilters.length > 0) {\n ret.preVOut = voutFilters[0]\n }\n }\n if (txs.length > 0) {\n ret.preTransaction = filters2Proto(txs)?.[0]\n }\n\n return ret\n }\n\n return undefined\n}\n\nfunction toVOutFilter(outputFilter?: VOutFilter | VOutFilter[]): BTCTransactionFilter_VOutFilter | undefined {\n if (outputFilter) {\n const ret = BTCTransactionFilter_VOutFilter.create()\n const filters = Array.isArray(outputFilter) ? outputFilter : ([outputFilter] as Filter<VOutFields>[])\n ret.filters = BTCTransactionFilter_Filters.create({\n filters: convertFilters(filters)\n })\n\n return ret\n }\n return undefined\n}\n\nexport function filters2Proto(filter: TransactionFilters): BTCTransactionFilter[] {\n const filters = Array.isArray(filter) ? filter : [filter]\n return filters.map((f) => {\n return {\n filter: convertFilters(f.filter),\n inputFilter: toVinFilter(f.inputFilter),\n outputFilter: toVOutFilter(f.outputFilter)\n } as BTCTransactionFilter\n })\n}\n\nfunction toCondition(value: Condition | Comparable): BTCTransactionFilter_Condition {\n const ret: BTCTransactionFilter_Condition = BTCTransactionFilter_Condition.create()\n if (value instanceof Date) {\n ret.eq = serializeRichValue(value)\n }\n if (typeof value === 'number') {\n ret.eq = serializeRichValue(value)\n }\n if (typeof value === 'string') {\n ret.eq = serializeRichValue(value)\n }\n if (value instanceof BigDecimal) {\n ret.eq = serializeRichValue(value)\n }\n if (typeof value === 'bigint') {\n ret.eq = serializeRichValue(value)\n }\n if (typeof value === 'boolean') {\n ret.eq = serializeRichValue(value)\n }\n if (Array.isArray(value)) {\n ret.in = { values: value.map((v) => serializeRichValue(v)) }\n }\n\n for (const [k, v] of Object.entries(value)) {\n switch (k) {\n case 'prefix':\n case 'contains':\n case 'notContains':\n ret[k] = v.toString()\n break\n case 'length':\n ret['lengthEq'] = v\n break\n case 'lengthGt':\n case 'lengthLt':\n ret[k] = v\n break\n case 'hasAny':\n case 'hasAll':\n case 'in':\n ret[k] = { values: v.map((v: any) => serializeRichValue(v)) }\n break\n case 'eq':\n case 'gt':\n case 'gte':\n case 'lt':\n case 'lte':\n case 'ne':\n ret[k] = serializeRichValue(v)\n break\n default:\n throw new Error('Unknown condition op: ' + k)\n }\n }\n\n return ret\n}\n\nfunction convertFilters<T extends string>(filters?: Array<Filter<T>>): BTCTransactionFilter_Filter[] | undefined {\n if (filters && filters.length > 0) {\n const ret: BTCTransactionFilter_Filter[] = []\n for (const filter of filters) {\n const f: BTCTransactionFilter_Filter = BTCTransactionFilter_Filter.create()\n for (const [key, value] of Object.entries(filter)) {\n f.conditions[key] = toCondition(value as any)\n }\n ret.push(f)\n }\n return ret\n }\n return []\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import { errorString, GLOBAL_CONFIG, mergeProcessResults, Plugin, PluginManager, USER_PROCESSOR } from '@sentio/runtime'\nimport {\n ContractConfig,\n Data_BTCBlock,\n Data_BTCTransaction,\n DataBinding,\n HandlerType,\n ProcessConfigResponse,\n ProcessResult,\n StartRequest\n} from '@sentio/protos'\n\nimport { ServerError, Status } from 'nice-grpc'\nimport { TemplateInstanceState } from '../core/template.js'\nimport { BTCProcessorState } from './btc-processor.js'\nimport { filters2Proto, TransactionFilter } from './filter.js'\n\ninterface Handlers {\n txHandlers: ((trace: Data_BTCTransaction) => Promise<ProcessResult>)[]\n blockHandlers: ((trace: Data_BTCBlock) => Promise<ProcessResult>)[]\n}\n\nexport class BTCPlugin extends Plugin {\n name: string = 'BTCPlugin'\n handlers: Handlers = {\n txHandlers: [],\n blockHandlers: []\n }\n\n async configure(config: ProcessConfigResponse) {\n const handlers: Handlers = {\n txHandlers: [],\n blockHandlers: []\n }\n\n for (const processor of BTCProcessorState.INSTANCE.getValues()) {\n const contractConfig = ContractConfig.fromPartial({\n processorType: USER_PROCESSOR,\n contract: {\n name: processor.config.name,\n chainId: processor.config.chainId.toString(),\n address: processor.config.address || '*',\n abi: ''\n },\n startBlock: processor.config.startBlock,\n endBlock: processor.config.endBlock\n })\n for (const callHandler of processor.callHandlers) {\n const handlerId = handlers.txHandlers.push(callHandler.handler) - 1\n const handlerName = callHandler.handlerName\n\n if (callHandler.filter) {\n contractConfig.btcTransactionConfigs.push({\n filters: filters2Proto(callHandler.filter),\n handlerId,\n handlerName\n })\n } else if (contractConfig.contract?.address != '*') {\n contractConfig.btcTransactionConfigs.push({\n filters: filters2Proto({\n outputFilter: {\n script_address: processor.config.address\n }\n } as TransactionFilter),\n handlerId,\n handlerName\n })\n }\n }\n\n for (const blockHandler of processor.blockHandlers) {\n const handlerId = handlers.blockHandlers.push(blockHandler.handler) - 1\n contractConfig.intervalConfigs.push({\n slot: 0,\n slotInterval: blockHandler.blockInterval,\n minutes: 0,\n minutesInterval: blockHandler.timeIntervalInMinutes,\n handlerId,\n handlerName: blockHandler.handlerName,\n fetchConfig: {\n transaction: blockHandler.fetchConfig?.getTransactions ?? false,\n trace: false,\n block: true,\n transactionReceipt: false,\n transactionReceiptLogs: false\n }\n })\n }\n\n // Finish up a contract\n config.contractConfigs.push(contractConfig)\n }\n\n this.handlers = handlers\n }\n\n supportedHandlers = [HandlerType.BTC_TRANSACTION, HandlerType.BTC_BLOCK]\n\n processBinding(request: DataBinding): Promise<ProcessResult> {\n switch (request.handlerType) {\n case HandlerType.BTC_TRANSACTION:\n return this.processTransaction(request)\n case HandlerType.BTC_BLOCK:\n return this.processBlock(request)\n default:\n throw new ServerError(Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType)\n }\n }\n\n async start(request: StartRequest) {}\n\n stateDiff(config: ProcessConfigResponse): boolean {\n return TemplateInstanceState.INSTANCE.getValues().length !== config.templateInstances.length\n }\n\n async processTransaction(binding: DataBinding): Promise<ProcessResult> {\n if (!binding.data?.btcTransaction) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"BTCEvents can't be null\")\n }\n\n const promises: Promise<ProcessResult>[] = []\n\n const result = binding.data?.btcTransaction\n\n for (const handlerId of binding.handlerIds) {\n const promise = this.handlers.txHandlers[handlerId](binding.data?.btcTransaction).catch((e) => {\n throw new ServerError(\n Status.INTERNAL,\n 'error processing transaction: ' + JSON.stringify(result) + '\\n' + errorString(e)\n )\n })\n if (GLOBAL_CONFIG.execution.sequential) {\n await promise\n }\n promises.push(promise)\n }\n return mergeProcessResults(await Promise.all(promises))\n }\n\n private async processBlock(request: DataBinding) {\n if (!request.data?.btcBlock) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"Block can't be empty\")\n }\n\n const block = request.data.btcBlock\n\n const promises: Promise<ProcessResult>[] = []\n for (const handlerId of request.handlerIds) {\n const promise = this.handlers.blockHandlers[handlerId](block).catch((e) => {\n throw new ServerError(\n Status.INTERNAL,\n 'error processing block: ' + JSON.stringify(block) + '\\n' + errorString(e)\n )\n })\n if (GLOBAL_CONFIG.execution.sequential) {\n await promise\n }\n promises.push(promise)\n }\n return mergeProcessResults(await Promise.all(promises))\n }\n}\n\nPluginManager.INSTANCE.register(new BTCPlugin())\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));"],"mappings":"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","names":["v","import_nice_grpc"]}