npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

sologenic-nft-minter

v1.0.6

Published

Typescript library to mint NFTs on the Sologenic NFT Marketplace

Downloads

1

Readme

Sologenic NFT Minter

This library was created to automate up to an extent the minting of NFTs.

DUE TO THE REQUIREMENTS OF USING THE WALLET SECRET, IT IS NOT RECOMMENDED TO USE THIS LIBRARY CLIENT SIDE.

npm i sologenic-nft-minter

Contents

Usage

import { SologenicMinter } from "sologenic-nft-minter";
import fs from "fs";

const minter = new SologenicMinter({
  apiUrl: SOLOGENIC_API_URL,
  xrpl_node: XRPL_NODE,
  seed: YOUR_WALLET_SECRET,
});

// Example of how to submit the files
const collectionCoverBuffer = fs.readFileSync("PATH_TO_COLLECTION_COVER_FILE");
const collectionThumbnailBuffer = fs.readFileSync("PATH_TO_COLLECTION_THUMBNAIL_FILE");
const nftFileBuffer = fs.readFileSync("PATH_TO_NFT_FILE");
const nftThumbnailBuffer = fs.readFileSync("PATH_TO_NFT_THUMBNAIL_FILE");

// After initializing the Minter, we need to set the collection address in which we want to mint
// Use setCollectionAddress() if you know the collection you want to mint in
// minter.setCollectionAddress(YOUR_DESIRED_COLLECTION);

// or create a new collection with createCollection(). This method sets the recently created collection as the default to mint on, it can be overriden with setCollectionAddress().
await minter.createCollection({
  name: "Test Collection", // REQUIRED: The name of the collection
  description: "Collection description", // OPTIONAL: The description of the collection
  cover: collectionCoverBuffer, // Cover of the Collection, can be only JPG, JPEG, PNG or GIF, recommended to be a compressed version, as this is for display purposes, it's not stored on the ledger
  thumbnail: collectionThumbnailBuffer // Thumbnail of the Collection, can be only JPG, JPEG, PNG or GIF, recommended to be a compressed version, as this is for display purposes, it's not stored on the ledger
  transfer_fee: 10000, // OPTIONAL (Defaults to 0): Sets the Royalty percentage for all the NFTs within this collection. Can be overwritten per NFT. A number between 0 and 50000 i.e to get 10% royalty transfer_fee  must be 10000
});

// Once the collection is set. If you have available Slot (or burns) you can start minting.
const { mint_tx_hash, NFTokenID } = await minter.mint({
  file: nftFileBuffer, // Original data of the NFT can be any of the supported files Sologenic accepts
  thumbnail: nftThumbnailBuffer, // Thumbnail of the NFT, can be only JPG, JPEG, PNG or GIF, recommended to be a compressed version, as this is for display purposes, it's not stored on the ledger
  name: "Testing NFT 3", // REQUIRED: The name of the NFT
  category: "arts", // REQUIRED: Sets the category on the NFT for the Marketplace
  only_xrp: false, // REQUIRED (Defaults to false): Sets if the NFT can only be traded for XRP
  is_explicit: false, // REQUIRED (Default to false): Sets if the NFT contains Explicit content
  transfer_fee: 10000, // OPTIONAL (Defaults to 0): A number between 0 and 50000 i.e to get 10% royalty transfer_fee must be 10000. If set, it will override the Collection Transfer fee.
  description: "Testing NFT description", // OPTIONAL: Description of the NFT
  external_url: "https://sologenic.org", // OPTIONAL: URL for more information of the NFT
  attributes: [
    //OPTIONAL: Attributes of the NFT, what makes it unique
    {
      trait_type: "attribute",
      value: "attr",
    },
    {
      trait_type: "attribute 2",
      value: 1,
      max_value: 2,
    },
  ],
});

Methods

getApiURL

Returns the current Sologenic API URL

const url = minter.getApiURL();

getWalletAddress

Returns the address of the wallet which was used to initialize the Sologenic Minter

