# CBR Module

## Overview

The **CBR** module is the protocol's core RWA lending ledger logic library, managing the full lifecycle of collateralized lending. It tracks all collateral supply status, loan positions, interest rate evolution, and provides a complete set of operations for creating loans, adjusting borrowing and collateral, calculating interest, and liquidation.

## Functions and Responsibilities

#### Collateral Supply Management

* Track each collateral's total supply (totalCollateral), total minting (totalMint), and accumulated earnings (totalEarn)
* Support collateral pause and resume (pause/unpause)
* Manage collateral interest rate configuration (interestRateStrategy), cap configuration (capManager), and liquidation parameters (rateConfig)

#### Loan Position Management

* Support loan creation (createLoanPosition), allocate unique IDs and register to user position collections
* Support loan additional borrowing (increaseBorrow) and borrowing reduction (decreaseBorrow)
* Support collateral increase (increaseCollateral) and decrease (decreaseCollateral)

#### Interest Rate and Interest Calculation

* Dynamically maintain collateral interest rate index (interestRateIndex), update with time progression (upkeepInterestRateIndex)
* Accumulate interest on loan positions according to interest rate index (upkeepLoanInterest), creating compound interest effects
* Allow packing and unpacking interest rate configuration parameters according to strategies (packRateConfig/unpackRateConfig)

#### Liquidation Mechanism

* Allow liquidation when position collateral ratio is insufficient (liquidateLoan)
* Liquidation process supports both proportional liquidation (limited by liquidationPercent) and full liquidation
* Calculate receivable collateral (including penalty liquidationPenalty), update positions and global supply

## Interactions and Dependencies

#### Users

* Initiate loan-related operations: create loans, add/reduce borrowing, increase/decrease collateral, repayment/liquidation
* Each loan is assigned a unique ID and recorded in user loan collections

#### Collateral Tokens

* Managed through functions like createCollateralToken, updateOracle, updateInterestRateStrategy
* Each collateral corresponds to a CBRSupply structure recording total supply, interest rate index, caps and liquidation parameters
* Support pause function for emergency suspension during risk events

#### Cap Manager (ICapManagerCBR)

* Control supply and borrowing caps for each collateral type

#### Interest Rate Strategy

* Provide logic for updating loan interest rates
