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