# MagnifyCashV1

### [State Variables](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#state-variables) <a href="#state-variables" id="state-variables"></a>

#### [lendingDeskIdCounter](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#lendingdeskidcounter) <a href="#lendingdeskidcounter" id="lendingdeskidcounter"></a>

Unique identifier for lending desks

```solidity
uint256 public lendingDeskIdCounter;
```

#### [loanIdCounter](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#loanidcounter) <a href="#loanidcounter" id="loanidcounter"></a>

Unique identifier for loans

```solidity
uint256 public loanIdCounter;
```

#### [lendingDesks](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#lendingdesks) <a href="#lendingdesks" id="lendingdesks"></a>

Mapping to store lending desks

```solidity
mapping(uint256 => LendingDesk) public lendingDesks;
```

#### [lendingDeskLoanConfigs](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#lendingdeskloanconfigs) <a href="#lendingdeskloanconfigs" id="lendingdeskloanconfigs"></a>

Mapping to store loan configs of lending desks

```solidity
mapping(uint256 => mapping(address => LoanConfig)) public lendingDeskLoanConfigs;
```

#### [loans](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#loans) <a href="#loans" id="loans"></a>

Mapping to store loans

```solidity
mapping(uint256 => Loan) public loans;
```

#### [obligationNotes](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#obligationnotes) <a href="#obligationnotes" id="obligationnotes"></a>

The address of the ERC721 to generate obligation notes for borrowers

```solidity
address public immutable obligationNotes;
```

#### [lendingKeys](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#lendingkeys) <a href="#lendingkeys" id="lendingkeys"></a>

The address of the lending desk ownership ERC721

```solidity
address public immutable lendingKeys;
```

#### [loanOriginationFee](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#loanoriginationfee) <a href="#loanoriginationfee" id="loanoriginationfee"></a>

The basis points of fees that the borrower will pay for each loan

```solidity
uint256 public loanOriginationFee;
```

#### [platformWallet](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#platformwallet) <a href="#platformwallet" id="platformwallet"></a>

The address of the platform wallet

```solidity
address public platformWallet;
```

### [Functions](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#functions) <a href="#functions" id="functions"></a>

#### [constructor](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#constructor) <a href="#constructor" id="constructor"></a>

```solidity
constructor(
    address _obligationNotes,
    address _lendingKeys,
    uint256 _loanOriginationFee,
    address _platformWallet,
    address _initialOwner
);
```

#### [initializeNewLendingDesk](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#initializenewlendingdesk) <a href="#initializenewlendingdesk" id="initializenewlendingdesk"></a>

Creates a new lending desk

*Emits an {NewLendingDeskInitialized} event.*

```solidity
function initializeNewLendingDesk(address _erc20, uint256 _depositAmount, LoanConfig[] calldata _loanConfigs)
    external
    whenNotPaused;
```

**Parameters**

| Name             | Type           | Description                                                        |
| ---------------- | -------------- | ------------------------------------------------------------------ |
| `_erc20`         | `address`      | The ERC20 that will be accepted for loans in this lending desk     |
| `_depositAmount` | `uint256`      | The initial balance of this lending desk                           |
| `_loanConfigs`   | `LoanConfig[]` | Loan config for each NFT collection this lending desk will support |

#### [setLendingDeskLoanConfigs](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#setlendingdeskloanconfigs) <a href="#setlendingdeskloanconfigs" id="setlendingdeskloanconfigs"></a>

Creates a new lending configuration

*Emits an {LendingDeskLoanConfigsSet} event.*

```solidity
function setLendingDeskLoanConfigs(uint256 _lendingDeskId, LoanConfig[] calldata _loanConfigs) public whenNotPaused;
```

**Parameters**

| Name             | Type           | Description                                                        |
| ---------------- | -------------- | ------------------------------------------------------------------ |
| `_lendingDeskId` | `uint256`      | Identifier for the lending desk                                    |
| `_loanConfigs`   | `LoanConfig[]` | Loan config for each NFT collection this lending desk will support |

#### [\_setLendingDeskLoanConfigs](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#_setlendingdeskloanconfigs) <a href="#setlendingdeskloanconfigs" id="setlendingdeskloanconfigs"></a>

```solidity
function _setLendingDeskLoanConfigs(uint256 _lendingDeskId, LoanConfig[] calldata _loanConfigs) internal;
```

#### [removeLendingDeskLoanConfig](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#removelendingdeskloanconfig) <a href="#removelendingdeskloanconfig" id="removelendingdeskloanconfig"></a>

Removes a new lending configuration

