UNPKG

@magiceden/magiceden-sdk

Version:

A TypeScript SDK for interacting with Magic Eden's API across multiple chains.

163 lines (162 loc) 6.61 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SolanaApiMappers = void 0; const solana_1 = require("../../constants/solana"); const web3_js_1 = require("@solana/web3.js"); /** * Solana NFT Service Mappers * Provides mapping functions from service parameters to API requests */ exports.SolanaApiMappers = { /** * Mappers for V2 API */ v2: { /** * Maps generic list parameters to Solana-specific API request */ listRequest: (seller, params) => ({ seller, tokenAccount: params.tokenAccount || params.token, tokenMint: params.token, auctionHouseAddress: params.auctionHouseAddress || solana_1.AUCTION_HOUSE_ADDRESS, price: Number(params.price) / web3_js_1.LAMPORTS_PER_SOL, splPrice: params.splPrice, sellerReferral: params.sellerReferral, expiry: params.expiry || -1, prioFeeMicroLamports: params.prioFeeMicroLamports, maxPrioFeeLamports: params.maxPrioFeeLamports, exactPrioFeeLamports: params.exactPrioFeeLamports, txFeePayer: params.txFeePayer, }), /** * Maps generic cancel listing parameters to Solana-specific API request */ cancelListingRequest: (seller, params) => ({ seller, tokenMint: params.token, auctionHouseAddress: params.auctionHouseAddress || solana_1.AUCTION_HOUSE_ADDRESS, tokenAccount: params.tokenAccount || params.token, price: Number(params.price) / web3_js_1.LAMPORTS_PER_SOL, sellerReferral: params.sellerReferral, expiry: params.expiry || -1, prioFeeMicroLamports: params.prioFeeMicroLamports, maxPrioFeeLamports: params.maxPrioFeeLamports, exactPrioFeeLamports: params.exactPrioFeeLamports, }), /** * Maps generic make item offer parameters to Solana-specific API request */ makeItemOfferRequest: (buyer, params) => ({ buyer, tokenMint: params.token, auctionHouseAddress: params.auctionHouseAddress || solana_1.AUCTION_HOUSE_ADDRESS, price: Number(params.price) / web3_js_1.LAMPORTS_PER_SOL, buyerReferral: params.buyerReferral, expiry: params.expiry, useBuyV2: params.useBuyV2, buyerCreatorRoyaltyPercent: params.buyerCreatorRoyaltyPercent, prioFeeMicroLamports: params.prioFeeMicroLamports, maxPrioFeeLamports: params.maxPrioFeeLamports, exactPrioFeeLamports: params.exactPrioFeeLamports, }), /** * Maps generic cancel item offer parameters to Solana-specific API request */ cancelItemOfferRequest: (buyer, params) => ({ buyer, tokenMint: params.token, auctionHouseAddress: params.auctionHouseAddress || solana_1.AUCTION_HOUSE_ADDRESS, price: Number(params.price) / web3_js_1.LAMPORTS_PER_SOL, buyerReferral: params.buyerReferral, expiry: params.expiry, prioFeeMicroLamports: params.prioFeeMicroLamports, maxPrioFeeLamports: params.maxPrioFeeLamports, exactPrioFeeLamports: params.exactPrioFeeLamports, }), /** * Maps generic take item offer parameters to Solana-specific API request */ takeItemOfferRequest: (seller, params) => ({ seller, buyer: params.buyer, auctionHouseAddress: params.auctionHouseAddress || solana_1.AUCTION_HOUSE_ADDRESS, tokenMint: params.token, tokenATA: params.token, price: Number(params.price) / web3_js_1.LAMPORTS_PER_SOL, newPrice: Number(params.newPrice) / web3_js_1.LAMPORTS_PER_SOL, buyerReferral: params.buyerReferral, sellerReferral: params.sellerReferral, buyerExpiry: params.buyerExpiry, sellerExpiry: params.sellerExpiry || -1, prioFeeMicroLamports: params.prioFeeMicroLamports, maxPrioFeeLamports: params.maxPrioFeeLamports, exactPrioFeeLamports: params.exactPrioFeeLamports, }), /** * Maps generic buy parameters to Solana-specific API request */ buyRequest: (buyer, params) => ({ buyer, seller: params.seller, auctionHouseAddress: params.auctionHouseAddress || solana_1.AUCTION_HOUSE_ADDRESS, tokenMint: params.token, tokenATA: params.token, price: Number(params.price) / web3_js_1.LAMPORTS_PER_SOL, buyerReferral: params.buyerReferral, sellerReferral: params.sellerReferral, buyerExpiry: params.buyerExpiry, sellerExpiry: params.sellerExpiry || -1, buyerCreatorRoyaltyPercent: params.buyerCreatorRoyaltyPercent, splPrice: params.splPrice, }), /** * Maps generic transfer parameters to Solana-specific API request */ transferRequest: (from, params) => ({ from, to: params.to, mint: params.token, isCompressed: params.isCompressed, priorityFee: params.priorityFee }), }, /** * Mappers for V4 API */ v4: { /** * Maps Solana publish launchpad parameters to V4 publish launchpad request */ publishLaunchpadRequest: (params) => ({ ...params, }), /** * Maps Solana create launchpad parameters to V4 create launchpad request */ createLaunchpadRequest: (params) => ({ ...params, // The tokenImageUrl is not used for non-open editions // If tokenImageUrl is not provided for open editions, use imageUrl // If non-open editions, just override and set to undefined tokenImageUrl: params.isOpenEdition ? params.tokenImageUrl || params.imageUrl : undefined, }), /** * Maps Solana update launchpad parameters to V4 update launchpad request */ updateLaunchpadRequest: (params) => ({ ...params, }), /** * Maps Solana mint parameters to V4 mint request */ mintRequest: (wallet, params) => ({ ...params, wallet: { chain: params.chain, address: wallet, }, payer: wallet }), }, };