UNPKG

@bagsfm/bags-sdk

Version:

TypeScript SDK for Bags

54 lines 2.34 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.fetchBagsFeeShareV2PartnerConfig = void 0; exports.decodePartnerConfigAccount = decodePartnerConfigAccount; exports.deriveBagsFeeShareV2PartnerConfigPda = deriveBagsFeeShareV2PartnerConfigPda; const web3_js_1 = require("@solana/web3.js"); const constants_1 = require("../../constants"); const DISCRIMINATOR_LEN = 8; const PARTNER_CONFIG_SIZE = 120; function readU128LE(buf, offset) { const lo = buf.readBigUInt64LE(offset); const hi = buf.readBigUInt64LE(offset + 8); return lo + (hi << BigInt(64)); } function decodePartnerConfigAccount(raw, coder) { const disc = coder.accountDiscriminator('PartnerConfig'); if (raw.length < disc.length) throw new Error('PartnerConfig.disc: InvalidDataLength'); if (!raw.subarray(0, disc.length).equals(new Uint8Array(disc))) { throw new Error('PartnerConfig: AccountDiscriminatorMismatch'); } const afterDisc = raw.subarray(DISCRIMINATOR_LEN); if (afterDisc.length < PARTNER_CONFIG_SIZE) { throw new Error('PartnerConfig.header: InvalidDataLength'); } const totalClaimedFees = readU128LE(afterDisc, 0); const totalAccumulatedFees = afterDisc.readBigUInt64LE(16); const totalLifetimeAccumulatedFees = readU128LE(afterDisc, 24); const partner = new web3_js_1.PublicKey(afterDisc.subarray(40, 72)); const bump = afterDisc.readUInt8(77); const bps = afterDisc.readUInt16LE(78); return { totalClaimedFees, totalAccumulatedFees, totalLifetimeAccumulatedFees, partner, bump, bps, }; } const fetchBagsFeeShareV2PartnerConfig = async (address, connection, commitment = 'processed', coder) => { const acc = await connection.getAccountInfo(address, commitment); if (!acc) { return null; } const raw = acc.data; return decodePartnerConfigAccount(raw, coder); }; exports.fetchBagsFeeShareV2PartnerConfig = fetchBagsFeeShareV2PartnerConfig; function deriveBagsFeeShareV2PartnerConfigPda(partner) { const [partnerConfig] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from('partner_config'), partner.toBuffer()], new web3_js_1.PublicKey(constants_1.BAGS_FEE_SHARE_V2_PROGRAM_ID)); return partnerConfig; } //# sourceMappingURL=partner-config.js.map