Skip to content

IFluidDexT1 ​

FluidDexError ​

solidity
error FluidDexError(uint256 errorId)

FluidDexSwapResult ​

solidity
error FluidDexSwapResult(uint256 amountOut)

used to simulate swap to find the output amount

FluidDexPerfectLiquidityOutput ​

solidity
error FluidDexPerfectLiquidityOutput(uint256 token0Amt, uint256 token1Amt)

FluidDexSingleTokenOutput ​

solidity
error FluidDexSingleTokenOutput(uint256 tokenAmt)

FluidDexLiquidityOutput ​

solidity
error FluidDexLiquidityOutput(uint256 shares)

FluidDexPricesAndExchangeRates ​

solidity
error FluidDexPricesAndExchangeRates(struct IFluidDexT1.PricesAndExchangePrice pex_)

DEX_ID ​

solidity
function DEX_ID() external view returns (uint256)

returns the dex id

readFromStorage ​

solidity
function readFromStorage(bytes32 slot_) external view returns (uint256 result_)

reads uint256 data result_ from storage at a bytes32 storage slot_ key.

Implementations ​

solidity
struct Implementations {
  address shift;
  address admin;
  address colOperations;
  address debtOperations;
  address perfectOperationsAndOracle;
}

ConstantViews ​

solidity
struct ConstantViews {
  uint256 dexId;
  address liquidity;
  address factory;
  struct IFluidDexT1.Implementations implementations;
  address deployerContract;
  address token0;
  address token1;
  bytes32 supplyToken0Slot;
  bytes32 borrowToken0Slot;
  bytes32 supplyToken1Slot;
  bytes32 borrowToken1Slot;
  bytes32 exchangePriceToken0Slot;
  bytes32 exchangePriceToken1Slot;
  uint256 oracleMapping;
}

ConstantViews2 ​

solidity
struct ConstantViews2 {
  uint256 token0NumeratorPrecision;
  uint256 token0DenominatorPrecision;
  uint256 token1NumeratorPrecision;
  uint256 token1DenominatorPrecision;
}

PricesAndExchangePrice ​

solidity
struct PricesAndExchangePrice {
  uint256 lastStoredPrice;
  uint256 centerPrice;
  uint256 upperRange;
  uint256 lowerRange;
  uint256 geometricMean;
  uint256 supplyToken0ExchangePrice;
  uint256 borrowToken0ExchangePrice;
  uint256 supplyToken1ExchangePrice;
  uint256 borrowToken1ExchangePrice;
}

CollateralReserves ​

solidity
struct CollateralReserves {
  uint256 token0RealReserves;
  uint256 token1RealReserves;
  uint256 token0ImaginaryReserves;
  uint256 token1ImaginaryReserves;
}

DebtReserves ​

solidity
struct DebtReserves {
  uint256 token0Debt;
  uint256 token1Debt;
  uint256 token0RealReserves;
  uint256 token1RealReserves;
  uint256 token0ImaginaryReserves;
  uint256 token1ImaginaryReserves;
}

getCollateralReserves ​

solidity
function getCollateralReserves(uint256 geometricMean_, uint256 upperRange_, uint256 lowerRange_, uint256 token0SupplyExchangePrice_, uint256 token1SupplyExchangePrice_) external view returns (struct IFluidDexT1.CollateralReserves c_)

getDebtReserves ​

solidity
function getDebtReserves(uint256 geometricMean_, uint256 upperRange_, uint256 lowerRange_, uint256 token0BorrowExchangePrice_, uint256 token1BorrowExchangePrice_) external view returns (struct IFluidDexT1.DebtReserves d_)

getPricesAndExchangePrices ​

solidity
function getPricesAndExchangePrices() external

constantsView ​

solidity
function constantsView() external view returns (struct IFluidDexT1.ConstantViews constantsView_)

constantsView2 ​

solidity
function constantsView2() external view returns (struct IFluidDexT1.ConstantViews2 constantsView2_)

Oracle ​

solidity
struct Oracle {
  uint256 twap1by0;
  uint256 lowestPrice1by0;
  uint256 highestPrice1by0;
  uint256 twap0by1;
  uint256 lowestPrice0by1;
  uint256 highestPrice0by1;
}

swapIn ​

solidity
function swapIn(bool swap0to1_, uint256 amountIn_, uint256 amountOutMin_, address to_) external payable returns (uint256 amountOut_)

This function allows users to swap a specific amount of input tokens for output tokens

Parameters ​

NameTypeDescription
swap0to1_boolDirection of swap. If true, swaps token0 for token1; if false, swaps token1 for token0
amountIn_uint256The exact amount of input tokens to swap
amountOutMin_uint256The minimum amount of output tokens the user is willing to accept
to_addressRecipient of swapped tokens. If to* == address(0) then out tokens will be sent to msg.sender. If to* == ADDRESSDEAD then function will revert with amountOut

