Parameter Details

// 1. CollateralInfo[], for each collateral 

struct CollateralInfo{
    address tokenAddress;
    uint256 tokenId; // tokenId collateral tokenId, 0 for ERC20.
    //totalCollateral total amount of collateral for a given ERC20 asset, will be zero for NFTs
    uint256 totalCollateral;
    
    // max amount in underlying that a user can "owe" per base unit of collateral (unit = 1 for NFTs, 1e18 for ERC20s)
    // should always be more than the maxBorrowAmount, acts as buffer for protocol and borrower. this is the value to determine whether
    // a borrower is liquidatable
    uint256 maxAmount;
    
    // max amount in underlying that a user can borrow per base unit of collateral (unit = 1 for NFTs, 1e18 for ERC20s)
    uint256 maxBorrowAmount;
    
    bool isERC20;
    
    // auction parameters
    uint256 tau; // seconds after auction start when the price reaches zero -> linearDecrease
    uint256 cusp; // percentage price drop that can occur before an auction must be reset.
    uint256 tail; // seconds that can elapse before an auction must be reset.
    uint256 buf; // auction start price = buf * maxAmount
}

// 2. Interest Rate Parameters
struct RateParams{
    uint256 _minInterest; 
    uint256 _vertexInterest; 
    uint256 _maxInterest;  
    uint256 _vertexUtilization; 
}

// 3. Tranche Parameters that parametrizes the junior vs senior profit split 
struct PoolData{
    uint256 saleAmount; // Discounted longZCB allocated for high reputation managers
    uint256 initPrice; // init price of longZCB in the amm 
    uint256 promisedReturn; //per unit time value accrual for senior tranche
    uint256 inceptionTime; // approval time to start the promised return accrual 
    uint256 inceptionPrice; // init price of longZCB after assessment 
    uint256 leverageFactor; // leverageFactor * manager collateral = capital from vault to instrument
    uint256 managementFee; // sum of discounts for high reputation managers/validators
}

Last updated