@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.
- package/lib/core/template.d.ts +1 -5
- package/lib/core/template.d.ts.map +1 -1
- package/lib/core/template.js +1 -4
- package/lib/core/template.js.map +1 -1
- package/lib/store/store.d.ts +2 -2
- package/lib/store/store.d.ts.map +1 -1
- package/lib/store/store.js.map +1 -1
- package/package.json +3 -3
- package/src/core/template.ts +1 -6
- package/src/store/store.ts +2 -3
- package/lib/chunk-2F2KNF4Z.js +0 -71905
- package/lib/chunk-2F2KNF4Z.js.map +0 -1
- package/lib/chunk-43HP4DQZ.js +0 -47
- package/lib/chunk-43HP4DQZ.js.map +0 -1
- package/lib/chunk-4HPFNKDX.js +0 -6763
- package/lib/chunk-4HPFNKDX.js.map +0 -1
- package/lib/chunk-4OCWUYSJ.js +0 -898
- package/lib/chunk-4OCWUYSJ.js.map +0 -1
- package/lib/chunk-6UVWNOIX.js +0 -4207
- package/lib/chunk-6UVWNOIX.js.map +0 -1
- package/lib/chunk-73SHERGU.js +0 -23970
- package/lib/chunk-73SHERGU.js.map +0 -1
- package/lib/chunk-742S42NO.js +0 -1323
- package/lib/chunk-742S42NO.js.map +0 -1
- package/lib/chunk-7ECRTQD7.js +0 -26757
- package/lib/chunk-7ECRTQD7.js.map +0 -1
- package/lib/chunk-7IDGS56O.js +0 -5058
- package/lib/chunk-7IDGS56O.js.map +0 -1
- package/lib/chunk-7S6WQ4RL.js +0 -1069
- package/lib/chunk-7S6WQ4RL.js.map +0 -1
- package/lib/chunk-AZFMPZRN.js +0 -3613
- package/lib/chunk-AZFMPZRN.js.map +0 -1
- package/lib/chunk-BZCXYTDE.js +0 -1333
- package/lib/chunk-BZCXYTDE.js.map +0 -1
- package/lib/chunk-E2DS6WZF.js +0 -1690
- package/lib/chunk-E2DS6WZF.js.map +0 -1
- package/lib/chunk-GE6BRIGS.js +0 -1721
- package/lib/chunk-GE6BRIGS.js.map +0 -1
- package/lib/chunk-J3I3VNTV.js +0 -767
- package/lib/chunk-J3I3VNTV.js.map +0 -1
- package/lib/chunk-J3QOJ2RV.js +0 -661
- package/lib/chunk-J3QOJ2RV.js.map +0 -1
- package/lib/chunk-J5UEW4B7.js +0 -1351
- package/lib/chunk-J5UEW4B7.js.map +0 -1
- package/lib/chunk-LPSNAS2G.js +0 -460
- package/lib/chunk-LPSNAS2G.js.map +0 -1
- package/lib/chunk-LR232ZJV.js +0 -2593
- package/lib/chunk-LR232ZJV.js.map +0 -1
- package/lib/chunk-N36N7RXJ.js +0 -653
- package/lib/chunk-N36N7RXJ.js.map +0 -1
- package/lib/chunk-OJG2VJ5T.js +0 -7063
- package/lib/chunk-OJG2VJ5T.js.map +0 -1
- package/lib/chunk-ONBEMKI5.js +0 -323
- package/lib/chunk-ONBEMKI5.js.map +0 -1
- package/lib/chunk-PVX2LIM5.js +0 -205
- package/lib/chunk-PVX2LIM5.js.map +0 -1
- package/lib/chunk-R7PMHHKJ.js +0 -52
- package/lib/chunk-R7PMHHKJ.js.map +0 -1
- package/lib/chunk-RMT2JEWA.js +0 -7740
- package/lib/chunk-RMT2JEWA.js.map +0 -1
- package/lib/chunk-S6MJ3KIL.js +0 -27798
- package/lib/chunk-S6MJ3KIL.js.map +0 -1
- package/lib/chunk-UEFVZL4I.js +0 -199
- package/lib/chunk-UEFVZL4I.js.map +0 -1
- package/lib/chunk-UIBPOKNT.js +0 -945
- package/lib/chunk-UIBPOKNT.js.map +0 -1
- package/lib/chunk-ZR7UHHH2.js +0 -5
- package/lib/chunk-ZR7UHHH2.js.map +0 -1
- package/lib/multipart-parser-SQIYSR67.js +0 -368
- package/lib/multipart-parser-SQIYSR67.js.map +0 -1
- package/src/aptos/builtin/0x1.d.ts +0 -6451
- package/src/aptos/builtin/0x1.d.ts.map +0 -1
- package/src/aptos/builtin/0x1.js +0 -7138
- package/src/aptos/builtin/0x1.js.map +0 -1
- package/src/aptos/builtin/0x3.d.ts +0 -1122
- package/src/aptos/builtin/0x3.d.ts.map +0 -1
- package/src/aptos/builtin/0x3.js +0 -937
- package/src/aptos/builtin/0x3.js.map +0 -1
- package/src/aptos/builtin/0x4.d.ts +0 -551
- package/src/aptos/builtin/0x4.d.ts.map +0 -1
- package/src/aptos/builtin/0x4.js +0 -529
- package/src/aptos/builtin/0x4.js.map +0 -1
- package/src/aptos/builtin/index.d.ts +0 -4
- package/src/aptos/builtin/index.d.ts.map +0 -1
- package/src/aptos/builtin/index.js +0 -7
- package/src/aptos/builtin/index.js.map +0 -1
- package/src/eth/builtin/eacaggregatorproxy.d.ts +0 -5
- package/src/eth/builtin/eacaggregatorproxy.d.ts.map +0 -1
- package/src/eth/builtin/eacaggregatorproxy.js +0 -8
- package/src/eth/builtin/eacaggregatorproxy.js.map +0 -1
- package/src/eth/builtin/erc1155.d.ts +0 -5
- package/src/eth/builtin/erc1155.d.ts.map +0 -1
- package/src/eth/builtin/erc1155.js +0 -8
- package/src/eth/builtin/erc1155.js.map +0 -1
- package/src/eth/builtin/erc20.d.ts +0 -5
- package/src/eth/builtin/erc20.d.ts.map +0 -1
- package/src/eth/builtin/erc20.js +0 -8
- package/src/eth/builtin/erc20.js.map +0 -1
- package/src/eth/builtin/erc20bytes.d.ts +0 -5
- package/src/eth/builtin/erc20bytes.d.ts.map +0 -1
- package/src/eth/builtin/erc20bytes.js +0 -8
- package/src/eth/builtin/erc20bytes.js.map +0 -1
- package/src/eth/builtin/erc721.d.ts +0 -5
- package/src/eth/builtin/erc721.d.ts.map +0 -1
- package/src/eth/builtin/erc721.js +0 -8
- package/src/eth/builtin/erc721.js.map +0 -1
- package/src/eth/builtin/index.d.ts +0 -13
- package/src/eth/builtin/index.d.ts.map +0 -1
- package/src/eth/builtin/index.js +0 -16
- package/src/eth/builtin/index.js.map +0 -1
- package/src/eth/builtin/internal/EACAggregatorProxy.d.ts +0 -50
- package/src/eth/builtin/internal/EACAggregatorProxy.d.ts.map +0 -1
- package/src/eth/builtin/internal/EACAggregatorProxy.js +0 -2
- package/src/eth/builtin/internal/EACAggregatorProxy.js.map +0 -1
- package/src/eth/builtin/internal/ERC1155.d.ts +0 -57
- package/src/eth/builtin/internal/ERC1155.d.ts.map +0 -1
- package/src/eth/builtin/internal/ERC1155.js +0 -2
- package/src/eth/builtin/internal/ERC1155.js.map +0 -1
- package/src/eth/builtin/internal/ERC20.d.ts +0 -41
- package/src/eth/builtin/internal/ERC20.d.ts.map +0 -1
- package/src/eth/builtin/internal/ERC20.js +0 -2
- package/src/eth/builtin/internal/ERC20.js.map +0 -1
- package/src/eth/builtin/internal/ERC20Bytes.d.ts +0 -32
- package/src/eth/builtin/internal/ERC20Bytes.d.ts.map +0 -1
- package/src/eth/builtin/internal/ERC20Bytes.js +0 -2
- package/src/eth/builtin/internal/ERC20Bytes.js.map +0 -1
- package/src/eth/builtin/internal/ERC721.d.ts +0 -43
- package/src/eth/builtin/internal/ERC721.d.ts.map +0 -1
- package/src/eth/builtin/internal/ERC721.js +0 -2
- package/src/eth/builtin/internal/ERC721.js.map +0 -1
- package/src/eth/builtin/internal/WETH9.d.ts +0 -47
- package/src/eth/builtin/internal/WETH9.d.ts.map +0 -1
- package/src/eth/builtin/internal/WETH9.js +0 -2
- package/src/eth/builtin/internal/WETH9.js.map +0 -1
- package/src/eth/builtin/internal/common.d.ts +0 -3
- package/src/eth/builtin/internal/common.d.ts.map +0 -1
- package/src/eth/builtin/internal/common.js +0 -8
- package/src/eth/builtin/internal/common.js.map +0 -1
- package/src/eth/builtin/internal/eacaggregatorproxy-processor.d.ts +0 -373
- package/src/eth/builtin/internal/eacaggregatorproxy-processor.d.ts.map +0 -1
- package/src/eth/builtin/internal/eacaggregatorproxy-processor.js +0 -1355
- package/src/eth/builtin/internal/eacaggregatorproxy-processor.js.map +0 -1
- package/src/eth/builtin/internal/eacaggregatorproxy-test-utils.d.ts +0 -7
- package/src/eth/builtin/internal/eacaggregatorproxy-test-utils.d.ts.map +0 -1
- package/src/eth/builtin/internal/eacaggregatorproxy-test-utils.js +0 -55
- package/src/eth/builtin/internal/eacaggregatorproxy-test-utils.js.map +0 -1
- package/src/eth/builtin/internal/erc1155-processor.d.ts +0 -173
- package/src/eth/builtin/internal/erc1155-processor.d.ts.map +0 -1
- package/src/eth/builtin/internal/erc1155-processor.js +0 -596
- package/src/eth/builtin/internal/erc1155-processor.js.map +0 -1
- package/src/eth/builtin/internal/erc1155-test-utils.d.ts +0 -7
- package/src/eth/builtin/internal/erc1155-test-utils.d.ts.map +0 -1
- package/src/eth/builtin/internal/erc1155-test-utils.js +0 -55
- package/src/eth/builtin/internal/erc1155-test-utils.js.map +0 -1
- package/src/eth/builtin/internal/erc20-processor.d.ts +0 -244
- package/src/eth/builtin/internal/erc20-processor.d.ts.map +0 -1
- package/src/eth/builtin/internal/erc20-processor.js +0 -1109
- package/src/eth/builtin/internal/erc20-processor.js.map +0 -1
- package/src/eth/builtin/internal/erc20-test-utils.d.ts +0 -6
- package/src/eth/builtin/internal/erc20-test-utils.d.ts.map +0 -1
- package/src/eth/builtin/internal/erc20-test-utils.js +0 -44
- package/src/eth/builtin/internal/erc20-test-utils.js.map +0 -1
- package/src/eth/builtin/internal/erc20bytes-processor.d.ts +0 -144
- package/src/eth/builtin/internal/erc20bytes-processor.d.ts.map +0 -1
- package/src/eth/builtin/internal/erc20bytes-processor.js +0 -594
- package/src/eth/builtin/internal/erc20bytes-processor.js.map +0 -1
- package/src/eth/builtin/internal/erc20bytes-test-utils.d.ts +0 -5
- package/src/eth/builtin/internal/erc20bytes-test-utils.d.ts.map +0 -1
- package/src/eth/builtin/internal/erc20bytes-test-utils.js +0 -33
- package/src/eth/builtin/internal/erc20bytes-test-utils.js.map +0 -1
- package/src/eth/builtin/internal/erc721-processor.d.ts +0 -215
- package/src/eth/builtin/internal/erc721-processor.d.ts.map +0 -1
- package/src/eth/builtin/internal/erc721-processor.js +0 -895
- package/src/eth/builtin/internal/erc721-processor.js.map +0 -1
- package/src/eth/builtin/internal/erc721-test-utils.d.ts +0 -6
- package/src/eth/builtin/internal/erc721-test-utils.d.ts.map +0 -1
- package/src/eth/builtin/internal/erc721-test-utils.js +0 -44
- package/src/eth/builtin/internal/erc721-test-utils.js.map +0 -1
- package/src/eth/builtin/internal/factories/EACAggregatorProxy__factory.d.ts +0 -400
- package/src/eth/builtin/internal/factories/EACAggregatorProxy__factory.d.ts.map +0 -1
- package/src/eth/builtin/internal/factories/EACAggregatorProxy__factory.js +0 -524
- package/src/eth/builtin/internal/factories/EACAggregatorProxy__factory.js.map +0 -1
- package/src/eth/builtin/internal/factories/ERC1155__factory.d.ts +0 -251
- package/src/eth/builtin/internal/factories/ERC1155__factory.d.ts.map +0 -1
- package/src/eth/builtin/internal/factories/ERC1155__factory.js +0 -329
- package/src/eth/builtin/internal/factories/ERC1155__factory.js.map +0 -1
- package/src/eth/builtin/internal/factories/ERC20Bytes__factory.d.ts +0 -185
- package/src/eth/builtin/internal/factories/ERC20Bytes__factory.d.ts.map +0 -1
- package/src/eth/builtin/internal/factories/ERC20Bytes__factory.js +0 -251
- package/src/eth/builtin/internal/factories/ERC20Bytes__factory.js.map +0 -1
- package/src/eth/builtin/internal/factories/ERC20__factory.d.ts +0 -303
- package/src/eth/builtin/internal/factories/ERC20__factory.d.ts.map +0 -1
- package/src/eth/builtin/internal/factories/ERC20__factory.js +0 -401
- package/src/eth/builtin/internal/factories/ERC20__factory.js.map +0 -1
- package/src/eth/builtin/internal/factories/ERC721__factory.d.ts +0 -273
- package/src/eth/builtin/internal/factories/ERC721__factory.d.ts.map +0 -1
- package/src/eth/builtin/internal/factories/ERC721__factory.js +0 -361
- package/src/eth/builtin/internal/factories/ERC721__factory.js.map +0 -1
- package/src/eth/builtin/internal/factories/WETH9__factory.d.ts +0 -220
- package/src/eth/builtin/internal/factories/WETH9__factory.d.ts.map +0 -1
- package/src/eth/builtin/internal/factories/WETH9__factory.js +0 -294
- package/src/eth/builtin/internal/factories/WETH9__factory.js.map +0 -1
- package/src/eth/builtin/internal/factories/index.d.ts +0 -7
- package/src/eth/builtin/internal/factories/index.d.ts.map +0 -1
- package/src/eth/builtin/internal/factories/index.js +0 -10
- package/src/eth/builtin/internal/factories/index.js.map +0 -1
- package/src/eth/builtin/internal/index.d.ts +0 -14
- package/src/eth/builtin/internal/index.d.ts.map +0 -1
- package/src/eth/builtin/internal/index.js +0 -8
- package/src/eth/builtin/internal/index.js.map +0 -1
- package/src/eth/builtin/internal/weth9-processor.d.ts +0 -172
- package/src/eth/builtin/internal/weth9-processor.d.ts.map +0 -1
- package/src/eth/builtin/internal/weth9-processor.js +0 -729
- package/src/eth/builtin/internal/weth9-processor.js.map +0 -1
- package/src/eth/builtin/internal/weth9-test-utils.d.ts +0 -7
- package/src/eth/builtin/internal/weth9-test-utils.d.ts.map +0 -1
- package/src/eth/builtin/internal/weth9-test-utils.js +0 -55
- package/src/eth/builtin/internal/weth9-test-utils.js.map +0 -1
- package/src/eth/builtin/weth9.d.ts +0 -5
- package/src/eth/builtin/weth9.d.ts.map +0 -1
- package/src/eth/builtin/weth9.js +0 -8
- package/src/eth/builtin/weth9.js.map +0 -1
- package/src/solana/builtin/index.d.ts +0 -2
- package/src/solana/builtin/index.d.ts.map +0 -1
- package/src/solana/builtin/index.js +0 -2
- package/src/solana/builtin/index.js.map +0 -1
- package/src/solana/builtin/spl-token-processor.d.ts +0 -40
- package/src/solana/builtin/spl-token-processor.d.ts.map +0 -1
- package/src/solana/builtin/spl-token-processor.js +0 -254
- package/src/solana/builtin/spl-token-processor.js.map +0 -1
- package/src/solana/builtin/types.d.ts +0 -428
- package/src/solana/builtin/types.d.ts.map +0 -1
- package/src/solana/builtin/types.js +0 -201
- package/src/solana/builtin/types.js.map +0 -1
- package/src/sui/builtin/0x1.d.ts +0 -114
- package/src/sui/builtin/0x1.d.ts.map +0 -1
- package/src/sui/builtin/0x1.js +0 -159
- package/src/sui/builtin/0x1.js.map +0 -1
- package/src/sui/builtin/0x2.d.ts +0 -1250
- package/src/sui/builtin/0x2.d.ts.map +0 -1
- package/src/sui/builtin/0x2.js +0 -1511
- package/src/sui/builtin/0x2.js.map +0 -1
- package/src/sui/builtin/0x3.d.ts +0 -774
- package/src/sui/builtin/0x3.d.ts.map +0 -1
- package/src/sui/builtin/0x3.js +0 -720
- package/src/sui/builtin/0x3.js.map +0 -1
- package/src/sui/builtin/index.d.ts +0 -4
- package/src/sui/builtin/index.d.ts.map +0 -1
- package/src/sui/builtin/index.js +0 -7
- package/src/sui/builtin/index.js.map +0 -1
package/lib/chunk-LPSNAS2G.js
DELETED
@@ -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"]}
|