Return Values ​

NameTypeDescription
amountOut_uint256The amount of output tokens received from the swap

swapOut ​

solidity
function swapOut(bool swap0to1_, uint256 amountOut_, uint256 amountInMax_, address to_) external payable returns (uint256 amountIn_)

Swap tokens with perfect amount out

Parameters ​

NameTypeDescription
swap0to1_boolDirection of swap. If true, swaps token0 for token1; if false, swaps token1 for token0
amountOut_uint256The exact amount of tokens to receive after swap
amountInMax_uint256Maximum amount of tokens to swap in
to_addressRecipient of swapped tokens. If to* == address(0) then out tokens will be sent to msg.sender. If to* == ADDRESSDEAD then function will revert with amountIn

Return Values ​

NameTypeDescription
amountIn_uint256The amount of input tokens used for the swap

depositPerfect ​

solidity
function depositPerfect(uint256 shares_, uint256 maxToken0Deposit_, uint256 maxToken1Deposit_, bool estimate_) external payable returns (uint256 token0Amt_, uint256 token1Amt_)

Deposit tokens in equal proportion to the current pool ratio

Parameters ​

NameTypeDescription
shares_uint256The number of shares to mint
maxToken0Deposit_uint256Maximum amount of token0 to deposit
maxToken1Deposit_uint256Maximum amount of token1 to deposit
estimate_boolIf true, function will revert with estimated deposit amounts without executing the deposit

Return Values ​

NameTypeDescription
token0Amt_uint256Amount of token0 deposited
token1Amt_uint256Amount of token1 deposited

withdrawPerfect ​

solidity
function withdrawPerfect(uint256 shares_, uint256 minToken0Withdraw_, uint256 minToken1Withdraw_, address to_) external returns (uint256 token0Amt_, uint256 token1Amt_)

This function allows users to withdraw a perfect amount of collateral liquidity

Parameters ​

NameTypeDescription
shares_uint256The number of shares to withdraw
minToken0Withdraw_uint256The minimum amount of token0 the user is willing to accept
minToken1Withdraw_uint256The minimum amount of token1 the user is willing to accept
to_addressRecipient of swapped tokens. If to* == address(0) then out tokens will be sent to msg.sender. If to* == ADDRESSDEAD then function will revert with token0Amt & token1Amt_

Return Values ​

NameTypeDescription
token0Amt_uint256The amount of token0 withdrawn
token1Amt_uint256The amount of token1 withdrawn

borrowPerfect ​

solidity
function borrowPerfect(uint256 shares_, uint256 minToken0Borrow_, uint256 minToken1Borrow_, address to_) external returns (uint256 token0Amt_, uint256 token1Amt_)

This function allows users to borrow tokens in equal proportion to the current debt pool ratio

Parameters ​

NameTypeDescription
shares_uint256The number of shares to borrow
minToken0Borrow_uint256Minimum amount of token0 to borrow
minToken1Borrow_uint256Minimum amount of token1 to borrow
to_addressRecipient of swapped tokens. If to* == address(0) then out tokens will be sent to msg.sender. If to* == ADDRESSDEAD then function will revert with token0Amt & token1Amt_

Return Values ​

NameTypeDescription
token0Amt_uint256Amount of token0 borrowed
token1Amt_uint256Amount of token1 borrowed

paybackPerfect ​

solidity
function paybackPerfect(uint256 shares_, uint256 maxToken0Payback_, uint256 maxToken1Payback_, bool estimate_) external payable returns (uint256 token0Amt_, uint256 token1Amt_)

This function allows users to pay back borrowed tokens in equal proportion to the current debt pool ratio

Parameters ​

NameTypeDescription
shares_uint256The number of shares to pay back
maxToken0Payback_uint256Maximum amount of token0 to pay back
maxToken1Payback_uint256Maximum amount of token1 to pay back
estimate_boolIf true, function will revert with estimated payback amounts without executing the payback

Return Values ​

NameTypeDescription
token0Amt_uint256Amount of token0 paid back
token1Amt_uint256Amount of token1 paid back

deposit ​

solidity
function deposit(uint256 token0Amt_, uint256 token1Amt_, uint256 minSharesAmt_, bool estimate_) external payable returns (uint256 shares_)

This function allows users to deposit tokens in any proportion into the col pool

Parameters ​

NameTypeDescription
token0Amt_uint256The amount of token0 to deposit
token1Amt_uint256The amount of token1 to deposit
minSharesAmt_uint256The minimum amount of shares the user expects to receive
estimate_boolIf true, function will revert with estimated shares without executing the deposit

Return Values ​

