Install the dependency.
npm i @fedorerd/fetch-sol-nft
Create new instance of FetchSolNftClient.
import { FetchSolNftClient } from "@fedorerd/fetch-sol-nft"
const RPC: string = "https://api.mainnet-beta.solana.com"
// You may pass instance of @solana/web3.js Connection instead of rpc url string
const client = new FetchSolNftClient(RPC)
Client provides multiple subclient, which do different things.
Fetch client provides function to fetch Solana NFTs.
const MINT = new PublicKey("3Z3HYn4TW9bnUrd58j6wKzQgmz23JPzS4PN12JXamZ9n")
const nft = await client.fetch.nftByMint({
mint: MINT
})
Available functions: nftByMint
, nftsByOwner
.
Constants client contains on-chain program IDs needed for working with NFTs.
const METAPLEX_TOKEN_METADATA_PROGRAM_ID = client.constants.tokenMetadataProgramId
Programs available: tokenMetadataProgramId
, associatedTokenProgramId
, tokenProgramId
.
Pdas client provides functions to derive program derived addresses.
const NFT_MINT_ADDRESS: string = "3Z3HYn4TW9bnUrd58j6wKzQgmz23JPzS4PN12JXamZ9n"
const nftMetadataAddress = client.pdas.getMetadata({
mint: new PublicKey(NFT_MINT_ADDRESS)
})
Available functions: getMetadata
, getEdition
(NFT edition/master edition), getTokenRecord
(pNFT token record), getAssociatedToken
(associated token address).
Coder client provides function to decode accounts. It takes Buffer data and returns deserialized account data.
const RPC = "https://api.mainnet-beta.solana.com"
const MINT = new PublicKey("3Z3HYn4TW9bnUrd58j6wKzQgmz23JPzS4PN12JXamZ9n")
const data = await new Connection(RPC).getAccountInfo(MINT).then(a => a?.data)
if (!data) return
const decoded = client.coder.mintAccount(data)
console.log(decoded)
Available decoders: mintAccount
, metadataAccount
, tokenAccount
, uriJson
(additional decoder for offchain json uri, which contains NFT attributes, description, etc.).
You may always update solana connection if you wish so.
const NEW_RPC: string = "https://api.devnet.solana.com"
client.updateConnection(NEW_RPC)