*Emits an {LendingDeskLoanConfigsSet} event.*

```solidity
function removeLendingDeskLoanConfig(uint256 _lendingDeskId, address _nftCollection) external whenNotPaused;
```

**Parameters**

| Name             | Type      | Description                                                   |
| ---------------- | --------- | ------------------------------------------------------------- |
| `_lendingDeskId` | `uint256` | Identifier for the lending desk                               |
| `_nftCollection` | `address` | Address for the NFT collection to remove supported config for |

#### [depositLendingDeskLiquidity](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#depositlendingdeskliquidity) <a href="#depositlendingdeskliquidity" id="depositlendingdeskliquidity"></a>

This function is called to add liquidity to a lending desk

*Emits an {LendingDeskLiquidityDeposited} event.*

```solidity
function depositLendingDeskLiquidity(uint256 _lendingDeskId, uint256 _amount) public whenNotPaused;
```

**Parameters**

| Name             | Type      | Description                   |
| ---------------- | --------- | ----------------------------- |
| `_lendingDeskId` | `uint256` | The id of the lending desk    |
| `_amount`        | `uint256` | The balance to be transferred |

#### [\_depositLendingDeskLiquidity](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#_depositlendingdeskliquidity) <a href="#depositlendingdeskliquidity" id="depositlendingdeskliquidity"></a>

```solidity
function _depositLendingDeskLiquidity(uint256 _lendingDeskId, uint256 _amount) internal;
```

#### [withdrawLendingDeskLiquidity](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#withdrawlendingdeskliquidity) <a href="#withdrawlendingdeskliquidity" id="withdrawlendingdeskliquidity"></a>

This function is called to cash out a lending desk

*Emits an {LendingDeskLiquidityWithdrawn} event.*

```solidity
function withdrawLendingDeskLiquidity(uint256 _lendingDeskId, uint256 _amount) external;
```

**Parameters**

| Name             | Type      | Description                              |
| ---------------- | --------- | ---------------------------------------- |
| `_lendingDeskId` | `uint256` | The id of the lending desk to be cashout |
| `_amount`        | `uint256` | Amount to withdraw from the lending desk |

#### [setLendingDeskState](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#setlendingdeskstate) <a href="#setlendingdeskstate" id="setlendingdeskstate"></a>

This function can be called by the lending desk owner in order to freeze it

*Emits an {LendingDeskStateSet} event.*

```solidity
function setLendingDeskState(uint256 _lendingDeskId, bool _freeze) external whenNotPaused;
```

**Parameters**

| Name             | Type      | Description                         |
| ---------------- | --------- | ----------------------------------- |
| `_lendingDeskId` | `uint256` | ID of the lending desk to be frozen |
| `_freeze`        | `bool`    | Whether to freeze or unfreeze       |

#### [initializeNewLoan](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#initializenewloan) <a href="#initializenewloan" id="initializenewloan"></a>

This function can be called by a borrower to create a loan

*Emits an {NewLoanInitialized} event*

```solidity
function initializeNewLoan(
    uint64 _lendingDeskId,
    address _nftCollection,
    uint64 _nftId,
    uint32 _duration,
    uint256 _amount,
    uint32 _maxInterestAllowed
) external whenNotPaused;
```

**Parameters**

| Name                  | Type      | Description                                         |
| --------------------- | --------- | --------------------------------------------------- |
| `_lendingDeskId`      | `uint64`  | ID of the lending desk related to this offer        |
| `_nftCollection`      | `address` | The NFT collection address to be used as collateral |
| `_nftId`              | `uint64`  | ID of the NFT to be used as collateral              |
| `_duration`           | `uint32`  | Loan duration in hours                              |
| `_amount`             | `uint256` | Amount to ask on this loan in ERC20                 |
| `_maxInterestAllowed` | `uint32`  |                                                     |

#### [getLoanAmountDue](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#getloanamountdue) <a href="#getloanamountdue" id="getloanamountdue"></a>

This function can be called by anyone to get the remaining due amount of a loan

```solidity
function getLoanAmountDue(uint256 _loanId) public view returns (uint256 amount);
```

**Parameters**

| Name      | Type      | Description    |
| --------- | --------- | -------------- |
| `_loanId` | `uint256` | ID of the loan |

#### [makeLoanPayment](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#makeloanpayment) <a href="#makeloanpayment" id="makeloanpayment"></a>

This function can be called by the obligation note holder to pay a loan and get the collateral back

*Emits an {LoanPaymentMade} event.*

```solidity
function makeLoanPayment(uint256 _loanId, uint256 _amount, bool _resolve) external;
```

