MidasPair721

MidasPair721

Contract used to trade through the Liquidity Book and also acts as the manager of liquidity positions.

constructor

constructor(address _factory) {}

Parameters

Name

Type

Description

_factory

address

The address of the factory which creates the pair

SellNFT

BuyNFT

event BuyNFT(uint256 indexed nftTokenId, address indexed from, uint24 tradeBin, uint128 indexed lpTokenId);

ERC721PositionMinted

event ERC721PositionMinted(uint256 lpTokenId, uint24 binLower, uint24 binStep, uint256 binAmount, uint256[] nftTokenIds);

ERC20PositionMinted

event ERC20PositionMinted(uint256 lpTokenId, uint24 binLower, uint24 binStep, uint256 binAmount);

PositionBurned

event PositionBurned(uint256 lpTokenId, address owner, uint256 nftAmount, uint256 ftAmount, uint256 feeCollected);

ClaimFee

event ClaimFee(uint128 indexed lpTokenId, address indexed owner, uint256 indexed feeCollected);

FlashLoan

    event FlashLoan(address indexed caller, IMidasFlashLoanCallback receiver, uint256[] NFTIDs)

NewRoyaltyFee

    event NewRoyaltyFee(uint128 indexed newFee)

initialize

function initialize() external;

Function to initialize the pair which is strict to MidasFactory.

getTokenX

function getTokenX() external pure override returns (IERC721)

Pure function to get the NFT address of this pair.

getTokenY

function getTokenY() external pure override returns (IERC20)

Pure function to get the FT address of this pair.

getLPToken

function getLPToken() external pure override returns (LPToken)

Pure function to get the LP Token address of this pair.

factory

function factory() external view override returns (IMidasFactory721)

View function to get the factory address of this pair.

getReserves

function getReserves() external view override returns (uint128 reserveX, uint128 reserveY)

View function to get the NFT and FT reserves of this pair.

Return Values

Name

Type

Description

reserveX

uint128

The reserves of NFT

reserveY

uint128

The reserves of FT

getIDs

function getIDs() external view override returns (uint24 bestOfferID, uint24 floorPriceID, uint128 currentPositionID)

View function to get current index price info of this pair.

Return Values

Name

Type

Description

bestOfferID

uint24

The best offer id of this pair

floorPriceID

uint24

The floor price id of this pair

currentPositionID

uint128

The latest position ID

getGlobalFees

function getGlobalFees() external view override returns (uint128 feesTotal, uint128 feesProtocol)

View function to get the global fees information, the total fees and those for protocol

Return Values

Name

Type

Description

feesTotal

uint128

The unclaimed total fees

feesProtocol

uint128

The unclaimed protocol fees

feeParameters

function feeParameters() external view override returns (uint128 rate, uint128 protocolRate, uint128 royaltyRate)

View function to get the fee parameters of this pair.

Return Values

Name

Type

Description

rate

uint128

The fee rate of the LP could collected from trades

protocolRate

uint128

The protocol fee rate which is collected through the fee

royaltyRate

uint128

The royalty rate of this pair

getBin

function getBin(uint24 _id) external view override returns (uint128 reserveX, uint128 reserveY)

View function to get the reserves of bin at id.

Parameters

Name

Type

Description

_id

uint24

The bin id

Return Values

Name

Type

Description

reserveX

uint128

The reserves of NFT in the bin

reserveY

uint128

The reserves of FT in the bin

getLpInfos

function getLpInfos(uint128 _LPtokenID) external view override returns (uint24, uint24, uint128)

View function to get the LP info via LP tokenId.

Parameters

Name

Type

Description

_LPtokenID

uint128

The ID of LP Token

Return Values

Name

Type

Description

originBin

uint24

The start bin of this position

binStep

uint24

The bin step of this position

fee

uint128

The unclaimed fee for this position

getPriceFromBin

function getPriceFromBin(uint24 _id) external view override returns (uint128)

View function to get the price mapping to the specific bin id.

Parameters

Name

Type

Description

_id

uint24

The id of bin

Return Values

Name

Type

Description

price

uint128

The price mapping to the specific bin id

getLPFromNFT

function getLPFromNFT(uint24 _id) external view override returns (uint128)

View function to get the LP tokenId of the specific NFT.

Parameters

Name

Type

Description

_id

uint24

The token id of the NFT

Return Values

Name

Type

Description

_LPtoken

uint128

The ID of the LP token

getBinParamFromLP

function getBinParamFromLP(uint128 _LPtokenID, uint256 _amount) external view override returns (uint128 _totalPrice)

