pumpfun-swap-sdk
Version:
SDK for interacting with the PumpFun AMM on Solana
44 lines (43 loc) • 2.24 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const chai = require('chai');
const { expect } = chai;
const bn_js_1 = __importDefault(require("bn.js"));
const buy_1 = require("../sdk/buy");
describe('buyBaseInput with fees', () => {
it('should compute quote + fees + slippage correctly', () => {
// Example pool reserves
const baseReserve = new bn_js_1.default(1000000);
const quoteReserve = new bn_js_1.default(2000000);
// Request to buy 10,000 base tokens
const base = new bn_js_1.default(10000);
// Slippage = 1% (slippage=1 => 1%)
const slippage = 1;
// Fees (example):
// LP fee = 30 basis points (0.30%)
// Protocol fee = 20 basis points (0.20%)
const lpFeeBps = new bn_js_1.default(30);
const protocolFeeBps = new bn_js_1.default(20);
const result = (0, buy_1.buyBaseInputInternal)(base, slippage, baseReserve, quoteReserve, lpFeeBps, protocolFeeBps);
console.log('quote =', result.uiQuote.toString());
console.log('maxQuote =', result.maxQuote.toString());
// You can calculate offline and replace these with your
// actual expected values:
const expectedQuote = new bn_js_1.default(20305); // Example only
const expectedMaxQuote = new bn_js_1.default(20508); // Example only
expect(result.uiQuote.toString()).eq(expectedQuote.toString());
expect(result.maxQuote.toString()).eq(expectedMaxQuote.toString());
});
it('should fail if base > baseReserve', () => {
const baseReserve = new bn_js_1.default(1000000);
const quoteReserve = new bn_js_1.default(2000000);
const base = new bn_js_1.default(2000000); // more than pool
const slippage = 1;
const lpFeeBps = new bn_js_1.default(30);
const protocolFeeBps = new bn_js_1.default(20);
expect(() => (0, buy_1.buyBaseInputInternal)(base, slippage, baseReserve, quoteReserve, lpFeeBps, protocolFeeBps)).to.throw('Cannot buy more base tokens than the pool reserves.');
});
});