From dd7e907c335540823f61bff59b7c56c65e0227ff Mon Sep 17 00:00:00 2001 From: pradyuman-verma Date: Tue, 5 Jul 2022 20:16:38 +0530 Subject: [PATCH] insta-automation-connector: polygon Signed-off-by: pradyuman-verma --- .../connectors/insta-automation/events.sol | 11 ++++ .../insta-automation/interfaces.sol | 17 +++++ .../connectors/insta-automation/main.sol | 64 +++++++++++++++++++ 3 files changed, 92 insertions(+) create mode 100644 contracts/polygon/connectors/insta-automation/events.sol create mode 100644 contracts/polygon/connectors/insta-automation/interfaces.sol create mode 100644 contracts/polygon/connectors/insta-automation/main.sol diff --git a/contracts/polygon/connectors/insta-automation/events.sol b/contracts/polygon/connectors/insta-automation/events.sol new file mode 100644 index 00000000..8b3042c2 --- /dev/null +++ b/contracts/polygon/connectors/insta-automation/events.sol @@ -0,0 +1,11 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; +pragma experimental ABIEncoderV2; + +contract Events { + event LogCancelAutomation(); + + event LogSubmitAutomation(uint256 safeHF, uint256 thresholdHF); + + event LogUpdateAutomation(uint256 safeHF, uint256 thresholdHF); +} diff --git a/contracts/polygon/connectors/insta-automation/interfaces.sol b/contracts/polygon/connectors/insta-automation/interfaces.sol new file mode 100644 index 00000000..9eea4e14 --- /dev/null +++ b/contracts/polygon/connectors/insta-automation/interfaces.sol @@ -0,0 +1,17 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; +pragma experimental ABIEncoderV2; + +interface InstaAaveAutomation { + function submitAutomationRequest( + uint256 safeHealthFactor, + uint256 thresholdHealthFactor + ) external; + + function cancelAutomationRequest() external; + + function updateAutomation( + uint256 safeHealthFactor, + uint256 thresholdHealthFactor + ) external; +} diff --git a/contracts/polygon/connectors/insta-automation/main.sol b/contracts/polygon/connectors/insta-automation/main.sol new file mode 100644 index 00000000..9cf049e0 --- /dev/null +++ b/contracts/polygon/connectors/insta-automation/main.sol @@ -0,0 +1,64 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; +pragma experimental ABIEncoderV2; + +/** + * @title InstaAutomation + * @dev Insta-Aave-v3-Automation + */ + +import "./events.sol"; +import "./interfaces.sol"; + +abstract contract Resolver is Events { + InstaAaveAutomation internal immutable automation = + InstaAaveAutomation(0x4dDc35489042db14434E19cE205963aa72Ecd722); + + function submitAutomationRequest( + uint256 safeHealthFactor, + uint256 thresholdHealthFactor + ) + external + payable + returns (string memory _eventName, bytes memory _eventParam) + { + automation.submitAutomationRequest( + safeHealthFactor, + thresholdHealthFactor + ); + + (_eventName, _eventParam) = ( + "LogSubmitAutomation(uint256,uint256)", + abi.encode(safeHealthFactor, thresholdHealthFactor) + ); + } + + function cancelAutomationRequest() + external + payable + returns (string memory _eventName, bytes memory _eventParam) + { + automation.cancelAutomationRequest(); + (_eventName, _eventParam) = ("LogCancelAutomation()", "0x"); + } + + function updateAutomationRequest( + uint256 safeHealthFactor, + uint256 thresholdHealthFactor + ) + external + payable + returns (string memory _eventName, bytes memory _eventParam) + { + automation.updateAutomation(safeHealthFactor, thresholdHealthFactor); + + (_eventName, _eventParam) = ( + "LogUpdateAutomation(uint256,uint256)", + abi.encode(safeHealthFactor, thresholdHealthFactor) + ); + } +} + +contract ConnectV2InstaAaveAutomation is Resolver { + string public constant name = "Insta-Aave-Automation-v1"; +}