// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; import "@openzeppelin-contracts/token/ERC20/IERC20.sol"; interface IBondDepository { error DepositoryConcluded(uint48 concludedTime); error DepositoryMaxPrice(uint256 price, uint256 maxPrice); error DepositoryMaxSize(uint256 payout, uint256 maxPayout); event MarketClosed(uint256 indexed id); event Bond(uint256 indexed id, uint256 amount, uint256 price); event Tuned(uint256 indexed id, uint64 oldControlVariable, uint64 newControlVariable); event MarketCreated( uint256 indexed id, address indexed baseToken, address indexed quoteToken, uint256 initialPrice ); struct Market { uint256 capacity; address quoteToken; bool capacityInQuote; uint64 totalDebt; uint64 maxPayout; uint64 sold; uint256 purchased; } struct Term { bool fixedTerm; uint64 controlVariable; uint48 vesting; uint48 conclusion; uint64 maxDebt; } struct Metadata { uint48 lastTune; uint48 lastDecay; uint48 length; uint48 depositInterval; uint48 tuneInterval; uint8 quoteDecimals; } struct Adjustment { uint64 change; uint48 lastAdjustment; uint48 timeToAdjusted; bool active; } function deposit( uint256 _bid, uint256 _amount, uint256 _maxPrice, address _user, address _referral ) external returns ( uint256 payout_, uint256 expiry_, uint256 index_ ); function create( uint256[3] memory _market, uint256[2] memory _terms, address _quoteToken, uint32[2] memory _intervals, bool[2] memory _booleans ) external returns (uint256 id_); function close(uint256 _id) external; function isLive(uint256 _bid) external view returns (bool); function liveMarkets() external view returns (uint256[] memory); function liveMarketsFor(address _quoteToken) external view returns (uint256[] memory); function payoutFor(uint256 _amount, uint256 _bid) external view returns (uint256); function marketPrice(uint256 _bid) external view returns (uint256); function currentDebt(uint256 _bid) external view returns (uint256); function debtRatio(uint256 _bid) external view returns (uint256); function debtDecay(uint256 _bid) external view returns (uint64); function currentControlVariable(uint256 _id) external view returns (uint256); }