UNPKG

pumpfun-swap-sdk

Version:

SDK for interacting with the PumpFun AMM on Solana

44 lines (43 loc) 2.24 kB
"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.'); }); });