@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
2 lines • 5.03 kB
JavaScript
var Z=Object.create;var s=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames,w=Object.getOwnPropertySymbols,Q=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty,G=Object.prototype.propertyIsEnumerable;var A=(u,t,n)=>t in u?s(u,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):u[t]=n,a=(u,t)=>{for(var n in t||(t={}))g.call(t,n)&&A(u,n,t[n]);if(w)for(var n of w(t))G.call(t,n)&&A(u,n,t[n]);return u};var C=(u,t)=>{for(var n in t)s(u,n,{get:t[n],enumerable:!0})},h=(u,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of k(t))!g.call(u,e)&&e!==n&&s(u,e,{get:()=>t[e],enumerable:!(o=S(t,e))||o.enumerable});return u};var m=(u,t,n)=>(n=u!=null?Z(Q(u)):{},h(t||!u||!u.__esModule?s(n,"default",{value:u,enumerable:!0}):n,u)),L=u=>h(s({},"__esModule",{value:!0}),u);var z={};C(z,{LiquidityMathUtil:()=>p});module.exports=L(z);var _=m(require("bn.js")),E=m(require("decimal.js"));var I=m(require("bn.js")),V=m(require("decimal.js"));var i=m(require("bn.js")),c=new i.default(1).shln(64),T=64,K=new i.default(1).shln(128),b=new i.default(1).shln(64).subn(1),Y=new i.default(1).shln(128).subn(1);var $=new i.default("4295048016"),H=new i.default("79226673521066979257578248091"),j=new i.default("59543866431248"),J=new i.default("184467440737095516"),U=new i.default("15793534762490258745");var q=new i.default("18446743708227953217"),X=[{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 l=new i.default(0),O=new i.default(1),P=new i.default(-1);var nn=new i.default("18446744073700000000");function B(u,t,n){if(n.isZero())throw new Error("Division by zero");return u.mul(t).div(n)}function d(u,t,n){if(n.isZero())throw new Error("Division by zero");let o=u.mul(t),e=o.div(n);return o.mod(n).isZero()?e:e.addn(1)}function M(u,t){return u.div(t).add(u.mod(t).isZero()?l:O)}var en=new I.default(1).shln(256).subn(1);var p=class{static getDeltaAmountAUnsigned(t,n,o,e){t.gt(n)&&([t,n]=[n,t]);let r=o.shln(T),f=n.sub(t);if(!t.gt(l))throw Error("!sqrtPriceX64A.gt(BN_ZERO)");let N=e?M(d(r,f,n),t):B(r,f,n).div(t);if(N.gt(b))throw Error("MaxTokenOverflow");return N}static getDeltaAmountBUnsigned(t,n,o,e){t.gt(n)&&([t,n]=[n,t]);let r=e?d(o,n.sub(t),c):B(o,n.sub(t),c);if(r.gt(b))throw Error("MaxTokenOverflow");return r}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){if(o.isZero())return l;t.gt(n)&&([t,n]=[n,t]);let e=B(t,n,c),r=n.sub(t);return B(o,e,r)}static getLiquidityFromAmountB(t,n,o){if(o.isZero())return l;t.gt(n)&&([t,n]=[n,t]);let e=n.sub(t);return B(o,c,e)}static getLiquidityFromAmounts(t,n,o,e,r){if(n.gt(o)&&([n,o]=[o,n]),t.lte(n))return this.getLiquidityFromAmountA(n,o,e);if(t.lt(o)){let f=this.getLiquidityFromAmountA(t,o,e),N=this.getLiquidityFromAmountB(n,t,r);return f.lt(N)?f:N}else return this.getLiquidityFromAmountB(n,o,r)}static getAmountsForLiquidity(t,n,o,e,r){n.gt(o)&&([n,o]=[o,n]);let f=l,N=l;return t.lte(n)?f=this.getDeltaAmountAUnsigned(n,o,e,r):t.lt(o)?(f=this.getDeltaAmountAUnsigned(t,o,e,r),N=this.getDeltaAmountBUnsigned(n,t,e,r)):N=this.getDeltaAmountBUnsigned(n,o,e,r),{amountA:f,amountB:N}}static getAmountsFromLiquidityWithSlippage(t,n,o,e,r,f,N){let{amountA:D,amountB:v}=this.getAmountsForLiquidity(t,n,o,e,f),x=r?1+N:1-N,F=new _.default(new E.default(D.toString()).mul(x).toFixed(0)),y=new _.default(new E.default(v.toString()).mul(x).toFixed(0));return{amountSlippageA:F,amountSlippageB:y}}static getLiquidityAndAmountsFromAmount({sqrtPriceCurrentX64:t,sqrtPriceLowerX64:n,sqrtPriceUpperX64:o,amountInfo:e}){let r;if(e.type==="liquidity")r=e.amount;else if(e.type==="amountA")r=t.gte(o)?l:this.getLiquidityFromAmountA(_.default.max(t,n),o,e.amount);else if(e.type==="amountB")r=t.lte(n)?l:this.getLiquidityFromAmountB(n,_.default.min(t,o),e.amount);else throw Error("amount info type check error");return a({liquidity:r},this.getAmountsForLiquidity(t,n,o,e.amount,!0))}};0&&(module.exports={LiquidityMathUtil});
//# sourceMappingURL=liquidityMath.js.map