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