Socket
Socket
Sign inDemoInstall

@solflare-wallet/nft-sdk

Package Overview
Dependencies
10
Maintainers
7
Versions
32
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @solflare-wallet/nft-sdk

# @solflare-wallet/nft-sdk


Version published
Weekly downloads
59
decreased by-72.43%
Maintainers
7
Created
Weekly downloads
 

Readme

Source

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

FAQs

Last updated on 30 Jun 2023

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc