@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
});
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,
updateAuthority: PublicKey,
mint: PublicKey,
name: 'NFT name',
symbol: 'symbol',
uri: 'https://uri ...',
sellerFeeBasisPoints: 0,
creators: Creators[],
primarySaleHappened: true,
isMutable: true,
editionNonce: 253,
tokenStandard: TokenStandard | null,
collection: Collection | null,
uses: Uses | null,
metadata: JsonMetadata | null,
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,
metaplex: true
},
]
}
- 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);
break;
case STATUS.JSON_FILE_SINGLE_FINISH:
console.log('Fetched single JSON file');
console.log('payload', payload);
break;
case STATUS.JSON_FILE_SINGLE_ERROR:
console.log('Failed to fetch JSON file');
console.log('payload', payload);
break;
case STATUS.JSON_FILES_FINISH:
console.log('Everything finished loading');
console.log('payload', payload);
break;
case STATUS.GLOBAL_FINISH:
console.log('Finished fetching.');
break;
default: break;
}
});
Learn more