@bagsfm/bags-sdk
Version:
TypeScript SDK for Bags
65 lines • 3.7 kB
JavaScript
;
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