const address = minter.getWalletAddress();
// rBDu1BC6f1SKRvRxPiHZdeML5CRwByQTFG

getBurnConfiguration

Returns the current burn configuration to get NFT Slots

const config = await minter.getBurnConfiguration();

Response

| Property | Value | | :------------ | ---------------------------------------: | | burn_amount | 3 | | burn_currency | 534F4C4F00000000000000000000000000000000 | | burn_issuer | rsoLo2S1kiGeCcn6hCUXVrCpGMWLrRrLZz |

generateNFTSlots

Generates NFT Slots by burning SOLO. NOTE: This method requires the connected wallet to have a positive SOLO Balance

const slots_generation = await generateNFTSlots(1);

Params

| Param | Type | Required | Example | | :----- | :--- | :------: | :-----: | | amount | int | true | 1 |

Response

| Property | Description | Example | | :---------- | --------------------------: | ---------------------------------------------------------------: | | address | Wallet address used to burn | rBDu1BC6f1SKRvRxPiHZdeML5CRwByQTFG | | hash | Burn Transaction Hash | 1016EC6C70C9C2CD9D3C6B8A8439AA538409181DBE1E5D56698BDAE61AE03608 | | burns_count | Amount of Slots acquired | 1 |

createCollection

Creates a new collection or returns the current unfinished collection. NOTE: If there is an unfinished collection, the data passed will override the current collection information. NOTE: This method sets the recently created (or updated) collection as the default to mint NFTs on

import fs from "fs";

// Example of how to submit the files
const collectionCoverBuffer = fs.readFileSync("PATH_TO_COLLECTION_COVER_FILE");
const collectionThumbnailBuffer = fs.readFileSync("PATH_TO_COLLECTION_THUMBNAIL_FILE");


const collectionData = {
  name: "New Collection",
  description: "New Collection Description"
  cover: collectionCoverBuffer,
  thumbnail: collectionThumbnailBuffer,
  transfer_fee: 10000 // 10%
};

const new_collection = await minter.createCollection(collectionData);

Params

This method takes an object with all the data for the Collection.

| Property | Type | Required | Description | Example | | :----------- | :----- | :------: | :--------------------------------------------------------------------------------------------- | :----------------------------------------: | | name | string | true | The name for the collection. | "My Awesome Collection" | | description | string | false | The description for the collection. | "My Awesome Description for my Collection" | | cover | Buffer | false | Buffer for the cover of the collection | <Buffer 08 06 07 05 03 00 09> | | thumbnail | Buffer | false | Buffer for the thumbnail of the collection | <Buffer 08 06 07 05 03 00 09> | | transfer_fee | int | false | Royalties for the NFTs within this collection. NOTE: This can be overriden when minting an NFT | 10000 |

Response

| Property | Description | Example | | :------------ | -----------------------------------------------------------------------------------------------------------: | ----------------------------------------------------------------------------------------: | | issuer | Identifier of the collection | rN7DsVCsJ6vRQtNMD8yMLeKvovSXM5P3Dg | | name | Name of the collection | "My Awesome collection" | | description | Description of the collection | "My Awesome Description for my collection" | | nfts | List of NFT Slots, any slot can be empty (available) or filled (an nft has been uploaded but not minted yet) | See getCollectionNFTSlots | | cover | URL of the uploaded cover | https://storage.googleapis.com/sg-nft-images/cover/rN7DsVCsJ6vRQtNMD8yMLeKvovSXM5P3Dg | | thumbnail | URL of the uploaded thumbnail | https://storage.googleapis.com/sg-nft-images/thumbnail/rN7DsVCsJ6vRQtNMD8yMLeKvovSXM5P3Dg | | unusued_burns | Amount of available slots to mint | 5 | | minted_nfts | List of ALL minted NFTs within this collections | NFT[] |

updateCollection

Updates the current set collection.

import fs from "fs";

// Example of how to submit the files
const collectionCoverBuffer = fs.readFileSync("PATH_TO_COLLECTION_COVER_FILE");
const collectionThumbnailBuffer = fs.readFileSync("PATH_TO_COLLECTION_THUMBNAIL_FILE");


