IMagnifyCashV1

Git Source

Functions

initializeNewLendingDesk

Creates a new lending desk

Emits an {NewLendingDeskInitialized} event.

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

Parameters

NameTypeDescription

_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

Creates a new lending configuration

Emits an {LendingDeskLoanConfigsSet} event.

function setLendingDeskLoanConfigs(uint256 _lendingDeskId, LoanConfig[] calldata _loanConfigs) external;

Parameters

NameTypeDescription

_lendingDeskId

uint256

Identifier for the lending desk

_loanConfigs

LoanConfig[]

Loan config for each NFT collection this lending desk will support

Removes a new lending configuration

Emits an {LendingDeskLoanConfigsSet} event.

function removeLendingDeskLoanConfig(uint256 _lendingDeskId, address _nftCollection) external;

Parameters

NameTypeDescription

_lendingDeskId

uint256

Identifier for the lending desk

_nftCollection

address

Address for the NFT collection to remove supported config for

This function is called to add liquidity to a lending desk

Emits an {LendingDeskLiquidityDeposited} event.

function depositLendingDeskLiquidity(uint256 _lendingDeskId, uint256 _amount) external;

Parameters

NameTypeDescription

_lendingDeskId

uint256

The id of the lending desk

_amount

uint256

The balance to be transferred

This function is called to cash out a lending desk

Emits an {LendingDeskLiquidityWithdrawn} event.

function withdrawLendingDeskLiquidity(uint256 _lendingDeskId, uint256 _amount) external;

Parameters

NameTypeDescription

_lendingDeskId

uint256

The id of the lending desk to be cashout

_amount

uint256

Amount to withdraw from the lending desk

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

Emits an {LendingDeskStateSet} event.

function setLendingDeskState(uint256 _lendingDeskId, bool _freezed) external;

Parameters

NameTypeDescription

_lendingDeskId

uint256

ID of the lending desk to be frozen

_freezed

bool

Whether to freeze or unfreeze

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

Emits an {NewLoanInitialized} event

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

Parameters

NameTypeDescription

_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

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

function getLoanAmountDue(uint256 _loanId) external view returns (uint256 amount);

Parameters

NameTypeDescription

_loanId

uint256

ID of the loan

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

Emits an {LoanPaymentMade} event.

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

Parameters

NameTypeDescription

_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.

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

Emits an {LiquidatedOverdueLoan} event.

function liquidateDefaultedLoan(uint256 _loanId) external;

Parameters

NameTypeDescription

_loanId

uint256

ID of the loan

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

Emits an {LoanOriginationFeeSet} event.

function setLoanOriginationFee(uint256 _loanOriginationFee) external;

Parameters

NameTypeDescription

_loanOriginationFee

uint256

Basis points fee the borrower will have to pay to the platform when borrowing loan

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

Emits an {PlatformWalletSet} event.

function setPlatformWallet(address _platformWallet) external;

Parameters

NameTypeDescription

_platformWallet

address

Wallet where platform fees will be sent to

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

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

function setPaused(bool _paused) external;

Parameters

NameTypeDescription

_paused

bool

Whether to pause or unpause

Struct used to store loans

struct Loan {
    uint256 amount;
    uint256 amountPaidBack;
    address nftCollection;
    uint64 startTime;
    uint64 nftId;
    uint64 lendingDeskId;
    uint32 duration;
    uint32 interest;
    LoanStatus status;
    bool nftCollectionIsErc1155;
}

Struct used to store loan config set by the shop owner for an NFT collection

struct LoanConfig {
    address nftCollection;
    bool nftCollectionIsErc1155;
    uint256 minAmount;
    uint256 maxAmount;
    uint32 minInterest;
    uint32 maxInterest;
    uint32 minDuration;
    uint32 maxDuration;
}

Struct used to store lending desks on this contract

struct LendingDesk {
    address erc20;
    uint256 balance;
    LendingDeskStatus status;
}

LendingDeskStatus used to store lending desk status

Active Default status when a lending desk is created

Frozen Used when a lender pauses or 'freezes' their desk

enum LendingDeskStatus {
    Active,
    Frozen
}

LoanStatus used to store loan status

Active Default status when a loan is issued

Resolved Used when a loan is fully paid back by borrower

Defaulted Used when a loan is liquidated by lender

enum LoanStatus {
    Active,
    Resolved,
    Defaulted
}

Last updated