**Parameters**

| Name       | Type      | Description                                                       |
| ---------- | --------- | ----------------------------------------------------------------- |
| `_loanId`  | `uint256` | ID of the loan                                                    |
| `_amount`  | `uint256` | The amount to be paid, in erc20 tokens                            |
| `_resolve` | `bool`    | Whether to resolve the loan or not. If true, \_amount is ignored. |

#### [liquidateDefaultedLoan](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#liquidatedefaultedloan) <a href="#liquidatedefaultedloan" id="liquidatedefaultedloan"></a>

This function is called by the lending desk key owner in order to liquidate a loan and claim the NFT collateral

*Emits an {LiquidatedOverdueLoan} event.*

```solidity
function liquidateDefaultedLoan(uint256 _loanId) external;
```

**Parameters**

| Name      | Type      | Description    |
| --------- | --------- | -------------- |
| `_loanId` | `uint256` | ID of the loan |

#### [setLoanOriginationFee](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#setloanoriginationfee) <a href="#setloanoriginationfee" id="setloanoriginationfee"></a>

Allows the admin of the contract to modify loan origination fee.

*Emits an {LoanOriginationFeeSet} event.*

```solidity
function setLoanOriginationFee(uint256 _loanOriginationFee) public onlyOwner;
```

**Parameters**

| Name                  | Type      | Description                                                                        |
| --------------------- | --------- | ---------------------------------------------------------------------------------- |
| `_loanOriginationFee` | `uint256` | Basis points fee the borrower will have to pay to the platform when borrowing loan |

#### [setPlatformWallet](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#setplatformwallet) <a href="#setplatformwallet" id="setplatformwallet"></a>

Allows the admin of the contract to set the platform wallet where platform fees will be sent to

*Emits an {PlatformWalletSet} event.*

```solidity
function setPlatformWallet(address _platformWallet) public onlyOwner;
```

**Parameters**

| Name              | Type      | Description                                |
| ----------------- | --------- | ------------------------------------------ |
| `_platformWallet` | `address` | Wallet where platform fees will be sent to |

#### [setPaused](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#setpaused) <a href="#setpaused" id="setpaused"></a>

Allows the admin of the contract to pause the contract as an emergency response.

*Emits either a {Paused} or {Unpaused} event.*

```solidity
function setPaused(bool _paused) external onlyOwner;
```

**Parameters**

| Name      | Type   | Description                 |
| --------- | ------ | --------------------------- |
| `_paused` | `bool` | Whether to pause or unpause |

### [Events](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#events) <a href="#events" id="events"></a>

#### [NewLendingDeskInitialized](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#newlendingdeskinitialized) <a href="#newlendingdeskinitialized" id="newlendingdeskinitialized"></a>

Event that will be emitted every time a lending desk is created

```solidity
event NewLendingDeskInitialized(
    uint256 lendingDeskId, address owner, address erc20, uint256 initialBalance, LoanConfig[] loanConfigs
);
```

#### [LendingDeskLoanConfigsSet](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#lendingdeskloanconfigsset) <a href="#lendingdeskloanconfigsset" id="lendingdeskloanconfigsset"></a>

Event that will be emitted every time a lending desk config is created

```solidity
event LendingDeskLoanConfigsSet(uint256 lendingDeskId, LoanConfig[] loanConfigs);
```

#### [LendingDeskLoanConfigRemoved](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#lendingdeskloanconfigremoved) <a href="#lendingdeskloanconfigremoved" id="lendingdeskloanconfigremoved"></a>

Event that will be emitted every time a lending desk config is removed

```solidity
event LendingDeskLoanConfigRemoved(uint256 lendingDeskId, address nftCollection);
```

#### [LendingDeskLiquidityDeposited](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#lendingdeskliquiditydeposited) <a href="#lendingdeskliquiditydeposited" id="lendingdeskliquiditydeposited"></a>

Event that will be emitted every time liquidity is added to a lending desk

```solidity
event LendingDeskLiquidityDeposited(uint256 lendingDeskId, uint256 amountDeposited);
```

#### [LendingDeskLiquidityWithdrawn](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#lendingdeskliquiditywithdrawn) <a href="#lendingdeskliquiditywithdrawn" id="lendingdeskliquiditywithdrawn"></a>

Event that will be emitted every time there is a cash out on a lending desk

```solidity
event LendingDeskLiquidityWithdrawn(uint256 lendingDeskId, uint256 amountWithdrawn);
```

