52 lines
1.5 KiB
Solidity
52 lines
1.5 KiB
Solidity
// SPDX-License-Identifier: MIT
|
|
pragma solidity ^0.8.20;
|
|
|
|
import "../interfaces/IAdapter.sol";
|
|
|
|
/**
|
|
* @title AaveAdapter
|
|
* @notice Adapter for Aave lending protocol
|
|
*/
|
|
contract AaveAdapter is IAdapter {
|
|
string public constant override name = "Aave V3";
|
|
|
|
// Mock Aave pool (in production, use actual Aave pool)
|
|
address public pool;
|
|
|
|
constructor(address _pool) {
|
|
pool = _pool;
|
|
}
|
|
|
|
function executeStep(bytes calldata data) external override returns (bool success, bytes memory returnData) {
|
|
// Decode operation type and parameters
|
|
// (uint8 operation, address asset, uint256 amount, address collateral)
|
|
(uint8 operation, address asset, uint256 amount, address collateral) =
|
|
abi.decode(data, (uint8, address, uint256, address));
|
|
|
|
if (operation == 0) {
|
|
// Borrow
|
|
// In production: pool.borrow(asset, amount, ...)
|
|
success = true;
|
|
returnData = abi.encode(amount);
|
|
} else if (operation == 1) {
|
|
// Repay
|
|
// In production: pool.repay(asset, amount, ...)
|
|
success = true;
|
|
returnData = abi.encode(uint256(0));
|
|
} else {
|
|
success = false;
|
|
returnData = "";
|
|
}
|
|
}
|
|
|
|
function prepareStep(bytes calldata data) external override returns (bool prepared) {
|
|
// Check if borrow/repay can be prepared (collateral check, etc.)
|
|
return true;
|
|
}
|
|
|
|
function adapterType() external pure override returns (uint8) {
|
|
return 0; // DEFI
|
|
}
|
|
}
|
|
|