pumpdotfun-sdk-repumped
Version:
Pumpfun SDK — create, buy, sell tokens with support for Jito bundles and multiple relayer integrations. Rebuilt and fixed pumpdotfun-sdk.
1 lines • 7.25 kB
Source Map (JSON)
{"version":3,"file":"BondingCurveAccount.cjs","sources":["../../../src/BondingCurveAccount.ts"],"sourcesContent":["import { struct, bool, u64, Layout } from \"@coral-xyz/borsh\";\r\n\r\nexport class BondingCurveAccount {\r\n public discriminator: bigint;\r\n public virtualTokenReserves: bigint;\r\n public virtualSolReserves: bigint;\r\n public realTokenReserves: bigint;\r\n public realSolReserves: bigint;\r\n public tokenTotalSupply: bigint;\r\n public complete: boolean;\r\n\r\n constructor(\r\n discriminator: bigint,\r\n virtualTokenReserves: bigint,\r\n virtualSolReserves: bigint,\r\n realTokenReserves: bigint,\r\n realSolReserves: bigint,\r\n tokenTotalSupply: bigint,\r\n complete: boolean\r\n ) {\r\n this.discriminator = discriminator;\r\n this.virtualTokenReserves = virtualTokenReserves;\r\n this.virtualSolReserves = virtualSolReserves;\r\n this.realTokenReserves = realTokenReserves;\r\n this.realSolReserves = realSolReserves;\r\n this.tokenTotalSupply = tokenTotalSupply;\r\n this.complete = complete;\r\n }\r\n\r\n getBuyPrice(amount: bigint): bigint {\r\n if (this.complete) {\r\n throw new Error(\"Curve is complete\");\r\n }\r\n\r\n if (amount <= 0n) {\r\n return 0n;\r\n }\r\n\r\n // Calculate the product of virtual reserves\r\n let n = this.virtualSolReserves * this.virtualTokenReserves;\r\n\r\n // Calculate the new virtual sol reserves after the purchase\r\n let i = this.virtualSolReserves + amount;\r\n\r\n // Calculate the new virtual token reserves after the purchase\r\n let r = n / i + 1n;\r\n\r\n // Calculate the amount of tokens to be purchased\r\n let s = this.virtualTokenReserves - r;\r\n\r\n // Return the minimum of the calculated tokens and real token reserves\r\n return s < this.realTokenReserves ? s : this.realTokenReserves;\r\n }\r\n\r\n getSellPrice(amount: bigint, feeBasisPoints: bigint): bigint {\r\n if (this.complete) {\r\n throw new Error(\"Curve is complete\");\r\n }\r\n\r\n if (amount <= 0n) {\r\n return 0n;\r\n }\r\n\r\n // Calculate the proportional amount of virtual sol reserves to be received\r\n let n =\r\n (amount * this.virtualSolReserves) / (this.virtualTokenReserves + amount);\r\n\r\n // Calculate the fee amount in the same units\r\n let a = (n * feeBasisPoints) / 10000n;\r\n\r\n // Return the net amount after deducting the fee\r\n return n - a;\r\n }\r\n\r\n getMarketCapSOL(): bigint {\r\n if (this.virtualTokenReserves === 0n) {\r\n return 0n;\r\n }\r\n\r\n return (\r\n (this.tokenTotalSupply * this.virtualSolReserves) /\r\n this.virtualTokenReserves\r\n );\r\n }\r\n\r\n getFinalMarketCapSOL(feeBasisPoints: bigint): bigint {\r\n let totalSellValue = this.getBuyOutPrice(\r\n this.realTokenReserves,\r\n feeBasisPoints\r\n );\r\n let totalVirtualValue = this.virtualSolReserves + totalSellValue;\r\n let totalVirtualTokens = this.virtualTokenReserves - this.realTokenReserves;\r\n\r\n if (totalVirtualTokens === 0n) {\r\n return 0n;\r\n }\r\n\r\n return (this.tokenTotalSupply * totalVirtualValue) / totalVirtualTokens;\r\n }\r\n\r\n getBuyOutPrice(amount: bigint, feeBasisPoints: bigint): bigint {\r\n let solTokens =\r\n amount < this.virtualTokenReserves ? this.virtualTokenReserves : amount;\r\n let totalSellValue =\r\n (solTokens * this.virtualSolReserves) /\r\n (this.virtualTokenReserves - solTokens) +\r\n 1n;\r\n let fee = (totalSellValue * feeBasisPoints) / 10000n;\r\n return totalSellValue + fee;\r\n }\r\n\r\n public static fromBuffer(buffer: Buffer): BondingCurveAccount {\r\n const structure: Layout<BondingCurveAccount> = struct([\r\n u64(\"discriminator\"),\r\n u64(\"virtualTokenReserves\"),\r\n u64(\"virtualSolReserves\"),\r\n u64(\"realTokenReserves\"),\r\n u64(\"realSolReserves\"),\r\n u64(\"tokenTotalSupply\"),\r\n bool(\"complete\"),\r\n ]);\r\n\r\n let value = structure.decode(buffer);\r\n return new BondingCurveAccount(\r\n BigInt(value.discriminator),\r\n BigInt(value.virtualTokenReserves),\r\n BigInt(value.virtualSolReserves),\r\n BigInt(value.realTokenReserves),\r\n BigInt(value.realSolReserves),\r\n BigInt(value.tokenTotalSupply),\r\n value.complete\r\n );\r\n }\r\n}\r\n"],"names":["struct","u64","bool"],"mappings":"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"}