#### [LendingDeskStateSet](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#lendingdeskstateset) <a href="#lendingdeskstateset" id="lendingdeskstateset"></a>

Event that will be emitted every time a lending desk is frozen// unfrozen

```solidity
event LendingDeskStateSet(uint256 lendingDeskId, bool freeze);
```

#### [NewLoanInitialized](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#newloaninitialized) <a href="#newloaninitialized" id="newloaninitialized"></a>

Event that will be emitted every time a new offer is accepted

```solidity
event NewLoanInitialized(
    uint256 lendingDeskId,
    uint256 loanId,
    address borrower,
    address nftCollection,
    uint256 nftId,
    uint256 amount,
    uint256 duration,
    uint256 interest,
    uint256 platformFee
);
```

#### [LoanPaymentMade](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#loanpaymentmade) <a href="#loanpaymentmade" id="loanpaymentmade"></a>

Event that will be emitted every time a borrower pays back a loan

```solidity
event LoanPaymentMade(uint256 loanId, uint256 amountPaid, bool resolved);
```

#### [DefaultedLoanLiquidated](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#defaultedloanliquidated) <a href="#defaultedloanliquidated" id="defaultedloanliquidated"></a>

Event that will be emitted every time a loan is liquidated when the obligation note holder did not pay it back in time

```solidity
event DefaultedLoanLiquidated(uint256 loanId);
```

#### [ProtocolInitialized](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#protocolinitialized) <a href="#protocolinitialized" id="protocolinitialized"></a>

Event that will be when the contract is deployed

```solidity
event ProtocolInitialized(address obligationNotes, address lendingKeys);
```

#### [LoanOriginationFeeSet](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#loanoriginationfeeset) <a href="#loanoriginationfeeset" id="loanoriginationfeeset"></a>

Event that will be emitted every time an admin updates loan origination fee

```solidity
event LoanOriginationFeeSet(uint256 loanOriginationFee);
```

#### [PlatformWalletSet](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#platformwalletset) <a href="#platformwalletset" id="platformwalletset"></a>

Event that will be emitted every time an admin updates the platform wallet

```solidity
event PlatformWalletSet(address platformWallet);
```

### [Errors](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#errors) <a href="#errors" id="errors"></a>

#### [ObligationNotesIsZeroAddr](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#obligationnotesiszeroaddr) <a href="#obligationnotesiszeroaddr" id="obligationnotesiszeroaddr"></a>

```solidity
error ObligationNotesIsZeroAddr();
```

#### [LendingKeysIsZeroAddr](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#lendingkeysiszeroaddr) <a href="#lendingkeysiszeroaddr" id="lendingkeysiszeroaddr"></a>

```solidity
error LendingKeysIsZeroAddr();
```

#### [ERC20IsZeroAddr](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#erc20iszeroaddr) <a href="#erc20iszeroaddr" id="erc20iszeroaddr"></a>

```solidity
error ERC20IsZeroAddr();
```

#### [InvalidLendingDeskId](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#invalidlendingdeskid) <a href="#invalidlendingdeskid" id="invalidlendingdeskid"></a>

```solidity
error InvalidLendingDeskId();
```

#### [CallerIsNotLendingDeskOwner](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#callerisnotlendingdeskowner) <a href="#callerisnotlendingdeskowner" id="callerisnotlendingdeskowner"></a>

```solidity
error CallerIsNotLendingDeskOwner();
```

#### [MinAmountIsZero](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#minamountiszero) <a href="#minamountiszero" id="minamountiszero"></a>

```solidity
error MinAmountIsZero();
```

#### [MaxAmountIsLessThanMin](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#maxamountislessthanmin) <a href="#maxamountislessthanmin" id="maxamountislessthanmin"></a>

```solidity
error MaxAmountIsLessThanMin();
```

#### [MinInterestIsZero](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#mininterestiszero) <a href="#mininterestiszero" id="mininterestiszero"></a>

```solidity
error MinInterestIsZero();
```

#### [MaxInterestIsLessThanMin](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#maxinterestislessthanmin) <a href="#maxinterestislessthanmin" id="maxinterestislessthanmin"></a>

```solidity
error MaxInterestIsLessThanMin();
```

#### [MinDurationIsZero](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#mindurationiszero) <a href="#mindurationiszero" id="mindurationiszero"></a>

```solidity
error MinDurationIsZero();
```

#### [MaxDurationIsLessThanMin](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#maxdurationislessthanmin) <a href="#maxdurationislessthanmin" id="maxdurationislessthanmin"></a>

```solidity
error MaxDurationIsLessThanMin();
```

