Internals ​
Fluid "VaultT4" (Vault Type 4). Fluid vault protocol main contract. T4 -> Smart collateral | Smart debt Fluid Vault protocol is a borrow / lending protocol, allowing users to create collateral / borrow positions. All funds are deposited into / borrowed from Fluid Liquidity layer. Positions are represented through NFTs minted by the VaultFactory. Deployed by "VaultFactory" and linked together with Vault AdminModule ADMIN_IMPLEMENTATION
and FluidVaultSecondary (main2.sol) SECONDARY_IMPLEMENTATION
. AdminModule & FluidVaultSecondary methods are delegateCalled, if the msg.sender has the required authorization. This contract links to an Oracle, which is used to assess collateral / debt value. Oracles implement the "FluidOracle" base contract and return the price in 1e27 precision.
For view methods / accessing data, use the "VaultResolver" periphery contract.
_debtLiquidateBefore ​
function _debtLiquidateBefore(uint256 token0DebtAmt_, uint256 token1DebtAmt_, uint256 debtSharesMin_) internal returns (uint256 shares_)
_colLiquidatePerfectAfter ​
function _colLiquidatePerfectAfter(uint256 perfectColShares_, uint256 token0ColAmtPerUnitShares_, uint256 token1ColAmtPerUnitShares_, address to_) internal returns (uint256 newColToken0_, uint256 newColToken1_)
_debtLiquidatePerfectPayback ​
function _debtLiquidatePerfectPayback(uint256 perfectDebtShares_, uint256 token0DebtAmtPerUnitShares_, uint256 token1DebtAmtPerUnitShares_) internal returns (uint256 token0DebtPaid_, uint256 token1DebtPaid_)
constructor ​
constructor(struct Structs.ConstantViews constants_) internal
FluidVaultT4 ​
operate ​
function operate(uint256 nftId_, int256 newColToken0_, int256 newColToken1_, int256 colSharesMinMax_, int256 newDebtToken0_, int256 newDebtToken1_, int256 debtSharesMinMax_, address to_) external payable returns (uint256, int256, int256)
Performs operations on a vault position
This function allows users to modify their vault position by adjusting collateral and debt
Parameters ​
Name | Type | Description |
---|---|---|
nftId_ | uint256 | The ID of the NFT representing the vault position |
newColToken0_ | int256 | The change in collateral amount for token0 (positive for deposit, negative for withdrawal) |
newColToken1_ | int256 | The change in collateral amount for token1 (positive for deposit, negative for withdrawal) |
colSharesMinMax_ | int256 | Min or max collateral shares to mint or burn (positive for deposit, negative for withdrawal) |
newDebtToken0_ | int256 | The change in debt amount for token0 (positive for borrowing, negative for repayment) |
newDebtToken1_ | int256 | The change in debt amount for token1 (positive for borrowing, negative for repayment) |
debtSharesMinMax_ | int256 | Min or max debt shares to burn or mint (positive for borrowing, negative for repayment) |
to_ | address | The address to receive funds (if address(0), defaults to msg.sender) |
Return Values ​
Name | Type | Description |
---|---|---|
[0] | uint256 | supplyAmt_ Final supply amount (negative if withdrawal occurred) |
[1] | int256 | borrowAmt_ Final borrow amount (negative if repayment occurred) |
[2] | int256 |
operatePerfect ​
function operatePerfect(uint256 nftId_, int256 perfectColShares_, int256 colToken0MinMax_, int256 colToken1MinMax_, int256 perfectDebtShares_, int256 debtToken0MinMax_, int256 debtToken1MinMax_, address to_) external payable returns (uint256, int256[] r_)
Performs operations on a vault position with perfect collateral shares
This function allows users to modify their vault position by adjusting collateral and debt
Parameters ​
Name | Type | Description |
---|---|---|
nftId_ | uint256 | The ID of the NFT representing the vault position |
perfectColShares_ | int256 | The change in collateral shares (positive for deposit, negative for withdrawal) |
colToken0MinMax_ | int256 | Min or max collateral amount of token0 to withdraw or deposit (positive for deposit, negative for withdrawal) |
colToken1MinMax_ | int256 | Min or max collateral amount of token1 to withdraw or deposit (positive for deposit, negative for withdrawal) |
perfectDebtShares_ | int256 | The change in debt shares (positive for borrowing, negative for repayment) |
debtToken0MinMax_ | int256 | Min or max debt amount for token0 to borrow or payback (positive for borrowing, negative for repayment) |
debtToken1MinMax_ | int256 | Min or max debt amount for token1 to borrow or payback (positive for borrowing, negative for repayment) |
to_ | address | The address to receive funds (if address(0), defaults to msg.sender) |
Return Values ​
Name | Type | Description |
---|---|---|
[0] | uint256 | nftId_ The ID of the NFT representing the updated vault position |
r_ | int256[] | int256 array of return values: 0 - final col shares amount (can only change on max withdrawal) 1 - token0 deposit or withdraw amount 2 - token1 deposit or withdraw amount 3 - final debt shares amount (can only change on max payback) 4 - token0 borrow or payback amount 5 - token1 borrow or payback amount |
liquidate ​
function liquidate(uint256 token0DebtAmt_, uint256 token1DebtAmt_, uint256 debtSharesMin_, uint256 colPerUnitDebt_, uint256 token0ColAmtPerUnitShares_, uint256 token1ColAmtPerUnitShares_, address to_, bool absorb_) external payable returns (uint256 actualDebtShares_, uint256 actualColShares_, uint256 token0Col_, uint256 token1Col_)
Liquidates a vault position
This function allows users to liquidate a vault position by adjusting collateral and debt
Parameters ​
Name | Type | Description |
---|---|---|
token0DebtAmt_ | uint256 | The amount of debt in token0 to payback |
token1DebtAmt_ | uint256 | The amount of debt in token1 to payback |
debtSharesMin_ | uint256 | The minimum number of debt shares to liquidate |
colPerUnitDebt_ | uint256 | The collateral amount per unit of debt shares |
token0ColAmtPerUnitShares_ | uint256 | The collateral amount per unit of debt shares for token0 (in 1e18) |
token1ColAmtPerUnitShares_ | uint256 | The collateral amount per unit of debt shares for token1 (in 1e18) |
to_ | address | The address to receive withdrawn collateral (if address(0), defaults to msg.sender) |
absorb_ | bool | Whether to liquidate absorbed liquidity as well |
Return Values ​
Name | Type | Description |
---|---|---|
actualDebtShares_ | uint256 | The actual number of debt shares liquidated |
actualColShares_ | uint256 | The actual number of collateral shares liquidated |
token0Col_ | uint256 | The amount of token0 collateral withdrawn |
token1Col_ | uint256 | The amount of token1 collateral withdrawn |
LiquidatePerfect ​
struct LiquidatePerfect {
uint256 vaultVariables;
uint256 initialEth;
}
liquidatePerfect ​
function liquidatePerfect(uint256 debtShares_, uint256 token0DebtAmtPerUnitShares_, uint256 token1DebtAmtPerUnitShares_, uint256 colPerUnitDebt_, uint256 token0ColAmtPerUnitShares_, uint256 token1ColAmtPerUnitShares_, address to_, bool absorb_) external payable returns (uint256 actualDebtShares_, uint256 token0Debt_, uint256 token1Debt_, uint256 actualColShares_, uint256 token0Col_, uint256 token1Col_)
Liquidates a vault position with perfect collateral shares
This function allows users to liquidate a vault position by adjusting collateral and debt
Parameters ​
Name | Type | Description |
---|---|---|
debtShares_ | uint256 | The number of debt shares to liquidate |
token0DebtAmtPerUnitShares_ | uint256 | The debt amount per unit of debt shares for token0 (in 1e18) |
token1DebtAmtPerUnitShares_ | uint256 | The debt amount per unit of debt shares for token1 (in 1e18) |
colPerUnitDebt_ | uint256 | The collateral amount per unit of debt shares (in 1e18) |
token0ColAmtPerUnitShares_ | uint256 | The collateral amount per unit of debt shares for token0 (in 1e18) |
token1ColAmtPerUnitShares_ | uint256 | The collateral amount per unit of debt shares for token1 (in 1e18) |
to_ | address | The address to receive withdrawn collateral or borrowed tokens (if address(0), defaults to msg.sender) |
absorb_ | bool | Whether to liquidate absorbed liquidity as well |
Return Values ​
Name | Type | Description |
---|---|---|
actualDebtShares_ | uint256 | The actual number of debt shares liquidated |
token0Debt_ | uint256 | The amount of debt in token0 that was paid back |
token1Debt_ | uint256 | The amount of debt in token1 that was paid back |
actualColShares_ | uint256 | The actual number of collateral shares liquidated |
token0Col_ | uint256 | The amount of collateral in token0 that was withdrawn |
token1Col_ | uint256 | The amount of collateral in token1 that was withdrawn |
constructor ​
constructor(struct Structs.ConstantViews constants_) public