UNPKG

@magiceden/magiceden-sdk

Version:

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

124 lines (123 loc) 5.89 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SolanaNftService = void 0; const base_1 = require("./base"); const nft_1 = require("../../mappers/nft"); const transactions_1 = require("../../adapters/transactions"); const helpers_1 = require("../../helpers"); /** * Solana-specific NFT service implementation */ class SolanaNftService extends base_1.BaseNftService { constructor(config) { super(config); } /** * Get publish launchpad response from API * @param params Publish launchpad parameters */ async getPublishLaunchpadResponse(params) { const response = await this.v4ApiClient.publishLaunchpad({ ...nft_1.SolanaApiMappers.v4.publishLaunchpadRequest(params), authorization: await (0, helpers_1.createSolanaLaunchpadAuthorizationPayload)(this.config.wallet, params.candyMachineId), }); return response.success; } /** * Get create launchpad operations from API * @param params Launchpad creation parameters */ async getCreateLaunchpadOperations(params) { // TODO: Later on, properly implement extra signers for the launchpad routes // Refer to comments in src/adapters/transactions/solana.ts and src/types/services/nft/createLaunchpad.ts for more details const response = await this.v4ApiClient.createLaunchpad(nft_1.SolanaApiMappers.v4.createLaunchpadRequest(params)); return transactions_1.SolanaTransactionAdapters.fromV4TransactionResponse(response); } /** * Get update launchpad operations from API * @param params Launchpad update parameters */ async getUpdateLaunchpadOperations(params) { // TODO: Later on, properly implement extra signers for the launchpad routes // Refer to comments in src/adapters/transactions/solana.ts and src/types/services/nft/createLaunchpad.ts for more details const response = await this.v4ApiClient.updateLaunchpad({ ...nft_1.SolanaApiMappers.v4.updateLaunchpadRequest(params), authorization: await (0, helpers_1.createSolanaLaunchpadAuthorizationPayload)(this.config.wallet, params.candyMachineId), }); return transactions_1.SolanaTransactionAdapters.fromV4TransactionResponse(response); } /** * Get mint operations from API * @param params Mint parameters */ async getMintOperations(params) { // TODO: Later on, properly implement extra signers for the mint routes // Refer to comments in src/adapters/transactions/solana.ts and src/types/services/nft/createLaunchpad.ts for more details const response = await this.v4ApiClient.mint(nft_1.SolanaApiMappers.v4.mintRequest(this.config.wallet.getAddress(), params)); return transactions_1.SolanaTransactionAdapters.fromV4TransactionResponse(response); } /** * Get list operations from API * @param params Listing parameters */ async getListOperations(params) { const response = await this.v2ApiClient.list(nft_1.SolanaApiMappers.v2.listRequest(this.config.wallet.getAddress(), params)); return transactions_1.SolanaTransactionAdapters.fromInstructionsResponse(response); } /** * Get cancel listing operations from API * @param params Cancel listing parameters */ async getCancelListingOperations(params) { const response = await this.v2ApiClient.cancelListing(nft_1.SolanaApiMappers.v2.cancelListingRequest(this.config.wallet.getAddress(), params)); return transactions_1.SolanaTransactionAdapters.fromInstructionsResponse(response); } /** * Get make item offer operations from API * @param params Make item offer parameters */ async getMakeItemOfferOperations(params) { const response = await this.v2ApiClient.makeItemOffer(nft_1.SolanaApiMappers.v2.makeItemOfferRequest(this.config.wallet.getAddress(), params)); return transactions_1.SolanaTransactionAdapters.fromInstructionsResponse(response); } /** * Get take item offer operations from API * @param params Take item offer parameters */ async getTakeItemOfferOperations(params) { const response = await this.v2ApiClient.takeItemOffer(nft_1.SolanaApiMappers.v2.takeItemOfferRequest(this.config.wallet.getAddress(), params)); return transactions_1.SolanaTransactionAdapters.fromInstructionsResponse(response); } /** * Get cancel item offer operations from API * @param params Cancel item offer parameters */ async getCancelItemOfferOperations(params) { const response = await this.v2ApiClient.cancelItemOffer(nft_1.SolanaApiMappers.v2.cancelItemOfferRequest(this.config.wallet.getAddress(), params)); return transactions_1.SolanaTransactionAdapters.fromInstructionsResponse(response); } /** * Get buy operations from API * @param params Buy parameters */ async getBuyOperations(params) { const response = await this.v2ApiClient.buy(nft_1.SolanaApiMappers.v2.buyRequest(this.config.wallet.getAddress(), params)); return transactions_1.SolanaTransactionAdapters.fromInstructionsResponse(response); } /** * Get transfer operations from API * @param params Transfer parameters */ async getTransferOperations(params) { const response = await this.v2ApiClient.transfer(nft_1.SolanaApiMappers.v2.transferRequest(this.config.wallet.getAddress(), params)); return transactions_1.SolanaTransactionAdapters.fromInstructionsResponse(response); } /** * Process a signature operation * @param operation Signature operation */ async processSignatureOperation(operation) { throw new Error('Signature operations are not supported for Solana'); } } exports.SolanaNftService = SolanaNftService;