originbyte

docs/frontend/prepare-nfts-for-sale

Prepare NFTs for Sale

The last step for selling NFTs in the primary market is to pre-mint the NFTs and transfer them to the inventory. We provide a sample snippet below on how to perform this step:

import { MoveCallTransaction } from '@mysten/sui.js';
import { NftClient } from '../src';
import {
    INVENTORY_ID,
    LAUNCHPAD_SLOT_ID, MARKET_ID, MINT_CAP_ID, PACKAGE_OBJECT_ID, signer,
} from './common';

export const splitBy = <T>(list: T[], chunkSize: number): T[][] => {
    const result: T[][] = [];
    for (let i = 0; i < list.length; i += chunkSize) {
        result.push(list.slice(i, i + chunkSize));
    }

    return result;
};

// eslint-disable-next-line no-promise-executor-return
const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));

const mintChunk = async (txs: MoveCallTransaction[]) => {
    for (let i = 0; i < txs.length; i += 1) {
        const tx = txs[i];
        // eslint-disable-next-line no-await-in-loop
        // await delay(500 + Math.random() * 2000);
        console.log('Mint...', Date.now(), tx.arguments[0]);
        // eslint-disable-next-line no-await-in-loop
        const result = await signer.executeMoveCall(tx);
        console.log('result', tx.arguments[0], 'EffectsCert' in result);
    }
    //   const createMarketResult = await signer.executeMoveCall(transaction);
    // console.log('createMarketResult', JSON.stringify(createMarketResult));
};

export const mintNFt = async () => {
    const txs: MoveCallTransaction[] = [];
    for (let i = 0; i < 10000; i += 1) {
        txs.push(NftClient.biuldMintNft({
                    name: `Test NFT ${i}`,
                    description: `Test NFT ${i} Description `,
                    mintCap: MINT_CAP_ID,
                    packageObjectId: PACKAGE_OBJECT_ID,
                    inventoryId: INVENTORY_ID,
                    moduleName: 'suitraders',
                    url: 'https://images.ctfassets.net/6kz06gcm2189/27OknKy2oUNvX8rGm1fHXH/1c5dd162685656aae5cbd3a54c27102c/how-to-mint-an-nft.png',
                    attributes: {
                        rarity: 'Common',
                        type: 'NFT',
                    },
                }));
    }
    const chunks = splitBy(txs, 10000);
    await Promise.all(chunks.map((chunk) => mintChunk(chunk)));
    //   const createMarketResult = await signer.executeMoveCall(transaction);
    // console.log('createMarketResult', JSON.stringify(createMarketResult));
};

mintNFt();

Our Community