NameTypeDescription
shares_uint256The amount of shares minted for the deposit

withdraw ​

solidity
function withdraw(uint256 token0Amt_, uint256 token1Amt_, uint256 maxSharesAmt_, address to_) external returns (uint256 shares_)

This function allows users to withdraw tokens in any proportion from the col pool

Parameters ​

NameTypeDescription
token0Amt_uint256The amount of token0 to withdraw
token1Amt_uint256The amount of token1 to withdraw
maxSharesAmt_uint256The maximum number of shares the user is willing to burn
to_addressRecipient of swapped tokens. If to* == address(0) then out tokens will be sent to msg.sender. If to* == ADDRESSDEAD then function will revert with shares

Return Values ​

NameTypeDescription
shares_uint256The number of shares burned for the withdrawal

borrow ​

solidity
function borrow(uint256 token0Amt_, uint256 token1Amt_, uint256 maxSharesAmt_, address to_) external returns (uint256 shares_)

This function allows users to borrow tokens in any proportion from the debt pool

Parameters ​

NameTypeDescription
token0Amt_uint256The amount of token0 to borrow
token1Amt_uint256The amount of token1 to borrow
maxSharesAmt_uint256The maximum amount of shares the user is willing to receive
to_addressRecipient of swapped tokens. If to* == address(0) then out tokens will be sent to msg.sender. If to* == ADDRESSDEAD then function will revert with shares

Return Values ​

NameTypeDescription
shares_uint256The amount of borrow shares minted to represent the borrowed amount

payback ​

solidity
function payback(uint256 token0Amt_, uint256 token1Amt_, uint256 minSharesAmt_, bool estimate_) external payable returns (uint256 shares_)

This function allows users to payback tokens in any proportion to the debt pool

Parameters ​

NameTypeDescription
token0Amt_uint256The amount of token0 to payback
token1Amt_uint256The amount of token1 to payback
minSharesAmt_uint256The minimum amount of shares the user expects to burn
estimate_boolIf true, function will revert with estimated shares without executing the payback

Return Values ​

NameTypeDescription
shares_uint256The amount of borrow shares burned for the payback

withdrawPerfectInOneToken ​

solidity
function withdrawPerfectInOneToken(uint256 shares_, uint256 minToken0_, uint256 minToken1_, address to_) external returns (uint256 withdrawAmt_)

This function allows users to withdraw their collateral with perfect shares in one token

Parameters ​

NameTypeDescription
shares_uint256The number of shares to burn for withdrawal
minToken0_uint256The minimum amount of token0 the user expects to receive (set to 0 if withdrawing in token1)
minToken1_uint256The minimum amount of token1 the user expects to receive (set to 0 if withdrawing in token0)
to_addressRecipient of swapped tokens. If to* == address(0) then out tokens will be sent to msg.sender. If to* == ADDRESSDEAD then function will revert with withdrawAmt

Return Values ​

NameTypeDescription
withdrawAmt_uint256The amount of tokens withdrawn in the chosen token

paybackPerfectInOneToken ​

solidity
function paybackPerfectInOneToken(uint256 shares_, uint256 maxToken0_, uint256 maxToken1_, bool estimate_) external payable returns (uint256 paybackAmt_)

This function allows users to payback their debt with perfect shares in one token

Parameters ​

NameTypeDescription
shares_uint256The number of shares to burn for payback
maxToken0_uint256The maximum amount of token0 the user is willing to pay (set to 0 if paying back in token1)
maxToken1_uint256The maximum amount of token1 the user is willing to pay (set to 0 if paying back in token0)
estimate_boolIf true, the function will revert with the estimated payback amount without executing the payback

Return Values ​

NameTypeDescription
paybackAmt_uint256The amount of tokens paid back in the chosen token

oraclePrice ​

solidity
function oraclePrice(uint256[] secondsAgos_) external view returns (struct IFluidDexT1.Oracle[] twaps_, uint256 currentPrice_)

the oracle assumes last set price of pool till the next swap happens. There's a possibility that during that time some interest is generated hence the last stored price is not the 100% correct price for the whole duration but the difference due to interest will be super low so this difference is ignored For example 2 swaps happened 10min (600 seconds) apart and 1 token has 10% higher interest than other. then that token will accrue about 10% * 600 / secondsInAYear = ~0.0002%

Parameters ​

NameTypeDescription
secondsAgos_uint256[]array of seconds ago for which TWAP is needed. If user sends [10, 30, 60] then twaps_ will return [10-0, 30-10, 60-30]

Return Values ​

NameTypeDescription
twaps_struct IFluidDexT1.Oracle[]twap price, lowest price (aka minima) & highest price (aka maxima) between secondsAgo checkpoints
currentPrice_uint256price of pool after the most recent swap