UNPKG

zebec-instant-card-sdk

Version:

An sdk for interacting with zebec instant card program in solana.

383 lines (382 loc) 15.7 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ZebecCardInstructions = void 0; const web3_js_1 = require("@solana/web3.js"); const constants_1 = require("./constants"); /** * Zebec Card Instruction Factory */ class ZebecCardInstructions { constructor(cardProgram) { this.cardProgram = cardProgram; } getInitCardConfigsInstruction(cardPda, usdcToken, zicOwner, data) { return __awaiter(this, void 0, void 0, function* () { const { revenueFee, nativeFee, nonNativeFee, cardVault, revenueVault, commissionVault, maxCardAmount, minCardAmount, feeTiers, dailyCardPurchaseLimit, } = data; return this.cardProgram.methods .initCardConfigs({ cardVault, commissionVault, nativeFee, nonNativeFee, revenueFee, revenueVault, maxCardAmount, minCardAmount, feeTier: feeTiers, dailyCardBuyLimit: dailyCardPurchaseLimit, }) .accounts({ associatedTokenProgram: constants_1.ASSOCIATED_TOKEN_PROGRAM_ID, cardPda, systemProgram: web3_js_1.SystemProgram.programId, tokenProgram: constants_1.TOKEN_PROGRAM_ID, usdcToken, zicOwner, }) .instruction(); }); } getDepositInstruction(cardPda, feeMapPda, tokenMint, user, userAta, userVault, userVaultAta, userPurchaseRecord, revenueVault, revenueVaultAta, data) { return __awaiter(this, void 0, void 0, function* () { const { amount, sourceTokenAddress } = data; return this.cardProgram.methods .deposit({ amount, sourceTokenAddress: sourceTokenAddress ? sourceTokenAddress : tokenMint, }) .accounts({ associatedTokenProgram: constants_1.ASSOCIATED_TOKEN_PROGRAM_ID, cardPda, feeMapPda, revenueVault, revenueVaultAta, systemProgram: web3_js_1.SystemProgram.programId, tokenMint, tokenProgram: constants_1.TOKEN_PROGRAM_ID, user, userAta, userVault, userVaultAta, vaultPda: userPurchaseRecord, }) .instruction(); }); } getSetCardConfigsInstruction(cardPda, zicOwner, data) { return __awaiter(this, void 0, void 0, function* () { const { revenueFee, nativeFee, nonNativeFee, cardVault, revenueVault, commissionVault, feeTiers, maxCardAmount, minCardAmount, dailyCardPurchaseLimit, newZicOwner, } = data; return this.cardProgram.methods .setCardConfigs({ zicOwner: newZicOwner, cardVault, commissionVault, revenueVault, nativeFee, nonNativeFee, revenueFee, maxCardAmount, minCardAmount, dailyCardBuyLimit: dailyCardPurchaseLimit, feeTier: feeTiers, }) .accounts({ cardPda, zicOwner, }) .instruction(); }); } getWithdrawInstruction(user, tokenMint, userAta, userVault, userVaultAta, userPurchaseRecord, amount) { return __awaiter(this, void 0, void 0, function* () { return this.cardProgram.methods .withdraw(amount) .accounts({ tokenMint, tokenProgram: constants_1.TOKEN_PROGRAM_ID, user, userAta, userVault, userVaultAta, vaultPda: userPurchaseRecord, }) .instruction(); }); } getBuyPrepaidDigitalCardInstruction(buyerPda, cardPda, cardVault, cardVaultAta, commissionVault, commissionVaultAta, revenueVault, revenueVaultAta, usdcToken, user, userVault, userVaultAta, userPurchaseRecord, buyCardData) { return __awaiter(this, void 0, void 0, function* () { const { amount, cardType, index } = buyCardData; return this.cardProgram.methods .buyPrepaidDigitalCard({ amount, cardType, index, }) .accounts({ associatedTokenProgram: constants_1.ASSOCIATED_TOKEN_PROGRAM_ID, buyerPda, cardPda, cardVault, cardVaultAta, commissionVault, commissionVaultAta, revenueVault, revenueVaultAta, systemProgram: web3_js_1.SystemProgram.programId, tokenProgram: constants_1.TOKEN_PROGRAM_ID, usdcToken, user, userVault, userVaultAta, vaultPda: userPurchaseRecord, }) .instruction(); }); } getGenerateYieldInstruction(user, userVault, userPurchaseRecord, userVaultAta, tokenMint, flexlendUserAccount, flexlendUserAta, promotionReservePda, reserveAdmin, amount) { return __awaiter(this, void 0, void 0, function* () { return this.cardProgram.methods .generateYield(amount) .accounts({ associatedTokenProgram: constants_1.ASSOCIATED_TOKEN_PROGRAM_ID, flexlendProgram: constants_1.FLEXLEND_PROGRAM_ID, flexlendUserAccount, flexlendUserAta, promotionReserve: promotionReservePda, reserveAdmin, systemProgram: web3_js_1.SystemProgram.programId, tokenMint, tokenProgram: constants_1.TOKEN_PROGRAM_ID, user, userVault, userVaultAta, vaultPda: userPurchaseRecord, }) .instruction(); }); } getWithdrawYieldInstruction(user, userPurchaseRecord, userVault, userVaultAta, tokenMint, flexlendUserAccount, flexlendUserAta, promotionReserve, amount, withdrawAll) { return __awaiter(this, void 0, void 0, function* () { return this.cardProgram.methods .withdrawYield(amount, withdrawAll) .accounts({ associatedTokenProgram: constants_1.ASSOCIATED_TOKEN_PROGRAM_ID, flexlendProgram: constants_1.FLEXLEND_PROGRAM_ID, flexlendUserAccount, flexlendUserAta, promotionReserve, reserveAdmin: constants_1.FLEXLEND_RESERVE_ADMIN, systemProgram: web3_js_1.SystemProgram.programId, tokenMint, tokenProgram: constants_1.TOKEN_PROGRAM_ID, user, userVault, userVaultAta, vaultPda: userPurchaseRecord, }) .instruction(); }); } getBuyCardDirectInstruction(buyerPda, cardPda, cardVault, cardVaultAta, feeMapPda, revenueVault, revenueVaultAta, usdcToken, user, userAta, userPurchaseRecord, buyCardData) { return __awaiter(this, void 0, void 0, function* () { const { amount, cardType, index, sourceTokenAddress } = buyCardData; return this.cardProgram.methods .buyCardDirect({ amount, cardType, index, sourceTokenAddress: sourceTokenAddress ? sourceTokenAddress : usdcToken, }) .accounts({ associatedTokenProgram: constants_1.ASSOCIATED_TOKEN_PROGRAM_ID, buyerPda, cardPda, cardVault, cardVaultAta, feeMapPda, revenueVault, revenueVaultAta, systemProgram: web3_js_1.SystemProgram.programId, tokenProgram: constants_1.TOKEN_PROGRAM_ID, usdcToken, user, userAta, vaultPda: userPurchaseRecord, }) .instruction(); }); } getSetCustomFeesInstruction(cardPda, feeMapPda, zicOwner, tokenFeeList) { return __awaiter(this, void 0, void 0, function* () { return this.cardProgram.methods .setCustomFees(tokenFeeList) .accounts({ cardPda, feeMapPda, systemProgram: web3_js_1.SystemProgram.programId, zicOwner, }) .instruction(); }); } getDeleteCustomFeesInstruction(cardPda, feeMapPda, zicOwner, tokenFeeList) { return __awaiter(this, void 0, void 0, function* () { return this.cardProgram.methods .deleteCustomFees(tokenFeeList) .accounts({ cardPda, feeMapPda, systemProgram: web3_js_1.SystemProgram.programId, zicOwner, }) .instruction(); }); } // bot instructions getInitBotConfigInstruction(cardBotConfig, cardPda, zicOwner, data) { return __awaiter(this, void 0, void 0, function* () { return this.cardProgram.methods .initBotConfig({ botAdmin: data.botAdmin, }) .accounts({ associatedTokenProgram: constants_1.ASSOCIATED_TOKEN_PROGRAM_ID, cardBotConfig, cardPda, systemProgram: web3_js_1.SystemProgram.programId, tokenProgram: constants_1.TOKEN_PROGRAM_ID, zicOwner, }) .instruction(); }); } getSetBotAdminInstruction(cardBotConfig, cardPda, zicOwner, data) { return __awaiter(this, void 0, void 0, function* () { return this.cardProgram.methods .setBotAdmin(data.newAdmin) .accounts({ cardBotConfig, cardPda, zicOwner, }) .instruction(); }); } getInitBotUserCustodyInstruction(botAdmin, cardBotConfig, usdcToken, userCustody, userCustodyAta, data) { return __awaiter(this, void 0, void 0, function* () { return this.cardProgram.methods .initBotPda({ userId: data.userId }) .accounts({ associatedTokenProgram: constants_1.ASSOCIATED_TOKEN_PROGRAM_ID, botAdmin, cardBotConfig, systemProgram: web3_js_1.SystemProgram.programId, tokenProgram: constants_1.TOKEN_PROGRAM_ID, usdcToken, userCustody, userCustodyAta, }) .instruction(); }); } getBuyCardBotInstruction(botAdmin, cardBotConfig, cardPda, cardVault, cardVaultAta, feeMapPda, revenueVault, revenueVaultAta, usdcToken, userCustody, userCustodyAta, buyCardData) { return __awaiter(this, void 0, void 0, function* () { const { amount, sourceTokenAddress, userId, cardType } = buyCardData; return this.cardProgram.methods .buyCardBot({ amount, sourceTokenAddress, userId, cardType }) .accounts({ associatedTokenProgram: constants_1.ASSOCIATED_TOKEN_PROGRAM_ID, botAdmin, cardBotConfig, cardPda, cardVault, cardVaultAta, feeMapPda, revenueVault, revenueVaultAta, systemProgram: web3_js_1.SystemProgram.programId, tokenProgram: constants_1.TOKEN_PROGRAM_ID, usdcToken, userCustody, userCustodyAta, }) .instruction(); }); } // on ramp instructions getInitOnRampInstruction(zicOwner, cardConfig, onRampConfig, data) { return __awaiter(this, void 0, void 0, function* () { const { admin, zbcnToken } = data; return this.cardProgram.methods .initOnRampConfig({ admin, zbcnToken }) .accounts({ associatedTokenProgram: constants_1.ASSOCIATED_TOKEN_PROGRAM_ID, cardPda: cardConfig, onRampConfig, systemProgram: web3_js_1.SystemProgram.programId, tokenProgram: constants_1.TOKEN_PROGRAM_ID, zicOwner, }) .instruction(); }); } getInitOnRampUserCustodyInstruction(admin, onRampConfig, onRampUserCustody, onRampUserCustodyZbcnAccount, zbcnToken, data) { return __awaiter(this, void 0, void 0, function* () { return this.cardProgram.methods .initOnRampPda({ userId: data.userId, }) .accounts({ admin, associatedTokenProgram: constants_1.ASSOCIATED_TOKEN_PROGRAM_ID, onRampConfig, systemProgram: web3_js_1.SystemProgram.programId, tokenProgram: constants_1.TOKEN_PROGRAM_ID, userCustody: onRampUserCustody, userCustodyAta: onRampUserCustodyZbcnAccount, zbcnToken, }) .instruction(); }); } getSetOnRampAdminInstruction(cardConfig, onRampConfig, zicOwner, data) { return __awaiter(this, void 0, void 0, function* () { return this.cardProgram.methods .setOnRampAdmin(data.newAdmin) .accounts({ cardPda: cardConfig, onRampConfig, zicOwner, }) .instruction(); }); } getOnRampTransferZbcnInstruction(onRampAdmin, onRampConfig, onRampUserCustody, onRampUserCustodyZbcnAccount, receiverAccount, receiverZbcnAccount, zbcnToken, data) { return __awaiter(this, void 0, void 0, function* () { const { amount, userId } = data; return this.cardProgram.methods .transferZbcn({ amount, userId }) .accounts({ admin: onRampAdmin, from: onRampUserCustody, fromAta: onRampUserCustodyZbcnAccount, onRampConfig, to: receiverAccount, toAta: receiverZbcnAccount, tokenProgram: constants_1.TOKEN_PROGRAM_ID, zbcnToken, }) .instruction(); }); } } exports.ZebecCardInstructions = ZebecCardInstructions;