const collectionData = {
  name: "New Updated Collection",
  description: "New Collection Description Update"
  cover: collectionCoverBuffer,
  thumbnail: collectionThumbnailBuffer,
  transfer_fee: 10000 // 10%
};

// Set the default collection
await minter.setCollectionAddress("rN7DsVCsJ6vRQtNMD8yMLeKvovSXM5P3Dg");

// Update default collection
await minter.updateCollection(collectionData);

// Get updated default collection
const collection = await minter.getCollectionData();

Params

This method takes an object with all the data for the Collection. NOTE: Only unfinished collections can be updated.

| Property | Type | Required | Description | Example | | :----------- | :----- | :------: | :--------------------------------------------------------------------------------------------- | :----------------------------------------: | | name | string | true | The name for the collection. | "My Awesome Collection" | | description | string | false | The description for the collection. | "My Awesome Description for my Collection" | | cover | Buffer | false | Buffer for the cover of the collection | <Buffer 08 06 07 05 03 00 09> | | thumbnail | Buffer | false | Buffer for the thumbnail of the collection | <Buffer 08 06 07 05 03 00 09> | | transfer_fee | int | false | Royalties for the NFTs within this collection. NOTE: This can be overriden when minting an NFT | 10000 |

Response

This method doesn't return a response. After calling this method, you need to call await minter.getCollectionData() to see the updated collection data.

getAllCollections

This method returns an Array of all the collections available to the account.

const collections = await minter.getAllCollections();

Response

An array of Collection Objects. These are the properties of the Collection object. Please see getCollectionData to see properties of the Collection object

getCollectionAddress

This method returns the address of the default collection

const collection_address = await minter.getCollectionAddress();
// rN7DsVCsJ6vRQtNMD8yMLeKvovSXM5P3Dg

getCollectionData

This method returns the data of the default collection

Response

| Property | Description | Example | | :----------- | :----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------: | | name | Name of the collection | "My Awesome Collection" | | description | Description of the collection | 1016EC6C70C9C2CD9D3C6B8A8439AA538409181DBE1E5D56698BDAE61AE03608 | | cover | URL of the cover uploaded | "https://storage.googleapis.com/sg-nft-images/cover/rN7DsVCsJ6vRQtNMD8yMLeKvovSXM5P3Dg" | | thumbnail | URL of the thumbnail uploaded | "https://storage.googleapis.com/sg-nft-images/thumbnail/rN7DsVCsJ6vRQtNMD8yMLeKvovSXM5P3Dg" | | transfer_fee | Royalty set for all the NFTs within this collection. NOTE: Can be overriden when minting an NFT. | 10000 | | cid | Collection ID on IPFS | bafybeiba6su6ni3dfwhmjbzi5fz4pqehtnnwgg5yjwhss6mak3wqnwglhm | | created_at | Date of creation | 2022-12-30T17:23:26.000Z | | minted_nfts | Amount of NFTs minted in this collection | 5 |

getCollectionNFTSlots

This method returns an Array of all the NFT Slots of the default collection, both available and already uploaded, but not minted, NFTs.

Response

These are the properties of each NFT Slot.

| Property | Description | Example | | :----------- | -----------------------------------------------------------------------------------------------------------------------------------------------------------: | ----------------------------------------------------------------------------------------------: | | id | ID of the slot | 12345 | | uid | UID of the slot | 829df87d-0e2e-48f6-8387-b6a2e1a26462 | | currency | Legacy ID for the NFT | 023031516D656A664E4654393331363900000000 | | name | Name of the NFT | My Awesome NFT | | location | IPFS ID of the NFT | bafybeihtuck5qncoo2img32zvyjm54r6t6are2xelbrrtqhp7lb73zlulq | | content_type | Type and extension of the NFT file | image/png | | thumbnail | URL of the uploaded thumbnail | https://storage.googleapis.com/sg-nft-images/thumbnail/rDZj8PN21gmtWwqFY1SAqyubRHeT87NSVC/35449 | | md5_hash | md5_hash of the NFT file | 96cc419020a6f55a6c05e38968ec5bb4 | | transfer_fee | Royalty for this NFT, if 0 and Collection Royalty is set, Collection royalty will be added to the NFT. If this is set, Collection Royalty will be overriden. | 10000 | | only_xrp | This sets if the NFT can only be sold for XRP | 0 or 1 (0 = false, 1 = true) | | sealed | Indicates if NFT has been set for minting | 0 or 1 (0 = false, 1 = true) |

