fluid-contracts-public/contracts/periphery/resolvers/steth/iStETHResolver.sol
2024-07-11 13:05:09 +00:00

72 lines
3.2 KiB
Solidity

//SPDX-License-Identifier: MIT
pragma solidity 0.8.21;
import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import { IFluidLiquidityResolver } from "../liquidity/iLiquidityResolver.sol";
import { IFluidStETHQueue } from "../../../protocols/steth/interfaces/iStETHQueue.sol";
import { ILidoWithdrawalQueue } from "../../../protocols/steth/interfaces/external/iLidoWithdrawalQueue.sol";
import { IFluidLiquidity } from "../../../liquidity/interfaces/iLiquidity.sol";
import { Structs as StETHQueueStructs } from "../../../protocols/steth/structs.sol";
import { Structs as LiquidityStructs } from "../liquidity/structs.sol";
interface IFluidStETHResolver {
/// @notice address of the stETHQueue contract
function STETH_QUEUE() external view returns (IFluidStETHQueue);
/// @notice address of the Lido Withdrawal Queue contract (0x889edC2eDab5f40e902b864aD4d7AdE8E412F9B1)
function LIDO_WITHDRAWAL_QUEUE() external view returns (ILidoWithdrawalQueue);
/// @notice address of the LiquidityResolver
function LIQUIDITY_RESOLVER() external view returns (IFluidLiquidityResolver);
/// @notice returns all constants and config values
function config()
external
view
returns (
IFluidLiquidity liquidity_,
ILidoWithdrawalQueue lidoWithdrawalQueue_,
IERC20 stETH_,
address owner_,
uint16 maxLTV_,
bool allowListActive_,
bool isPaused_,
LiquidityStructs.UserBorrowData memory userBorrowData_,
LiquidityStructs.OverallTokenData memory overallTokenData_
);
/// @notice checks if a linked claim for `claimTo_` and `claimTo_` is ready to be processed at Lido Withdrawal Queue
/// @param claimTo_ claimTo receiver to process the claim for
/// @param requestIdFrom_ Lido requestId from (start), as emitted at time of queuing via `LogQueue`
function isClaimable(address claimTo_, uint256 requestIdFrom_) external view returns (bool);
/// @notice reads if a certain `auth_` address is an allowed auth or not
function isAuth(address auth_) external view returns (bool);
/// @notice reads if a certain `guardian_` address is an allowed guardian or not
function isGuardian(address guardian_) external view returns (bool);
/// @notice reads if a certain `user_` address is an allowed user or not
function isUserAllowed(address user_) external view returns (bool);
/// @notice reads if the protocol is paused or not
function isPaused() external view returns (bool);
/// @notice reads a Claim struct containing necessary information for executing the claim process from the mapping
/// claimTo and requestIdFrom -> claims and the claimable status.
function claim(
address claimTo_,
uint256 requestIdFrom_
) external view returns (StETHQueueStructs.Claim memory claim_, bool isClaimable_);
/// @notice returns borrow data and general data (such as rates, exchange prices, utilization, fee, total amounts etc.) for native token
function getUserBorrowData()
external
view
returns (
LiquidityStructs.UserBorrowData memory userBorrowData_,
LiquidityStructs.OverallTokenData memory overallTokenData_
);
}