@avaprotocol/sdk-js 2.2.0 → 2.3.0
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/CHANGELOG.md +11 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1489 -292
- package/dist/index.mjs +1489 -292
- package/dist/models/node/branch.d.ts.map +1 -1
- package/dist/models/node/branch.js +14 -5
- package/dist/models/node/contractRead.d.ts.map +1 -1
- package/dist/models/node/contractRead.js +13 -3
- package/dist/models/node/contractWrite.d.ts.map +1 -1
- package/dist/models/node/contractWrite.js +75 -3
- package/dist/models/node/loop.d.ts.map +1 -1
- package/dist/models/node/loop.js +10 -0
- package/dist/models/step.d.ts.map +1 -1
- package/dist/models/step.js +60 -1
- package/dist/models/trigger/event.js +18 -18
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branch.d.ts","sourceRoot":"","sources":["../../../src/models/node/branch.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,eAAe,EAAa,MAAM,oBAAoB,CAAC;AAC1F,OAAO,IAAI,MAAM,aAAa,CAAC;AAC/B,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAKhD,cAAM,UAAW,SAAQ,IAAI;gBACf,KAAK,EAAE,eAAe;IAIlC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,GAAG,UAAU;
|
|
1
|
+
{"version":3,"file":"branch.d.ts","sourceRoot":"","sources":["../../../src/models/node/branch.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,eAAe,EAAa,MAAM,oBAAoB,CAAC;AAC1F,OAAO,IAAI,MAAM,aAAa,CAAC;AAC/B,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAKhD,cAAM,UAAW,SAAQ,IAAI;gBACf,KAAK,EAAE,eAAe;IAIlC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,GAAG,UAAU;IAqBrD,SAAS,IAAI,MAAM,CAAC,QAAQ;IA+B5B,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,qBAAqB,GAAG,GAAG;CAMrE;AACD,eAAe,UAAU,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { NodeType } from "@avaprotocol/types";
|
|
2
2
|
import Node from "./interface";
|
|
3
3
|
import * as avs_pb from "@/grpc_codegen/avs_pb";
|
|
4
|
-
// Required props for constructor: id, name, type and data: {
|
|
4
|
+
// Required props for constructor: id, name, type and data: { conditions }
|
|
5
5
|
class BranchNode extends Node {
|
|
6
6
|
constructor(props) {
|
|
7
7
|
super({ ...props, type: NodeType.Branch, data: props.data });
|
|
@@ -9,10 +9,19 @@ class BranchNode extends Node {
|
|
|
9
9
|
static fromResponse(raw) {
|
|
10
10
|
// Convert the raw object to BranchNodeProps, which should keep name and id
|
|
11
11
|
const obj = raw.toObject();
|
|
12
|
+
const protobufData = raw.getBranch().toObject().config;
|
|
13
|
+
// Convert protobuf data to our custom interface
|
|
14
|
+
const data = {
|
|
15
|
+
conditions: protobufData?.conditionsList?.map(condition => ({
|
|
16
|
+
id: condition.id,
|
|
17
|
+
type: condition.type,
|
|
18
|
+
expression: condition.expression,
|
|
19
|
+
})) || [],
|
|
20
|
+
};
|
|
12
21
|
return new BranchNode({
|
|
13
22
|
...obj,
|
|
14
23
|
type: NodeType.Branch,
|
|
15
|
-
data:
|
|
24
|
+
data: data,
|
|
16
25
|
});
|
|
17
26
|
}
|
|
18
27
|
toRequest() {
|
|
@@ -21,9 +30,9 @@ class BranchNode extends Node {
|
|
|
21
30
|
request.setName(this.name);
|
|
22
31
|
const nodeData = new avs_pb.BranchNode();
|
|
23
32
|
const config = new avs_pb.BranchNode.Config();
|
|
24
|
-
if (this.data.
|
|
25
|
-
this.data.
|
|
26
|
-
const conditionsList = this.data.
|
|
33
|
+
if (this.data.conditions &&
|
|
34
|
+
this.data.conditions.length > 0) {
|
|
35
|
+
const conditionsList = this.data.conditions.map((condition) => {
|
|
27
36
|
const conditionObj = new avs_pb.BranchNode.Condition();
|
|
28
37
|
conditionObj.setId(condition.id);
|
|
29
38
|
conditionObj.setType(condition.type);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contractRead.d.ts","sourceRoot":"","sources":["../../../src/models/node/contractRead.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,aAAa,CAAC;AAC/B,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAkC,qBAAqB,EAAa,MAAM,oBAAoB,CAAC;AAMtG,cAAM,gBAAiB,SAAQ,IAAI;gBACrB,KAAK,EAAE,qBAAqB;IAIxC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,GAAG,gBAAgB;
|
|
1
|
+
{"version":3,"file":"contractRead.d.ts","sourceRoot":"","sources":["../../../src/models/node/contractRead.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,aAAa,CAAC;AAC/B,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAkC,qBAAqB,EAAa,MAAM,oBAAoB,CAAC;AAMtG,cAAM,gBAAiB,SAAQ,IAAI;gBACrB,KAAK,EAAE,qBAAqB;IAIxC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,GAAG,gBAAgB;IAsB3D,SAAS,IAAI,MAAM,CAAC,QAAQ;IA8B5B,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,qBAAqB,GAAG,GAAG;CAmBrE;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -9,10 +9,20 @@ class ContractReadNode extends Node {
|
|
|
9
9
|
static fromResponse(raw) {
|
|
10
10
|
// Convert the raw object to ContractReadNodeProps, which should keep name and id
|
|
11
11
|
const obj = raw.toObject();
|
|
12
|
+
const protobufData = raw.getContractRead().getConfig().toObject();
|
|
13
|
+
// Convert protobuf data to our custom interface
|
|
14
|
+
const data = {
|
|
15
|
+
contractAddress: protobufData.contractAddress,
|
|
16
|
+
contractAbi: protobufData.contractAbi,
|
|
17
|
+
methodCalls: protobufData.methodCallsList?.map(call => ({
|
|
18
|
+
callData: call.callData,
|
|
19
|
+
methodName: call.methodName,
|
|
20
|
+
})) || [],
|
|
21
|
+
};
|
|
12
22
|
return new ContractReadNode({
|
|
13
23
|
...obj,
|
|
14
24
|
type: NodeType.ContractRead,
|
|
15
|
-
data:
|
|
25
|
+
data: data,
|
|
16
26
|
});
|
|
17
27
|
}
|
|
18
28
|
toRequest() {
|
|
@@ -23,8 +33,8 @@ class ContractReadNode extends Node {
|
|
|
23
33
|
const config = new avs_pb.ContractReadNode.Config();
|
|
24
34
|
config.setContractAddress(this.data.contractAddress);
|
|
25
35
|
config.setContractAbi(this.data.contractAbi);
|
|
26
|
-
// Handle method calls array
|
|
27
|
-
const methodCalls = this.data.
|
|
36
|
+
// Handle method calls array
|
|
37
|
+
const methodCalls = this.data.methodCalls || [];
|
|
28
38
|
methodCalls.forEach((methodCall) => {
|
|
29
39
|
const methodCallMsg = new avs_pb.ContractReadNode.MethodCall();
|
|
30
40
|
methodCallMsg.setCallData(methodCall.callData);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contractWrite.d.ts","sourceRoot":"","sources":["../../../src/models/node/contractWrite.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,aAAa,CAAC;AAC/B,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAmC,sBAAsB,EAAa,MAAM,oBAAoB,CAAC;AAKxG,cAAM,iBAAkB,SAAQ,IAAI;gBACtB,KAAK,EAAE,sBAAsB;IAIzC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,GAAG,iBAAiB;
|
|
1
|
+
{"version":3,"file":"contractWrite.d.ts","sourceRoot":"","sources":["../../../src/models/node/contractWrite.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,aAAa,CAAC;AAC/B,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAmC,sBAAsB,EAAa,MAAM,oBAAoB,CAAC;AAKxG,cAAM,iBAAkB,SAAQ,IAAI;gBACtB,KAAK,EAAE,sBAAsB;IAIzC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,GAAG,iBAAiB;IAuB5D,SAAS,IAAI,MAAM,CAAC,QAAQ;IA+B5B,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,qBAAqB,GAAG,GAAG;CAyDrE;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import Node from "./interface";
|
|
2
2
|
import * as avs_pb from "@/grpc_codegen/avs_pb";
|
|
3
3
|
import { NodeType } from "@avaprotocol/types";
|
|
4
|
-
// Required props for constructor: id, name, type and data: { config: { contractAddress, callData, contractAbi } }
|
|
4
|
+
// Required props for constructor: id, name, type and data: { config: { contractAddress, callData, contractAbi, methodCallsList? } }
|
|
5
5
|
class ContractWriteNode extends Node {
|
|
6
6
|
constructor(props) {
|
|
7
7
|
super({ ...props, type: NodeType.ContractWrite, data: props.data });
|
|
@@ -9,10 +9,21 @@ class ContractWriteNode extends Node {
|
|
|
9
9
|
static fromResponse(raw) {
|
|
10
10
|
// Convert the raw object to ContractWriteNodeProps, which should keep name and id
|
|
11
11
|
const obj = raw.toObject();
|
|
12
|
+
const protobufData = raw.getContractWrite().getConfig().toObject();
|
|
13
|
+
// Convert protobuf data to our custom interface
|
|
14
|
+
const data = {
|
|
15
|
+
contractAddress: protobufData.contractAddress,
|
|
16
|
+
callData: protobufData.callData,
|
|
17
|
+
contractAbi: protobufData.contractAbi,
|
|
18
|
+
methodCalls: protobufData.methodCallsList?.map(call => ({
|
|
19
|
+
callData: call.callData,
|
|
20
|
+
methodName: call.methodName,
|
|
21
|
+
})) || [],
|
|
22
|
+
};
|
|
12
23
|
return new ContractWriteNode({
|
|
13
24
|
...obj,
|
|
14
25
|
type: NodeType.ContractWrite,
|
|
15
|
-
data:
|
|
26
|
+
data: data,
|
|
16
27
|
});
|
|
17
28
|
}
|
|
18
29
|
toRequest() {
|
|
@@ -24,13 +35,74 @@ class ContractWriteNode extends Node {
|
|
|
24
35
|
config.setContractAddress(this.data.contractAddress);
|
|
25
36
|
config.setCallData(this.data.callData);
|
|
26
37
|
config.setContractAbi(this.data.contractAbi);
|
|
38
|
+
// Handle method calls array if present
|
|
39
|
+
const methodCalls = this.data.methodCalls || [];
|
|
40
|
+
methodCalls.forEach((methodCall) => {
|
|
41
|
+
const methodCallMsg = new avs_pb.ContractWriteNode.MethodCall();
|
|
42
|
+
methodCallMsg.setCallData(methodCall.callData);
|
|
43
|
+
if (methodCall.methodName) {
|
|
44
|
+
methodCallMsg.setMethodName(methodCall.methodName);
|
|
45
|
+
}
|
|
46
|
+
config.addMethodCalls(methodCallMsg);
|
|
47
|
+
});
|
|
27
48
|
nodeData.setConfig(config);
|
|
28
49
|
request.setContractWrite(nodeData);
|
|
29
50
|
return request;
|
|
30
51
|
}
|
|
31
52
|
static fromOutputData(outputData) {
|
|
32
53
|
const contractWriteOutput = outputData.getContractWrite();
|
|
33
|
-
|
|
54
|
+
if (!contractWriteOutput)
|
|
55
|
+
return null;
|
|
56
|
+
const outputObj = contractWriteOutput.toObject();
|
|
57
|
+
// Transform the new enhanced response structure for easier consumption
|
|
58
|
+
const transformedResults = outputObj.resultsList?.map((result) => ({
|
|
59
|
+
methodName: result.methodName,
|
|
60
|
+
success: result.success,
|
|
61
|
+
transaction: result.transaction ? {
|
|
62
|
+
hash: result.transaction.hash,
|
|
63
|
+
status: result.transaction.status,
|
|
64
|
+
blockNumber: result.transaction.blockNumber,
|
|
65
|
+
blockHash: result.transaction.blockHash,
|
|
66
|
+
gasUsed: result.transaction.gasUsed,
|
|
67
|
+
gasLimit: result.transaction.gasLimit,
|
|
68
|
+
gasPrice: result.transaction.gasPrice,
|
|
69
|
+
effectiveGasPrice: result.transaction.effectiveGasPrice,
|
|
70
|
+
from: result.transaction.from,
|
|
71
|
+
to: result.transaction.to,
|
|
72
|
+
value: result.transaction.value,
|
|
73
|
+
nonce: result.transaction.nonce,
|
|
74
|
+
transactionIndex: result.transaction.transactionIndex,
|
|
75
|
+
confirmations: result.transaction.confirmations,
|
|
76
|
+
timestamp: result.transaction.timestamp,
|
|
77
|
+
} : null,
|
|
78
|
+
events: result.eventsList?.map((event) => ({
|
|
79
|
+
eventName: event.eventName,
|
|
80
|
+
address: event.address,
|
|
81
|
+
topics: event.topicsList || [],
|
|
82
|
+
data: event.data,
|
|
83
|
+
decoded: event.decodedMap || {},
|
|
84
|
+
})) || [],
|
|
85
|
+
error: result.error ? {
|
|
86
|
+
code: result.error.code,
|
|
87
|
+
message: result.error.message,
|
|
88
|
+
revertReason: result.error.revertReason,
|
|
89
|
+
} : null,
|
|
90
|
+
returnData: result.returnData ? {
|
|
91
|
+
name: result.returnData.name,
|
|
92
|
+
type: result.returnData.type,
|
|
93
|
+
value: result.returnData.value,
|
|
94
|
+
} : null,
|
|
95
|
+
inputData: result.inputData,
|
|
96
|
+
})) || [];
|
|
97
|
+
return {
|
|
98
|
+
results: transformedResults,
|
|
99
|
+
// For backward compatibility, provide legacy fields from first result
|
|
100
|
+
...(transformedResults.length > 0 && {
|
|
101
|
+
transaction: transformedResults[0].transaction,
|
|
102
|
+
success: transformedResults[0].success,
|
|
103
|
+
hash: transformedResults[0].transaction?.hash,
|
|
104
|
+
}),
|
|
105
|
+
};
|
|
34
106
|
}
|
|
35
107
|
}
|
|
36
108
|
export default ContractWriteNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../../src/models/node/loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAChD,OAAO,IAAI,MAAM,aAAa,CAAC;AAC/B,OAAO,EAA0B,aAAa,EAAa,MAAM,oBAAoB,CAAC;AAKtF,cAAM,QAAS,SAAQ,IAAI;gBACb,KAAK,EAAE,aAAa;IAIhC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,GAAG,QAAQ;IA+BnD,SAAS,IAAI,MAAM,CAAC,QAAQ;
|
|
1
|
+
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../../src/models/node/loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAChD,OAAO,IAAI,MAAM,aAAa,CAAC;AAC/B,OAAO,EAA0B,aAAa,EAAa,MAAM,oBAAoB,CAAC;AAKtF,cAAM,QAAS,SAAQ,IAAI;gBACb,KAAK,EAAE,aAAa;IAIhC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,GAAG,QAAQ;IA+BnD,SAAS,IAAI,MAAM,CAAC,QAAQ;IAyH5B,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,qBAAqB,GAAG,GAAG;CAIrE;AAED,eAAe,QAAQ,CAAC"}
|
package/dist/models/node/loop.js
CHANGED
|
@@ -62,6 +62,16 @@ class LoopNode extends Node {
|
|
|
62
62
|
config.setContractAddress(data.contractWrite.config.contractAddress);
|
|
63
63
|
config.setCallData(data.contractWrite.config.callData);
|
|
64
64
|
config.setContractAbi(data.contractWrite.config.contractAbi);
|
|
65
|
+
// Handle method calls array for ContractWrite
|
|
66
|
+
const methodCalls = data.contractWrite.config.methodCallsList || [];
|
|
67
|
+
methodCalls.forEach((methodCall) => {
|
|
68
|
+
const methodCallMsg = new avs_pb.ContractWriteNode.MethodCall();
|
|
69
|
+
methodCallMsg.setCallData(methodCall.callData);
|
|
70
|
+
if (methodCall.methodName) {
|
|
71
|
+
methodCallMsg.setMethodName(methodCall.methodName);
|
|
72
|
+
}
|
|
73
|
+
config.addMethodCalls(methodCallMsg);
|
|
74
|
+
});
|
|
65
75
|
contractWrite.setConfig(config);
|
|
66
76
|
}
|
|
67
77
|
loopNode.setContractWrite(contractWrite);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step.d.ts","sourceRoot":"","sources":["../../src/models/step.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAKhD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEhE,cAAM,IAAK,YAAW,SAAS;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;gBAEF,KAAK,EAAE,SAAS;IAa5B;;;OAGG;IACH,MAAM,IAAI,SAAS;IAenB,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,eAAe;
|
|
1
|
+
{"version":3,"file":"step.d.ts","sourceRoot":"","sources":["../../src/models/step.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAKhD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEhE,cAAM,IAAK,YAAW,SAAS;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;gBAEF,KAAK,EAAE,SAAS;IAa5B;;;OAGG;IACH,MAAM,IAAI,SAAS;IAenB,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,eAAe;IAqL9D,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI;CAgBvD;AAED,eAAe,IAAI,CAAC"}
|
package/dist/models/step.js
CHANGED
|
@@ -124,7 +124,66 @@ class Step {
|
|
|
124
124
|
}
|
|
125
125
|
return undefined;
|
|
126
126
|
case avs_pb.Execution.Step.OutputDataCase.CONTRACT_WRITE:
|
|
127
|
-
|
|
127
|
+
nodeOutputMessage = step.getContractWrite();
|
|
128
|
+
if (nodeOutputMessage) {
|
|
129
|
+
const results = nodeOutputMessage.getResultsList();
|
|
130
|
+
if (results && results.length > 0) {
|
|
131
|
+
// Transform enhanced results structure
|
|
132
|
+
const transformedResults = results.map((result) => ({
|
|
133
|
+
methodName: result.getMethodName(),
|
|
134
|
+
success: result.getSuccess(),
|
|
135
|
+
transaction: result.getTransaction() ? {
|
|
136
|
+
hash: result.getTransaction()?.getHash(),
|
|
137
|
+
status: result.getTransaction()?.getStatus(),
|
|
138
|
+
blockNumber: result.getTransaction()?.getBlockNumber(),
|
|
139
|
+
blockHash: result.getTransaction()?.getBlockHash(),
|
|
140
|
+
gasUsed: result.getTransaction()?.getGasUsed(),
|
|
141
|
+
gasLimit: result.getTransaction()?.getGasLimit(),
|
|
142
|
+
gasPrice: result.getTransaction()?.getGasPrice(),
|
|
143
|
+
effectiveGasPrice: result.getTransaction()?.getEffectiveGasPrice(),
|
|
144
|
+
from: result.getTransaction()?.getFrom(),
|
|
145
|
+
to: result.getTransaction()?.getTo(),
|
|
146
|
+
value: result.getTransaction()?.getValue(),
|
|
147
|
+
nonce: result.getTransaction()?.getNonce(),
|
|
148
|
+
transactionIndex: result.getTransaction()?.getTransactionIndex(),
|
|
149
|
+
confirmations: result.getTransaction()?.getConfirmations(),
|
|
150
|
+
timestamp: result.getTransaction()?.getTimestamp(),
|
|
151
|
+
} : null,
|
|
152
|
+
events: result.getEventsList().map((event) => ({
|
|
153
|
+
eventName: event.getEventName(),
|
|
154
|
+
address: event.getAddress(),
|
|
155
|
+
topics: event.getTopicsList(),
|
|
156
|
+
data: event.getData(),
|
|
157
|
+
decoded: event.getDecodedMap() ? Object.fromEntries(event.getDecodedMap().toArray()) : {},
|
|
158
|
+
})),
|
|
159
|
+
error: result.getError() ? {
|
|
160
|
+
code: result.getError()?.getCode(),
|
|
161
|
+
message: result.getError()?.getMessage(),
|
|
162
|
+
revertReason: result.getError()?.getRevertReason(),
|
|
163
|
+
} : null,
|
|
164
|
+
returnData: result.getReturnData() ? {
|
|
165
|
+
name: result.getReturnData()?.getName(),
|
|
166
|
+
type: result.getReturnData()?.getType(),
|
|
167
|
+
value: result.getReturnData()?.getValue(),
|
|
168
|
+
} : null,
|
|
169
|
+
inputData: result.getInputData(),
|
|
170
|
+
}));
|
|
171
|
+
// For single result, also provide legacy fields for backward compatibility
|
|
172
|
+
if (transformedResults.length === 1) {
|
|
173
|
+
return {
|
|
174
|
+
results: transformedResults,
|
|
175
|
+
// Legacy compatibility fields
|
|
176
|
+
transaction: transformedResults[0].transaction,
|
|
177
|
+
success: transformedResults[0].success,
|
|
178
|
+
hash: transformedResults[0].transaction?.hash,
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
return { results: transformedResults };
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return undefined;
|
|
128
187
|
case avs_pb.Execution.Step.OutputDataCase.CUSTOM_CODE:
|
|
129
188
|
nodeOutputMessage = step.getCustomCode();
|
|
130
189
|
return nodeOutputMessage && nodeOutputMessage.hasData()
|
|
@@ -19,7 +19,7 @@ import { TriggerType } from "@avaprotocol/types";
|
|
|
19
19
|
// }
|
|
20
20
|
// ]
|
|
21
21
|
// ```
|
|
22
|
-
// Required props for constructor: id, name, type and data: {
|
|
22
|
+
// Required props for constructor: id, name, type and data: { queries }
|
|
23
23
|
// EventTrigger now uses queries-based filtering instead of expression/matcher
|
|
24
24
|
// Each query represents an independent filter that creates its own subscription
|
|
25
25
|
// For FROM-OR-TO scenarios, provide two queries: one for FROM, one for TO.
|
|
@@ -28,10 +28,10 @@ import { TriggerType } from "@avaprotocol/types";
|
|
|
28
28
|
// ```
|
|
29
29
|
// [
|
|
30
30
|
// {
|
|
31
|
-
//
|
|
32
|
-
//
|
|
31
|
+
// addresses: ["0xA0b86a33E6441e6067ec0da4Cc2C8ae77d85e7b1"],
|
|
32
|
+
// topics: [
|
|
33
33
|
// {
|
|
34
|
-
//
|
|
34
|
+
// values: [
|
|
35
35
|
// "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
|
|
36
36
|
// null,
|
|
37
37
|
// "0x000000000000000000000000c60e71bd0f2e6d8832fea1a2d56091c48493c788"
|
|
@@ -56,22 +56,22 @@ class EventTrigger extends Trigger {
|
|
|
56
56
|
const trigger = new avs_pb.EventTrigger();
|
|
57
57
|
const config = new avs_pb.EventTrigger.Config();
|
|
58
58
|
const dataConfig = this.data;
|
|
59
|
-
const queries = dataConfig.
|
|
59
|
+
const queries = dataConfig.queries;
|
|
60
60
|
if (!queries || queries.length === 0) {
|
|
61
61
|
throw new Error(`Queries array is required for ${this.type}`);
|
|
62
62
|
}
|
|
63
63
|
const queryMessages = queries.map((queryData) => {
|
|
64
64
|
const query = new avs_pb.EventTrigger.Query();
|
|
65
65
|
// Set addresses if provided
|
|
66
|
-
if (queryData.
|
|
67
|
-
query.setAddressesList(queryData.
|
|
66
|
+
if (queryData.addresses && queryData.addresses.length > 0) {
|
|
67
|
+
query.setAddressesList(queryData.addresses);
|
|
68
68
|
}
|
|
69
69
|
// Set topics if provided
|
|
70
|
-
if (queryData.
|
|
71
|
-
const topicsMessages = queryData.
|
|
70
|
+
if (queryData.topics && queryData.topics.length > 0) {
|
|
71
|
+
const topicsMessages = queryData.topics.map((topicData) => {
|
|
72
72
|
const topics = new avs_pb.EventTrigger.Topics();
|
|
73
|
-
if (topicData.
|
|
74
|
-
topics.setValuesList(topicData.
|
|
73
|
+
if (topicData.values) {
|
|
74
|
+
topics.setValuesList(topicData.values);
|
|
75
75
|
}
|
|
76
76
|
return topics;
|
|
77
77
|
});
|
|
@@ -91,7 +91,7 @@ class EventTrigger extends Trigger {
|
|
|
91
91
|
static fromResponse(raw) {
|
|
92
92
|
// Convert the raw object to TriggerProps, which should keep name and id
|
|
93
93
|
const obj = raw.toObject();
|
|
94
|
-
let data = {
|
|
94
|
+
let data = { queries: [] };
|
|
95
95
|
if (raw.getEvent() && raw.getEvent().hasConfig()) {
|
|
96
96
|
const config = raw.getEvent().getConfig();
|
|
97
97
|
if (config) {
|
|
@@ -99,17 +99,17 @@ class EventTrigger extends Trigger {
|
|
|
99
99
|
if (config.getQueriesList && config.getQueriesList().length > 0) {
|
|
100
100
|
config.getQueriesList().forEach((query) => {
|
|
101
101
|
const queryData = {
|
|
102
|
-
|
|
103
|
-
|
|
102
|
+
addresses: [],
|
|
103
|
+
topics: [],
|
|
104
104
|
};
|
|
105
105
|
// Extract addresses
|
|
106
106
|
if (query.getAddressesList && query.getAddressesList().length > 0) {
|
|
107
|
-
queryData.
|
|
107
|
+
queryData.addresses = query.getAddressesList();
|
|
108
108
|
}
|
|
109
109
|
// Extract topics
|
|
110
110
|
if (query.getTopicsList && query.getTopicsList().length > 0) {
|
|
111
|
-
queryData.
|
|
112
|
-
|
|
111
|
+
queryData.topics = query.getTopicsList().map((topics) => ({
|
|
112
|
+
values: topics.getValuesList() || []
|
|
113
113
|
}));
|
|
114
114
|
}
|
|
115
115
|
// Extract maxEventsPerBlock
|
|
@@ -120,7 +120,7 @@ class EventTrigger extends Trigger {
|
|
|
120
120
|
queries.push(queryData);
|
|
121
121
|
});
|
|
122
122
|
}
|
|
123
|
-
data = {
|
|
123
|
+
data = { queries: queries };
|
|
124
124
|
}
|
|
125
125
|
}
|
|
126
126
|
return new EventTrigger({
|
package/package.json
CHANGED