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.
- package/.mocharc.json +8 -0
- package/LICENSE +21 -0
- package/README.md +67 -0
- package/dist/examples/create-trigger-list.js +136 -0
- package/dist/examples/create-trigger.js +7 -0
- package/dist/src/constants/ActionBlocks.js +321 -0
- package/dist/src/constants/chains.js +5 -0
- package/dist/src/constants/tokens.js +82 -0
- package/dist/src/index.js +13 -0
- package/dist/src/models/Action.js +1 -0
- package/dist/src/models/Automation.js +1 -0
- package/dist/src/models/Condition.js +1 -0
- package/dist/src/models/Parameter.js +1 -0
- package/dist/src/models/Trigger.js +110 -0
- package/dist/src/services/ApiService.js +1 -0
- package/dist/src/services/AutomationService.js +1 -0
- package/dist/test/trigger.spec.js +72 -0
- package/dist/types/examples/create-trigger-list.d.ts +1 -0
- package/dist/types/examples/create-trigger.d.ts +1 -0
- package/dist/types/src/constants/ActionBlocks.d.ts +91 -0
- package/dist/types/src/constants/chains.d.ts +5 -0
- package/dist/types/src/constants/tokens.d.ts +11 -0
- package/dist/types/src/index.d.ts +10 -0
- package/dist/types/src/models/Action.d.ts +6 -0
- package/dist/types/src/models/Automation.d.ts +6 -0
- package/dist/types/src/models/Condition.d.ts +6 -0
- package/dist/types/src/models/Parameter.d.ts +6 -0
- package/dist/types/src/models/Trigger.d.ts +37 -0
- package/dist/types/src/services/ApiService.d.ts +6 -0
- package/dist/types/src/services/AutomationService.d.ts +6 -0
- package/dist/types/test/trigger.spec.d.ts +1 -0
- package/examples/create-trigger-list.ts +159 -0
- package/examples/create-trigger.ts +12 -0
- package/package.json +37 -0
- package/src/constants/ActionBlocks.ts +324 -0
- package/src/constants/chains.ts +5 -0
- package/src/constants/tokens.ts +97 -0
- package/src/index.ts +15 -0
- package/src/models/Action.ts +6 -0
- package/src/models/Automation.ts +6 -0
- package/src/models/Condition.ts +6 -0
- package/src/models/Parameter.ts +6 -0
- package/src/models/Trigger.ts +128 -0
- package/src/services/ApiService.ts +6 -0
- package/src/services/AutomationService.ts +6 -0
- package/test/trigger.spec.ts +86 -0
- package/tsconfig.json +16 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { Trigger, TRIGGERS, getToken, CHAINS } from '../src/index';
|
|
3
|
+
|
|
4
|
+
const DEFAULT_ADDRESS = "0x0000000000000000000000000000000000000000";
|
|
5
|
+
|
|
6
|
+
describe('Trigger Class', () => {
|
|
7
|
+
|
|
8
|
+
it('should create a transfer trigger without parameters', () => {
|
|
9
|
+
const transferTrigger = new Trigger(TRIGGERS.TOKENS.ERC20.TRANSFER);
|
|
10
|
+
const params = transferTrigger.getParameters();
|
|
11
|
+
|
|
12
|
+
expect(params.chainId).to.be.null;
|
|
13
|
+
expect(params['abiParams.value']).to.be.null;
|
|
14
|
+
expect(params['abiParams.to']).to.be.null;
|
|
15
|
+
expect(params.contractAddress).to.be.null;
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it('should create a transfer trigger and set parameters correctly', () => {
|
|
19
|
+
const transferTrigger = new Trigger(TRIGGERS.TOKENS.ERC20.TRANSFER);
|
|
20
|
+
transferTrigger.setChainId(CHAINS.ETHEREUM);
|
|
21
|
+
transferTrigger.setParams("value", 1000);
|
|
22
|
+
transferTrigger.setParams("to", DEFAULT_ADDRESS);
|
|
23
|
+
transferTrigger.setContractAddress(getToken(CHAINS.ETHEREUM, 'USDC').contractAddress);
|
|
24
|
+
|
|
25
|
+
const params = transferTrigger.getParameters();
|
|
26
|
+
expect(params.chainId).to.equal(CHAINS.ETHEREUM);
|
|
27
|
+
expect(params['abiParams.value']).to.equal(1000);
|
|
28
|
+
expect(params['abiParams.to']).to.equal(DEFAULT_ADDRESS);
|
|
29
|
+
expect(params.contractAddress).to.equal(getToken(CHAINS.ETHEREUM, 'USDC').contractAddress);
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it('should be able to export a trigger as json', () => {
|
|
33
|
+
const transferTrigger = new Trigger(TRIGGERS.TOKENS.ERC20.TRANSFER);
|
|
34
|
+
transferTrigger.setChainId(CHAINS.ETHEREUM);
|
|
35
|
+
transferTrigger.setParams("value", 1000);
|
|
36
|
+
transferTrigger.setParams("to", DEFAULT_ADDRESS);
|
|
37
|
+
transferTrigger.setContractAddress(getToken(CHAINS.ETHEREUM, 'USDC').contractAddress);
|
|
38
|
+
|
|
39
|
+
const json = transferTrigger.toJSON();
|
|
40
|
+
expect(json).to.deep.equal({
|
|
41
|
+
id: TRIGGERS.TOKENS.ERC20.TRANSFER.id,
|
|
42
|
+
parameters: {
|
|
43
|
+
chainId: CHAINS.ETHEREUM,
|
|
44
|
+
'abiParams.value': 1000,
|
|
45
|
+
'abiParams.to': DEFAULT_ADDRESS,
|
|
46
|
+
contractAddress: getToken(CHAINS.ETHEREUM, 'USDC').contractAddress
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
it('should create a balance trigger with polling parameters correctly', () => {
|
|
52
|
+
const balanceTrigger = new Trigger(TRIGGERS.TOKENS.ERC20.BALANCE);
|
|
53
|
+
balanceTrigger.setChainId(CHAINS.ETHEREUM);
|
|
54
|
+
balanceTrigger.setParams("account", DEFAULT_ADDRESS);
|
|
55
|
+
balanceTrigger.setContractAddress(getToken(CHAINS.ETHEREUM, 'USDC').contractAddress);
|
|
56
|
+
balanceTrigger.setCondition(">");
|
|
57
|
+
balanceTrigger.setComparisonValue(45000);
|
|
58
|
+
balanceTrigger.setInterval(5000);
|
|
59
|
+
|
|
60
|
+
const params = balanceTrigger.getParameters();
|
|
61
|
+
expect(params.chainId).to.equal(CHAINS.ETHEREUM);
|
|
62
|
+
expect(params['abiParams.account']).to.equal(DEFAULT_ADDRESS);
|
|
63
|
+
expect(params.contractAddress).to.equal(getToken(CHAINS.ETHEREUM, 'USDC').contractAddress);
|
|
64
|
+
expect(balanceTrigger.toJSON().condition).to.equal(">");
|
|
65
|
+
expect(balanceTrigger.toJSON().comparisonValue).to.equal(45000);
|
|
66
|
+
expect(balanceTrigger.toJSON().interval).to.equal(5000);
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
it('should not be able to set conditions, comparison value and interval for subscription based triggers', () => {
|
|
70
|
+
const transferTrigger = new Trigger(TRIGGERS.TOKENS.ERC20.TRANSFER);
|
|
71
|
+
|
|
72
|
+
expect(() => transferTrigger.setCondition(">")).to.throw('Condition setting is not applicable for subscription based triggers.');
|
|
73
|
+
expect(() => transferTrigger.setComparisonValue(45000)).to.throw('Comparison value setting is not applicable for subscription based triggers.');
|
|
74
|
+
expect(() => transferTrigger.setInterval(5000)).to.throw('Interval setting is not applicable for subscription based triggers.');
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
it('should throw an error for invalid parameter type', () => {
|
|
78
|
+
const transferTrigger = new Trigger(TRIGGERS.TOKENS.ERC20.TRANSFER);
|
|
79
|
+
expect(() => transferTrigger.setParams("value", "invalid")).to.throw('Invalid type for parameter abiParams.value. Expected uint256.');
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
it('should throw an error for invalid address', () => {
|
|
83
|
+
const transferTrigger = new Trigger(TRIGGERS.TOKENS.ERC20.TRANSFER);
|
|
84
|
+
expect(() => transferTrigger.setParams("to", "invalid_address")).to.throw('Invalid type for parameter abiParams.to. Expected address.');
|
|
85
|
+
});
|
|
86
|
+
});
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES6",
|
|
4
|
+
"module": "ESNext",
|
|
5
|
+
"outDir": "./dist",
|
|
6
|
+
"declaration": true,
|
|
7
|
+
"declarationDir": "./dist/types",
|
|
8
|
+
"strict": true,
|
|
9
|
+
"esModuleInterop": true,
|
|
10
|
+
"skipLibCheck": true,
|
|
11
|
+
"moduleResolution": "node",
|
|
12
|
+
"types": ["node", "mocha", "chai"]
|
|
13
|
+
},
|
|
14
|
+
"include": ["src", "examples", "test"],
|
|
15
|
+
"exclude": ["node_modules"]
|
|
16
|
+
}
|