UNPKG

@bagsfm/bags-sdk

Version:

TypeScript SDK for Bags

65 lines 3.7 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.FeesService = void 0; const web3_js_1 = require("@solana/web3.js"); const base_1 = require("./base"); const fee_claim_1 = require("../utils/fee-claim"); const constants_1 = require("../constants"); const bs58_1 = __importDefault(require("bs58")); class FeesService extends base_1.BaseService { constructor(apiKey, connection, commitment = 'processed') { super(apiKey, connection, commitment); } async getAllClaimablePositions(wallet, chunkSize = 5) { const response = await (0, fee_claim_1.getMyMeteoraTokenLaunchesAndFees)(wallet.toBase58(), this.dbcProgram, this.dammV2Program, this.bagsMeteoraFeeClaimer, this.commitment, this.connection, (feeClaimerVaults) => this.stateService.getPoolConfigKeysByFeeClaimerVaults(feeClaimerVaults), chunkSize); return response; } async getClaimTransaction(wallet, position) { const params = { feeClaimer: wallet.toBase58(), tokenMint: position.baseMint, }; if (position.virtualPoolClaimableAmount) { params.claimVirtualPoolFees = true; params.virtualPoolAddress = position.virtualPoolAddress; } if (position.dammPoolClaimableAmount) { params.claimDammV2Fees = true; params.dammV2Position = position.dammPositionInfo.position.toBase58(); params.dammV2Pool = position.dammPositionInfo.pool.toBase58(); params.dammV2PositionNftAccount = position.dammPositionInfo.positionNftAccount.toBase58(); params.tokenAMint = position.dammPositionInfo.tokenAMint.toBase58(); params.tokenBMint = position.dammPositionInfo.tokenBMint.toBase58(); params.tokenAVault = position.dammPositionInfo.tokenAVault.toBase58(); params.tokenBVault = position.dammPositionInfo.tokenBVault.toBase58(); } if (position.isCustomFeeVault) { params.isCustomFeeVault = true; params.customFeeVaultClaimerA = position.customFeeVaultClaimerA?.toBase58(); params.customFeeVaultClaimerB = position.customFeeVaultClaimerB?.toBase58(); params.customFeeVaultClaimerSide = position.customFeeVaultClaimerSide; const userFeeVaultPda = (0, fee_claim_1.getFeeVaultPda)(position.customFeeVaultClaimerSide === 'A' ? position.customFeeVaultClaimerA : position.customFeeVaultClaimerB, new web3_js_1.PublicKey(position.baseMint), this.bagsMeteoraFeeClaimer.programId); if (!userFeeVaultPda) { console.error('Error deriving user fee vault pda'); return null; } const userFeeVaultPdaBalance = await this.connection.getBalance(userFeeVaultPda, this.commitment); const hasFeesInVault = userFeeVaultPdaBalance >= constants_1.BAGS_METEORA_FEE_CLAIMER_VAULT_RENT_EXCEMPT_AMOUNT; if (hasFeesInVault) { params.claimVirtualPoolFees = true; params.virtualPoolAddress = position.virtualPoolAddress; } } const response = await this.bagsApiClient.post('/token-launch/claim-txs', params); const deserializedVersionedTransactions = response.map((tx) => { const decodedTransaction = bs58_1.default.decode(tx.tx); return web3_js_1.VersionedTransaction.deserialize(decodedTransaction); }); return deserializedVersionedTransactions; } } exports.FeesService = FeesService; //# sourceMappingURL=fees.js.map