otomato-sdk 1.2.0 → 1.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.
Files changed (55) hide show
  1. package/dist/examples/create-action.js +2 -2
  2. package/dist/examples/create-automation.js +2 -8
  3. package/dist/examples/create-trigger.js +2 -2
  4. package/dist/examples/create-workflow.js +44 -0
  5. package/dist/examples/load-workflow.js +16 -0
  6. package/dist/examples/sandbox.js +18 -0
  7. package/dist/src/constants/Blocks.js +422 -293
  8. package/dist/src/index.js +1 -1
  9. package/dist/src/models/Edge.js +6 -1
  10. package/dist/src/models/Node.js +79 -6
  11. package/dist/src/models/Trigger.js +6 -3
  12. package/dist/src/models/Workflow.js +67 -0
  13. package/dist/src/services/ApiService.js +24 -18
  14. package/dist/src/utils/typeValidator.js +2 -1
  15. package/dist/test/action.spec.js +20 -17
  16. package/dist/test/automation.spec.js +26 -25
  17. package/dist/test/node.spec.js +34 -30
  18. package/dist/test/trigger.spec.js +8 -3
  19. package/dist/test/typeValidator.spec.js +2 -1
  20. package/dist/types/examples/create-workflow.d.ts +1 -0
  21. package/dist/types/examples/load-workflow.d.ts +1 -0
  22. package/dist/types/examples/sandbox.d.ts +1 -0
  23. package/dist/types/src/constants/Blocks.d.ts +101 -29
  24. package/dist/types/src/index.d.ts +1 -1
  25. package/dist/types/src/models/Action.d.ts +2 -1
  26. package/dist/types/src/models/Edge.d.ts +3 -0
  27. package/dist/types/src/models/Node.d.ts +9 -2
  28. package/dist/types/src/models/Parameter.d.ts +1 -1
  29. package/dist/types/src/models/Trigger.d.ts +3 -1
  30. package/dist/types/src/models/Workflow.d.ts +26 -0
  31. package/dist/types/src/services/ApiService.d.ts +8 -3
  32. package/examples/create-action.ts +2 -2
  33. package/examples/create-trigger.ts +2 -2
  34. package/examples/create-workflow.ts +44 -0
  35. package/examples/load-workflow.ts +10 -0
  36. package/package.json +2 -3
  37. package/src/constants/Blocks.ts +422 -292
  38. package/src/index.ts +1 -1
  39. package/src/models/Action.ts +1 -1
  40. package/src/models/Condition.ts +5 -5
  41. package/src/models/Edge.ts +8 -2
  42. package/src/models/Node.ts +90 -10
  43. package/src/models/Parameter.ts +5 -5
  44. package/src/models/Trigger.ts +9 -5
  45. package/src/models/Workflow.ts +69 -0
  46. package/src/services/ApiService.ts +26 -19
  47. package/src/utils/typeValidator.ts +2 -1
  48. package/test/action.spec.ts +11 -9
  49. package/test/automation.spec.ts +27 -26
  50. package/test/node.spec.ts +34 -30
  51. package/test/trigger.spec.ts +8 -3
  52. package/test/typeValidator.spec.ts +2 -1
  53. package/examples/create-automation.ts +0 -41
  54. package/src/constants/json.json +0 -16
  55. package/src/models/Automation.ts +0 -47
@@ -47,7 +47,8 @@ describe('Type Validator Utility Functions', () => {
47
47
  expect(validateType('paragraph', 12345)).to.be.false;
48
48
  });
49
49
  it('should validate logic operators', () => {
50
- expect(validateType('logic_operator', '>')).to.be.true;
50
+ expect(validateType('logic_operator', 'gte')).to.be.true;
51
+ expect(validateType('logic_operator', '>')).to.be.false;
51
52
  expect(validateType('logic_operator', 'invalid_operator')).to.be.false;
52
53
  });
