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