44 lines
1.4 KiB
Solidity
44 lines
1.4 KiB
Solidity
// SPDX-License-Identifier: MIT
|
|
pragma solidity ^0.8.20;
|
|
|
|
import "../interfaces/IAdapter.sol";
|
|
|
|
/**
|
|
* @title UniswapAdapter
|
|
* @notice Adapter for Uniswap V3 swaps
|
|
*/
|
|
contract UniswapAdapter is IAdapter {
|
|
string public constant override name = "Uniswap V3";
|
|
|
|
// Mock Uniswap router (in production, use actual Uniswap V3 router)
|
|
address public router;
|
|
|
|
constructor(address _router) {
|
|
router = _router;
|
|
}
|
|
|
|
function executeStep(bytes calldata data) external override returns (bool success, bytes memory returnData) {
|
|
// Decode swap parameters
|
|
// (address tokenIn, address tokenOut, uint256 amountIn, uint256 amountOutMin, uint24 fee)
|
|
(address tokenIn, address tokenOut, uint256 amountIn, uint256 amountOutMin, uint24 fee) =
|
|
abi.decode(data, (address, address, uint256, uint256, uint24));
|
|
|
|
// In production, call Uniswap router
|
|
// (success, returnData) = router.call(abi.encodeWithSignature("exactInputSingle(...)"));
|
|
|
|
// Mock implementation
|
|
success = true;
|
|
returnData = abi.encode(amountOutMin); // Return amount out
|
|
}
|
|
|
|
function prepareStep(bytes calldata data) external override returns (bool prepared) {
|
|
// Check if swap can be prepared (liquidity check, etc.)
|
|
return true;
|
|
}
|
|
|
|
function adapterType() external pure override returns (uint8) {
|
|
return 0; // DEFI
|
|
}
|
|
}
|
|
|