otomato-sdk 1.4.8 → 1.5.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/dist/src/models/Action.js +1 -1
- package/dist/src/models/Edge.js +33 -1
- package/dist/src/models/Node.js +42 -0
- package/dist/src/models/Trigger.js +1 -1
- package/dist/src/models/Workflow.js +62 -7
- package/dist/src/services/ApiService.js +6 -0
- package/dist/types/examples/delete-edge.d.ts +1 -0
- package/dist/types/examples/delete-workflow.d.ts +1 -0
- package/dist/types/examples/update-action.d.ts +1 -0
- package/dist/types/examples/update-edge.d.ts +1 -0
- package/dist/types/src/models/Edge.d.ts +4 -0
- package/dist/types/src/models/Node.d.ts +8 -0
- package/dist/types/src/models/Workflow.d.ts +5 -0
- package/dist/types/src/services/ApiService.d.ts +1 -0
- package/package.json +4 -3
- package/dist/examples/create-action.js +0 -21
- package/dist/examples/create-automation.js +0 -36
- package/dist/examples/create-trigger-list.js +0 -131
- package/dist/examples/create-trigger.js +0 -21
- package/dist/examples/create-workflow.js +0 -54
- package/dist/examples/load-workflow.js +0 -19
- package/dist/examples/login.js +0 -32
- package/dist/examples/sandbox.js +0 -18
- package/dist/examples/test.js +0 -59
- package/dist/test/action.spec.js +0 -149
- package/dist/test/automation.spec.js +0 -73
- package/dist/test/helpers.spec.js +0 -23
- package/dist/test/node.spec.js +0 -126
- package/dist/test/trigger.spec.js +0 -153
- package/dist/test/typeValidator.spec.js +0 -60
- package/dist/test/workflow.spec.js +0 -100
|
@@ -12,7 +12,7 @@ import { ACTIONS } from '../constants/Blocks.js';
|
|
|
12
12
|
import { typeIsNumber } from '../utils/typeValidator.js';
|
|
13
13
|
export class Action extends Node {
|
|
14
14
|
constructor(action) {
|
|
15
|
-
super(Object.assign(Object.assign({}, action), { class: 'action' }));
|
|
15
|
+
super(Object.assign(Object.assign({}, action), { class: 'action', parentInfo: findActionByBlockId(action.blockId).parentInfo }));
|
|
16
16
|
}
|
|
17
17
|
getStaticParameters() {
|
|
18
18
|
return null;
|
package/dist/src/models/Edge.js
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { apiServices } from '../services/ApiService.js';
|
|
1
11
|
let edgeCounter = 0;
|
|
2
12
|
const generatedEdgeIds = new Set();
|
|
3
13
|
export class Edge {
|
|
@@ -25,7 +35,6 @@ export class Edge {
|
|
|
25
35
|
static fromJSON(json, nodes) {
|
|
26
36
|
const source = nodes.find(n => n.getRef() === json.source);
|
|
27
37
|
const target = nodes.find(n => n.getRef() === json.target);
|
|
28
|
-
console.log(json);
|
|
29
38
|
if (!source || !target)
|
|
30
39
|
throw new Error("Edge refer to non existing node");
|
|
31
40
|
return new Edge({
|
|
@@ -34,4 +43,27 @@ export class Edge {
|
|
|
34
43
|
target
|
|
35
44
|
});
|
|
36
45
|
}
|
|
46
|
+
delete() {
|
|
47
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
48
|
+
var _a;
|
|
49
|
+
if (!this.id) {
|
|
50
|
+
throw new Error('Cannot delete an edge without an ID.');
|
|
51
|
+
}
|
|
52
|
+
try {
|
|
53
|
+
console.log('trying...');
|
|
54
|
+
console.log(this.id);
|
|
55
|
+
const response = yield apiServices.delete(`/edges/${this.id}`);
|
|
56
|
+
console.log(response.status);
|
|
57
|
+
if (response.status === 204) {
|
|
58
|
+
return { success: true };
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
return { success: false, error: ((_a = response.data) === null || _a === void 0 ? void 0 : _a.error) || 'Unknown error' };
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
return { success: false, error: error.message || 'Unknown error' };
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
37
69
|
}
|
package/dist/src/models/Node.js
CHANGED
|
@@ -8,6 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
import { validateType } from '../utils/typeValidator.js';
|
|
11
|
+
import { apiServices } from '../services/ApiService.js';
|
|
11
12
|
let nodeCounter = 0;
|
|
12
13
|
const generatedRefs = new Set();
|
|
13
14
|
export class Node {
|
|
@@ -137,6 +138,47 @@ export class Node {
|
|
|
137
138
|
}
|
|
138
139
|
return JSON.parse(JSON.stringify(json, serializeBigInt));
|
|
139
140
|
}
|
|
141
|
+
delete() {
|
|
142
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
143
|
+
var _a;
|
|
144
|
+
if (!this.id) {
|
|
145
|
+
throw new Error('Cannot delete a node without an ID.');
|
|
146
|
+
}
|
|
147
|
+
try {
|
|
148
|
+
console.log(this.id);
|
|
149
|
+
const response = yield apiServices.delete(`/nodes/${this.id}`);
|
|
150
|
+
if (response.status === 204) {
|
|
151
|
+
return { success: true };
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
return { success: false, error: ((_a = response.data) === null || _a === void 0 ? void 0 : _a.error) || 'Unknown error' };
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
return { success: false, error: error.message || 'Unknown error' };
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
update() {
|
|
163
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
164
|
+
var _a;
|
|
165
|
+
if (!this.id) {
|
|
166
|
+
throw new Error('Cannot update a node without an ID.');
|
|
167
|
+
}
|
|
168
|
+
try {
|
|
169
|
+
const response = yield apiServices.patch(`/nodes/${this.id}`, this.toJSON());
|
|
170
|
+
if (response.status === 200) {
|
|
171
|
+
return { success: true };
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
return { success: false, error: ((_a = response.data) === null || _a === void 0 ? void 0 : _a.error) || 'Unknown error' };
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
return { success: false, error: error.message || 'Unknown error' };
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
}
|
|
140
182
|
getSimplifiedKey(key) {
|
|
141
183
|
return key.replace(/[.\[\]]/g, '_');
|
|
142
184
|
}
|
|
@@ -12,7 +12,7 @@ import { TRIGGERS } from '../constants/Blocks.js';
|
|
|
12
12
|
import { typeIsNumber } from '../utils/typeValidator.js';
|
|
13
13
|
export class Trigger extends Node {
|
|
14
14
|
constructor(trigger) {
|
|
15
|
-
super(Object.assign(Object.assign({}, trigger), { class: 'trigger' }));
|
|
15
|
+
super(Object.assign(Object.assign({}, trigger), { class: 'trigger', parentInfo: findTriggerByBlockId(trigger.blockId).parentInfo }));
|
|
16
16
|
this.type = trigger.type;
|
|
17
17
|
}
|
|
18
18
|
notAPollingTrigger() {
|
|
@@ -69,6 +69,14 @@ export class Workflow {
|
|
|
69
69
|
node.setId(nodeResponse.id);
|
|
70
70
|
}
|
|
71
71
|
});
|
|
72
|
+
// Assign IDs to the edges based on the source and target nodes
|
|
73
|
+
response.data.edges.forEach((edgeResponse) => {
|
|
74
|
+
const edge = this.edges.find(e => e.source.getRef() === edgeResponse.source &&
|
|
75
|
+
e.target.getRef() === edgeResponse.target);
|
|
76
|
+
if (edge) {
|
|
77
|
+
edge.id = edgeResponse.id;
|
|
78
|
+
}
|
|
79
|
+
});
|
|
72
80
|
return { success: true };
|
|
73
81
|
}
|
|
74
82
|
else {
|
|
@@ -93,6 +101,14 @@ export class Workflow {
|
|
|
93
101
|
node.setId(nodeResponse.id);
|
|
94
102
|
}
|
|
95
103
|
});
|
|
104
|
+
// Assign IDs to the edges based on the source and target nodes
|
|
105
|
+
response.data.edges.forEach((edgeResponse) => {
|
|
106
|
+
const edge = this.edges.find(e => e.source.getRef() === edgeResponse.source &&
|
|
107
|
+
e.target.getRef() === edgeResponse.target);
|
|
108
|
+
if (edge) {
|
|
109
|
+
edge.id = edgeResponse.id;
|
|
110
|
+
}
|
|
111
|
+
});
|
|
96
112
|
return { success: true };
|
|
97
113
|
}
|
|
98
114
|
else {
|
|
@@ -106,13 +122,26 @@ export class Workflow {
|
|
|
106
122
|
}
|
|
107
123
|
load(workflowId) {
|
|
108
124
|
return __awaiter(this, void 0, void 0, function* () {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
125
|
+
try {
|
|
126
|
+
const response = yield apiServices.get(`/workflows/${workflowId}`);
|
|
127
|
+
this.id = response.id;
|
|
128
|
+
this.name = response.name;
|
|
129
|
+
this.state = response.state;
|
|
130
|
+
this.nodes = yield Promise.all(response.nodes.map((nodeData) => __awaiter(this, void 0, void 0, function* () { return yield Node.fromJSON(nodeData); })));
|
|
131
|
+
this.edges = response.edges.map((edgeData) => Edge.fromJSON(edgeData, this.nodes));
|
|
132
|
+
return this;
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
throw new Error(`Failed to load workflow: ${error.message}`);
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
reload() {
|
|
140
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
141
|
+
if (!this.id) {
|
|
142
|
+
throw new Error('Cannot reload a workflow without an ID.');
|
|
143
|
+
}
|
|
144
|
+
return this.load(this.id);
|
|
116
145
|
});
|
|
117
146
|
}
|
|
118
147
|
run() {
|
|
@@ -136,4 +165,30 @@ export class Workflow {
|
|
|
136
165
|
}
|
|
137
166
|
});
|
|
138
167
|
}
|
|
168
|
+
delete() {
|
|
169
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
170
|
+
var _a;
|
|
171
|
+
if (!this.id) {
|
|
172
|
+
throw new Error('Cannot delete a workflow without an ID.');
|
|
173
|
+
}
|
|
174
|
+
try {
|
|
175
|
+
const response = yield apiServices.delete(`/workflows/${this.id}`);
|
|
176
|
+
if (response.status === 204) {
|
|
177
|
+
// Optionally, you can clean up the instance's properties here
|
|
178
|
+
this.id = null;
|
|
179
|
+
this.name = '';
|
|
180
|
+
this.nodes = [];
|
|
181
|
+
this.edges = [];
|
|
182
|
+
this.state = 'inactive';
|
|
183
|
+
return { success: true };
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
return { success: false, error: ((_a = response.data) === null || _a === void 0 ? void 0 : _a.error) || 'Unknown error' };
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
return { success: false, error: error.message || 'Unknown error' };
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
}
|
|
139
194
|
}
|
|
@@ -44,6 +44,12 @@ class ApiServices {
|
|
|
44
44
|
return response.data;
|
|
45
45
|
});
|
|
46
46
|
}
|
|
47
|
+
delete(url) {
|
|
48
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
49
|
+
const headers = this.auth ? { 'Authorization': this.auth } : {};
|
|
50
|
+
return yield axiosInstance.delete(url, { headers });
|
|
51
|
+
});
|
|
52
|
+
}
|
|
47
53
|
generateLoginPayload(address, chainId) {
|
|
48
54
|
return __awaiter(this, void 0, void 0, function* () {
|
|
49
55
|
const headers = { 'Content-Type': 'application/json' };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -57,6 +57,14 @@ export declare abstract class Node {
|
|
|
57
57
|
toJSON(): {
|
|
58
58
|
[key: string]: any;
|
|
59
59
|
};
|
|
60
|
+
delete(): Promise<{
|
|
61
|
+
success: boolean;
|
|
62
|
+
error?: string;
|
|
63
|
+
}>;
|
|
64
|
+
update(): Promise<{
|
|
65
|
+
success: boolean;
|
|
66
|
+
error?: string;
|
|
67
|
+
}>;
|
|
60
68
|
private getSimplifiedKey;
|
|
61
69
|
static fromJSON(json: {
|
|
62
70
|
[key: string]: any;
|
|
@@ -35,8 +35,13 @@ export declare class Workflow {
|
|
|
35
35
|
error?: string;
|
|
36
36
|
}>;
|
|
37
37
|
load(workflowId: string): Promise<Workflow>;
|
|
38
|
+
reload(): Promise<Workflow>;
|
|
38
39
|
run(): Promise<{
|
|
39
40
|
success: boolean;
|
|
40
41
|
error?: string;
|
|
41
42
|
}>;
|
|
43
|
+
delete(): Promise<{
|
|
44
|
+
success: boolean;
|
|
45
|
+
error?: string;
|
|
46
|
+
}>;
|
|
42
47
|
}
|
|
@@ -4,6 +4,7 @@ declare class ApiServices {
|
|
|
4
4
|
post(url: string, data: any): Promise<import("axios").AxiosResponse<any, any>>;
|
|
5
5
|
patch(url: string, data: any): Promise<import("axios").AxiosResponse<any, any>>;
|
|
6
6
|
get(url: string): Promise<any>;
|
|
7
|
+
delete(url: string): Promise<import("axios").AxiosResponse<any, any>>;
|
|
7
8
|
generateLoginPayload(address: string, chainId: number): Promise<any>;
|
|
8
9
|
getToken(loginPayload: any, signature: string): Promise<{
|
|
9
10
|
token: any;
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "otomato-sdk",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "An SDK for building and managing automations on Otomato",
|
|
5
5
|
"main": "dist/src/index.js",
|
|
6
6
|
"types": "dist/types/src/index.d.ts",
|
|
7
7
|
"type": "module",
|
|
8
|
-
"prepublishOnly": "
|
|
8
|
+
"prepublishOnly": "npm run build; npm run test",
|
|
9
9
|
"scripts": {
|
|
10
10
|
"build": "npx tsc",
|
|
11
11
|
"test": "mocha --config .mocharc.json"
|
|
@@ -20,7 +20,8 @@
|
|
|
20
20
|
"ethereum"
|
|
21
21
|
],
|
|
22
22
|
"files": [
|
|
23
|
-
"dist/",
|
|
23
|
+
"dist/src",
|
|
24
|
+
"dist/types",
|
|
24
25
|
"README.md",
|
|
25
26
|
"LICENSE"
|
|
26
27
|
],
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { ACTIONS, getTokenFromSymbol, CHAINS, Action } from '../src/index.js';
|
|
2
|
-
const createAction = () => {
|
|
3
|
-
// Create an ERC20 transfer action
|
|
4
|
-
const transferAction = new Action(ACTIONS.TOKENS.ERC20.TRANSFER);
|
|
5
|
-
transferAction.setChainId(CHAINS.ETHEREUM);
|
|
6
|
-
transferAction.setParams("value", 1000);
|
|
7
|
-
transferAction.setParams("to", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
|
|
8
|
-
transferAction.setContractAddress(getTokenFromSymbol(CHAINS.ETHEREUM, 'USDC').contractAddress);
|
|
9
|
-
console.log(JSON.stringify(transferAction.toJSON()));
|
|
10
|
-
// Create an SMS notification action
|
|
11
|
-
const smsAction = new Action(ACTIONS.NOTIFICATIONS.DISCORD.SEND_MESSAGE);
|
|
12
|
-
smsAction.setParams("webhook", "https://url");
|
|
13
|
-
smsAction.setParams("message", "This is a test message");
|
|
14
|
-
console.log(smsAction.toJSON());
|
|
15
|
-
// Create a Slack notification action
|
|
16
|
-
const slackAction = new Action(ACTIONS.NOTIFICATIONS.SLACK.SEND_MESSAGE);
|
|
17
|
-
slackAction.setParams("webhook", "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX");
|
|
18
|
-
slackAction.setParams("message", "This is a test message");
|
|
19
|
-
console.log(slackAction.toJSON());
|
|
20
|
-
};
|
|
21
|
-
createAction();
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
import { ACTIONS, Action, TRIGGERS, Trigger, Automation, CHAINS, getToken, Edge } from '../src/index.js';
|
|
11
|
-
const main = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
12
|
-
const usdcTransferTrigger = new Trigger({
|
|
13
|
-
id: TRIGGERS.TOKENS.ERC20.TRANSFER.id,
|
|
14
|
-
name: TRIGGERS.TOKENS.ERC20.TRANSFER.name,
|
|
15
|
-
description: TRIGGERS.TOKENS.ERC20.TRANSFER.description,
|
|
16
|
-
type: TRIGGERS.TOKENS.ERC20.TRANSFER.type,
|
|
17
|
-
parameters: TRIGGERS.TOKENS.ERC20.TRANSFER.parameters,
|
|
18
|
-
ref: 'n-1',
|
|
19
|
-
});
|
|
20
|
-
usdcTransferTrigger.setChainId(CHAINS.ETHEREUM);
|
|
21
|
-
usdcTransferTrigger.setContractAddress(getToken(CHAINS.ETHEREUM, 'USDC').contractAddress);
|
|
22
|
-
usdcTransferTrigger.setPosition(0, 0);
|
|
23
|
-
const slackAction = new Action(ACTIONS.NOTIFICATIONS.SLACK.SEND_MESSAGE);
|
|
24
|
-
slackAction.setParams("webhook", "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX");
|
|
25
|
-
slackAction.setParams("message", "USDC has been transferred!");
|
|
26
|
-
slackAction.setPosition(0, -10);
|
|
27
|
-
const automation = new Automation("USDC Transfer Notification", [usdcTransferTrigger, slackAction]);
|
|
28
|
-
const edge = new Edge({
|
|
29
|
-
source: usdcTransferTrigger,
|
|
30
|
-
target: slackAction,
|
|
31
|
-
});
|
|
32
|
-
automation.addEdge(edge);
|
|
33
|
-
console.log(JSON.stringify(automation.toJSON(), null, 2));
|
|
34
|
-
//await automation.save();
|
|
35
|
-
});
|
|
36
|
-
main();
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import { TRIGGERS, getTokenFromSymbol, TOKENS, CHAINS, Trigger } from '../src/index.js';
|
|
2
|
-
const generateDefaultTriggers = () => {
|
|
3
|
-
const triggersList = [];
|
|
4
|
-
const createDefaultTrigger = (trigger) => {
|
|
5
|
-
const triggerInstance = new Trigger(trigger);
|
|
6
|
-
// Set common parameters if they exist
|
|
7
|
-
if (trigger.parameters.some((p) => p.key === "chainId")) {
|
|
8
|
-
triggerInstance.setChainId(CHAINS.ETHEREUM);
|
|
9
|
-
}
|
|
10
|
-
if (trigger.parameters.some((p) => p.key === "contractAddress")) {
|
|
11
|
-
triggerInstance.setContractAddress(getTokenFromSymbol(CHAINS.ETHEREUM, 'USDC').contractAddress);
|
|
12
|
-
}
|
|
13
|
-
if (trigger.parameters.some((p) => p.key === "condition")) {
|
|
14
|
-
triggerInstance.setCondition('>');
|
|
15
|
-
}
|
|
16
|
-
if (trigger.parameters.some((p) => p.key === "comparisonValue")) {
|
|
17
|
-
triggerInstance.setComparisonValue(1000);
|
|
18
|
-
}
|
|
19
|
-
if (trigger.parameters.some((p) => p.key === "abiParams.account")) {
|
|
20
|
-
triggerInstance.setParams('account', '0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6');
|
|
21
|
-
}
|
|
22
|
-
return triggerInstance.toJSON();
|
|
23
|
-
};
|
|
24
|
-
// Explicitly create each trigger
|
|
25
|
-
triggersList.push(createDefaultTrigger(TRIGGERS.TOKENS.ERC20.TRANSFER));
|
|
26
|
-
triggersList.push(createDefaultTrigger(TRIGGERS.YIELD.SPLICE_FI.SWAP));
|
|
27
|
-
triggersList.push(createDefaultTrigger(TRIGGERS.YIELD.SPLICE_FI.LIQUIDITY_REMOVED));
|
|
28
|
-
triggersList.push(createDefaultTrigger(TRIGGERS.YIELD.SPLICE_FI.MARKET_CREATION));
|
|
29
|
-
triggersList.push(createDefaultTrigger(TRIGGERS.YIELD.SPLICE_FI.INTEREST_RATE_UPDATE));
|
|
30
|
-
triggersList.push(createDefaultTrigger(TRIGGERS.LENDING.ASTARIA.LEND_RECALLED));
|
|
31
|
-
triggersList.push(createDefaultTrigger(TRIGGERS.DEXES.ODOS.SWAP));
|
|
32
|
-
triggersList.push(createDefaultTrigger(TRIGGERS.SOCIALS.MODE_NAME_SERVICE.NAME_REGISTERED));
|
|
33
|
-
return triggersList;
|
|
34
|
-
};
|
|
35
|
-
function generateTriggersForAllTokens(chain) {
|
|
36
|
-
if (!(chain in TOKENS)) {
|
|
37
|
-
throw new Error(`Unsupported chain: ${chain}`);
|
|
38
|
-
}
|
|
39
|
-
const tokens = TOKENS[chain];
|
|
40
|
-
const triggersList = [];
|
|
41
|
-
tokens.forEach(token => {
|
|
42
|
-
// Generate transfer trigger
|
|
43
|
-
const transferTrigger = new Trigger(TRIGGERS.TOKENS.ERC20.TRANSFER);
|
|
44
|
-
transferTrigger.setChainId(chain);
|
|
45
|
-
// transferTrigger.setParams("value", 1000);
|
|
46
|
-
// transferTrigger.setParams("to", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
|
|
47
|
-
transferTrigger.setContractAddress(token.contractAddress);
|
|
48
|
-
triggersList.push(transferTrigger);
|
|
49
|
-
// Generate balance trigger
|
|
50
|
-
const balanceTrigger = new Trigger(TRIGGERS.TOKENS.ERC20.BALANCE);
|
|
51
|
-
balanceTrigger.setChainId(chain);
|
|
52
|
-
balanceTrigger.setParams("account", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
|
|
53
|
-
balanceTrigger.setContractAddress(token.contractAddress);
|
|
54
|
-
balanceTrigger.setCondition(">");
|
|
55
|
-
balanceTrigger.setComparisonValue(10);
|
|
56
|
-
triggersList.push(balanceTrigger);
|
|
57
|
-
});
|
|
58
|
-
return triggersList.map(t => t.toJSON());
|
|
59
|
-
}
|
|
60
|
-
const generateSpecificTriggers = () => {
|
|
61
|
-
// Create individual triggers
|
|
62
|
-
const transferTrigger = new Trigger(TRIGGERS.TOKENS.ERC20.TRANSFER);
|
|
63
|
-
transferTrigger.setChainId(CHAINS.ETHEREUM);
|
|
64
|
-
transferTrigger.setParams("value", 1000);
|
|
65
|
-
transferTrigger.setParams("to", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
|
|
66
|
-
transferTrigger.setContractAddress(getTokenFromSymbol(CHAINS.ETHEREUM, 'USDC').contractAddress);
|
|
67
|
-
const balanceTrigger = new Trigger(TRIGGERS.TOKENS.ERC20.BALANCE);
|
|
68
|
-
balanceTrigger.setChainId(CHAINS.ETHEREUM);
|
|
69
|
-
balanceTrigger.setParams("account", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
|
|
70
|
-
balanceTrigger.setContractAddress(getTokenFromSymbol(CHAINS.ETHEREUM, 'USDC').contractAddress);
|
|
71
|
-
balanceTrigger.setCondition(">");
|
|
72
|
-
balanceTrigger.setComparisonValue(45000);
|
|
73
|
-
const spliceFiSwapTrigger = new Trigger(TRIGGERS.YIELD.SPLICE_FI.SWAP);
|
|
74
|
-
spliceFiSwapTrigger.setParams("caller", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
|
|
75
|
-
spliceFiSwapTrigger.setParams("market", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
|
|
76
|
-
spliceFiSwapTrigger.setParams("receiver", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
|
|
77
|
-
spliceFiSwapTrigger.setParams("netPtToAccount", 1000);
|
|
78
|
-
spliceFiSwapTrigger.setParams("netSyToAccount", 2000);
|
|
79
|
-
const liquidityRemovedTrigger = new Trigger(TRIGGERS.YIELD.SPLICE_FI.LIQUIDITY_REMOVED);
|
|
80
|
-
liquidityRemovedTrigger.setParams("caller", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
|
|
81
|
-
liquidityRemovedTrigger.setParams("market", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
|
|
82
|
-
liquidityRemovedTrigger.setParams("receiver", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
|
|
83
|
-
liquidityRemovedTrigger.setParams("netLpToRemove", 1000);
|
|
84
|
-
liquidityRemovedTrigger.setParams("netPtOut", 500);
|
|
85
|
-
liquidityRemovedTrigger.setParams("netSyOut", 1500);
|
|
86
|
-
const marketCreationTrigger = new Trigger(TRIGGERS.YIELD.SPLICE_FI.MARKET_CREATION);
|
|
87
|
-
marketCreationTrigger.setParams("market", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
|
|
88
|
-
marketCreationTrigger.setParams("PT", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
|
|
89
|
-
marketCreationTrigger.setParams("scalarRoot", 1234);
|
|
90
|
-
marketCreationTrigger.setParams("initialAnchor", 5678);
|
|
91
|
-
marketCreationTrigger.setParams("lnFeeRateRoot", 91011);
|
|
92
|
-
const interestRateUpdateTrigger = new Trigger(TRIGGERS.YIELD.SPLICE_FI.INTEREST_RATE_UPDATE);
|
|
93
|
-
interestRateUpdateTrigger.setParams("timestamp", 1627848271);
|
|
94
|
-
interestRateUpdateTrigger.setParams("lastLnImpliedRate", 123456);
|
|
95
|
-
interestRateUpdateTrigger.setContractAddress("0xDE95511418EBD8Bd36294B11C86314DdFA50e212");
|
|
96
|
-
const lendRecalledTrigger = new Trigger(TRIGGERS.LENDING.ASTARIA.LEND_RECALLED);
|
|
97
|
-
lendRecalledTrigger.setParams("loanId", 123456);
|
|
98
|
-
lendRecalledTrigger.setParams("recaller", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
|
|
99
|
-
lendRecalledTrigger.setParams("end", 1627848271);
|
|
100
|
-
const odosSwapTrigger = new Trigger(TRIGGERS.DEXES.ODOS.SWAP);
|
|
101
|
-
odosSwapTrigger.setChainId(CHAINS.ETHEREUM);
|
|
102
|
-
odosSwapTrigger.setParams("sender", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
|
|
103
|
-
odosSwapTrigger.setParams("inputAmount", 1000);
|
|
104
|
-
odosSwapTrigger.setParams("inputToken", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
|
|
105
|
-
odosSwapTrigger.setParams("amountOut", 500);
|
|
106
|
-
odosSwapTrigger.setParams("outputToken", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
|
|
107
|
-
odosSwapTrigger.setParams("exchangeRate", 1.23);
|
|
108
|
-
const nameRegisteredTrigger = new Trigger(TRIGGERS.SOCIALS.MODE_NAME_SERVICE.NAME_REGISTERED);
|
|
109
|
-
nameRegisteredTrigger.setParams("id", 123456);
|
|
110
|
-
nameRegisteredTrigger.setParams("owner", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
|
|
111
|
-
nameRegisteredTrigger.setParams("expires", 1627848271);
|
|
112
|
-
return [
|
|
113
|
-
transferTrigger.toJSON(),
|
|
114
|
-
balanceTrigger.toJSON(),
|
|
115
|
-
spliceFiSwapTrigger.toJSON(),
|
|
116
|
-
liquidityRemovedTrigger.toJSON(),
|
|
117
|
-
marketCreationTrigger.toJSON(),
|
|
118
|
-
interestRateUpdateTrigger.toJSON(),
|
|
119
|
-
lendRecalledTrigger.toJSON(),
|
|
120
|
-
odosSwapTrigger.toJSON(),
|
|
121
|
-
nameRegisteredTrigger.toJSON(),
|
|
122
|
-
];
|
|
123
|
-
};
|
|
124
|
-
// Collect all triggers in a list
|
|
125
|
-
const triggersList = [
|
|
126
|
-
...generateTriggersForAllTokens(CHAINS.ETHEREUM),
|
|
127
|
-
...generateTriggersForAllTokens(CHAINS.MODE),
|
|
128
|
-
...generateDefaultTriggers(),
|
|
129
|
-
...generateSpecificTriggers()
|
|
130
|
-
];
|
|
131
|
-
console.log(triggersList);
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
import { TRIGGERS, CHAINS, Trigger, getTokenFromSymbol, convertToTokenUnits } from '../src/index.js';
|
|
11
|
-
const main = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
12
|
-
const transferTrigger = new Trigger(TRIGGERS.TOKENS.ERC20.TRANSFER);
|
|
13
|
-
const contractAddr = getTokenFromSymbol(CHAINS.ETHEREUM, 'USDC').contractAddress;
|
|
14
|
-
console.log(contractAddr);
|
|
15
|
-
transferTrigger.setChainId(CHAINS.ETHEREUM);
|
|
16
|
-
transferTrigger.setParams("value", yield convertToTokenUnits(1, CHAINS.ETHEREUM, contractAddr));
|
|
17
|
-
transferTrigger.setParams("to", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
|
|
18
|
-
transferTrigger.setContractAddress(contractAddr);
|
|
19
|
-
console.log(JSON.stringify(transferTrigger.toJSON()));
|
|
20
|
-
});
|
|
21
|
-
main();
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
import { ACTIONS, Action, TRIGGERS, Trigger, Workflow, CHAINS, getTokenFromSymbol, Edge, apiServices } from '../src/index.js';
|
|
11
|
-
const main = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
12
|
-
apiServices.setAuth("eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiIweDdjRUI4ZDgxNDdBYWE5ZEI4MUFjQkRGRTVjMzA1MERGQ2ZGMTg1MzciLCJzdWIiOiIweDg3RkU4YjRmMkZlODM3MGY2Y0M5YTk2MzQ0MmYwN0IwMmY0OTA5QTciLCJhdWQiOiJvdG9tYXRvLXRlc3QubmV0bGlmeS5hcHAiLCJleHAiOjE3MjMzODMxOTksIm5iZiI6MTcyMDc4OTM5OSwiaWF0IjoxNzIwNzkxMTk5LCJqdGkiOiIweDY4ZDkxOWEyMGZiYjIyNDUwZDZmOTFjMzM2ZTBmYjBjMmYyYTc3MmU3Zjg4NWU1ZjRmNzg1NTM2ZGIyYTY5YTAiLCJjdHgiOnt9fQ.MHgyOTM1NTM3MWYwOWM1YzllNWE3YjI4MjVkZTNjMDljZTkwMTQ3OTQwZmU1ZWRlMjM5YTk0MmFjYTQ5YTcwZWI0MGJlNmJiZDk2MDA4ZTIxMzJmNGM3ZTVlZGIzZDZiZjYyMDE4Mzc1MzUwMTRmNTc0ODM0ZDk4YWU3NDQwNDQzOTFi");
|
|
13
|
-
const trigger = new Trigger(TRIGGERS.PRICE_ACTION.ON_CHAIN_PRICE_MOVEMENT.PRICE_MOVEMENT_AGAINST_CURRENCY);
|
|
14
|
-
trigger.setChainId(CHAINS.MODE);
|
|
15
|
-
trigger.setComparisonValue(3000);
|
|
16
|
-
trigger.setCondition('gte');
|
|
17
|
-
trigger.setParams('currency', 'USD');
|
|
18
|
-
trigger.setContractAddress(getTokenFromSymbol(CHAINS.MODE, 'WETH').contractAddress);
|
|
19
|
-
trigger.setPosition(0, 0);
|
|
20
|
-
const slackAction = new Action(ACTIONS.NOTIFICATIONS.SLACK.SEND_MESSAGE);
|
|
21
|
-
slackAction.setParams("webhook", "https://hooks.slack.com/services/REPLACE_WITH_YOUR_DATA");
|
|
22
|
-
slackAction.setParams("message", "Notification from the SDK - testing the state");
|
|
23
|
-
slackAction.setPosition(0, -10);
|
|
24
|
-
/*const transferAction = new Action(ACTIONS.TOKENS.ERC20.TRANSFER);
|
|
25
|
-
transferAction.setChainId(CHAINS.ETHEREUM);
|
|
26
|
-
transferAction.setParams("value", 1000);
|
|
27
|
-
transferAction.setParams("to", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
|
|
28
|
-
transferAction.setContractAddress(getTokenFromSymbol(CHAINS.ETHEREUM, 'USDC').contractAddress);*/
|
|
29
|
-
const workflow = new Workflow("test from SDK", [trigger, slackAction]);
|
|
30
|
-
const edge = new Edge({
|
|
31
|
-
source: trigger,
|
|
32
|
-
target: slackAction,
|
|
33
|
-
});
|
|
34
|
-
workflow.addEdge(edge);
|
|
35
|
-
console.log(JSON.stringify(workflow.toJSON()));
|
|
36
|
-
const creationResult = yield workflow.create();
|
|
37
|
-
console.log(workflow.getState());
|
|
38
|
-
if (!creationResult.success) {
|
|
39
|
-
throw new Error("An error occurred when publishing the workflow");
|
|
40
|
-
}
|
|
41
|
-
console.log(workflow.id);
|
|
42
|
-
const runResult = yield workflow.run();
|
|
43
|
-
console.log(workflow.getState());
|
|
44
|
-
if (!runResult.success) {
|
|
45
|
-
throw new Error("An error occurred when running the workflow");
|
|
46
|
-
}
|
|
47
|
-
console.log(`Workflow ${workflow.id} is running`);
|
|
48
|
-
console.log(workflow.getState());
|
|
49
|
-
workflow.setName("ABC");
|
|
50
|
-
const patchResult = yield workflow.update();
|
|
51
|
-
console.log(patchResult);
|
|
52
|
-
console.log(workflow.getState());
|
|
53
|
-
});
|
|
54
|
-
main();
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
import { Workflow, apiServices } from '../src/index.js';
|
|
11
|
-
const main = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
12
|
-
apiServices.setAuth("eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiIweDdjRUI4ZDgxNDdBYWE5ZEI4MUFjQkRGRTVjMzA1MERGQ2ZGMTg1MzciLCJzdWIiOiIweDg3RkU4YjRmMkZlODM3MGY2Y0M5YTk2MzQ0MmYwN0IwMmY0OTA5QTciLCJhdWQiOiJvdG9tYXRvLXRlc3QubmV0bGlmeS5hcHAiLCJleHAiOjE3MjMzODMxOTksIm5iZiI6MTcyMDc4OTM5OSwiaWF0IjoxNzIwNzkxMTk5LCJqdGkiOiIweDY4ZDkxOWEyMGZiYjIyNDUwZDZmOTFjMzM2ZTBmYjBjMmYyYTc3MmU3Zjg4NWU1ZjRmNzg1NTM2ZGIyYTY5YTAiLCJjdHgiOnt9fQ.MHgyOTM1NTM3MWYwOWM1YzllNWE3YjI4MjVkZTNjMDljZTkwMTQ3OTQwZmU1ZWRlMjM5YTk0MmFjYTQ5YTcwZWI0MGJlNmJiZDk2MDA4ZTIxMzJmNGM3ZTVlZGIzZDZiZjYyMDE4Mzc1MzUwMTRmNTc0ODM0ZDk4YWU3NDQwNDQzOTFi");
|
|
13
|
-
const workflows = yield apiServices.getWorkflowsOfUser();
|
|
14
|
-
// console.log(workflows);
|
|
15
|
-
const workflow = yield new Workflow().load(workflows[12].id);
|
|
16
|
-
// const workflow = await new Workflow().load("815666d5-4232-4728-953a-abde4d85c8fd");
|
|
17
|
-
console.log(JSON.stringify(workflow));
|
|
18
|
-
});
|
|
19
|
-
main();
|
package/dist/examples/login.js
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
import { CHAINS, apiServices } from '../src/index.js';
|
|
11
|
-
const main = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
12
|
-
const address = "0x9b1E25bBbee162A26B67B1fb00cf4d67157656F6";
|
|
13
|
-
let payload = yield apiServices.generateLoginPayload(address, CHAINS.ETHEREUM);
|
|
14
|
-
// we replace the payload to fit the signature, don't do that in your implementation
|
|
15
|
-
const signature = '0x92a3b551ff2bc2eb9a3537a0b477af14c33e649c3479c204bb0a4da95bfee89e4ae966e5d555d34c5dfcf3899910c58e936375634f5b0f58978139d25b5b54761b';
|
|
16
|
-
payload = {
|
|
17
|
-
address: '0x9b1E25bBbee162A26B67B1fb00cf4d67157656F6',
|
|
18
|
-
chain_id: '1',
|
|
19
|
-
domain: 'otomato-test.netlify.app',
|
|
20
|
-
expiration_time: '2024-07-16T16:57:34.363Z',
|
|
21
|
-
invalid_before: '2024-07-16T15:57:34.363Z',
|
|
22
|
-
issued_at: '2024-07-16T16:27:34.363Z',
|
|
23
|
-
nonce: '0x4ed46b76a2ccb458bc84bfc3f8aeb43bbc6a2b2f1ae5ee9f10c13ba6bd05f832',
|
|
24
|
-
statement: 'Please ensure that the domain above matches the URL of the current website.',
|
|
25
|
-
version: '1'
|
|
26
|
-
};
|
|
27
|
-
const { token } = yield apiServices.getToken(payload, signature);
|
|
28
|
-
const verify = yield apiServices.verifyToken(token);
|
|
29
|
-
console.log(token);
|
|
30
|
-
console.log(verify);
|
|
31
|
-
});
|
|
32
|
-
main();
|