From b2f1d641369a9ae7b7818244723b153e59a0732b Mon Sep 17 00:00:00 2001 From: Shriya Tyagi Date: Sun, 10 Mar 2024 23:58:44 +0530 Subject: [PATCH 1/4] feat: add fluid StethQueueConnector --- .../mainnet/connectors/steth-queue/events.sol | 21 +++++ .../connectors/steth-queue/interfaces.sol | 16 ++++ .../mainnet/connectors/steth-queue/main.sol | 88 +++++++++++++++++++ 3 files changed, 125 insertions(+) create mode 100644 contracts/mainnet/connectors/steth-queue/events.sol create mode 100644 contracts/mainnet/connectors/steth-queue/interfaces.sol create mode 100644 contracts/mainnet/connectors/steth-queue/main.sol diff --git a/contracts/mainnet/connectors/steth-queue/events.sol b/contracts/mainnet/connectors/steth-queue/events.sol new file mode 100644 index 0000000..31e569e --- /dev/null +++ b/contracts/mainnet/connectors/steth-queue/events.sol @@ -0,0 +1,21 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.8.2; + +contract Events { + event LogQueueSteth( + uint256 stETHAmount, + uint256 ethBorrowAmount, + uint256 requestIdFrom, + uint256 getId, + uint256 setId + ); + + event LogClaimSteth( + uint256 nftId, + uint256 claimedAmount, + uint256 repayAmount, + uint256 getId, + uint256 setIdClaimedAmt, + uint256 setIdRepayAmt + ); +} diff --git a/contracts/mainnet/connectors/steth-queue/interfaces.sol b/contracts/mainnet/connectors/steth-queue/interfaces.sol new file mode 100644 index 0000000..c808892 --- /dev/null +++ b/contracts/mainnet/connectors/steth-queue/interfaces.sol @@ -0,0 +1,16 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.8.2; + +interface IFluidStETHQueue { + function queue( + uint256 ethBorrowAmount_, + uint256 stETHAmount_, + address borrowTo_, + address claimTo_ + ) external returns (uint256 requestIdFrom_); + + function claim( + address claimTo_, + uint256 requestIdFrom_ + ) external returns (uint256 claimedAmount_, uint256 repayAmount_); +} diff --git a/contracts/mainnet/connectors/steth-queue/main.sol b/contracts/mainnet/connectors/steth-queue/main.sol new file mode 100644 index 0000000..26bdf29 --- /dev/null +++ b/contracts/mainnet/connectors/steth-queue/main.sol @@ -0,0 +1,88 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.8.2; + +import {TokenInterface} from "../../common/interfaces.sol"; +import {Events} from "./events.sol"; +import {IFluidStETHQueue} from "./interfaces.sol"; +import {Basic} from "../../common/basic.sol"; + +abstract contract StethQueueConnector is Events, Basic { + address public constant FLUID_STETH_QUEUE = + 0xEb6643733c5E7CaB6B27D98C8CFDc647f8112a96; + address public constant STETH = 0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84; + + function queueSteth( + uint256 stETHAmount_, + uint256 ethBorrowAmount_, + uint256 getId_, + uint256 setId_ + ) + external + payable + returns (string memory _eventName, bytes memory _eventParam) + { + uint256 stETHAmt_ = getUint(getId_, stETHAmount_); + + IFluidStETHQueue fluidStethContract_ = IFluidStETHQueue( + FLUID_STETH_QUEUE + ); + + stETHAmt_ = stETHAmt_ == type(uint256).max + ? TokenInterface(STETH).balanceOf(address(this)) + : stETHAmt_; + + approve(TokenInterface(address(FLUID_STETH_QUEUE)), STETH, stETHAmt_); + uint256 requestIdFrom_ = fluidStethContract_.queue( + ethBorrowAmount_, + stETHAmount_, + address(this), + address(this) + ); // todo: confirm + + setUint(setId_, requestIdFrom_); + _eventName = "LogQueueSteth(uint256,uint256,uint256,uint256,uint256)"; + _eventParam = abi.encode( + stETHAmount_, + ethBorrowAmount_, + requestIdFrom_, + getId_, + setId_ + ); + } + + function claimSteth( + uint256 nftId_, + uint256 getId_, + uint256 setIdClaimedAmt_, + uint256 setIdRepayAmt_ + ) + external + payable + returns (string memory _eventName, bytes memory _eventParam) + { + uint256 nftIdNum_ = getUint(getId_, nftId_); + + IFluidStETHQueue fluidStethContract_ = IFluidStETHQueue( + FLUID_STETH_QUEUE + ); + + (uint256 claimedAmount_, uint256 repayAmount_) = fluidStethContract_ + .claim(address(this), nftIdNum_); + + setUint(setIdClaimedAmt_, claimedAmount_); + setUint(setIdRepayAmt_, repayAmount_); + _eventName = "LogClaimSteth(uint256,uint256,uint256,uint256,uint256,uint256)"; + _eventParam = abi.encode( + nftId_, + claimedAmount_, + repayAmount_, + getId_, + setIdClaimedAmt_, + setIdRepayAmt_ + ); + } +} + +contract ConnectV2StethQueueFluid is StethQueueConnector { + string public constant name = "Steth-Queue-Fluid-v1.0"; +} From a7d41b779a4fc160c0e6a665d0a2ed3fc0fb2d6e Mon Sep 17 00:00:00 2001 From: Shriya Tyagi <47134275+shriyatyagii@users.noreply.github.com> Date: Mon, 11 Mar 2024 01:06:41 +0530 Subject: [PATCH 2/4] Update contracts/mainnet/connectors/steth-queue/main.sol Co-authored-by: Samyak Jain <34437877+KaymasJain@users.noreply.github.com> --- contracts/mainnet/connectors/steth-queue/main.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/mainnet/connectors/steth-queue/main.sol b/contracts/mainnet/connectors/steth-queue/main.sol index 26bdf29..2a2a0c0 100644 --- a/contracts/mainnet/connectors/steth-queue/main.sol +++ b/contracts/mainnet/connectors/steth-queue/main.sol @@ -31,7 +31,7 @@ abstract contract StethQueueConnector is Events, Basic { ? TokenInterface(STETH).balanceOf(address(this)) : stETHAmt_; - approve(TokenInterface(address(FLUID_STETH_QUEUE)), STETH, stETHAmt_); + approve(TokenInterface(address(STETH)), FLUID_STETH_QUEUE, stETHAmt_); uint256 requestIdFrom_ = fluidStethContract_.queue( ethBorrowAmount_, stETHAmount_, From 4558a5c661fc3dca156e207ca92c954ff9033a05 Mon Sep 17 00:00:00 2001 From: Shriya Tyagi Date: Mon, 11 Mar 2024 01:51:04 +0530 Subject: [PATCH 3/4] feat: fix --- contracts/mainnet/connectors/steth-queue/main.sol | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/contracts/mainnet/connectors/steth-queue/main.sol b/contracts/mainnet/connectors/steth-queue/main.sol index 2a2a0c0..3a11457 100644 --- a/contracts/mainnet/connectors/steth-queue/main.sol +++ b/contracts/mainnet/connectors/steth-queue/main.sol @@ -8,7 +8,7 @@ import {Basic} from "../../common/basic.sol"; abstract contract StethQueueConnector is Events, Basic { address public constant FLUID_STETH_QUEUE = - 0xEb6643733c5E7CaB6B27D98C8CFDc647f8112a96; + 0x1F6B2bFDd5D1e6AdE7B17027ff5300419a56Ad6b; address public constant STETH = 0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84; function queueSteth( @@ -34,15 +34,15 @@ abstract contract StethQueueConnector is Events, Basic { approve(TokenInterface(address(STETH)), FLUID_STETH_QUEUE, stETHAmt_); uint256 requestIdFrom_ = fluidStethContract_.queue( ethBorrowAmount_, - stETHAmount_, + stETHAmt_, address(this), address(this) - ); // todo: confirm + ); setUint(setId_, requestIdFrom_); _eventName = "LogQueueSteth(uint256,uint256,uint256,uint256,uint256)"; _eventParam = abi.encode( - stETHAmount_, + stETHAmt_, ethBorrowAmount_, requestIdFrom_, getId_, From 05bfd79918df6296017f25e616f3e5d86c14acdf Mon Sep 17 00:00:00 2001 From: Shriya Tyagi Date: Mon, 11 Mar 2024 02:58:56 +0530 Subject: [PATCH 4/4] feat: minor update --- contracts/mainnet/connectors/steth-queue/main.sol | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts/mainnet/connectors/steth-queue/main.sol b/contracts/mainnet/connectors/steth-queue/main.sol index 3a11457..4765409 100644 --- a/contracts/mainnet/connectors/steth-queue/main.sol +++ b/contracts/mainnet/connectors/steth-queue/main.sol @@ -31,7 +31,7 @@ abstract contract StethQueueConnector is Events, Basic { ? TokenInterface(STETH).balanceOf(address(this)) : stETHAmt_; - approve(TokenInterface(address(STETH)), FLUID_STETH_QUEUE, stETHAmt_); + approve(TokenInterface(STETH), FLUID_STETH_QUEUE, stETHAmt_); uint256 requestIdFrom_ = fluidStethContract_.queue( ethBorrowAmount_, stETHAmt_, @@ -73,7 +73,7 @@ abstract contract StethQueueConnector is Events, Basic { setUint(setIdRepayAmt_, repayAmount_); _eventName = "LogClaimSteth(uint256,uint256,uint256,uint256,uint256,uint256)"; _eventParam = abi.encode( - nftId_, + nftIdNum_, claimedAmount_, repayAmount_, getId_,