View function to get the quote price of the specific position.

Parameters

Name

Type

Description

_lpTokenID

uint128

The ID of the LP token

_amount

uint256

The amount of NFT is going to buy

Return Values

Name

Type

Description

_totalPrice

uint128

The quote price of NFTs

getLpReserve

function getLpReserve(uint128 _lpTokenID) external view override returns (uint128, uint128)

View function to get the reserves of the specific position.

Parameters

Name

Type

Description

_lpTokenID

uint128

The id of LP Token

Return Values

Name

Type

Description

amountX

uint128

The amount of NFTs in this position

amountY

uint128

The amount of FT in this position

sellNFT

function sellNFT(uint256 NFTID, address _to) external override nonReentrant returns (uint128 _amountOut)

Function to buy the NFT asset at the spot price.

Parameters

Name

Type

Description

NFTID

uint256

The token id of the NFT to be sold

_to

address

The address of the recipient

Return Values

Name

Type

Description

_amountOut

uint128

The amount of FT the receiver can get

buyNFT

function buyNFT(uint256 NFTID, address _to) external override nonReentrant

Function to buy the NFT asset at the spot price.

Parameters

Name

Type

Description

NFTID

uint256

The token id of the NFT to be bought

_to

address

The address of the recipient

mintNFT

function mintNFT(uint24[] calldata _ids, uint256[] calldata _NFTIDs, address _to, bool isLimited) external override nonReentrant

Performs a low level add liquidity of NFT. This needs to be called from a contract which performs important safety checks.

Parameters

Name

Type

Description

_ids

uint24[] calldata

The list of ids to add liquidity

_NFTIDs

uint256[] calldata

The token id of the NFT

_to

address

The address of the recipient

isLimited

bool

Determine whether the liquidity position is a limit order

Return Values

Name

Type

Description

_ids.length

uint256

The amount of NFT to add

_LPtokenID

uint128

The ID of the LP token

mintFT

function mintFT(uint24[] calldata _ids, address _to) external override nonReentrant

Performs a low level add liquidity of FT. This needs to be called from a contract which performs important safety checks.

Parameters

Name

Type

Description

_ids

uint24[] calldata

The list of ids to add liquidity

_to

address

The address of the recipient

Return Values

Name

Type

Description

_amountYAddedToPair

uint128

The amount of FT to add

_LPtokenID

uint128

The ID of the LP token

burn

function burn(uint128 _LPtokenID, address _nftReceiver, address _to) external override nonReentrant

Performs a low level remove liquidity. This needs to be called from a contract which performs important safety checks

Parameters

Name

Type

Description

_LPtokenID

uint128

The ID of the LP token

_nftReceiver

address

The address of the NFT assets recipient

_to

address

The address of the FT assets recipient

Return Values

Name

Type

Description

amountY

uint128

The amount of FT sent to _to

collectProtocolFees

function collectProtocolFees() external override nonReentrant

Collect the protocol fees and send them to the fee recipient.

Return Values

Name

Type

Description

amountY

uint128

The amount of FT sent to the fee recipient.

collectLPFees

function collectLPFees(uint128 _LPtokenID , address _to) external override nonReentrant

Collect the LP fees and send them to the fee recipient.

Return Values

Name

Type

Description

amountFee

uint128

The amount of FT sent to the fee recipient.

collectRoyaltyFees

function collectRoyaltyFees() external override nonReentrant

Collect the royalty fees and send them to the royalty fee recipient.

Return Values

Name

Type

Description

_royaltyFees

uint128

The amount of FT sent to the fee recipient.

updateRoyalty

function updateRoyalty(uint128 _newRate, address payable[] calldata newrecipients, uint256[] calldata newshares) external override nonReentrant

Update the royalty info of the NFT according to EIP2981.

Parameters

Name

Type

Description

_newRate

uint256

The ID of the LP token

newrecipients

address payable[] calldata

The addresses of the recipient

newshares

uint256[] calldata

The shares of these recipients

updateSafetyLock

function updateSafetyLock(bool newLock) external override nonReentrant

Update the safety locker status which is strict to factory.

Parameters

Name

Type

Description

newLock

bool

The status of this pair's safety locker

flashLoan

function flashLoan(IMidasFlashLoanCallback receiver, uint256[] calldata _tokenIds, bytes calldata data) external override nonReentrant

Parameters

Name

Type

Description

receiver

IMidasFlashLoanCallback

The implementation of receiver

_tokenIds

uint256[] calldata

The list of NFT tokenIds to be borrowed

data

bytes calldata

The data to be transferred along with function revoking

Last updated