mint

This method mints and NFT within the default collection if there are any NFT Slots available.

import fs from "fs";

const nftFileBuffer = fs.readFileSync("PATH_TO_NFT_FILE");
const nftThumbnailBuffer = fs.readFileSync("PATH_TO_NFT_THUMBNAIL_FILE");

const nft = {
  file: nftFileBuffer,
  thumbnail: nftThumbnailBuffer,
  name: "Testing NFT 3",
  category: "art",
  only_xrp: false,
  is_explicit: false,
  transfer_fee: 10000,
  description: "Testing NFT description",
  external_url: "https://sologenic.org",
  attributes: [
    {
      trait_type: "attribute",
      value: "attr",
    },
    {
      trait_type: "attribute 2",
      value: 1,
      max_value: 2,
    },
  ],
};

const { NFTokenID, mint_tx_hash } = await minter.mint(nft);

Params

This method takes an Object with all the data of the NFT. These are the properties.

| Property | Type | Required | | :----------- | :------ | :------: | | file | Buffer | true | | thumbnail | Buffer | true | | name | string | true | | category | string | true | | only_xrp | boolean | true | | is_explicit | boolean | true | | transfer_fee | int | false | | description | string | false | | external_url | URL | false |

Response

This method returns an object, these are the properties of the object

| Property | Example | | :----------- | ---------------------------------------------------------------: | | mint_tx_hash | B1561A148081359BECA7D4F309820B88DB9940A58458D5D363B8BED02EDB9D3A | | NFTokenID | 000827107022610A05BAA45AE04D5B022D1FF298795EF9ABE4FAB9DF0000000A |

mintMultipleCopies

import fs from "fs";

const nftFileBuffer = fs.readFileSync("PATH_TO_NFT_FILE");
const nftThumbnailBuffer = fs.readFileSync("PATH_TO_NFT_THUMBNAIL_FILE");

const nft = {
  file: nftFileBuffer,
  thumbnail: nftThumbnailBuffer,
  name: "Testing NFT 3",
  category: "art",
  only_xrp: false,
  is_explicit: false,
  transfer_fee: 10000,
  description: "Testing NFT description",
  external_url: "https://sologenic.org",
  attributes: [
    {
      trait_type: "attribute",
      value: "attr",
    },
    {
      trait_type: "attribute 2",
      value: 1,
      max_value: 2,
    },
  ],
};

const options = {
  numberOfCopies: 5,
  autoBurn: true,
};

const copies_result = await minter.mintMultipleCopies(nft, options);

Params

This method takes two parameters.

| Param | Type | Required | | :------ | :-------------------------------------- | :------: | | nft | See mint() method for params | true | | options | MintMultipleCopiesOptions | true |

Options

These are the properties of the Options object.

| Param | Type | Required | Description | | :------------- | :------ | :------: | :----------------------------------------------------------------------- | | numberOfCopies | number | true | Amount of copies of the same NFT to mint | | autoBurn | boolean | false | If the minter should attempt to burn SOLO for more NFT Slots if required |

Response

This method returns an object with the next properties

| Property | Example | Description | | :------------ | ---------------: | :---------------------------------------------------------------------------------------- | | copies_minted | 5 | Amount of copies successfully minted | | nfts | NFTResult[] | Array of the successfully minted NFTs. [See mint() response for properties of each NFT] | | error | Object or null | If null, means the method ran successfully and all nfts were minted. |