@magiceden/magiceden-sdk
Version:
A TypeScript SDK for interacting with Magic Eden's API across multiple chains.
163 lines (162 loc) • 6.61 kB
JavaScript
"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
}),
},
};