mirror of
https://github.com/Instadapp/dsa-connectors.git
synced 2024-07-29 22:37:00 +00:00
avalanche connector
Signed-off-by: pradyuman-verma <pradyumnverma27@gmail.com>
This commit is contained in:
parent
4eaabe6bf7
commit
b17acaf69b
11
contracts/avalanche/connectors/aave/automation-v3/events.sol
Normal file
11
contracts/avalanche/connectors/aave/automation-v3/events.sol
Normal file
|
@ -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);
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
//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;
|
||||
}
|
||||
|
||||
interface AccountInterface {
|
||||
function enable(address) external;
|
||||
|
||||
function disable(address) external;
|
||||
|
||||
function isAuth(address) external view returns (bool);
|
||||
}
|
84
contracts/avalanche/connectors/aave/automation-v3/main.sol
Normal file
84
contracts/avalanche/connectors/aave/automation-v3/main.sol
Normal file
|
@ -0,0 +1,84 @@
|
|||
//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(0x7eE533CB0642f18191D2927bdA735c3830B355BB); // TODO: update
|
||||
|
||||
function submitAutomationRequest(
|
||||
uint256 safeHealthFactor,
|
||||
uint256 thresholdHealthFactor
|
||||
)
|
||||
external
|
||||
payable
|
||||
returns (string memory _eventName, bytes memory _eventParam)
|
||||
{
|
||||
bool isAuth = AccountInterface(address(this)).isAuth(
|
||||
address(automation)
|
||||
);
|
||||
|
||||
if (!isAuth)
|
||||
AccountInterface(address(this)).enable(address(automation));
|
||||
|
||||
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();
|
||||
|
||||
bool isAuth = AccountInterface(address(this)).isAuth(
|
||||
address(automation)
|
||||
);
|
||||
|
||||
if (isAuth)
|
||||
AccountInterface(address(this)).disable(address(automation));
|
||||
|
||||
(_eventName, _eventParam) = ("LogCancelAutomation()", "0x");
|
||||
}
|
||||
|
||||
function updateAutomationRequest(
|
||||
uint256 safeHealthFactor,
|
||||
uint256 thresholdHealthFactor
|
||||
)
|
||||
external
|
||||
payable
|
||||
returns (string memory _eventName, bytes memory _eventParam)
|
||||
{
|
||||
automation.cancelAutomationRequest();
|
||||
|
||||
automation.submitAutomationRequest(
|
||||
safeHealthFactor,
|
||||
thresholdHealthFactor
|
||||
);
|
||||
|
||||
(_eventName, _eventParam) = (
|
||||
"LogUpdateAutomation(uint256,uint256)",
|
||||
abi.encode(safeHealthFactor, thresholdHealthFactor)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
contract ConnectV2InstaAaveV3Automation is Resolver {
|
||||
string public constant name = "Insta-Aave-V3-Automation-v1";
|
||||
}
|
Loading…
Reference in New Issue
Block a user