0.1.4 • Published 2 years ago
midaswap-sdk v0.1.4
Midaswap SDK
An SDK for building applications on top of Midaswap Protocol.
1. Login/Register
import * as midasdk from "midaswap-sdk";
await midasdk.connect(); // connect wallet
const account = "***"; // Replace with your address
await midasdk.login(account);
const signMsg = await midasdk.getMsgSign(account);
await midasdk.register(account, signMsg);
2. Base data
2.1 Get Pair Info
const nftAddress = "0x2c0D7e5D70b1bA7A457933Db3915b2BA990C5D8b"
const ftAddress = "0x032Fd8A72cC4193aE4527B28Ca09CE973E15A32b"
await midasdk.getPairInfo(nftAddress,ftAddress)
{
bestOffer: 8435706
decimals: 18
floorPrice: 8435795
proportion: "999652000000000000"
}
bestOffer
midasdk.utils.binToPrice(8435706,decimals)
'111.0038'
floorPrice
midasdk.utils.binToPrice(8435795,decimals)
'111.9961'
2.2 Contracts
const router = await midasdk.router();
2.3 Bin/Price Conversion
a. Bin to Price
const ftDecimals = 18
midasdk.utils.priceToBin(1,ftDecimals) ----> 8388608
midasdk.utils.priceToBin(10,ftDecimals) ----> 8411635
b. Price to Bin
midasdk.utils.binToPrice(8388608,ftDecimals) -----> "1"
midasdk.utils.binToPrice(8411635,ftDecimals) -----> "10"
3. Portfolio
3.1 List NFT
a. NFT/FT Addresses Example:
const bayc = "0x2c0D7e5D70b1bA7A457933Db3915b2BA990C5D8b";
const usdc = "0x032Fd8A72cC4193aE4527B28Ca09CE973E15A32b";
b. NFT Collection List:
await midasdk.portfolio.getCollectionList();
c. BAYC Items Filter:
const tag = "items";
await midasdk.portfolio.getFilter(bayc, tag);
d. NFT (BAYC/USDC) with Listed Orders:
await midasdk.portfolio.getQueryList(bayc, "items", usdc, "listed");
e. NFT (BAYC/USDC) without Listed Orders:
await midasdk.portfolio.getQueryList(bayc, "items", usdc, "unlisted");
3.2 Place NFT Limit Order
const bayc = "0x2c0D7e5D70b1bA7A457933Db3915b2BA990C5D8b";
const usdc = "0x032Fd8A72cC4193aE4527B28Ca09CE973E15A32b";
const deadline = midasdk.utils.getDeadline();
const price = 1;
const bin1 = midasdk.utils.priceToBin(price, decimals);
const priceBins = [bin1];
const nftids = ["2134"];
await router.openMultiLimitSellOrders(bayc, usdc, priceBins, nftids, deadline);
3.3 Sell NFT Directly (Sell at Best Offer Price)
<!-- Get price list of all buy orders -->
const bestBins = await midasdk.portfolio.getBestBins(bayc,"items",usdc,"unlisted")
const nftIds = [1008]
const minOutputBig = midasdk.utils.getSellItemsParam(bestBins,[1008],18)
await router.sellItems("bayc","usdc",[1008],minOutputBig, deadline)
3.4 Cancel/Claim
Get Sell/Offers Finish/Unfinish List:
await midasdk.portfolio.getQueryList(bayc, "sell", usdc, "unfinish");
const lpTokenId = 45;
await router.removeLiquidity(bayc, usdc, lpTokenId, deadline);
4. Collection
4.1 Get Collection List
await midasdk.collection.getCollectionList();
4.2 Make one or multiple NFT Buy Orders
await midasdk
.router()
.openMultiLimitBuyOrder(bayc, usdc, [priceBin, priceBin], deadline);
4.3 Get Buy Order List
getOfferList();
await midasdk.collection.getOfferList(bayc, usdc, account);
4.4 Buy NFT
a. Get FT Pool List:
await midasdk.collection.getCollectionFtFilter(bayc);
b. Get NFT Lists (LpAddress Interface from Above):
await midasdk.collection.getNftGoodsList(bayc, lpAddress);
c. Execute Buy Orders:
const minAmount = await midasdk.router().getMinAmountIn(pairAddress, [nftId]);
await midasdk.router().buyItems(bayc, usdc, [nftId], minAmount, deadline);
Please replace placeholders with actual values as needed in your code.