Skip to main content

IBondController

IBondController

Controller for a ButtonTranche bond system

collateralToken() → address (external)

tranches(uint256 i) → contract ITranche token, uint256 ratio (external)

trancheCount() → uint256 count (external)

feeBps() → uint256 fee (external)

maturityDate() → uint256 maturityDate (external)

isMature() → bool isMature (external)

creationDate() → uint256 creationDate (external)

totalDebt() → uint256 totalDebt (external)

deposit(uint256 amount) (external)

Deposit amount tokens from msg.sender, get tranche tokens in return Requirements:

  • msg.sender must have approved amount collateral tokens to this contract

mature() (external)

Matures the bond. Disables deposits, fixes the redemption ratio, and distributes collateral to redemption pools Redeems any fees collected from deposits, sending redeemed funds to the contract owner Requirements:

  • The bond is not already mature
  • One of:
    • msg.sender is owner
    • maturityDate has passed

redeemMature(address tranche, uint256 amount) (external)

Redeems some tranche tokens Requirements:

  • The bond is mature
  • msg.sender owns at least amount tranche tokens from address tranche
  • tranche must be a valid tranche token on this bond

redeem(uint256[] amounts) (external)

Redeems a slice of tranche tokens from all tranches. Returns collateral to the user proportionally to the amount of debt they are removing Requirements

  • The bond is not mature
  • The number of amounts is the same as the number of tranches
  • The amounts are in equivalent ratio to the tranche order

setFee(uint256 newFeeBps) (external)

Updates the fee taken on deposit to the given new fee

Requirements

  • msg.sender has admin role
  • newFeeBps is in range [0, 50]

Deposit(address from, uint256 amount, uint256 feeBps)

Mature(address caller)

RedeemMature(address user, address tranche, uint256 amount)

Redeem(address user, uint256[] amounts)

FeeUpdate(uint256 newFee)