53
54
  it('should validate any type', () => {
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -2,117 +2,189 @@ import { Parameter } from '../models/Parameter.js';
2
2
  export declare const TRIGGERS: {
3
3
  TOKENS: {
4
4
  ERC20: {
5
- CHAINS: number[];
5
+ description: string;
6
+ chains: number[];
7
+ image: string;
6
8
  TRANSFER: {
7
- id: number;
8
9
  name: string;
9
10
  description: string;
10
11
  type: number;
11
12
  parameters: Parameter[];
13
+ blockId: number;
14
+ image: string;
12
15
  };
13
16
  BALANCE: {
14
- id: number;
15
17
  name: string;
16
18
  description: string;
17
19
  type: number;
20
+ method: string;
21
+ handler: string;
18
22
  parameters: Parameter[];
23
+ blockId: number;
24
+ image: string;
19
25
  };
20
26
  };
21
27
  };
22
28
  YIELD: {
23
29
  SPLICE_FI: {
24
- CHAINS: number[];
30
+ description: string;
31
+ chains: number[];
32
+ image: string;
25
33
  SWAP: {
26
- id: number;
27
34
  name: string;
28
35
  description: string;
29
36
  type: number;
37
+ contractAddress: string;
30
38
  parameters: Parameter[];
39
+ blockId: number;
40
+ image: string;
31
41
  };
32
42
  LIQUIDITY_REMOVED: {
33
- id: number;
34
43
  name: string;
35
44
  description: string;
36
45
  type: number;
46
+ contractAddress: string;
37
47
  parameters: Parameter[];
48
+ blockId: number;
49
+ image: string;
38
50
  };
39
51
  MARKET_CREATION: {
40
- id: number;
41
52
  name: string;
42
53
  description: string;
43
54
  type: number;
55
+ contractAddress: string;
44
56
  parameters: Parameter[];
57
+ blockId: number;
58
+ image: string;
45
59
  };
46
60
  INTEREST_RATE_UPDATE: {
47
- id: number;
48
61
  name: string;
49
62
  description: string;
50
63
  type: number;
64
+ contractAddress: string;
51
65
  parameters: Parameter[];
66
+ blockId: number;
67
+ image: string;
52
68
  };
53
69
  };
54
70
  };
55
71
  LENDING: {
56
72
  ASTARIA: {
57
- CHAINS: number[];
73
+ description: string;
74
+ chains: number[];
75
+ image: string;
58
76
  LEND_RECALLED: {
59
- id: number;
60
77
  name: string;
61
78
  description: string;
62
79
  type: number;
80
+ contractAddress: string;
63
81
  parameters: Parameter[];
82
+ blockId: number;
83
+ image: string;
64
84
  };
65
85
  };
66
86
  };
67
87
  DEXES: {
68
88
  ODOS: {
69
- CHAINS: number[];
89
+ description: string;
90
+ chains: number[];
91
+ image: string;
70
92
  SWAP: {
71
- id: number;
72
93
  name: string;
73
94
  description: string;
74
95
  type: number;
96
+ contractAddress: string;
75
97
  parameters: Parameter[];
98
+ blockId: number;
99
+ image: string;
76
100
  };
77
101
  };
78
102
  };
79
103
  SOCIALS: {
80
104
  MODE_NAME_SERVICE: {
81
- CHAINS: number[];
105
+ description: string;
106
+ chains: number[];
107
+ image: string;
82
108
  NAME_REGISTERED: {
83
- id: number;
84
109
  name: string;
85
110
  description: string;
86
111
  type: number;
112
+ contractAddress: string;
87
113
  parameters: Parameter[];
114
+ blockId: number;
115
+ image: string;
88
116
  };
89
117
  };
90
118
  };
91
- };
92
- export declare const ACTIONS: {
93
- TOKENS: {
94
- ERC20: {
95
- CHAINS: number[];
96
- TRANSFER: {
97
- id: number;
119
+ PRICE_ACTION: {
120
+ ON_CHAIN_PRICE_MOVEMENT: {
121
+ description: string;
122
+ chains: number[];
123
+ image: string;
124
+ PRICE_MOVEMENT_AGAINST_CURRENCY: {
98
125
  name: string;
99
126
  description: string;
127
+ type: number;
100
128
  parameters: Parameter[];
129
+ blockId: number;
130
+ image: string;
101
131
  };
102
132
  };
103
133
  };
134
+ };
135
+ export declare const ACTIONS: {
104
136
  NOTIFICATIONS: {
105
- SMS: {
106
- id: number;
107
- name: string;
137
+ SLACK: {
108
138
  description: string;
109
- parameters: Parameter[];
139
+ image: string;
140
+ SEND_MESSAGE: {
141
+ name: string;
142
+ type: number;
143
+ description: string;
144
+ parameters: Parameter[];
145
+ blockId: number;
146
+ image: string;
147
+ };
110
148
  };
111
- SLACK: {
112
- id: number;
113
- name: string;
149
+ DISCORD: {
150
+ description: string;
151
+ image: string;
152
+ SEND_MESSAGE: {
153
+ name: string;
154
+ type: number;
155
+ description: string;
156
+ parameters: Parameter[];
157
+ blockId: number;
158
+ image: string;
159
+ };
160
+ };
161
+ TELEGRAM: {
162
+ description: string;
163
+ image: string;
164
+ SEND_MESSAGE: {
165
+ name: string;
166
+ type: number;
167
+ description: string;
168
+ parameters: Parameter[];
169
+ blockId: number;
170
+ image: string;
171
+ };
172
+ };
173
+ };
174
+ TOKENS: {
175
+ ERC20: {
114
176
  description: string;
115
- parameters: Parameter[];
177
+ chains: number[];
178
+ image: string;
179
+ TRANSFER: {
180
+ name: string;
181
+ description: string;
182
+ type: number;
183
+ method: string;
184
+ parameters: Parameter[];
185
+ blockId: number;
186
+ image: string;
187
+ };
116
188
  };
117
189
  };
118
190
  };
@@ -2,7 +2,7 @@ export * from './constants/Blocks.js';
2
2
  export * from './constants/chains.js';
3
3
  export * from './constants/tokens.js';
4
4
  export * from './models/Action.js';
5
- export * from './models/Automation.js';
5
+ export * from './models/Workflow.js';
6
6
  export * from './models/Condition.js';
7
7
  export * from './models/Parameter.js';
8
8
  export * from './models/Trigger.js';
@@ -2,10 +2,11 @@ import { Parameter } from './Parameter.js';
2
2
  import { Node, Position } from './Node.js';
3
3
  export declare class Action extends Node {
4
4
  constructor(action: {
5
- id: number;
5
+ blockId: number;
6
6
  name: string;
7
7
  description: string;
8
8
  parameters: Parameter[];
9
+ image: string;
9
10
  ref?: string;
10
11
  position?: Position;
11
12
  });
@@ -11,4 +11,7 @@ export declare class Edge {
11
11
  toJSON(): {
12
12
  [key: string]: any;
13
13
  };
14
+ static fromJSON(json: {
15
+ [key: string]: any;
16
+ }): Edge;
14
17
  }
@@ -4,7 +4,8 @@ export interface Position {
4
4
  y: number;
5
5
  }
6
6
  export declare class Node {
7
- id: number;
7
+ id: string | null;
8
+ blockId: number;
8
9
  name: string;
9
10
  description: string;
10
11
  parameters: {
@@ -16,15 +17,18 @@ export declare class Node {
16
17
  position?: Position;
17
18
  ref: string;
18
19
  class: string;
20
+ image: string;
19
21
  constructor(node: {
20
- id: number;
22
+ blockId: number;
21
23
  name: string;
22
24
  description: string;
23
25
  parameters: Parameter[];
24
26
  ref?: string;
25
27
  position?: Position;
26
28
  class: string;
29
+ image: string;
27
30
  });
31
+ setId(id: string): void;
28
32
  setChainId(value: number): void;
29
33
  setContractAddress(value: string): void;
30
34
  setParams(key: string, value: any): void;
@@ -39,4 +43,7 @@ export declare class Node {
39
43
  [key: string]: any;
40
44
  };
41
45
  private getSimplifiedKey;
46
+ static fromJSON(json: {
47
+ [key: string]: any;
48
+ }): Node;
42
49
  }
@@ -2,5 +2,5 @@ export interface Parameter {
2
2
  key: string;
3
3
  type: string;
4
4
  description: string;
5
- value: any;
5
+ value?: any;
6
6
  }
@@ -3,14 +3,16 @@ import { Node, Position } from './Node.js';
3
3
  export declare class Trigger extends Node {
4
4
  type: number;
5
5
  constructor(trigger: {
6
- id: number;
6
+ blockId: number;
7
7
  name: string;
8
8
  description: string;
9
9
  type: number;
10
10
  parameters: Parameter[];
11
+ image: string;
11
12
  ref?: string;
12
13
  position?: Position;
13
14
  });
15
+ private notAPollingTrigger;
14
16
  setCondition(value: string): void;
15
17
  setComparisonValue(value: number): void;
16
18
  setInterval(value: number): void;
@@ -0,0 +1,26 @@
1
+ import { Node } from './Node.js';
2
+ import { Edge } from './Edge.js';
3
+ export declare class Workflow {
4
+ id: string | null;
5
+ name: string;
6
+ nodes: Node[];
7
+ edges: Edge[];
8
+ constructor(name?: string, nodes?: Node[], edges?: Edge[]);
9
+ setName(name: string): void;
10
+ addNode(node: Node): void;
11
+ addNodes(nodes: Node[]): void;
12
+ addEdge(edge: Edge): void;
13
+ addEdges(edges: Edge[]): void;
14
+ toJSON(): {
15
+ id: string | null;
16
+ name: string;
17
+ nodes: {
18
+ [key: string]: any;
19
+ }[];
20
+ edges: {
21
+ [key: string]: any;
22
+ }[];
23
+ };
24
+ create(): Promise<any>;
25
+ load(workflowId: string): Promise<Workflow>;
26
+ }
@@ -1,3 +1,8 @@
1
- export declare const apiServices: {
2
- post(endpoint: string, data: any): Promise<any>;
3
- };
1
+ declare class ApiServices {
2
+ private cookie;
3
+ setCookie(cookie: string): void;
4
+ post(url: string, data: any): Promise<any>;
5
+ get(url: string): Promise<any>;
6
+ }
7
+ export declare const apiServices: ApiServices;
8
+ export {};
@@ -11,14 +11,14 @@ const createAction = () => {
11
11
  console.log(transferAction.toJSON());
12
12
 
13
13
  // Create an SMS notification action
14
- const smsAction = new Action(ACTIONS.NOTIFICATIONS.SMS);
14
+ const smsAction = new Action(ACTIONS.NOTIFICATIONS.DISCORD.SEND_MESSAGE);
15
15
  smsAction.setParams("phoneNumber", "+1234567890");
16
16
  smsAction.setParams("text", "This is a test message");
17
17
 
18
18
  console.log(smsAction.toJSON());
19
19
 
20
20
  // Create a Slack notification action
21
- const slackAction = new Action(ACTIONS.NOTIFICATIONS.SLACK);
21
+ const slackAction = new Action(ACTIONS.NOTIFICATIONS.SLACK.SEND_MESSAGE);
22
22
  slackAction.setParams("webhook", "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX");
23
23
  slackAction.setParams("text", "This is a test message");
24
24
 
@@ -6,7 +6,7 @@ const transferTrigger = new Trigger(TRIGGERS.TOKENS.ERC20.TRANSFER);
6
6
 
7
7
  transferTrigger.setChainId(CHAINS.ETHEREUM);
8
8
  // transferTrigger.setParams("value", 1000);
9
- // transferTrigger.setParams("to", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
9
+ transferTrigger.setParams("to", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
10
10
  transferTrigger.setContractAddress(getToken(CHAINS.ETHEREUM, 'USDC').contractAddress);
11
11
 
12
- console.log(transferTrigger.toJSON());
12
+ console.log(JSON.stringify(transferTrigger.toJSON(), null, 2));
@@ -0,0 +1,44 @@
1
+ import { ACTIONS, Action, TRIGGERS, Trigger, Workflow, CHAINS, getToken, Edge, apiServices } from '../src/index.js';
2
+
3
+ const main = async () => {
4
+
5
+ apiServices.setCookie("eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiIweDdjRUI4ZDgxNDdBYWE5ZEI4MUFjQkRGRTVjMzA1MERGQ2ZGMTg1MzciLCJzdWIiOiIweDg3RkU4YjRmMkZlODM3MGY2Y0M5YTk2MzQ0MmYwN0IwMmY0OTA5QTciLCJhdWQiOiJvdG9tYXRvLXRlc3QubmV0bGlmeS5hcHAiLCJleHAiOjE3MjMzODMxOTksIm5iZiI6MTcyMDc4OTM5OSwiaWF0IjoxNzIwNzkxMTk5LCJqdGkiOiIweDY4ZDkxOWEyMGZiYjIyNDUwZDZmOTFjMzM2ZTBmYjBjMmYyYTc3MmU3Zjg4NWU1ZjRmNzg1NTM2ZGIyYTY5YTAiLCJjdHgiOnt9fQ.MHgyOTM1NTM3MWYwOWM1YzllNWE3YjI4MjVkZTNjMDljZTkwMTQ3OTQwZmU1ZWRlMjM5YTk0MmFjYTQ5YTcwZWI0MGJlNmJiZDk2MDA4ZTIxMzJmNGM3ZTVlZGIzZDZiZjYyMDE4Mzc1MzUwMTRmNTc0ODM0ZDk4YWU3NDQwNDQzOTFi");
6
+
7
+ const usdcTransferTrigger = new Trigger({
8
+ blockId: TRIGGERS.TOKENS.ERC20.TRANSFER.blockId,
9
+ name: TRIGGERS.TOKENS.ERC20.TRANSFER.name,
10
+ description: TRIGGERS.TOKENS.ERC20.TRANSFER.description,
11
+ type: TRIGGERS.TOKENS.ERC20.TRANSFER.type,
12
+ parameters: TRIGGERS.TOKENS.ERC20.TRANSFER.parameters,
13
+ image: TRIGGERS.TOKENS.ERC20.TRANSFER.image,
14
+ ref: 'n-1',
15
+ });
16
+ usdcTransferTrigger.setChainId(CHAINS.ETHEREUM);
17
+ usdcTransferTrigger.setContractAddress(getToken(CHAINS.ETHEREUM, 'USDC').contractAddress);
18
+ usdcTransferTrigger.setPosition(0, 0);
19
+
20
+ const slackAction = new Action(ACTIONS.NOTIFICATIONS.SLACK.SEND_MESSAGE);
21
+ slackAction.setParams("webhook", "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX");
22
+ slackAction.setParams("message", "USDC has been transferred!");
23
+ slackAction.setPosition(0, -10);
24
+
25
+ const workflow = new Workflow("USDC Transfer Notification", [usdcTransferTrigger, slackAction]);
26
+
27
+ const edge = new Edge({
28
+ source: usdcTransferTrigger,
29
+ target: slackAction,
30
+ });
31
+
32
+ workflow.addEdge(edge);
33
+
34
+ // console.log(JSON.stringify(workflow.toJSON(), null, 2));
35
+ return;
36
+ const res = await workflow.create();
37
+ console.log(res);
38
+ console.log(`Workflow ID: ${workflow.id}`); // This will print the ID of the created workflow
39
+ workflow.nodes.forEach(node => {
40
+ console.log(`Node ${node.getRef()} ID: ${node.id}`);
41
+ });
42
+ }
43
+
44
+ main();
@@ -0,0 +1,10 @@
1
+ import { ACTIONS, Action, TRIGGERS, Trigger, Workflow, CHAINS, getToken, Edge, apiServices } from '../src/index.js';
2
+
3
+ const main = async () => {
4
+
5
+ apiServices.setCookie("eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiIweDdjRUI4ZDgxNDdBYWE5ZEI4MUFjQkRGRTVjMzA1MERGQ2ZGMTg1MzciLCJzdWIiOiIweDg3RkU4YjRmMkZlODM3MGY2Y0M5YTk2MzQ0MmYwN0IwMmY0OTA5QTciLCJhdWQiOiJvdG9tYXRvLXRlc3QubmV0bGlmeS5hcHAiLCJleHAiOjE3MjMzODMxOTksIm5iZiI6MTcyMDc4OTM5OSwiaWF0IjoxNzIwNzkxMTk5LCJqdGkiOiIweDY4ZDkxOWEyMGZiYjIyNDUwZDZmOTFjMzM2ZTBmYjBjMmYyYTc3MmU3Zjg4NWU1ZjRmNzg1NTM2ZGIyYTY5YTAiLCJjdHgiOnt9fQ.MHgyOTM1NTM3MWYwOWM1YzllNWE3YjI4MjVkZTNjMDljZTkwMTQ3OTQwZmU1ZWRlMjM5YTk0MmFjYTQ5YTcwZWI0MGJlNmJiZDk2MDA4ZTIxMzJmNGM3ZTVlZGIzZDZiZjYyMDE4Mzc1MzUwMTRmNTc0ODM0ZDk4YWU3NDQwNDQzOTFi");
6
+ const workflow = await new Workflow().load("0b9bd533-339c-42b5-9ed3-a6a40fcfa8d3");
7
+ console.log(workflow)
8
+ }
9
+
10
+ main();
package/package.json CHANGED
@@ -1,14 +1,13 @@
1
1
  {
2
2
  "name": "otomato-sdk",
3
- "version": "1.2.0",
3
+ "version": "1.3.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
8
  "scripts": {
9
9
  "build": "npx tsc",
10
- "test": "mocha --config .mocharc.json",
11
- "publish": "npm publish"
10
+ "test": "mocha --config .mocharc.json"
12
11
  },
13
12
  "keywords": [
14
13
  "sdk",