@defisaver/automation-sdk 3.0.9 → 3.1.1-dev-2
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/.babelrc +3 -3
- package/.editorconfig +9 -9
- package/.env.dev +4 -4
- package/.eslintignore +6 -7
- package/.eslintrc.js +39 -41
- package/.mocharc.json +5 -0
- package/.nvmrc +1 -0
- package/README.md +47 -41
- package/cjs/abis/Erc20.json +223 -0
- package/cjs/abis/SubStorage.json +21 -0
- package/cjs/abis/UniMulticall.json +17 -0
- package/cjs/abis/index.d.ts +9 -0
- package/cjs/abis/index.js +30 -0
- package/cjs/abis/legacy_AaveV2Subscriptions.json +8 -0
- package/cjs/abis/legacy_AuthCheck.json +8 -0
- package/cjs/abis/legacy_CompoundV2Subscriptions.json +9 -0
- package/cjs/abis/legacy_MakerSubscriptions.json +9 -0
- package/cjs/automation/private/Automation.d.ts +12 -0
- package/cjs/automation/private/Automation.js +42 -0
- package/cjs/automation/private/LegacyAutomation.d.ts +25 -0
- package/cjs/automation/private/LegacyAutomation.js +118 -0
- package/cjs/automation/private/LegacyProtocol.d.ts +22 -0
- package/cjs/automation/private/LegacyProtocol.js +41 -0
- package/cjs/automation/private/LegacyProtocol.test.d.ts +1 -0
- package/cjs/automation/private/LegacyProtocol.test.js +25 -0
- package/cjs/automation/private/Protocol.d.ts +22 -0
- package/cjs/automation/private/Protocol.js +41 -0
- package/cjs/automation/private/Protocol.test.d.ts +1 -0
- package/cjs/automation/private/Protocol.test.js +25 -0
- package/cjs/automation/private/StrategiesAutomation.d.ts +33 -0
- package/cjs/automation/private/StrategiesAutomation.js +181 -0
- package/cjs/automation/private/StrategiesAutomation.test.d.ts +1 -0
- package/cjs/automation/private/StrategiesAutomation.test.js +671 -0
- package/cjs/automation/public/ArbitrumStrategies.d.ts +5 -0
- package/cjs/automation/public/ArbitrumStrategies.js +13 -0
- package/cjs/automation/public/BaseStrategies.d.ts +5 -0
- package/cjs/automation/public/BaseStrategies.js +13 -0
- package/cjs/automation/public/EthereumStrategies.d.ts +5 -0
- package/cjs/automation/public/EthereumStrategies.js +13 -0
- package/cjs/automation/public/OptimismStrategies.d.ts +5 -0
- package/cjs/automation/public/OptimismStrategies.js +13 -0
- package/cjs/automation/public/legacy/LegacyAaveAutomation.d.ts +6 -0
- package/cjs/automation/public/legacy/LegacyAaveAutomation.js +20 -0
- package/cjs/automation/public/legacy/LegacyCompoundAutomation.d.ts +6 -0
- package/cjs/automation/public/legacy/LegacyCompoundAutomation.js +20 -0
- package/cjs/automation/public/legacy/LegacyMakerAutomation.d.ts +6 -0
- package/cjs/automation/public/legacy/LegacyMakerAutomation.js +20 -0
- package/cjs/configuration.d.ts +1 -0
- package/cjs/configuration.js +12 -0
- package/cjs/constants/index.d.ts +28 -0
- package/cjs/constants/index.js +489 -0
- package/cjs/index.d.ts +23 -0
- package/cjs/index.js +65 -0
- package/cjs/services/contractService.d.ts +12 -0
- package/cjs/services/contractService.js +54 -0
- package/cjs/services/ethereumService.d.ts +7 -0
- package/cjs/services/ethereumService.js +49 -0
- package/cjs/services/ethereumService.test.d.ts +1 -0
- package/cjs/services/ethereumService.test.js +242 -0
- package/cjs/services/strategiesService.d.ts +2 -0
- package/cjs/services/strategiesService.js +778 -0
- package/cjs/services/strategiesService.test.d.ts +1 -0
- package/cjs/services/strategiesService.test.js +110 -0
- package/cjs/services/strategySubService.d.ts +104 -0
- package/cjs/services/strategySubService.js +286 -0
- package/cjs/services/strategySubService.test.d.ts +1 -0
- package/cjs/services/strategySubService.test.js +934 -0
- package/cjs/services/subDataService.d.ts +211 -0
- package/cjs/services/subDataService.js +529 -0
- package/cjs/services/subDataService.test.d.ts +1 -0
- package/cjs/services/subDataService.test.js +1282 -0
- package/cjs/services/triggerService.d.ts +208 -0
- package/cjs/services/triggerService.js +399 -0
- package/cjs/services/triggerService.test.d.ts +1 -0
- package/cjs/services/triggerService.test.js +926 -0
- package/cjs/services/utils.d.ts +26 -0
- package/cjs/services/utils.js +159 -0
- package/cjs/services/utils.test.d.ts +1 -0
- package/cjs/services/utils.test.js +376 -0
- package/cjs/types/contracts/generated/Erc20.d.ts +53 -0
- package/cjs/types/contracts/generated/Erc20.js +5 -0
- package/cjs/types/contracts/generated/Legacy_AaveV2Subscriptions.d.ts +129 -0
- package/cjs/types/contracts/generated/Legacy_AaveV2Subscriptions.js +5 -0
- package/cjs/types/contracts/generated/Legacy_AuthCheck.d.ts +20 -0
- package/cjs/types/contracts/generated/Legacy_AuthCheck.js +5 -0
- package/cjs/types/contracts/generated/Legacy_CompoundV2Subscriptions.d.ts +128 -0
- package/cjs/types/contracts/generated/Legacy_CompoundV2Subscriptions.js +5 -0
- package/cjs/types/contracts/generated/Legacy_MakerSubscriptions.d.ts +246 -0
- package/cjs/types/contracts/generated/Legacy_MakerSubscriptions.js +5 -0
- package/cjs/types/contracts/generated/SubStorage.d.ts +114 -0
- package/cjs/types/contracts/generated/SubStorage.js +5 -0
- package/cjs/types/contracts/generated/UniMulticall.d.ts +55 -0
- package/cjs/types/contracts/generated/UniMulticall.js +5 -0
- package/cjs/types/contracts/generated/index.d.ts +7 -0
- package/cjs/types/contracts/generated/index.js +2 -0
- package/cjs/types/contracts/generated/types.d.ts +54 -0
- package/cjs/types/contracts/generated/types.js +2 -0
- package/cjs/types/enums.d.ts +208 -0
- package/cjs/types/enums.js +234 -0
- package/cjs/types/index.d.ts +224 -0
- package/cjs/types/index.js +2 -0
- package/esm/abis/Erc20.json +223 -223
- package/esm/abis/SubStorage.json +21 -17
- package/esm/abis/UniMulticall.json +17 -14
- package/esm/abis/index.d.ts +9 -9
- package/esm/abis/index.js +18 -30
- package/esm/abis/legacy_AaveV2Subscriptions.json +8 -8
- package/esm/abis/legacy_AuthCheck.json +8 -8
- package/esm/abis/legacy_CompoundV2Subscriptions.json +9 -9
- package/esm/abis/legacy_MakerSubscriptions.json +9 -9
- package/esm/automation/private/Automation.d.ts +12 -12
- package/esm/automation/private/Automation.js +39 -42
- package/esm/automation/private/LegacyAutomation.d.ts +25 -25
- package/esm/automation/private/LegacyAutomation.js +112 -118
- package/esm/automation/private/LegacyProtocol.d.ts +22 -22
- package/esm/automation/private/LegacyProtocol.js +38 -41
- package/esm/automation/private/LegacyProtocol.test.d.ts +1 -1
- package/esm/automation/private/LegacyProtocol.test.js +20 -25
- package/esm/automation/private/Protocol.d.ts +22 -22
- package/esm/automation/private/Protocol.js +38 -41
- package/esm/automation/private/Protocol.test.d.ts +1 -1
- package/esm/automation/private/Protocol.test.js +20 -25
- package/esm/automation/private/StrategiesAutomation.d.ts +33 -33
- package/esm/automation/private/StrategiesAutomation.js +175 -181
- package/esm/automation/private/StrategiesAutomation.test.d.ts +1 -1
- package/esm/automation/private/StrategiesAutomation.test.js +666 -671
- package/esm/automation/public/ArbitrumStrategies.d.ts +5 -5
- package/esm/automation/public/ArbitrumStrategies.js +7 -13
- package/esm/automation/public/BaseStrategies.d.ts +5 -0
- package/esm/automation/public/BaseStrategies.js +7 -0
- package/esm/automation/public/EthereumStrategies.d.ts +5 -5
- package/esm/automation/public/EthereumStrategies.js +7 -13
- package/esm/automation/public/OptimismStrategies.d.ts +5 -5
- package/esm/automation/public/OptimismStrategies.js +7 -13
- package/esm/automation/public/legacy/LegacyAaveAutomation.d.ts +6 -6
- package/esm/automation/public/legacy/LegacyAaveAutomation.js +14 -20
- package/esm/automation/public/legacy/LegacyCompoundAutomation.d.ts +6 -6
- package/esm/automation/public/legacy/LegacyCompoundAutomation.js +14 -20
- package/esm/automation/public/legacy/LegacyMakerAutomation.d.ts +6 -6
- package/esm/automation/public/legacy/LegacyMakerAutomation.js +14 -20
- package/esm/configuration.d.ts +1 -1
- package/esm/configuration.js +7 -12
- package/esm/constants/index.d.ts +28 -24
- package/esm/constants/index.js +483 -426
- package/esm/index.d.ts +23 -22
- package/esm/index.js +23 -63
- package/esm/services/contractService.d.ts +12 -12
- package/esm/services/contractService.js +45 -54
- package/esm/services/ethereumService.d.ts +7 -7
- package/esm/services/ethereumService.js +41 -49
- package/esm/services/ethereumService.test.d.ts +1 -1
- package/esm/services/ethereumService.test.js +237 -242
- package/esm/services/strategiesService.d.ts +2 -2
- package/esm/services/strategiesService.js +751 -722
- package/esm/services/strategiesService.test.d.ts +1 -1
- package/esm/services/strategiesService.test.js +108 -110
- package/esm/services/strategySubService.d.ts +104 -100
- package/esm/services/strategySubService.js +257 -264
- package/esm/services/strategySubService.test.d.ts +1 -1
- package/esm/services/strategySubService.test.js +906 -934
- package/esm/services/subDataService.d.ts +211 -192
- package/esm/services/subDataService.js +523 -475
- package/esm/services/subDataService.test.d.ts +1 -1
- package/esm/services/subDataService.test.js +1254 -1282
- package/esm/services/triggerService.d.ts +208 -191
- package/esm/services/triggerService.js +370 -367
- package/esm/services/triggerService.test.d.ts +1 -1
- package/esm/services/triggerService.test.js +901 -926
- package/esm/services/utils.d.ts +26 -25
- package/esm/services/utils.js +109 -131
- package/esm/services/utils.test.d.ts +1 -1
- package/esm/services/utils.test.js +348 -376
- package/esm/types/contracts/generated/Erc20.d.ts +53 -53
- package/esm/types/contracts/generated/Erc20.js +4 -5
- package/esm/types/contracts/generated/Legacy_AaveV2Subscriptions.d.ts +129 -129
- package/esm/types/contracts/generated/Legacy_AaveV2Subscriptions.js +4 -5
- package/esm/types/contracts/generated/Legacy_AuthCheck.d.ts +20 -20
- package/esm/types/contracts/generated/Legacy_AuthCheck.js +4 -5
- package/esm/types/contracts/generated/Legacy_CompoundV2Subscriptions.d.ts +128 -128
- package/esm/types/contracts/generated/Legacy_CompoundV2Subscriptions.js +4 -5
- package/esm/types/contracts/generated/Legacy_MakerSubscriptions.d.ts +246 -246
- package/esm/types/contracts/generated/Legacy_MakerSubscriptions.js +4 -5
- package/esm/types/contracts/generated/SubStorage.d.ts +114 -114
- package/esm/types/contracts/generated/SubStorage.js +4 -5
- package/esm/types/contracts/generated/UniMulticall.d.ts +55 -55
- package/esm/types/contracts/generated/UniMulticall.js +4 -5
- package/esm/types/contracts/generated/index.d.ts +7 -7
- package/esm/types/contracts/generated/index.js +1 -2
- package/esm/types/contracts/generated/types.d.ts +54 -54
- package/esm/types/contracts/generated/types.js +1 -2
- package/esm/types/enums.d.ts +208 -168
- package/esm/types/enums.js +231 -188
- package/esm/types/index.d.ts +224 -220
- package/esm/types/index.js +1 -2
- package/package.json +61 -71
- package/scripts/generateContractTypes.js +39 -39
- package/src/abis/Erc20.json +222 -222
- package/src/abis/SubStorage.json +21 -17
- package/src/abis/UniMulticall.json +17 -14
- package/src/abis/index.ts +28 -28
- package/src/abis/legacy_AaveV2Subscriptions.json +7 -7
- package/src/abis/legacy_AuthCheck.json +7 -7
- package/src/abis/legacy_CompoundV2Subscriptions.json +8 -8
- package/src/abis/legacy_MakerSubscriptions.json +8 -8
- package/src/automation/private/Automation.ts +44 -44
- package/src/automation/private/LegacyAutomation.ts +135 -135
- package/src/automation/private/LegacyProtocol.test.ts +23 -23
- package/src/automation/private/LegacyProtocol.ts +51 -51
- package/src/automation/private/Protocol.test.ts +23 -23
- package/src/automation/private/Protocol.ts +51 -51
- package/src/automation/private/StrategiesAutomation.test.ts +663 -663
- package/src/automation/private/StrategiesAutomation.ts +242 -242
- package/src/automation/public/ArbitrumStrategies.ts +10 -10
- package/src/automation/public/BaseStrategies.ts +10 -0
- package/src/automation/public/EthereumStrategies.ts +10 -10
- package/src/automation/public/OptimismStrategies.ts +10 -10
- package/src/automation/public/legacy/LegacyAaveAutomation.ts +20 -20
- package/src/automation/public/legacy/LegacyCompoundAutomation.ts +20 -20
- package/src/automation/public/legacy/LegacyMakerAutomation.ts +20 -20
- package/src/configuration.ts +8 -8
- package/src/constants/index.ts +507 -441
- package/src/index.ts +39 -38
- package/src/services/contractService.ts +77 -77
- package/src/services/ethereumService.test.ts +257 -257
- package/src/services/ethereumService.ts +69 -69
- package/src/services/strategiesService.test.ts +105 -105
- package/src/services/strategiesService.ts +1008 -932
- package/src/services/strategySubService.test.ts +1119 -1119
- package/src/services/strategySubService.ts +567 -518
- package/src/services/subDataService.test.ts +1387 -1387
- package/src/services/subDataService.ts +725 -644
- package/src/services/triggerService.test.ts +1004 -1004
- package/src/services/triggerService.ts +502 -449
- package/src/services/utils.test.ts +430 -430
- package/src/services/utils.ts +137 -103
- package/src/types/enums.ts +228 -182
- package/src/types/index.ts +279 -273
- package/tsconfig.esm.json +8 -0
- package/tsconfig.json +22 -79
- package/umd/index.js +17 -133
- package/.tests.sh +0 -3
- package/webpack.umd.js +0 -52
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"abi": [{ "constant": true, "inputs": [], "name": "WETH_ADDRESS", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "CDAI_ADDRESS", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "getSubscribers", "outputs": [{ "components": [{ "name": "triggerRepayRatio", "type": "uint128" }, { "name": "triggerBoostRatio", "type": "uint128" }, { "name": "optimalRatioBoost", "type": "uint128" }, { "name": "optimalRatioRepay", "type": "uint128" }, { "name": "owner", "type": "address" }, { "name": "cdpId", "type": "uint256" }, { "name": "boostEnabled", "type": "bool" }, { "name": "nextPriceEnabled", "type": "bool" }], "name": "", "type": "tuple[]" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "SAVINGS_LOGGER_ADDRESS", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "SAI_ADDRESS", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "changeIndex", "outputs": [{ "name": "", "type": "uint256" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [{ "name": "_cdpId", "type": "uint256" }], "name": "getCdpHolder", "outputs": [{ "name": "subscribed", "type": "bool" }, { "components": [{ "name": "triggerRepayRatio", "type": "uint128" }, { "name": "triggerBoostRatio", "type": "uint128" }, { "name": "optimalRatioBoost", "type": "uint128" }, { "name": "optimalRatioRepay", "type": "uint128" }, { "name": "owner", "type": "address" }, { "name": "cdpId", "type": "uint256" }, { "name": "boostEnabled", "type": "bool" }, { "name": "nextPriceEnabled", "type": "bool" }], "name": "", "type": "tuple" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "PIP_INTERFACE_ADDRESS", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [{ "name": "_owner", "type": "address" }], "name": "setOwnerByAdmin", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "KYBER_ETH_ADDRESS", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "OTC_ADDRESS", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "DAI_ADDRESS", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "IDAI_ADDRESS", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [{ "name": "_ilk", "type": "bytes32" }, { "name": "_cdpId", "type": "uint256" }], "name": "getIlkInfo", "outputs": [{ "name": "ilk", "type": "bytes32" }, { "name": "art", "type": "uint256" }, { "name": "rate", "type": "uint256" }, { "name": "spot", "type": "uint256" }, { "name": "line", "type": "uint256" }, { "name": "dust", "type": "uint256" }, { "name": "mat", "type": "uint256" }, { "name": "par", "type": "uint256" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "spotter", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "GAS_TOKEN_INTERFACE_ADDRESS", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "vat", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "VOX_ADDRESS", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "MANAGER_ADDRESS", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "MONITOR_ADDRESS", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "ETH2DAI_WRAPPER", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "manager", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "STUPID_EXCHANGE", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [{ "name": "", "type": "uint256" }], "name": "subscribers", "outputs": [{ "name": "triggerRepayRatio", "type": "uint128" }, { "name": "triggerBoostRatio", "type": "uint128" }, { "name": "optimalRatioBoost", "type": "uint128" }, { "name": "optimalRatioRepay", "type": "uint128" }, { "name": "owner", "type": "address" }, { "name": "cdpId", "type": "uint256" }, { "name": "boostEnabled", "type": "bool" }, { "name": "nextPriceEnabled", "type": "bool" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [{ "name": "_cdpId", "type": "uint256" }, { "name": "_triggerRepayRatio", "type": "uint128" }, { "name": "_triggerBoostRatio", "type": "uint128" }, { "name": "_optimalBoost", "type": "uint128" }, { "name": "_optimalRepay", "type": "uint128" }, { "name": "_boostEnabled", "type": "bool" }, { "name": "_nextPriceEnabled", "type": "bool" }], "name": "subscribe", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "MIGRATION_ACTIONS_PROXY", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [{ "name": "", "type": "bytes32" }], "name": "minLimits", "outputs": [{ "name": "", "type": "uint256" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "SPOTTER_ADDRESS", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [{ "name": "", "type": "uint256" }], "name": "subscribersPos", "outputs": [{ "name": "arrPos", "type": "uint256" }, { "name": "subscribed", "type": "bool" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "PROXY_REGISTRY_INTERFACE_ADDRESS", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "PROXY_ACTIONS", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "MKR_ADDRESS", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "FACTORY_ADDRESS", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [{ "name": "_page", "type": "uint256" }, { "name": "_perPage", "type": "uint256" }], "name": "getSubscribersByPage", "outputs": [{ "components": [{ "name": "triggerRepayRatio", "type": "uint128" }, { "name": "triggerBoostRatio", "type": "uint128" }, { "name": "optimalRatioBoost", "type": "uint128" }, { "name": "optimalRatioRepay", "type": "uint128" }, { "name": "owner", "type": "address" }, { "name": "cdpId", "type": "uint256" }, { "name": "boostEnabled", "type": "bool" }, { "name": "nextPriceEnabled", "type": "bool" }], "name": "", "type": "tuple[]" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "owner", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [{ "name": "_cdpId", "type": "uint256" }], "name": "unsubscribeByAdmin", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "LOGGER_ADDRESS", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "SAVER_EXCHANGE_ADDRESS", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "MAKER_DAI_ADDRESS", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "DISCOUNT_ADDRESS", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [{ "name": "_admin", "type": "address" }], "name": "setAdminByAdmin", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "JUG_ADDRESS", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [{ "name": "_cdpId", "type": "uint256" }], "name": "unsubscribe", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "NEW_CDAI_ADDRESS", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "KYBER_WRAPPER", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "SUBSCRIPTION_ADDRESS", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "NEW_IDAI_ADDRESS", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "COMPOUND_DAI_ADDRESS", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [{ "name": "_cdpId", "type": "uint256" }], "name": "getOwner", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "UNISWAP_FACTORY", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "OASIS_WRAPPER", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "PETH_ADDRESS", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [{ "name": "_cdpId", "type": "uint256" }], "name": "getSubscribedInfo", "outputs": [{ "name": "", "type": "bool" }, { "name": "", "type": "uint128" }, { "name": "", "type": "uint128" }, { "name": "", "type": "uint128" }, { "name": "", "type": "uint128" }, { "name": "", "type": "address" }, { "name": "coll", "type": "uint256" }, { "name": "debt", "type": "uint256" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "KYBER_INTERFACE", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "VAT_ADDRESS", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "DAI_JOIN_ADDRESS", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "ERC20_PROXY_0X", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "WALLET_ID", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "SOLO_MARGIN_ADDRESS", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "UNISWAP_WRAPPER", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [{ "name": "_admin", "type": "address" }], "name": "setAdminByOwner", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "saverProxy", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [{ "name": "_ilk", "type": "bytes32" }, { "name": "_newRatio", "type": "uint256" }], "name": "changetriggerRepayRatios", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "TUB_ADDRESS", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "ETH_JOIN_ADDRESS", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "SCD_MCD_MIGRATION", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "admin", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "inputs": [{ "name": "_saverProxy", "type": "address" }], "payable": false, "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [{ "indexed": true, "name": "owner", "type": "address" }, { "indexed": false, "name": "cdpId", "type": "uint256" }], "name": "Subscribed", "type": "event" }, { "anonymous": false, "inputs": [{ "indexed": true, "name": "owner", "type": "address" }, { "indexed": false, "name": "cdpId", "type": "uint256" }], "name": "Unsubscribed", "type": "event" }, { "anonymous": false, "inputs": [{ "indexed": true, "name": "owner", "type": "address" }, { "indexed": false, "name": "cdpId", "type": "uint256" }], "name": "Updated", "type": "event" }, { "anonymous": false, "inputs": [{ "indexed": true, "name": "owner", "type": "address" }, { "indexed": false, "name": "cdpId", "type": "uint256" }, { "indexed": false, "name": "", "type": "uint128" }, { "indexed": false, "name": "", "type": "uint128" }, { "indexed": false, "name": "", "type": "uint128" }, { "indexed": false, "name": "", "type": "uint128" }, { "indexed": false, "name": "boostEnabled", "type": "bool" }], "name": "ParamUpdates", "type": "event" }],
|
|
3
|
+
"networks": {
|
|
4
|
+
"1": {
|
|
5
|
+
"createdBlock": 8335635,
|
|
6
|
+
"address": "0xC45d4f6B6bf41b6EdAA58B01c4298B8d9078269a"
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type Web3 from 'web3';
|
|
2
|
+
import type { EthereumAddress, Position, SubscriptionOptions } from '../../types';
|
|
3
|
+
import { ChainId } from '../../types/enums';
|
|
4
|
+
export default class Automation {
|
|
5
|
+
protected chainId?: ChainId;
|
|
6
|
+
protected web3?: Web3;
|
|
7
|
+
protected assertProvider(): void;
|
|
8
|
+
protected assertChainId(): void;
|
|
9
|
+
protected assert(): void;
|
|
10
|
+
getSubscriptions(options?: SubscriptionOptions): Promise<(Position.Automated | null)[] | Position.LegacyAutomated[]>;
|
|
11
|
+
getSubscriptionsFor(addresses: EthereumAddress[], options?: SubscriptionOptions): Promise<(Position.Automated | null)[] | Position.LegacyAutomated[]>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const utils_1 = require("../../services/utils");
|
|
13
|
+
const enums_1 = require("../../types/enums");
|
|
14
|
+
// TODO - Improve provider assertion
|
|
15
|
+
class Automation {
|
|
16
|
+
assertProvider() {
|
|
17
|
+
if ((0, utils_1.isUndefined)(this.web3)) {
|
|
18
|
+
throw new Error(`Assertion for property 'web3' failed. \nExpected web3.js instance. Got: '${this.web3}.`);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
assertChainId() {
|
|
22
|
+
const allowedChainIds = Object.values(enums_1.ChainId);
|
|
23
|
+
if ((0, utils_1.isUndefined)(this.chainId) || !allowedChainIds.includes(this.chainId || '')) {
|
|
24
|
+
throw new Error(`Assertion for property 'chainId' failed. \nExpected one of: '${allowedChainIds.join(', ')}. Got: '${this.chainId}.`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
assert() {
|
|
28
|
+
this.assertProvider();
|
|
29
|
+
this.assertChainId();
|
|
30
|
+
}
|
|
31
|
+
getSubscriptions(options) {
|
|
32
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
33
|
+
throw new Error('Method \'getSubscriptions\' must be implemented.');
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
getSubscriptionsFor(addresses, options) {
|
|
37
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
38
|
+
throw new Error('Method \'getSubscriptionsFor\' must be implemented.');
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.default = Automation;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type Web3 from 'web3';
|
|
2
|
+
import type { EthereumAddress, Position, Interfaces, Contract, PlaceholderType, SubscriptionOptions } from '../../types';
|
|
3
|
+
import type { Legacy_AaveV2Subscriptions, Legacy_CompoundV2Subscriptions, Legacy_MakerSubscriptions, Legacy_AuthCheck } from '../../types/contracts/generated';
|
|
4
|
+
import Automation from './Automation';
|
|
5
|
+
import { ChainId } from '../../types/enums';
|
|
6
|
+
export default class LegacyAutomation extends Automation {
|
|
7
|
+
protected chainId: ChainId;
|
|
8
|
+
protected web3: Web3;
|
|
9
|
+
protected monitorAddress: EthereumAddress;
|
|
10
|
+
protected subscriptionsContract: Contract.WithMeta<Legacy_MakerSubscriptions | Legacy_AaveV2Subscriptions | Legacy_CompoundV2Subscriptions>;
|
|
11
|
+
protected authCheckerContract: Contract.WithMeta<Legacy_AuthCheck>;
|
|
12
|
+
protected protocol: Interfaces.LegacyProtocol;
|
|
13
|
+
constructor(args: Interfaces.LegacyAutomation<Legacy_MakerSubscriptions | Legacy_AaveV2Subscriptions | Legacy_CompoundV2Subscriptions>);
|
|
14
|
+
protected assertSubscriptionContract(): void;
|
|
15
|
+
protected assertProtocol(): void;
|
|
16
|
+
protected assertMonitorAddress(): void;
|
|
17
|
+
protected assertLegacy(): void;
|
|
18
|
+
protected isMonitorAuthorized(address: EthereumAddress, caller: EthereumAddress): Promise<boolean>;
|
|
19
|
+
protected isMonitorAuthorizedMulticall(addresses: EthereumAddress[], caller: EthereumAddress): Promise<boolean[]>;
|
|
20
|
+
private getOwnerPropName;
|
|
21
|
+
protected _getSubscriptions(addresses?: EthereumAddress[], options?: SubscriptionOptions): Promise<PlaceholderType>;
|
|
22
|
+
protected getParsedSubscriptions(addresses?: EthereumAddress[], options?: SubscriptionOptions): Promise<Position.LegacyAutomated[]>;
|
|
23
|
+
getSubscriptions(options?: SubscriptionOptions): Promise<Position.LegacyAutomated[]>;
|
|
24
|
+
getSubscriptionsFor(addresses: EthereumAddress[], options?: SubscriptionOptions): Promise<Position.LegacyAutomated[]>;
|
|
25
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
16
|
+
const contractService_1 = require("../../services/contractService");
|
|
17
|
+
const ethereumService_1 = require("../../services/ethereumService");
|
|
18
|
+
const utils_1 = require("../../services/utils");
|
|
19
|
+
const Automation_1 = __importDefault(require("./Automation"));
|
|
20
|
+
const enums_1 = require("../../types/enums");
|
|
21
|
+
class LegacyAutomation extends Automation_1.default {
|
|
22
|
+
constructor(args) {
|
|
23
|
+
super();
|
|
24
|
+
this.chainId = enums_1.ChainId.Ethereum;
|
|
25
|
+
this.web3 = args.provider;
|
|
26
|
+
this.subscriptionsContract = args.subscriptionsJson;
|
|
27
|
+
this.monitorAddress = args.monitorAddress;
|
|
28
|
+
this.protocol = args.protocol;
|
|
29
|
+
this.authCheckerContract = (0, contractService_1.makeAuthCheckerContract)(this.web3, this.chainId);
|
|
30
|
+
this.assertLegacy();
|
|
31
|
+
}
|
|
32
|
+
assertSubscriptionContract() {
|
|
33
|
+
if ((0, utils_1.isUndefined)(this.subscriptionsContract)) {
|
|
34
|
+
throw new Error(`Assertion for property 'subscriptionsContract' failed. \nGot: '${this.subscriptionsContract}.`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
assertProtocol() {
|
|
38
|
+
if ((0, utils_1.isUndefined)(this.protocol)) {
|
|
39
|
+
throw new Error(`Assertion for property 'protocol' failed. \nGot: '${this.protocol}.`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
assertMonitorAddress() {
|
|
43
|
+
if (!(0, utils_1.isAddress)(this.monitorAddress)) {
|
|
44
|
+
throw new Error(`Assertion for property 'monitorAddress' failed. \nGot: '${this.monitorAddress}.`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
assertLegacy() {
|
|
48
|
+
this.assertProtocol();
|
|
49
|
+
this.assertMonitorAddress();
|
|
50
|
+
this.assertSubscriptionContract();
|
|
51
|
+
this.assert();
|
|
52
|
+
}
|
|
53
|
+
isMonitorAuthorized(address, caller) {
|
|
54
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
55
|
+
return this.authCheckerContract.contract.methods.canCall(caller, address, '0x1cff79cd').call();
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
isMonitorAuthorizedMulticall(addresses, caller) {
|
|
59
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
60
|
+
const authCheckerContract = this.authCheckerContract;
|
|
61
|
+
const defaultOptions = {
|
|
62
|
+
target: authCheckerContract.address,
|
|
63
|
+
abiItem: (0, contractService_1.getAbiItem)(authCheckerContract.abi, 'canCall'),
|
|
64
|
+
};
|
|
65
|
+
const multicallCalls = addresses.map((addr) => (Object.assign(Object.assign({}, defaultOptions), { params: [caller, addr, '0x1cff79cd'] })));
|
|
66
|
+
return (yield (0, ethereumService_1.multicall)(this.web3, this.chainId, multicallCalls)).map(res => res[0]);
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
// Aave and Compound use 'user' for property name
|
|
70
|
+
getOwnerPropName() {
|
|
71
|
+
return this.protocol.id === enums_1.ProtocolIdentifiers.LegacyAutomation.MakerDAO ? 'owner' : 'user';
|
|
72
|
+
}
|
|
73
|
+
_getSubscriptions(addresses, options) {
|
|
74
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
75
|
+
let subscriptions = yield this.subscriptionsContract.contract.methods.getSubscribers().call({}, (options === null || options === void 0 ? void 0 : options.fromBlock) || 'latest');
|
|
76
|
+
if (addresses) {
|
|
77
|
+
const _addresses = addresses.map(a => a.toLowerCase());
|
|
78
|
+
// @ts-ignore
|
|
79
|
+
subscriptions = subscriptions.filter(s => _addresses.includes(s[this.getOwnerPropName()]));
|
|
80
|
+
}
|
|
81
|
+
return subscriptions;
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
getParsedSubscriptions(addresses, options) {
|
|
85
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
86
|
+
const legacyAutomationSunset = 18213086;
|
|
87
|
+
if (!(options === null || options === void 0 ? void 0 : options.fromBlock)
|
|
88
|
+
|| (options === null || options === void 0 ? void 0 : options.fromBlock) === 'latest'
|
|
89
|
+
|| (options === null || options === void 0 ? void 0 : options.fromBlock) === 'pending'
|
|
90
|
+
|| ((options === null || options === void 0 ? void 0 : options.fromBlock) && new decimal_js_1.default(options === null || options === void 0 ? void 0 : options.fromBlock.toString()).gte(legacyAutomationSunset))) {
|
|
91
|
+
return [];
|
|
92
|
+
}
|
|
93
|
+
const subscriptions = yield this._getSubscriptions(addresses, options);
|
|
94
|
+
return subscriptions.map((sub) => ({
|
|
95
|
+
chainId: this.chainId,
|
|
96
|
+
owner: sub[this.getOwnerPropName()],
|
|
97
|
+
isEnabled: true,
|
|
98
|
+
protocol: this.protocol,
|
|
99
|
+
specific: Object.assign({}, sub),
|
|
100
|
+
strategy: {
|
|
101
|
+
strategyId: 'legacy',
|
|
102
|
+
protocol: this.protocol,
|
|
103
|
+
},
|
|
104
|
+
}));
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
getSubscriptions(options) {
|
|
108
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
109
|
+
return this.getParsedSubscriptions(undefined, options);
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
getSubscriptionsFor(addresses, options) {
|
|
113
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
114
|
+
return this.getParsedSubscriptions(addresses, options);
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
exports.default = LegacyAutomation;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Interfaces } from '../../types';
|
|
2
|
+
import type { ProtocolIdentifiers } from '../../types/enums';
|
|
3
|
+
export default class Protocol implements Interfaces.LegacyProtocol {
|
|
4
|
+
#private;
|
|
5
|
+
id: ProtocolIdentifiers.LegacyAutomation;
|
|
6
|
+
name: string;
|
|
7
|
+
slug: string;
|
|
8
|
+
version: string;
|
|
9
|
+
fullName: string;
|
|
10
|
+
constructor(args: {
|
|
11
|
+
id: ProtocolIdentifiers.LegacyAutomation;
|
|
12
|
+
});
|
|
13
|
+
private hasVersion;
|
|
14
|
+
private splitId;
|
|
15
|
+
/**
|
|
16
|
+
* @dev See naming convention at ProtocolIdentifiers declaration
|
|
17
|
+
*/
|
|
18
|
+
private getVersion;
|
|
19
|
+
private getName;
|
|
20
|
+
private getSlug;
|
|
21
|
+
private getFullName;
|
|
22
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
5
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
6
|
+
};
|
|
7
|
+
var _Protocol_versionSeparator;
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
class Protocol {
|
|
10
|
+
constructor(args) {
|
|
11
|
+
_Protocol_versionSeparator.set(this, '__');
|
|
12
|
+
this.id = args.id;
|
|
13
|
+
this.name = this.getName();
|
|
14
|
+
this.slug = this.getSlug();
|
|
15
|
+
this.version = this.getVersion();
|
|
16
|
+
this.fullName = this.getFullName();
|
|
17
|
+
}
|
|
18
|
+
hasVersion() {
|
|
19
|
+
return this.id.indexOf(__classPrivateFieldGet(this, _Protocol_versionSeparator, "f")) !== -1;
|
|
20
|
+
}
|
|
21
|
+
splitId() {
|
|
22
|
+
return this.id.split(__classPrivateFieldGet(this, _Protocol_versionSeparator, "f"));
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* @dev See naming convention at ProtocolIdentifiers declaration
|
|
26
|
+
*/
|
|
27
|
+
getVersion() {
|
|
28
|
+
return this.hasVersion() ? this.splitId().reverse()[0] : '';
|
|
29
|
+
}
|
|
30
|
+
getName() {
|
|
31
|
+
return this.hasVersion() ? this.splitId()[0] : this.id;
|
|
32
|
+
}
|
|
33
|
+
getSlug() {
|
|
34
|
+
return this.name.split(' ').join('-').toLowerCase();
|
|
35
|
+
}
|
|
36
|
+
getFullName() {
|
|
37
|
+
return this.hasVersion() ? `${this.name} ${this.version}` : this.name;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.default = Protocol;
|
|
41
|
+
_Protocol_versionSeparator = new WeakMap();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const chai_1 = require("chai");
|
|
7
|
+
const enums_1 = require("../../types/enums");
|
|
8
|
+
const LegacyProtocol_1 = __importDefault(require("./LegacyProtocol"));
|
|
9
|
+
describe('Feature: LegacyProtocol.ts', () => {
|
|
10
|
+
describe('When testing class LegacyProtocol', () => {
|
|
11
|
+
const exampleProtocol = new LegacyProtocol_1.default({ id: enums_1.ProtocolIdentifiers.LegacyAutomation.MakerDAO });
|
|
12
|
+
const examples = [
|
|
13
|
+
[exampleProtocol.id, 'MakerDAO'],
|
|
14
|
+
[exampleProtocol.name, 'MakerDAO'],
|
|
15
|
+
[exampleProtocol.slug, 'makerdao'],
|
|
16
|
+
[exampleProtocol.version, ''],
|
|
17
|
+
[exampleProtocol.fullName, 'MakerDAO'],
|
|
18
|
+
];
|
|
19
|
+
examples.forEach(([expected, actual]) => {
|
|
20
|
+
it(`Given ${actual} should return expected value: ${expected}`, () => {
|
|
21
|
+
(0, chai_1.expect)(actual).to.equal(expected);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Interfaces } from '../../types';
|
|
2
|
+
import type { ProtocolIdentifiers } from '../../types/enums';
|
|
3
|
+
export default class Protocol implements Interfaces.Protocol {
|
|
4
|
+
#private;
|
|
5
|
+
id: ProtocolIdentifiers.StrategiesAutomation;
|
|
6
|
+
name: string;
|
|
7
|
+
slug: string;
|
|
8
|
+
version: string;
|
|
9
|
+
fullName: string;
|
|
10
|
+
constructor(args: {
|
|
11
|
+
id: ProtocolIdentifiers.StrategiesAutomation;
|
|
12
|
+
});
|
|
13
|
+
private hasVersion;
|
|
14
|
+
private splitId;
|
|
15
|
+
/**
|
|
16
|
+
* @dev See naming convention at ProtocolIdentifiers declaration
|
|
17
|
+
*/
|
|
18
|
+
private getVersion;
|
|
19
|
+
private getName;
|
|
20
|
+
private getSlug;
|
|
21
|
+
private getFullName;
|
|
22
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
5
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
6
|
+
};
|
|
7
|
+
var _Protocol_versionSeparator;
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
class Protocol {
|
|
10
|
+
constructor(args) {
|
|
11
|
+
_Protocol_versionSeparator.set(this, '__');
|
|
12
|
+
this.id = args.id;
|
|
13
|
+
this.name = this.getName();
|
|
14
|
+
this.slug = this.getSlug();
|
|
15
|
+
this.version = this.getVersion();
|
|
16
|
+
this.fullName = this.getFullName();
|
|
17
|
+
}
|
|
18
|
+
hasVersion() {
|
|
19
|
+
return this.id.indexOf(__classPrivateFieldGet(this, _Protocol_versionSeparator, "f")) !== -1;
|
|
20
|
+
}
|
|
21
|
+
splitId() {
|
|
22
|
+
return this.id.split(__classPrivateFieldGet(this, _Protocol_versionSeparator, "f"));
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* @dev See naming convention at ProtocolIdentifiers declaration
|
|
26
|
+
*/
|
|
27
|
+
getVersion() {
|
|
28
|
+
return this.hasVersion() ? this.splitId().reverse()[0] : '';
|
|
29
|
+
}
|
|
30
|
+
getName() {
|
|
31
|
+
return this.hasVersion() ? this.splitId()[0] : this.id;
|
|
32
|
+
}
|
|
33
|
+
getSlug() {
|
|
34
|
+
return this.name.split(' ').join('-').toLowerCase();
|
|
35
|
+
}
|
|
36
|
+
getFullName() {
|
|
37
|
+
return this.hasVersion() ? `${this.name} ${this.version}` : this.name;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.default = Protocol;
|
|
41
|
+
_Protocol_versionSeparator = new WeakMap();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const chai_1 = require("chai");
|
|
7
|
+
const enums_1 = require("../../types/enums");
|
|
8
|
+
const Protocol_1 = __importDefault(require("./Protocol"));
|
|
9
|
+
describe('Feature: Protocol.ts', () => {
|
|
10
|
+
describe('When testing class Protocol', () => {
|
|
11
|
+
const exampleProtocol = new Protocol_1.default({ id: enums_1.ProtocolIdentifiers.StrategiesAutomation.AaveV3 });
|
|
12
|
+
const examples = [
|
|
13
|
+
[exampleProtocol.id, 'Aave__V3'],
|
|
14
|
+
[exampleProtocol.name, 'Aave'],
|
|
15
|
+
[exampleProtocol.slug, 'aave'],
|
|
16
|
+
[exampleProtocol.version, 'V3'],
|
|
17
|
+
[exampleProtocol.fullName, 'Aave V3'],
|
|
18
|
+
];
|
|
19
|
+
examples.forEach(([expected, actual]) => {
|
|
20
|
+
it(`Given ${actual} should return expected value: ${expected}`, () => {
|
|
21
|
+
(0, chai_1.expect)(actual).to.equal(expected);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
});
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type Web3 from 'web3';
|
|
2
|
+
import type { PastEventOptions } from 'web3-eth-contract';
|
|
3
|
+
import type { Position, Interfaces, EthereumAddress, SubscriptionOptions, Contract, ParseData, BlockNumber } from '../../types';
|
|
4
|
+
import type { StrategyModel, SubStorage } from '../../types/contracts/generated/SubStorage';
|
|
5
|
+
import type { ChainId } from '../../types/enums';
|
|
6
|
+
import Automation from './Automation';
|
|
7
|
+
interface IStrategiesAutomation extends Interfaces.Automation {
|
|
8
|
+
chainId: ChainId;
|
|
9
|
+
providerFork: Web3;
|
|
10
|
+
}
|
|
11
|
+
export default class StrategiesAutomation extends Automation {
|
|
12
|
+
protected chainId: ChainId;
|
|
13
|
+
protected web3: Web3;
|
|
14
|
+
protected web3Fork: Web3;
|
|
15
|
+
protected subStorageContract: Contract.WithMeta<SubStorage>;
|
|
16
|
+
protected subStorageContractFork: Contract.WithMeta<SubStorage> | null;
|
|
17
|
+
constructor(args: IStrategiesAutomation);
|
|
18
|
+
protected getEventFromSubStorage(event: string, options?: PastEventOptions): Promise<any[]>;
|
|
19
|
+
protected getStrategiesSubs(subIds: number[], fromBlock?: BlockNumber): Promise<StrategyModel.StoredSubDataStructOutputStruct[]>;
|
|
20
|
+
protected getSubscriptionEventsFromSubStorage(options?: PastEventOptions): Promise<any[]>;
|
|
21
|
+
protected getUpdateDataEventsFromSubStorage(options?: PastEventOptions): Promise<any[]>;
|
|
22
|
+
protected getParsedSubscriptions(parseData: ParseData): Position.Automated | null;
|
|
23
|
+
/**
|
|
24
|
+
* @description Removes expired Limit Order subscriptions
|
|
25
|
+
*/
|
|
26
|
+
protected removeExpiredSubscriptions(subscriptions: (Position.Automated | null)[]): (Position.Automated | null)[];
|
|
27
|
+
private _mergeCheck;
|
|
28
|
+
protected mergeSubs(_subscriptions: (Position.Automated | null)[]): Position.Automated[];
|
|
29
|
+
protected _getSubscriptions(addresses?: EthereumAddress[], options?: SubscriptionOptions): Promise<(Position.Automated | null)[]>;
|
|
30
|
+
getSubscriptions(options?: SubscriptionOptions): Promise<(Position.Automated | null)[]>;
|
|
31
|
+
getSubscriptionsFor(addresses: EthereumAddress[], options?: SubscriptionOptions): Promise<(Position.Automated | null)[]>;
|
|
32
|
+
}
|
|
33
|
+
export {};
|