@raydium-io/raydium-sdk-v2 0.1.0-alpha → 0.1.2-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/api/api.d.ts +1 -1
- package/lib/api/index.d.ts +1 -1
- package/lib/api/type.d.ts +1 -1
- package/lib/common/accountInfo.d.ts +1 -1
- package/lib/common/bignumber.d.ts +1 -1
- package/lib/common/fractionUtil.d.ts +1 -1
- package/lib/common/index.d.ts +1 -1
- package/lib/common/transfer.d.ts +1 -1
- package/lib/common/txTool/txTool.d.ts +1 -1
- package/lib/common/txTool/txUtils.d.ts +1 -1
- package/lib/common/utility.d.ts +1 -1
- package/lib/index.d.ts +3 -3
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +1 -1
- package/lib/index.mjs.map +1 -1
- package/lib/module/amount.d.ts +1 -1
- package/lib/module/fraction.d.ts +1 -1
- package/lib/module/index.d.ts +1 -1
- package/lib/module/percent.d.ts +1 -1
- package/lib/module/price.d.ts +1 -1
- package/lib/raydium/account/account.d.ts +3 -3
- package/lib/raydium/account/account.js +1 -1
- package/lib/raydium/account/account.js.map +1 -1
- package/lib/raydium/account/account.mjs +1 -1
- package/lib/raydium/account/account.mjs.map +1 -1
- package/lib/raydium/account/index.d.ts +1 -1
- package/lib/raydium/account/instruction.d.ts +1 -1
- package/lib/raydium/account/types.d.ts +1 -1
- package/lib/raydium/account/util.d.ts +1 -1
- package/lib/raydium/clmm/clmm.d.ts +3 -3
- package/lib/raydium/clmm/index.d.ts +3 -3
- package/lib/raydium/clmm/instrument.d.ts +2 -2
- package/lib/raydium/clmm/layout.d.ts +6 -6
- package/lib/raydium/clmm/type.d.ts +2 -2
- package/lib/raydium/clmm/utils/math.d.ts +2 -2
- package/lib/raydium/clmm/utils/pool.d.ts +2 -2
- package/lib/raydium/clmm/utils/position.d.ts +2 -2
- package/lib/raydium/clmm/utils/tick.d.ts +2 -2
- package/lib/raydium/clmm/utils/tickQuery.d.ts +2 -2
- package/lib/raydium/clmm/utils/tickarrayBitmap.d.ts +2 -2
- package/lib/raydium/cpmm/cpmm.d.ts +3 -3
- package/lib/raydium/cpmm/index.d.ts +1 -1
- package/lib/raydium/cpmm/layout.d.ts +1 -1
- package/lib/raydium/cpmm/type.d.ts +1 -1
- package/lib/raydium/farm/config.d.ts +1 -1
- package/lib/raydium/farm/farm.d.ts +3 -3
- package/lib/raydium/farm/index.d.ts +1 -1
- package/lib/raydium/farm/instruction.d.ts +1 -1
- package/lib/raydium/farm/layout.d.ts +1 -1
- package/lib/raydium/farm/type.d.ts +1 -1
- package/lib/raydium/farm/util.d.ts +1 -1
- package/lib/raydium/ido/ido.d.ts +3 -3
- package/lib/raydium/ido/index.d.ts +3 -3
- package/lib/raydium/ido/instruction.d.ts +1 -1
- package/lib/raydium/ido/type.d.ts +1 -1
- package/lib/raydium/index.d.ts +3 -3
- package/lib/raydium/index.js +1 -1
- package/lib/raydium/index.js.map +1 -1
- package/lib/raydium/index.mjs +1 -1
- package/lib/raydium/index.mjs.map +1 -1
- package/lib/raydium/liquidity/index.d.ts +1 -1
- package/lib/raydium/liquidity/instruction.d.ts +1 -1
- package/lib/raydium/liquidity/layout.d.ts +6 -6
- package/lib/raydium/liquidity/liquidity.d.ts +3 -3
- package/lib/raydium/liquidity/liquidity.js +1 -1
- package/lib/raydium/liquidity/liquidity.js.map +1 -1
- package/lib/raydium/liquidity/liquidity.mjs +1 -1
- package/lib/raydium/liquidity/liquidity.mjs.map +1 -1
- package/lib/raydium/liquidity/type.d.ts +1 -1
- package/lib/raydium/liquidity/utils.d.ts +1 -1
- package/lib/raydium/marketV2/createMarket.d.ts +3 -3
- package/lib/raydium/marketV2/index.d.ts +3 -3
- package/lib/raydium/moduleBase.d.ts +3 -3
- package/lib/raydium/raydium.d.ts +3 -3
- package/lib/raydium/raydium.js +1 -1
- package/lib/raydium/raydium.js.map +1 -1
- package/lib/raydium/raydium.mjs +1 -1
- package/lib/raydium/raydium.mjs.map +1 -1
- package/lib/raydium/token/constant.d.ts +1 -1
- package/lib/raydium/token/index.d.ts +1 -1
- package/lib/raydium/token/token.d.ts +3 -3
- package/lib/raydium/token/type.d.ts +1 -1
- package/lib/raydium/token/utils.d.ts +1 -1
- package/lib/raydium/tradeV2/index.d.ts +2 -2
- package/lib/raydium/tradeV2/instrument.d.ts +2 -2
- package/lib/raydium/tradeV2/trade.d.ts +3 -3
- package/lib/raydium/tradeV2/type.d.ts +2 -2
- package/lib/raydium/type.d.ts +1 -1
- package/lib/raydium/utils1216/index.d.ts +3 -3
- package/lib/raydium/utils1216/utils1216.d.ts +3 -3
- package/lib/{raydium-50d99e08.d.ts → raydium-e681ad95.d.ts} +3 -3
- package/lib/{type-80826393.d.ts → type-389634c9.d.ts} +1 -1
- package/lib/{type-8e0c46e7.d.ts → type-9fe71e3c.d.ts} +8 -8
- package/package.json +1 -1
- package/src/raydium/account/account.ts +1 -1
- package/src/raydium/liquidity/liquidity.ts +44 -47
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var Io=Object.defineProperty,So=Object.defineProperties;var Ko=Object.getOwnPropertyDescriptors;var un=Object.getOwnPropertySymbols;var Vr=Object.prototype.hasOwnProperty,Or=Object.prototype.propertyIsEnumerable;var Fr=(r,e,t)=>e in r?Io(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,q=(r,e)=>{for(var t in e||(e={}))Vr.call(e,t)&&Fr(r,t,e[t]);if(un)for(var t of un(e))Or.call(e,t)&&Fr(r,t,e[t]);return r},Y=(r,e)=>So(r,Ko(e));var Ee=(r,e)=>{var t={};for(var n in r)Vr.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&un)for(var n of un(r))e.indexOf(n)<0&&Or.call(r,n)&&(t[n]=r[n]);return t};import{PublicKey as Se}from"@solana/web3.js";import{AccountLayout as Tu,NATIVE_MINT as Bo,TOKEN_PROGRAM_ID as Dn}from"@solana/spl-token";import Ws from"big.js";import An from"bn.js";import Ne from"bn.js";var It=9e15,at=1e9,Gn="0123456789abcdef",ln="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",mn="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Un={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-It,maxE:It,crypto:!1},Gr,$e,G=!0,pn="[DecimalError] ",st=pn+"Invalid argument: ",Ur=pn+"Precision limit exceeded",Xr=pn+"crypto unavailable",zr="[object Decimal]",Ae=Math.floor,fe=Math.pow,Lo=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,No=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Ro=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Hr=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Oe=1e7,D=7,Co=9007199254740991,Eo=ln.length-1,Xn=mn.length-1,x={toStringTag:zr};x.absoluteValue=x.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),v(r)};x.ceil=function(){return v(new this.constructor(this),this.e+1,2)};x.clampedTo=x.clamp=function(r,e){var t,n=this,i=n.constructor;if(r=new i(r),e=new i(e),!r.s||!e.s)return new i(NaN);if(r.gt(e))throw Error(st+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};x.comparedTo=x.cmp=function(r){var e,t,n,i,o=this,s=o.d,a=(r=new o.constructor(r)).d,u=o.s,c=r.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==r.e)return o.e>r.e^u<0?1:-1;for(n=s.length,i=a.length,e=0,t=n<i?n:i;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===i?0:n>i^u<0?1:-1};x.cosine=x.cos=function(){var r,e,t=this,n=t.constructor;return t.d?t.d[0]?(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+D,n.rounding=1,t=Mo(n,$r(n,t)),n.precision=r,n.rounding=e,v($e==2||$e==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};x.cubeRoot=x.cbrt=function(){var r,e,t,n,i,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(G=!1,o=l.s*fe(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=we(l.d),r=l.e,(o=(r-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=fe(t,1/3),r=Ae((r+1)/3)-(r%3==(r<0?-1:2)),o==1/0?t="5e"+r:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+r),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(r=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=ae(c.plus(l).times(a),c.plus(u),s+2,1),we(a.d).slice(0,s)===(t=we(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(v(a,r+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(v(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return G=!0,v(n,r,m.rounding,e)};x.decimalPlaces=x.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-Ae(this.e/D))*D,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};x.dividedBy=x.div=function(r){return ae(this,new this.constructor(r))};x.dividedToIntegerBy=x.divToInt=function(r){var e=this,t=e.constructor;return v(ae(e,new t(r),0,1,1),t.precision,t.rounding)};x.equals=x.eq=function(r){return this.cmp(r)===0};x.floor=function(){return v(new this.constructor(this),this.e+1,3)};x.greaterThan=x.gt=function(r){return this.cmp(r)>0};x.greaterThanOrEqualTo=x.gte=function(r){var e=this.cmp(r);return e==1||e===0};x.hyperbolicCosine=x.cosh=function(){var r,e,t,n,i,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,i=o.d.length,i<32?(r=Math.ceil(i/3),e=(1/bn(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=St(s,1,o.times(e),new s(1),!0);for(var u,c=r,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return v(o,s.precision=t,s.rounding=n,!0)};x.hyperbolicSine=x.sinh=function(){var r,e,t,n,i=this,o=i.constructor;if(!i.isFinite()||i.isZero())return new o(i);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(i.e,i.sd())+4,o.rounding=1,n=i.d.length,n<3)i=St(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/bn(5,r)),i=St(o,2,i,i,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);r--;)s=i.times(i),i=i.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,v(i,e,t,!0)};x.hyperbolicTangent=x.tanh=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+7,n.rounding=1,ae(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};x.inverseCosine=x.acos=function(){var r,e=this,t=e.constructor,n=e.abs().cmp(1),i=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?Ve(t,i,o):new t(0):new t(NaN):e.isZero()?Ve(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=Ve(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};x.inverseHyperbolicCosine=x.acosh=function(){var r,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(r=n.precision,e=n.rounding,n.precision=r+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,G=!1,t=t.times(t).minus(1).sqrt().plus(t),G=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};x.inverseHyperbolicSine=x.asinh=function(){var r,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,G=!1,t=t.times(t).plus(1).sqrt().plus(t),G=!0,n.precision=r,n.rounding=e,t.ln())};x.inverseHyperbolicTangent=x.atanh=function(){var r,e,t,n,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(r=o.precision,e=o.rounding,n=i.sd(),Math.max(n,r)<2*-i.e-1?v(new o(i),r,e,!0):(o.precision=t=n-i.e,i=ae(i.plus(1),new o(1).minus(i),t+r,1),o.precision=r+4,o.rounding=1,i=i.ln(),o.precision=r,o.rounding=e,i.times(.5))):new o(NaN)};x.inverseSine=x.asin=function(){var r,e,t,n,i=this,o=i.constructor;return i.isZero()?new o(i):(e=i.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(r=Ve(o,t+4,n).times(.5),r.s=i.s,r):new o(NaN):(o.precision=t+6,o.rounding=1,i=i.div(new o(1).minus(i.times(i)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,i.times(2)))};x.inverseTangent=x.atan=function(){var r,e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=Xn)return s=Ve(l,m+4,d).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=Xn)return s=Ve(l,m+4,d).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/D+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(G=!1,e=Math.ceil(a/D),n=1,u=c.times(c),s=new l(c),i=c;r!==-1;)if(i=i.times(u),o=s.minus(i.div(n+=2)),i=i.times(u),s=o.plus(i.div(n+=2)),s.d[e]!==void 0)for(r=e;s.d[r]===o.d[r]&&r--;);return t&&(s=s.times(2<<t-1)),G=!0,v(s,l.precision=m,l.rounding=d,!0)};x.isFinite=function(){return!!this.d};x.isInteger=x.isInt=function(){return!!this.d&&Ae(this.e/D)>this.d.length-2};x.isNaN=function(){return!this.s};x.isNegative=x.isNeg=function(){return this.s<0};x.isPositive=x.isPos=function(){return this.s>0};x.isZero=function(){return!!this.d&&this.d[0]===0};x.lessThan=x.lt=function(r){return this.cmp(r)<0};x.lessThanOrEqualTo=x.lte=function(r){return this.cmp(r)<1};x.logarithm=x.log=function(r){var e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding,p=5;if(r==null)r=new l(10),e=!0;else{if(r=new l(r),t=r.d,r.s<0||!t||!t[0]||r.eq(1))return new l(NaN);e=r.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(i=t[0];i%10===0;)i/=10;o=i!==1}if(G=!1,a=m+p,s=ot(c,a),n=e?dn(l,a+10):ot(r,a),u=ae(s,n,a,1),Ot(u.d,i=m,d))do if(a+=10,s=ot(c,a),n=e?dn(l,a+10):ot(r,a),u=ae(s,n,a,1),!o){+we(u.d).slice(i+1,i+15)+1==1e14&&(u=v(u,m+1,0));break}while(Ot(u.d,i+=10,d));return G=!0,v(u,m,d)};x.minus=x.sub=function(r){var e,t,n,i,o,s,a,u,c,l,m,d,p=this,g=p.constructor;if(r=new g(r),!p.d||!r.d)return!p.s||!r.s?r=new g(NaN):p.d?r.s=-r.s:r=new g(r.d||p.s!==r.s?p:NaN),r;if(p.s!=r.s)return r.s=-r.s,p.plus(r);if(c=p.d,d=r.d,a=g.precision,u=g.rounding,!c[0]||!d[0]){if(d[0])r.s=-r.s;else if(c[0])r=new g(p);else return new g(u===3?-0:0);return G?v(r,a,u):r}if(t=Ae(r.e/D),l=Ae(p.e/D),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=d.length):(e=d,t=l,s=c.length),n=Math.max(Math.ceil(a/D),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=d.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=d[n]){m=c[n]<d[n];break}o=0}for(m&&(e=c,c=d,d=e,r.s=-r.s),s=c.length,n=d.length-s;n>0;--n)c[s++]=0;for(n=d.length;n>o;){if(c[--n]<d[n]){for(i=n;i&&c[--i]===0;)c[i]=Oe-1;--c[i],c[n]+=Oe}c[n]-=d[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(r.d=c,r.e=fn(c,t),G?v(r,a,u):r):new g(u===3?-0:0)};x.modulo=x.mod=function(r){var e,t=this,n=t.constructor;return r=new n(r),!t.d||!r.s||r.d&&!r.d[0]?new n(NaN):!r.d||t.d&&!t.d[0]?v(new n(t),n.precision,n.rounding):(G=!1,n.modulo==9?(e=ae(t,r.abs(),0,3,1),e.s*=r.s):e=ae(t,r,0,n.modulo,1),e=e.times(r),G=!0,t.minus(e))};x.naturalExponential=x.exp=function(){return zn(this)};x.naturalLogarithm=x.ln=function(){return ot(this)};x.negated=x.neg=function(){var r=new this.constructor(this);return r.s=-r.s,v(r)};x.plus=x.add=function(r){var e,t,n,i,o,s,a,u,c,l,m=this,d=m.constructor;if(r=new d(r),!m.d||!r.d)return!m.s||!r.s?r=new d(NaN):m.d||(r=new d(r.d||m.s===r.s?m:NaN)),r;if(m.s!=r.s)return r.s=-r.s,m.minus(r);if(c=m.d,l=r.d,a=d.precision,u=d.rounding,!c[0]||!l[0])return l[0]||(r=new d(m)),G?v(r,a,u):r;if(o=Ae(m.e/D),n=Ae(r.e/D),c=c.slice(),i=o-n,i){for(i<0?(t=c,i=-i,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/D),s=o>s?o+1:s+1,i>s&&(i=s,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(s=c.length,i=l.length,s-i<0&&(i=s,t=l,l=c,c=t),e=0;i;)e=(c[--i]=c[i]+l[i]+e)/Oe|0,c[i]%=Oe;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return r.d=c,r.e=fn(c,n),G?v(r,a,u):r};x.precision=x.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(st+r);return t.d?(e=Yr(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};x.round=function(){var r=this,e=r.constructor;return v(new e(r),r.e+1,e.rounding)};x.sine=x.sin=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+D,n.rounding=1,t=vo(n,$r(n,t)),n.precision=r,n.rounding=e,v($e>2?t.neg():t,r,e,!0)):new n(NaN)};x.squareRoot=x.sqrt=function(){var r,e,t,n,i,o,s=this,a=s.d,u=s.e,c=s.s,l=s.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for(G=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=we(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=Ae((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(o=n,n=o.plus(ae(s,o,t+2,1)).times(.5),we(o.d).slice(0,t)===(e=we(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(v(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(v(n,u+1,1),r=!n.times(n).eq(s));break}return G=!0,v(n,u,l.rounding,r)};x.tangent=x.tan=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+10,n.rounding=1,t=t.sin(),t.s=1,t=ae(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,v($e==2||$e==4?t.neg():t,r,e,!0)):new n(NaN)};x.times=x.mul=function(r){var e,t,n,i,o,s,a,u,c,l=this,m=l.constructor,d=l.d,p=(r=new m(r)).d;if(r.s*=l.s,!d||!d[0]||!p||!p[0])return new m(!r.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?r.s/0:r.s*0);for(t=Ae(l.e/D)+Ae(r.e/D),u=d.length,c=p.length,u<c&&(o=d,d=p,p=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,i=u+n;i>n;)a=o[i]+p[n]*d[i-n-1]+e,o[i--]=a%Oe|0,e=a/Oe|0;o[i]=(o[i]+e)%Oe|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),r.d=o,r.e=fn(o,t),G?v(r,m.precision,m.rounding):r};x.toBinary=function(r,e){return Yn(this,2,r,e)};x.toDecimalPlaces=x.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(Le(r,0,at),e===void 0?e=n.rounding:Le(e,0,8),v(t,r+t.e+1,e))};x.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=Ue(n,!0):(Le(r,0,at),e===void 0?e=i.rounding:Le(e,0,8),n=v(new i(n),r+1,e),t=Ue(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};x.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=Ue(i):(Le(r,0,at),e===void 0?e=o.rounding:Le(e,0,8),n=v(new o(i),r+i.e+1,e),t=Ue(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};x.toFraction=function(r){var e,t,n,i,o,s,a,u,c,l,m,d,p=this,g=p.d,f=p.constructor;if(!g)return new f(p);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=Yr(g)-p.e-1,s=o%D,e.d[0]=fe(10,s<0?D+s:s),r==null)r=o>0?e:c;else{if(a=new f(r),!a.isInt()||a.lt(c))throw Error(st+a);r=a.gt(e)?o>0?e:c:a}for(G=!1,a=new f(we(g)),l=f.precision,f.precision=o=g.length*D*2;m=ae(a,e,0,1,1),i=t.plus(m.times(n)),i.cmp(r)!=1;)t=n,n=i,i=c,c=u.plus(m.times(i)),u=i,i=e,e=a.minus(m.times(i)),a=i;return i=ae(r.minus(t),n,0,1,1),u=u.plus(i.times(c)),t=t.plus(i.times(n)),u.s=c.s=p.s,d=ae(c,n,o,1).minus(p).abs().cmp(ae(u,t,o,1).minus(p).abs())<1?[c,n]:[u,t],f.precision=l,G=!0,d};x.toHexadecimal=x.toHex=function(r,e){return Yn(this,16,r,e)};x.toNearest=function(r,e){var t=this,n=t.constructor;if(t=new n(t),r==null){if(!t.d)return t;r=new n(1),e=n.rounding}else{if(r=new n(r),e===void 0?e=n.rounding:Le(e,0,8),!t.d)return r.s?t:r;if(!r.d)return r.s&&(r.s=t.s),r}return r.d[0]?(G=!1,t=ae(t,r,0,e,1).times(r),G=!0,v(t)):(r.s=t.s,t=r),t};x.toNumber=function(){return+this};x.toOctal=function(r,e){return Yn(this,8,r,e)};x.toPower=x.pow=function(r){var e,t,n,i,o,s,a=this,u=a.constructor,c=+(r=new u(r));if(!a.d||!r.d||!a.d[0]||!r.d[0])return new u(fe(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,r.eq(1))return v(a,n,o);if(e=Ae(r.e/D),e>=r.d.length-1&&(t=c<0?-c:c)<=Co)return i=jr(u,a,t,n),r.s<0?new u(1).div(i):v(i,n,o);if(s=a.s,s<0){if(e<r.d.length-1)return new u(NaN);if((r.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=fe(+a,c),e=t==0||!isFinite(t)?Ae(c*(Math.log("0."+we(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):(G=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),i=zn(r.times(ot(a,n+t)),n),i.d&&(i=v(i,n+5,1),Ot(i.d,n,o)&&(e=n+10,i=v(zn(r.times(ot(a,e+t)),e),e+5,1),+we(i.d).slice(n+1,n+15)+1==1e14&&(i=v(i,n+1,0)))),i.s=s,G=!0,u.rounding=o,v(i,n,o))};x.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=Ue(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(Le(r,1,at),e===void 0?e=i.rounding:Le(e,0,8),n=v(new i(n),r,e),t=Ue(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};x.toSignificantDigits=x.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(Le(r,1,at),e===void 0?e=n.rounding:Le(e,0,8)),v(new n(t),r,e)};x.toString=function(){var r=this,e=r.constructor,t=Ue(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};x.truncated=x.trunc=function(){return v(new this.constructor(this),this.e+1,1)};x.valueOf=x.toJSON=function(){var r=this,e=r.constructor,t=Ue(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function we(r){var e,t,n,i=r.length-1,o="",s=r[0];if(i>0){for(o+=s,e=1;e<i;e++)n=r[e]+"",t=D-n.length,t&&(o+=it(t)),o+=n;s=r[e],n=s+"",t=D-n.length,t&&(o+=it(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Le(r,e,t){if(r!==~~r||r<e||r>t)throw Error(st+r)}function Ot(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=D,i=0):(i=Math.ceil((e+1)/D),e%=D),o=fe(10,D-e),a=r[i]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(r[i+1]/o/100|0)==fe(10,e-2)-1||(a==o/2||a==0)&&(r[i+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(r[i+1]/o/1e3|0)==fe(10,e-3)-1,s}function cn(r,e,t){for(var n,i=[0],o,s=0,a=r.length;s<a;){for(o=i.length;o--;)i[o]*=e;for(i[0]+=Gn.indexOf(r.charAt(s++)),n=0;n<i.length;n++)i[n]>t-1&&(i[n+1]===void 0&&(i[n+1]=0),i[n+1]+=i[n]/t|0,i[n]%=t)}return i.reverse()}function Mo(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/bn(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=St(r,1,e.times(i),new r(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return r.precision-=t,e}var ae=function(){function r(n,i,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*i+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,i,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=i[a]){u=n[a]>i[a]?1:-1;break}return u}function t(n,i,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<i[o]?1:0,n[o]=a*s+n[o]-i[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,i,o,s,a,u){var c,l,m,d,p,g,f,y,w,k,h,P,A,K,S,B,_,O,U,ue,ne=n.constructor,oe=n.s==i.s?1:-1,j=n.d,Z=i.d;if(!j||!j[0]||!Z||!Z[0])return new ne(!n.s||!i.s||(j?Z&&j[0]==Z[0]:!Z)?NaN:j&&j[0]==0||!Z?oe*0:oe/0);for(u?(p=1,l=n.e-i.e):(u=Oe,p=D,l=Ae(n.e/p)-Ae(i.e/p)),U=Z.length,_=j.length,w=new ne(oe),k=w.d=[],m=0;Z[m]==(j[m]||0);m++);if(Z[m]>(j[m]||0)&&l--,o==null?(K=o=ne.precision,s=ne.rounding):a?K=o+(n.e-i.e)+1:K=o,K<0)k.push(1),g=!0;else{if(K=K/p+2|0,m=0,U==1){for(d=0,Z=Z[0],K++;(m<_||d)&&K--;m++)S=d*u+(j[m]||0),k[m]=S/Z|0,d=S%Z|0;g=d||m<_}else{for(d=u/(Z[0]+1)|0,d>1&&(Z=r(Z,d,u),j=r(j,d,u),U=Z.length,_=j.length),B=U,h=j.slice(0,U),P=h.length;P<U;)h[P++]=0;ue=Z.slice(),ue.unshift(0),O=Z[0],Z[1]>=u/2&&++O;do d=0,c=e(Z,h,U,P),c<0?(A=h[0],U!=P&&(A=A*u+(h[1]||0)),d=A/O|0,d>1?(d>=u&&(d=u-1),f=r(Z,d,u),y=f.length,P=h.length,c=e(f,h,y,P),c==1&&(d--,t(f,U<y?ue:Z,y,u))):(d==0&&(c=d=1),f=Z.slice()),y=f.length,y<P&&f.unshift(0),t(h,f,P,u),c==-1&&(P=h.length,c=e(Z,h,U,P),c<1&&(d++,t(h,U<P?ue:Z,P,u))),P=h.length):c===0&&(d++,h=[0]),k[m++]=d,c&&h[0]?h[P++]=j[B]||0:(h=[j[B]],P=1);while((B++<_||h[0]!==void 0)&&K--);g=h[0]!==void 0}k[0]||k.shift()}if(p==1)w.e=l,Gr=g;else{for(m=1,d=k[0];d>=10;d/=10)m++;w.e=m+l*p-1,v(w,a?o+w.e+1:o,s,g)}return w}}();function v(r,e,t,n){var i,o,s,a,u,c,l,m,d,p=r.constructor;e:if(e!=null){if(m=r.d,!m)return r;for(i=1,a=m[0];a>=10;a/=10)i++;if(o=e-i,o<0)o+=D,s=e,l=m[d=0],u=l/fe(10,i-s-1)%10|0;else if(d=Math.ceil((o+1)/D),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=u=0,i=1,o%=D,s=o-D+1}else break e;else{for(l=a=m[d],i=1;a>=10;a/=10)i++;o%=D,s=o-D+i,u=s<0?0:l/fe(10,i-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%fe(10,i-s-1)),c=t<4?(u||n)&&(t==0||t==(r.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/fe(10,i-s):0:m[d-1])%10&1||t==(r.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=r.e+1,m[0]=fe(10,(D-e%D)%D),r.e=-e||0):m[0]=r.e=0,r;if(o==0?(m.length=d,a=1,d--):(m.length=d+1,a=fe(10,D-o),m[d]=s>0?(l/fe(10,i-s)%fe(10,s)|0)*a:0),c)for(;;)if(d==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(r.e++,m[0]==Oe&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=Oe)break;m[d--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return G&&(r.e>p.maxE?(r.d=null,r.e=NaN):r.e<p.minE&&(r.e=0,r.d=[0])),r}function Ue(r,e,t){if(!r.isFinite())return Zr(r);var n,i=r.e,o=we(r.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+it(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+it(-i-1)+o,t&&(n=t-s)>0&&(o+=it(n))):i>=s?(o+=it(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+it(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=it(n))),o}function fn(r,e){var t=r[0];for(e*=D;t>=10;t/=10)e++;return e}function dn(r,e,t){if(e>Eo)throw G=!0,t&&(r.precision=t),Error(Ur);return v(new r(ln),e,1,!0)}function Ve(r,e,t){if(e>Xn)throw Error(Ur);return v(new r(mn),e,t,!0)}function Yr(r){var e=r.length-1,t=e*D+1;if(e=r[e],e){for(;e%10==0;e/=10)t--;for(e=r[0];e>=10;e/=10)t++}return t}function it(r){for(var e="";r--;)e+="0";return e}function jr(r,e,t,n){var i,o=new r(1),s=Math.ceil(n/D+4);for(G=!1;;){if(t%2&&(o=o.times(e),Wr(o.d,s)&&(i=!0)),t=Ae(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),Wr(e.d,s)}return G=!0,o}function Dr(r){return r.d[r.d.length-1]&1}function Qr(r,e,t){for(var n,i=new r(e[0]),o=0;++o<e.length;)if(n=new r(e[o]),n.s)i[t](n)&&(i=n);else{i=n;break}return i}function zn(r,e){var t,n,i,o,s,a,u,c=0,l=0,m=0,d=r.constructor,p=d.rounding,g=d.precision;if(!r.d||!r.d[0]||r.e>17)return new d(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:0/0);for(e==null?(G=!1,u=g):u=e,a=new d(.03125);r.e>-2;)r=r.times(a),m+=5;for(n=Math.log(fe(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new d(1),d.precision=u;;){if(o=v(o.times(r),u,1),t=t.times(++l),a=s.plus(ae(o,t,u,1)),we(a.d).slice(0,u)===we(s.d).slice(0,u)){for(i=m;i--;)s=v(s.times(s),u,1);if(e==null)if(c<3&&Ot(s.d,u-n,p,c))d.precision=u+=10,t=o=a=new d(1),l=0,c++;else return v(s,d.precision=g,p,G=!0);else return d.precision=g,s}s=a}}function ot(r,e){var t,n,i,o,s,a,u,c,l,m,d,p=1,g=10,f=r,y=f.d,w=f.constructor,k=w.rounding,h=w.precision;if(f.s<0||!y||!y[0]||!f.e&&y[0]==1&&y.length==1)return new w(y&&!y[0]?-1/0:f.s!=1?NaN:y?0:f);if(e==null?(G=!1,l=h):l=e,w.precision=l+=g,t=we(y),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(r),t=we(f.d),n=t.charAt(0),p++;o=f.e,n>1?(f=new w("0."+t),o++):f=new w(n+"."+t.slice(1))}else return c=dn(w,l+2,h).times(o+""),f=ot(new w(n+"."+t.slice(1)),l-g).plus(c),w.precision=h,e==null?v(f,h,k,G=!0):f;for(m=f,u=s=f=ae(f.minus(1),f.plus(1),l,1),d=v(f.times(f),l,1),i=3;;){if(s=v(s.times(d),l,1),c=u.plus(ae(s,new w(i),l,1)),we(c.d).slice(0,l)===we(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(dn(w,l+2,h).times(o+""))),u=ae(u,new w(p),l,1),e==null)if(Ot(u.d,l-g,k,a))w.precision=l+=g,c=s=f=ae(m.minus(1),m.plus(1),l,1),d=v(f.times(f),l,1),i=a=1;else return v(u,w.precision=h,k,G=!0);else return w.precision=h,u;u=c,i+=2}}function Zr(r){return String(r.s*r.s/0)}function Hn(r,e){var t,n,i;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(i=e.length;e.charCodeAt(i-1)===48;--i);if(e=e.slice(n,i),e){if(i-=n,r.e=t=t-n-1,r.d=[],n=(t+1)%D,t<0&&(n+=D),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=D;n<i;)r.d.push(+e.slice(n,n+=D));e=e.slice(n),n=D-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),G&&(r.e>r.constructor.maxE?(r.d=null,r.e=NaN):r.e<r.constructor.minE&&(r.e=0,r.d=[0]))}else r.e=0,r.d=[0];return r}function _o(r,e){var t,n,i,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Hr.test(e))return Hn(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(No.test(e))t=16,e=e.toLowerCase();else if(Lo.test(e))t=2;else if(Ro.test(e))t=8;else throw Error(st+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=r.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,i=jr(n,new n(t),o,o*2)),c=cn(e,t,Oe),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(r.s*0):(r.e=fn(c,l),r.d=c,G=!1,s&&(r=ae(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?fe(2,u):Dt.pow(2,u))),G=!0,r)}function vo(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:St(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/bn(5,t)),e=St(r,2,e,e);for(var i,o=new r(5),s=new r(16),a=new r(20);t--;)i=e.times(e),e=e.times(o.plus(i.times(s.times(i).minus(a))));return e}function St(r,e,t,n,i){var o,s,a,u,c=1,l=r.precision,m=Math.ceil(l/D);for(G=!1,u=t.times(t),a=new r(n);;){if(s=ae(a.times(u),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=ae(s.times(u),new r(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return G=!0,s.d.length=m+1,s}function bn(r,e){for(var t=r;--e;)t*=r;return t}function $r(r,e){var t,n=e.s<0,i=Ve(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return $e=n?4:1,e;if(t=e.divToInt(i),t.isZero())$e=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return $e=Dr(t)?n?2:3:n?4:1,e;$e=Dr(t)?n?1:4:n?3:2}return e.minus(i).abs()}function Yn(r,e,t,n){var i,o,s,a,u,c,l,m,d,p=r.constructor,g=t!==void 0;if(g?(Le(t,1,at),n===void 0?n=p.rounding:Le(n,0,8)):(t=p.precision,n=p.rounding),!r.isFinite())l=Zr(r);else{for(l=Ue(r),s=l.indexOf("."),g?(i=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):i=e,s>=0&&(l=l.replace(".",""),d=new p(1),d.e=l.length-s,d.d=cn(Ue(d),10,i),d.e=d.d.length),m=cn(l,10,i),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=g?"0p+0":"0";else{if(s<0?o--:(r=new p(r),r.d=m,r.e=o,r=ae(r,d,t,n,0,i),m=r.d,o=r.e,c=Gr),s=m[t],a=i/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(r.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(r.s<0?8:7)),m.length=t,c)for(;++m[--t]>i-1;)m[t]=0,t||(++o,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=Gn.charAt(m[s]);if(g){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)l+="0";for(m=cn(l,i,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=Gn.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>u)for(o-=u;o--;)l+="0";else o<u&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return r.s<0?"-"+l:l}function Wr(r,e){if(r.length>e)return r.length=e,!0}function Fo(r){return new this(r).abs()}function Vo(r){return new this(r).acos()}function Oo(r){return new this(r).acosh()}function Do(r,e){return new this(r).plus(e)}function Wo(r){return new this(r).asin()}function qo(r){return new this(r).asinh()}function Go(r){return new this(r).atan()}function Uo(r){return new this(r).atanh()}function Xo(r,e){r=new this(r),e=new this(e);var t,n=this.precision,i=this.rounding,o=n+4;return!r.s||!e.s?t=new this(NaN):!r.d&&!e.d?(t=Ve(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?Ve(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=Ve(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(ae(r,e,o,1)),e=Ve(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(ae(r,e,o,1)),t}function zo(r){return new this(r).cbrt()}function Ho(r){return v(r=new this(r),r.e+1,2)}function Yo(r,e,t){return new this(r).clamp(e,t)}function jo(r){if(!r||typeof r!="object")throw Error(pn+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,at,"rounding",0,8,"toExpNeg",-It,0,"toExpPos",0,It,"maxE",0,It,"minE",-It,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=Un[t]),(n=r[t])!==void 0)if(Ae(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(st+t+": "+n);if(t="crypto",i&&(this[t]=Un[t]),(n=r[t])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[t]=!0;else throw Error(Xr);else this[t]=!1;else throw Error(st+t+": "+n);return this}function Qo(r){return new this(r).cos()}function Zo(r){return new this(r).cosh()}function Jr(r){var e,t,n;function i(o){var s,a,u,c=this;if(!(c instanceof i))return new i(o);if(c.constructor=i,qr(o)){c.s=o.s,G?!o.d||o.e>i.maxE?(c.e=NaN,c.d=null):o.e<i.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;G?s>i.maxE?(c.e=NaN,c.d=null):s<i.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return Hn(c,o.toString())}else if(u!=="string")throw Error(st+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),Hr.test(o)?Hn(c,o):_o(c,o)}if(i.prototype=x,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.EUCLID=9,i.config=i.set=jo,i.clone=Jr,i.isDecimal=qr,i.abs=Fo,i.acos=Vo,i.acosh=Oo,i.add=Do,i.asin=Wo,i.asinh=qo,i.atan=Go,i.atanh=Uo,i.atan2=Xo,i.cbrt=zo,i.ceil=Ho,i.clamp=Yo,i.cos=Qo,i.cosh=Zo,i.div=$o,i.exp=Jo,i.floor=es,i.hypot=ts,i.ln=ns,i.log=rs,i.log10=os,i.log2=is,i.max=ss,i.min=as,i.mod=us,i.mul=cs,i.pow=ls,i.random=ms,i.round=ds,i.sign=ps,i.sin=fs,i.sinh=bs,i.sqrt=ys,i.sub=gs,i.sum=ws,i.tan=hs,i.tanh=ks,i.trunc=As,r===void 0&&(r={}),r&&r.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)r.hasOwnProperty(t=n[e++])||(r[t]=this[t]);return i.config(r),i}function $o(r,e){return new this(r).div(e)}function Jo(r){return new this(r).exp()}function es(r){return v(r=new this(r),r.e+1,3)}function ts(){var r,e,t=new this(0);for(G=!1,r=0;r<arguments.length;)if(e=new this(arguments[r++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return G=!0,new this(1/0);t=e}return G=!0,t.sqrt()}function qr(r){return r instanceof Dt||r&&r.toStringTag===zr||!1}function ns(r){return new this(r).ln()}function rs(r,e){return new this(r).log(e)}function is(r){return new this(r).log(2)}function os(r){return new this(r).log(10)}function ss(){return Qr(this,arguments,"lt")}function as(){return Qr(this,arguments,"gt")}function us(r,e){return new this(r).mod(e)}function cs(r,e){return new this(r).mul(e)}function ls(r,e){return new this(r).pow(e)}function ms(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:Le(r,1,at),n=Math.ceil(r/D),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)i=e[o],i>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=i%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)i=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(i%1e7),o+=4);o=n/4}else throw Error(Xr);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=D,n&&r&&(i=fe(10,D-r),a[o]=(n/i|0)*i);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=D)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<D&&(t-=D-n)}return s.e=t,s.d=a,s}function ds(r){return v(r=new this(r),r.e+1,this.rounding)}function ps(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function fs(r){return new this(r).sin()}function bs(r){return new this(r).sinh()}function ys(r){return new this(r).sqrt()}function gs(r,e){return new this(r).sub(e)}function ws(){var r=0,e=arguments,t=new this(e[r]);for(G=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return G=!0,v(t,this.precision,this.rounding)}function hs(r){return new this(r).tan()}function ks(r){return new this(r).tanh()}function As(r){return v(r=new this(r),r.e+1,1)}x[Symbol.for("nodejs.util.inspect.custom")]=x.toString;x[Symbol.toStringTag]="Decimal";var Dt=x.constructor=Jr(Un);ln=new Dt(ln);mn=new Dt(mn);var N=Dt;import{PublicKey as Jn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ts}from"@solana/spl-token";import{PublicKey as ce,SystemProgram as ti,SYSVAR_RENT_PUBKEY as Ps}from"@solana/web3.js";function T({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var xs=[T({pubkey:Ts,isWritable:!1}),T({pubkey:ti.programId,isWritable:!1}),T({pubkey:Ps,isWritable:!1})];function jn({publicKey:r,transformSol:e}){let t=Qn(r.toString());if(t instanceof ce)return e&&t.equals(Kt)?ei:t;if(e&&t.toString()===Kt.toBase58())return ei;if(typeof t=="string"){if(t===ce.default.toBase58())return ce.default;try{return new ce(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Qn(r){try{return new ce(r)}catch{return r}}var yn=new ce("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Ku=new ce("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),ut=new ce("SysvarRent111111111111111111111111111111111"),Lu=new ce("SysvarC1ock11111111111111111111111111111111"),Lt=new ce("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Bs=new ce("Sysvar1nstructions1111111111111111111111111"),Nu=ti.programId,Ru=new ce("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Cu=new ce("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Eu=new ce("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Mu=new ce("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),_u=new ce("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),vu=new ce("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Fu=new ce("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Vu=new ce("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Ou=new ce("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Du=new ce("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Wu=new ce("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),ei=new ce("So11111111111111111111111111111111111111112"),Kt=ce.default;function Zn(r){return jn({publicKey:r,transformSol:!0})}import{PublicKey as Is}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ni}from"@solana/spl-token";var $n={chainId:101,address:Is.default.toBase58(),programId:ni.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ct={chainId:101,address:"So11111111111111111111111111111111111111112",programId:ni.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};var er=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===Kt.toBase58()||e instanceof Jn&&Kt.equals(e)){this.decimals=ct.decimals,this.symbol=ct.symbol,this.name=ct.name,this.mint=new Jn(ct.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=i||e.toString().substring(0,6),this.mint=o?Jn.default:jn({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Te=er;Te.WSOL=new er(Y(q({},ct),{mint:ct.address}));import{get as ri,set as Ss}from"lodash";import oi from"dayjs";import Ks from"dayjs/plugin/utc";oi.extend(Ks);var tr=class{constructor(e){this.logLevel=e.logLevel!==void 0?e.logLevel:0,this.name=e.name}set level(e){this.logLevel=e}get time(){return oi().utc().format("YYYY/MM/DD HH:mm:ss UTC")}get moduleName(){return this.name}isLogLevel(e){return e<=this.logLevel}error(...e){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...e),this):this}logWithError(...e){let t=e.map(n=>typeof n=="object"?JSON.stringify(n):n).join(", ");throw new Error(t)}warning(...e){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...e),this):this}info(...e){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...e),this):this}debug(...e){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...e),this):this}},ii={},Ls={};function ie(r){let e=ri(ii,r);if(!e){let t=ri(Ls,r);e=new tr({name:r,logLevel:t}),Ss(ii,r,e)}return e}import wn from"big.js";import Cs from"bn.js";import Es from"decimal.js-light";import Ns from"toformat";var Rs=Ns,Wt=Rs;var gn=ie("module/fraction"),nr=Wt(wn),qt=Wt(Es),Ms={[0]:qt.ROUND_DOWN,[1]:qt.ROUND_HALF_UP,[2]:qt.ROUND_UP},_s={[0]:wn.roundDown,[1]:wn.roundHalfUp,[2]:wn.roundUp},te=class{constructor(e,t=new Cs(1)){this.numerator=re(e),this.denominator=re(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new te(this.denominator,this.numerator)}add(e){let t=e instanceof te?e:new te(re(e));return this.denominator.eq(t.denominator)?new te(this.numerator.add(t.numerator),this.denominator):new te(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof te?e:new te(re(e));return this.denominator.eq(t.denominator)?new te(this.numerator.sub(t.numerator),this.denominator):new te(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof te?e:new te(re(e));return new te(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof te?e:new te(re(e));return new te(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||gn.logWithError(`${e} is not an integer.`),e<=0&&gn.logWithError(`${e} is not positive.`),qt.set({precision:e+1,rounding:Ms[n]});let i=new qt(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return i.toFormat(i.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||gn.logWithError(`${e} is not an integer.`),e<0&&gn.logWithError(`${e} is negative.`),nr.DP=e,nr.RM=_s[n]||1,new nr(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Fs=ie("Raydium_price"),Fe=class extends te{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new te(rr(n.decimals),rr(i.decimals))}get raw(){return new te(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Fe({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Fs.logWithError("mul token not equals");let n=super.mul(t);return new Fe({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,i){return this.adjusted.toSignificant(t,n,i)}toFixed(t=this.quoteToken.decimals,n,i){return this.adjusted.toFixed(t,n,i)}};var ir=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},hn=ir;hn.SOL=new ir($n);import Vs from"bn.js";var si=new te(new Vs(100)),Xe=class extends te{toSignificant(e=5,t,n){return this.mul(si).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(si).toFixed(e,t,n)}};import{PublicKey as Os}from"@solana/web3.js";import Ds from"bn.js";function ai(r){return typeof r=="object"&&r!==null&&![Te,le,Os,te,Ds,Fe,Xe].some(e=>typeof e=="object"&&r instanceof e)}function ft(r){return typeof r=="string"?Qn(r):Array.isArray(r)?r.map(e=>ft(e)):ai(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,ft(t)])):r}var Gt=new Ne(0),ci=new Ne(1),zc=new Ne(2),Hc=new Ne(3),Yc=new Ne(5),or=new Ne(10),jc=new Ne(100),Qc=new Ne(1e3),Zc=new Ne(1e4),ui=9007199254740991;function re(r){let e=ie("Raydium_parseBigNumberish");if(r instanceof Ne)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Ne(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=ui||r<=-ui)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Ne(String(r))):typeof r=="bigint"?new Ne(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Ne(0))}function rr(r){return or.pow(re(r))}function kn(r,e){let t=r.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}var qs=ie("Raydium_amount"),li=Wt(Ws);function Gs(r,e){let t="0",n="0";if(r.includes(".")){let i=r.split(".");i.length===2?([t,n]=i,n=n.padEnd(e,"0")):qs.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var le=class extends te{constructor(t,n,i=!0,o){let s=new An(0),a=or.pow(new An(t.decimals));if(i)s=re(n);else{let u=new An(0),c=new An(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Gs(n.toString(),t.decimals);u=re(l),c=re(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=ie(o||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new le(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new le(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.token.decimals,n,i=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return li.DP=this.token.decimals,new li(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as $s}from"@solana/web3.js";import fi,{isBN as bi}from"bn.js";import{bits as hl,BitStructure as kl,blob as Us,Blob as Al,cstr as Tl,f32 as Pl,f32be as xl,f64 as Bl,f64be as Il,greedy as Sl,Layout as Xs,ns64 as Kl,ns64be as Ll,nu64 as Nl,nu64be as Rl,offset as Cl,s16 as El,s16be as Ml,s24 as _l,s24be as vl,s32 as zs,s32be as Fl,s40 as Vl,s40be as Ol,s48 as Dl,s48be as Wl,s8 as ql,seq as Hs,struct as Gl,Structure as Ys,u16 as js,u16be as Ul,u24 as Xl,u24be as zl,u32 as Hl,u32be as Yl,u40 as jl,u40be as Ql,u48 as Zl,u48be as $l,u8 as Qs,UInt as Zs,union as Jl,Union as em,unionLayoutDiscriminator as tm,utf8 as nm}from"@solana/buffer-layout";var sr=Xs,mi=Ys;var ar=Zs;var di=Qs,Nt=js;var he=zs;var pi=Hs;var Pe=Us;var bt=class extends sr{constructor(t,n,i){super(t,i);this.blob=Pe(t),this.signed=n}decode(t,n=0){let i=new fi(this.blob.decode(t,n),10,"le");return this.signed?i.fromTwos(this.span*8).clone():i}encode(t,n,i=0){return typeof t=="number"&&(t=new fi(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}};function F(r){return new ar(1,r)}function Me(r){return new ar(4,r)}function b(r){return new bt(8,!1,r)}function V(r){return new bt(16,!1,r)}function yi(r){return new bt(1,!0,r)}function Pn(r){return new bt(8,!0,r)}function gi(r){return new bt(16,!0,r)}var Tn=class extends sr{constructor(t,n,i,o){super(t.span,o);this.layout=t,this.decoder=n,this.encoder=i}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,i){return this.layout.encode(this.encoder(t),n,i)}getSpan(t,n){return this.layout.getSpan(t,n)}};function I(r){return new Tn(Pe(32),e=>new $s(e),e=>e.toBuffer(),r)}function Re(r){return new Tn(di(),Js,ea,r)}function Js(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function ea(r){return r?1:0}var ur=class extends mi{decode(e,t){return super.decode(e,t)}};function R(r,e,t){return new ur(r,e,t)}function W(r,e,t){let n,i=typeof e=="number"?e:bi(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=bi(a)?a.toNumber():a,Reflect.set(o,"count",n)}return Reflect.get(o,s)},set(o,s,a){return s==="count"&&(n=a),Reflect.set(o,s,a)}});return pi(r,i,t)}var ym=R([Me("mintAuthorityOption"),I("mintAuthority"),b("supply"),F("decimals"),F("isInitialized"),Me("freezeAuthorityOption"),I("freezeAuthority")]);import{PublicKey as km}from"@solana/web3.js";import{MintLayout as Tm,TOKEN_PROGRAM_ID as xm}from"@solana/spl-token";var wi=r=>new Te({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name});import{PublicKey as ee}from"@solana/web3.js";var hi=new ee("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),ki=new ee("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Ai=new ee("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Mm=new ee("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),_m=new ee("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),vm=new ee("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Ti=new ee("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Fm=new ee("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Vm=new ee("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Om=new ee("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Dm=new ee("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Wm=new ee("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),qm=new ee("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Gm=new ee("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Um=new ee("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Xm=new ee("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),zm=new ee("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Hm=new ee("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),ta=new ee("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),na=new ee("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),ra=new ee("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");var Ym={SERUM_MARKET:ee.default,OPENBOOK_MARKET:new ee("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:ee.default,FarmV3:new ee("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new ee("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new ee("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new ee("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new ee("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new ee("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new ee("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:ta,CREATE_CPMM_POOL_AUTH:na,CREATE_CPMM_POOL_FEE_ACC:ra,FEE_DESTINATION_ID:new ee("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as ca}from"@solana/web3.js";import{PublicKey as ia,ComputeBudgetProgram as Pi,Transaction as Bi,TransactionMessage as oa,Keypair as Ii,VersionedTransaction as Si}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as sa}from"@solana/spl-token";var $={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut"};var xi=ie("Raydium_txUtil"),Ki=1644;function xn(r){let e=[],t=[];return r.microLamports&&(e.push(Pi.setComputeUnitPrice({microLamports:r.microLamports})),t.push($.SetComputeUnitPrice)),r.units&&(e.push(Pi.setComputeUnitLimit({units:r.units})),t.push($.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Rt(r){var e,t;try{return((t=await((e=r.getLatestBlockhash)==null?void 0:e.call(r)))==null?void 0:t.blockhash)||(await r.getRecentBlockhash()).blockhash}catch{return(await r.getRecentBlockhash()).blockhash}}function aa(r,e){r.length<1&&xi.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&xi.logWithError(`no signers provided:, ${e.toString()}`);let t=new Bi;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Ki}catch{return!1}}function de(r,e){let[t,n]=ia.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}function Ut({instructions:r,payer:e,signers:t}){return aa(r,[e,...t])}function Xt({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Ii.generate().publicKey.toString()}){let o=new oa({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Si(o).serialize()).toString("base64").length<Ki}catch{return!1}}var ua=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r);function yt(r){let e=[];return r.forEach(t=>{t instanceof Bi&&(t.recentBlockhash||(t.recentBlockhash=sa.toBase58()),t.feePayer||(t.feePayer=Ii.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof Si&&(n=ua(n));let i=n.toString("base64");e.push(i)}),console.log("simulate tx string:",e),e}import{TOKEN_PROGRAM_ID as la}from"@solana/spl-token";function _e(r,e,t){return de([r.toBuffer(),(t!=null?t:la).toBuffer(),e.toBuffer()],new ca("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import De from"bn.js";var zt=1e4;function be(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=Y(q({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),o=t.epoch<i.newerTransferFee.epoch?i.olderTransferFee:i.newerTransferFee,s=new De(o.maximumFee.toString()),a=t.epoch<i.newerTransferFee.epoch?(Number(i.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===zt){let u=new De(o.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=Ht(r.mul(new De(zt)),new De(zt-o.transferFeeBasisPoints)),c=new De(o.maximumFee.toString()),l=u.sub(r).gt(c)?r.add(c):u,m=Ht(l.mul(new De(o.transferFeeBasisPoints)),new De(zt)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let u=Ht(r.mul(new De(o.transferFeeBasisPoints)),new De(zt)),c=u.gt(s)?s:u;return{amount:r,fee:c,expirationTime:a}}}function gt(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function Ht(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new De(0))?t.add(new De(1)):t}import{PublicKey as Yt,sendAndConfirmTransaction as jt,Transaction as Qt,TransactionMessage as Zt,VersionedTransaction as $t}from"@solana/web3.js";import pa from"axios";import{PublicKey as Li,AddressLookupTableAccount as In}from"@solana/web3.js";import{PublicKey as ma}from"@solana/web3.js";import{getTransferFeeConfig as Fd,unpackMint as Vd}from"@solana/spl-token";function cr(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}var lr=ie("Raydium_accountInfo_util");async function lt(r,e,t){let{batchRequest:n,commitment:i="confirmed"}=q({batchRequest:!1},t),o=cr(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let m=r._buildArgs([l.map(d=>d.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=cr(a,10);s=(await(await Promise.all(u.map(async l=>await r._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&lr.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.error.message}`),l.result.value.map(m=>{if(m){let{data:d,executable:p,lamports:g,owner:f,rentEpoch:y}=m;return d.length!==2&&d[1]!=="base64"&&lr.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(d[0],"base64"),executable:p,lamports:g,owner:new ma(f),rentEpoch:y}}return null})))}else try{s=await Promise.all(o.map(a=>r.getMultipleAccountsInfo(a,i)))}catch(a){a instanceof Error&&lr.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function Bn(r,e,t){let n=await lt(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>Y(q({},i),{accountInfo:n[o]}))}async function mr({connection:r,address:e}){let t=await lt(r,[...new Set(e.map(i=>i.toString()))].map(i=>new Li(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],s=e[i];if(!o)continue;let a=new In({key:s,state:In.deserialize(o.data)});n[s.toString()]=a,Sn[s.toString()]=a}return n}var Sn={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new In({key:new Li("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:In.deserialize(Buffer.from("AQAAAP//////////d49+DAAAAAAAAQZMWvw7GUNJdaccNBVnb57OKakxL2BHLYvhRwVILRsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkG3fbh7nWP3hhCXbzkbM3athr8TYO5DSf+vfko2KGL/AVKU1D4XciC1hSlVnJ4iilt3x6rq9CmBniISTL07vagBqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAIyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZC3BlsePRfEU4nVJ/awTDzVi4bHMaoP21SbbRvAP4KUbIScv+6Yw2LHF/6K0ZjUPibbSWXCirYPGuuVl7zT789IUPLW4CpHr4JNCatp3ELXDLKMv6JJ+37le50lbBJ2LvDQdRqCgtphMF/imcN7mY5YRx2xE1A3MQ+L4QRaYK9u4GRfZP3LsAd00a+IkCpA22UNQMKdq5BFbJuwuOLqc8zxCTDlqxBG8J0HcxtfogQHDK06ukzfaXiNDKAob1MqBHS9lJxDYCwz8gd5DtFqNSTKG5l1zxIaKpDP/sffi2is1H9aKveyXSu5StXElYRl9SD5As0DHE4N0GLnf84/siiKXVyp4Ez121kLcUui/jLLFZEz/BwZK3Ilf9B9OcsEAeDMKAy2vjGSxQODgBz0QwGA+eP4ZjIjrIAQaXENv31QfLlOdXSRCkaybRniDHF4C8YcwhcvsqrOVuTP4B2Na+9wLdtrB31uz2rtlFI5kahdsnp/d1SrASDInYCtTYtdoke4kX+hoKWcEWM4Tle8pTUkUVv4BxS6fje/EzKBE4Qu9N9LMnrw/JNO0hqMVB4rk/2ou4AB1loQ7FZoPwut2o4KZB+0p9xnbrQKw038qjpHar+PyDwvxBRcu5hpHw3dguezeWv+IwvgW5icu8EGkhGa9AkFPPJT7VMSFb8xowveU=","base64"))})};var Kn=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var n;let e=(await pa.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(n=e==null?void 0:e[15])!=null?n:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:n}=xn(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:i=[],endInstructionTypes:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...i),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==Yt.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(q({},t||{})):this.build(t)}build(e){let t=new Qt;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async n=>{var a;let{recentBlockHash:i,skipPreflight:o=!0}=n||{},s=i!=null?i:await Rt(this.connection);if(t.recentBlockhash=s,this.signers.length&&t.sign(...this.signers),yt([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await jt(this.connection,t,this.signers.find(u=>u.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:o}),signedTx:t};if(this.signAllTransactions){let u=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(u[0].serialize(),{skipPreflight:o}),signedTx:u[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),o=t.filter(c=>c.transaction.instructions.length>0),s=[i,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return{builder:this,transactions:s,signers:a,instructionTypes:u,execute:async c=>{var f;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=c||{},g=d!=null?d:await Rt(this.connection);if((f=this.owner)!=null&&f.isKeyPair){if(l){let y=[];for(let w of s){let k=await jt(this.connection,w,this.signers.find(h=>h.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:p});y.push(k)}return{txIds:y,signedTxs:s}}return{txIds:await await Promise.all(s.map(async(y,w)=>(y.recentBlockhash=g,await jt(this.connection,y,a[w].find(k=>k.publicKey.equals(this.owner.publicKey))?a[w]:[...a[w],this.owner.signer],{skipPreflight:p})))),signedTxs:s}}if(this.signAllTransactions){let y=s.map((k,h)=>(k.recentBlockhash=g,a[h].length&&k.sign(...a[h]),k));yt(y);let w=await this.signAllTransactions(y);if(l){let k=0,h=[],P=async()=>{if(!w[k])return;let A=await this.connection.sendRawTransaction(w[k].serialize(),{skipPreflight:p});h.push({txId:A,status:"sent",signedTx:w[k]}),m==null||m([...h]),k++,this.connection.onSignature(A,K=>{let S=h.findIndex(B=>B.txId===A);S>-1&&(h[S].status=K.err?"error":"success"),m==null||m([...h]),K.err||P()},"processed"),this.connection.getSignatureStatus(A)};return await P(),{txIds:h.map(A=>A.txId),signedTxs:w}}else{let k=[];for(let h=0;h<w.length;h+=1){let P=await this.connection.sendRawTransaction(w[h].serialize(),{skipPreflight:p});k.push(P)}return{txIds:k,signedTxs:w}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){let d=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i}=d,o=Ee(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=q(q({},this.cluster==="devnet"?{}:Sn),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let p of a)s[p]===void 0&&u.push(new Yt(p));let c=await mr({connection:this.connection,address:u});for(let[p,g]of Object.entries(c))s[p]=g;let l=new Zt({payerKey:this.feePayer,recentBlockhash:i?Yt.default.toBase58():await Rt(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new $t(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async p=>{var y;let{recentBlockHash:g,skipPreflight:f=!0}=p||{};if(g&&(m.message.recentBlockhash=g),yt([m]),(y=this.owner)!=null&&y.isKeyPair){this.signers.find(P=>P.publicKey.equals(this.owner.publicKey))||m.sign([this.owner.signer]);let w=await this.connection.sendTransaction(m,{skipPreflight:f}),{lastValidBlockHeight:k,blockhash:h}=await this.connection.getLatestBlockhash();return await this.connection.confirmTransaction({blockhash:h,lastValidBlockHeight:k,signature:w},"confirmed"),{txId:w,signedTx:m}}if(this.signAllTransactions){let w=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(w[0],{skipPreflight:f}),signedTx:w[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async buildV0MultiTx(e){let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:i}=await this.buildV0(n),o=t.filter(c=>c.builder.instructions.length>0),s=[i,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return s.forEach(async(c,l)=>{c.sign(a[l])}),{builder:this,transactions:s,signers:a,instructionTypes:u,buildProps:n,execute:async c=>{var g;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=c||{};if(d&&s.forEach(f=>f.message.recentBlockhash=d),yt(s),(g=this.owner)!=null&&g.isKeyPair){let{lastValidBlockHeight:f,blockhash:y}=await this.connection.getLatestBlockhash();if(s.forEach((w,k)=>{a[k].find(h=>h.publicKey.equals(this.owner.publicKey))||w.sign([this.owner.signer])}),l){let w=[];for(let k of s){let h=await this.connection.sendTransaction(k,{skipPreflight:p}),{lastValidBlockHeight:P,blockhash:A}=await this.connection.getLatestBlockhash();await this.connection.confirmTransaction({blockhash:A,lastValidBlockHeight:P,signature:h},"confirmed"),w.push(h)}return{txIds:w,signedTxs:s}}return{txIds:await Promise.all(s.map(async w=>{let k=await this.connection.sendTransaction(w,{skipPreflight:p});return await this.connection.confirmTransaction({blockhash:y,lastValidBlockHeight:f,signature:k},"confirmed"),k})),signedTxs:s}}if(this.signAllTransactions){let f=await this.signAllTransactions(s);if(l){let y=0,w=[],k=async()=>{if(!f[y])return;let h=await this.connection.sendTransaction(f[y],{skipPreflight:p});w.push({txId:h,status:"sent",signedTx:f[y]}),m==null||m([...w]),y++,this.connection.onSignature(h,P=>{let A=w.findIndex(K=>K.txId===h);A>-1&&(w[A].status=P.err?"error":"success"),m==null||m([...w]),P.err||k()},"processed"),this.connection.getSignatureStatus(h)};return k(),{txIds:[],signedTxs:f}}else{let y=[];for(let w=0;w<f.length;w+=1){let k=await this.connection.sendTransaction(f[w],{skipPreflight:p});y.push(k)}return{txIds:y,signedTxs:f}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){let c=e||{},{computeBudgetConfig:t}=c,n=Ee(c,["computeBudgetConfig"]),i=t?xn(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,m)=>Y(q({},l),{[m.publicKey.toBase58()]:m}),{}),s=[],a=[],u=[];if(this.allInstructions.forEach(l=>{let m=[...u,l],d=t?[...i.instructions,...m]:m,g=[...new Set(m.map(f=>f.keys.filter(y=>y.isSigner).map(y=>y.pubkey.toString())).flat()).values()].map(f=>new Yt(f));if(u.length<12&&Ut({instructions:d,payer:this.feePayer,signers:g})||Ut({instructions:m,payer:this.feePayer,signers:g}))u.push(l);else{if(u.length===0)throw Error("item ins too big");Ut({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:g})?s.push(new Qt().add(...i.instructions,...u)):s.push(new Qt().add(...u)),a.push(Array.from(new Set(u.map(f=>f.keys.filter(y=>y.isSigner).map(y=>y.pubkey.toString())).flat())).map(f=>o[f]).filter(f=>f!==void 0)),u=[l]}}),u.length>0){let m=[...new Set(u.map(d=>d.keys.filter(p=>p.isSigner).map(p=>p.pubkey.toString())).flat()).values()].map(d=>o[d]).filter(d=>d!==void 0);Ut({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(d=>d.publicKey)})?s.push(new Qt().add(...i.instructions,...u)):s.push(new Qt().add(...u)),a.push(m)}return s.forEach(l=>l.feePayer=this.feePayer),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async l=>{var y;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:g=!0}=l||{},f=p!=null?p:await Rt(this.connection);if(s.forEach(async(w,k)=>{w.recentBlockhash=f,a[k].length&&w.sign(...a[k])}),yt(s),(y=this.owner)!=null&&y.isKeyPair){if(m){let w=[];for(let k of s){let h=await jt(this.connection,k,this.signers.find(P=>P.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:g});w.push(h)}return{txIds:w,signedTxs:s}}return{txIds:await Promise.all(s.map(async(w,k)=>await jt(this.connection,w,a[k].find(h=>h.publicKey.equals(this.owner.publicKey))?a[k]:[...a[k],this.owner.signer],{skipPreflight:g}))),signedTxs:s}}if(this.signAllTransactions){let w=await this.signAllTransactions(s);if(m){let k=0,h=[],P=async()=>{if(!w[k])return;let A=await this.connection.sendRawTransaction(w[k].serialize(),{skipPreflight:g});h.push({txId:A,status:"sent",signedTx:w[k]}),d==null||d([...h]),k++,this.connection.onSignature(A,K=>{let S=h.findIndex(B=>B.txId===A);S>-1&&(h[S].status=K.err?"error":"success"),d==null||d([...h]),K.err||P()},"processed"),this.connection.getSignatureStatus(A)};return await P(),{txIds:h.map(A=>A.txId),signedTxs:w}}else{let k=[];for(let h=0;h<w.length;h+=1){let P=await this.connection.sendRawTransaction(w[h].serialize(),{skipPreflight:g});k.push(P)}return{txIds:k,signedTxs:w}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){let y=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:i=[]}=y,o=Ee(y,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=q(q({},this.cluster==="devnet"?{}:Sn),n),a=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let w of a)s[w]===void 0&&u.push(new Yt(w));let c=await mr({connection:this.connection,address:u});for(let[w,k]of Object.entries(c))s[w]=k;let l=t?xn(t):{instructions:[],instructionTypes:[]},m=await Rt(this.connection),d=this.signers.reduce((w,k)=>Y(q({},w),{[k.publicKey.toBase58()]:k}),{}),p=[],g=[],f=[];if(this.allInstructions.forEach(w=>{let k=[...f,w],h=t?[...l.instructions,...k]:k;if(f.length<12&&Xt({instructions:h,payer:this.feePayer,lookupTableAddressAccount:s})||Xt({instructions:k,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(w);else{if(f.length===0)throw Error("item ins too big");let P={};for(let A of[...new Set(a)])s[A]!==void 0&&(P[A]=s[A]);if(t&&Xt({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let A=new Zt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new $t(A))}else{let A=new Zt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new $t(A))}g.push(Array.from(new Set(f.map(A=>A.keys.filter(K=>K.isSigner).map(K=>K.pubkey.toString())).flat())).map(A=>d[A]).filter(A=>A!==void 0)),f=[w]}}),f.length>0){let k=[...new Set(f.map(h=>h.keys.filter(P=>P.isSigner).map(P=>P.pubkey.toString())).flat()).values()].map(h=>d[h]).filter(h=>h!==void 0);if(t&&Xt({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let h=new Zt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new $t(h))}else{let h=new Zt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new $t(h))}g.push(k)}return{builder:this,transactions:p,buildProps:e,signers:g,instructionTypes:this.instructionTypes,execute:async w=>{var K;let{sequentially:k,onTxUpdate:h,recentBlockHash:P,skipPreflight:A=!0}=w||{};if(p.map(async(S,B)=>{g[B].length&&S.sign(g[B]),P&&(S.message.recentBlockhash=P)}),yt(p),(K=this.owner)!=null&&K.isKeyPair){let{lastValidBlockHeight:S,blockhash:B}=await this.connection.getLatestBlockhash();if(p.forEach((_,O)=>{g[O].find(U=>U.publicKey.equals(this.owner.publicKey))||_.sign([this.owner.signer])}),k){let _=[];for(let O of p){let U=await this.connection.sendTransaction(O,{skipPreflight:A}),{lastValidBlockHeight:ue,blockhash:ne}=await this.connection.getLatestBlockhash();await this.connection.confirmTransaction({blockhash:ne,lastValidBlockHeight:ue,signature:U},"confirmed"),_.push(U)}return{txIds:_,signedTxs:p}}return{txIds:await Promise.all(p.map(async _=>{let O=await this.connection.sendTransaction(_,{skipPreflight:A});return await this.connection.confirmTransaction({blockhash:B,lastValidBlockHeight:S,signature:O},"confirmed"),O})),signedTxs:p}}if(this.signAllTransactions){let S=await this.signAllTransactions(p);if(k){let B=0,_=[],O=async()=>{if(!S[B])return;let U=await this.connection.sendTransaction(S[B],{skipPreflight:A});_.push({txId:U,status:"sent",signedTx:S[B]}),h==null||h([..._]),B++,this.connection.onSignature(U,ue=>{let ne=_.findIndex(oe=>oe.txId===U);ne>-1&&(_[ne].status=ue.err?"error":"success"),h==null||h([..._]),ue.err||O()},"processed"),this.connection.getSignatureStatus(U)};return O(),{txIds:[],signedTxs:S}}else{let B=[];for(let _=0;_<S.length;_+=1){let O=await this.connection.sendTransaction(S[_],{skipPreflight:A});B.push(O)}return{txIds:B,signedTxs:S}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};var dr=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Jt=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ie(t)}createTxBuilder(e){return this.scope.checkOwner(),new Kn({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(dr(e))}logInfo(...e){this.logger.info(dr(e))}logAndCreateError(...e){let t=dr(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{TOKEN_PROGRAM_ID as Ln,ASSOCIATED_TOKEN_PROGRAM_ID as Sa}from"@solana/spl-token";import{PublicKey as ze,TransactionInstruction as Et,SystemProgram as Vi,SYSVAR_RENT_PUBKEY as kp}from"@solana/web3.js";var pr=R([F("instruction"),b("amountIn"),b("minAmountOut")]),fr=R([F("instruction"),b("maxAmountIn"),b("amountOut")]),mp=R([F("instruction"),F("nonce")]),fa=R([F("instruction"),F("nonce"),b("startTime")]),Ni=R([b("status"),b("nonce"),b("maxOrder"),b("depth"),b("baseDecimal"),b("quoteDecimal"),b("state"),b("resetFlag"),b("minSize"),b("volMaxCutRatio"),b("amountWaveRatio"),b("baseLotSize"),b("quoteLotSize"),b("minPriceMultiplier"),b("maxPriceMultiplier"),b("systemDecimalValue"),b("minSeparateNumerator"),b("minSeparateDenominator"),b("tradeFeeNumerator"),b("tradeFeeDenominator"),b("pnlNumerator"),b("pnlDenominator"),b("swapFeeNumerator"),b("swapFeeDenominator"),b("baseNeedTakePnl"),b("quoteNeedTakePnl"),b("quoteTotalPnl"),b("baseTotalPnl"),b("poolOpenTime"),b("punishPcAmount"),b("punishCoinAmount"),b("orderbookToInitTime"),V("swapBaseInAmount"),V("swapQuoteOutAmount"),b("swapBase2QuoteFee"),V("swapQuoteInAmount"),V("swapBaseOutAmount"),b("swapQuote2BaseFee"),I("baseVault"),I("quoteVault"),I("baseMint"),I("quoteMint"),I("lpMint"),I("openOrders"),I("marketId"),I("marketProgramId"),I("targetOrders"),I("withdrawQueue"),I("lpVault"),I("owner"),b("lpReserve"),W(b(),3,"padding")]),dp=R([b("accountType"),b("status"),b("nonce"),b("maxOrder"),b("depth"),b("baseDecimal"),b("quoteDecimal"),b("state"),b("resetFlag"),b("minSize"),b("volMaxCutRatio"),b("amountWaveRatio"),b("baseLotSize"),b("quoteLotSize"),b("minPriceMultiplier"),b("maxPriceMultiplier"),b("systemDecimalsValue"),b("abortTradeFactor"),b("priceTickMultiplier"),b("priceTick"),b("minSeparateNumerator"),b("minSeparateDenominator"),b("tradeFeeNumerator"),b("tradeFeeDenominator"),b("pnlNumerator"),b("pnlDenominator"),b("swapFeeNumerator"),b("swapFeeDenominator"),b("baseNeedTakePnl"),b("quoteNeedTakePnl"),b("quoteTotalPnl"),b("baseTotalPnl"),b("poolOpenTime"),b("punishPcAmount"),b("punishCoinAmount"),b("orderbookToInitTime"),V("swapBaseInAmount"),V("swapQuoteOutAmount"),V("swapQuoteInAmount"),V("swapBaseOutAmount"),b("swapQuote2BaseFee"),b("swapBase2QuoteFee"),I("baseVault"),I("quoteVault"),I("baseMint"),I("quoteMint"),I("lpMint"),I("modelDataAccount"),I("openOrders"),I("marketId"),I("marketProgramId"),I("targetOrders"),I("owner"),W(b(),64,"padding")]),br=R([F("instruction"),b("baseAmountIn"),b("quoteAmountIn"),b("fixedSide")]),yr=R([F("instruction"),b("amountIn")]);var Ri=R([b("fee")]);import{PublicKey as ba}from"@solana/web3.js";var Ct=new ba("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ht=5e4,ya=R([b("x"),b("y"),b("price")]),ga=R([b("accountType"),b("status"),b("multiplier"),b("validDataCount"),W(ya,ht,"DataElement")]);function wa(r,e){return[0,ht-2]}function ha(r){return[0,ht-2]}function ka(r){return[0,ht-2]}function Aa(r,e,t){let[n,i]=wa(e,t),o=n,s=i,a=0,u=e*r.multiplier/t;for(;o<=s;){if(a=Math.floor((s+o)/2),a===0||a>=ht-2)return[a,a,!1];let c=r.DataElement[a].x*r.multiplier/r.DataElement[a].y,l=r.DataElement[a-1].x*r.multiplier/r.DataElement[a-1].y,m=r.DataElement[a+1].x*r.multiplier/r.DataElement[a+1].y;if(u===c)return[a,a,!0];if(u===l)return[a-1,a-1,!0];if(u===m)return[a+1,a+1,!0];if(u<l)s=a-1;else{if(u>l&&u<c)return[a-1,a,!0];if(u>c&&u<m)return[a,a+1,!0];o=a+1}}return[a,a,!1]}function gr(r,e,t){let[n,i,o]=Aa(r,e,t);if(!o)return 0;if(n===i){let s=r.DataElement[n].x;return e*r.multiplier/s}else{let s=r.DataElement[n].x,a=r.DataElement[n].y,u=r.DataElement[i].x,c=r.DataElement[i].y,l=t*(u*a-s*c),m=s*l,d=(u-s)*(e*a-s*t)*c,p=m+d;return e*r.multiplier*l/p}}function wt(r,e,t){return e*r.multiplier/t}function Ci(r,e,t){return e*t/r.multiplier}function Ta(r,e){let[t,n]=ha(e),i=t,o=n,s=0,a=e;for(;i<o;){if(s=Math.floor((o+i)/2),s<=0||s>ht-2)return[s,s,!1];let u=r.DataElement[s].x,c=r.DataElement[s-1].x,l=r.DataElement[s+1].x;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<c)o=s-1;else{if(a>c&&a<u)return[s-1,s,!0];if(a>u&&a<l)return[s,s+1,!0];i=s+1}}return[s,s,!1]}function Pa(r,e){let[t,n]=ka(e),i=t,o=n,s=0,a=e;for(;i<=o;){if(s=Math.floor((o+i)/2),s<=0||s>=ht-2)return[s,s,!1];let u=r.DataElement[s].y,c=r.DataElement[s-1].y,l=r.DataElement[s+1].y;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<l)i=s+1;else{if(a<c&&a>u)return[s-1,s,!0];if(a<u&&a>l)return[s,s+1,!0];o=s-1}}return[s,s,!1]}function Ei(r,e,t,n){let i=n?e+t:e-t,[o,s,a]=Ta(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].y,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,d=r.DataElement[o].y,p=r.DataElement[s].y;if(e>=u&&e<=c)return n?[m,p,!0,a]:[l,d,!0,a];{let g,f;return n?(g=l+(m-l)*(e-u)/(c-u),f=d-(i-u)*r.multiplier/m):(g=l+(m-l)*(e-u)/(c-u),f=p+(c-i)*r.multiplier/l),[g,f,!1,a]}}}function xa(r,e,t,n){let i=n?e-t:e+t,[o,s,a]=Pa(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].x,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,d=r.DataElement[o].y,p=r.DataElement[s].y;if(e>=p&&e<=d)return n?[m,c,!0,a]:[l,u,!0,a];{let g,f;return n?(g=l+(m-l)*(d-e)/(d-p),f=u+m*(d-i)/r.multiplier):(g=l+(m-l)*(d-e)/(d-p),f=c-l*(i-p)/r.multiplier),[g,f,!1,a]}}}function Ba(r,e){let t=Ei(r,e,0,!1);return t[3]?t[0]:0}function Mi(r,e,t,n){let i=gr(r,e,t),o=wt(r,e,i),s=wt(r,t,i),a=wt(r,n,i),u=!0,[c,l,m,d]=Ei(r,o,a,u);if(!d)return 0;if(m)return n*r.multiplier/c;{let p=s-l;return Ci(r,p,i)}}function _i(r,e,t,n){let i=gr(r,e,t),o=wt(r,e,i),s=wt(r,t,i),a=wt(r,n,i),u=!1,[c,l,m,d]=xa(r,s,a,u);if(!d)return 0;if(m)return n*c/r.multiplier;{let p=o-l;return Ci(r,p,i)}}function Ia(r){let e=ga.decode(r);return{accountType:e.accountType.toNumber(),status:e.status.toNumber(),multiplier:e.multiplier.toNumber(),validDataCount:e.validDataCount.toNumber(),DataElement:e.DataElement.map(t=>({x:t.x.toNumber(),y:t.y.toNumber(),price:t.price.toNumber()}))}}function vi(r,e,t,n){let i=Ba(r,wt(r,e,gr(r,e,t)))/r.multiplier;return n?i:1/i}var en=class{constructor({connection:e}){this._layoutData={accountType:0,status:0,multiplier:0,validDataCount:0,DataElement:[]};this.connection=e}get stableModelData(){return this._layoutData}async initStableModelLayout(){if(this._layoutData.validDataCount===0&&this.connection){let e=await this.connection.getAccountInfo(Ct);e&&(this._layoutData=Ia(e==null?void 0:e.data))}}};var Fi=ie("Raydium_liquidity_instruction");function Oi(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:i,quoteAmountIn:o,fixedSide:s}=r,a=Buffer.alloc(br.span);br.encode({instruction:3,baseAmountIn:re(i),quoteAmountIn:re(o),fixedSide:s==="base"?Gt:ci},a);let u=[T({pubkey:Ln,isWritable:!1}),T({pubkey:new ze(e.id)}),T({pubkey:new ze(t.authority),isWritable:!1}),T({pubkey:new ze(t.openOrders),isWritable:!1}),T({pubkey:new ze(t.targetOrders)}),T({pubkey:new ze(e.lpMint.address)}),T({pubkey:new ze(t.vault.A)}),T({pubkey:new ze(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(T({pubkey:Ct})),u.push(T({pubkey:new ze(e.marketId),isWritable:!1}),T({pubkey:n.baseTokenAccount}),T({pubkey:n.quoteTokenAccount}),T({pubkey:n.lpTokenAccount}),T({pubkey:n.owner,isWritable:!1,isSigner:!0}),T({pubkey:new ze(t.marketEventQueue),isWritable:!1})),new Et({programId:new ze(e.programId),keys:u,data:a})}function wr(r){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:i}=r,o=ft(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(yr.span);yr.encode({instruction:4,amountIn:re(i)},a);let u=[T({pubkey:Ln,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders}),T({pubkey:o.targetOrders}),T({pubkey:o.mintLp.address}),T({pubkey:o.vault.A}),T({pubkey:o.vault.B})];return s===5?u.push(T({pubkey:Ct})):(u.push(T({pubkey:o.id})),u.push(T({pubkey:o.id}))),u.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:n.lpTokenAccount}),T({pubkey:n.baseTokenAccount}),T({pubkey:n.quoteTokenAccount}),T({pubkey:n.owner,isWritable:!1,isSigner:!0}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks})),new Et({programId:o.programId,keys:u,data:a})}return new Et({programId:o.programId,keys:[]})}function Di({programId:r,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:i,coinMint:o,pcMint:s,coinVault:a,pcVault:u,withdrawQueue:c,ammTargetOrders:l,poolTempLp:m,marketProgramId:d,marketId:p,userWallet:g,userCoinVault:f,userPcVault:y,userLpVault:w,nonce:k,openTime:h,coinAmount:P,pcAmount:A,ammConfigId:K,feeDestinationId:S}){let B=R([F("instruction"),F("nonce"),b("openTime"),b("pcAmount"),b("coinAmount")]),_=[{pubkey:Ln,isSigner:!1,isWritable:!1},{pubkey:Sa,isSigner:!1,isWritable:!1},{pubkey:Vi.programId,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:K,isSigner:!1,isWritable:!1},{pubkey:S,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!0,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!0}],O=Buffer.alloc(B.span);return B.encode({instruction:1,nonce:k,openTime:h,coinAmount:P,pcAmount:A},O),{instruction:new Et({keys:_,programId:r,data:O}),instructionType:$.AmmV4CreatePool}}function Ka({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},i){let o=ft(r),s=Buffer.alloc(pr.span);pr.encode({instruction:9,amountIn:re(t),minAmountOut:re(n)},s);let a=[T({pubkey:Ln,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders})];return i===4&&a.push(T({pubkey:o.targetOrders})),a.push(T({pubkey:o.vault.A}),T({pubkey:o.vault.B})),i===5&&a.push(T({pubkey:Ct})),a.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:e.tokenAccountIn}),T({pubkey:e.tokenAccountOut}),T({pubkey:e.owner,isWritable:!1})),new Et({programId:o.programId,keys:a,data:s})}function La({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},i){let o=ft(r),s=Buffer.alloc(fr.span);fr.encode({instruction:11,maxAmountIn:re(t),amountOut:re(n)},s);let a=[T({pubkey:Vi.programId,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders}),T({pubkey:o.targetOrders}),T({pubkey:o.vault.A}),T({pubkey:o.vault.B})];return i===5&&a.push(T({pubkey:Ct})),a.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:e.tokenAccountIn}),T({pubkey:e.tokenAccountOut}),T({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Et({programId:o.programId,keys:a,data:s})}function Wi(r){let{poolKeys:e,version:t,userKeys:n,amountIn:i,amountOut:o,fixedSide:s}=r;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return Ka(Y(q({},a),{amountIn:i,minAmountOut:o}),t);if(s==="out")return La(Y(q({},a),{maxAmountIn:i,amountOut:o}),t);Fi.logWithError("invalid params","params",r)}throw Fi.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}import{TOKEN_PROGRAM_ID as ke,TOKEN_2022_PROGRAM_ID as pt,ASSOCIATED_TOKEN_PROGRAM_ID as co}from"@solana/spl-token";import{PublicKey as L,TransactionInstruction as qe,SystemProgram as vt,Keypair as Rr}from"@solana/web3.js";import lo from"bn.js";import Va from"bn.js";function Nn(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function hr(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function kr(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function tn(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function qi(r,e){return tn(r,e)?null:hr(r,e)}function Gi(r,e){return tn(r,e)?null:kr(r,e)}var Mp=Buffer.from("amm_config","utf8"),Na=Buffer.from("pool","utf8"),Ra=Buffer.from("pool_vault","utf8"),Ca=Buffer.from("pool_reward_vault","utf8"),Ui=Buffer.from("position","utf8"),Ea=Buffer.from("tick_array","utf8"),Ma=Buffer.from("operation","utf8"),_a=Buffer.from("pool_tick_array_bitmap_extension","utf8");function Xi(r,e,t,n){return de([Na,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Ar(r,e,t){return de([Ra,e.toBuffer(),t.toBuffer()],r)}function zi(r,e,t){return de([Ca,e.toBuffer(),t.toBuffer()],r)}function se(r,e,t){return de([Ea,e.toBuffer(),Nn(t)],r)}function kt(r,e,t,n){return de([Ui,e.toBuffer(),Nn(t),Nn(n)],r)}function He(r,e){return de([Ui,e.toBuffer()],r)}function Rn(r){return de([Buffer.from("metadata","utf8"),Lt.toBuffer(),r.toBuffer()],Lt)}function Tr(r){return de([Ma],r)}function Ye(r,e){return de([_a,e.toBuffer()],r)}import je from"bn.js";var pe=new je(0),Qe=new je(1),Je=new je(-1),ve=new je(1).shln(64),Cn=new je(1).shln(128),Pr=ve.sub(Qe),nn=64,Hi=Cn.subn(1),xe=-443636,Ke=-xe,Mt=new je("4295048016"),_t=new je("79226673521066979257578248091"),Yi=16,ji="59543866431248",Qi="184467440737095516",Zi="15793534762490258745",En=new je(10).pow(new je(6));var Fp=new je("18446744073700000000");var va=15,Q=class{static async getTickArrays(e,t,n,i,o,s,a){let u=[],c=M.getTickArrayStartIndexByTick(i,o),l=M.getInitializedTickArrayInRange(s,a,o,c,Math.floor(va/2));for(let p=0;p<l.length;p++){let{publicKey:g}=se(t,n,l[p]);u.push(g)}let m=(await lt(e,u)).map(p=>p!==null?rn.decode(p.data):null),d={};for(let p=0;p<u.length;p++){let g=m[p];g!==null&&(d[g.startTickIndex]=Y(q({},g),{address:u[p]}))}return d}static nextInitializedTick(e,t,n,i,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,i,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=M.getNextTickArrayStartIndex(c,o,s),this.checkIsValidStartIndex(c,o))throw new Error("No enough initialized tickArray");let l=n[c];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:d,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,d,p]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,i,o){let s=Math.floor(e/Q.tickCount(t)),a=n?M.searchLowBitFromStart(i,o,s-1,1,t):M.searchHightBitFromStart(i,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,i){let o;if(i){let a=ye-1;for(;a>=0;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a-1}}else{let a=0;for(;a<ye;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=se(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=M.getTickArrayStartIndexByTick(i,o),u=Math.floor((i-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u-1}else for(u=u+1;u<ye;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u+1}let{publicKey:m}=se(e,t,a);return{initializedTick:l,tickArrayAddress:m,tickArrayStartTickIndex:c.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(M.checkIsOutOfBoundary(e)){if(e>Ke)return!1;let n=M.getTickArrayStartIndexByTick(xe,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return ye*e}};import H from"bn.js";import{PublicKey as tt}from"@solana/web3.js";import me from"bn.js";var xr=14,et=class{static maxTickInTickarrayBitmap(e){return e*ye*At}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(i+=1);let o=n*i;return e<0?{minValue:-o,maxValue:-o+n}:{minValue:o,maxValue:o+n}}static nextInitializedTickArrayStartIndex(e,t,n,i){if(!Q.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-Q.tickCount(n):t+Q.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*ye,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(i){let l=e.shln(1024-c-1),m=qi(1024,l);if(m!==null){let d=(c-m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=Gi(1024,l);if(m!==null){let d=(c+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-Q.tickCount(n)}}}},on=class{static getBitmapOffset(e,t){if(!Q.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=et.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&i--,i}static getBitmap(e,t,n){let i=this.getBitmapOffset(e,t);return e<0?{offset:i,tickarrayBitmap:n.negativeTickArrayBitmap[i]}:{offset:i,tickarrayBitmap:n.positiveTickArrayBitmap[i]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:i}=this.extensionTickBoundary(t);if(e>=i&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=et.maxTickInTickarrayBitmap(e),n=-t;if(Ke<=t)throw Error(`extensionTickBoundary check error: ${Ke}, ${t}`);if(n<=xe)throw Error(`extensionTickBoundary check error: ${n}, ${xe}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:i}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:M.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=Q.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,i);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,i){let{minValue:o,maxValue:s}=et.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let u=M.mergeTickArrayBitmap(e).shln(At-1-a),c=tn(512,u)?null:hr(512,u);if(c!==null){let l=t-c*Q.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=M.mergeTickArrayBitmap(e).shrn(a),c=tn(512,u)?null:kr(512,u);if(c!==null){let l=t+c*Q.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-Q.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%et.maxTickInTickarrayBitmap(t),i=Math.floor(n/Q.tickCount(t));return e<0&&n!=0&&(i=At-i),i}};import Ze from"bn.js";var sn=class{static getfeeGrowthInside(e,t,n){let i=new Ze(0),o=new Ze(0);e.tickCurrent>=t.tick?(i=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(i=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),o=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new Ze(0),a=new Ze(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let u=X.wrappingSubU128(X.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),c=X.wrappingSubU128(X.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=X.mulDivFloor(X.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,ve),u=t.tokenFeesOwedA.add(a),c=X.mulDivFloor(X.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,ve),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=X.mulDivFloor(X.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,ve),u=t.tokenFeesOwedA.add(a),c=X.mulDivFloor(X.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,ve),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,i){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=X.wrappingSubU128(u,c.growthInsideLastX64),m=X.mulDivFloor(l,t.liquidity,ve),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static GetPositionRewards(e,t,n,i){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=X.wrappingSubU128(u,c.growthInsideLastX64),m=X.mulDivFloor(l,t.liquidity,ve),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static getRewardGrowthInside(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Ze(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Ze(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(X.wrappingSubU128(X.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Ze(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Ze(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(X.wrappingSubU128(X.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:o,epochInfo:s}){var y,w,k,h;let a=z.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),u=z.getSqrtPriceX64FromTick(t.tickLower),c=z.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+i:1-i,m=J.getAmountsFromLiquidity(a,u,c,n,o),[d,p]=[be(m.amountA,(y=e.mintA.extensions)==null?void 0:y.feeConfig,s,!0),be(m.amountB,(w=e.mintB.extensions)==null?void 0:w.feeConfig,s,!0)],[g,f]=[be(new Ze(new N(m.amountA.toString()).mul(l).toFixed(0)),(k=e.mintA.extensions)==null?void 0:k.feeConfig,s,!0),be(new Ze(new N(m.amountB.toString()).mul(l).toFixed(0)),(h=e.mintB.extensions)==null?void 0:h.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:g,amountSlippageB:f,expirationTime:gt(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as $i}from"@solana/spl-token";var Be=class{static getOutputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintA.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:g}=Tt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,c,o);return a.push(...d),{expectedAmountOut:m.mul(Je),remainingAccounts:a,executionPrice:p,feeAmount:g}}static getInputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:y}=se(e.programId,e.id,f.nextStartIndex);a.push(y)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:g}=Tt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(Je),c,o);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:g}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=Be.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?on.checkTickArrayIsInit(Q.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):M.checkTickArrayIsInitialized(M.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=se(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,Q.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=se(e.programId,e.id,s);return{isExist:!0,startIndex:s,nextAccountMeta:a}}return{isExist:!1,nextAccountMeta:void 0,startIndex:void 0}}static preInitializedTickArrayStartIndex(e,t){let n=Math.floor(e.tickCurrent/Q.tickCount(e.tickSpacing)),i=t?M.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):M.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return i.length>0?{isExist:!0,nextStartIndex:i[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=Q.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=et.nextInitializedTickArrayStartIndex(M.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=on.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<xe||t>Ke)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],d=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(d===void 0)throw Error("get new reward mint info error");let p=Y(q({},m),{perSecond:X.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new tt(d)});if(p.tokenMint.equals(tt.default))continue;if(n<=p.openTime.toNumber()||i.eq(pe)){s.push(p);continue}let g=new me(Math.min(p.endTime.toNumber(),n)),f=g.sub(p.lastUpdateTime),y=X.mulDivFloor(f,p.emissionsPerSecondX64,i),w=p.rewardGrowthGlobalX64.add(y),k=X.mulDivFloor(f,p.emissionsPerSecondX64,ve),h=p.rewardTotalEmissioned.add(k);s.push(Y(q({},p),{rewardGrowthGlobalX64:w,rewardTotalEmissioned:h,lastUpdateTime:g}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let o of t){let s=M.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=et.maxTickInTickarrayBitmap(e),n=-t;return t>Ke&&(t=Q.getArrayStartIndex(Ke,e)+Q.tickCount(e)),n<xe&&(n=Q.getArrayStartIndex(xe,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!Q.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/Q.tickCount(t)*At}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await Bn(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=to.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let i={},o=[];for(let u of t){let c=M.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=M.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:d}=se(u.programId,u.id,m);o.push({pubkey:d}),i[d.toString()]=u.id}}let s=await Bn(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=i[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=rn.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=Y(q({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:i=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(d=>d.accountInfo.mint),c=[];for(let d of u)for(let p of s)c.push(He(p,d).publicKey);let l=await lt(t,c,{batchRequest:i}),m={};for(let d of l){if(d===null)continue;let p=eo.decode(d.data),g=p.poolId.toString(),f=e.find(B=>B.state.id.toBase58()===g);if(f===void 0)continue;let y=f.state,w=M._getTickPriceLegacy({poolInfo:y,tick:p.tickLower,baseIn:!0}),k=M._getTickPriceLegacy({poolInfo:y,tick:p.tickUpper,baseIn:!0}),{amountA:h,amountB:P}=J.getAmountsFromLiquidity(y.sqrtPriceX64,w.tickSqrtPriceX64,k.tickSqrtPriceX64,p.liquidity,!1),A=1/(1-Math.sqrt(Math.sqrt(w.price.div(k.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:w.price,priceUpper:k.price,amountA:h,amountB:P,tickLower:p.tickLower,tickUpper:p.tickUpper,liquidity:p.liquidity,feeGrowthInsideLastX64A:p.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:p.feeGrowthInsideLastX64B,tokenFeesOwedA:p.tokenFeesOwedA,tokenFeesOwedB:p.tokenFeesOwedB,rewardInfos:p.rewardInfos.map(B=>Y(q({},B),{pendingReward:new me(0)})),leverage:A,tokenFeeAmountA:new me(0),tokenFeeAmountB:new me(0)}];let K=await M.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),S=await M.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=K,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=S}if(o){let d=Object.values(m),p=await lt(t,d,{batchRequest:i}),g={};for(let f=0;f<d.length;f++){let y=p[f];if(y===null)continue;let w=d[f].toString();g[w]=rn.decode(y.data)}for(let{state:f,positionAccount:y}of e)if(!!y)for(let w of y){let k=`${f.programId.toString()}-${f.id.toString()}-${w.tickLower}`,h=`${f.programId.toString()}-${f.id.toString()}-${w.tickUpper}`,P=g[m[k].toString()],A=g[m[h].toString()],K=P.ticks[M.getTickOffsetInArray(w.tickLower,f.tickSpacing)],S=A.ticks[M.getTickOffsetInArray(w.tickUpper,f.tickSpacing)],{tokenFeeAmountA:B,tokenFeeAmountB:_}=await sn.GetPositionFees(f,w,K,S),O=await sn.GetPositionRewards(f,w,K,S);w.tokenFeeAmountA=B.gte(new me(0))?B:new me(0),w.tokenFeeAmountB=_.gte(new me(0))?_:new me(0);for(let U=0;U<O.length;U++)w.rewardInfos[U].pendingReward=O[U].gte(new me(0))?O[U]:new me(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:o,slippage:s,priceLimit:a=new N(0)}){var O;let u,c=n.toBase58()===e.mintA.address,[l,m]=c?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new N(0))?u=c?Mt.add(new me(1)):_t.sub(new me(1)):u=z.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let d=be(o,l,i,!1),{expectedAmountOut:p,remainingAccounts:g,executionPrice:f,feeAmount:y}=Be.getOutputAmountAndRemainAccounts(e,t,n,d.amount.sub((O=d.fee)!=null?O:pe),u),w=be(p,m,i,!1),k=z.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),h=c?k:new N(1).div(k),P=p.mul(new me(Math.floor((1-s)*1e10))).div(new me(1e10)),A=be(P,m,i,!1),K=c?e.currentPrice:new N(1).div(e.currentPrice),S=new N(h).sub(K).abs(),B=K,_=new Xe(new N(S).mul(10**15).toFixed(0),new N(B).mul(10**15).toFixed(0));return{realAmountIn:d,amountOut:w,minAmountOut:A,expirationTime:gt(d.expirationTime,w.expirationTime),currentPrice:e.currentPrice,executionPrice:h,priceImpact:_,fee:y,remainingAccounts:g}}static async computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:i,slippage:o,epochInfo:s}){let a=i.address===e.mintB.address,[u,c]=a?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,m]=[new Te(Y(q({},u),{mint:u.address,isToken2022:u.programId===$i.toBase58()})),new Te(Y(q({},c),{mint:c.address,isToken2022:c.programId===$i.toBase58()}))],{realAmountIn:d,amountOut:p,minAmountOut:g,expirationTime:f,currentPrice:y,executionPrice:w,priceImpact:k,fee:h,remainingAccounts:P}=await Be.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new tt(u.address),amountIn:n,slippage:o,epochInfo:s}),A=Y(q({},d),{amount:new le(l,d.amount),fee:d.fee===void 0?void 0:new le(l,d.fee)}),K=Y(q({},p),{amount:new le(m,p.amount),fee:p.fee===void 0?void 0:new le(m,p.fee)}),S=Y(q({},g),{amount:new le(m,g.amount),fee:g.fee===void 0?void 0:new le(m,g.fee)}),B=new Fe({baseToken:l,denominator:new me(10).pow(new me(20+l.decimals)),quoteToken:m,numerator:y.mul(new N(10**(20+m.decimals))).toFixed(0)}),_=new Fe({baseToken:l,denominator:new me(10).pow(new me(20+l.decimals)),quoteToken:m,numerator:w.mul(new N(10**(20+m.decimals))).toFixed(0)}),O=new le(l,h);return{realAmountIn:A,amountOut:K,minAmountOut:S,expirationTime:f,currentPrice:B,executionPrice:_,priceImpact:k,fee:O,remainingAccounts:P}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var g,f,y;let o=e[t],s=M.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=M.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,m=a-s,d=o.priceMax-o.priceMin,p;return l<=0?p=0:m===l?p=d/l:d===l?p=l/m:p=l/d*(l/m),{feeApr:o.feeApr*p,rewardsApr:[(g=o.rewardApr[0])!=null?g:0*p,(f=o.rewardApr[1])!=null?f:0*p,(y=o.rewardApr[2])!=null?y:0*p],apr:o.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:i,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=i[Zn(e.mintA.address).toString()],d=i[Zn(e.mintB.address).toString()],p=e.mintA.decimals,g=e.mintB.decimals;if(!l||!m||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=z.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),y=z.getSqrtPriceX64FromTick(s),w=z.getSqrtPriceX64FromTick(a),{amountSlippageA:k,amountSlippageB:h}=J.getAmountsFromLiquidityWithSlippage(f,y,w,t,!1,!1,0),{amountSlippageA:P,amountSlippageB:A}=J.getAmountsFromLiquidityWithSlippage(f,y,w,o,!1,!1,0),K=new N(k.toString()).div(new N(10).pow(p)).mul(m.value).add(new N(h.toString()).div(new N(10).pow(g)).mul(d.value)),S=new N(P.toString()).div(new N(10).pow(p)).mul(m.value).add(new N(A.toString()).div(new N(10).pow(g)).mul(d.value)),B=S.div(K.add(S)).div(S),O=new N(l.volumeFee).mul(365).div(c).mul(B).mul(100).toNumber(),U=3600*24*365,ue=e.rewardDefaultInfos.map(ne=>{var Z,nt;let oe=ne.mint.decimals,j=i[ne.mint.address];return u<((Z=ne.startTime)!=null?Z:0)||u>((nt=ne.endTime)!=null?nt:0)||!ne.perSecond||!j||oe===void 0?0:new N(j.value).mul(new N(ne.perSecond).mul(U)).div(new N(10).pow(oe)).mul(B).mul(100).toNumber()});return{feeApr:O,rewardsApr:ue,apr:O+ue.reduce((ne,oe)=>ne+oe,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var w,k;let l=z.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),m=z.getSqrtPriceX64FromTick(n),d=z.getSqrtPriceX64FromTick(i),p=a?1-s:1+s,g=be(o,(w=e[t?"mintA":"mintB"].extensions)==null?void 0:w.feeConfig,u,!c),f=new me(new N(g.amount.sub((k=g.fee)!=null?k:pe).toString()).mul(p).toFixed(0)),y;if(l.lte(m))y=t?J.getLiquidityFromTokenAmountA(m,d,f,!a):new me(0);else if(l.lte(d)){let h=J.getLiquidityFromTokenAmountA(l,d,f,!a),P=J.getLiquidityFromTokenAmountB(m,l,f);y=t?h:P}else y=t?new me(0):J.getLiquidityFromTokenAmountB(m,d,f);return Be.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:i,liquidity:y,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:o,slippage:s,add:a}){var y,w,k,h;let u=z.getSqrtPriceX64FromTick(n),c=z.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,m=J.getAmountsFromLiquidity(z.priceToSqrtPriceX64(new N(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[d,p]=[be(m.amountA,(y=t.mintA.extensions)==null?void 0:y.feeConfig,e,!0),be(m.amountB,(w=t.mintB.extensions)==null?void 0:w.feeConfig,e,!0)],[g,f]=[be(m.amountA.muln(l),(k=t.mintA.extensions)==null?void 0:k.feeConfig,e,!0),be(m.amountB.muln(l),(h=t.mintB.extensions)==null?void 0:h.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:p,amountSlippageA:g,amountSlippageB:f,expirationTime:gt(d.expirationTime,p.expirationTime)}}static async fetchComputeClmmInfo({connection:e,poolInfo:t}){let n=await e.getAccountInfo(new tt(t.id));if(!n)throw new Error(`pool not found ${t.id}`);let i=Ji.decode(n.data),o=Ye(new tt(t.programId),new tt(t.id)).publicKey,s=await Be.fetchExBitmaps({connection:e,exBitmapAddress:[o],batchRequest:!1});return Y(q({},i),{id:new tt(t.id),programId:new tt(t.programId),mintA:t.mintA,mintB:t.mintB,ammConfig:Y(q({},t.config),{id:new tt(t.config.id),fundOwner:""}),currentPrice:new N(t.price),exBitmapInfo:s[o.toBase58()],startTime:i.startTime.toNumber()})}};var X=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(pe)||(o=o.add(Qe)),o}static mulDivFloor(e,t,n){if(n.eq(pe))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(pe))throw new Error("division by 0");return e.mul(t).add(n.sub(Qe)).div(n)}static x64ToDecimal(e,t){return new N(e.toString()).div(N.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new H(e.mul(N.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Cn).sub(t).mod(Cn)}};function ge(r,e){return Br(r.mul(e),64,256)}function Fa(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Br(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var z=class{static sqrtPriceX64ToPrice(e,t,n){return X.x64ToDecimal(e).pow(2).mul(N.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return X.decimalToX64(e.mul(N.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(pe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(pe))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,i){if(!e.gt(pe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(pe))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,i){if(n.eq(pe))return e;let o=t.shln(nn);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?X.mulDivCeil(s,e,a):X.mulDivRoundingUp(s,Qe,s.div(e).add(n))}else{let s=n.mul(e);if(!o.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=o.sub(s);return X.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(nn);if(i)return e.add(o.div(t));{let s=X.mulDivRoundingUp(o,Qe,t);if(!e.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountBRoundingDown sqrtPriceX64 must gt amountDivLiquidity");return e.sub(s)}}static getSqrtPriceX64FromTick(e){if(!Number.isInteger(e))throw new Error("tick must be integer");if(e<xe||e>Ke)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new H("18445821805675395072"):new H("18446744073709551616");return(t&2)!=0&&(n=ge(n,new H("18444899583751176192"))),(t&4)!=0&&(n=ge(n,new H("18443055278223355904"))),(t&8)!=0&&(n=ge(n,new H("18439367220385607680"))),(t&16)!=0&&(n=ge(n,new H("18431993317065453568"))),(t&32)!=0&&(n=ge(n,new H("18417254355718170624"))),(t&64)!=0&&(n=ge(n,new H("18387811781193609216"))),(t&128)!=0&&(n=ge(n,new H("18329067761203558400"))),(t&256)!=0&&(n=ge(n,new H("18212142134806163456"))),(t&512)!=0&&(n=ge(n,new H("17980523815641700352"))),(t&1024)!=0&&(n=ge(n,new H("17526086738831433728"))),(t&2048)!=0&&(n=ge(n,new H("16651378430235570176"))),(t&4096)!=0&&(n=ge(n,new H("15030750278694412288"))),(t&8192)!=0&&(n=ge(n,new H("12247334978884435968"))),(t&16384)!=0&&(n=ge(n,new H("8131365268886854656"))),(t&32768)!=0&&(n=ge(n,new H("3584323654725218816"))),(t&65536)!=0&&(n=ge(n,new H("696457651848324352"))),(t&131072)!=0&&(n=ge(n,new H("26294789957507116"))),(t&262144)!=0&&(n=ge(n,new H("37481735321082"))),e>0&&(n=Hi.div(n)),n}static getTickFromPrice(e,t,n){return z.getTickFromSqrtPriceX64(z.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(_t)||e.lt(Mt))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new H(t-64),i=Fa(n,32,128),o=new H("8000000000000000","hex"),s=0,a=new H(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new H(0))&&s<Yi;){u=u.mul(u);let g=u.shrn(127);u=u.shrn(63+g.toNumber()),a=a.add(o.mul(g)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=i.add(c).mul(new H(ji)),d=Br(m.sub(new H(Qi)),64,128).toNumber(),p=Br(m.add(new H(Zi)),64,128).toNumber();return d==p?d:z.getSqrtPriceX64FromTick(p).lte(e)?p:d}},Pt=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=z.getTickFromSqrtPriceX64(z.priceToSqrtPriceX64(e,n,i))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,i){let o=Pt.getTickWithPriceAndTickspacing(e,t,n,i),s=z.getSqrtPriceX64FromTick(o);return z.sqrtPriceX64ToPrice(s,n,i)}},J=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(pe))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(nn),s=t.sub(e);return i?X.mulDivRoundingUp(X.mulDivCeil(o,s,t),Qe,e):X.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(pe))throw new Error("sqrtPriceX64A must greater than 0");return i?X.mulDivCeil(n,t.sub(e),ve):X.mulDivFloor(n,t.sub(e),ve)}static getLiquidityFromTokenAmountA(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return i?X.mulDivRoundingUp(a,Qe,Pr):a.shrn(nn)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),X.mulDivFloor(n,Pr,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return J.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=J.getLiquidityFromTokenAmountA(e,n,i,!1),a=J.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return J.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:J.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new H(0)};if(e.lt(n)){let s=J.getTokenAmountAFromLiquidity(e,n,i,o),a=J.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new H(0),amountB:J.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:u,amountB:c}=J.getAmountsFromLiquidity(e,t,n,i,s),l=o?1+a:1-a,m=new H(new N(u.toString()).mul(l).toFixed(0)),d=new H(new N(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:i,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var k,h,P,A;let c=z.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),l=z.getSqrtPriceX64FromTick(t),m=z.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,p=J.getAmountsFromLiquidity(c,l,m,i,s),[g,f]=[be(p.amountA,(k=e.mintA.extensions)==null?void 0:k.feeConfig,a,u),be(p.amountB,(h=e.mintB.extensions)==null?void 0:h.feeConfig,a,u)],[y,w]=[be(new H(new N(p.amountA.toString()).mul(d).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,u),be(new H(new N(p.amountB.toString()).mul(d).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)];return{liquidity:i,amountA:g,amountB:f,amountSlippageA:y,amountSlippageB:w,expirationTime:gt(g.expirationTime,f.expirationTime)}}},Tt=class{static swapCompute(e,t,n,i,o,s,a,u,c,l,m,d,p,g){if(d.eq(pe))throw new Error("amountSpecified must not be 0");if(g||(g=s?Mt.add(Qe):_t.sub(Qe)),s){if(g.lt(Mt))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(g.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(g.gt(_t))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(g.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let f=d.gt(pe),y={amountSpecifiedRemaining:d,amountCalculated:pe,sqrtPriceX64:m,tick:c>p?Math.min(p+Q.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new H(0)},w=p,k=n[p],h=0,P=!s&&k.startTickIndex===y.tick;for(;!y.amountSpecifiedRemaining.eq(pe)&&!y.sqrtPriceX64.eq(g);){if(h>10)throw Error("liquidity limit");let A={};A.sqrtPriceStartX64=y.sqrtPriceX64;let K=M.nextInitTick(k,y.tick,l,s,P),S=K||null,B=null;if(!(S!=null&&S.liquidityGross.gtn(0))){let O=Be.nextInitializedTickArrayStartIndex({tickCurrent:y.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},w,s);if(!O.isExist)throw Error("swapCompute LiquidityInsufficient");w=O.nextStartIndex;let{publicKey:U}=se(e,t,w);B=U,k=n[w],S=M.firstInitializedTick(k,s)}A.tickNext=S.tick,A.initialized=S.liquidityGross.gtn(0),p!==w&&B&&(y.accounts.push(B),p=w),A.tickNext<xe?A.tickNext=xe:A.tickNext>Ke&&(A.tickNext=Ke),A.sqrtPriceNextX64=z.getSqrtPriceX64FromTick(A.tickNext);let _;if(s&&A.sqrtPriceNextX64.lt(g)||!s&&A.sqrtPriceNextX64.gt(g)?_=g:_=A.sqrtPriceNextX64,[y.sqrtPriceX64,A.amountIn,A.amountOut,A.feeAmount]=Tt.swapStepCompute(y.sqrtPriceX64,_,y.liquidity,y.amountSpecifiedRemaining,a),y.feeAmount=y.feeAmount.add(A.feeAmount),f?(y.amountSpecifiedRemaining=y.amountSpecifiedRemaining.sub(A.amountIn.add(A.feeAmount)),y.amountCalculated=y.amountCalculated.sub(A.amountOut)):(y.amountSpecifiedRemaining=y.amountSpecifiedRemaining.add(A.amountOut),y.amountCalculated=y.amountCalculated.add(A.amountIn.add(A.feeAmount))),y.sqrtPriceX64.eq(A.sqrtPriceNextX64)){if(A.initialized){let O=S.liquidityNet;s&&(O=O.mul(Je)),y.liquidity=J.addDelta(y.liquidity,O)}P=A.tickNext!=y.tick&&!s&&k.startTickIndex===A.tickNext,y.tick=s?A.tickNext-1:A.tickNext}else if(y.sqrtPriceX64!=A.sqrtPriceStartX64){let O=z.getTickFromSqrtPriceX64(y.sqrtPriceX64);P=O!=y.tick&&!s&&k.startTickIndex===O,y.tick=O}++h}try{let{nextStartIndex:A,isExist:K}=Q.nextInitializedTickArray(y.tick,l,s,i,o);K&&p!==A&&(y.accounts.push(se(e,t,A).publicKey),p=A)}catch{}return{amountCalculated:y.amountCalculated,feeAmount:y.feeAmount,sqrtPriceX64:y.sqrtPriceX64,liquidity:y.liquidity,tickCurrent:y.tick,accounts:y.accounts}}static swapStepCompute(e,t,n,i,o){let s={sqrtPriceX64Next:new H(0),amountIn:new H(0),amountOut:new H(0),feeAmount:new H(0)},a=e.gte(t),u=i.gte(pe);if(u){let l=X.mulDivFloor(i,En.sub(new H(o.toString())),En);s.amountIn=a?J.getTokenAmountAFromLiquidity(t,e,n,!0):J.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=z.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?J.getTokenAmountBFromLiquidity(t,e,n,!1):J.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(Je).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=z.getNextSqrtPriceX64FromOutput(e,n,i.mul(Je),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=J.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=J.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:J.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:J.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(i.mul(Je))&&(s.amountOut=i.mul(Je)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=i.sub(s.amountIn):s.feeAmount=X.mulDivCeil(s.amountIn,new H(o),En.sub(new H(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var ye=60,At=512,M=class{static getTickArrayAddressByTick(e,t,n,i){let o=M.getTickArrayStartIndexByTick(n,i),{publicKey:s}=se(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=M.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=ye)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=Q.tickCount(t),i=e/n;return e<0&&e%n!=0?i=Math.ceil(i)-1:i=Math.floor(i),i}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*Q.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*ye,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*ye,o=Math.floor(t/i)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*i}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*ye:e+t*ye}static mergeTickArrayBitmap(e){let t=new Va(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,i,o){let s=Math.floor(i/(n*ye));return[...M.searchLowBitFromStart(e,t,s-1,o,n),...M.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return M.searchHightBitFromStart(e,t,0,At,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=M.getAllInitializedTickArrayStartIndex(n,i,o);for(let u of a){let{publicKey:c}=se(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>M.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n--,a.length===i)break}let u=Q.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>M.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n++,a.length===i)break}let u=Q.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<xe||e>Ke}static nextInitTick(e,t,n,i,o){if(Q.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(i)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<ye;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=ye-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<ye;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let i=z.getSqrtPriceX64FromTick(t),o=z.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new N(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new N(1).div(t),o=Pt.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=z.getSqrtPriceX64FromTick(o),a=z.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new N(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=z.getSqrtPriceX64FromTick(t),o=z.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new N(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new N(1).div(t),o=Pt.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=z.getSqrtPriceX64FromTick(o),a=z.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new N(1).div(a)}}};var zf=R([Pe(8),F("bump"),Nt("index"),I(""),Me("protocolFeeRate"),Me("tradeFeeRate"),Nt("tickSpacing"),W(b(),8,"")]),Oa=R([Me("blockTimestamp"),V("sqrtPriceX64"),V("cumulativeTimePriceX64"),W(V(),1,"")]),Ir=R([Pe(8),Re("initialized"),I("poolId"),W(Oa,1e3,"observations"),W(V(),5,"")]),Da=R([F("rewardState"),b("openTime"),b("endTime"),b("lastUpdateTime"),V("emissionsPerSecondX64"),b("rewardTotalEmissioned"),b("rewardClaimed"),I("tokenMint"),I("tokenVault"),I("creator"),V("rewardGrowthGlobalX64")]),Ji=R([Pe(8),F("bump"),I("ammConfig"),I("creator"),I("mintA"),I("mintB"),I("vaultA"),I("vaultB"),I("observationId"),F("mintDecimalsA"),F("mintDecimalsB"),Nt("tickSpacing"),V("liquidity"),V("sqrtPriceX64"),he("tickCurrent"),Nt("observationIndex"),Nt("observationUpdateDuration"),V("feeGrowthGlobalX64A"),V("feeGrowthGlobalX64B"),b("protocolFeesTokenA"),b("protocolFeesTokenB"),V("swapInAmountTokenA"),V("swapOutAmountTokenB"),V("swapInAmountTokenB"),V("swapOutAmountTokenA"),F("status"),W(F(),7,""),W(Da,3,"rewardInfos"),W(b(),16,"tickArrayBitmap"),b("totalFeesTokenA"),b("totalFeesClaimedTokenA"),b("totalFeesTokenB"),b("totalFeesClaimedTokenB"),b("fundFeesTokenA"),b("fundFeesTokenB"),b("startTime"),W(b(),15*4-3,"padding")]),Wa=R([V("growthInsideLastX64"),b("rewardAmountOwed")]),eo=R([Pe(8),F("bump"),I("nftMint"),I("poolId"),he("tickLower"),he("tickUpper"),V("liquidity"),V("feeGrowthInsideLastX64A"),V("feeGrowthInsideLastX64B"),b("tokenFeesOwedA"),b("tokenFeesOwedB"),W(Wa,3,"rewardInfos"),W(b(),8,"")]),Hf=R([Pe(8),F("bump"),I("poolId"),he("tickLowerIndex"),he("tickUpperIndex"),V("liquidity"),V("feeGrowthInsideLastX64A"),V("feeGrowthInsideLastX64B"),b("tokenFeesOwedA"),b("tokenFeesOwedB"),W(V(),3,"rewardGrowthInside"),W(b(),8,"")]),qa=R([he("tick"),gi("liquidityNet"),V("liquidityGross"),V("feeGrowthOutsideX64A"),V("feeGrowthOutsideX64B"),W(V(),3,"rewardGrowthsOutsideX64"),W(Me(),13,"")]),rn=R([Pe(8),I("poolId"),he("startTickIndex"),W(qa,ye,"ticks"),F("initializedTickCount"),W(F(),115,"")]),Yf=R([Pe(329),W(I(),100,"whitelistMints")]),to=R([Pe(8),I("poolId"),W(W(b(),8),xr,"positiveTickArrayBitmap"),W(W(b(),8),xr,"negativeTickArrayBitmap")]);import{PublicKey as Ha,Keypair as Ya}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ja}from"@solana/spl-token";import bb from"bn.js";var no=R([I("mint"),I("owner"),b("amount"),Me("delegateOption"),I("delegate"),F("state"),Me("isNativeOption"),b("isNative"),b("delegatedAmount"),Me("closeAuthorityOption"),I("closeAuthority")]);function Ga(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function Sr(r,...e){if(!Ga(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${r.length}`)}function Kr(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function ro(r,e){Sr(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var _n=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),We=(r,e)=>r<<32-e|r>>>e;var eb=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Ua(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Lr(r){return typeof r=="string"&&(r=Ua(r)),Sr(r),r}var Mn=class{clone(){return this._cloneInto()}},tb={}.toString;function io(r){let e=n=>r().update(Lr(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function Xa(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let i=BigInt(32),o=BigInt(4294967295),s=Number(t>>i&o),a=Number(t&o),u=n?4:0,c=n?0:4;r.setUint32(e+u,s,n),r.setUint32(e+c,a,n)}var oo=(r,e,t)=>r&e^~r&t,so=(r,e,t)=>r&e^r&t^e&t,vn=class extends Mn{constructor(e,t,n,i){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=_n(this.buffer)}update(e){Kr(this);let{view:t,buffer:n,blockLen:i}=this;e=Lr(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(i-this.pos,o-s);if(a===i){let u=_n(e);for(;i<=o-s;s+=i)this.process(u,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===i&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Kr(this),ro(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:i,isLE:o}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>i-s&&(this.process(n,0),s=0);for(let m=s;m<i;m++)t[m]=0;Xa(n,i-8,BigInt(this.length*8),o),this.process(n,0);let a=_n(e),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let c=u/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<c;m++)a.setUint32(4*m,l[m],o)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:i,finished:o,destroyed:s,pos:a}=this;return e.length=i,e.pos=a,e.finished=o,e.destroyed=s,i%t&&e.buffer.set(n),e}};var za=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),mt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),dt=new Uint32Array(64),Nr=class extends vn{constructor(){super(64,32,8,!1),this.A=mt[0]|0,this.B=mt[1]|0,this.C=mt[2]|0,this.D=mt[3]|0,this.E=mt[4]|0,this.F=mt[5]|0,this.G=mt[6]|0,this.H=mt[7]|0}get(){let{A:e,B:t,C:n,D:i,E:o,F:s,G:a,H:u}=this;return[e,t,n,i,o,s,a,u]}set(e,t,n,i,o,s,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=i|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)dt[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=dt[m-15],p=dt[m-2],g=We(d,7)^We(d,18)^d>>>3,f=We(p,17)^We(p,19)^p>>>10;dt[m]=f+dt[m-7]+g+dt[m-16]|0}let{A:n,B:i,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let d=We(a,6)^We(a,11)^We(a,25),p=l+d+oo(a,u,c)+za[m]+dt[m]|0,f=(We(n,2)^We(n,13)^We(n,22))+so(n,i,o)|0;l=c,c=u,u=a,a=s+p|0,s=o,o=i,i=n,n=p+f|0}n=n+this.A|0,i=i+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,i,o,s,a,u,c,l)}roundClean(){dt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var ao=io(()=>new Nr);var hb=ie("Raydium_Util");function uo({fromPublicKey:r,programId:e=ja}){let t=Ya.generate().publicKey.toBase58().slice(0,32);return{publicKey:Qa(r,t,e),seed:t}}function Qa(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=ao(n);return new Ha(i)}var mo=ie("Raydium_Clmm"),Ge={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],closePosition:[123,134,81,0,49,68,98,98],increaseLiquidity:[133,29,89,223,69,238,176,10],decreaseLiquidity:[58,127,188,62,79,82,196,96],swap:[43,4,237,11,26,201,30,98],collectReward:[18,237,166,197,34,16,213,144]},Fn=class{static createPoolInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g){let f=R([V("sqrtPriceX64"),b("startTime")]),y=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:vt.programId,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1}],w=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:g},w);let k=Buffer.from([...Ge.createPool,...w]);return new qe({keys:y,programId:e,data:k})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:i,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=uo({fromPublicKey:i,programId:n}),[d,p]=[new L(o.address),new L(s.address)],g=[vt.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Ir.span),space:Ir.span,programId:n})],{publicKey:f}=Xi(n,a,d,p),{publicKey:y}=Ar(n,f,d),{publicKey:w}=Ar(n,f,p);return g.push(this.createPoolInstruction(n,f,i,a,m.publicKey,d,y,new L(o.programId||ke),p,w,new L(s.programId||ke),Ye(n,f).publicKey,u,c)),{signers:[],instructions:g,instructionTypes:[$.CreateAccount,$.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:y,mintBVault:w},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g,f,y,w,k,h,P,A,K,S,B,_,O){let U=R([he("tickLowerIndex"),he("tickUpperIndex"),he("tickArrayLowerStartIndex"),he("tickArrayUpperStartIndex"),V("liquidity"),b("amountMaxA"),b("amountMaxB"),Re("withMetadata"),F("optionBaseFlag"),Re("baseFlag")]),ue=[...O?[{pubkey:O,isSigner:!1,isWritable:!0}]:[]],ne=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:vt.programId,isSigner:!1,isWritable:!1},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:co,isSigner:!1,isWritable:!1},{pubkey:Lt,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},...ue],oe=Buffer.alloc(U.span);U.encode({tickLowerIndex:k,tickUpperIndex:h,tickArrayLowerStartIndex:P,tickArrayUpperStartIndex:A,liquidity:K,amountMaxA:S,amountMaxB:B,withMetadata:_==="create",baseFlag:!1,optionBaseFlag:0},oe);let j=Buffer.from([...Ge.openPosition,...oe]);return new qe({keys:ne,programId:e,data:j})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new L(e.programId),new L(e.id)],g;if(l)g=new L((await l(1))[0]);else{let B=Rr.generate();m.push(B),g=B.publicKey}let f=M.getTickArrayStartIndexByTick(i,e.config.tickSpacing),y=M.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:w}=se(d,p,f),{publicKey:k}=se(d,p,y),{publicKey:h}=_e(n.wallet,g,ke),{publicKey:P}=Rn(g),{publicKey:A}=He(d,g),{publicKey:K}=kt(d,p,i,o),S=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,g,h,P,K,w,k,A,n.tokenAccountA,n.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(e.mintA.address),new L(e.mintB.address),i,o,f,y,s,a,u,c);return{signers:m,instructions:[S],instructionTypes:[$.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:g,tickArrayLower:w,tickArrayUpper:k,positionNftAccount:h,metadataAccount:P,personalPosition:A,protocolPosition:K}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new L(e.programId),new L(e.id)],g;if(l)g=new L((await l(1))[0]);else{let B=Rr.generate();m.push(B),g=B.publicKey}let f=M.getTickArrayStartIndexByTick(i,e.config.tickSpacing),y=M.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:w}=se(d,p,f),{publicKey:k}=se(d,p,y),{publicKey:h}=_e(n.wallet,g,ke),{publicKey:P}=Rn(g),{publicKey:A}=He(d,g),{publicKey:K}=kt(d,p,i,o),S=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,g,h,P,K,w,k,A,n.tokenAccountA,n.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(e.mintA.address),new L(e.mintB.address),i,o,f,y,c,s,a,u,Be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,y])?Ye(d,p).publicKey:void 0);return{address:{nftMint:g,tickArrayLower:w,tickArrayUpper:k,positionNftAccount:h,metadataAccount:P,personalPosition:A,protocolPosition:K},instructions:[S],signers:m,instructionTypes:[$.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g,f,y,w,k,h,P,A,K,S,B,_,O){let U=R([he("tickLowerIndex"),he("tickUpperIndex"),he("tickArrayLowerStartIndex"),he("tickArrayUpperStartIndex"),V("liquidity"),b("amountMaxA"),b("amountMaxB"),Re("withMetadata"),F("optionBaseFlag"),Re("baseFlag")]),ue=[...O?[{pubkey:O,isSigner:!1,isWritable:!0}]:[]],ne=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:vt.programId,isSigner:!1,isWritable:!1},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:co,isSigner:!1,isWritable:!1},{pubkey:Lt,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},...ue],oe=Buffer.alloc(U.span);U.encode({tickLowerIndex:k,tickUpperIndex:h,tickArrayLowerStartIndex:P,tickArrayUpperStartIndex:A,liquidity:new lo(0),amountMaxA:S==="MintA"?B:_,amountMaxB:S==="MintA"?_:B,withMetadata:K==="create",baseFlag:S==="MintA",optionBaseFlag:1},oe);let j=Buffer.from([...Ge.openPosition,...oe]);return new qe({keys:ne,programId:e,data:j})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,d=[];if(l)m=new L((await l(1))[0]);else{let B=Rr.generate();d.push(B),m=B.publicKey}let[p,g]=[new L(e.programId),new L(e.id)],f=M.getTickArrayStartIndexByTick(i,e.config.tickSpacing),y=M.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:w}=se(p,g,f),{publicKey:k}=se(p,g,y),{publicKey:h}=_e(n.wallet,m,ke),{publicKey:P}=Rn(m),{publicKey:A}=He(p,m),{publicKey:K}=kt(p,g,i,o),S=this.openPositionFromLiquidityInstruction(p,n.wallet,g,n.wallet,m,h,P,K,w,k,A,n.tokenAccountA,n.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(t.mintA.address),new L(t.mintB.address),i,o,f,y,s,a,u,c,Be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,y])?Ye(p,g).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:w,tickArrayUpper:k,positionNftAccount:h,metadataAccount:P,personalPosition:A,protocolPosition:K},instructions:[S],signers:d,instructionTypes:[$.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,o){let s=R([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:vt.programId,isSigner:!1,isWritable:!1},{pubkey:ke,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...Ge.closePosition,...u]);return new qe({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i}){let o=new L(e.programId),{publicKey:s}=_e(n.wallet,i.nftMint,ke),{publicKey:a}=He(o,i.nftMint),u=[];return u.push(this.closePositionInstruction(o,n.wallet,i.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:u,instructionTypes:[$.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g,f,y,w,k){let h=R([V("liquidity"),b("amountMaxA"),b("amountMaxB"),F("optionBaseFlag"),Re("baseFlag")]),P=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[]],A=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...P],K=Buffer.alloc(h.span);h.encode({liquidity:f,amountMaxA:y,amountMaxB:w,optionBaseFlag:0,baseFlag:!1},K);let S=Buffer.from([...Ge.increaseLiquidity,...K]);return new qe({keys:A,programId:e,data:S})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new L(e.programId),new L(e.id)],l=M.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=M.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=se(u,c,l),{publicKey:p}=se(u,c,m),{publicKey:g}=_e(i.wallet,n.nftMint,ke),{publicKey:f}=He(u,n.nftMint),{publicKey:y}=kt(u,c,n.tickLower,n.tickUpper),w=this.increasePositionFromLiquidityInstruction(u,i.wallet,g,f,c,y,d,p,i.tokenAccountA,i.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(e.mintA.address),new L(e.mintB.address),o,s,a,Be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Ye(u,c).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:g,personalPosition:f,protocolPosition:y},signers:[],instructions:[w],instructionTypes:[$.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,base:o,baseAmount:s,otherAmountMax:a}){let[u,c]=[new L(e.programId),new L(e.id)],l=M.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=M.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=se(u,c,l),{publicKey:p}=se(u,c,m),{publicKey:g}=_e(i.wallet,n.nftMint,ke),{publicKey:f}=He(u,n.nftMint),{publicKey:y}=kt(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:g,personalPosition:f,protocolPosition:y},instructions:[this.increasePositionFromBaseInstruction(u,i.wallet,g,f,c,y,d,p,i.tokenAccountA,i.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(e.mintA.address),new L(e.mintB.address),o,s,a,Be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Ye(u,c).publicKey:void 0)],signers:[],instructionTypes:[$.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g,f,y,w,k){let h=R([V("liquidity"),b("amountMaxA"),b("amountMaxB"),F("optionBaseFlag"),Re("baseFlag")]),P=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[]],A=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...P],K=Buffer.alloc(h.span);h.encode({liquidity:new lo(0),amountMaxA:f==="MintA"?y:w,amountMaxB:f==="MintA"?w:y,baseFlag:f==="MintA",optionBaseFlag:1},K);let S=Buffer.from([...Ge.increaseLiquidity,...K]);return new qe({keys:A,programId:e,data:S})}static decreaseLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g,f,y,w,k,h){let P=R([V("liquidity"),b("amountMinA"),b("amountMinB")]),A=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[],...f.map(_=>[{pubkey:_.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:_.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:_.rewardMint,isSigner:!1,isWritable:!1}]).flat()],K=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:yn,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...A],S=Buffer.alloc(P.span);P.encode({liquidity:y,amountMinA:w,amountMinB:k},S);let B=Buffer.from([...Ge.decreaseLiquidity,...S]);return new qe({keys:K,programId:e,data:B})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new L(e.programId),new L(e.id)],m=M.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=M.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=se(c,l,m),{publicKey:g}=se(c,l,d),{publicKey:f}=_e(i.wallet,n.nftMint,u),{publicKey:y}=He(c,n.nftMint),{publicKey:w}=kt(c,l,n.tickLower,n.tickUpper),k=[];for(let P=0;P<e.rewardDefaultInfos.length;P++)k.push({poolRewardVault:new L(t.rewardInfos[P].vault),ownerRewardVault:i.rewardAccounts[P],rewardMint:new L(e.rewardDefaultInfos[P].mint.address)});let h=[];return h.push(this.decreaseLiquidityInstruction(c,i.wallet,f,y,l,w,p,g,i.tokenAccountA,i.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(e.mintA.address),new L(e.mintB.address),k,o,s,a,Be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?Ye(c,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:g,positionNftAccount:f,personalPosition:y,protocolPosition:w},signers:[],instructions:h,instructionTypes:[$.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g,f,y,w){let k=R([b("amount"),b("otherAmountThreshold"),V("sqrtPriceLimitX64"),Re("isBaseInput")]),h=[...w?[{pubkey:w,isSigner:!1,isWritable:!0}]:[],...m.map(S=>({pubkey:S,isSigner:!1,isWritable:!0}))],P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:yn,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...h],A=Buffer.alloc(k.span);k.encode({amount:p,otherAmountThreshold:g,sqrtPriceLimitX64:f,isBaseInput:y},A);let K=Buffer.from([...Ge.swap,...A]);return new qe({keys:P,programId:e,data:K})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:i,inputMint:o,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:u,remainingAccounts:c}){let[l,m]=[new L(e.programId),new L(e.id)],[d,p]=[new L(t.vault.A),new L(t.vault.B)],[g,f]=[new L(e.mintA.address),new L(e.mintB.address)],y=e.mintA.address===o.toString(),w=[this.swapInstruction(l,i.wallet,m,new L(e.config.id),y?i.tokenAccountA:i.tokenAccountB,y?i.tokenAccountB:i.tokenAccountA,y?d:p,y?p:d,y?g:f,y?f:g,c,n,s,a,u,!0,Ye(l,m).publicKey)];return{signers:[],instructions:w,instructionTypes:[$.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,d){let p=R([b("openTime"),b("endTime"),V("emissionsPerSecondX64")]),g=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:vt.programId,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:re(l),endTime:re(m),emissionsPerSecondX64:d},f);let y=Buffer.from([...Ge.initReward,...f]);return new qe({keys:g,programId:e,data:y})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new L(e.programId),new L(e.id)],a=zi(o,s,i.mint).publicKey,u=Tr(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new L(e.config.id),n.tokenAccount,i.programId,i.mint,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[$.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,d){let p=R([F("rewardIndex"),V("emissionsPerSecondX64"),b("openTime"),b("endTime")]),g=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:c,emissionsPerSecondX64:d,openTime:re(l),endTime:re(m)},f);let y=Buffer.from([...Ge.setRewardEmissions,...f]);return new qe({keys:g,programId:e,data:y})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new L(e.programId),new L(e.id)],a,u,c;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===i.mint.toString()&&(a=d,u=new L(t.rewardInfos[d].vault),c=new L(t.rewardInfos[d].mint.address));(a===void 0||u===void 0)&&mo.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Tr(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new L(e.config.id),n.tokenAccount,u,c,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[$.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,o,s,a){let u=R([F("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:yn,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...Ge.collectReward,...l]);return new qe({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[o,s]=[new L(e.programId),new L(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,u=new L(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&mo.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,u,i,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[$.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:i,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new L(e.programId),new L(e.id)],[m,d]=[new L(t.vault.A),new L(t.vault.B)],[p,g]=[new L(e.mintA.address),new L(e.mintB.address)],f=e.mintA.address===i.toString(),y=[this.swapInstruction(c,n.wallet,l,new L(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?d:m,f?m:d,f?p:g,f?g:p,u,m,o,s,a,!1)];return{signers:[],instructions:y,instructionTypes:[$.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as Ja}from"@solana/web3.js";import{PublicKey as Za}from"@solana/web3.js";import po from"bn.js";var fo=new po(25),bo=new po(1e4);var $a=ie("Raydium_liquidity_serum");function yo({programId:r,marketId:e}){let t=[e.toBuffer()],n=0,i;for(;n<100;){try{let o=t.concat(Buffer.from([n]),Buffer.alloc(7));i=Za.createProgramAddressSync(o,r)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:i,nonce:n}}throw $a.logWithError("unable to find a viable program address nonce","params",{programId:r,marketId:e}),new Error("unable to find a viable program address nonce")}import Jb from"bn.js";function Cr({programId:r}){let{publicKey:e}=de([Buffer.from("amm_config_account_seed","utf-8")],r);return e}function xt({name:r,programId:e,marketId:t}){let{publicKey:n}=de([e.toBuffer(),t.toBuffer(),Buffer.from(r,"utf-8")],e);return n}function eu({programId:r,marketId:e}){let{publicKey:t}=de([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function tu({programId:r}){return de([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function go({version:r,marketVersion:e,marketId:t,baseMint:n,quoteMint:i,baseDecimals:o,quoteDecimals:s,programId:a,marketProgramId:u}){let c=xt({name:"amm_associated_seed",programId:a,marketId:t}),l=xt({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:d}=tu({programId:a}),p=xt({name:"coin_vault_associated_seed",programId:a,marketId:t}),g=xt({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=xt({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),y=eu({programId:a,marketId:t}),w=xt({name:"target_associated_seed",programId:a,marketId:t}),k=xt({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:h}=yo({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:i,lpMint:l,baseDecimals:o,quoteDecimals:s,lpDecimals:o,version:r,programId:a,authority:m,nonce:d,baseVault:p,quoteVault:g,lpVault:f,openOrders:y,targetOrders:w,withdrawQueue:k,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:h,lookupTableAccount:Ja.default,configId:Cr({programId:a})}}import{PublicKey as wo}from"@solana/web3.js";var ay=ie("Raydium_farm_config"),uy=new wo("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),cy=new wo("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var Vn={"Standard SPL":0,"Option tokens":1},ho={[hi.toString()]:3,[ki.toString()]:5,[Ai.toString()]:6};var au=R([F("instruction")]),uu=R([F("instruction")]),cu=R([b("rewardState"),b("rewardOpenTime"),b("rewardEndTime"),b("rewardLastUpdateTime"),b("totalReward"),b("totalRewardEmissioned"),b("rewardClaimed"),b("rewardPerSecond"),V("accRewardPerShare"),I("rewardVault"),I("rewardMint"),I("rewardSender"),b("rewardType"),W(b(),15,"padding")]),lu=R([b("state"),b("nonce"),I("lpVault"),I("rewardVault"),I(),I(),b(),b(),b("totalReward"),V("perShareReward"),b("lastSlot"),b("perSlotReward")]),mu=R([b("state"),b("nonce"),I("lpVault"),I("rewardVaultA"),b("totalRewardA"),V("perShareRewardA"),b("perSlotRewardA"),F("option"),I("rewardVaultB"),Pe(7),b("totalRewardB"),V("perShareRewardB"),b("perSlotRewardB"),b("lastSlot"),I()]),du=R([b(),b("state"),b("nonce"),b("validRewardTokenNum"),V("rewardMultiplier"),b("rewardPeriodMax"),b("rewardPeriodMin"),b("rewardPeriodExtend"),I("lpMint"),I("lpVault"),W(cu,5,"rewardInfos"),I("creator"),I(),W(b(),32,"padding")]),nu=new Proxy(lu,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return Y(q({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(r,e,t)}}),ru=new Proxy(mu,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return Y(q({},i),{version:5,rewardInfos:[{rewardVault:i.rewardVaultA,totalReward:i.totalRewardA,perSlotReward:i.perSlotRewardA,perShareReward:i.perShareRewardA},{rewardVault:i.rewardVaultB,totalReward:i.totalRewardB,perSlotReward:i.perSlotRewardB,perShareReward:i.perShareRewardB}]})}:Reflect.get(r,e,t)}}),iu=new Proxy(du,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return Y(q({},i),{version:6,rewardInfos:i.rewardInfos.map(o=>{var s;return Y(q({},o),{rewardType:((s=Object.entries(Vn).find(a=>String(a[1])===o.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),pu=R([b("isSet"),b("rewardPerSecond"),b("rewardOpenTime"),b("rewardEndTime"),b("rewardType")]),fu=R([F("instruction"),b("nonce"),W(pu,5,"rewardTimeInfo")]),bu=R([F("instruction"),b("rewardReopenTime"),b("rewardEndTime"),b("rewardPerSecond")]),yu=R([F("instruction"),b("isSet"),b("rewardPerSecond"),b("rewardOpenTime"),b("rewardEndTime"),b("rewardType")]),yy=R([b("state"),I("id"),I("owner"),b("deposited"),W(b(),1,"rewardDebts")]),ko=R([b("state"),I("id"),I("owner"),b("deposited"),W(V(),1,"rewardDebts"),b(""),b("voteLockedBalance"),W(b(),15)]),gy=R([b("state"),I("id"),I("owner"),b("deposited"),W(b(),2,"rewardDebts")]),ou=R([b("state"),I("id"),I("owner"),b("deposited"),W(V(),2,"rewardDebts"),W(b(),17)]),su=R([b(),b("state"),I("id"),I("owner"),b("deposited"),W(V(),5,"rewardDebts"),W(b(),16)]),Bt=R([F("instruction"),b("amount")]),gu=R([I("mint"),I("grantAuthority"),b("baselineVoteWeightScaledFactor"),b("maxExtraLockupVoteWeightScaledFactor"),b("lockupSaturationSecs"),yi("digitShift"),W(F(),7,"reserved1"),W(b(),7,"reserved2")]),wu=R([Pe(8),I("governanceProgramId"),I("realm"),I("realmGoverningTokenMint"),I("realmAuthority"),W(F(),32,"reserved1"),W(gu,4,"votingMints"),Pn("timeOffset"),F("bump"),W(F(),7,"reserved2"),W(b(),11,"reserved3")]),hu=R([Pn("startTime"),Pn("endTime"),F("kind"),W(F(),15,"reserved")]),ku=R([W(hu,1,"lockup"),b("amountDeposited_native"),b("amountInitiallyLockedNative"),Re("isUsed"),Re("allowClawback"),F("votingMintConfigIdx"),W(F(),29,"reserved")]),Au=R([Pe(8),I("voterAuthority"),I("registrar"),W(ku,32,"deposits"),F("voterBump"),F("voterWweightRecordBump"),W(F(),94,"reserved")]);import xy from"bn.js";var Fy=ie("Raydium.farm.util");function On({programId:r,poolId:e,owner:t,version:n}){let{publicKey:i}=de([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],r);return i}import{PublicKey as Ie,SystemProgram as jy,SYSVAR_RENT_PUBKEY as Qy,SYSVAR_CLOCK_PUBKEY as Ao,TransactionInstruction as Er}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as Jy,TOKEN_PROGRAM_ID as Mr,ASSOCIATED_TOKEN_PROGRAM_ID as eg}from"@solana/spl-token";import ng from"bn.js";var fg=ie("Raydium_farm_instruction"),bg={voterStakeRegistryCreateVoter:Buffer.from([6,24,245,52,243,255,148,25]),voterStakeRegistryCreateDepositEntry:Buffer.from([185,131,167,186,159,125,19,67]),voterStakeRegistryDeposit:Buffer.from([242,35,198,137,82,225,242,182]),voterStakeRegistryWithdraw:Buffer.from([183,18,70,156,148,109,161,34]),voterStakeRegistryUpdateVoterWeightRecord:Buffer.from([45,185,3,36,109,190,115,169])};function To(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new Ie(e.programId),new Ie(e.id)],c=On({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Bt.span);Bt.encode({instruction:2,amount:re(s)},l);let m=[T({pubkey:Mr,isWritable:!1}),T({pubkey:u}),T({pubkey:new Ie(t.authority),isWritable:!1}),T({pubkey:new Ie(t.lpVault)}),T({pubkey:c}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(T({pubkey:new Ie(t.rewardInfos[d].vault)})),m.push(T({pubkey:i[d]}));return new Er({programId:a,keys:m,data:l})}function Po(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new Ie(e.programId),new Ie(e.id)],l=On({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Bt.span);Bt.encode({instruction:12,amount:re(s)},m);let d=[T({pubkey:c}),T({pubkey:new Ie(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new Ie(t.lpVault)}),T({pubkey:i[0]}),T({pubkey:new Ie(t.rewardInfos[0].vault)}),T({pubkey:Ao,isWritable:!1}),T({pubkey:Mr,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(T({pubkey:i[p]})),d.push(T({pubkey:new Ie(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(T({pubkey:p}));return new Er({programId:u,keys:d,data:m})}function xo(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new Ie(e.programId),new Ie(e.id)],l=On({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Bt.span);Bt.encode({instruction:11,amount:re(s)},m);let d=[T({pubkey:c}),T({pubkey:new Ie(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new Ie(t.lpVault)}),T({pubkey:i[0]}),T({pubkey:new Ie(t.rewardInfos[0].vault)}),T({pubkey:Ao,isWritable:!1}),T({pubkey:Mr,isWritable:!1})];if(a)for(let p of a)d.push(T({pubkey:p}));return new Er({programId:u,keys:d,data:m})}import Ce from"bn.js";var _r=class extends Jt{constructor(t){super(t);this.stableLayout=new en({connection:this.scope.connection})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:i,baseIn:o}){let s=new Ce(new N(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),a=wi(t[o?"mintB":"mintA"]),[u,c]=[new Ce(new N(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new Ce(new N(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new Ce(new N(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,N.ROUND_DOWN));this.logDebug("baseReserve:",u.toString(),"quoteReserve:",c.toString()),this.logDebug("tokenIn:",o?t.mintA.symbol:t.mintB.symbol,"amountIn:",s.toString(),"anotherToken:",o?t.mintB.symbol:t.mintA.symbol,"slippage:",`${i.toSignificant()}%`,"baseReserve",u.toString(),"quoteReserve",c.toString());let m=o?"base":"quote";this.logDebug("input side:",m);let d=Gt;s.isZero()||(d=m==="base"?kn(s.mul(c),u):kn(s.mul(u),c)),this.logDebug("amountRaw:",d.toString(),"lpAmount:",l.toString());let p=kn(s.mul(l),m==="base"?u:c);this.logDebug("liquidity:",p.toString());let f=new Xe(new Ce(1)).add(i).mul(d).quotient,y=new le(a,d),w=new le(a,f);return this.logDebug("anotherAmount:",y.toFixed(),"maxAnotherAmount:",w.toFixed()),{anotherAmount:y,maxAnotherAmount:w,liquidity:p}}async getAmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async addLiquidity(t){let{poolInfo:n,amountInA:i,amountInB:o,fixedSide:s,config:a,txVersion:u,computeBudgetConfig:c}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",i,"amountInB:",o),(i.isZero()||o.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:i.toFixed(),amountInB:o.toFixed()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:d}=q({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),[p,g]=[i.token,o.token],f=await l.getCreatedTokenAccount({mint:p.mint,associatedOnly:!1}),y=await l.getCreatedTokenAccount({mint:g.mint,associatedOnly:!1});!f&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let w=await l.getCreatedTokenAccount({mint:new Se(n.lpMint.address)}),k=[p,g],h=[f,y],P=[i.raw,o.raw],A=i.token.mint.toBase58()===n.mintA.address?"base":"quote",K="base";["quote","base"].includes(A)||this.logAndCreateError("invalid fixedSide","fixedSide",s),A==="quote"?(k.reverse(),h.reverse(),P.reverse(),K=s==="a"?"quote":"base"):A==="base"&&(K=s==="a"?"base":"quote");let[S,B]=k,[_,O]=h,[U,ue]=P,ne=await this.getAmmPoolKeys(n.id),oe=this.createTxBuilder(),rt=await l.handleTokenAccount({side:"in",amount:U,mint:S.mint,tokenAccount:_,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:j}=rt,Z=Ee(rt,["tokenAccount"]);oe.addInstruction(Z);let an=await l.handleTokenAccount({side:"in",amount:ue,mint:B.mint,tokenAccount:O,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:nt}=an,Ft=Ee(an,["tokenAccount"]);oe.addInstruction(Ft);let Vt=await l.handleTokenAccount({side:"out",amount:0,mint:new Se(n.lpMint.address),tokenAccount:w,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:Wn}=Vt,qn=Ee(Vt,["tokenAccount"]);return oe.addInstruction(qn),oe.addInstruction({instructions:[Oi({poolInfo:n,poolKeys:ne,userKeys:{baseTokenAccount:j,quoteTokenAccount:nt,lpTokenAccount:Wn,owner:this.scope.ownerPubKey},baseAmountIn:U,quoteAmountIn:ue,fixedSide:K})],instructionTypes:[n.pooltype.includes("StablePool")?$.AmmV5AddLiquidity:$.AmmV4AddLiquidity],lookupTableAddress:ne.lookupTableAccount?[ne.lookupTableAccount]:[]}),oe.addCustomComputeBudget(c),u===0&&await oe.buildV0(),oe.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,amountIn:i,config:o,txVersion:s,computeBudgetConfig:a}=t,u=await this.getAmmPoolKeys(n.id),[c,l,m]=[new Se(n.mintA.address),new Se(n.mintB.address),new Se(n.lpMint.address)];this.logDebug("amountIn:",i),i.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",i.toString());let{account:d}=this.scope,p=await d.getCreatedTokenAccount({mint:m,associatedOnly:!1});p||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",d.tokenAccounts);let g=await d.getCreatedTokenAccount({mint:c}),f=await d.getCreatedTokenAccount({mint:l}),y=this.createTxBuilder(),{bypassAssociatedCheck:w,checkCreateATAOwner:k}=q({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),S=await d.handleTokenAccount({side:"out",amount:0,mint:c,tokenAccount:g,bypassAssociatedCheck:w,checkCreateATAOwner:k}),{tokenAccount:h}=S,P=Ee(S,["tokenAccount"]);y.addInstruction(P);let B=await d.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:w,checkCreateATAOwner:k}),{tokenAccount:A}=B,K=Ee(B,["tokenAccount"]);return y.addInstruction(K),y.addInstruction({instructions:[wr({poolInfo:n,poolKeys:u,userKeys:{lpTokenAccount:p,baseTokenAccount:h,quoteTokenAccount:A,owner:this.scope.ownerPubKey},amountIn:i})],lookupTableAddress:u.lookupTableAccount?[u.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?$.AmmV5RemoveLiquidity:$.AmmV4RemoveLiquidity]}),y.addCustomComputeBudget(a),s===0?await y.buildV0():y.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:i,createPositionInfo:o,farmInfo:s,userFarmLpAmount:a,base:u,computeBudgetConfig:c,payer:l,tokenProgram:m=Dn,checkCreateATAOwner:d=!0,getEphemeralSigners:p,txVersion:g}){if((this.scope.availability.removeStandardPosition===!1||this.scope.availability.createConcentratedPosition===!1)&&this.logAndCreateError("remove liquidity or create position feature disabled in your region"),!(t.mintA.address===n.mintA.address||t.mintA.address===n.mintB.address)||!(t.mintB.address===n.mintA.address||t.mintB.address===n.mintB.address))throw Error("mint check error");let f=this.createTxBuilder();f.addCustomComputeBudget(c);let y={};for(let j of this.scope.account.tokenAccountRawInfos)(y[j.accountInfo.mint.toString()]===void 0||_e(this.scope.ownerPubKey,j.accountInfo.mint,Dn).publicKey.equals(j.pubkey))&&(y[j.accountInfo.mint.toString()]=j.pubkey);let w=y[t.lpMint.address];if(w===void 0)throw Error("find lp account error in trade accounts");let k=i.add(a!=null?a:new Ce(0)),h=t.mintA.address===Te.WSOL.mint.toString(),P=t.mintB.address===Te.WSOL.mint.toString(),{account:A,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Dn,mint:new Se(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:h?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:!0,checkCreateATAOwner:d});if(f.addInstruction(K||{}),A===void 0)throw new Error("base token account not found");let{account:S,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Dn,mint:new Se(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:P?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:!0,checkCreateATAOwner:d});if(f.addInstruction(B||{}),S===void 0)throw new Error("quote token account not found");if(y[t.mintA.address]=A,y[t.mintB.address]=S,s!==void 0&&!(a!=null&&a.isZero())){let j=[];for(let rt of s.rewardInfos){let an=rt.mint.address===Te.WSOL.mint.toString();if(y[rt.mint.address])j.push(y[rt.mint.address]);else{let{account:Vt,instructionParams:vr}=await this.scope.account.getOrCreateTokenAccount({mint:new Se(rt.mint.address),tokenProgram:m,owner:this.scope.ownerPubKey,skipCloseAccount:!an,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:d});Vt||this.logAndCreateError("farm reward account not found:",rt.mint.address),vr&&f.addInstruction(vr),j.push(Vt)}}let Z=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],nt={amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:Z,lpAccount:w,rewardAccounts:j},Ft=ho[s.programId],Wn=Ft===6?To(nt):Ft===5?Po(nt):xo(nt),qn={3:$.FarmV3Withdraw,5:$.FarmV5Withdraw,6:$.FarmV6Withdraw};f.addInstruction({instructions:[Wn],instructionTypes:[qn[Ft]]})}let _=await this.getAmmPoolKeys(t.id),O=wr({poolInfo:t,poolKeys:_,userKeys:{lpTokenAccount:w,baseTokenAccount:A,quoteTokenAccount:S,owner:this.scope.ownerPubKey},amountIn:k});f.addInstruction({instructions:[O],instructionTypes:[t.pooltype.includes("StablePool")?$.AmmV5RemoveLiquidity:$.AmmV4RemoveLiquidity],lookupTableAddress:_.lookupTableAccount?[_.lookupTableAccount]:[]});let[U,ue]=t.mintA.address===n.mintA.address?[A,S]:[S,A],ne=await this.scope.clmm.getClmmPoolKeys(t.id),oe=await Fn.openPositionFromBaseInstructions(Y(q({poolInfo:n,poolKeys:ne,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:U,tokenAccountB:ue},withMetadata:"create"},o),{base:u,getEphemeralSigners:p}));return f.addInstruction({instructions:[...oe.instructions],signers:oe.signers,instructionTypes:[...oe.instructionTypes],lookupTableAddress:ne.lookupTableAccount?[ne.lookupTableAccount]:[]}),g===0?f.sizeCheckBuildV0():f.sizeCheckBuild()}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:i,quoteMintInfo:o,baseAmount:s,quoteAmount:a,startTime:u,ownerInfo:c,associatedOnly:l=!1,checkCreateATAOwner:m=!1,tokenProgram:d,txVersion:p,feeDestinationId:g,computeBudgetConfig:f}){var ue;let y=c.feePayer||((ue=this.scope.owner)==null?void 0:ue.publicKey),w=c.useSOLBalance&&i.mint.equals(Bo),k=c.useSOLBalance&&o.mint.equals(Bo),h=this.createTxBuilder(),{account:P,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({mint:i.mint,owner:this.scope.ownerPubKey,createInfo:w?{payer:y,amount:s}:void 0,notUseTokenAccount:w,skipCloseAccount:!w,associatedOnly:w?!1:l,checkCreateATAOwner:m});h.addInstruction(A||{});let{account:K,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({mint:o.mint,owner:this.scope.ownerPubKey,createInfo:k?{payer:y,amount:a}:void 0,notUseTokenAccount:k,skipCloseAccount:!k,associatedOnly:k?!1:l,checkCreateATAOwner:m});if(h.addInstruction(S||{}),P===void 0||K===void 0)throw Error("you don't has some token account");let B=go({version:4,marketVersion:3,marketId:n.marketId,baseMint:i.mint,quoteMint:o.mint,baseDecimals:i.decimals,quoteDecimals:o.decimals,programId:t,marketProgramId:n.programId}),_={programId:t,ammId:B.id,ammAuthority:B.authority,ammOpenOrders:B.openOrders,lpMint:B.lpMint,coinMint:B.baseMint,pcMint:B.quoteMint,coinVault:B.baseVault,pcVault:B.quoteVault,withdrawQueue:B.withdrawQueue,ammTargetOrders:B.targetOrders,poolTempLp:B.lpVault,marketProgramId:B.marketProgramId,marketId:B.marketId,ammConfigId:B.configId,feeDestinationId:g},{instruction:O,instructionType:U}=Di(Y(q({},_),{userWallet:this.scope.ownerPubKey,userCoinVault:P,userPcVault:K,userLpVault:_e(this.scope.ownerPubKey,B.lpMint,d).publicKey,nonce:B.nonce,openTime:u,coinAmount:s,pcAmount:a}));return h.addInstruction({instructions:[O],instructionTypes:[U]}),h.addCustomComputeBudget(f),h.versionBuild({txVersion:p,extInfo:{address:_}})}async getCreatePoolFee({programId:t}){let n=Cr({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return Ri.decode(i.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:i,mintOut:o,slippage:s}){if(i!==t.mintA.address&&i!==t.mintB.address)throw new Error("toke not match");if(o!==t.mintA.address&&o!==t.mintB.address)throw new Error("toke not match");let{baseReserve:a,quoteReserve:u}=t,c=[a,u],l=i==t.mintA.address?"base":"quote";l==="quote"&&c.reverse();let[m,d]=c,p=t.programId===Ti.toBase58(),g;if(p)g=new N(d.toString()).div(m.toString());else{let B=vi(this.stableLayout.stableModelData,a.toNumber(),u.toNumber(),!1);l==="quote"?g=new N(1e6).div(B*1e6):g=new N(B*1e6).div(1e6)}let f=n,y=new Ce(0),w=new Ce(0);if(!f.isZero())if(p){w=Ht(f.mul(fo),bo);let B=f.sub(w),_=m.add(B);y=d.mul(B).div(_)}else{w=f.mul(new Ce(2)).div(new Ce(1e4));let B=f.sub(w);l==="quote"?y=new Ce(Mi(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),B.toNumber())):y=new Ce(_i(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),B.toNumber()))}let k=new Ce(new N(y.toString()).mul(1-s).toFixed(0)),h=y,P=k,A=new N(y.toString()).div(new N(f.sub(w).toString()).toFixed(0));!f.isZero()&&!y.isZero()&&(A=new N(y.toString()).div(f.sub(w).toString()));let K=g.sub(A).div(g).mul(100);return{amountOut:h,minAmountOut:P,currentPrice:g,executionPrice:A,priceImpact:K,fee:w}}async swap({poolInfo:t,amountIn:n,amountOut:i,inputMint:o,fixedSide:s,txVersion:a,computeBudgetConfig:u}){let c=this.createTxBuilder(),[l,m]=o===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],d=await this.scope.account.getCreatedTokenAccount({mint:new Se(l.address),programId:new Se(l.programId),associatedOnly:!1}),p=await this.scope.account.getCreatedTokenAccount({mint:new Se(m.address),programId:new Se(m.programId),associatedOnly:!1}),P=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new Se(l.address),tokenAccount:d,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:g}=P,f=Ee(P,["tokenAccount"]);c.addInstruction(f);let A=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new Se(m.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=A,w=Ee(A,["tokenAccount"]);c.addInstruction(w);let k=await this.getAmmPoolKeys(t.id),h=4;return t.pooltype.includes("StablePool")&&(h=5),c.addInstruction({instructions:[Wi({version:h,poolKeys:k,userKeys:{tokenAccountIn:g,tokenAccountOut:y,owner:this.scope.ownerPubKey},amountIn:n,amountOut:i,fixedSide:s})],instructionTypes:[h===4?$.AmmV4SwapBaseIn:$.AmmV5SwapBaseIn]}),c.addCustomComputeBudget(u),c.versionBuild({txVersion:a})}async getRpcPoolInfo(t){return(await this.getRpcPoolInfos([t]))[t]}async getRpcPoolInfos(t){let n=await this.scope.connection.getMultipleAccountsInfo(t.map(c=>new Se(c))),i={},o=[];for(let c=0;c<t.length;c++){let l=n[c];if(l===null)throw Error("fetch pool info error: "+String(t[c]));let m=Ni.decode(l.data);i[String(t[c])]=m,o.push(m.baseVault,m.quoteVault)}let s={},a=await this.scope.connection.getMultipleAccountsInfo(o.map(c=>new Se(c)));for(let c=0;c<o.length;c++){let l=a[c];if(l===null)throw Error("fetch vault info error: "+o[c]);s[String(o[c])]=new Ce(Tu.decode(l.data).amount.toString())}let u={};for(let[c,l]of Object.entries(i)){let m=s[l.baseVault.toString()].sub(l.baseNeedTakePnl),d=s[l.quoteVault.toString()].sub(l.quoteNeedTakePnl);u[c]=Y(q({},l),{baseReserve:m,quoteReserve:d,poolPrice:new N(d.toString()).div(new N(10).pow(l.baseDecimal.toString())).div(new N(m.toString()).div(new N(10).pow(l.quoteDecimal.toString())))})}return u}};export{_r as default};
|
|
1
|
+
var Io=Object.defineProperty,So=Object.defineProperties;var Ko=Object.getOwnPropertyDescriptors;var un=Object.getOwnPropertySymbols;var Vr=Object.prototype.hasOwnProperty,Or=Object.prototype.propertyIsEnumerable;var Fr=(r,e,t)=>e in r?Io(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,q=(r,e)=>{for(var t in e||(e={}))Vr.call(e,t)&&Fr(r,t,e[t]);if(un)for(var t of un(e))Or.call(e,t)&&Fr(r,t,e[t]);return r},Y=(r,e)=>So(r,Ko(e));var Ee=(r,e)=>{var t={};for(var n in r)Vr.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&un)for(var n of un(r))e.indexOf(n)<0&&Or.call(r,n)&&(t[n]=r[n]);return t};import{PublicKey as Se}from"@solana/web3.js";import{AccountLayout as Tu,NATIVE_MINT as Bo,TOKEN_PROGRAM_ID as Dn}from"@solana/spl-token";import Ws from"big.js";import An from"bn.js";import Ne from"bn.js";var It=9e15,at=1e9,Gn="0123456789abcdef",ln="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",mn="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Un={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-It,maxE:It,crypto:!1},Gr,$e,G=!0,pn="[DecimalError] ",st=pn+"Invalid argument: ",Ur=pn+"Precision limit exceeded",Xr=pn+"crypto unavailable",zr="[object Decimal]",Ae=Math.floor,fe=Math.pow,Lo=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,No=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Ro=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Hr=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Oe=1e7,D=7,Co=9007199254740991,Eo=ln.length-1,Xn=mn.length-1,x={toStringTag:zr};x.absoluteValue=x.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),v(r)};x.ceil=function(){return v(new this.constructor(this),this.e+1,2)};x.clampedTo=x.clamp=function(r,e){var t,n=this,i=n.constructor;if(r=new i(r),e=new i(e),!r.s||!e.s)return new i(NaN);if(r.gt(e))throw Error(st+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};x.comparedTo=x.cmp=function(r){var e,t,n,i,o=this,s=o.d,a=(r=new o.constructor(r)).d,u=o.s,c=r.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==r.e)return o.e>r.e^u<0?1:-1;for(n=s.length,i=a.length,e=0,t=n<i?n:i;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===i?0:n>i^u<0?1:-1};x.cosine=x.cos=function(){var r,e,t=this,n=t.constructor;return t.d?t.d[0]?(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+D,n.rounding=1,t=Mo(n,$r(n,t)),n.precision=r,n.rounding=e,v($e==2||$e==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};x.cubeRoot=x.cbrt=function(){var r,e,t,n,i,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(G=!1,o=l.s*fe(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=we(l.d),r=l.e,(o=(r-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=fe(t,1/3),r=Ae((r+1)/3)-(r%3==(r<0?-1:2)),o==1/0?t="5e"+r:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+r),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(r=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=ae(c.plus(l).times(a),c.plus(u),s+2,1),we(a.d).slice(0,s)===(t=we(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(v(a,r+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(v(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return G=!0,v(n,r,m.rounding,e)};x.decimalPlaces=x.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-Ae(this.e/D))*D,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};x.dividedBy=x.div=function(r){return ae(this,new this.constructor(r))};x.dividedToIntegerBy=x.divToInt=function(r){var e=this,t=e.constructor;return v(ae(e,new t(r),0,1,1),t.precision,t.rounding)};x.equals=x.eq=function(r){return this.cmp(r)===0};x.floor=function(){return v(new this.constructor(this),this.e+1,3)};x.greaterThan=x.gt=function(r){return this.cmp(r)>0};x.greaterThanOrEqualTo=x.gte=function(r){var e=this.cmp(r);return e==1||e===0};x.hyperbolicCosine=x.cosh=function(){var r,e,t,n,i,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,i=o.d.length,i<32?(r=Math.ceil(i/3),e=(1/bn(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=St(s,1,o.times(e),new s(1),!0);for(var u,c=r,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return v(o,s.precision=t,s.rounding=n,!0)};x.hyperbolicSine=x.sinh=function(){var r,e,t,n,i=this,o=i.constructor;if(!i.isFinite()||i.isZero())return new o(i);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(i.e,i.sd())+4,o.rounding=1,n=i.d.length,n<3)i=St(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/bn(5,r)),i=St(o,2,i,i,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);r--;)s=i.times(i),i=i.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,v(i,e,t,!0)};x.hyperbolicTangent=x.tanh=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+7,n.rounding=1,ae(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};x.inverseCosine=x.acos=function(){var r,e=this,t=e.constructor,n=e.abs().cmp(1),i=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?Ve(t,i,o):new t(0):new t(NaN):e.isZero()?Ve(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=Ve(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};x.inverseHyperbolicCosine=x.acosh=function(){var r,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(r=n.precision,e=n.rounding,n.precision=r+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,G=!1,t=t.times(t).minus(1).sqrt().plus(t),G=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};x.inverseHyperbolicSine=x.asinh=function(){var r,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,G=!1,t=t.times(t).plus(1).sqrt().plus(t),G=!0,n.precision=r,n.rounding=e,t.ln())};x.inverseHyperbolicTangent=x.atanh=function(){var r,e,t,n,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(r=o.precision,e=o.rounding,n=i.sd(),Math.max(n,r)<2*-i.e-1?v(new o(i),r,e,!0):(o.precision=t=n-i.e,i=ae(i.plus(1),new o(1).minus(i),t+r,1),o.precision=r+4,o.rounding=1,i=i.ln(),o.precision=r,o.rounding=e,i.times(.5))):new o(NaN)};x.inverseSine=x.asin=function(){var r,e,t,n,i=this,o=i.constructor;return i.isZero()?new o(i):(e=i.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(r=Ve(o,t+4,n).times(.5),r.s=i.s,r):new o(NaN):(o.precision=t+6,o.rounding=1,i=i.div(new o(1).minus(i.times(i)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,i.times(2)))};x.inverseTangent=x.atan=function(){var r,e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=Xn)return s=Ve(l,m+4,d).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=Xn)return s=Ve(l,m+4,d).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/D+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(G=!1,e=Math.ceil(a/D),n=1,u=c.times(c),s=new l(c),i=c;r!==-1;)if(i=i.times(u),o=s.minus(i.div(n+=2)),i=i.times(u),s=o.plus(i.div(n+=2)),s.d[e]!==void 0)for(r=e;s.d[r]===o.d[r]&&r--;);return t&&(s=s.times(2<<t-1)),G=!0,v(s,l.precision=m,l.rounding=d,!0)};x.isFinite=function(){return!!this.d};x.isInteger=x.isInt=function(){return!!this.d&&Ae(this.e/D)>this.d.length-2};x.isNaN=function(){return!this.s};x.isNegative=x.isNeg=function(){return this.s<0};x.isPositive=x.isPos=function(){return this.s>0};x.isZero=function(){return!!this.d&&this.d[0]===0};x.lessThan=x.lt=function(r){return this.cmp(r)<0};x.lessThanOrEqualTo=x.lte=function(r){return this.cmp(r)<1};x.logarithm=x.log=function(r){var e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding,p=5;if(r==null)r=new l(10),e=!0;else{if(r=new l(r),t=r.d,r.s<0||!t||!t[0]||r.eq(1))return new l(NaN);e=r.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(i=t[0];i%10===0;)i/=10;o=i!==1}if(G=!1,a=m+p,s=ot(c,a),n=e?dn(l,a+10):ot(r,a),u=ae(s,n,a,1),Ot(u.d,i=m,d))do if(a+=10,s=ot(c,a),n=e?dn(l,a+10):ot(r,a),u=ae(s,n,a,1),!o){+we(u.d).slice(i+1,i+15)+1==1e14&&(u=v(u,m+1,0));break}while(Ot(u.d,i+=10,d));return G=!0,v(u,m,d)};x.minus=x.sub=function(r){var e,t,n,i,o,s,a,u,c,l,m,d,p=this,g=p.constructor;if(r=new g(r),!p.d||!r.d)return!p.s||!r.s?r=new g(NaN):p.d?r.s=-r.s:r=new g(r.d||p.s!==r.s?p:NaN),r;if(p.s!=r.s)return r.s=-r.s,p.plus(r);if(c=p.d,d=r.d,a=g.precision,u=g.rounding,!c[0]||!d[0]){if(d[0])r.s=-r.s;else if(c[0])r=new g(p);else return new g(u===3?-0:0);return G?v(r,a,u):r}if(t=Ae(r.e/D),l=Ae(p.e/D),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=d.length):(e=d,t=l,s=c.length),n=Math.max(Math.ceil(a/D),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=d.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=d[n]){m=c[n]<d[n];break}o=0}for(m&&(e=c,c=d,d=e,r.s=-r.s),s=c.length,n=d.length-s;n>0;--n)c[s++]=0;for(n=d.length;n>o;){if(c[--n]<d[n]){for(i=n;i&&c[--i]===0;)c[i]=Oe-1;--c[i],c[n]+=Oe}c[n]-=d[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(r.d=c,r.e=fn(c,t),G?v(r,a,u):r):new g(u===3?-0:0)};x.modulo=x.mod=function(r){var e,t=this,n=t.constructor;return r=new n(r),!t.d||!r.s||r.d&&!r.d[0]?new n(NaN):!r.d||t.d&&!t.d[0]?v(new n(t),n.precision,n.rounding):(G=!1,n.modulo==9?(e=ae(t,r.abs(),0,3,1),e.s*=r.s):e=ae(t,r,0,n.modulo,1),e=e.times(r),G=!0,t.minus(e))};x.naturalExponential=x.exp=function(){return zn(this)};x.naturalLogarithm=x.ln=function(){return ot(this)};x.negated=x.neg=function(){var r=new this.constructor(this);return r.s=-r.s,v(r)};x.plus=x.add=function(r){var e,t,n,i,o,s,a,u,c,l,m=this,d=m.constructor;if(r=new d(r),!m.d||!r.d)return!m.s||!r.s?r=new d(NaN):m.d||(r=new d(r.d||m.s===r.s?m:NaN)),r;if(m.s!=r.s)return r.s=-r.s,m.minus(r);if(c=m.d,l=r.d,a=d.precision,u=d.rounding,!c[0]||!l[0])return l[0]||(r=new d(m)),G?v(r,a,u):r;if(o=Ae(m.e/D),n=Ae(r.e/D),c=c.slice(),i=o-n,i){for(i<0?(t=c,i=-i,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/D),s=o>s?o+1:s+1,i>s&&(i=s,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(s=c.length,i=l.length,s-i<0&&(i=s,t=l,l=c,c=t),e=0;i;)e=(c[--i]=c[i]+l[i]+e)/Oe|0,c[i]%=Oe;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return r.d=c,r.e=fn(c,n),G?v(r,a,u):r};x.precision=x.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(st+r);return t.d?(e=Yr(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};x.round=function(){var r=this,e=r.constructor;return v(new e(r),r.e+1,e.rounding)};x.sine=x.sin=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+D,n.rounding=1,t=vo(n,$r(n,t)),n.precision=r,n.rounding=e,v($e>2?t.neg():t,r,e,!0)):new n(NaN)};x.squareRoot=x.sqrt=function(){var r,e,t,n,i,o,s=this,a=s.d,u=s.e,c=s.s,l=s.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for(G=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=we(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=Ae((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(o=n,n=o.plus(ae(s,o,t+2,1)).times(.5),we(o.d).slice(0,t)===(e=we(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(v(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(v(n,u+1,1),r=!n.times(n).eq(s));break}return G=!0,v(n,u,l.rounding,r)};x.tangent=x.tan=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+10,n.rounding=1,t=t.sin(),t.s=1,t=ae(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,v($e==2||$e==4?t.neg():t,r,e,!0)):new n(NaN)};x.times=x.mul=function(r){var e,t,n,i,o,s,a,u,c,l=this,m=l.constructor,d=l.d,p=(r=new m(r)).d;if(r.s*=l.s,!d||!d[0]||!p||!p[0])return new m(!r.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?r.s/0:r.s*0);for(t=Ae(l.e/D)+Ae(r.e/D),u=d.length,c=p.length,u<c&&(o=d,d=p,p=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,i=u+n;i>n;)a=o[i]+p[n]*d[i-n-1]+e,o[i--]=a%Oe|0,e=a/Oe|0;o[i]=(o[i]+e)%Oe|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),r.d=o,r.e=fn(o,t),G?v(r,m.precision,m.rounding):r};x.toBinary=function(r,e){return Yn(this,2,r,e)};x.toDecimalPlaces=x.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(Le(r,0,at),e===void 0?e=n.rounding:Le(e,0,8),v(t,r+t.e+1,e))};x.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=Ue(n,!0):(Le(r,0,at),e===void 0?e=i.rounding:Le(e,0,8),n=v(new i(n),r+1,e),t=Ue(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};x.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=Ue(i):(Le(r,0,at),e===void 0?e=o.rounding:Le(e,0,8),n=v(new o(i),r+i.e+1,e),t=Ue(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};x.toFraction=function(r){var e,t,n,i,o,s,a,u,c,l,m,d,p=this,g=p.d,f=p.constructor;if(!g)return new f(p);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=Yr(g)-p.e-1,s=o%D,e.d[0]=fe(10,s<0?D+s:s),r==null)r=o>0?e:c;else{if(a=new f(r),!a.isInt()||a.lt(c))throw Error(st+a);r=a.gt(e)?o>0?e:c:a}for(G=!1,a=new f(we(g)),l=f.precision,f.precision=o=g.length*D*2;m=ae(a,e,0,1,1),i=t.plus(m.times(n)),i.cmp(r)!=1;)t=n,n=i,i=c,c=u.plus(m.times(i)),u=i,i=e,e=a.minus(m.times(i)),a=i;return i=ae(r.minus(t),n,0,1,1),u=u.plus(i.times(c)),t=t.plus(i.times(n)),u.s=c.s=p.s,d=ae(c,n,o,1).minus(p).abs().cmp(ae(u,t,o,1).minus(p).abs())<1?[c,n]:[u,t],f.precision=l,G=!0,d};x.toHexadecimal=x.toHex=function(r,e){return Yn(this,16,r,e)};x.toNearest=function(r,e){var t=this,n=t.constructor;if(t=new n(t),r==null){if(!t.d)return t;r=new n(1),e=n.rounding}else{if(r=new n(r),e===void 0?e=n.rounding:Le(e,0,8),!t.d)return r.s?t:r;if(!r.d)return r.s&&(r.s=t.s),r}return r.d[0]?(G=!1,t=ae(t,r,0,e,1).times(r),G=!0,v(t)):(r.s=t.s,t=r),t};x.toNumber=function(){return+this};x.toOctal=function(r,e){return Yn(this,8,r,e)};x.toPower=x.pow=function(r){var e,t,n,i,o,s,a=this,u=a.constructor,c=+(r=new u(r));if(!a.d||!r.d||!a.d[0]||!r.d[0])return new u(fe(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,r.eq(1))return v(a,n,o);if(e=Ae(r.e/D),e>=r.d.length-1&&(t=c<0?-c:c)<=Co)return i=jr(u,a,t,n),r.s<0?new u(1).div(i):v(i,n,o);if(s=a.s,s<0){if(e<r.d.length-1)return new u(NaN);if((r.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=fe(+a,c),e=t==0||!isFinite(t)?Ae(c*(Math.log("0."+we(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):(G=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),i=zn(r.times(ot(a,n+t)),n),i.d&&(i=v(i,n+5,1),Ot(i.d,n,o)&&(e=n+10,i=v(zn(r.times(ot(a,e+t)),e),e+5,1),+we(i.d).slice(n+1,n+15)+1==1e14&&(i=v(i,n+1,0)))),i.s=s,G=!0,u.rounding=o,v(i,n,o))};x.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=Ue(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(Le(r,1,at),e===void 0?e=i.rounding:Le(e,0,8),n=v(new i(n),r,e),t=Ue(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};x.toSignificantDigits=x.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(Le(r,1,at),e===void 0?e=n.rounding:Le(e,0,8)),v(new n(t),r,e)};x.toString=function(){var r=this,e=r.constructor,t=Ue(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};x.truncated=x.trunc=function(){return v(new this.constructor(this),this.e+1,1)};x.valueOf=x.toJSON=function(){var r=this,e=r.constructor,t=Ue(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function we(r){var e,t,n,i=r.length-1,o="",s=r[0];if(i>0){for(o+=s,e=1;e<i;e++)n=r[e]+"",t=D-n.length,t&&(o+=it(t)),o+=n;s=r[e],n=s+"",t=D-n.length,t&&(o+=it(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Le(r,e,t){if(r!==~~r||r<e||r>t)throw Error(st+r)}function Ot(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=D,i=0):(i=Math.ceil((e+1)/D),e%=D),o=fe(10,D-e),a=r[i]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(r[i+1]/o/100|0)==fe(10,e-2)-1||(a==o/2||a==0)&&(r[i+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(r[i+1]/o/1e3|0)==fe(10,e-3)-1,s}function cn(r,e,t){for(var n,i=[0],o,s=0,a=r.length;s<a;){for(o=i.length;o--;)i[o]*=e;for(i[0]+=Gn.indexOf(r.charAt(s++)),n=0;n<i.length;n++)i[n]>t-1&&(i[n+1]===void 0&&(i[n+1]=0),i[n+1]+=i[n]/t|0,i[n]%=t)}return i.reverse()}function Mo(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/bn(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=St(r,1,e.times(i),new r(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return r.precision-=t,e}var ae=function(){function r(n,i,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*i+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,i,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=i[a]){u=n[a]>i[a]?1:-1;break}return u}function t(n,i,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<i[o]?1:0,n[o]=a*s+n[o]-i[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,i,o,s,a,u){var c,l,m,d,p,g,f,y,w,k,h,P,A,K,S,B,_,O,U,ue,ne=n.constructor,oe=n.s==i.s?1:-1,j=n.d,Z=i.d;if(!j||!j[0]||!Z||!Z[0])return new ne(!n.s||!i.s||(j?Z&&j[0]==Z[0]:!Z)?NaN:j&&j[0]==0||!Z?oe*0:oe/0);for(u?(p=1,l=n.e-i.e):(u=Oe,p=D,l=Ae(n.e/p)-Ae(i.e/p)),U=Z.length,_=j.length,w=new ne(oe),k=w.d=[],m=0;Z[m]==(j[m]||0);m++);if(Z[m]>(j[m]||0)&&l--,o==null?(K=o=ne.precision,s=ne.rounding):a?K=o+(n.e-i.e)+1:K=o,K<0)k.push(1),g=!0;else{if(K=K/p+2|0,m=0,U==1){for(d=0,Z=Z[0],K++;(m<_||d)&&K--;m++)S=d*u+(j[m]||0),k[m]=S/Z|0,d=S%Z|0;g=d||m<_}else{for(d=u/(Z[0]+1)|0,d>1&&(Z=r(Z,d,u),j=r(j,d,u),U=Z.length,_=j.length),B=U,h=j.slice(0,U),P=h.length;P<U;)h[P++]=0;ue=Z.slice(),ue.unshift(0),O=Z[0],Z[1]>=u/2&&++O;do d=0,c=e(Z,h,U,P),c<0?(A=h[0],U!=P&&(A=A*u+(h[1]||0)),d=A/O|0,d>1?(d>=u&&(d=u-1),f=r(Z,d,u),y=f.length,P=h.length,c=e(f,h,y,P),c==1&&(d--,t(f,U<y?ue:Z,y,u))):(d==0&&(c=d=1),f=Z.slice()),y=f.length,y<P&&f.unshift(0),t(h,f,P,u),c==-1&&(P=h.length,c=e(Z,h,U,P),c<1&&(d++,t(h,U<P?ue:Z,P,u))),P=h.length):c===0&&(d++,h=[0]),k[m++]=d,c&&h[0]?h[P++]=j[B]||0:(h=[j[B]],P=1);while((B++<_||h[0]!==void 0)&&K--);g=h[0]!==void 0}k[0]||k.shift()}if(p==1)w.e=l,Gr=g;else{for(m=1,d=k[0];d>=10;d/=10)m++;w.e=m+l*p-1,v(w,a?o+w.e+1:o,s,g)}return w}}();function v(r,e,t,n){var i,o,s,a,u,c,l,m,d,p=r.constructor;e:if(e!=null){if(m=r.d,!m)return r;for(i=1,a=m[0];a>=10;a/=10)i++;if(o=e-i,o<0)o+=D,s=e,l=m[d=0],u=l/fe(10,i-s-1)%10|0;else if(d=Math.ceil((o+1)/D),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=u=0,i=1,o%=D,s=o-D+1}else break e;else{for(l=a=m[d],i=1;a>=10;a/=10)i++;o%=D,s=o-D+i,u=s<0?0:l/fe(10,i-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%fe(10,i-s-1)),c=t<4?(u||n)&&(t==0||t==(r.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/fe(10,i-s):0:m[d-1])%10&1||t==(r.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=r.e+1,m[0]=fe(10,(D-e%D)%D),r.e=-e||0):m[0]=r.e=0,r;if(o==0?(m.length=d,a=1,d--):(m.length=d+1,a=fe(10,D-o),m[d]=s>0?(l/fe(10,i-s)%fe(10,s)|0)*a:0),c)for(;;)if(d==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(r.e++,m[0]==Oe&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=Oe)break;m[d--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return G&&(r.e>p.maxE?(r.d=null,r.e=NaN):r.e<p.minE&&(r.e=0,r.d=[0])),r}function Ue(r,e,t){if(!r.isFinite())return Zr(r);var n,i=r.e,o=we(r.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+it(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+it(-i-1)+o,t&&(n=t-s)>0&&(o+=it(n))):i>=s?(o+=it(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+it(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=it(n))),o}function fn(r,e){var t=r[0];for(e*=D;t>=10;t/=10)e++;return e}function dn(r,e,t){if(e>Eo)throw G=!0,t&&(r.precision=t),Error(Ur);return v(new r(ln),e,1,!0)}function Ve(r,e,t){if(e>Xn)throw Error(Ur);return v(new r(mn),e,t,!0)}function Yr(r){var e=r.length-1,t=e*D+1;if(e=r[e],e){for(;e%10==0;e/=10)t--;for(e=r[0];e>=10;e/=10)t++}return t}function it(r){for(var e="";r--;)e+="0";return e}function jr(r,e,t,n){var i,o=new r(1),s=Math.ceil(n/D+4);for(G=!1;;){if(t%2&&(o=o.times(e),Wr(o.d,s)&&(i=!0)),t=Ae(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),Wr(e.d,s)}return G=!0,o}function Dr(r){return r.d[r.d.length-1]&1}function Qr(r,e,t){for(var n,i=new r(e[0]),o=0;++o<e.length;)if(n=new r(e[o]),n.s)i[t](n)&&(i=n);else{i=n;break}return i}function zn(r,e){var t,n,i,o,s,a,u,c=0,l=0,m=0,d=r.constructor,p=d.rounding,g=d.precision;if(!r.d||!r.d[0]||r.e>17)return new d(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:0/0);for(e==null?(G=!1,u=g):u=e,a=new d(.03125);r.e>-2;)r=r.times(a),m+=5;for(n=Math.log(fe(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new d(1),d.precision=u;;){if(o=v(o.times(r),u,1),t=t.times(++l),a=s.plus(ae(o,t,u,1)),we(a.d).slice(0,u)===we(s.d).slice(0,u)){for(i=m;i--;)s=v(s.times(s),u,1);if(e==null)if(c<3&&Ot(s.d,u-n,p,c))d.precision=u+=10,t=o=a=new d(1),l=0,c++;else return v(s,d.precision=g,p,G=!0);else return d.precision=g,s}s=a}}function ot(r,e){var t,n,i,o,s,a,u,c,l,m,d,p=1,g=10,f=r,y=f.d,w=f.constructor,k=w.rounding,h=w.precision;if(f.s<0||!y||!y[0]||!f.e&&y[0]==1&&y.length==1)return new w(y&&!y[0]?-1/0:f.s!=1?NaN:y?0:f);if(e==null?(G=!1,l=h):l=e,w.precision=l+=g,t=we(y),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(r),t=we(f.d),n=t.charAt(0),p++;o=f.e,n>1?(f=new w("0."+t),o++):f=new w(n+"."+t.slice(1))}else return c=dn(w,l+2,h).times(o+""),f=ot(new w(n+"."+t.slice(1)),l-g).plus(c),w.precision=h,e==null?v(f,h,k,G=!0):f;for(m=f,u=s=f=ae(f.minus(1),f.plus(1),l,1),d=v(f.times(f),l,1),i=3;;){if(s=v(s.times(d),l,1),c=u.plus(ae(s,new w(i),l,1)),we(c.d).slice(0,l)===we(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(dn(w,l+2,h).times(o+""))),u=ae(u,new w(p),l,1),e==null)if(Ot(u.d,l-g,k,a))w.precision=l+=g,c=s=f=ae(m.minus(1),m.plus(1),l,1),d=v(f.times(f),l,1),i=a=1;else return v(u,w.precision=h,k,G=!0);else return w.precision=h,u;u=c,i+=2}}function Zr(r){return String(r.s*r.s/0)}function Hn(r,e){var t,n,i;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(i=e.length;e.charCodeAt(i-1)===48;--i);if(e=e.slice(n,i),e){if(i-=n,r.e=t=t-n-1,r.d=[],n=(t+1)%D,t<0&&(n+=D),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=D;n<i;)r.d.push(+e.slice(n,n+=D));e=e.slice(n),n=D-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),G&&(r.e>r.constructor.maxE?(r.d=null,r.e=NaN):r.e<r.constructor.minE&&(r.e=0,r.d=[0]))}else r.e=0,r.d=[0];return r}function _o(r,e){var t,n,i,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Hr.test(e))return Hn(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(No.test(e))t=16,e=e.toLowerCase();else if(Lo.test(e))t=2;else if(Ro.test(e))t=8;else throw Error(st+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=r.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,i=jr(n,new n(t),o,o*2)),c=cn(e,t,Oe),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(r.s*0):(r.e=fn(c,l),r.d=c,G=!1,s&&(r=ae(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?fe(2,u):Dt.pow(2,u))),G=!0,r)}function vo(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:St(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/bn(5,t)),e=St(r,2,e,e);for(var i,o=new r(5),s=new r(16),a=new r(20);t--;)i=e.times(e),e=e.times(o.plus(i.times(s.times(i).minus(a))));return e}function St(r,e,t,n,i){var o,s,a,u,c=1,l=r.precision,m=Math.ceil(l/D);for(G=!1,u=t.times(t),a=new r(n);;){if(s=ae(a.times(u),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=ae(s.times(u),new r(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return G=!0,s.d.length=m+1,s}function bn(r,e){for(var t=r;--e;)t*=r;return t}function $r(r,e){var t,n=e.s<0,i=Ve(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return $e=n?4:1,e;if(t=e.divToInt(i),t.isZero())$e=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return $e=Dr(t)?n?2:3:n?4:1,e;$e=Dr(t)?n?1:4:n?3:2}return e.minus(i).abs()}function Yn(r,e,t,n){var i,o,s,a,u,c,l,m,d,p=r.constructor,g=t!==void 0;if(g?(Le(t,1,at),n===void 0?n=p.rounding:Le(n,0,8)):(t=p.precision,n=p.rounding),!r.isFinite())l=Zr(r);else{for(l=Ue(r),s=l.indexOf("."),g?(i=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):i=e,s>=0&&(l=l.replace(".",""),d=new p(1),d.e=l.length-s,d.d=cn(Ue(d),10,i),d.e=d.d.length),m=cn(l,10,i),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=g?"0p+0":"0";else{if(s<0?o--:(r=new p(r),r.d=m,r.e=o,r=ae(r,d,t,n,0,i),m=r.d,o=r.e,c=Gr),s=m[t],a=i/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(r.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(r.s<0?8:7)),m.length=t,c)for(;++m[--t]>i-1;)m[t]=0,t||(++o,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=Gn.charAt(m[s]);if(g){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)l+="0";for(m=cn(l,i,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=Gn.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>u)for(o-=u;o--;)l+="0";else o<u&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return r.s<0?"-"+l:l}function Wr(r,e){if(r.length>e)return r.length=e,!0}function Fo(r){return new this(r).abs()}function Vo(r){return new this(r).acos()}function Oo(r){return new this(r).acosh()}function Do(r,e){return new this(r).plus(e)}function Wo(r){return new this(r).asin()}function qo(r){return new this(r).asinh()}function Go(r){return new this(r).atan()}function Uo(r){return new this(r).atanh()}function Xo(r,e){r=new this(r),e=new this(e);var t,n=this.precision,i=this.rounding,o=n+4;return!r.s||!e.s?t=new this(NaN):!r.d&&!e.d?(t=Ve(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?Ve(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=Ve(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(ae(r,e,o,1)),e=Ve(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(ae(r,e,o,1)),t}function zo(r){return new this(r).cbrt()}function Ho(r){return v(r=new this(r),r.e+1,2)}function Yo(r,e,t){return new this(r).clamp(e,t)}function jo(r){if(!r||typeof r!="object")throw Error(pn+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,at,"rounding",0,8,"toExpNeg",-It,0,"toExpPos",0,It,"maxE",0,It,"minE",-It,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=Un[t]),(n=r[t])!==void 0)if(Ae(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(st+t+": "+n);if(t="crypto",i&&(this[t]=Un[t]),(n=r[t])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[t]=!0;else throw Error(Xr);else this[t]=!1;else throw Error(st+t+": "+n);return this}function Qo(r){return new this(r).cos()}function Zo(r){return new this(r).cosh()}function Jr(r){var e,t,n;function i(o){var s,a,u,c=this;if(!(c instanceof i))return new i(o);if(c.constructor=i,qr(o)){c.s=o.s,G?!o.d||o.e>i.maxE?(c.e=NaN,c.d=null):o.e<i.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;G?s>i.maxE?(c.e=NaN,c.d=null):s<i.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return Hn(c,o.toString())}else if(u!=="string")throw Error(st+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),Hr.test(o)?Hn(c,o):_o(c,o)}if(i.prototype=x,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.EUCLID=9,i.config=i.set=jo,i.clone=Jr,i.isDecimal=qr,i.abs=Fo,i.acos=Vo,i.acosh=Oo,i.add=Do,i.asin=Wo,i.asinh=qo,i.atan=Go,i.atanh=Uo,i.atan2=Xo,i.cbrt=zo,i.ceil=Ho,i.clamp=Yo,i.cos=Qo,i.cosh=Zo,i.div=$o,i.exp=Jo,i.floor=es,i.hypot=ts,i.ln=ns,i.log=rs,i.log10=os,i.log2=is,i.max=ss,i.min=as,i.mod=us,i.mul=cs,i.pow=ls,i.random=ms,i.round=ds,i.sign=ps,i.sin=fs,i.sinh=bs,i.sqrt=ys,i.sub=gs,i.sum=ws,i.tan=hs,i.tanh=ks,i.trunc=As,r===void 0&&(r={}),r&&r.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)r.hasOwnProperty(t=n[e++])||(r[t]=this[t]);return i.config(r),i}function $o(r,e){return new this(r).div(e)}function Jo(r){return new this(r).exp()}function es(r){return v(r=new this(r),r.e+1,3)}function ts(){var r,e,t=new this(0);for(G=!1,r=0;r<arguments.length;)if(e=new this(arguments[r++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return G=!0,new this(1/0);t=e}return G=!0,t.sqrt()}function qr(r){return r instanceof Dt||r&&r.toStringTag===zr||!1}function ns(r){return new this(r).ln()}function rs(r,e){return new this(r).log(e)}function is(r){return new this(r).log(2)}function os(r){return new this(r).log(10)}function ss(){return Qr(this,arguments,"lt")}function as(){return Qr(this,arguments,"gt")}function us(r,e){return new this(r).mod(e)}function cs(r,e){return new this(r).mul(e)}function ls(r,e){return new this(r).pow(e)}function ms(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:Le(r,1,at),n=Math.ceil(r/D),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)i=e[o],i>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=i%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)i=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(i%1e7),o+=4);o=n/4}else throw Error(Xr);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=D,n&&r&&(i=fe(10,D-r),a[o]=(n/i|0)*i);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=D)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<D&&(t-=D-n)}return s.e=t,s.d=a,s}function ds(r){return v(r=new this(r),r.e+1,this.rounding)}function ps(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function fs(r){return new this(r).sin()}function bs(r){return new this(r).sinh()}function ys(r){return new this(r).sqrt()}function gs(r,e){return new this(r).sub(e)}function ws(){var r=0,e=arguments,t=new this(e[r]);for(G=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return G=!0,v(t,this.precision,this.rounding)}function hs(r){return new this(r).tan()}function ks(r){return new this(r).tanh()}function As(r){return v(r=new this(r),r.e+1,1)}x[Symbol.for("nodejs.util.inspect.custom")]=x.toString;x[Symbol.toStringTag]="Decimal";var Dt=x.constructor=Jr(Un);ln=new Dt(ln);mn=new Dt(mn);var N=Dt;import{PublicKey as Jn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ts}from"@solana/spl-token";import{PublicKey as ce,SystemProgram as ti,SYSVAR_RENT_PUBKEY as Ps}from"@solana/web3.js";function T({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var xs=[T({pubkey:Ts,isWritable:!1}),T({pubkey:ti.programId,isWritable:!1}),T({pubkey:Ps,isWritable:!1})];function jn({publicKey:r,transformSol:e}){let t=Qn(r.toString());if(t instanceof ce)return e&&t.equals(Kt)?ei:t;if(e&&t.toString()===Kt.toBase58())return ei;if(typeof t=="string"){if(t===ce.default.toBase58())return ce.default;try{return new ce(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Qn(r){try{return new ce(r)}catch{return r}}var yn=new ce("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Ku=new ce("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),ut=new ce("SysvarRent111111111111111111111111111111111"),Lu=new ce("SysvarC1ock11111111111111111111111111111111"),Lt=new ce("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Bs=new ce("Sysvar1nstructions1111111111111111111111111"),Nu=ti.programId,Ru=new ce("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Cu=new ce("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Eu=new ce("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Mu=new ce("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),_u=new ce("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),vu=new ce("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Fu=new ce("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Vu=new ce("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Ou=new ce("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Du=new ce("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Wu=new ce("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),ei=new ce("So11111111111111111111111111111111111111112"),Kt=ce.default;function Zn(r){return jn({publicKey:r,transformSol:!0})}import{PublicKey as Is}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ni}from"@solana/spl-token";var $n={chainId:101,address:Is.default.toBase58(),programId:ni.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ct={chainId:101,address:"So11111111111111111111111111111111111111112",programId:ni.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};var er=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===Kt.toBase58()||e instanceof Jn&&Kt.equals(e)){this.decimals=ct.decimals,this.symbol=ct.symbol,this.name=ct.name,this.mint=new Jn(ct.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=i||e.toString().substring(0,6),this.mint=o?Jn.default:jn({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Te=er;Te.WSOL=new er(Y(q({},ct),{mint:ct.address}));import{get as ri,set as Ss}from"lodash";import oi from"dayjs";import Ks from"dayjs/plugin/utc";oi.extend(Ks);var tr=class{constructor(e){this.logLevel=e.logLevel!==void 0?e.logLevel:0,this.name=e.name}set level(e){this.logLevel=e}get time(){return oi().utc().format("YYYY/MM/DD HH:mm:ss UTC")}get moduleName(){return this.name}isLogLevel(e){return e<=this.logLevel}error(...e){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...e),this):this}logWithError(...e){let t=e.map(n=>typeof n=="object"?JSON.stringify(n):n).join(", ");throw new Error(t)}warning(...e){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...e),this):this}info(...e){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...e),this):this}debug(...e){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...e),this):this}},ii={},Ls={};function ie(r){let e=ri(ii,r);if(!e){let t=ri(Ls,r);e=new tr({name:r,logLevel:t}),Ss(ii,r,e)}return e}import wn from"big.js";import Cs from"bn.js";import Es from"decimal.js-light";import Ns from"toformat";var Rs=Ns,Wt=Rs;var gn=ie("module/fraction"),nr=Wt(wn),qt=Wt(Es),Ms={[0]:qt.ROUND_DOWN,[1]:qt.ROUND_HALF_UP,[2]:qt.ROUND_UP},_s={[0]:wn.roundDown,[1]:wn.roundHalfUp,[2]:wn.roundUp},te=class{constructor(e,t=new Cs(1)){this.numerator=re(e),this.denominator=re(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new te(this.denominator,this.numerator)}add(e){let t=e instanceof te?e:new te(re(e));return this.denominator.eq(t.denominator)?new te(this.numerator.add(t.numerator),this.denominator):new te(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof te?e:new te(re(e));return this.denominator.eq(t.denominator)?new te(this.numerator.sub(t.numerator),this.denominator):new te(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof te?e:new te(re(e));return new te(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof te?e:new te(re(e));return new te(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||gn.logWithError(`${e} is not an integer.`),e<=0&&gn.logWithError(`${e} is not positive.`),qt.set({precision:e+1,rounding:Ms[n]});let i=new qt(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return i.toFormat(i.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||gn.logWithError(`${e} is not an integer.`),e<0&&gn.logWithError(`${e} is negative.`),nr.DP=e,nr.RM=_s[n]||1,new nr(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Fs=ie("Raydium_price"),Fe=class extends te{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new te(rr(n.decimals),rr(i.decimals))}get raw(){return new te(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Fe({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Fs.logWithError("mul token not equals");let n=super.mul(t);return new Fe({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,i){return this.adjusted.toSignificant(t,n,i)}toFixed(t=this.quoteToken.decimals,n,i){return this.adjusted.toFixed(t,n,i)}};var ir=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},hn=ir;hn.SOL=new ir($n);import Vs from"bn.js";var si=new te(new Vs(100)),Xe=class extends te{toSignificant(e=5,t,n){return this.mul(si).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(si).toFixed(e,t,n)}};import{PublicKey as Os}from"@solana/web3.js";import Ds from"bn.js";function ai(r){return typeof r=="object"&&r!==null&&![Te,le,Os,te,Ds,Fe,Xe].some(e=>typeof e=="object"&&r instanceof e)}function ft(r){return typeof r=="string"?Qn(r):Array.isArray(r)?r.map(e=>ft(e)):ai(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,ft(t)])):r}var Gt=new Ne(0),ci=new Ne(1),zc=new Ne(2),Hc=new Ne(3),Yc=new Ne(5),or=new Ne(10),jc=new Ne(100),Qc=new Ne(1e3),Zc=new Ne(1e4),ui=9007199254740991;function re(r){let e=ie("Raydium_parseBigNumberish");if(r instanceof Ne)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Ne(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=ui||r<=-ui)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Ne(String(r))):typeof r=="bigint"?new Ne(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Ne(0))}function rr(r){return or.pow(re(r))}function kn(r,e){let t=r.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}var qs=ie("Raydium_amount"),li=Wt(Ws);function Gs(r,e){let t="0",n="0";if(r.includes(".")){let i=r.split(".");i.length===2?([t,n]=i,n=n.padEnd(e,"0")):qs.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var le=class extends te{constructor(t,n,i=!0,o){let s=new An(0),a=or.pow(new An(t.decimals));if(i)s=re(n);else{let u=new An(0),c=new An(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Gs(n.toString(),t.decimals);u=re(l),c=re(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=ie(o||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new le(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new le(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.token.decimals,n,i=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return li.DP=this.token.decimals,new li(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as $s}from"@solana/web3.js";import fi,{isBN as bi}from"bn.js";import{bits as hl,BitStructure as kl,blob as Us,Blob as Al,cstr as Tl,f32 as Pl,f32be as xl,f64 as Bl,f64be as Il,greedy as Sl,Layout as Xs,ns64 as Kl,ns64be as Ll,nu64 as Nl,nu64be as Rl,offset as Cl,s16 as El,s16be as Ml,s24 as _l,s24be as vl,s32 as zs,s32be as Fl,s40 as Vl,s40be as Ol,s48 as Dl,s48be as Wl,s8 as ql,seq as Hs,struct as Gl,Structure as Ys,u16 as js,u16be as Ul,u24 as Xl,u24be as zl,u32 as Hl,u32be as Yl,u40 as jl,u40be as Ql,u48 as Zl,u48be as $l,u8 as Qs,UInt as Zs,union as Jl,Union as em,unionLayoutDiscriminator as tm,utf8 as nm}from"@solana/buffer-layout";var sr=Xs,mi=Ys;var ar=Zs;var di=Qs,Nt=js;var he=zs;var pi=Hs;var Pe=Us;var bt=class extends sr{constructor(t,n,i){super(t,i);this.blob=Pe(t),this.signed=n}decode(t,n=0){let i=new fi(this.blob.decode(t,n),10,"le");return this.signed?i.fromTwos(this.span*8).clone():i}encode(t,n,i=0){return typeof t=="number"&&(t=new fi(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}};function F(r){return new ar(1,r)}function Me(r){return new ar(4,r)}function b(r){return new bt(8,!1,r)}function V(r){return new bt(16,!1,r)}function yi(r){return new bt(1,!0,r)}function Pn(r){return new bt(8,!0,r)}function gi(r){return new bt(16,!0,r)}var Tn=class extends sr{constructor(t,n,i,o){super(t.span,o);this.layout=t,this.decoder=n,this.encoder=i}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,i){return this.layout.encode(this.encoder(t),n,i)}getSpan(t,n){return this.layout.getSpan(t,n)}};function I(r){return new Tn(Pe(32),e=>new $s(e),e=>e.toBuffer(),r)}function Re(r){return new Tn(di(),Js,ea,r)}function Js(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function ea(r){return r?1:0}var ur=class extends mi{decode(e,t){return super.decode(e,t)}};function R(r,e,t){return new ur(r,e,t)}function W(r,e,t){let n,i=typeof e=="number"?e:bi(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=bi(a)?a.toNumber():a,Reflect.set(o,"count",n)}return Reflect.get(o,s)},set(o,s,a){return s==="count"&&(n=a),Reflect.set(o,s,a)}});return pi(r,i,t)}var ym=R([Me("mintAuthorityOption"),I("mintAuthority"),b("supply"),F("decimals"),F("isInitialized"),Me("freezeAuthorityOption"),I("freezeAuthority")]);import{PublicKey as km}from"@solana/web3.js";import{MintLayout as Tm,TOKEN_PROGRAM_ID as xm}from"@solana/spl-token";var wi=r=>new Te({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name});import{PublicKey as ee}from"@solana/web3.js";var hi=new ee("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),ki=new ee("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Ai=new ee("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Mm=new ee("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),_m=new ee("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),vm=new ee("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Ti=new ee("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Fm=new ee("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Vm=new ee("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Om=new ee("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Dm=new ee("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Wm=new ee("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),qm=new ee("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Gm=new ee("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Um=new ee("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Xm=new ee("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),zm=new ee("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Hm=new ee("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),ta=new ee("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),na=new ee("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),ra=new ee("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");var Ym={SERUM_MARKET:ee.default,OPENBOOK_MARKET:new ee("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:ee.default,FarmV3:new ee("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new ee("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new ee("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new ee("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new ee("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new ee("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new ee("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:ta,CREATE_CPMM_POOL_AUTH:na,CREATE_CPMM_POOL_FEE_ACC:ra,FEE_DESTINATION_ID:new ee("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as ca}from"@solana/web3.js";import{PublicKey as ia,ComputeBudgetProgram as Pi,Transaction as Bi,TransactionMessage as oa,Keypair as Ii,VersionedTransaction as Si}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as sa}from"@solana/spl-token";var $={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut"};var xi=ie("Raydium_txUtil"),Ki=1644;function xn(r){let e=[],t=[];return r.microLamports&&(e.push(Pi.setComputeUnitPrice({microLamports:r.microLamports})),t.push($.SetComputeUnitPrice)),r.units&&(e.push(Pi.setComputeUnitLimit({units:r.units})),t.push($.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Rt(r){var e,t;try{return((t=await((e=r.getLatestBlockhash)==null?void 0:e.call(r)))==null?void 0:t.blockhash)||(await r.getRecentBlockhash()).blockhash}catch{return(await r.getRecentBlockhash()).blockhash}}function aa(r,e){r.length<1&&xi.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&xi.logWithError(`no signers provided:, ${e.toString()}`);let t=new Bi;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Ki}catch{return!1}}function de(r,e){let[t,n]=ia.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}function Ut({instructions:r,payer:e,signers:t}){return aa(r,[e,...t])}function Xt({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Ii.generate().publicKey.toString()}){let o=new oa({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Si(o).serialize()).toString("base64").length<Ki}catch{return!1}}var ua=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r);function yt(r){let e=[];return r.forEach(t=>{t instanceof Bi&&(t.recentBlockhash||(t.recentBlockhash=sa.toBase58()),t.feePayer||(t.feePayer=Ii.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof Si&&(n=ua(n));let i=n.toString("base64");e.push(i)}),console.log("simulate tx string:",e),e}import{TOKEN_PROGRAM_ID as la}from"@solana/spl-token";function _e(r,e,t){return de([r.toBuffer(),(t!=null?t:la).toBuffer(),e.toBuffer()],new ca("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import De from"bn.js";var zt=1e4;function be(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=Y(q({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),o=t.epoch<i.newerTransferFee.epoch?i.olderTransferFee:i.newerTransferFee,s=new De(o.maximumFee.toString()),a=t.epoch<i.newerTransferFee.epoch?(Number(i.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===zt){let u=new De(o.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=Ht(r.mul(new De(zt)),new De(zt-o.transferFeeBasisPoints)),c=new De(o.maximumFee.toString()),l=u.sub(r).gt(c)?r.add(c):u,m=Ht(l.mul(new De(o.transferFeeBasisPoints)),new De(zt)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let u=Ht(r.mul(new De(o.transferFeeBasisPoints)),new De(zt)),c=u.gt(s)?s:u;return{amount:r,fee:c,expirationTime:a}}}function gt(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function Ht(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new De(0))?t.add(new De(1)):t}import{PublicKey as Yt,sendAndConfirmTransaction as jt,Transaction as Qt,TransactionMessage as Zt,VersionedTransaction as $t}from"@solana/web3.js";import pa from"axios";import{PublicKey as Li,AddressLookupTableAccount as In}from"@solana/web3.js";import{PublicKey as ma}from"@solana/web3.js";import{getTransferFeeConfig as Fd,unpackMint as Vd}from"@solana/spl-token";function cr(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}var lr=ie("Raydium_accountInfo_util");async function lt(r,e,t){let{batchRequest:n,commitment:i="confirmed"}=q({batchRequest:!1},t),o=cr(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let m=r._buildArgs([l.map(d=>d.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=cr(a,10);s=(await(await Promise.all(u.map(async l=>await r._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&lr.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.error.message}`),l.result.value.map(m=>{if(m){let{data:d,executable:p,lamports:g,owner:f,rentEpoch:y}=m;return d.length!==2&&d[1]!=="base64"&&lr.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(d[0],"base64"),executable:p,lamports:g,owner:new ma(f),rentEpoch:y}}return null})))}else try{s=await Promise.all(o.map(a=>r.getMultipleAccountsInfo(a,i)))}catch(a){a instanceof Error&&lr.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function Bn(r,e,t){let n=await lt(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>Y(q({},i),{accountInfo:n[o]}))}async function mr({connection:r,address:e}){let t=await lt(r,[...new Set(e.map(i=>i.toString()))].map(i=>new Li(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],s=e[i];if(!o)continue;let a=new In({key:s,state:In.deserialize(o.data)});n[s.toString()]=a,Sn[s.toString()]=a}return n}var Sn={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new In({key:new Li("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:In.deserialize(Buffer.from("AQAAAP//////////d49+DAAAAAAAAQZMWvw7GUNJdaccNBVnb57OKakxL2BHLYvhRwVILRsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkG3fbh7nWP3hhCXbzkbM3athr8TYO5DSf+vfko2KGL/AVKU1D4XciC1hSlVnJ4iilt3x6rq9CmBniISTL07vagBqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAIyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZC3BlsePRfEU4nVJ/awTDzVi4bHMaoP21SbbRvAP4KUbIScv+6Yw2LHF/6K0ZjUPibbSWXCirYPGuuVl7zT789IUPLW4CpHr4JNCatp3ELXDLKMv6JJ+37le50lbBJ2LvDQdRqCgtphMF/imcN7mY5YRx2xE1A3MQ+L4QRaYK9u4GRfZP3LsAd00a+IkCpA22UNQMKdq5BFbJuwuOLqc8zxCTDlqxBG8J0HcxtfogQHDK06ukzfaXiNDKAob1MqBHS9lJxDYCwz8gd5DtFqNSTKG5l1zxIaKpDP/sffi2is1H9aKveyXSu5StXElYRl9SD5As0DHE4N0GLnf84/siiKXVyp4Ez121kLcUui/jLLFZEz/BwZK3Ilf9B9OcsEAeDMKAy2vjGSxQODgBz0QwGA+eP4ZjIjrIAQaXENv31QfLlOdXSRCkaybRniDHF4C8YcwhcvsqrOVuTP4B2Na+9wLdtrB31uz2rtlFI5kahdsnp/d1SrASDInYCtTYtdoke4kX+hoKWcEWM4Tle8pTUkUVv4BxS6fje/EzKBE4Qu9N9LMnrw/JNO0hqMVB4rk/2ou4AB1loQ7FZoPwut2o4KZB+0p9xnbrQKw038qjpHar+PyDwvxBRcu5hpHw3dguezeWv+IwvgW5icu8EGkhGa9AkFPPJT7VMSFb8xowveU=","base64"))})};var Kn=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var n;let e=(await pa.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(n=e==null?void 0:e[15])!=null?n:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:n}=xn(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:i=[],endInstructionTypes:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...i),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==Yt.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(q({},t||{})):this.build(t)}build(e){let t=new Qt;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async n=>{var a;let{recentBlockHash:i,skipPreflight:o=!0}=n||{},s=i!=null?i:await Rt(this.connection);if(t.recentBlockhash=s,this.signers.length&&t.sign(...this.signers),yt([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await jt(this.connection,t,this.signers.find(u=>u.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:o}),signedTx:t};if(this.signAllTransactions){let u=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(u[0].serialize(),{skipPreflight:o}),signedTx:u[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),o=t.filter(c=>c.transaction.instructions.length>0),s=[i,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return{builder:this,transactions:s,signers:a,instructionTypes:u,execute:async c=>{var f;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=c||{},g=d!=null?d:await Rt(this.connection);if((f=this.owner)!=null&&f.isKeyPair){if(l){let y=[];for(let w of s){let k=await jt(this.connection,w,this.signers.find(h=>h.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:p});y.push(k)}return{txIds:y,signedTxs:s}}return{txIds:await await Promise.all(s.map(async(y,w)=>(y.recentBlockhash=g,await jt(this.connection,y,a[w].find(k=>k.publicKey.equals(this.owner.publicKey))?a[w]:[...a[w],this.owner.signer],{skipPreflight:p})))),signedTxs:s}}if(this.signAllTransactions){let y=s.map((k,h)=>(k.recentBlockhash=g,a[h].length&&k.sign(...a[h]),k));yt(y);let w=await this.signAllTransactions(y);if(l){let k=0,h=[],P=async()=>{if(!w[k])return;let A=await this.connection.sendRawTransaction(w[k].serialize(),{skipPreflight:p});h.push({txId:A,status:"sent",signedTx:w[k]}),m==null||m([...h]),k++,this.connection.onSignature(A,K=>{let S=h.findIndex(B=>B.txId===A);S>-1&&(h[S].status=K.err?"error":"success"),m==null||m([...h]),K.err||P()},"processed"),this.connection.getSignatureStatus(A)};return await P(),{txIds:h.map(A=>A.txId),signedTxs:w}}else{let k=[];for(let h=0;h<w.length;h+=1){let P=await this.connection.sendRawTransaction(w[h].serialize(),{skipPreflight:p});k.push(P)}return{txIds:k,signedTxs:w}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){let d=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i}=d,o=Ee(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=q(q({},this.cluster==="devnet"?{}:Sn),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let p of a)s[p]===void 0&&u.push(new Yt(p));let c=await mr({connection:this.connection,address:u});for(let[p,g]of Object.entries(c))s[p]=g;let l=new Zt({payerKey:this.feePayer,recentBlockhash:i?Yt.default.toBase58():await Rt(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new $t(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async p=>{var y;let{recentBlockHash:g,skipPreflight:f=!0}=p||{};if(g&&(m.message.recentBlockhash=g),yt([m]),(y=this.owner)!=null&&y.isKeyPair){this.signers.find(P=>P.publicKey.equals(this.owner.publicKey))||m.sign([this.owner.signer]);let w=await this.connection.sendTransaction(m,{skipPreflight:f}),{lastValidBlockHeight:k,blockhash:h}=await this.connection.getLatestBlockhash();return await this.connection.confirmTransaction({blockhash:h,lastValidBlockHeight:k,signature:w},"confirmed"),{txId:w,signedTx:m}}if(this.signAllTransactions){let w=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(w[0],{skipPreflight:f}),signedTx:w[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async buildV0MultiTx(e){let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:i}=await this.buildV0(n),o=t.filter(c=>c.builder.instructions.length>0),s=[i,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return s.forEach(async(c,l)=>{c.sign(a[l])}),{builder:this,transactions:s,signers:a,instructionTypes:u,buildProps:n,execute:async c=>{var g;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=c||{};if(d&&s.forEach(f=>f.message.recentBlockhash=d),yt(s),(g=this.owner)!=null&&g.isKeyPair){let{lastValidBlockHeight:f,blockhash:y}=await this.connection.getLatestBlockhash();if(s.forEach((w,k)=>{a[k].find(h=>h.publicKey.equals(this.owner.publicKey))||w.sign([this.owner.signer])}),l){let w=[];for(let k of s){let h=await this.connection.sendTransaction(k,{skipPreflight:p}),{lastValidBlockHeight:P,blockhash:A}=await this.connection.getLatestBlockhash();await this.connection.confirmTransaction({blockhash:A,lastValidBlockHeight:P,signature:h},"confirmed"),w.push(h)}return{txIds:w,signedTxs:s}}return{txIds:await Promise.all(s.map(async w=>{let k=await this.connection.sendTransaction(w,{skipPreflight:p});return await this.connection.confirmTransaction({blockhash:y,lastValidBlockHeight:f,signature:k},"confirmed"),k})),signedTxs:s}}if(this.signAllTransactions){let f=await this.signAllTransactions(s);if(l){let y=0,w=[],k=async()=>{if(!f[y])return;let h=await this.connection.sendTransaction(f[y],{skipPreflight:p});w.push({txId:h,status:"sent",signedTx:f[y]}),m==null||m([...w]),y++,this.connection.onSignature(h,P=>{let A=w.findIndex(K=>K.txId===h);A>-1&&(w[A].status=P.err?"error":"success"),m==null||m([...w]),P.err||k()},"processed"),this.connection.getSignatureStatus(h)};return k(),{txIds:[],signedTxs:f}}else{let y=[];for(let w=0;w<f.length;w+=1){let k=await this.connection.sendTransaction(f[w],{skipPreflight:p});y.push(k)}return{txIds:y,signedTxs:f}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){let c=e||{},{computeBudgetConfig:t}=c,n=Ee(c,["computeBudgetConfig"]),i=t?xn(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,m)=>Y(q({},l),{[m.publicKey.toBase58()]:m}),{}),s=[],a=[],u=[];if(this.allInstructions.forEach(l=>{let m=[...u,l],d=t?[...i.instructions,...m]:m,g=[...new Set(m.map(f=>f.keys.filter(y=>y.isSigner).map(y=>y.pubkey.toString())).flat()).values()].map(f=>new Yt(f));if(u.length<12&&Ut({instructions:d,payer:this.feePayer,signers:g})||Ut({instructions:m,payer:this.feePayer,signers:g}))u.push(l);else{if(u.length===0)throw Error("item ins too big");Ut({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:g})?s.push(new Qt().add(...i.instructions,...u)):s.push(new Qt().add(...u)),a.push(Array.from(new Set(u.map(f=>f.keys.filter(y=>y.isSigner).map(y=>y.pubkey.toString())).flat())).map(f=>o[f]).filter(f=>f!==void 0)),u=[l]}}),u.length>0){let m=[...new Set(u.map(d=>d.keys.filter(p=>p.isSigner).map(p=>p.pubkey.toString())).flat()).values()].map(d=>o[d]).filter(d=>d!==void 0);Ut({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(d=>d.publicKey)})?s.push(new Qt().add(...i.instructions,...u)):s.push(new Qt().add(...u)),a.push(m)}return s.forEach(l=>l.feePayer=this.feePayer),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async l=>{var y;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:g=!0}=l||{},f=p!=null?p:await Rt(this.connection);if(s.forEach(async(w,k)=>{w.recentBlockhash=f,a[k].length&&w.sign(...a[k])}),yt(s),(y=this.owner)!=null&&y.isKeyPair){if(m){let w=[];for(let k of s){let h=await jt(this.connection,k,this.signers.find(P=>P.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:g});w.push(h)}return{txIds:w,signedTxs:s}}return{txIds:await Promise.all(s.map(async(w,k)=>await jt(this.connection,w,a[k].find(h=>h.publicKey.equals(this.owner.publicKey))?a[k]:[...a[k],this.owner.signer],{skipPreflight:g}))),signedTxs:s}}if(this.signAllTransactions){let w=await this.signAllTransactions(s);if(m){let k=0,h=[],P=async()=>{if(!w[k])return;let A=await this.connection.sendRawTransaction(w[k].serialize(),{skipPreflight:g});h.push({txId:A,status:"sent",signedTx:w[k]}),d==null||d([...h]),k++,this.connection.onSignature(A,K=>{let S=h.findIndex(B=>B.txId===A);S>-1&&(h[S].status=K.err?"error":"success"),d==null||d([...h]),K.err||P()},"processed"),this.connection.getSignatureStatus(A)};return await P(),{txIds:h.map(A=>A.txId),signedTxs:w}}else{let k=[];for(let h=0;h<w.length;h+=1){let P=await this.connection.sendRawTransaction(w[h].serialize(),{skipPreflight:g});k.push(P)}return{txIds:k,signedTxs:w}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){let y=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:i=[]}=y,o=Ee(y,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=q(q({},this.cluster==="devnet"?{}:Sn),n),a=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let w of a)s[w]===void 0&&u.push(new Yt(w));let c=await mr({connection:this.connection,address:u});for(let[w,k]of Object.entries(c))s[w]=k;let l=t?xn(t):{instructions:[],instructionTypes:[]},m=await Rt(this.connection),d=this.signers.reduce((w,k)=>Y(q({},w),{[k.publicKey.toBase58()]:k}),{}),p=[],g=[],f=[];if(this.allInstructions.forEach(w=>{let k=[...f,w],h=t?[...l.instructions,...k]:k;if(f.length<12&&Xt({instructions:h,payer:this.feePayer,lookupTableAddressAccount:s})||Xt({instructions:k,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(w);else{if(f.length===0)throw Error("item ins too big");let P={};for(let A of[...new Set(a)])s[A]!==void 0&&(P[A]=s[A]);if(t&&Xt({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let A=new Zt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new $t(A))}else{let A=new Zt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new $t(A))}g.push(Array.from(new Set(f.map(A=>A.keys.filter(K=>K.isSigner).map(K=>K.pubkey.toString())).flat())).map(A=>d[A]).filter(A=>A!==void 0)),f=[w]}}),f.length>0){let k=[...new Set(f.map(h=>h.keys.filter(P=>P.isSigner).map(P=>P.pubkey.toString())).flat()).values()].map(h=>d[h]).filter(h=>h!==void 0);if(t&&Xt({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let h=new Zt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new $t(h))}else{let h=new Zt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new $t(h))}g.push(k)}return{builder:this,transactions:p,buildProps:e,signers:g,instructionTypes:this.instructionTypes,execute:async w=>{var K;let{sequentially:k,onTxUpdate:h,recentBlockHash:P,skipPreflight:A=!0}=w||{};if(p.map(async(S,B)=>{g[B].length&&S.sign(g[B]),P&&(S.message.recentBlockhash=P)}),yt(p),(K=this.owner)!=null&&K.isKeyPair){let{lastValidBlockHeight:S,blockhash:B}=await this.connection.getLatestBlockhash();if(p.forEach((_,O)=>{g[O].find(U=>U.publicKey.equals(this.owner.publicKey))||_.sign([this.owner.signer])}),k){let _=[];for(let O of p){let U=await this.connection.sendTransaction(O,{skipPreflight:A}),{lastValidBlockHeight:ue,blockhash:ne}=await this.connection.getLatestBlockhash();await this.connection.confirmTransaction({blockhash:ne,lastValidBlockHeight:ue,signature:U},"confirmed"),_.push(U)}return{txIds:_,signedTxs:p}}return{txIds:await Promise.all(p.map(async _=>{let O=await this.connection.sendTransaction(_,{skipPreflight:A});return await this.connection.confirmTransaction({blockhash:B,lastValidBlockHeight:S,signature:O},"confirmed"),O})),signedTxs:p}}if(this.signAllTransactions){let S=await this.signAllTransactions(p);if(k){let B=0,_=[],O=async()=>{if(!S[B])return;let U=await this.connection.sendTransaction(S[B],{skipPreflight:A});_.push({txId:U,status:"sent",signedTx:S[B]}),h==null||h([..._]),B++,this.connection.onSignature(U,ue=>{let ne=_.findIndex(oe=>oe.txId===U);ne>-1&&(_[ne].status=ue.err?"error":"success"),h==null||h([..._]),ue.err||O()},"processed"),this.connection.getSignatureStatus(U)};return O(),{txIds:[],signedTxs:S}}else{let B=[];for(let _=0;_<S.length;_+=1){let O=await this.connection.sendTransaction(S[_],{skipPreflight:A});B.push(O)}return{txIds:B,signedTxs:S}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};var dr=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Jt=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ie(t)}createTxBuilder(e){return this.scope.checkOwner(),new Kn({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(dr(e))}logInfo(...e){this.logger.info(dr(e))}logAndCreateError(...e){let t=dr(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{TOKEN_PROGRAM_ID as Ln,ASSOCIATED_TOKEN_PROGRAM_ID as Sa}from"@solana/spl-token";import{PublicKey as ze,TransactionInstruction as Et,SystemProgram as Vi,SYSVAR_RENT_PUBKEY as kp}from"@solana/web3.js";var pr=R([F("instruction"),b("amountIn"),b("minAmountOut")]),fr=R([F("instruction"),b("maxAmountIn"),b("amountOut")]),mp=R([F("instruction"),F("nonce")]),fa=R([F("instruction"),F("nonce"),b("startTime")]),Ni=R([b("status"),b("nonce"),b("maxOrder"),b("depth"),b("baseDecimal"),b("quoteDecimal"),b("state"),b("resetFlag"),b("minSize"),b("volMaxCutRatio"),b("amountWaveRatio"),b("baseLotSize"),b("quoteLotSize"),b("minPriceMultiplier"),b("maxPriceMultiplier"),b("systemDecimalValue"),b("minSeparateNumerator"),b("minSeparateDenominator"),b("tradeFeeNumerator"),b("tradeFeeDenominator"),b("pnlNumerator"),b("pnlDenominator"),b("swapFeeNumerator"),b("swapFeeDenominator"),b("baseNeedTakePnl"),b("quoteNeedTakePnl"),b("quoteTotalPnl"),b("baseTotalPnl"),b("poolOpenTime"),b("punishPcAmount"),b("punishCoinAmount"),b("orderbookToInitTime"),V("swapBaseInAmount"),V("swapQuoteOutAmount"),b("swapBase2QuoteFee"),V("swapQuoteInAmount"),V("swapBaseOutAmount"),b("swapQuote2BaseFee"),I("baseVault"),I("quoteVault"),I("baseMint"),I("quoteMint"),I("lpMint"),I("openOrders"),I("marketId"),I("marketProgramId"),I("targetOrders"),I("withdrawQueue"),I("lpVault"),I("owner"),b("lpReserve"),W(b(),3,"padding")]),dp=R([b("accountType"),b("status"),b("nonce"),b("maxOrder"),b("depth"),b("baseDecimal"),b("quoteDecimal"),b("state"),b("resetFlag"),b("minSize"),b("volMaxCutRatio"),b("amountWaveRatio"),b("baseLotSize"),b("quoteLotSize"),b("minPriceMultiplier"),b("maxPriceMultiplier"),b("systemDecimalsValue"),b("abortTradeFactor"),b("priceTickMultiplier"),b("priceTick"),b("minSeparateNumerator"),b("minSeparateDenominator"),b("tradeFeeNumerator"),b("tradeFeeDenominator"),b("pnlNumerator"),b("pnlDenominator"),b("swapFeeNumerator"),b("swapFeeDenominator"),b("baseNeedTakePnl"),b("quoteNeedTakePnl"),b("quoteTotalPnl"),b("baseTotalPnl"),b("poolOpenTime"),b("punishPcAmount"),b("punishCoinAmount"),b("orderbookToInitTime"),V("swapBaseInAmount"),V("swapQuoteOutAmount"),V("swapQuoteInAmount"),V("swapBaseOutAmount"),b("swapQuote2BaseFee"),b("swapBase2QuoteFee"),I("baseVault"),I("quoteVault"),I("baseMint"),I("quoteMint"),I("lpMint"),I("modelDataAccount"),I("openOrders"),I("marketId"),I("marketProgramId"),I("targetOrders"),I("owner"),W(b(),64,"padding")]),br=R([F("instruction"),b("baseAmountIn"),b("quoteAmountIn"),b("fixedSide")]),yr=R([F("instruction"),b("amountIn")]);var Ri=R([b("fee")]);import{PublicKey as ba}from"@solana/web3.js";var Ct=new ba("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ht=5e4,ya=R([b("x"),b("y"),b("price")]),ga=R([b("accountType"),b("status"),b("multiplier"),b("validDataCount"),W(ya,ht,"DataElement")]);function wa(r,e){return[0,ht-2]}function ha(r){return[0,ht-2]}function ka(r){return[0,ht-2]}function Aa(r,e,t){let[n,i]=wa(e,t),o=n,s=i,a=0,u=e*r.multiplier/t;for(;o<=s;){if(a=Math.floor((s+o)/2),a===0||a>=ht-2)return[a,a,!1];let c=r.DataElement[a].x*r.multiplier/r.DataElement[a].y,l=r.DataElement[a-1].x*r.multiplier/r.DataElement[a-1].y,m=r.DataElement[a+1].x*r.multiplier/r.DataElement[a+1].y;if(u===c)return[a,a,!0];if(u===l)return[a-1,a-1,!0];if(u===m)return[a+1,a+1,!0];if(u<l)s=a-1;else{if(u>l&&u<c)return[a-1,a,!0];if(u>c&&u<m)return[a,a+1,!0];o=a+1}}return[a,a,!1]}function gr(r,e,t){let[n,i,o]=Aa(r,e,t);if(!o)return 0;if(n===i){let s=r.DataElement[n].x;return e*r.multiplier/s}else{let s=r.DataElement[n].x,a=r.DataElement[n].y,u=r.DataElement[i].x,c=r.DataElement[i].y,l=t*(u*a-s*c),m=s*l,d=(u-s)*(e*a-s*t)*c,p=m+d;return e*r.multiplier*l/p}}function wt(r,e,t){return e*r.multiplier/t}function Ci(r,e,t){return e*t/r.multiplier}function Ta(r,e){let[t,n]=ha(e),i=t,o=n,s=0,a=e;for(;i<o;){if(s=Math.floor((o+i)/2),s<=0||s>ht-2)return[s,s,!1];let u=r.DataElement[s].x,c=r.DataElement[s-1].x,l=r.DataElement[s+1].x;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<c)o=s-1;else{if(a>c&&a<u)return[s-1,s,!0];if(a>u&&a<l)return[s,s+1,!0];i=s+1}}return[s,s,!1]}function Pa(r,e){let[t,n]=ka(e),i=t,o=n,s=0,a=e;for(;i<=o;){if(s=Math.floor((o+i)/2),s<=0||s>=ht-2)return[s,s,!1];let u=r.DataElement[s].y,c=r.DataElement[s-1].y,l=r.DataElement[s+1].y;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<l)i=s+1;else{if(a<c&&a>u)return[s-1,s,!0];if(a<u&&a>l)return[s,s+1,!0];o=s-1}}return[s,s,!1]}function Ei(r,e,t,n){let i=n?e+t:e-t,[o,s,a]=Ta(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].y,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,d=r.DataElement[o].y,p=r.DataElement[s].y;if(e>=u&&e<=c)return n?[m,p,!0,a]:[l,d,!0,a];{let g,f;return n?(g=l+(m-l)*(e-u)/(c-u),f=d-(i-u)*r.multiplier/m):(g=l+(m-l)*(e-u)/(c-u),f=p+(c-i)*r.multiplier/l),[g,f,!1,a]}}}function xa(r,e,t,n){let i=n?e-t:e+t,[o,s,a]=Pa(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].x,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,d=r.DataElement[o].y,p=r.DataElement[s].y;if(e>=p&&e<=d)return n?[m,c,!0,a]:[l,u,!0,a];{let g,f;return n?(g=l+(m-l)*(d-e)/(d-p),f=u+m*(d-i)/r.multiplier):(g=l+(m-l)*(d-e)/(d-p),f=c-l*(i-p)/r.multiplier),[g,f,!1,a]}}}function Ba(r,e){let t=Ei(r,e,0,!1);return t[3]?t[0]:0}function Mi(r,e,t,n){let i=gr(r,e,t),o=wt(r,e,i),s=wt(r,t,i),a=wt(r,n,i),u=!0,[c,l,m,d]=Ei(r,o,a,u);if(!d)return 0;if(m)return n*r.multiplier/c;{let p=s-l;return Ci(r,p,i)}}function _i(r,e,t,n){let i=gr(r,e,t),o=wt(r,e,i),s=wt(r,t,i),a=wt(r,n,i),u=!1,[c,l,m,d]=xa(r,s,a,u);if(!d)return 0;if(m)return n*c/r.multiplier;{let p=o-l;return Ci(r,p,i)}}function Ia(r){let e=ga.decode(r);return{accountType:e.accountType.toNumber(),status:e.status.toNumber(),multiplier:e.multiplier.toNumber(),validDataCount:e.validDataCount.toNumber(),DataElement:e.DataElement.map(t=>({x:t.x.toNumber(),y:t.y.toNumber(),price:t.price.toNumber()}))}}function vi(r,e,t,n){let i=Ba(r,wt(r,e,gr(r,e,t)))/r.multiplier;return n?i:1/i}var en=class{constructor({connection:e}){this._layoutData={accountType:0,status:0,multiplier:0,validDataCount:0,DataElement:[]};this.connection=e}get stableModelData(){return this._layoutData}async initStableModelLayout(){if(this._layoutData.validDataCount===0&&this.connection){let e=await this.connection.getAccountInfo(Ct);e&&(this._layoutData=Ia(e==null?void 0:e.data))}}};var Fi=ie("Raydium_liquidity_instruction");function Oi(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:i,quoteAmountIn:o,fixedSide:s}=r,a=Buffer.alloc(br.span);br.encode({instruction:3,baseAmountIn:re(i),quoteAmountIn:re(o),fixedSide:s==="base"?Gt:ci},a);let u=[T({pubkey:Ln,isWritable:!1}),T({pubkey:new ze(e.id)}),T({pubkey:new ze(t.authority),isWritable:!1}),T({pubkey:new ze(t.openOrders),isWritable:!1}),T({pubkey:new ze(t.targetOrders)}),T({pubkey:new ze(e.lpMint.address)}),T({pubkey:new ze(t.vault.A)}),T({pubkey:new ze(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(T({pubkey:Ct})),u.push(T({pubkey:new ze(e.marketId),isWritable:!1}),T({pubkey:n.baseTokenAccount}),T({pubkey:n.quoteTokenAccount}),T({pubkey:n.lpTokenAccount}),T({pubkey:n.owner,isWritable:!1,isSigner:!0}),T({pubkey:new ze(t.marketEventQueue),isWritable:!1})),new Et({programId:new ze(e.programId),keys:u,data:a})}function wr(r){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:i}=r,o=ft(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(yr.span);yr.encode({instruction:4,amountIn:re(i)},a);let u=[T({pubkey:Ln,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders}),T({pubkey:o.targetOrders}),T({pubkey:o.mintLp.address}),T({pubkey:o.vault.A}),T({pubkey:o.vault.B})];return s===5?u.push(T({pubkey:Ct})):(u.push(T({pubkey:o.id})),u.push(T({pubkey:o.id}))),u.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:n.lpTokenAccount}),T({pubkey:n.baseTokenAccount}),T({pubkey:n.quoteTokenAccount}),T({pubkey:n.owner,isWritable:!1,isSigner:!0}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks})),new Et({programId:o.programId,keys:u,data:a})}return new Et({programId:o.programId,keys:[]})}function Di({programId:r,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:i,coinMint:o,pcMint:s,coinVault:a,pcVault:u,withdrawQueue:c,ammTargetOrders:l,poolTempLp:m,marketProgramId:d,marketId:p,userWallet:g,userCoinVault:f,userPcVault:y,userLpVault:w,nonce:k,openTime:h,coinAmount:P,pcAmount:A,ammConfigId:K,feeDestinationId:S}){let B=R([F("instruction"),F("nonce"),b("openTime"),b("pcAmount"),b("coinAmount")]),_=[{pubkey:Ln,isSigner:!1,isWritable:!1},{pubkey:Sa,isSigner:!1,isWritable:!1},{pubkey:Vi.programId,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:K,isSigner:!1,isWritable:!1},{pubkey:S,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!0,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!0}],O=Buffer.alloc(B.span);return B.encode({instruction:1,nonce:k,openTime:h,coinAmount:P,pcAmount:A},O),{instruction:new Et({keys:_,programId:r,data:O}),instructionType:$.AmmV4CreatePool}}function Ka({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},i){let o=ft(r),s=Buffer.alloc(pr.span);pr.encode({instruction:9,amountIn:re(t),minAmountOut:re(n)},s);let a=[T({pubkey:Ln,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders})];return i===4&&a.push(T({pubkey:o.targetOrders})),a.push(T({pubkey:o.vault.A}),T({pubkey:o.vault.B})),i===5&&a.push(T({pubkey:Ct})),a.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:e.tokenAccountIn}),T({pubkey:e.tokenAccountOut}),T({pubkey:e.owner,isWritable:!1})),new Et({programId:o.programId,keys:a,data:s})}function La({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},i){let o=ft(r),s=Buffer.alloc(fr.span);fr.encode({instruction:11,maxAmountIn:re(t),amountOut:re(n)},s);let a=[T({pubkey:Vi.programId,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders}),T({pubkey:o.targetOrders}),T({pubkey:o.vault.A}),T({pubkey:o.vault.B})];return i===5&&a.push(T({pubkey:Ct})),a.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:e.tokenAccountIn}),T({pubkey:e.tokenAccountOut}),T({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Et({programId:o.programId,keys:a,data:s})}function Wi(r){let{poolKeys:e,version:t,userKeys:n,amountIn:i,amountOut:o,fixedSide:s}=r;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return Ka(Y(q({},a),{amountIn:i,minAmountOut:o}),t);if(s==="out")return La(Y(q({},a),{maxAmountIn:i,amountOut:o}),t);Fi.logWithError("invalid params","params",r)}throw Fi.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}import{TOKEN_PROGRAM_ID as ke,TOKEN_2022_PROGRAM_ID as pt,ASSOCIATED_TOKEN_PROGRAM_ID as co}from"@solana/spl-token";import{PublicKey as L,TransactionInstruction as qe,SystemProgram as vt,Keypair as Rr}from"@solana/web3.js";import lo from"bn.js";import Va from"bn.js";function Nn(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function hr(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function kr(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function tn(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function qi(r,e){return tn(r,e)?null:hr(r,e)}function Gi(r,e){return tn(r,e)?null:kr(r,e)}var Mp=Buffer.from("amm_config","utf8"),Na=Buffer.from("pool","utf8"),Ra=Buffer.from("pool_vault","utf8"),Ca=Buffer.from("pool_reward_vault","utf8"),Ui=Buffer.from("position","utf8"),Ea=Buffer.from("tick_array","utf8"),Ma=Buffer.from("operation","utf8"),_a=Buffer.from("pool_tick_array_bitmap_extension","utf8");function Xi(r,e,t,n){return de([Na,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Ar(r,e,t){return de([Ra,e.toBuffer(),t.toBuffer()],r)}function zi(r,e,t){return de([Ca,e.toBuffer(),t.toBuffer()],r)}function se(r,e,t){return de([Ea,e.toBuffer(),Nn(t)],r)}function kt(r,e,t,n){return de([Ui,e.toBuffer(),Nn(t),Nn(n)],r)}function He(r,e){return de([Ui,e.toBuffer()],r)}function Rn(r){return de([Buffer.from("metadata","utf8"),Lt.toBuffer(),r.toBuffer()],Lt)}function Tr(r){return de([Ma],r)}function Ye(r,e){return de([_a,e.toBuffer()],r)}import je from"bn.js";var pe=new je(0),Qe=new je(1),Je=new je(-1),ve=new je(1).shln(64),Cn=new je(1).shln(128),Pr=ve.sub(Qe),nn=64,Hi=Cn.subn(1),xe=-443636,Ke=-xe,Mt=new je("4295048016"),_t=new je("79226673521066979257578248091"),Yi=16,ji="59543866431248",Qi="184467440737095516",Zi="15793534762490258745",En=new je(10).pow(new je(6));var Fp=new je("18446744073700000000");var va=15,Q=class{static async getTickArrays(e,t,n,i,o,s,a){let u=[],c=M.getTickArrayStartIndexByTick(i,o),l=M.getInitializedTickArrayInRange(s,a,o,c,Math.floor(va/2));for(let p=0;p<l.length;p++){let{publicKey:g}=se(t,n,l[p]);u.push(g)}let m=(await lt(e,u)).map(p=>p!==null?rn.decode(p.data):null),d={};for(let p=0;p<u.length;p++){let g=m[p];g!==null&&(d[g.startTickIndex]=Y(q({},g),{address:u[p]}))}return d}static nextInitializedTick(e,t,n,i,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,i,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=M.getNextTickArrayStartIndex(c,o,s),this.checkIsValidStartIndex(c,o))throw new Error("No enough initialized tickArray");let l=n[c];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:d,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,d,p]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,i,o){let s=Math.floor(e/Q.tickCount(t)),a=n?M.searchLowBitFromStart(i,o,s-1,1,t):M.searchHightBitFromStart(i,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,i){let o;if(i){let a=ye-1;for(;a>=0;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a-1}}else{let a=0;for(;a<ye;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=se(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=M.getTickArrayStartIndexByTick(i,o),u=Math.floor((i-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u-1}else for(u=u+1;u<ye;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u+1}let{publicKey:m}=se(e,t,a);return{initializedTick:l,tickArrayAddress:m,tickArrayStartTickIndex:c.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(M.checkIsOutOfBoundary(e)){if(e>Ke)return!1;let n=M.getTickArrayStartIndexByTick(xe,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return ye*e}};import H from"bn.js";import{PublicKey as tt}from"@solana/web3.js";import me from"bn.js";var xr=14,et=class{static maxTickInTickarrayBitmap(e){return e*ye*At}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(i+=1);let o=n*i;return e<0?{minValue:-o,maxValue:-o+n}:{minValue:o,maxValue:o+n}}static nextInitializedTickArrayStartIndex(e,t,n,i){if(!Q.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-Q.tickCount(n):t+Q.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*ye,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(i){let l=e.shln(1024-c-1),m=qi(1024,l);if(m!==null){let d=(c-m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=Gi(1024,l);if(m!==null){let d=(c+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-Q.tickCount(n)}}}},on=class{static getBitmapOffset(e,t){if(!Q.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=et.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&i--,i}static getBitmap(e,t,n){let i=this.getBitmapOffset(e,t);return e<0?{offset:i,tickarrayBitmap:n.negativeTickArrayBitmap[i]}:{offset:i,tickarrayBitmap:n.positiveTickArrayBitmap[i]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:i}=this.extensionTickBoundary(t);if(e>=i&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=et.maxTickInTickarrayBitmap(e),n=-t;if(Ke<=t)throw Error(`extensionTickBoundary check error: ${Ke}, ${t}`);if(n<=xe)throw Error(`extensionTickBoundary check error: ${n}, ${xe}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:i}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:M.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=Q.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,i);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,i){let{minValue:o,maxValue:s}=et.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let u=M.mergeTickArrayBitmap(e).shln(At-1-a),c=tn(512,u)?null:hr(512,u);if(c!==null){let l=t-c*Q.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=M.mergeTickArrayBitmap(e).shrn(a),c=tn(512,u)?null:kr(512,u);if(c!==null){let l=t+c*Q.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-Q.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%et.maxTickInTickarrayBitmap(t),i=Math.floor(n/Q.tickCount(t));return e<0&&n!=0&&(i=At-i),i}};import Ze from"bn.js";var sn=class{static getfeeGrowthInside(e,t,n){let i=new Ze(0),o=new Ze(0);e.tickCurrent>=t.tick?(i=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(i=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),o=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new Ze(0),a=new Ze(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let u=X.wrappingSubU128(X.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),c=X.wrappingSubU128(X.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=X.mulDivFloor(X.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,ve),u=t.tokenFeesOwedA.add(a),c=X.mulDivFloor(X.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,ve),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=X.mulDivFloor(X.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,ve),u=t.tokenFeesOwedA.add(a),c=X.mulDivFloor(X.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,ve),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,i){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=X.wrappingSubU128(u,c.growthInsideLastX64),m=X.mulDivFloor(l,t.liquidity,ve),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static GetPositionRewards(e,t,n,i){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=X.wrappingSubU128(u,c.growthInsideLastX64),m=X.mulDivFloor(l,t.liquidity,ve),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static getRewardGrowthInside(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Ze(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Ze(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(X.wrappingSubU128(X.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Ze(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Ze(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(X.wrappingSubU128(X.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:o,epochInfo:s}){var y,w,k,h;let a=z.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),u=z.getSqrtPriceX64FromTick(t.tickLower),c=z.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+i:1-i,m=J.getAmountsFromLiquidity(a,u,c,n,o),[d,p]=[be(m.amountA,(y=e.mintA.extensions)==null?void 0:y.feeConfig,s,!0),be(m.amountB,(w=e.mintB.extensions)==null?void 0:w.feeConfig,s,!0)],[g,f]=[be(new Ze(new N(m.amountA.toString()).mul(l).toFixed(0)),(k=e.mintA.extensions)==null?void 0:k.feeConfig,s,!0),be(new Ze(new N(m.amountB.toString()).mul(l).toFixed(0)),(h=e.mintB.extensions)==null?void 0:h.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:g,amountSlippageB:f,expirationTime:gt(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as $i}from"@solana/spl-token";var Be=class{static getOutputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintA.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:g}=Tt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,c,o);return a.push(...d),{expectedAmountOut:m.mul(Je),remainingAccounts:a,executionPrice:p,feeAmount:g}}static getInputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:y}=se(e.programId,e.id,f.nextStartIndex);a.push(y)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:g}=Tt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(Je),c,o);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:g}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=Be.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?on.checkTickArrayIsInit(Q.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):M.checkTickArrayIsInitialized(M.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=se(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,Q.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=se(e.programId,e.id,s);return{isExist:!0,startIndex:s,nextAccountMeta:a}}return{isExist:!1,nextAccountMeta:void 0,startIndex:void 0}}static preInitializedTickArrayStartIndex(e,t){let n=Math.floor(e.tickCurrent/Q.tickCount(e.tickSpacing)),i=t?M.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):M.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return i.length>0?{isExist:!0,nextStartIndex:i[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=Q.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=et.nextInitializedTickArrayStartIndex(M.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=on.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<xe||t>Ke)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],d=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(d===void 0)throw Error("get new reward mint info error");let p=Y(q({},m),{perSecond:X.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new tt(d)});if(p.tokenMint.equals(tt.default))continue;if(n<=p.openTime.toNumber()||i.eq(pe)){s.push(p);continue}let g=new me(Math.min(p.endTime.toNumber(),n)),f=g.sub(p.lastUpdateTime),y=X.mulDivFloor(f,p.emissionsPerSecondX64,i),w=p.rewardGrowthGlobalX64.add(y),k=X.mulDivFloor(f,p.emissionsPerSecondX64,ve),h=p.rewardTotalEmissioned.add(k);s.push(Y(q({},p),{rewardGrowthGlobalX64:w,rewardTotalEmissioned:h,lastUpdateTime:g}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let o of t){let s=M.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=et.maxTickInTickarrayBitmap(e),n=-t;return t>Ke&&(t=Q.getArrayStartIndex(Ke,e)+Q.tickCount(e)),n<xe&&(n=Q.getArrayStartIndex(xe,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!Q.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/Q.tickCount(t)*At}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await Bn(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=to.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let i={},o=[];for(let u of t){let c=M.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=M.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:d}=se(u.programId,u.id,m);o.push({pubkey:d}),i[d.toString()]=u.id}}let s=await Bn(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=i[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=rn.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=Y(q({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:i=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(d=>d.accountInfo.mint),c=[];for(let d of u)for(let p of s)c.push(He(p,d).publicKey);let l=await lt(t,c,{batchRequest:i}),m={};for(let d of l){if(d===null)continue;let p=eo.decode(d.data),g=p.poolId.toString(),f=e.find(B=>B.state.id.toBase58()===g);if(f===void 0)continue;let y=f.state,w=M._getTickPriceLegacy({poolInfo:y,tick:p.tickLower,baseIn:!0}),k=M._getTickPriceLegacy({poolInfo:y,tick:p.tickUpper,baseIn:!0}),{amountA:h,amountB:P}=J.getAmountsFromLiquidity(y.sqrtPriceX64,w.tickSqrtPriceX64,k.tickSqrtPriceX64,p.liquidity,!1),A=1/(1-Math.sqrt(Math.sqrt(w.price.div(k.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:w.price,priceUpper:k.price,amountA:h,amountB:P,tickLower:p.tickLower,tickUpper:p.tickUpper,liquidity:p.liquidity,feeGrowthInsideLastX64A:p.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:p.feeGrowthInsideLastX64B,tokenFeesOwedA:p.tokenFeesOwedA,tokenFeesOwedB:p.tokenFeesOwedB,rewardInfos:p.rewardInfos.map(B=>Y(q({},B),{pendingReward:new me(0)})),leverage:A,tokenFeeAmountA:new me(0),tokenFeeAmountB:new me(0)}];let K=await M.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),S=await M.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=K,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=S}if(o){let d=Object.values(m),p=await lt(t,d,{batchRequest:i}),g={};for(let f=0;f<d.length;f++){let y=p[f];if(y===null)continue;let w=d[f].toString();g[w]=rn.decode(y.data)}for(let{state:f,positionAccount:y}of e)if(!!y)for(let w of y){let k=`${f.programId.toString()}-${f.id.toString()}-${w.tickLower}`,h=`${f.programId.toString()}-${f.id.toString()}-${w.tickUpper}`,P=g[m[k].toString()],A=g[m[h].toString()],K=P.ticks[M.getTickOffsetInArray(w.tickLower,f.tickSpacing)],S=A.ticks[M.getTickOffsetInArray(w.tickUpper,f.tickSpacing)],{tokenFeeAmountA:B,tokenFeeAmountB:_}=await sn.GetPositionFees(f,w,K,S),O=await sn.GetPositionRewards(f,w,K,S);w.tokenFeeAmountA=B.gte(new me(0))?B:new me(0),w.tokenFeeAmountB=_.gte(new me(0))?_:new me(0);for(let U=0;U<O.length;U++)w.rewardInfos[U].pendingReward=O[U].gte(new me(0))?O[U]:new me(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:o,slippage:s,priceLimit:a=new N(0)}){var O;let u,c=n.toBase58()===e.mintA.address,[l,m]=c?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new N(0))?u=c?Mt.add(new me(1)):_t.sub(new me(1)):u=z.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let d=be(o,l,i,!1),{expectedAmountOut:p,remainingAccounts:g,executionPrice:f,feeAmount:y}=Be.getOutputAmountAndRemainAccounts(e,t,n,d.amount.sub((O=d.fee)!=null?O:pe),u),w=be(p,m,i,!1),k=z.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),h=c?k:new N(1).div(k),P=p.mul(new me(Math.floor((1-s)*1e10))).div(new me(1e10)),A=be(P,m,i,!1),K=c?e.currentPrice:new N(1).div(e.currentPrice),S=new N(h).sub(K).abs(),B=K,_=new Xe(new N(S).mul(10**15).toFixed(0),new N(B).mul(10**15).toFixed(0));return{realAmountIn:d,amountOut:w,minAmountOut:A,expirationTime:gt(d.expirationTime,w.expirationTime),currentPrice:e.currentPrice,executionPrice:h,priceImpact:_,fee:y,remainingAccounts:g}}static async computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:i,slippage:o,epochInfo:s}){let a=i.address===e.mintB.address,[u,c]=a?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,m]=[new Te(Y(q({},u),{mint:u.address,isToken2022:u.programId===$i.toBase58()})),new Te(Y(q({},c),{mint:c.address,isToken2022:c.programId===$i.toBase58()}))],{realAmountIn:d,amountOut:p,minAmountOut:g,expirationTime:f,currentPrice:y,executionPrice:w,priceImpact:k,fee:h,remainingAccounts:P}=await Be.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new tt(u.address),amountIn:n,slippage:o,epochInfo:s}),A=Y(q({},d),{amount:new le(l,d.amount),fee:d.fee===void 0?void 0:new le(l,d.fee)}),K=Y(q({},p),{amount:new le(m,p.amount),fee:p.fee===void 0?void 0:new le(m,p.fee)}),S=Y(q({},g),{amount:new le(m,g.amount),fee:g.fee===void 0?void 0:new le(m,g.fee)}),B=new Fe({baseToken:l,denominator:new me(10).pow(new me(20+l.decimals)),quoteToken:m,numerator:y.mul(new N(10**(20+m.decimals))).toFixed(0)}),_=new Fe({baseToken:l,denominator:new me(10).pow(new me(20+l.decimals)),quoteToken:m,numerator:w.mul(new N(10**(20+m.decimals))).toFixed(0)}),O=new le(l,h);return{realAmountIn:A,amountOut:K,minAmountOut:S,expirationTime:f,currentPrice:B,executionPrice:_,priceImpact:k,fee:O,remainingAccounts:P}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var g,f,y;let o=e[t],s=M.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=M.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,m=a-s,d=o.priceMax-o.priceMin,p;return l<=0?p=0:m===l?p=d/l:d===l?p=l/m:p=l/d*(l/m),{feeApr:o.feeApr*p,rewardsApr:[(g=o.rewardApr[0])!=null?g:0*p,(f=o.rewardApr[1])!=null?f:0*p,(y=o.rewardApr[2])!=null?y:0*p],apr:o.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:i,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=i[Zn(e.mintA.address).toString()],d=i[Zn(e.mintB.address).toString()],p=e.mintA.decimals,g=e.mintB.decimals;if(!l||!m||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=z.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),y=z.getSqrtPriceX64FromTick(s),w=z.getSqrtPriceX64FromTick(a),{amountSlippageA:k,amountSlippageB:h}=J.getAmountsFromLiquidityWithSlippage(f,y,w,t,!1,!1,0),{amountSlippageA:P,amountSlippageB:A}=J.getAmountsFromLiquidityWithSlippage(f,y,w,o,!1,!1,0),K=new N(k.toString()).div(new N(10).pow(p)).mul(m.value).add(new N(h.toString()).div(new N(10).pow(g)).mul(d.value)),S=new N(P.toString()).div(new N(10).pow(p)).mul(m.value).add(new N(A.toString()).div(new N(10).pow(g)).mul(d.value)),B=S.div(K.add(S)).div(S),O=new N(l.volumeFee).mul(365).div(c).mul(B).mul(100).toNumber(),U=3600*24*365,ue=e.rewardDefaultInfos.map(ne=>{var Z,nt;let oe=ne.mint.decimals,j=i[ne.mint.address];return u<((Z=ne.startTime)!=null?Z:0)||u>((nt=ne.endTime)!=null?nt:0)||!ne.perSecond||!j||oe===void 0?0:new N(j.value).mul(new N(ne.perSecond).mul(U)).div(new N(10).pow(oe)).mul(B).mul(100).toNumber()});return{feeApr:O,rewardsApr:ue,apr:O+ue.reduce((ne,oe)=>ne+oe,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var w,k;let l=z.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),m=z.getSqrtPriceX64FromTick(n),d=z.getSqrtPriceX64FromTick(i),p=a?1-s:1+s,g=be(o,(w=e[t?"mintA":"mintB"].extensions)==null?void 0:w.feeConfig,u,!c),f=new me(new N(g.amount.sub((k=g.fee)!=null?k:pe).toString()).mul(p).toFixed(0)),y;if(l.lte(m))y=t?J.getLiquidityFromTokenAmountA(m,d,f,!a):new me(0);else if(l.lte(d)){let h=J.getLiquidityFromTokenAmountA(l,d,f,!a),P=J.getLiquidityFromTokenAmountB(m,l,f);y=t?h:P}else y=t?new me(0):J.getLiquidityFromTokenAmountB(m,d,f);return Be.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:i,liquidity:y,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:o,slippage:s,add:a}){var y,w,k,h;let u=z.getSqrtPriceX64FromTick(n),c=z.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,m=J.getAmountsFromLiquidity(z.priceToSqrtPriceX64(new N(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[d,p]=[be(m.amountA,(y=t.mintA.extensions)==null?void 0:y.feeConfig,e,!0),be(m.amountB,(w=t.mintB.extensions)==null?void 0:w.feeConfig,e,!0)],[g,f]=[be(m.amountA.muln(l),(k=t.mintA.extensions)==null?void 0:k.feeConfig,e,!0),be(m.amountB.muln(l),(h=t.mintB.extensions)==null?void 0:h.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:p,amountSlippageA:g,amountSlippageB:f,expirationTime:gt(d.expirationTime,p.expirationTime)}}static async fetchComputeClmmInfo({connection:e,poolInfo:t}){let n=await e.getAccountInfo(new tt(t.id));if(!n)throw new Error(`pool not found ${t.id}`);let i=Ji.decode(n.data),o=Ye(new tt(t.programId),new tt(t.id)).publicKey,s=await Be.fetchExBitmaps({connection:e,exBitmapAddress:[o],batchRequest:!1});return Y(q({},i),{id:new tt(t.id),programId:new tt(t.programId),mintA:t.mintA,mintB:t.mintB,ammConfig:Y(q({},t.config),{id:new tt(t.config.id),fundOwner:""}),currentPrice:new N(t.price),exBitmapInfo:s[o.toBase58()],startTime:i.startTime.toNumber()})}};var X=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(pe)||(o=o.add(Qe)),o}static mulDivFloor(e,t,n){if(n.eq(pe))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(pe))throw new Error("division by 0");return e.mul(t).add(n.sub(Qe)).div(n)}static x64ToDecimal(e,t){return new N(e.toString()).div(N.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new H(e.mul(N.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Cn).sub(t).mod(Cn)}};function ge(r,e){return Br(r.mul(e),64,256)}function Fa(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Br(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var z=class{static sqrtPriceX64ToPrice(e,t,n){return X.x64ToDecimal(e).pow(2).mul(N.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return X.decimalToX64(e.mul(N.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(pe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(pe))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,i){if(!e.gt(pe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(pe))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,i){if(n.eq(pe))return e;let o=t.shln(nn);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?X.mulDivCeil(s,e,a):X.mulDivRoundingUp(s,Qe,s.div(e).add(n))}else{let s=n.mul(e);if(!o.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=o.sub(s);return X.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(nn);if(i)return e.add(o.div(t));{let s=X.mulDivRoundingUp(o,Qe,t);if(!e.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountBRoundingDown sqrtPriceX64 must gt amountDivLiquidity");return e.sub(s)}}static getSqrtPriceX64FromTick(e){if(!Number.isInteger(e))throw new Error("tick must be integer");if(e<xe||e>Ke)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new H("18445821805675395072"):new H("18446744073709551616");return(t&2)!=0&&(n=ge(n,new H("18444899583751176192"))),(t&4)!=0&&(n=ge(n,new H("18443055278223355904"))),(t&8)!=0&&(n=ge(n,new H("18439367220385607680"))),(t&16)!=0&&(n=ge(n,new H("18431993317065453568"))),(t&32)!=0&&(n=ge(n,new H("18417254355718170624"))),(t&64)!=0&&(n=ge(n,new H("18387811781193609216"))),(t&128)!=0&&(n=ge(n,new H("18329067761203558400"))),(t&256)!=0&&(n=ge(n,new H("18212142134806163456"))),(t&512)!=0&&(n=ge(n,new H("17980523815641700352"))),(t&1024)!=0&&(n=ge(n,new H("17526086738831433728"))),(t&2048)!=0&&(n=ge(n,new H("16651378430235570176"))),(t&4096)!=0&&(n=ge(n,new H("15030750278694412288"))),(t&8192)!=0&&(n=ge(n,new H("12247334978884435968"))),(t&16384)!=0&&(n=ge(n,new H("8131365268886854656"))),(t&32768)!=0&&(n=ge(n,new H("3584323654725218816"))),(t&65536)!=0&&(n=ge(n,new H("696457651848324352"))),(t&131072)!=0&&(n=ge(n,new H("26294789957507116"))),(t&262144)!=0&&(n=ge(n,new H("37481735321082"))),e>0&&(n=Hi.div(n)),n}static getTickFromPrice(e,t,n){return z.getTickFromSqrtPriceX64(z.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(_t)||e.lt(Mt))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new H(t-64),i=Fa(n,32,128),o=new H("8000000000000000","hex"),s=0,a=new H(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new H(0))&&s<Yi;){u=u.mul(u);let g=u.shrn(127);u=u.shrn(63+g.toNumber()),a=a.add(o.mul(g)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=i.add(c).mul(new H(ji)),d=Br(m.sub(new H(Qi)),64,128).toNumber(),p=Br(m.add(new H(Zi)),64,128).toNumber();return d==p?d:z.getSqrtPriceX64FromTick(p).lte(e)?p:d}},Pt=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=z.getTickFromSqrtPriceX64(z.priceToSqrtPriceX64(e,n,i))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,i){let o=Pt.getTickWithPriceAndTickspacing(e,t,n,i),s=z.getSqrtPriceX64FromTick(o);return z.sqrtPriceX64ToPrice(s,n,i)}},J=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(pe))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(nn),s=t.sub(e);return i?X.mulDivRoundingUp(X.mulDivCeil(o,s,t),Qe,e):X.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(pe))throw new Error("sqrtPriceX64A must greater than 0");return i?X.mulDivCeil(n,t.sub(e),ve):X.mulDivFloor(n,t.sub(e),ve)}static getLiquidityFromTokenAmountA(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return i?X.mulDivRoundingUp(a,Qe,Pr):a.shrn(nn)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),X.mulDivFloor(n,Pr,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return J.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=J.getLiquidityFromTokenAmountA(e,n,i,!1),a=J.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return J.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:J.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new H(0)};if(e.lt(n)){let s=J.getTokenAmountAFromLiquidity(e,n,i,o),a=J.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new H(0),amountB:J.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:u,amountB:c}=J.getAmountsFromLiquidity(e,t,n,i,s),l=o?1+a:1-a,m=new H(new N(u.toString()).mul(l).toFixed(0)),d=new H(new N(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:i,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var k,h,P,A;let c=z.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),l=z.getSqrtPriceX64FromTick(t),m=z.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,p=J.getAmountsFromLiquidity(c,l,m,i,s),[g,f]=[be(p.amountA,(k=e.mintA.extensions)==null?void 0:k.feeConfig,a,u),be(p.amountB,(h=e.mintB.extensions)==null?void 0:h.feeConfig,a,u)],[y,w]=[be(new H(new N(p.amountA.toString()).mul(d).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,u),be(new H(new N(p.amountB.toString()).mul(d).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)];return{liquidity:i,amountA:g,amountB:f,amountSlippageA:y,amountSlippageB:w,expirationTime:gt(g.expirationTime,f.expirationTime)}}},Tt=class{static swapCompute(e,t,n,i,o,s,a,u,c,l,m,d,p,g){if(d.eq(pe))throw new Error("amountSpecified must not be 0");if(g||(g=s?Mt.add(Qe):_t.sub(Qe)),s){if(g.lt(Mt))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(g.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(g.gt(_t))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(g.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let f=d.gt(pe),y={amountSpecifiedRemaining:d,amountCalculated:pe,sqrtPriceX64:m,tick:c>p?Math.min(p+Q.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new H(0)},w=p,k=n[p],h=0,P=!s&&k.startTickIndex===y.tick;for(;!y.amountSpecifiedRemaining.eq(pe)&&!y.sqrtPriceX64.eq(g);){if(h>10)throw Error("liquidity limit");let A={};A.sqrtPriceStartX64=y.sqrtPriceX64;let K=M.nextInitTick(k,y.tick,l,s,P),S=K||null,B=null;if(!(S!=null&&S.liquidityGross.gtn(0))){let O=Be.nextInitializedTickArrayStartIndex({tickCurrent:y.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},w,s);if(!O.isExist)throw Error("swapCompute LiquidityInsufficient");w=O.nextStartIndex;let{publicKey:U}=se(e,t,w);B=U,k=n[w],S=M.firstInitializedTick(k,s)}A.tickNext=S.tick,A.initialized=S.liquidityGross.gtn(0),p!==w&&B&&(y.accounts.push(B),p=w),A.tickNext<xe?A.tickNext=xe:A.tickNext>Ke&&(A.tickNext=Ke),A.sqrtPriceNextX64=z.getSqrtPriceX64FromTick(A.tickNext);let _;if(s&&A.sqrtPriceNextX64.lt(g)||!s&&A.sqrtPriceNextX64.gt(g)?_=g:_=A.sqrtPriceNextX64,[y.sqrtPriceX64,A.amountIn,A.amountOut,A.feeAmount]=Tt.swapStepCompute(y.sqrtPriceX64,_,y.liquidity,y.amountSpecifiedRemaining,a),y.feeAmount=y.feeAmount.add(A.feeAmount),f?(y.amountSpecifiedRemaining=y.amountSpecifiedRemaining.sub(A.amountIn.add(A.feeAmount)),y.amountCalculated=y.amountCalculated.sub(A.amountOut)):(y.amountSpecifiedRemaining=y.amountSpecifiedRemaining.add(A.amountOut),y.amountCalculated=y.amountCalculated.add(A.amountIn.add(A.feeAmount))),y.sqrtPriceX64.eq(A.sqrtPriceNextX64)){if(A.initialized){let O=S.liquidityNet;s&&(O=O.mul(Je)),y.liquidity=J.addDelta(y.liquidity,O)}P=A.tickNext!=y.tick&&!s&&k.startTickIndex===A.tickNext,y.tick=s?A.tickNext-1:A.tickNext}else if(y.sqrtPriceX64!=A.sqrtPriceStartX64){let O=z.getTickFromSqrtPriceX64(y.sqrtPriceX64);P=O!=y.tick&&!s&&k.startTickIndex===O,y.tick=O}++h}try{let{nextStartIndex:A,isExist:K}=Q.nextInitializedTickArray(y.tick,l,s,i,o);K&&p!==A&&(y.accounts.push(se(e,t,A).publicKey),p=A)}catch{}return{amountCalculated:y.amountCalculated,feeAmount:y.feeAmount,sqrtPriceX64:y.sqrtPriceX64,liquidity:y.liquidity,tickCurrent:y.tick,accounts:y.accounts}}static swapStepCompute(e,t,n,i,o){let s={sqrtPriceX64Next:new H(0),amountIn:new H(0),amountOut:new H(0),feeAmount:new H(0)},a=e.gte(t),u=i.gte(pe);if(u){let l=X.mulDivFloor(i,En.sub(new H(o.toString())),En);s.amountIn=a?J.getTokenAmountAFromLiquidity(t,e,n,!0):J.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=z.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?J.getTokenAmountBFromLiquidity(t,e,n,!1):J.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(Je).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=z.getNextSqrtPriceX64FromOutput(e,n,i.mul(Je),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=J.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=J.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:J.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:J.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(i.mul(Je))&&(s.amountOut=i.mul(Je)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=i.sub(s.amountIn):s.feeAmount=X.mulDivCeil(s.amountIn,new H(o),En.sub(new H(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var ye=60,At=512,M=class{static getTickArrayAddressByTick(e,t,n,i){let o=M.getTickArrayStartIndexByTick(n,i),{publicKey:s}=se(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=M.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=ye)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=Q.tickCount(t),i=e/n;return e<0&&e%n!=0?i=Math.ceil(i)-1:i=Math.floor(i),i}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*Q.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*ye,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*ye,o=Math.floor(t/i)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*i}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*ye:e+t*ye}static mergeTickArrayBitmap(e){let t=new Va(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,i,o){let s=Math.floor(i/(n*ye));return[...M.searchLowBitFromStart(e,t,s-1,o,n),...M.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return M.searchHightBitFromStart(e,t,0,At,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=M.getAllInitializedTickArrayStartIndex(n,i,o);for(let u of a){let{publicKey:c}=se(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>M.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n--,a.length===i)break}let u=Q.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>M.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n++,a.length===i)break}let u=Q.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<xe||e>Ke}static nextInitTick(e,t,n,i,o){if(Q.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(i)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<ye;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=ye-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<ye;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let i=z.getSqrtPriceX64FromTick(t),o=z.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new N(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new N(1).div(t),o=Pt.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=z.getSqrtPriceX64FromTick(o),a=z.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new N(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=z.getSqrtPriceX64FromTick(t),o=z.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new N(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new N(1).div(t),o=Pt.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=z.getSqrtPriceX64FromTick(o),a=z.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new N(1).div(a)}}};var zf=R([Pe(8),F("bump"),Nt("index"),I(""),Me("protocolFeeRate"),Me("tradeFeeRate"),Nt("tickSpacing"),W(b(),8,"")]),Oa=R([Me("blockTimestamp"),V("sqrtPriceX64"),V("cumulativeTimePriceX64"),W(V(),1,"")]),Ir=R([Pe(8),Re("initialized"),I("poolId"),W(Oa,1e3,"observations"),W(V(),5,"")]),Da=R([F("rewardState"),b("openTime"),b("endTime"),b("lastUpdateTime"),V("emissionsPerSecondX64"),b("rewardTotalEmissioned"),b("rewardClaimed"),I("tokenMint"),I("tokenVault"),I("creator"),V("rewardGrowthGlobalX64")]),Ji=R([Pe(8),F("bump"),I("ammConfig"),I("creator"),I("mintA"),I("mintB"),I("vaultA"),I("vaultB"),I("observationId"),F("mintDecimalsA"),F("mintDecimalsB"),Nt("tickSpacing"),V("liquidity"),V("sqrtPriceX64"),he("tickCurrent"),Nt("observationIndex"),Nt("observationUpdateDuration"),V("feeGrowthGlobalX64A"),V("feeGrowthGlobalX64B"),b("protocolFeesTokenA"),b("protocolFeesTokenB"),V("swapInAmountTokenA"),V("swapOutAmountTokenB"),V("swapInAmountTokenB"),V("swapOutAmountTokenA"),F("status"),W(F(),7,""),W(Da,3,"rewardInfos"),W(b(),16,"tickArrayBitmap"),b("totalFeesTokenA"),b("totalFeesClaimedTokenA"),b("totalFeesTokenB"),b("totalFeesClaimedTokenB"),b("fundFeesTokenA"),b("fundFeesTokenB"),b("startTime"),W(b(),15*4-3,"padding")]),Wa=R([V("growthInsideLastX64"),b("rewardAmountOwed")]),eo=R([Pe(8),F("bump"),I("nftMint"),I("poolId"),he("tickLower"),he("tickUpper"),V("liquidity"),V("feeGrowthInsideLastX64A"),V("feeGrowthInsideLastX64B"),b("tokenFeesOwedA"),b("tokenFeesOwedB"),W(Wa,3,"rewardInfos"),W(b(),8,"")]),Hf=R([Pe(8),F("bump"),I("poolId"),he("tickLowerIndex"),he("tickUpperIndex"),V("liquidity"),V("feeGrowthInsideLastX64A"),V("feeGrowthInsideLastX64B"),b("tokenFeesOwedA"),b("tokenFeesOwedB"),W(V(),3,"rewardGrowthInside"),W(b(),8,"")]),qa=R([he("tick"),gi("liquidityNet"),V("liquidityGross"),V("feeGrowthOutsideX64A"),V("feeGrowthOutsideX64B"),W(V(),3,"rewardGrowthsOutsideX64"),W(Me(),13,"")]),rn=R([Pe(8),I("poolId"),he("startTickIndex"),W(qa,ye,"ticks"),F("initializedTickCount"),W(F(),115,"")]),Yf=R([Pe(329),W(I(),100,"whitelistMints")]),to=R([Pe(8),I("poolId"),W(W(b(),8),xr,"positiveTickArrayBitmap"),W(W(b(),8),xr,"negativeTickArrayBitmap")]);import{PublicKey as Ha,Keypair as Ya}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ja}from"@solana/spl-token";import bb from"bn.js";var no=R([I("mint"),I("owner"),b("amount"),Me("delegateOption"),I("delegate"),F("state"),Me("isNativeOption"),b("isNative"),b("delegatedAmount"),Me("closeAuthorityOption"),I("closeAuthority")]);function Ga(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function Sr(r,...e){if(!Ga(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${r.length}`)}function Kr(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function ro(r,e){Sr(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var _n=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),We=(r,e)=>r<<32-e|r>>>e;var eb=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Ua(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Lr(r){return typeof r=="string"&&(r=Ua(r)),Sr(r),r}var Mn=class{clone(){return this._cloneInto()}},tb={}.toString;function io(r){let e=n=>r().update(Lr(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function Xa(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let i=BigInt(32),o=BigInt(4294967295),s=Number(t>>i&o),a=Number(t&o),u=n?4:0,c=n?0:4;r.setUint32(e+u,s,n),r.setUint32(e+c,a,n)}var oo=(r,e,t)=>r&e^~r&t,so=(r,e,t)=>r&e^r&t^e&t,vn=class extends Mn{constructor(e,t,n,i){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=_n(this.buffer)}update(e){Kr(this);let{view:t,buffer:n,blockLen:i}=this;e=Lr(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(i-this.pos,o-s);if(a===i){let u=_n(e);for(;i<=o-s;s+=i)this.process(u,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===i&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Kr(this),ro(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:i,isLE:o}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>i-s&&(this.process(n,0),s=0);for(let m=s;m<i;m++)t[m]=0;Xa(n,i-8,BigInt(this.length*8),o),this.process(n,0);let a=_n(e),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let c=u/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<c;m++)a.setUint32(4*m,l[m],o)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:i,finished:o,destroyed:s,pos:a}=this;return e.length=i,e.pos=a,e.finished=o,e.destroyed=s,i%t&&e.buffer.set(n),e}};var za=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),mt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),dt=new Uint32Array(64),Nr=class extends vn{constructor(){super(64,32,8,!1),this.A=mt[0]|0,this.B=mt[1]|0,this.C=mt[2]|0,this.D=mt[3]|0,this.E=mt[4]|0,this.F=mt[5]|0,this.G=mt[6]|0,this.H=mt[7]|0}get(){let{A:e,B:t,C:n,D:i,E:o,F:s,G:a,H:u}=this;return[e,t,n,i,o,s,a,u]}set(e,t,n,i,o,s,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=i|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)dt[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=dt[m-15],p=dt[m-2],g=We(d,7)^We(d,18)^d>>>3,f=We(p,17)^We(p,19)^p>>>10;dt[m]=f+dt[m-7]+g+dt[m-16]|0}let{A:n,B:i,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let d=We(a,6)^We(a,11)^We(a,25),p=l+d+oo(a,u,c)+za[m]+dt[m]|0,f=(We(n,2)^We(n,13)^We(n,22))+so(n,i,o)|0;l=c,c=u,u=a,a=s+p|0,s=o,o=i,i=n,n=p+f|0}n=n+this.A|0,i=i+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,i,o,s,a,u,c,l)}roundClean(){dt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var ao=io(()=>new Nr);var hb=ie("Raydium_Util");function uo({fromPublicKey:r,programId:e=ja}){let t=Ya.generate().publicKey.toBase58().slice(0,32);return{publicKey:Qa(r,t,e),seed:t}}function Qa(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=ao(n);return new Ha(i)}var mo=ie("Raydium_Clmm"),Ge={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],closePosition:[123,134,81,0,49,68,98,98],increaseLiquidity:[133,29,89,223,69,238,176,10],decreaseLiquidity:[58,127,188,62,79,82,196,96],swap:[43,4,237,11,26,201,30,98],collectReward:[18,237,166,197,34,16,213,144]},Fn=class{static createPoolInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g){let f=R([V("sqrtPriceX64"),b("startTime")]),y=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:vt.programId,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1}],w=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:g},w);let k=Buffer.from([...Ge.createPool,...w]);return new qe({keys:y,programId:e,data:k})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:i,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=uo({fromPublicKey:i,programId:n}),[d,p]=[new L(o.address),new L(s.address)],g=[vt.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Ir.span),space:Ir.span,programId:n})],{publicKey:f}=Xi(n,a,d,p),{publicKey:y}=Ar(n,f,d),{publicKey:w}=Ar(n,f,p);return g.push(this.createPoolInstruction(n,f,i,a,m.publicKey,d,y,new L(o.programId||ke),p,w,new L(s.programId||ke),Ye(n,f).publicKey,u,c)),{signers:[],instructions:g,instructionTypes:[$.CreateAccount,$.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:y,mintBVault:w},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g,f,y,w,k,h,P,A,K,S,B,_,O){let U=R([he("tickLowerIndex"),he("tickUpperIndex"),he("tickArrayLowerStartIndex"),he("tickArrayUpperStartIndex"),V("liquidity"),b("amountMaxA"),b("amountMaxB"),Re("withMetadata"),F("optionBaseFlag"),Re("baseFlag")]),ue=[...O?[{pubkey:O,isSigner:!1,isWritable:!0}]:[]],ne=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:vt.programId,isSigner:!1,isWritable:!1},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:co,isSigner:!1,isWritable:!1},{pubkey:Lt,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},...ue],oe=Buffer.alloc(U.span);U.encode({tickLowerIndex:k,tickUpperIndex:h,tickArrayLowerStartIndex:P,tickArrayUpperStartIndex:A,liquidity:K,amountMaxA:S,amountMaxB:B,withMetadata:_==="create",baseFlag:!1,optionBaseFlag:0},oe);let j=Buffer.from([...Ge.openPosition,...oe]);return new qe({keys:ne,programId:e,data:j})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new L(e.programId),new L(e.id)],g;if(l)g=new L((await l(1))[0]);else{let B=Rr.generate();m.push(B),g=B.publicKey}let f=M.getTickArrayStartIndexByTick(i,e.config.tickSpacing),y=M.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:w}=se(d,p,f),{publicKey:k}=se(d,p,y),{publicKey:h}=_e(n.wallet,g,ke),{publicKey:P}=Rn(g),{publicKey:A}=He(d,g),{publicKey:K}=kt(d,p,i,o),S=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,g,h,P,K,w,k,A,n.tokenAccountA,n.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(e.mintA.address),new L(e.mintB.address),i,o,f,y,s,a,u,c);return{signers:m,instructions:[S],instructionTypes:[$.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:g,tickArrayLower:w,tickArrayUpper:k,positionNftAccount:h,metadataAccount:P,personalPosition:A,protocolPosition:K}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new L(e.programId),new L(e.id)],g;if(l)g=new L((await l(1))[0]);else{let B=Rr.generate();m.push(B),g=B.publicKey}let f=M.getTickArrayStartIndexByTick(i,e.config.tickSpacing),y=M.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:w}=se(d,p,f),{publicKey:k}=se(d,p,y),{publicKey:h}=_e(n.wallet,g,ke),{publicKey:P}=Rn(g),{publicKey:A}=He(d,g),{publicKey:K}=kt(d,p,i,o),S=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,g,h,P,K,w,k,A,n.tokenAccountA,n.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(e.mintA.address),new L(e.mintB.address),i,o,f,y,c,s,a,u,Be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,y])?Ye(d,p).publicKey:void 0);return{address:{nftMint:g,tickArrayLower:w,tickArrayUpper:k,positionNftAccount:h,metadataAccount:P,personalPosition:A,protocolPosition:K},instructions:[S],signers:m,instructionTypes:[$.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g,f,y,w,k,h,P,A,K,S,B,_,O){let U=R([he("tickLowerIndex"),he("tickUpperIndex"),he("tickArrayLowerStartIndex"),he("tickArrayUpperStartIndex"),V("liquidity"),b("amountMaxA"),b("amountMaxB"),Re("withMetadata"),F("optionBaseFlag"),Re("baseFlag")]),ue=[...O?[{pubkey:O,isSigner:!1,isWritable:!0}]:[]],ne=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:vt.programId,isSigner:!1,isWritable:!1},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:co,isSigner:!1,isWritable:!1},{pubkey:Lt,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},...ue],oe=Buffer.alloc(U.span);U.encode({tickLowerIndex:k,tickUpperIndex:h,tickArrayLowerStartIndex:P,tickArrayUpperStartIndex:A,liquidity:new lo(0),amountMaxA:S==="MintA"?B:_,amountMaxB:S==="MintA"?_:B,withMetadata:K==="create",baseFlag:S==="MintA",optionBaseFlag:1},oe);let j=Buffer.from([...Ge.openPosition,...oe]);return new qe({keys:ne,programId:e,data:j})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,d=[];if(l)m=new L((await l(1))[0]);else{let B=Rr.generate();d.push(B),m=B.publicKey}let[p,g]=[new L(e.programId),new L(e.id)],f=M.getTickArrayStartIndexByTick(i,e.config.tickSpacing),y=M.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:w}=se(p,g,f),{publicKey:k}=se(p,g,y),{publicKey:h}=_e(n.wallet,m,ke),{publicKey:P}=Rn(m),{publicKey:A}=He(p,m),{publicKey:K}=kt(p,g,i,o),S=this.openPositionFromLiquidityInstruction(p,n.wallet,g,n.wallet,m,h,P,K,w,k,A,n.tokenAccountA,n.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(t.mintA.address),new L(t.mintB.address),i,o,f,y,s,a,u,c,Be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,y])?Ye(p,g).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:w,tickArrayUpper:k,positionNftAccount:h,metadataAccount:P,personalPosition:A,protocolPosition:K},instructions:[S],signers:d,instructionTypes:[$.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,o){let s=R([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:vt.programId,isSigner:!1,isWritable:!1},{pubkey:ke,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...Ge.closePosition,...u]);return new qe({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i}){let o=new L(e.programId),{publicKey:s}=_e(n.wallet,i.nftMint,ke),{publicKey:a}=He(o,i.nftMint),u=[];return u.push(this.closePositionInstruction(o,n.wallet,i.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:u,instructionTypes:[$.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g,f,y,w,k){let h=R([V("liquidity"),b("amountMaxA"),b("amountMaxB"),F("optionBaseFlag"),Re("baseFlag")]),P=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[]],A=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...P],K=Buffer.alloc(h.span);h.encode({liquidity:f,amountMaxA:y,amountMaxB:w,optionBaseFlag:0,baseFlag:!1},K);let S=Buffer.from([...Ge.increaseLiquidity,...K]);return new qe({keys:A,programId:e,data:S})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new L(e.programId),new L(e.id)],l=M.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=M.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=se(u,c,l),{publicKey:p}=se(u,c,m),{publicKey:g}=_e(i.wallet,n.nftMint,ke),{publicKey:f}=He(u,n.nftMint),{publicKey:y}=kt(u,c,n.tickLower,n.tickUpper),w=this.increasePositionFromLiquidityInstruction(u,i.wallet,g,f,c,y,d,p,i.tokenAccountA,i.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(e.mintA.address),new L(e.mintB.address),o,s,a,Be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Ye(u,c).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:g,personalPosition:f,protocolPosition:y},signers:[],instructions:[w],instructionTypes:[$.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,base:o,baseAmount:s,otherAmountMax:a}){let[u,c]=[new L(e.programId),new L(e.id)],l=M.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=M.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=se(u,c,l),{publicKey:p}=se(u,c,m),{publicKey:g}=_e(i.wallet,n.nftMint,ke),{publicKey:f}=He(u,n.nftMint),{publicKey:y}=kt(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:g,personalPosition:f,protocolPosition:y},instructions:[this.increasePositionFromBaseInstruction(u,i.wallet,g,f,c,y,d,p,i.tokenAccountA,i.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(e.mintA.address),new L(e.mintB.address),o,s,a,Be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Ye(u,c).publicKey:void 0)],signers:[],instructionTypes:[$.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g,f,y,w,k){let h=R([V("liquidity"),b("amountMaxA"),b("amountMaxB"),F("optionBaseFlag"),Re("baseFlag")]),P=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[]],A=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...P],K=Buffer.alloc(h.span);h.encode({liquidity:new lo(0),amountMaxA:f==="MintA"?y:w,amountMaxB:f==="MintA"?w:y,baseFlag:f==="MintA",optionBaseFlag:1},K);let S=Buffer.from([...Ge.increaseLiquidity,...K]);return new qe({keys:A,programId:e,data:S})}static decreaseLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g,f,y,w,k,h){let P=R([V("liquidity"),b("amountMinA"),b("amountMinB")]),A=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[],...f.map(_=>[{pubkey:_.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:_.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:_.rewardMint,isSigner:!1,isWritable:!1}]).flat()],K=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:yn,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...A],S=Buffer.alloc(P.span);P.encode({liquidity:y,amountMinA:w,amountMinB:k},S);let B=Buffer.from([...Ge.decreaseLiquidity,...S]);return new qe({keys:K,programId:e,data:B})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new L(e.programId),new L(e.id)],m=M.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=M.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=se(c,l,m),{publicKey:g}=se(c,l,d),{publicKey:f}=_e(i.wallet,n.nftMint,u),{publicKey:y}=He(c,n.nftMint),{publicKey:w}=kt(c,l,n.tickLower,n.tickUpper),k=[];for(let P=0;P<e.rewardDefaultInfos.length;P++)k.push({poolRewardVault:new L(t.rewardInfos[P].vault),ownerRewardVault:i.rewardAccounts[P],rewardMint:new L(e.rewardDefaultInfos[P].mint.address)});let h=[];return h.push(this.decreaseLiquidityInstruction(c,i.wallet,f,y,l,w,p,g,i.tokenAccountA,i.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(e.mintA.address),new L(e.mintB.address),k,o,s,a,Be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?Ye(c,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:g,positionNftAccount:f,personalPosition:y,protocolPosition:w},signers:[],instructions:h,instructionTypes:[$.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g,f,y,w){let k=R([b("amount"),b("otherAmountThreshold"),V("sqrtPriceLimitX64"),Re("isBaseInput")]),h=[...w?[{pubkey:w,isSigner:!1,isWritable:!0}]:[],...m.map(S=>({pubkey:S,isSigner:!1,isWritable:!0}))],P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:yn,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...h],A=Buffer.alloc(k.span);k.encode({amount:p,otherAmountThreshold:g,sqrtPriceLimitX64:f,isBaseInput:y},A);let K=Buffer.from([...Ge.swap,...A]);return new qe({keys:P,programId:e,data:K})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:i,inputMint:o,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:u,remainingAccounts:c}){let[l,m]=[new L(e.programId),new L(e.id)],[d,p]=[new L(t.vault.A),new L(t.vault.B)],[g,f]=[new L(e.mintA.address),new L(e.mintB.address)],y=e.mintA.address===o.toString(),w=[this.swapInstruction(l,i.wallet,m,new L(e.config.id),y?i.tokenAccountA:i.tokenAccountB,y?i.tokenAccountB:i.tokenAccountA,y?d:p,y?p:d,y?g:f,y?f:g,c,n,s,a,u,!0,Ye(l,m).publicKey)];return{signers:[],instructions:w,instructionTypes:[$.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,d){let p=R([b("openTime"),b("endTime"),V("emissionsPerSecondX64")]),g=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:vt.programId,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:re(l),endTime:re(m),emissionsPerSecondX64:d},f);let y=Buffer.from([...Ge.initReward,...f]);return new qe({keys:g,programId:e,data:y})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new L(e.programId),new L(e.id)],a=zi(o,s,i.mint).publicKey,u=Tr(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new L(e.config.id),n.tokenAccount,i.programId,i.mint,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[$.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,d){let p=R([F("rewardIndex"),V("emissionsPerSecondX64"),b("openTime"),b("endTime")]),g=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:c,emissionsPerSecondX64:d,openTime:re(l),endTime:re(m)},f);let y=Buffer.from([...Ge.setRewardEmissions,...f]);return new qe({keys:g,programId:e,data:y})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new L(e.programId),new L(e.id)],a,u,c;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===i.mint.toString()&&(a=d,u=new L(t.rewardInfos[d].vault),c=new L(t.rewardInfos[d].mint.address));(a===void 0||u===void 0)&&mo.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Tr(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new L(e.config.id),n.tokenAccount,u,c,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[$.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,o,s,a){let u=R([F("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:yn,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...Ge.collectReward,...l]);return new qe({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[o,s]=[new L(e.programId),new L(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,u=new L(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&mo.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,u,i,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[$.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:i,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new L(e.programId),new L(e.id)],[m,d]=[new L(t.vault.A),new L(t.vault.B)],[p,g]=[new L(e.mintA.address),new L(e.mintB.address)],f=e.mintA.address===i.toString(),y=[this.swapInstruction(c,n.wallet,l,new L(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?d:m,f?m:d,f?p:g,f?g:p,u,m,o,s,a,!1)];return{signers:[],instructions:y,instructionTypes:[$.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as Ja}from"@solana/web3.js";import{PublicKey as Za}from"@solana/web3.js";import po from"bn.js";var fo=new po(25),bo=new po(1e4);var $a=ie("Raydium_liquidity_serum");function yo({programId:r,marketId:e}){let t=[e.toBuffer()],n=0,i;for(;n<100;){try{let o=t.concat(Buffer.from([n]),Buffer.alloc(7));i=Za.createProgramAddressSync(o,r)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:i,nonce:n}}throw $a.logWithError("unable to find a viable program address nonce","params",{programId:r,marketId:e}),new Error("unable to find a viable program address nonce")}import Jb from"bn.js";function Cr({programId:r}){let{publicKey:e}=de([Buffer.from("amm_config_account_seed","utf-8")],r);return e}function xt({name:r,programId:e,marketId:t}){let{publicKey:n}=de([e.toBuffer(),t.toBuffer(),Buffer.from(r,"utf-8")],e);return n}function eu({programId:r,marketId:e}){let{publicKey:t}=de([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function tu({programId:r}){return de([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function go({version:r,marketVersion:e,marketId:t,baseMint:n,quoteMint:i,baseDecimals:o,quoteDecimals:s,programId:a,marketProgramId:u}){let c=xt({name:"amm_associated_seed",programId:a,marketId:t}),l=xt({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:d}=tu({programId:a}),p=xt({name:"coin_vault_associated_seed",programId:a,marketId:t}),g=xt({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=xt({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),y=eu({programId:a,marketId:t}),w=xt({name:"target_associated_seed",programId:a,marketId:t}),k=xt({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:h}=yo({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:i,lpMint:l,baseDecimals:o,quoteDecimals:s,lpDecimals:o,version:r,programId:a,authority:m,nonce:d,baseVault:p,quoteVault:g,lpVault:f,openOrders:y,targetOrders:w,withdrawQueue:k,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:h,lookupTableAccount:Ja.default,configId:Cr({programId:a})}}import{PublicKey as wo}from"@solana/web3.js";var ay=ie("Raydium_farm_config"),uy=new wo("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),cy=new wo("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var Vn={"Standard SPL":0,"Option tokens":1},ho={[hi.toString()]:3,[ki.toString()]:5,[Ai.toString()]:6};var au=R([F("instruction")]),uu=R([F("instruction")]),cu=R([b("rewardState"),b("rewardOpenTime"),b("rewardEndTime"),b("rewardLastUpdateTime"),b("totalReward"),b("totalRewardEmissioned"),b("rewardClaimed"),b("rewardPerSecond"),V("accRewardPerShare"),I("rewardVault"),I("rewardMint"),I("rewardSender"),b("rewardType"),W(b(),15,"padding")]),lu=R([b("state"),b("nonce"),I("lpVault"),I("rewardVault"),I(),I(),b(),b(),b("totalReward"),V("perShareReward"),b("lastSlot"),b("perSlotReward")]),mu=R([b("state"),b("nonce"),I("lpVault"),I("rewardVaultA"),b("totalRewardA"),V("perShareRewardA"),b("perSlotRewardA"),F("option"),I("rewardVaultB"),Pe(7),b("totalRewardB"),V("perShareRewardB"),b("perSlotRewardB"),b("lastSlot"),I()]),du=R([b(),b("state"),b("nonce"),b("validRewardTokenNum"),V("rewardMultiplier"),b("rewardPeriodMax"),b("rewardPeriodMin"),b("rewardPeriodExtend"),I("lpMint"),I("lpVault"),W(cu,5,"rewardInfos"),I("creator"),I(),W(b(),32,"padding")]),nu=new Proxy(lu,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return Y(q({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(r,e,t)}}),ru=new Proxy(mu,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return Y(q({},i),{version:5,rewardInfos:[{rewardVault:i.rewardVaultA,totalReward:i.totalRewardA,perSlotReward:i.perSlotRewardA,perShareReward:i.perShareRewardA},{rewardVault:i.rewardVaultB,totalReward:i.totalRewardB,perSlotReward:i.perSlotRewardB,perShareReward:i.perShareRewardB}]})}:Reflect.get(r,e,t)}}),iu=new Proxy(du,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return Y(q({},i),{version:6,rewardInfos:i.rewardInfos.map(o=>{var s;return Y(q({},o),{rewardType:((s=Object.entries(Vn).find(a=>String(a[1])===o.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),pu=R([b("isSet"),b("rewardPerSecond"),b("rewardOpenTime"),b("rewardEndTime"),b("rewardType")]),fu=R([F("instruction"),b("nonce"),W(pu,5,"rewardTimeInfo")]),bu=R([F("instruction"),b("rewardReopenTime"),b("rewardEndTime"),b("rewardPerSecond")]),yu=R([F("instruction"),b("isSet"),b("rewardPerSecond"),b("rewardOpenTime"),b("rewardEndTime"),b("rewardType")]),yy=R([b("state"),I("id"),I("owner"),b("deposited"),W(b(),1,"rewardDebts")]),ko=R([b("state"),I("id"),I("owner"),b("deposited"),W(V(),1,"rewardDebts"),b(""),b("voteLockedBalance"),W(b(),15)]),gy=R([b("state"),I("id"),I("owner"),b("deposited"),W(b(),2,"rewardDebts")]),ou=R([b("state"),I("id"),I("owner"),b("deposited"),W(V(),2,"rewardDebts"),W(b(),17)]),su=R([b(),b("state"),I("id"),I("owner"),b("deposited"),W(V(),5,"rewardDebts"),W(b(),16)]),Bt=R([F("instruction"),b("amount")]),gu=R([I("mint"),I("grantAuthority"),b("baselineVoteWeightScaledFactor"),b("maxExtraLockupVoteWeightScaledFactor"),b("lockupSaturationSecs"),yi("digitShift"),W(F(),7,"reserved1"),W(b(),7,"reserved2")]),wu=R([Pe(8),I("governanceProgramId"),I("realm"),I("realmGoverningTokenMint"),I("realmAuthority"),W(F(),32,"reserved1"),W(gu,4,"votingMints"),Pn("timeOffset"),F("bump"),W(F(),7,"reserved2"),W(b(),11,"reserved3")]),hu=R([Pn("startTime"),Pn("endTime"),F("kind"),W(F(),15,"reserved")]),ku=R([W(hu,1,"lockup"),b("amountDeposited_native"),b("amountInitiallyLockedNative"),Re("isUsed"),Re("allowClawback"),F("votingMintConfigIdx"),W(F(),29,"reserved")]),Au=R([Pe(8),I("voterAuthority"),I("registrar"),W(ku,32,"deposits"),F("voterBump"),F("voterWweightRecordBump"),W(F(),94,"reserved")]);import xy from"bn.js";var Fy=ie("Raydium.farm.util");function On({programId:r,poolId:e,owner:t,version:n}){let{publicKey:i}=de([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],r);return i}import{PublicKey as Ie,SystemProgram as jy,SYSVAR_RENT_PUBKEY as Qy,SYSVAR_CLOCK_PUBKEY as Ao,TransactionInstruction as Er}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as Jy,TOKEN_PROGRAM_ID as Mr,ASSOCIATED_TOKEN_PROGRAM_ID as eg}from"@solana/spl-token";import ng from"bn.js";var fg=ie("Raydium_farm_instruction"),bg={voterStakeRegistryCreateVoter:Buffer.from([6,24,245,52,243,255,148,25]),voterStakeRegistryCreateDepositEntry:Buffer.from([185,131,167,186,159,125,19,67]),voterStakeRegistryDeposit:Buffer.from([242,35,198,137,82,225,242,182]),voterStakeRegistryWithdraw:Buffer.from([183,18,70,156,148,109,161,34]),voterStakeRegistryUpdateVoterWeightRecord:Buffer.from([45,185,3,36,109,190,115,169])};function To(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new Ie(e.programId),new Ie(e.id)],c=On({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Bt.span);Bt.encode({instruction:2,amount:re(s)},l);let m=[T({pubkey:Mr,isWritable:!1}),T({pubkey:u}),T({pubkey:new Ie(t.authority),isWritable:!1}),T({pubkey:new Ie(t.lpVault)}),T({pubkey:c}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(T({pubkey:new Ie(t.rewardInfos[d].vault)})),m.push(T({pubkey:i[d]}));return new Er({programId:a,keys:m,data:l})}function Po(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new Ie(e.programId),new Ie(e.id)],l=On({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Bt.span);Bt.encode({instruction:12,amount:re(s)},m);let d=[T({pubkey:c}),T({pubkey:new Ie(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new Ie(t.lpVault)}),T({pubkey:i[0]}),T({pubkey:new Ie(t.rewardInfos[0].vault)}),T({pubkey:Ao,isWritable:!1}),T({pubkey:Mr,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(T({pubkey:i[p]})),d.push(T({pubkey:new Ie(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(T({pubkey:p}));return new Er({programId:u,keys:d,data:m})}function xo(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new Ie(e.programId),new Ie(e.id)],l=On({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Bt.span);Bt.encode({instruction:11,amount:re(s)},m);let d=[T({pubkey:c}),T({pubkey:new Ie(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new Ie(t.lpVault)}),T({pubkey:i[0]}),T({pubkey:new Ie(t.rewardInfos[0].vault)}),T({pubkey:Ao,isWritable:!1}),T({pubkey:Mr,isWritable:!1})];if(a)for(let p of a)d.push(T({pubkey:p}));return new Er({programId:u,keys:d,data:m})}import Ce from"bn.js";var _r=class extends Jt{constructor(t){super(t);this.stableLayout=new en({connection:this.scope.connection})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:i,baseIn:o}){let s=new Ce(new N(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),a=wi(t[o?"mintB":"mintA"]),[u,c]=[new Ce(new N(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new Ce(new N(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new Ce(new N(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,N.ROUND_DOWN));this.logDebug("baseReserve:",u.toString(),"quoteReserve:",c.toString()),this.logDebug("tokenIn:",o?t.mintA.symbol:t.mintB.symbol,"amountIn:",s.toString(),"anotherToken:",o?t.mintB.symbol:t.mintA.symbol,"slippage:",`${i.toSignificant()}%`,"baseReserve",u.toString(),"quoteReserve",c.toString());let m=o?"base":"quote";this.logDebug("input side:",m);let d=Gt;s.isZero()||(d=m==="base"?kn(s.mul(c),u):kn(s.mul(u),c)),this.logDebug("amountRaw:",d.toString(),"lpAmount:",l.toString());let p=kn(s.mul(l),m==="base"?u:c);this.logDebug("liquidity:",p.toString());let f=new Xe(new Ce(1)).add(i).mul(d).quotient,y=new le(a,d),w=new le(a,f);return this.logDebug("anotherAmount:",y.toFixed(),"maxAnotherAmount:",w.toFixed()),{anotherAmount:y,maxAnotherAmount:w,liquidity:p}}async getAmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async addLiquidity(t){let{poolInfo:n,amountInA:i,amountInB:o,fixedSide:s,config:a,txVersion:u,computeBudgetConfig:c}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",i,"amountInB:",o),(i.isZero()||o.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:i.toFixed(),amountInB:o.toFixed()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:d}=q({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),[p,g]=[i.token,o.token],f=await l.getCreatedTokenAccount({mint:p.mint,associatedOnly:!1}),y=await l.getCreatedTokenAccount({mint:g.mint,associatedOnly:!1});!f&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let w=await l.getCreatedTokenAccount({mint:new Se(n.lpMint.address)}),k=[p,g],h=[f,y],P=[i.raw,o.raw],A=i.token.mint.toBase58()===n.mintA.address?"base":"quote",K="base";["quote","base"].includes(A)||this.logAndCreateError("invalid fixedSide","fixedSide",s),A==="quote"?(k.reverse(),h.reverse(),P.reverse(),K=s==="a"?"quote":"base"):A==="base"&&(K=s==="a"?"base":"quote");let[S,B]=k,[_,O]=h,[U,ue]=P,ne=await this.getAmmPoolKeys(n.id),oe=this.createTxBuilder(),rt=await l.handleTokenAccount({side:"in",amount:U,mint:S.mint,tokenAccount:_,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:j}=rt,Z=Ee(rt,["tokenAccount"]);oe.addInstruction(Z);let an=await l.handleTokenAccount({side:"in",amount:ue,mint:B.mint,tokenAccount:O,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:nt}=an,Ft=Ee(an,["tokenAccount"]);oe.addInstruction(Ft);let Vt=await l.handleTokenAccount({side:"out",amount:0,mint:new Se(n.lpMint.address),tokenAccount:w,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:Wn}=Vt,qn=Ee(Vt,["tokenAccount"]);return oe.addInstruction(qn),oe.addInstruction({instructions:[Oi({poolInfo:n,poolKeys:ne,userKeys:{baseTokenAccount:j,quoteTokenAccount:nt,lpTokenAccount:Wn,owner:this.scope.ownerPubKey},baseAmountIn:U,quoteAmountIn:ue,fixedSide:K})],instructionTypes:[n.pooltype.includes("StablePool")?$.AmmV5AddLiquidity:$.AmmV4AddLiquidity],lookupTableAddress:ne.lookupTableAccount?[ne.lookupTableAccount]:[]}),oe.addCustomComputeBudget(c),u===0&&await oe.buildV0(),oe.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,amountIn:i,config:o,txVersion:s,computeBudgetConfig:a}=t,u=await this.getAmmPoolKeys(n.id),[c,l,m]=[new Se(n.mintA.address),new Se(n.mintB.address),new Se(n.lpMint.address)];this.logDebug("amountIn:",i),i.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",i.toString());let{account:d}=this.scope,p=await d.getCreatedTokenAccount({mint:m,associatedOnly:!1});p||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",d.tokenAccounts);let g=await d.getCreatedTokenAccount({mint:c}),f=await d.getCreatedTokenAccount({mint:l}),y=this.createTxBuilder(),{bypassAssociatedCheck:w,checkCreateATAOwner:k}=q({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),S=await d.handleTokenAccount({side:"out",amount:0,mint:c,tokenAccount:g,bypassAssociatedCheck:w,checkCreateATAOwner:k}),{tokenAccount:h}=S,P=Ee(S,["tokenAccount"]);y.addInstruction(P);let B=await d.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:w,checkCreateATAOwner:k}),{tokenAccount:A}=B,K=Ee(B,["tokenAccount"]);return y.addInstruction(K),y.addInstruction({instructions:[wr({poolInfo:n,poolKeys:u,userKeys:{lpTokenAccount:p,baseTokenAccount:h,quoteTokenAccount:A,owner:this.scope.ownerPubKey},amountIn:i})],lookupTableAddress:u.lookupTableAccount?[u.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?$.AmmV5RemoveLiquidity:$.AmmV4RemoveLiquidity]}),y.addCustomComputeBudget(a),s===0?await y.buildV0():y.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:i,createPositionInfo:o,farmInfo:s,userFarmLpAmount:a,base:u,computeBudgetConfig:c,payer:l,tokenProgram:m=Dn,checkCreateATAOwner:d=!0,getEphemeralSigners:p,txVersion:g}){if((this.scope.availability.removeStandardPosition===!1||this.scope.availability.createConcentratedPosition===!1)&&this.logAndCreateError("remove liquidity or create position feature disabled in your region"),!(t.mintA.address===n.mintA.address||t.mintA.address===n.mintB.address)||!(t.mintB.address===n.mintA.address||t.mintB.address===n.mintB.address))throw Error("mint check error");let f=this.createTxBuilder();f.addCustomComputeBudget(c);let y={};for(let j of this.scope.account.tokenAccountRawInfos)(y[j.accountInfo.mint.toString()]===void 0||_e(this.scope.ownerPubKey,j.accountInfo.mint,Dn).publicKey.equals(j.pubkey))&&(y[j.accountInfo.mint.toString()]=j.pubkey);let w=y[t.lpMint.address];if(w===void 0)throw Error("find lp account error in trade accounts");let k=i.add(a!=null?a:new Ce(0)),h=t.mintA.address===Te.WSOL.mint.toString(),P=t.mintB.address===Te.WSOL.mint.toString(),{account:A,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Dn,mint:new Se(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:h?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:!0,checkCreateATAOwner:d});if(f.addInstruction(K||{}),A===void 0)throw new Error("base token account not found");let{account:S,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Dn,mint:new Se(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:P?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:!0,checkCreateATAOwner:d});if(f.addInstruction(B||{}),S===void 0)throw new Error("quote token account not found");if(y[t.mintA.address]=A,y[t.mintB.address]=S,s!==void 0&&!(a!=null&&a.isZero())){let j=[];for(let rt of s.rewardInfos){let an=rt.mint.address===Te.WSOL.mint.toString();if(y[rt.mint.address])j.push(y[rt.mint.address]);else{let{account:Vt,instructionParams:vr}=await this.scope.account.getOrCreateTokenAccount({mint:new Se(rt.mint.address),tokenProgram:m,owner:this.scope.ownerPubKey,skipCloseAccount:!an,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:d});Vt||this.logAndCreateError("farm reward account not found:",rt.mint.address),vr&&f.addInstruction(vr),j.push(Vt)}}let Z=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],nt={amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:Z,lpAccount:w,rewardAccounts:j},Ft=ho[s.programId],Wn=Ft===6?To(nt):Ft===5?Po(nt):xo(nt),qn={3:$.FarmV3Withdraw,5:$.FarmV5Withdraw,6:$.FarmV6Withdraw};f.addInstruction({instructions:[Wn],instructionTypes:[qn[Ft]]})}let _=await this.getAmmPoolKeys(t.id),O=wr({poolInfo:t,poolKeys:_,userKeys:{lpTokenAccount:w,baseTokenAccount:A,quoteTokenAccount:S,owner:this.scope.ownerPubKey},amountIn:k});f.addInstruction({instructions:[O],instructionTypes:[t.pooltype.includes("StablePool")?$.AmmV5RemoveLiquidity:$.AmmV4RemoveLiquidity],lookupTableAddress:_.lookupTableAccount?[_.lookupTableAccount]:[]});let[U,ue]=t.mintA.address===n.mintA.address?[A,S]:[S,A],ne=await this.scope.clmm.getClmmPoolKeys(t.id),oe=await Fn.openPositionFromBaseInstructions(Y(q({poolInfo:n,poolKeys:ne,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:U,tokenAccountB:ue},withMetadata:"create"},o),{base:u,getEphemeralSigners:p}));return f.addInstruction({instructions:[...oe.instructions],signers:oe.signers,instructionTypes:[...oe.instructionTypes],lookupTableAddress:ne.lookupTableAccount?[ne.lookupTableAccount]:[]}),g===0?f.sizeCheckBuildV0():f.sizeCheckBuild()}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:i,quoteMintInfo:o,baseAmount:s,quoteAmount:a,startTime:u,ownerInfo:c,associatedOnly:l=!1,checkCreateATAOwner:m=!1,tokenProgram:d,txVersion:p,feeDestinationId:g,computeBudgetConfig:f}){var ue;let y=c.feePayer||((ue=this.scope.owner)==null?void 0:ue.publicKey),w=c.useSOLBalance&&i.mint.equals(Bo),k=c.useSOLBalance&&o.mint.equals(Bo),h=this.createTxBuilder(),{account:P,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({mint:i.mint,owner:this.scope.ownerPubKey,createInfo:w?{payer:y,amount:s}:void 0,notUseTokenAccount:w,skipCloseAccount:!w,associatedOnly:w?!1:l,checkCreateATAOwner:m});h.addInstruction(A||{});let{account:K,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({mint:o.mint,owner:this.scope.ownerPubKey,createInfo:k?{payer:y,amount:a}:void 0,notUseTokenAccount:k,skipCloseAccount:!k,associatedOnly:k?!1:l,checkCreateATAOwner:m});if(h.addInstruction(S||{}),P===void 0||K===void 0)throw Error("you don't has some token account");let B=go({version:4,marketVersion:3,marketId:n.marketId,baseMint:i.mint,quoteMint:o.mint,baseDecimals:i.decimals,quoteDecimals:o.decimals,programId:t,marketProgramId:n.programId}),_={programId:t,ammId:B.id,ammAuthority:B.authority,ammOpenOrders:B.openOrders,lpMint:B.lpMint,coinMint:B.baseMint,pcMint:B.quoteMint,coinVault:B.baseVault,pcVault:B.quoteVault,withdrawQueue:B.withdrawQueue,ammTargetOrders:B.targetOrders,poolTempLp:B.lpVault,marketProgramId:B.marketProgramId,marketId:B.marketId,ammConfigId:B.configId,feeDestinationId:g},{instruction:O,instructionType:U}=Di(Y(q({},_),{userWallet:this.scope.ownerPubKey,userCoinVault:P,userPcVault:K,userLpVault:_e(this.scope.ownerPubKey,B.lpMint,d).publicKey,nonce:B.nonce,openTime:u,coinAmount:s,pcAmount:a}));return h.addInstruction({instructions:[O],instructionTypes:[U]}),h.addCustomComputeBudget(f),h.versionBuild({txVersion:p,extInfo:{address:_}})}async getCreatePoolFee({programId:t}){let n=Cr({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return Ri.decode(i.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:i,mintOut:o,slippage:s}){if(i!==t.mintA.address&&i!==t.mintB.address)throw new Error("toke not match");if(o!==t.mintA.address&&o!==t.mintB.address)throw new Error("toke not match");let{baseReserve:a,quoteReserve:u}=t,c=[a,u],l=i==t.mintA.address?"base":"quote";l==="quote"&&c.reverse();let[m,d]=c,p=t.programId===Ti.toBase58(),g;if(p)g=new N(d.toString()).div(m.toString());else{let B=vi(this.stableLayout.stableModelData,a.toNumber(),u.toNumber(),!1);l==="quote"?g=new N(1e6).div(B*1e6):g=new N(B*1e6).div(1e6)}let f=n,y=new Ce(0),w=new Ce(0);if(!f.isZero())if(p){w=Ht(f.mul(fo),bo);let B=f.sub(w),_=m.add(B);y=d.mul(B).div(_)}else{w=f.mul(new Ce(2)).div(new Ce(1e4));let B=f.sub(w);l==="quote"?y=new Ce(Mi(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),B.toNumber())):y=new Ce(_i(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),B.toNumber()))}let k=new Ce(new N(y.toString()).mul(1-s).toFixed(0)),h=y,P=k,A=new N(y.toString()).div(new N(f.sub(w).toString()).toFixed(0));!f.isZero()&&!y.isZero()&&(A=new N(y.toString()).div(f.sub(w).toString()));let K=g.sub(A).div(g).mul(100);return{amountOut:h,minAmountOut:P,currentPrice:g,executionPrice:A,priceImpact:K,fee:w}}async swap({poolInfo:t,amountIn:n,amountOut:i,inputMint:o,fixedSide:s,txVersion:a,computeBudgetConfig:u}){let c=this.createTxBuilder(),[l,m]=o===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],d=await this.scope.account.getCreatedTokenAccount({mint:new Se(l.address),programId:new Se(l.programId),associatedOnly:!1}),p=await this.scope.account.getCreatedTokenAccount({mint:new Se(m.address),programId:new Se(m.programId),associatedOnly:!1}),P=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new Se(l.address),tokenAccount:d,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:g}=P,f=Ee(P,["tokenAccount"]);c.addInstruction(f);let A=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new Se(m.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=A,w=Ee(A,["tokenAccount"]);c.addInstruction(w);let k=await this.getAmmPoolKeys(t.id),h=4;return t.pooltype.includes("StablePool")&&(h=5),c.addInstruction({instructions:[Wi({version:h,poolKeys:k,userKeys:{tokenAccountIn:g,tokenAccountOut:y,owner:this.scope.ownerPubKey},amountIn:n,amountOut:i,fixedSide:s})],instructionTypes:[h===4?$.AmmV4SwapBaseIn:$.AmmV5SwapBaseIn]}),c.addCustomComputeBudget(u),c.versionBuild({txVersion:a})}async getRpcPoolInfo(t){return(await this.getRpcPoolInfos([t]))[t]}async getRpcPoolInfos(t){let n=await this.scope.connection.getMultipleAccountsInfo(t.map(c=>new Se(c))),i={},o=[];for(let c=0;c<t.length;c++){let l=n[c];if(l===null)throw Error("fetch pool info error: "+String(t[c]));let m=Ni.decode(l.data);i[String(t[c])]=m,o.push(m.baseVault,m.quoteVault)}let s={},a=await this.scope.connection.getMultipleAccountsInfo(o.map(c=>new Se(c)));for(let c=0;c<o.length;c++){let l=a[c];if(l===null)throw Error("fetch vault info error: "+o[c]);s[String(o[c])]=new Ce(Tu.decode(l.data).amount.toString())}let u={};for(let[c,l]of Object.entries(i)){let m=s[l.baseVault.toString()].sub(l.baseNeedTakePnl),d=s[l.quoteVault.toString()].sub(l.quoteNeedTakePnl);u[c]=Y(q({},l),{baseReserve:m,quoteReserve:d,poolPrice:new N(d.toString()).div(new N(10).pow(l.quoteDecimal.toString())).div(new N(m.toString()).div(new N(10).pow(l.baseDecimal.toString())))})}return u}};export{_r as default};
|
|
2
2
|
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
3
3
|
//# sourceMappingURL=liquidity.mjs.map
|