// Holds the index for the next loan ID
Counters.Counter loanIDCounter;
// Maps loanIDs to loan data
mapping(uint256 => Loan) loans;
// Maps loanID to loan debt (total owed left)
mapping(uint256 => LoanDebt) loanDebt;
// Maps loanID to loan terms
mapping(uint256 => LoanTerms) _loanTerms; // DEPRECATED: DO NOT REMOVE
// Maps loanIDs to escrow address to list of held tokens
mapping(uint256 => ILoansEscrow) loanEscrows;
// Maps loanIDs to list of tokens owned by a loan escrow
mapping(uint256 => EnumerableSet.AddressSet) escrowTokens;
// Maps collateral token address to a LoanCollateralEscrow that hold collateral funds
mapping(address => ICollateralEscrow) collateralEscrows;
// Maps accounts to owned loan IDs
mapping(address => uint128[]) borrowerLoans;
// Maps lending token to overall amount of interest collected from loans
mapping(address => ITToken) tTokens;
// Maps lending token to list of signer addresses who are only ones allowed to verify loan requests
mapping(address => EnumerableSet.AddressSet) signers;
// Maps lending token to list of allowed collateral tokens
mapping(address => EnumerableSet.AddressSet) collateralTokens;
bytes32 constant MARKET_STORAGE_POS = keccak256("teller.market.storage");
library MarketStorageLib {
function store() internal pure returns (MarketStorage storage s) {
bytes32 pos = MARKET_STORAGE_POS;