#### [InvalidInterest](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#invalidinterest) <a href="#invalidinterest" id="invalidinterest"></a>

```solidity
error InvalidInterest();
```

#### [InvalidNFTCollection](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#invalidnftcollection) <a href="#invalidnftcollection" id="invalidnftcollection"></a>

```solidity
error InvalidNFTCollection();
```

#### [LendingDeskIsNotActive](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#lendingdeskisnotactive) <a href="#lendingdeskisnotactive" id="lendingdeskisnotactive"></a>

```solidity
error LendingDeskIsNotActive();
```

#### [InsufficientLendingDeskBalance](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#insufficientlendingdeskbalance) <a href="#insufficientlendingdeskbalance" id="insufficientlendingdeskbalance"></a>

```solidity
error InsufficientLendingDeskBalance();
```

#### [UnsupportedNFTCollection](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#unsupportednftcollection) <a href="#unsupportednftcollection" id="unsupportednftcollection"></a>

```solidity
error UnsupportedNFTCollection();
```

#### [AmountIsZero](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#amountiszero) <a href="#amountiszero" id="amountiszero"></a>

```solidity
error AmountIsZero();
```

#### [LendingDeskIsNotFrozen](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#lendingdeskisnotfrozen) <a href="#lendingdeskisnotfrozen" id="lendingdeskisnotfrozen"></a>

```solidity
error LendingDeskIsNotFrozen();
```

#### [InvalidLoanId](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#invalidloanid) <a href="#invalidloanid" id="invalidloanid"></a>

```solidity
error InvalidLoanId();
```

#### [LendingDeskIsNotEmpty](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#lendingdeskisnotempty) <a href="#lendingdeskisnotempty" id="lendingdeskisnotempty"></a>

```solidity
error LendingDeskIsNotEmpty();
```

#### [LoanAmountTooLow](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#loanamounttoolow) <a href="#loanamounttoolow" id="loanamounttoolow"></a>

```solidity
error LoanAmountTooLow();
```

#### [LoanAmountTooHigh](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#loanamounttoohigh) <a href="#loanamounttoohigh" id="loanamounttoohigh"></a>

```solidity
error LoanAmountTooHigh();
```

#### [LoanDurationTooLow](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#loandurationtoolow) <a href="#loandurationtoolow" id="loandurationtoolow"></a>

```solidity
error LoanDurationTooLow();
```

#### [LoanDurationTooHigh](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#loandurationtoohigh) <a href="#loandurationtoohigh" id="loandurationtoohigh"></a>

```solidity
error LoanDurationTooHigh();
```

#### [LoanIsNotActive](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#loanisnotactive) <a href="#loanisnotactive" id="loanisnotactive"></a>

```solidity
error LoanIsNotActive();
```

#### [CallerIsNotBorrower](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#callerisnotborrower) <a href="#callerisnotborrower" id="callerisnotborrower"></a>

```solidity
error CallerIsNotBorrower();
```

#### [CallerIsNotLender](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#callerisnotlender) <a href="#callerisnotlender" id="callerisnotlender"></a>

```solidity
error CallerIsNotLender();
```

#### [LoanHasNotDefaulted](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#loanhasnotdefaulted) <a href="#loanhasnotdefaulted" id="loanhasnotdefaulted"></a>

```solidity
error LoanHasNotDefaulted();
```

#### [LoanHasDefaulted](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#loanhasdefaulted) <a href="#loanhasdefaulted" id="loanhasdefaulted"></a>

```solidity
error LoanHasDefaulted();
```

#### [PlatformWalletIsZeroAddr](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#platformwalletiszeroaddr) <a href="#platformwalletiszeroaddr" id="platformwalletiszeroaddr"></a>

```solidity
error PlatformWalletIsZeroAddr();
```

#### [LoanMustBeActiveForMin1Hour](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#loanmustbeactiveformin1hour) <a href="#loanmustbeactiveformin1hour" id="loanmustbeactiveformin1hour"></a>

```solidity
error LoanMustBeActiveForMin1Hour();
```

#### [LoanPaymentExceedsDebt](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#loanpaymentexceedsdebt) <a href="#loanpaymentexceedsdebt" id="loanpaymentexceedsdebt"></a>

```solidity
error LoanPaymentExceedsDebt();
```

#### [InterestRateTooHigh](https://docs.magnify.cash/contracts/contracts/MagnifyCashV1.sol/contract.MagnifyCashV1.html#interestratetoohigh) <a href="#interestratetoohigh" id="interestratetoohigh"></a>

```solidity
error InterestRateTooHigh();
```
