otomato-sdk 1.0.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 (47) hide show
  1. package/.mocharc.json +8 -0
  2. package/LICENSE +21 -0
  3. package/README.md +67 -0
  4. package/dist/examples/create-trigger-list.js +136 -0
  5. package/dist/examples/create-trigger.js +7 -0
  6. package/dist/src/constants/ActionBlocks.js +321 -0
  7. package/dist/src/constants/chains.js +5 -0
  8. package/dist/src/constants/tokens.js +82 -0
  9. package/dist/src/index.js +13 -0
  10. package/dist/src/models/Action.js +1 -0
  11. package/dist/src/models/Automation.js +1 -0
  12. package/dist/src/models/Condition.js +1 -0
  13. package/dist/src/models/Parameter.js +1 -0
  14. package/dist/src/models/Trigger.js +110 -0
  15. package/dist/src/services/ApiService.js +1 -0
  16. package/dist/src/services/AutomationService.js +1 -0
  17. package/dist/test/trigger.spec.js +72 -0
  18. package/dist/types/examples/create-trigger-list.d.ts +1 -0
  19. package/dist/types/examples/create-trigger.d.ts +1 -0
  20. package/dist/types/src/constants/ActionBlocks.d.ts +91 -0
  21. package/dist/types/src/constants/chains.d.ts +5 -0
  22. package/dist/types/src/constants/tokens.d.ts +11 -0
  23. package/dist/types/src/index.d.ts +10 -0
  24. package/dist/types/src/models/Action.d.ts +6 -0
  25. package/dist/types/src/models/Automation.d.ts +6 -0
  26. package/dist/types/src/models/Condition.d.ts +6 -0
  27. package/dist/types/src/models/Parameter.d.ts +6 -0
  28. package/dist/types/src/models/Trigger.d.ts +37 -0
  29. package/dist/types/src/services/ApiService.d.ts +6 -0
  30. package/dist/types/src/services/AutomationService.d.ts +6 -0
  31. package/dist/types/test/trigger.spec.d.ts +1 -0
  32. package/examples/create-trigger-list.ts +159 -0
  33. package/examples/create-trigger.ts +12 -0
  34. package/package.json +37 -0
  35. package/src/constants/ActionBlocks.ts +324 -0
  36. package/src/constants/chains.ts +5 -0
  37. package/src/constants/tokens.ts +97 -0
  38. package/src/index.ts +15 -0
  39. package/src/models/Action.ts +6 -0
  40. package/src/models/Automation.ts +6 -0
  41. package/src/models/Condition.ts +6 -0
  42. package/src/models/Parameter.ts +6 -0
  43. package/src/models/Trigger.ts +128 -0
  44. package/src/services/ApiService.ts +6 -0
  45. package/src/services/AutomationService.ts +6 -0
  46. package/test/trigger.spec.ts +86 -0
  47. package/tsconfig.json +16 -0
