@solflare-wallet/nft-sdk
v1.8.0
Published
# @solflare-wallet/nft-sdk
Downloads
95
Keywords
Readme
@solflare-wallet/nft-sdk
NFT SDK used in Solflare wallet.
This SDK accepts a list of mints, triggers fetching NFT metadatas, all JSONs, Metaplex groups, and does "smart" grouping of everything else using few different rules.
Contents:
Installation
$ npm install @solflare-wallet/nft-sdk
Examples
Initialize the library
- Use the default configuration:
import { SolflareNft } from '@solflare-wallet/nft-sdk';
const mints = [ new PublicKey(mint1), new PublicKey(mint2) ];
const solflare = new SolflareNft({ mints });
- Use other configuration options:
import { SolflareNft } from '@solflare-wallet/nft-sdk';
const solflare = new SolflareNft({
mints,
connection: web3connection // "https://api.mainnet-beta.solana.com" will be used if ommited
});
Ways to get the data
- SDK exposes .startFetching() method which starts fetching the data and returns a promise with all NFTs and groups. Waiting for this promise to resolve might take a lot of time for large number of NFTs, so try different method with listening for changes.
import { SolflareNft } from '@solflare-wallet/nft-sdk';
const solflare = new SolflareNft({ mints });
const response = await solflare.startFetching();
response = {
nfts: [
{
id: 'mint-address-string',
metadataAccount: MetadataAccount, // metaplex type
updateAuthority: PublicKey,
mint: PublicKey,
name: 'NFT name',
symbol: 'symbol',
uri: 'https://uri ...',
sellerFeeBasisPoints: 0,
creators: Creators[], // metaplex type
primarySaleHappened: true,
isMutable: true,
editionNonce: 253,
tokenStandard: TokenStandard | null, // metaplex type
collection: Collection | null, // metaplex type
uses: Uses | null, // metaplex type
metadata: JsonMetadata | null, // metaplex type, entire JSON object fetched from uri
group: 'unique-group-identifier-address-or-slug' | null
},
// ...
],
groups: [
{
id: 'unique-group-identifier-address-or-slug',
name: 'Group name',
image: 'uri of image used for group',
count: 3, // number of NFTs in this group
metaplex: true // true if grouped by verified Collection, otherwise false
},
// ...
]
}
- Fetch all data, but listen for change events and update each NFT that received an update
import { SolflareNft, STATUS } from '@solflare-wallet/nft-sdk';
const solflare = new SolflareNft({ mints });
solflare.startFetching();
solflare.on('message', ({ status, payload }) => {
switch (status) {
case STATUS.GLOBAL_START:
console.log('Started fetching.');
break;
case STATUS.METADATA_FINISH:
console.log('Fetched all Metaplex metadata accounts');
console.log('payload', payload);
// payload = {
// nfts: [ { ...nftData } ],
// groups: []
// }
break;
case STATUS.JSON_FILE_SINGLE_FINISH:
console.log('Fetched single JSON file');
console.log('payload', payload);
// payload = {
// nft: { SINGLE NFT THAT GOT UPDATED }
// nfts: [...],
// groups: [...]
// }
break;
case STATUS.JSON_FILE_SINGLE_ERROR:
console.log('Failed to fetch JSON file');
console.log('payload', payload);
// payload = {
// nft: { SINGLE NFT THAT FAILED LOADING JSON }
// nfts: [...],
// groups: [...]
// }
break;
case STATUS.JSON_FILES_FINISH:
console.log('Everything finished loading');
console.log('payload', payload);
// payload = {
// nfts: [...],
// groups: [...]
// }
break;
case STATUS.GLOBAL_FINISH:
console.log('Finished fetching.');
break;
default: break;
}
});