@solflare-wallet/nft-sdk
TypeScript icon, indicating that this package has built-in type declarations

1.7.0 • Public • Published

Solflare

@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

  1. Use the default configuration:
import { SolflareNft } from '@solflare-wallet/nft-sdk';

const mints = [ new PublicKey(mint1), new PublicKey(mint2) ];
const solflare = new SolflareNft({ mints });
  1. 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

  1. 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
    },
    // ...
  ]
}
  1. 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;
  }
});

Learn more

Readme

Keywords

none

Package Sidebar

Install

npm i @solflare-wallet/nft-sdk

Weekly Downloads

142

Version

1.7.0

License

ISC

Unpacked Size

223 kB

Total Files

50

Last publish

Collaborators

  • anbud
  • sljuka
  • veloja
  • skakac
  • vidor
  • vsakos
  • turshija