Links

NFT SDK

How to Install the sdk in your project

npm i @openocean.finance/nft-sdk
npm i @openocean.finance/wallet

How to use the sdk in your project

import { tryWalletConnect } from '@openocean.finance/wallet';
import { openoceanNftSdk } from "@openocean.finance/nft-sdk";

Connect wallet

Connect your wallet using @openocean.finance/wallet. walletParams will be used later in the method.
​
let walletParams = {
provider: {},
account: '',
chainId: '',
chainKey: '',
}
// Connecting the wallet
async function connectWallet() {
let params = {
chainName: 'avax',
walletName: 'MetaMask'
}
let data = await tryWalletConnect(params)
​
walletParams = {
provider: data.wallet.sdk,
account: data.wallet.address,
chainId: data.chain.chainId,
chainKey: data.chain.key,
}
}

Buy NFT

import axios from "axios";
const requestUrl = 'https://open-api.openocean.finance/nft/v1'
​
// Buy NFT
async function sendBuyNFTTransaction() {
​
const GasPrice = 5000
const contractAddress = '0x511aee0146d766a9d93ceb389d231027da337aae'
const tokenId = 1
const amount = 1
const code = 'eyJvcmRlcklkIjoiVDNKa1pYSldNbFI1Y0dVNk9EWXhOekU1TWpjNU5BPT0iLCJvd25lciI6IjB4YjQzNzA4Zjg3ZGQwMzE4ZTllMDUzZGQxNmFiMzk5MWIwOTllODBmNiIsInByaWNlIjoiMTI0MDAwMDAwMDAwMDAwMDAwIiwibmZ0SWQiOiJRWE56WlhSVWVYQmxPakV4TURZek9USXlOVFE9IiwicGF5bWVudElkIjoiVUdGNWJXVnVkRUZ6YzJWMFZIbHdaVG8yTXpNPSIsIm1hcmtldCI6Im9wZW5zZWEifQ'
​
const payToken = {
code: "wrapped-avax",
name: "Avalanche Token",
address: "0x0000000000000000000000000000000000000000",
decimals: 18,
symbol: "AVAX",
balance: 0,
ethValue: 0,
gasValue: 0.1,
balanceDecimals: 1
}
​
const { data } = await axios.get(
`${requestUrl}/${walletParams.chainKey}/detail?address=${contractAddress}&tokenId=${tokenId}&code=${code}&amount=${amount}`,
);
let myNft = data
​
const order = myNft.orders[0];
const buyData = {
sender: walletParams.account,
balanceTokens: [
{
address: payToken.address,
amount: payToken.balanceDecimals,
to: order.paymentAsset.address
},
],
dustTokens: [payToken.address],
buy: [
{
market: order.market,
code: (order && order.code) || code,
price: order.price * (10 ** order.paymentAsset.decimals),
​
tokenType: myNft.schema_name,
collection: myNft.contract_address,
tokenId: myNft.token_id,
tokenAddress: myNft.token_address,
amount,
},
],
};
const params = await axios.post(`${requestUrl}/${walletParams.chainKey}/buy`, buyData);
​
return await openoceanNftSdk.sendBuyNFTTransaction(
walletParams,
params,
GasPrice
)
}
​

Sell NFT

​
// Sell NFT
async function sendSellNFTTransaction() {
const { data } = await axios.get(`${requestUrl}/${walletParams.chainKey}/nfts?address=${walletParams.account}&cursor=1`);
let myNft = data[0]
​
const sellParams = {
market: 'opensea',
sender: walletParams.account,
sell: [
{
amount: 1,
times: '604800',
price: '1000000000000000000',
collection: myNft.contract_address,
tokenAddress: myNft.token_address,
tokenId: myNft.token_id,
tokenType: myNft.schema_name,
paymentAsset: myNft.paymentAsset,
collectionSlug: myNft.collection_slug
}
]
};
​
const params = await axios.post(`${requestUrl}/${walletParams.chainKey}/sell`, sellParams);
await openoceanNftSdk.sendSellNFTTransaction(
walletParams,
{ ...sellParams, ...params },
)
}
​
​

Make offer

​
// Make offer
async function sendOfferNFTTransaction() {
const { data } = await axios.get(`${requestUrl}/${walletParams.chainKey}/nfts?address=${walletParams.account}&cursor=1`);
let myNft = data[0]
const isCollection = true
let price = 1
const order = {}
const market = 'opensea'
​
const sellParams = {
market,
sender: walletParams.account,
offer: isCollection
? [
{
price: price * (10 ** 18),
times: '604800',
collection: myNft.contract_address,
collectionSlug: myNft.collection_slug,
amount: 1,
paymentAsset: myNft.paymentAsset
},
]
: [
{
price: price * (10 ** 18),
times: '604800',
collection: myNft.contract_address,
collectionSlug: myNft.collection.slug,
tokenAddress: myNft.token_address,
tokenId: myNft.token_id,
tokenType: myNft.schema_name,
paymentAsset: myNft.paymentAsset,
amount: order.amount,
},
],
};
​
const params = await axios.post(`${requestUrl}/${walletParams.chainKey}/offer`, sellParams);
await openoceanNftSdk.sendOfferNFTTransaction(
walletParams,
{ market, ...params }
)
}
​

Cancel sell order

​
// Cancel sell order
async function sendCancelNFTTransaction() {
const { data } = await axios.get(`${requestUrl}/${walletParams.chainKey}/nfts?address=${walletParams.account}&cursor=1`);
let myNft = data[0]
let market = 'opensea'
let signature = ''
if (market === "x2y2") {
signature = await openoceanNftSdk.signMessageX2Y2(walletParams.provider)
}
const sellParams = {
sender: walletParams.account,
address: myNft.contract_address,
tokenId: myNft.token_id,
code: myNft.code,
market,
signature
}
​
const params = await axios.post(`${requestUrl}/${walletParams.chainKey}/cancel`, sellParams);
await openoceanNftSdk.sendCancelNFTTransaction(
walletParams,
params,
sellParams
)
}