@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
2 lines • 6.4 kB
JavaScript
var S=Object.create;var _=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var Q=Object.getOwnPropertyNames,O=Object.getOwnPropertySymbols,G=Object.getPrototypeOf,D=Object.prototype.hasOwnProperty,C=Object.prototype.propertyIsEnumerable;var T=(r,t,n)=>t in r?_(r,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):r[t]=n,F=(r,t)=>{for(var n in t||(t={}))D.call(t,n)&&T(r,n,t[n]);if(O)for(var n of O(t))C.call(t,n)&&T(r,n,t[n]);return r};var L=(r,t)=>{for(var n in t)_(r,n,{get:t[n],enumerable:!0})},v=(r,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of Q(t))!D.call(r,e)&&e!==n&&_(r,e,{get:()=>t[e],enumerable:!(o=k(t,e))||o.enumerable});return r};var b=(r,t,n)=>(n=r!=null?S(G(r)):{},v(t||!r||!r.__esModule?_(n,"default",{value:r,enumerable:!0}):n,r)),Y=r=>v(_({},"__esModule",{value:!0}),r);var W={};L(W,{LiquidityMathUtil:()=>h});module.exports=Y(W);var A=b(require("bn.js")),p=b(require("decimal.js"));var I=b(require("bn.js")),z=b(require("decimal.js"));var i=b(require("bn.js")),s=new i.default(1).shln(64),d=64,K=new i.default(1).shln(128),w=new i.default(1).shln(64).subn(1),V=new i.default(1).shln(128).subn(1);var H=new i.default("4295048016"),j=new i.default("79226673521066979257578248091"),J=new i.default("59543866431248"),U=new i.default("184467440737095516"),q=new i.default("15793534762490258745");var X=new i.default("18446743708227953217"),P=[{bit:0,factor:new i.default("fffcb933bd6fb800",16)},{bit:1,factor:new i.default("fff97272373d4000",16)},{bit:2,factor:new i.default("fff2e50f5f657000",16)},{bit:3,factor:new i.default("ffe5caca7e10f000",16)},{bit:4,factor:new i.default("ffcb9843d60f7000",16)},{bit:5,factor:new i.default("ff973b41fa98e800",16)},{bit:6,factor:new i.default("ff2ea16466c9b000",16)},{bit:7,factor:new i.default("fe5dee046a9a3800",16)},{bit:8,factor:new i.default("fcbe86c7900bb000",16)},{bit:9,factor:new i.default("f987a7253ac65800",16)},{bit:10,factor:new i.default("f3392b0822bb6000",16)},{bit:11,factor:new i.default("e7159475a2caf000",16)},{bit:12,factor:new i.default("d097f3bdfd2f2000",16)},{bit:13,factor:new i.default("a9f746462d9f8000",16)},{bit:14,factor:new i.default("70d869a156f31c00",16)},{bit:15,factor:new i.default("31be135f97ed3200",16)},{bit:16,factor:new i.default("9aa508b5b85a500",16)},{bit:17,factor:new i.default("5d6af8dedc582c",16)},{bit:18,factor:new i.default("2216e584f5fa",16)}];var f=new i.default(0),c=new i.default(1),tt=new i.default(-1);var nt=new i.default("18446744073700000000");function l(r,t,n){if(n.isZero())throw new Error("Division by zero");return r.mul(t).div(n)}function m(r,t,n){if(n.isZero())throw new Error("Division by zero");let o=r.mul(t),e=o.div(n);return o.mod(n).isZero()?e:e.addn(1)}function E(r,t){return r.div(t).add(r.mod(t).isZero()?f:c)}var ut=new I.default(1).shln(256).subn(1);var g=class{static getNextSqrtPriceFromAmountARoundingUp(t,n,o,e){if(o.isZero())return t;let u=n.shln(d);if(e){let B=o.mul(t),N=u.add(B);if(N.gte(u))return m(u,t,N);let a=l(u,c,t);return m(u,c,a.add(o))}else{let B=o.mul(t);if(u.lte(B))throw new Error("Insufficient liquidity for token0 removal");let N=u.sub(B);return m(u,t,N)}}static getNextSqrtPriceFromAmountBRoundingDown(t,n,o,e){if(o.isZero())return t;if(e){let u=o.shln(d).div(n);return t.add(u)}else{let u=E(o.shln(d),n);return t.sub(u)}}static getNextSqrtPriceFromInput(t,n,o,e){if(!t.gt(f))throw Error("sqrtPriceX64.gt(BN_ZERO)");if(!n.gt(f))throw Error("liquidity.gt(BN_ZERO)");return e?this.getNextSqrtPriceFromAmountARoundingUp(t,n,o,!0):this.getNextSqrtPriceFromAmountBRoundingDown(t,n,o,!0)}static getNextSqrtPriceFromOutput(t,n,o,e){if(!t.gt(f))throw Error("sqrtPriceX64.gt(BN_ZERO)");if(!n.gt(f))throw Error("liquidity.gt(BN_ZERO)");return e?this.getNextSqrtPriceFromAmountBRoundingDown(t,n,o,!1):this.getNextSqrtPriceFromAmountARoundingUp(t,n,o,!1)}static getAmountADeltaUnsigned(t,n,o,e){t.gt(n)&&([t,n]=[n,t]);let u=n.sub(t),B=o.mul(u).shln(64),N=t.mul(n);return e?m(B,c,N):l(B,c,N)}static getAmountBDeltaUnsigned(t,n,o,e){t.gt(n)&&([t,n]=[n,t]);let u=n.sub(t);return e?m(o,u,s):l(o,u,s)}};var h=class{static getDeltaAmountAUnsigned(t,n,o,e){t.gt(n)&&([t,n]=[n,t]);let u=o.shln(d),B=n.sub(t);if(!t.gt(f))throw Error("!sqrtPriceX64A.gt(BN_ZERO)");let N=e?E(m(u,B,n),t):l(u,B,n).div(t);if(N.gt(w))throw Error("MaxTokenOverflow");return N}static getDeltaAmountBUnsigned(t,n,o,e){t.gt(n)&&([t,n]=[n,t]);let u=e?m(o,n.sub(t),s):l(o,n.sub(t),s);if(u.gt(w))throw Error("MaxTokenOverflow");return u}static addDelta(t,n){if(n.isNeg()){let o=n.neg();if(t.lt(o))throw new Error("Liquidity underflow");return t.sub(o)}else return t.add(n)}static getLiquidityFromAmountA(t,n,o){t.gt(n)&&([t,n]=[n,t]);let e=l(t,n,s),u=n.sub(t);return l(o,e,u)}static getLiquidityFromAmountB(t,n,o){t.gt(n)&&([t,n]=[n,t]);let e=n.sub(t);return l(o,s,e)}static getLiquidityFromAmounts(t,n,o,e,u){if(n.gt(o)&&([n,o]=[o,n]),t.lte(n))return this.getLiquidityFromAmountA(n,o,e);if(t.lt(o)){let B=this.getLiquidityFromAmountA(t,o,e),N=this.getLiquidityFromAmountB(n,t,u);return B.lt(N)?B:N}else return this.getLiquidityFromAmountB(n,o,u)}static getAmountForLiquidityA(t,n,o,e){return g.getAmountADeltaUnsigned(t,n,o,e)}static getAmountForLiquidityB(t,n,o,e){return g.getAmountBDeltaUnsigned(t,n,o,e)}static getAmountsForLiquidity(t,n,o,e,u){n.gt(o)&&([n,o]=[o,n]);let B=f,N=f;return t.lte(n)?B=this.getAmountForLiquidityA(n,o,e,u):t.lt(o)?(B=this.getAmountForLiquidityA(t,o,e,u),N=this.getAmountForLiquidityB(n,t,e,u)):N=this.getAmountForLiquidityB(n,o,e,u),{amountA:B,amountB:N}}static getAmountsFromLiquidityWithSlippage(t,n,o,e,u,B,N){let{amountA:a,amountB:M}=this.getAmountsForLiquidity(t,n,o,e,B),R=u?1+N:1-N,y=new A.default(new p.default(a.toString()).mul(R).toFixed(0)),Z=new A.default(new p.default(M.toString()).mul(R).toFixed(0));return{amountSlippageA:y,amountSlippageB:Z}}static getLiquidityAndAmountsFromAmount({sqrtPriceCurrentX64:t,sqrtPriceLowerX64:n,sqrtPriceUpperX64:o,amountInfo:e}){let u;if(e.type==="liquidity")u=e.amount;else if(e.type==="amountA")u=t.gte(o)?f:this.getLiquidityFromAmountA(A.default.max(t,n),o,e.amount);else if(e.type==="amountB")u=t.lte(n)?f:this.getLiquidityFromAmountB(n,A.default.min(t,o),e.amount);else throw Error("amount info type check error");return F({liquidity:u},this.getAmountsForLiquidity(t,n,o,e.amount,!0))}};0&&(module.exports={LiquidityMathUtil});
//# sourceMappingURL=liquidityMath.js.map