@@ -0,0 +1,110 @@
1
+ import { ethers } from 'ethers';
2
+ export class Trigger {
3
+ constructor(trigger) {
4
+ this.id = trigger.id;
5
+ this.name = trigger.name;
6
+ this.description = trigger.description;
7
+ this.type = trigger.type;
8
+ this.parameters = {};
9
+ this.keyMap = {};
10
+ trigger.parameters.forEach(param => {
11
+ this.parameters[param.key] = Object.assign(Object.assign({}, param), { value: null });
12
+ const simplifiedKey = this.getSimplifiedKey(param.key);
13
+ this.keyMap[simplifiedKey] = param.key;
14
+ });
15
+ }
16
+ setChainId(value) {
17
+ this.setParameter('chainId', value);
18
+ }
19
+ setContractAddress(value) {
20
+ this.setParameter('contractAddress', value);
21
+ }
22
+ setCondition(value) {
23
+ if (this.type !== 1) {
24
+ throw new Error('Condition setting is not applicable for subscription based triggers.');
25
+ }
26
+ this.setParameter('condition', value);
27
+ }
28
+ setComparisonValue(value) {
29
+ if (this.type !== 1) {
30
+ throw new Error('Comparison value setting is not applicable for subscription based triggers.');
31
+ }
32
+ this.setParameter('comparisonValue', value);
33
+ }
34
+ setInterval(value) {
35
+ if (this.type !== 1) {
36
+ throw new Error('Interval setting is not applicable for subscription based triggers.');
37
+ }
38
+ this.setParameter('interval', value);
39
+ }
40
+ setParams(key, value) {
41
+ const fullKey = `abiParams.${key}`;
42
+ if (fullKey in this.parameters) {
43
+ this.setParameter(fullKey, value);
44
+ }
45
+ else {
46
+ throw new Error(`Parameter with simplified key ${key} not found in abiParams`);
47
+ }
48
+ }
49
+ setParameter(key, value) {
50
+ if (key in this.parameters) {
51
+ const param = this.parameters[key];
52
+ if (this.validateType(param.type, value)) {
53
+ this.parameters[key].value = value;
54
+ }
55
+ else {
56
+ throw new Error(`Invalid type for parameter ${key}. Expected ${param.type}.`);
57
+ }
58
+ }
59
+ else {
60
+ throw new Error(`Parameter with key ${key} not found`);
61
+ }
62
+ }
63
+ validateType(expectedType, value) {
64
+ switch (expectedType) {
65
+ case 'int':
66
+ case 'integer':
67
+ case 'uint256':
68
+ case 'int256':
69
+ return Number.isInteger(value);
70
+ case 'address':
71
+ return typeof value === 'string' && this.isAddress(value);
72
+ case 'float':
73
+ return typeof value === 'number';
74
+ case 'logic_operator':
75
+ const validOperators = new Set(['<', '>', '<=', '>=', '==']);
76
+ return typeof value === 'string' && validOperators.has(value);
77
+ case 'any':
78
+ return true;
79
+ default:
80
+ return false;
81
+ }
82
+ }
83
+ isAddress(value) {
84
+ return ethers.isAddress(value);
85
+ }
86
+ getParameter(key) {
87
+ if (key in this.parameters) {
88
+ return this.parameters[key].value;
89
+ }
90
+ else {
91
+ throw new Error(`Parameter with key ${key} not found`);
92
+ }
93
+ }
94
+ getParameters() {
95
+ return Object.keys(this.parameters).reduce((acc, key) => {
96
+ acc[key] = this.parameters[key].value;
97
+ return acc;
98
+ }, {});
99
+ }
100
+ toJSON() {
101
+ const json = {
102
+ id: this.id,
103
+ parameters: this.getParameters(),
104
+ };
105
+ return json;
106
+ }
107
+ getSimplifiedKey(key) {
108
+ return key.replace(/[.\[\]]/g, '_');
109
+ }
110
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,72 @@
1
+ import { expect } from 'chai';
2
+ import { Trigger, TRIGGERS, getToken, CHAINS } from '../src/index';
3
+ const DEFAULT_ADDRESS = "0x0000000000000000000000000000000000000000";
4
+ describe('Trigger Class', () => {
5
+ it('should create a transfer trigger without parameters', () => {
6
+ const transferTrigger = new Trigger(TRIGGERS.TOKENS.ERC20.TRANSFER);
7
+ const params = transferTrigger.getParameters();
8
+ expect(params.chainId).to.be.null;
9
+ expect(params['abiParams.value']).to.be.null;
10
+ expect(params['abiParams.to']).to.be.null;
11
+ expect(params.contractAddress).to.be.null;
12
+ });
13
+ it('should create a transfer trigger and set parameters correctly', () => {
14
+ const transferTrigger = new Trigger(TRIGGERS.TOKENS.ERC20.TRANSFER);
15
+ transferTrigger.setChainId(CHAINS.ETHEREUM);
16
+ transferTrigger.setParams("value", 1000);
17
+ transferTrigger.setParams("to", DEFAULT_ADDRESS);
18
+ transferTrigger.setContractAddress(getToken(CHAINS.ETHEREUM, 'USDC').contractAddress);
19
+ const params = transferTrigger.getParameters();
20
+ expect(params.chainId).to.equal(CHAINS.ETHEREUM);
21
+ expect(params['abiParams.value']).to.equal(1000);
22
+ expect(params['abiParams.to']).to.equal(DEFAULT_ADDRESS);
23
+ expect(params.contractAddress).to.equal(getToken(CHAINS.ETHEREUM, 'USDC').contractAddress);
24
+ });
25
+ it('should be able to export a trigger as json', () => {
26
+ const transferTrigger = new Trigger(TRIGGERS.TOKENS.ERC20.TRANSFER);
27
+ transferTrigger.setChainId(CHAINS.ETHEREUM);
28
+ transferTrigger.setParams("value", 1000);
29
+ transferTrigger.setParams("to", DEFAULT_ADDRESS);
30
+ transferTrigger.setContractAddress(getToken(CHAINS.ETHEREUM, 'USDC').contractAddress);
31
+ const json = transferTrigger.toJSON();
32
+ expect(json).to.deep.equal({
33
+ id: TRIGGERS.TOKENS.ERC20.TRANSFER.id,
34
+ parameters: {
35
+ chainId: CHAINS.ETHEREUM,
36
+ 'abiParams.value': 1000,
37
+ 'abiParams.to': DEFAULT_ADDRESS,
38
+ contractAddress: getToken(CHAINS.ETHEREUM, 'USDC').contractAddress
39
+ }
40
+ });
41
+ });
42
+ it('should create a balance trigger with polling parameters correctly', () => {
43
+ const balanceTrigger = new Trigger(TRIGGERS.TOKENS.ERC20.BALANCE);
44
+ balanceTrigger.setChainId(CHAINS.ETHEREUM);
45
+ balanceTrigger.setParams("account", DEFAULT_ADDRESS);
46
+ balanceTrigger.setContractAddress(getToken(CHAINS.ETHEREUM, 'USDC').contractAddress);
47
+ balanceTrigger.setCondition(">");
48
+ balanceTrigger.setComparisonValue(45000);
49
+ balanceTrigger.setInterval(5000);
50
+ const params = balanceTrigger.getParameters();
51
+ expect(params.chainId).to.equal(CHAINS.ETHEREUM);
52
+ expect(params['abiParams.account']).to.equal(DEFAULT_ADDRESS);
53
+ expect(params.contractAddress).to.equal(getToken(CHAINS.ETHEREUM, 'USDC').contractAddress);
54
+ expect(balanceTrigger.toJSON().condition).to.equal(">");
55
+ expect(balanceTrigger.toJSON().comparisonValue).to.equal(45000);
56
+ expect(balanceTrigger.toJSON().interval).to.equal(5000);
57
+ });
58
+ it('should not be able to set conditions, comparison value and interval for subscription based triggers', () => {
59
+ const transferTrigger = new Trigger(TRIGGERS.TOKENS.ERC20.TRANSFER);
60
+ expect(() => transferTrigger.setCondition(">")).to.throw('Condition setting is not applicable for subscription based triggers.');
61
+ expect(() => transferTrigger.setComparisonValue(45000)).to.throw('Comparison value setting is not applicable for subscription based triggers.');
62
+ expect(() => transferTrigger.setInterval(5000)).to.throw('Interval setting is not applicable for subscription based triggers.');
63
+ });
64
+ it('should throw an error for invalid parameter type', () => {
65
+ const transferTrigger = new Trigger(TRIGGERS.TOKENS.ERC20.TRANSFER);
66
+ expect(() => transferTrigger.setParams("value", "invalid")).to.throw('Invalid type for parameter abiParams.value. Expected uint256.');
67
+ });
68
+ it('should throw an error for invalid address', () => {
69
+ const transferTrigger = new Trigger(TRIGGERS.TOKENS.ERC20.TRANSFER);
70
+ expect(() => transferTrigger.setParams("to", "invalid_address")).to.throw('Invalid type for parameter abiParams.to. Expected address.');
71
+ });
72
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,91 @@
1
+ import { Parameter } from '../models/Parameter.js';
2
+ export declare const TRIGGERS: {
3
+ TOKENS: {
4
+ ERC20: {
5
+ CHAINS: number[];
6
+ TRANSFER: {
7
+ id: number;
8
+ name: string;
9
+ description: string;
10
+ type: number;
11
+ parameters: Parameter[];
12
+ };
13
+ BALANCE: {
14
+ id: number;
15
+ name: string;
16
+ description: string;
17
+ type: number;
18
+ parameters: Parameter[];
19
+ };
20
+ };
21
+ };
22
+ YIELD: {
23
+ SPLICE_FI: {
24
+ CHAINS: number[];
25
+ SWAP: {
26
+ id: number;
27
+ name: string;
28
+ description: string;
29
+ type: number;
30
+ parameters: Parameter[];
31
+ };
32
+ LIQUIDITY_REMOVED: {
33
+ id: number;
34
+ name: string;
35
+ description: string;
36
+ type: number;
37
+ parameters: Parameter[];
38
+ };
39
+ MARKET_CREATION: {
40
+ id: number;
41
+ name: string;
42
+ description: string;
43
+ type: number;
44
+ parameters: Parameter[];
45
+ };
46
+ INTEREST_RATE_UPDATE: {
47
+ id: number;
48
+ name: string;
49
+ description: string;
50
+ type: number;
51
+ parameters: Parameter[];
52
+ };
53
+ };
54
+ };
55
+ LENDING: {
56
+ ASTARIA: {
57
+ CHAINS: number[];
58
+ LEND_RECALLED: {
59
+ id: number;
60
+ name: string;
61
+ description: string;
62
+ type: number;
63
+ parameters: Parameter[];
64
+ };
65
+ };
66
+ };
67
+ DEXES: {
68
+ ODOS: {
69
+ CHAINS: number[];
70
+ SWAP: {
71
+ id: number;
72
+ name: string;
73
+ description: string;
74
+ type: number;
75
+ parameters: Parameter[];
76
+ };
77
+ };
78
+ };
79
+ SOCIALS: {
80
+ MODE_NAME_SERVICE: {
81
+ CHAINS: number[];
82
+ NAME_REGISTERED: {
83
+ id: number;
84
+ name: string;
85
+ description: string;
86
+ type: number;
87
+ parameters: Parameter[];
88
+ };
89
+ };
90
+ };
91
+ };
@@ -0,0 +1,5 @@
1
+ export declare const CHAINS: {
2
+ ALL: number;
3
+ ETHEREUM: number;
4
+ MODE: number;
5
+ };
@@ -0,0 +1,11 @@
1
+ export interface Token {
2
+ contractAddress: string;
3
+ name: string;
4
+ symbol: string;
5
+ decimals: number;
6
+ }
7
+ export interface Tokens {
8
+ [key: number]: Token[];
9
+ }
10
+ export declare const TOKENS: Tokens;
11
+ export declare function getToken(chain: number, symbol: string): Token;
@@ -0,0 +1,10 @@
1
+ export * from './constants/ActionBlocks.js';
2
+ export * from './constants/chains.js';
3
+ export * from './constants/tokens.js';
4
+ export * from './models/Action.js';
5
+ export * from './models/Automation.js';
6
+ export * from './models/Condition.js';
7
+ export * from './models/Parameter.js';
8
+ export * from './models/Trigger.js';
9
+ export * from './services/ApiService.js';
10
+ export * from './services/AutomationService.js';
@@ -0,0 +1,6 @@
1
+ export interface Action {
2
+ key: string;
3
+ type: string;
4
+ description: string;
5
+ value: any;
6
+ }
@@ -0,0 +1,6 @@
1
+ export interface Automation {
2
+ key: string;
3
+ type: string;
4
+ description: string;
5
+ value: any;
6
+ }
@@ -0,0 +1,6 @@
1
+ export interface COndition {
2
+ key: string;
3
+ type: string;
4
+ description: string;
5
+ value: any;
6
+ }
@@ -0,0 +1,6 @@
1
+ export interface Parameter {
2
+ key: string;
3
+ type: string;
4
+ description: string;
5
+ value: any;
6
+ }
@@ -0,0 +1,37 @@
1
+ import { Parameter } from './Parameter.js';
2
+ export declare class Trigger {
3
+ id: number;
4
+ name: string;
5
+ description: string;
6
+ type: number;
7
+ parameters: {
8
+ [key: string]: Parameter;
9
+ };
10
+ keyMap: {
11
+ [key: string]: string;
12
+ };
13
+ constructor(trigger: {
14
+ id: number;
15
+ name: string;
16
+ description: string;
17
+ type: number;
18
+ parameters: Parameter[];
19
+ });
20
+ setChainId(value: number): void;
21
+ setContractAddress(value: string): void;
22
+ setCondition(value: string): void;
23
+ setComparisonValue(value: number): void;
24
+ setInterval(value: number): void;
25
+ setParams(key: string, value: any): void;
26
+ private setParameter;
27
+ private validateType;
28
+ private isAddress;
29
+ getParameter(key: string): any;
30
+ getParameters(): {
31
+ [key: string]: any;
32
+ };
33
+ toJSON(): {
34
+ [key: string]: any;
35
+ };
36
+ private getSimplifiedKey;
37
+ }
@@ -0,0 +1,6 @@
1
+ export interface APISERVICES {
2
+ key: string;
3
+ type: string;
4
+ description: string;
5
+ value: any;
6
+ }
@@ -0,0 +1,6 @@
1
+ export interface AUTOSERVICES {
2
+ key: string;
3
+ type: string;
4
+ description: string;
5
+ value: any;
6
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,159 @@
1
+ import { TRIGGERS, getToken, TOKENS, CHAINS, Trigger } from '../src/index.js';
2
+
3
+ const generateDefaultTriggers = (): any[] => {
4
+ const triggersList: any[] = [];
5
+
6
+ const createDefaultTrigger = (trigger: any) => {
7
+ const triggerInstance = new Trigger(trigger);
8
+
9
+ // Set common parameters if they exist
10
+ if (trigger.parameters.some((p: any) => p.key === "chainId")) {
11
+ triggerInstance.setChainId(CHAINS.ETHEREUM);
12
+ }
13
+ if (trigger.parameters.some((p: any) => p.key === "contractAddress")) {
14
+ triggerInstance.setContractAddress(getToken(CHAINS.ETHEREUM, 'USDC').contractAddress);
15
+ }
16
+ if (trigger.parameters.some((p: any) => p.key === "condition")) {
17
+ triggerInstance.setCondition('>');
18
+ }
19
+ if (trigger.parameters.some((p: any) => p.key === "comparisonValue")) {
20
+ triggerInstance.setComparisonValue(1000);
21
+ }
22
+ if (trigger.parameters.some((p: any) => p.key === "interval")) {
23
+ triggerInstance.setInterval(60000); // 1 minute interval
24
+ }
25
+ if (trigger.parameters.some((p: any) => p.key === "abiParams.account")) {
26
+ triggerInstance.setParams('account', '0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6');
27
+ }
28
+
29
+ return triggerInstance.toJSON();
30
+ };
31
+
32
+ // Explicitly create each trigger
33
+ triggersList.push(createDefaultTrigger(TRIGGERS.TOKENS.ERC20.TRANSFER));
34
+ triggersList.push(createDefaultTrigger(TRIGGERS.YIELD.SPLICE_FI.SWAP));
35
+ triggersList.push(createDefaultTrigger(TRIGGERS.YIELD.SPLICE_FI.LIQUIDITY_REMOVED));
36
+ triggersList.push(createDefaultTrigger(TRIGGERS.YIELD.SPLICE_FI.MARKET_CREATION));
37
+ triggersList.push(createDefaultTrigger(TRIGGERS.YIELD.SPLICE_FI.INTEREST_RATE_UPDATE));
38
+ triggersList.push(createDefaultTrigger(TRIGGERS.LENDING.ASTARIA.LEND_RECALLED));
39
+ triggersList.push(createDefaultTrigger(TRIGGERS.DEXES.ODOS.SWAP));
40
+ triggersList.push(createDefaultTrigger(TRIGGERS.SOCIALS.MODE_NAME_SERVICE.NAME_REGISTERED));
41
+
42
+ return triggersList;
43
+ };
44
+
45
+ function generateTriggersForAllTokens(chain: number) {
46
+ if (!(chain in TOKENS)) {
47
+ throw new Error(`Unsupported chain: ${chain}`);
48
+ }
49
+
50
+ const tokens = TOKENS[chain];
51
+ const triggersList: any[] = [];
52
+
53
+ tokens.forEach(token => {
54
+ // Generate transfer trigger
55
+ const transferTrigger = new Trigger(TRIGGERS.TOKENS.ERC20.TRANSFER);
56
+ transferTrigger.setChainId(chain);
57
+ // transferTrigger.setParams("value", 1000);
58
+ // transferTrigger.setParams("to", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
59
+ transferTrigger.setContractAddress(token.contractAddress);
60
+ triggersList.push(transferTrigger);
61
+
62
+ // Generate balance trigger
63
+ const balanceTrigger = new Trigger(TRIGGERS.TOKENS.ERC20.BALANCE);
64
+ balanceTrigger.setChainId(chain);
65
+ balanceTrigger.setParams("account", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
66
+ balanceTrigger.setContractAddress(token.contractAddress);
67
+ balanceTrigger.setCondition(">");
68
+ balanceTrigger.setComparisonValue(10);
69
+ balanceTrigger.setInterval(5000);
70
+ triggersList.push(balanceTrigger);
71
+ });
72
+
73
+ return triggersList.map(t => t.toJSON());
74
+ }
75
+
76
+ const generateSpecificTriggers = (): any[] => {
77
+ // Create individual triggers
78
+ const transferTrigger = new Trigger(TRIGGERS.TOKENS.ERC20.TRANSFER);
79
+ transferTrigger.setChainId(CHAINS.ETHEREUM);
80
+ transferTrigger.setParams("value", 1000);
81
+ transferTrigger.setParams("to", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
82
+ transferTrigger.setContractAddress(getToken(CHAINS.ETHEREUM, 'USDC').contractAddress);
83
+
84
+ const balanceTrigger = new Trigger(TRIGGERS.TOKENS.ERC20.BALANCE);
85
+ balanceTrigger.setChainId(CHAINS.ETHEREUM);
86
+ balanceTrigger.setParams("account", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
87
+ balanceTrigger.setContractAddress(getToken(CHAINS.ETHEREUM, 'USDC').contractAddress);
88
+ balanceTrigger.setCondition(">");
89
+ balanceTrigger.setComparisonValue(45000);
90
+ balanceTrigger.setInterval(5000);
91
+
92
+ const spliceFiSwapTrigger = new Trigger(TRIGGERS.YIELD.SPLICE_FI.SWAP);
93
+ spliceFiSwapTrigger.setParams("caller", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
94
+ spliceFiSwapTrigger.setParams("market", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
95
+ spliceFiSwapTrigger.setParams("receiver", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
96
+ spliceFiSwapTrigger.setParams("netPtToAccount", 1000);
97
+ spliceFiSwapTrigger.setParams("netSyToAccount", 2000);
98
+
99
+ const liquidityRemovedTrigger = new Trigger(TRIGGERS.YIELD.SPLICE_FI.LIQUIDITY_REMOVED);
100
+ liquidityRemovedTrigger.setParams("caller", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
101
+ liquidityRemovedTrigger.setParams("market", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
102
+ liquidityRemovedTrigger.setParams("receiver", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
103
+ liquidityRemovedTrigger.setParams("netLpToRemove", 1000);
104
+ liquidityRemovedTrigger.setParams("netPtOut", 500);
105
+ liquidityRemovedTrigger.setParams("netSyOut", 1500);
106
+
107
+ const marketCreationTrigger = new Trigger(TRIGGERS.YIELD.SPLICE_FI.MARKET_CREATION);
108
+ marketCreationTrigger.setParams("market", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
109
+ marketCreationTrigger.setParams("PT", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
110
+ marketCreationTrigger.setParams("scalarRoot", 1234);
111
+ marketCreationTrigger.setParams("initialAnchor", 5678);
112
+ marketCreationTrigger.setParams("lnFeeRateRoot", 91011);
113
+
114
+ const interestRateUpdateTrigger = new Trigger(TRIGGERS.YIELD.SPLICE_FI.INTEREST_RATE_UPDATE);
115
+ interestRateUpdateTrigger.setParams("timestamp", 1627848271);
116
+ interestRateUpdateTrigger.setParams("lastLnImpliedRate", 123456);
117
+ interestRateUpdateTrigger.setContractAddress("0xDE95511418EBD8Bd36294B11C86314DdFA50e212");
118
+
119
+ const lendRecalledTrigger = new Trigger(TRIGGERS.LENDING.ASTARIA.LEND_RECALLED);
120
+ lendRecalledTrigger.setParams("loanId", 123456);
121
+ lendRecalledTrigger.setParams("recaller", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
122
+ lendRecalledTrigger.setParams("end", 1627848271);
123
+
124
+ const odosSwapTrigger = new Trigger(TRIGGERS.DEXES.ODOS.SWAP);
125
+ odosSwapTrigger.setChainId(CHAINS.ETHEREUM);
126
+ odosSwapTrigger.setParams("sender", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
127
+ odosSwapTrigger.setParams("inputAmount", 1000);
128
+ odosSwapTrigger.setParams("inputToken", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
129
+ odosSwapTrigger.setParams("amountOut", 500);
130
+ odosSwapTrigger.setParams("outputToken", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
131
+ odosSwapTrigger.setParams("exchangeRate", 1.23);
132
+
133
+ const nameRegisteredTrigger = new Trigger(TRIGGERS.SOCIALS.MODE_NAME_SERVICE.NAME_REGISTERED);
134
+ nameRegisteredTrigger.setParams("id", 123456);
135
+ nameRegisteredTrigger.setParams("owner", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
136
+ nameRegisteredTrigger.setParams("expires", 1627848271);
137
+
138
+ return [
139
+ transferTrigger.toJSON(),
140
+ balanceTrigger.toJSON(),
141
+ spliceFiSwapTrigger.toJSON(),
142
+ liquidityRemovedTrigger.toJSON(),
143
+ marketCreationTrigger.toJSON(),
144
+ interestRateUpdateTrigger.toJSON(),
145
+ lendRecalledTrigger.toJSON(),
146
+ odosSwapTrigger.toJSON(),
147
+ nameRegisteredTrigger.toJSON(),
148
+ ]
149
+ };
150
+
151
+ // Collect all triggers in a list
152
+ const triggersList = [
153
+ ...generateTriggersForAllTokens(CHAINS.ETHEREUM),
154
+ ...generateTriggersForAllTokens(CHAINS.MODE),
155
+ ...generateDefaultTriggers(),
156
+ ...generateSpecificTriggers()
157
+ ];
158
+
159
+ console.log(JSON.stringify(triggersList));
@@ -0,0 +1,12 @@
1
+ import { TRIGGERS, getToken, CHAINS, Trigger } from '../src/index.js';
2
+
3
+
4
+
5
+ const transferTrigger = new Trigger(TRIGGERS.TOKENS.ERC20.TRANSFER);
6
+
7
+ transferTrigger.setChainId(CHAINS.ETHEREUM);
8
+ // transferTrigger.setParams("value", 1000);
9
+ // transferTrigger.setParams("to", "0xe1432599B51d9BE1b5A27E2A2FB8e5dF684749C6");
10
+ transferTrigger.setContractAddress(getToken(CHAINS.ETHEREUM, 'USDC').contractAddress);
11
+
12
+ console.log(transferTrigger.toJSON());
package/package.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "otomato-sdk",
3
+ "version": "1.0.0",
4
+ "description": "An SDK for building and managing automations on Otomato",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "type": "module",
8
+ "scripts": {
9
+ "build": "npx tsc",
10
+ "test": "mocha --config .mocharc.json"
11
+ },
12
+ "keywords": [
13
+ "sdk",
14
+ "automation",
15
+ "typescript",
16
+ "javascript",
17
+ "crypto",
18
+ "evm",
19
+ "ethereum"
20
+ ],
21
+ "author": "otomato",
22
+ "license": "ISC",
23
+ "devDependencies": {
24
+ "@types/axios": "^0.14.0",
25
+ "@types/chai": "^4.3.16",
26
+ "@types/mocha": "^10.0.6",
27
+ "@types/node": "^20.14.2",
28
+ "chai": "^5.1.1",
29
+ "mocha": "^10.4.0",
30
+ "ts-node": "^10.9.2",
31
+ "typescript": "^5.4.5"
32
+ },
33
+ "dependencies": {
34
+ "axios": "^1.7.2",
35
+ "ethers": "^6.13.0"
36
+ }
37
+ }