@raydium-io/raydium-sdk-v2 0.1.8-alpha → 0.1.9-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.
Files changed (46) hide show
  1. package/lib/api/api.js +1 -1
  2. package/lib/api/api.js.map +1 -1
  3. package/lib/api/api.mjs +1 -1
  4. package/lib/api/api.mjs.map +1 -1
  5. package/lib/api/index.js +1 -1
  6. package/lib/api/index.js.map +1 -1
  7. package/lib/api/index.mjs +1 -1
  8. package/lib/api/index.mjs.map +1 -1
  9. package/lib/index.d.ts +1 -1
  10. package/lib/index.js +1 -1
  11. package/lib/index.js.map +1 -1
  12. package/lib/index.mjs +1 -1
  13. package/lib/index.mjs.map +1 -1
  14. package/lib/raydium/account/account.d.ts +1 -1
  15. package/lib/raydium/clmm/clmm.d.ts +1 -1
  16. package/lib/raydium/clmm/index.d.ts +1 -1
  17. package/lib/raydium/cpmm/cpmm.d.ts +1 -1
  18. package/lib/raydium/farm/farm.d.ts +1 -1
  19. package/lib/raydium/ido/ido.d.ts +1 -1
  20. package/lib/raydium/ido/index.d.ts +1 -1
  21. package/lib/raydium/index.d.ts +1 -1
  22. package/lib/raydium/index.js +1 -1
  23. package/lib/raydium/index.js.map +1 -1
  24. package/lib/raydium/index.mjs +1 -1
  25. package/lib/raydium/index.mjs.map +1 -1
  26. package/lib/raydium/liquidity/liquidity.d.ts +1 -1
  27. package/lib/raydium/liquidity/liquidity.js +1 -1
  28. package/lib/raydium/liquidity/liquidity.js.map +1 -1
  29. package/lib/raydium/liquidity/liquidity.mjs +1 -1
  30. package/lib/raydium/liquidity/liquidity.mjs.map +1 -1
  31. package/lib/raydium/marketV2/createMarket.d.ts +1 -1
  32. package/lib/raydium/marketV2/index.d.ts +1 -1
  33. package/lib/raydium/moduleBase.d.ts +1 -1
  34. package/lib/raydium/raydium.d.ts +1 -1
  35. package/lib/raydium/raydium.js +1 -1
  36. package/lib/raydium/raydium.js.map +1 -1
  37. package/lib/raydium/raydium.mjs +1 -1
  38. package/lib/raydium/raydium.mjs.map +1 -1
  39. package/lib/raydium/token/token.d.ts +1 -1
  40. package/lib/raydium/tradeV2/trade.d.ts +1 -1
  41. package/lib/raydium/utils1216/index.d.ts +1 -1
  42. package/lib/raydium/utils1216/utils1216.d.ts +1 -1
  43. package/lib/{raydium-916014c1.d.ts → raydium-05c7eeff.d.ts} +2 -1
  44. package/package.json +1 -1
  45. package/src/api/api.ts +1 -1
  46. package/src/raydium/liquidity/liquidity.ts +31 -0
@@ -1,3 +1,3 @@
1
- var Bo=Object.defineProperty,Io=Object.defineProperties;var So=Object.getOwnPropertyDescriptors;var cn=Object.getOwnPropertySymbols;var Vr=Object.prototype.hasOwnProperty,Or=Object.prototype.propertyIsEnumerable;var Fr=(r,e,t)=>e in r?Bo(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(cn)for(var t of cn(e))Or.call(e,t)&&Fr(r,t,e[t]);return r},Y=(r,e)=>Io(r,So(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&&cn)for(var n of cn(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 xo,TOKEN_PROGRAM_ID as Dn}from"@solana/spl-token";import Ds from"big.js";import Tn from"bn.js";import Ne from"bn.js";var It=9e15,at=1e9,Gn="0123456789abcdef",mn="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",dn="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Un={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-It,maxE:It,crypto:!1},Gr,$e,G=!0,fn="[DecimalError] ",st=fn+"Invalid argument: ",Ur=fn+"Precision limit exceeded",Xr=fn+"crypto unavailable",zr="[object Decimal]",Ae=Math.floor,fe=Math.pow,Ko=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Lo=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,No=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Hr=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Oe=1e7,D=7,Ro=9007199254740991,Co=mn.length-1,Xn=dn.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=Eo(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/yn(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/yn(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?pn(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?pn(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=bn(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=bn(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=_o(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=bn(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)<=Ro)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 ln(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 Eo(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/yn(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 bn(r,e){var t=r[0];for(e*=D;t>=10;t/=10)e++;return e}function pn(r,e,t){if(e>Co)throw G=!0,t&&(r.precision=t),Error(Ur);return v(new r(mn),e,1,!0)}function Ve(r,e,t){if(e>Xn)throw Error(Ur);return v(new r(dn),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=pn(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(pn(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 Mo(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(Lo.test(e))t=16,e=e.toLowerCase();else if(Ko.test(e))t=2;else if(No.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=ln(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=bn(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 _o(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/yn(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 yn(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=ln(Ue(d),10,i),d.e=d.d.length),m=ln(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=ln(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 vo(r){return new this(r).abs()}function Fo(r){return new this(r).acos()}function Vo(r){return new this(r).acosh()}function Oo(r,e){return new this(r).plus(e)}function Do(r){return new this(r).asin()}function Wo(r){return new this(r).asinh()}function qo(r){return new this(r).atan()}function Go(r){return new this(r).atanh()}function Uo(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 Xo(r){return new this(r).cbrt()}function zo(r){return v(r=new this(r),r.e+1,2)}function Ho(r,e,t){return new this(r).clamp(e,t)}function Yo(r){if(!r||typeof r!="object")throw Error(fn+"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 jo(r){return new this(r).cos()}function Qo(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):Mo(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=Yo,i.clone=Jr,i.isDecimal=qr,i.abs=vo,i.acos=Fo,i.acosh=Vo,i.add=Oo,i.asin=Do,i.asinh=Wo,i.atan=qo,i.atanh=Go,i.atan2=Uo,i.cbrt=Xo,i.ceil=zo,i.clamp=Ho,i.cos=jo,i.cosh=Qo,i.div=Zo,i.exp=$o,i.floor=Jo,i.hypot=es,i.ln=ts,i.log=ns,i.log10=is,i.log2=rs,i.max=os,i.min=ss,i.mod=as,i.mul=us,i.pow=cs,i.random=ls,i.round=ms,i.sign=ds,i.sin=ps,i.sinh=fs,i.sqrt=bs,i.sub=ys,i.sum=gs,i.tan=ws,i.tanh=hs,i.trunc=ks,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 Zo(r,e){return new this(r).div(e)}function $o(r){return new this(r).exp()}function Jo(r){return v(r=new this(r),r.e+1,3)}function es(){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 ts(r){return new this(r).ln()}function ns(r,e){return new this(r).log(e)}function rs(r){return new this(r).log(2)}function is(r){return new this(r).log(10)}function os(){return Qr(this,arguments,"lt")}function ss(){return Qr(this,arguments,"gt")}function as(r,e){return new this(r).mod(e)}function us(r,e){return new this(r).mul(e)}function cs(r,e){return new this(r).pow(e)}function ls(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 ms(r){return v(r=new this(r),r.e+1,this.rounding)}function ds(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function ps(r){return new this(r).sin()}function fs(r){return new this(r).sinh()}function bs(r){return new this(r).sqrt()}function ys(r,e){return new this(r).sub(e)}function gs(){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 ws(r){return new this(r).tan()}function hs(r){return new this(r).tanh()}function ks(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);mn=new Dt(mn);dn=new Dt(dn);var N=Dt;import{PublicKey as Jn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as As}from"@solana/spl-token";import{PublicKey as ce,SystemProgram as ti,SYSVAR_RENT_PUBKEY as Ts}from"@solana/web3.js";function T({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Ps=[T({pubkey:As,isWritable:!1}),T({pubkey:ti.programId,isWritable:!1}),T({pubkey:Ts,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 gn=new ce("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Ku=new ce("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),ut=new ce("SysvarRent111111111111111111111111111111111"),Lu=new ce("SysvarC1ock11111111111111111111111111111111"),Lt=new ce("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),xs=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 Bs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ni}from"@solana/spl-token";var $n={chainId:101,address:Bs.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 Is}from"lodash";import oi from"dayjs";import Ss from"dayjs/plugin/utc";oi.extend(Ss);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={},Ks={};function ie(r){let e=ri(ii,r);if(!e){let t=ri(Ks,r);e=new tr({name:r,logLevel:t}),Is(ii,r,e)}return e}import hn from"big.js";import Rs from"bn.js";import Cs from"decimal.js-light";import Ls from"toformat";var Ns=Ls,Wt=Ns;var wn=ie("module/fraction"),nr=Wt(hn),qt=Wt(Cs),Es={[0]:qt.ROUND_DOWN,[1]:qt.ROUND_HALF_UP,[2]:qt.ROUND_UP},Ms={[0]:hn.roundDown,[1]:hn.roundHalfUp,[2]:hn.roundUp},te=class{constructor(e,t=new Rs(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)||wn.logWithError(`${e} is not an integer.`),e<=0&&wn.logWithError(`${e} is not positive.`),qt.set({precision:e+1,rounding:Es[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)||wn.logWithError(`${e} is not an integer.`),e<0&&wn.logWithError(`${e} is negative.`),nr.DP=e,nr.RM=Ms[n]||1,new nr(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var vs=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&&vs.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}},kn=ir;kn.SOL=new ir($n);import Fs from"bn.js";var si=new te(new Fs(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 Vs}from"@solana/web3.js";import Os from"bn.js";function ai(r){return typeof r=="object"&&r!==null&&![Te,le,Vs,te,Os,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 An(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 Ws=ie("Raydium_amount"),li=Wt(Ds);function qs(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")):Ws.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 Tn(0),a=or.pow(new Tn(t.decimals));if(i)s=re(n);else{let u=new Tn(0),c=new Tn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=qs(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 Zs}from"@solana/web3.js";import fi,{isBN as bi}from"bn.js";import{bits as hl,BitStructure as kl,blob as Gs,Blob as Al,cstr as Tl,f32 as Pl,f32be as xl,f64 as Bl,f64be as Il,greedy as Sl,Layout as Us,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 Xs,s32be as Fl,s40 as Vl,s40be as Ol,s48 as Dl,s48be as Wl,s8 as ql,seq as zs,struct as Gl,Structure as Hs,u16 as Ys,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 js,UInt as Qs,union as Jl,Union as em,unionLayoutDiscriminator as tm,utf8 as nm}from"@solana/buffer-layout";var sr=Us,mi=Hs;var ar=Qs;var di=js,Nt=Ys;var he=Xs;var pi=zs;var Pe=Gs;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 xn(r){return new bt(8,!0,r)}function gi(r){return new bt(16,!0,r)}var Pn=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 Pn(Pe(32),e=>new Zs(e),e=>e.toBuffer(),r)}function Re(r){return new Pn(di(),$s,Js,r)}function $s(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function Js(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"),ea=new ee("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),ta=new ee("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),na=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:ea,CREATE_CPMM_POOL_AUTH:ta,CREATE_CPMM_POOL_FEE_ACC:na,FEE_DESTINATION_ID:new ee("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as ua}from"@solana/web3.js";import{PublicKey as ra,ComputeBudgetProgram as Pi,Transaction as Bi,TransactionMessage as ia,Keypair as Ii,VersionedTransaction as Si}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as oa}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 Bn(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 sa(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]=ra.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}function Ut({instructions:r,payer:e,signers:t}){return sa(r,[e,...t])}function Xt({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Ii.generate().publicKey.toString()}){let o=new ia({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 aa=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=oa.toBase58()),t.feePayer||(t.feePayer=Ii.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof Si&&(n=aa(n));let i=n.toString("base64");e.push(i)}),console.log("simulate tx string:",e),e}import{TOKEN_PROGRAM_ID as ca}from"@solana/spl-token";function _e(r,e,t){return de([r.toBuffer(),(t!=null?t:ca).toBuffer(),e.toBuffer()],new ua("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 da from"axios";import{PublicKey as Li,AddressLookupTableAccount as Sn}from"@solana/web3.js";import{PublicKey as la}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 la(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 In(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 Sn({key:s,state:Sn.deserialize(o.data)});n[s.toString()]=a,Kn[s.toString()]=a}return n}var Kn={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Sn({key:new Li("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Sn.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 Ln=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 da.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}=Bn(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"?{}:Kn),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?Bn(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"?{}:Kn),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?Bn(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 Ln({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 tn,ASSOCIATED_TOKEN_PROGRAM_ID as Ia}from"@solana/spl-token";import{PublicKey as ze,TransactionInstruction as Et,SystemProgram as Sa,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")]),pa=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 fa}from"@solana/web3.js";var Ct=new fa("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ht=5e4,ba=R([b("x"),b("y"),b("price")]),ya=R([b("accountType"),b("status"),b("multiplier"),b("validDataCount"),W(ba,ht,"DataElement")]);function ga(r,e){return[0,ht-2]}function wa(r){return[0,ht-2]}function ha(r){return[0,ht-2]}function ka(r,e,t){let[n,i]=ga(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]=ka(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 Aa(r,e){let[t,n]=wa(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 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].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]=Aa(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 Pa(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].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 xa(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]=Pa(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 Ba(r){let e=ya.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=xa(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=Ba(e==null?void 0:e.data))}}};var Fi=ie("Raydium_liquidity_instruction");function Vi(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:tn,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:tn,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 Oi({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:tn,isSigner:!1,isWritable:!1},{pubkey:Ia,isSigner:!1,isWritable:!1},{pubkey:Sa.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:tn,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:tn,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 Di(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 uo}from"@solana/spl-token";import{PublicKey as L,TransactionInstruction as qe,SystemProgram as vt,Keypair as Rr}from"@solana/web3.js";import co 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 nn(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function Wi(r,e){return nn(r,e)?null:hr(r,e)}function qi(r,e){return nn(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"),Gi=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 Ui(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 Xi(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([Gi,e.toBuffer(),Nn(t),Nn(n)],r)}function He(r,e){return de([Gi,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),rn=64,zi=Cn.subn(1),xe=-443636,Ke=-xe,Mt=new je("4295048016"),_t=new je("79226673521066979257578248091"),Hi=16,Yi="59543866431248",ji="184467440737095516",Qi="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?on.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=Wi(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=qi(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)}}}},sn=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=nn(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=nn(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 an=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 Zi}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])?sn.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}=sn.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 In(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=eo.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 In(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=on.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=Ji.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]=on.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 an.GetPositionFees(f,w,K,S),O=await an.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===Zi.toBase58()})),new Te(Y(q({},c),{mint:c.address,isToken2022:c.programId===Zi.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=$i.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(rn);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(rn);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=zi.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<Hi;){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(Yi)),d=Br(m.sub(new H(ji)),64,128).toNumber(),p=Br(m.add(new H(Qi)),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(rn),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(rn)}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")]),$i=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")]),Ji=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,"")]),on=R([Pe(8),I("poolId"),he("startTickIndex"),W(qa,ye,"ticks"),F("initializedTickCount"),W(F(),115,"")]),Yf=R([Pe(329),W(I(),100,"whitelistMints")]),eo=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 to=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 no(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 ro(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 io=(r,e,t)=>r&e^~r&t,oo=(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),no(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+io(a,u,c)+za[m]+dt[m]|0,f=(We(n,2)^We(n,13)^We(n,22))+oo(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 so=ro(()=>new Nr);var hb=ie("Raydium_Util");function ao({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=so(n);return new Ha(i)}var lo=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=ao({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}=Ui(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:uo,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:uo,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 co(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 co(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:gn,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:gn,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=Xi(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)&&lo.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:gn,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)&&lo.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 mo from"bn.js";var po=new mo(25),fo=new mo(1e4);var $a=ie("Raydium_liquidity_serum");function bo({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 yo({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}=bo({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 go}from"@solana/web3.js";var ay=ie("Raydium_farm_config"),uy=new go("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),cy=new go("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var Vn={"Standard SPL":0,"Option tokens":1},wo={[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")]),ho=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"),xn("timeOffset"),F("bump"),W(F(),7,"reserved2"),W(b(),11,"reserved3")]),hu=R([xn("startTime"),xn("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 ko,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 Ao(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 To(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:ko,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 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: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:ko,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"?An(s.mul(c),u):An(s.mul(u),c)),this.logDebug("amountRaw:",d.toString(),"lpAmount:",l.toString());let p=An(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 un=await l.handleTokenAccount({side:"in",amount:ue,mint:B.mint,tokenAccount:O,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:nt}=un,Ft=Ee(un,["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:[Vi({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 un=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:!un,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=wo[s.programId],Wn=Ft===6?Ao(nt):Ft===5?To(nt):Po(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(xo),k=c.useSOLBalance&&o.mint.equals(xo),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=yo({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}=Oi(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(po),fo);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:[Di({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};
1
+ var vo=Object.defineProperty,Fo=Object.defineProperties;var Vo=Object.getOwnPropertyDescriptors;var pn=Object.getOwnPropertySymbols;var Ur=Object.prototype.hasOwnProperty,Xr=Object.prototype.propertyIsEnumerable;var Gr=(r,e,t)=>e in r?vo(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,q=(r,e)=>{for(var t in e||(e={}))Ur.call(e,t)&&Gr(r,t,e[t]);if(pn)for(var t of pn(e))Xr.call(e,t)&&Gr(r,t,e[t]);return r},j=(r,e)=>Fo(r,Vo(e));var Ee=(r,e)=>{var t={};for(var n in r)Ur.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&pn)for(var n of pn(r))e.indexOf(n)<0&&Xr.call(r,n)&&(t[n]=r[n]);return t};import{PublicKey as fe}from"@solana/web3.js";import{AccountLayout as Mu,NATIVE_MINT as Eo,TOKEN_PROGRAM_ID as Un}from"@solana/spl-token";import Zs from"big.js";import In from"bn.js";import Ne from"bn.js";var Kt=9e15,st=1e9,zn="0123456789abcdef",bn="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",yn="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Hn={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Kt,maxE:Kt,crypto:!1},jr,$e,G=!0,wn="[DecimalError] ",ot=wn+"Invalid argument: ",Qr=wn+"Precision limit exceeded",Zr=wn+"crypto unavailable",$r="[object Decimal]",Te=Math.floor,be=Math.pow,Oo=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Do=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Wo=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Jr=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Oe=1e7,D=7,qo=9007199254740991,Go=bn.length-1,Yn=yn.length-1,x={toStringTag:$r};x.absoluteValue=x.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),_(r)};x.ceil=function(){return _(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(ot+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=Uo(n,ii(n,t)),n.precision=r,n.rounding=e,_($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*be(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=he(l.d),r=l.e,(o=(r-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=be(t,1/3),r=Te((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),he(a.d).slice(0,s)===(t=he(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(_(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")&&(_(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return G=!0,_(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-Te(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 _(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 _(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/kn(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=Lt(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 _(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=Lt(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/kn(5,r)),i=Lt(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,_(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?_(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<=Yn)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<=Yn)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,_(s,l.precision=m,l.rounding=d,!0)};x.isFinite=function(){return!!this.d};x.isInteger=x.isInt=function(){return!!this.d&&Te(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=it(c,a),n=e?gn(l,a+10):it(r,a),u=ae(s,n,a,1),Wt(u.d,i=m,d))do if(a+=10,s=it(c,a),n=e?gn(l,a+10):it(r,a),u=ae(s,n,a,1),!o){+he(u.d).slice(i+1,i+15)+1==1e14&&(u=_(u,m+1,0));break}while(Wt(u.d,i+=10,d));return G=!0,_(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?_(r,a,u):r}if(t=Te(r.e/D),l=Te(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=hn(c,t),G?_(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]?_(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 jn(this)};x.naturalLogarithm=x.ln=function(){return it(this)};x.negated=x.neg=function(){var r=new this.constructor(this);return r.s=-r.s,_(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?_(r,a,u):r;if(o=Te(m.e/D),n=Te(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=hn(c,n),G?_(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(ot+r);return t.d?(e=ei(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};x.round=function(){var r=this,e=r.constructor;return _(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=zo(n,ii(n,t)),n.precision=r,n.rounding=e,_($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=he(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=Te((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),he(o.d).slice(0,t)===(e=he(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(_(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")&&(_(n,u+1,1),r=!n.times(n).eq(s));break}return G=!0,_(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,_($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=Te(l.e/D)+Te(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=hn(o,t),G?_(r,m.precision,m.rounding):r};x.toBinary=function(r,e){return Zn(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,st),e===void 0?e=n.rounding:Le(e,0,8),_(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,st),e===void 0?e=i.rounding:Le(e,0,8),n=_(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,st),e===void 0?e=o.rounding:Le(e,0,8),n=_(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=ei(g)-p.e-1,s=o%D,e.d[0]=be(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(ot+a);r=a.gt(e)?o>0?e:c:a}for(G=!1,a=new f(he(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 Zn(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,_(t)):(r.s=t.s,t=r),t};x.toNumber=function(){return+this};x.toOctal=function(r,e){return Zn(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(be(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,r.eq(1))return _(a,n,o);if(e=Te(r.e/D),e>=r.d.length-1&&(t=c<0?-c:c)<=qo)return i=ti(u,a,t,n),r.s<0?new u(1).div(i):_(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=be(+a,c),e=t==0||!isFinite(t)?Te(c*(Math.log("0."+he(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=jn(r.times(it(a,n+t)),n),i.d&&(i=_(i,n+5,1),Wt(i.d,n,o)&&(e=n+10,i=_(jn(r.times(it(a,e+t)),e),e+5,1),+he(i.d).slice(n+1,n+15)+1==1e14&&(i=_(i,n+1,0)))),i.s=s,G=!0,u.rounding=o,_(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,st),e===void 0?e=i.rounding:Le(e,0,8),n=_(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,st),e===void 0?e=n.rounding:Le(e,0,8)),_(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 _(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 he(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+=rt(t)),o+=n;s=r[e],n=s+"",t=D-n.length,t&&(o+=rt(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(ot+r)}function Wt(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=be(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)==be(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)==be(10,e-3)-1,s}function fn(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]+=zn.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 Uo(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/kn(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=Lt(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,S,K,B,O,F,U,ue,ie=n.constructor,oe=n.s==i.s?1:-1,ne=n.d,X=i.d;if(!ne||!ne[0]||!X||!X[0])return new ie(!n.s||!i.s||(ne?X&&ne[0]==X[0]:!X)?NaN:ne&&ne[0]==0||!X?oe*0:oe/0);for(u?(p=1,l=n.e-i.e):(u=Oe,p=D,l=Te(n.e/p)-Te(i.e/p)),U=X.length,O=ne.length,w=new ie(oe),k=w.d=[],m=0;X[m]==(ne[m]||0);m++);if(X[m]>(ne[m]||0)&&l--,o==null?(S=o=ie.precision,s=ie.rounding):a?S=o+(n.e-i.e)+1:S=o,S<0)k.push(1),g=!0;else{if(S=S/p+2|0,m=0,U==1){for(d=0,X=X[0],S++;(m<O||d)&&S--;m++)K=d*u+(ne[m]||0),k[m]=K/X|0,d=K%X|0;g=d||m<O}else{for(d=u/(X[0]+1)|0,d>1&&(X=r(X,d,u),ne=r(ne,d,u),U=X.length,O=ne.length),B=U,h=ne.slice(0,U),P=h.length;P<U;)h[P++]=0;ue=X.slice(),ue.unshift(0),F=X[0],X[1]>=u/2&&++F;do d=0,c=e(X,h,U,P),c<0?(A=h[0],U!=P&&(A=A*u+(h[1]||0)),d=A/F|0,d>1?(d>=u&&(d=u-1),f=r(X,d,u),y=f.length,P=h.length,c=e(f,h,y,P),c==1&&(d--,t(f,U<y?ue:X,y,u))):(d==0&&(c=d=1),f=X.slice()),y=f.length,y<P&&f.unshift(0),t(h,f,P,u),c==-1&&(P=h.length,c=e(X,h,U,P),c<1&&(d++,t(h,U<P?ue:X,P,u))),P=h.length):c===0&&(d++,h=[0]),k[m++]=d,c&&h[0]?h[P++]=ne[B]||0:(h=[ne[B]],P=1);while((B++<O||h[0]!==void 0)&&S--);g=h[0]!==void 0}k[0]||k.shift()}if(p==1)w.e=l,jr=g;else{for(m=1,d=k[0];d>=10;d/=10)m++;w.e=m+l*p-1,_(w,a?o+w.e+1:o,s,g)}return w}}();function _(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/be(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/be(10,i-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%be(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/be(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]=be(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=be(10,D-o),m[d]=s>0?(l/be(10,i-s)%be(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 ri(r);var n,i=r.e,o=he(r.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+rt(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+rt(-i-1)+o,t&&(n=t-s)>0&&(o+=rt(n))):i>=s?(o+=rt(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+rt(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=rt(n))),o}function hn(r,e){var t=r[0];for(e*=D;t>=10;t/=10)e++;return e}function gn(r,e,t){if(e>Go)throw G=!0,t&&(r.precision=t),Error(Qr);return _(new r(bn),e,1,!0)}function Ve(r,e,t){if(e>Yn)throw Error(Qr);return _(new r(yn),e,t,!0)}function ei(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 rt(r){for(var e="";r--;)e+="0";return e}function ti(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),Hr(o.d,s)&&(i=!0)),t=Te(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),Hr(e.d,s)}return G=!0,o}function zr(r){return r.d[r.d.length-1]&1}function ni(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 jn(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(be(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new d(1),d.precision=u;;){if(o=_(o.times(r),u,1),t=t.times(++l),a=s.plus(ae(o,t,u,1)),he(a.d).slice(0,u)===he(s.d).slice(0,u)){for(i=m;i--;)s=_(s.times(s),u,1);if(e==null)if(c<3&&Wt(s.d,u-n,p,c))d.precision=u+=10,t=o=a=new d(1),l=0,c++;else return _(s,d.precision=g,p,G=!0);else return d.precision=g,s}s=a}}function it(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=he(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=he(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=gn(w,l+2,h).times(o+""),f=it(new w(n+"."+t.slice(1)),l-g).plus(c),w.precision=h,e==null?_(f,h,k,G=!0):f;for(m=f,u=s=f=ae(f.minus(1),f.plus(1),l,1),d=_(f.times(f),l,1),i=3;;){if(s=_(s.times(d),l,1),c=u.plus(ae(s,new w(i),l,1)),he(c.d).slice(0,l)===he(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(gn(w,l+2,h).times(o+""))),u=ae(u,new w(p),l,1),e==null)if(Wt(u.d,l-g,k,a))w.precision=l+=g,c=s=f=ae(m.minus(1),m.plus(1),l,1),d=_(f.times(f),l,1),i=a=1;else return _(u,w.precision=h,k,G=!0);else return w.precision=h,u;u=c,i+=2}}function ri(r){return String(r.s*r.s/0)}function Qn(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 Xo(r,e){var t,n,i,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Jr.test(e))return Qn(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(Do.test(e))t=16,e=e.toLowerCase();else if(Oo.test(e))t=2;else if(Wo.test(e))t=8;else throw Error(ot+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=ti(n,new n(t),o,o*2)),c=fn(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=hn(c,l),r.d=c,G=!1,s&&(r=ae(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?be(2,u):qt.pow(2,u))),G=!0,r)}function zo(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:Lt(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/kn(5,t)),e=Lt(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 Lt(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 kn(r,e){for(var t=r;--e;)t*=r;return t}function ii(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=zr(t)?n?2:3:n?4:1,e;$e=zr(t)?n?1:4:n?3:2}return e.minus(i).abs()}function Zn(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,st),n===void 0?n=p.rounding:Le(n,0,8)):(t=p.precision,n=p.rounding),!r.isFinite())l=ri(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=fn(Ue(d),10,i),d.e=d.d.length),m=fn(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=jr),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+=zn.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=fn(l,i,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=zn.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 Hr(r,e){if(r.length>e)return r.length=e,!0}function Ho(r){return new this(r).abs()}function Yo(r){return new this(r).acos()}function jo(r){return new this(r).acosh()}function Qo(r,e){return new this(r).plus(e)}function Zo(r){return new this(r).asin()}function $o(r){return new this(r).asinh()}function Jo(r){return new this(r).atan()}function es(r){return new this(r).atanh()}function ts(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 ns(r){return new this(r).cbrt()}function rs(r){return _(r=new this(r),r.e+1,2)}function is(r,e,t){return new this(r).clamp(e,t)}function os(r){if(!r||typeof r!="object")throw Error(wn+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,st,"rounding",0,8,"toExpNeg",-Kt,0,"toExpPos",0,Kt,"maxE",0,Kt,"minE",-Kt,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=Hn[t]),(n=r[t])!==void 0)if(Te(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(ot+t+": "+n);if(t="crypto",i&&(this[t]=Hn[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(Zr);else this[t]=!1;else throw Error(ot+t+": "+n);return this}function ss(r){return new this(r).cos()}function as(r){return new this(r).cosh()}function oi(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,Yr(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 Qn(c,o.toString())}else if(u!=="string")throw Error(ot+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),Jr.test(o)?Qn(c,o):Xo(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=os,i.clone=oi,i.isDecimal=Yr,i.abs=Ho,i.acos=Yo,i.acosh=jo,i.add=Qo,i.asin=Zo,i.asinh=$o,i.atan=Jo,i.atanh=es,i.atan2=ts,i.cbrt=ns,i.ceil=rs,i.clamp=is,i.cos=ss,i.cosh=as,i.div=us,i.exp=cs,i.floor=ls,i.hypot=ms,i.ln=ds,i.log=ps,i.log10=bs,i.log2=fs,i.max=ys,i.min=gs,i.mod=ws,i.mul=hs,i.pow=ks,i.random=As,i.round=Ts,i.sign=Ps,i.sin=xs,i.sinh=Bs,i.sqrt=Is,i.sub=Ss,i.sum=Ks,i.tan=Ls,i.tanh=Ns,i.trunc=Rs,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 us(r,e){return new this(r).div(e)}function cs(r){return new this(r).exp()}function ls(r){return _(r=new this(r),r.e+1,3)}function ms(){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 Yr(r){return r instanceof qt||r&&r.toStringTag===$r||!1}function ds(r){return new this(r).ln()}function ps(r,e){return new this(r).log(e)}function fs(r){return new this(r).log(2)}function bs(r){return new this(r).log(10)}function ys(){return ni(this,arguments,"lt")}function gs(){return ni(this,arguments,"gt")}function ws(r,e){return new this(r).mod(e)}function hs(r,e){return new this(r).mul(e)}function ks(r,e){return new this(r).pow(e)}function As(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:Le(r,1,st),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(Zr);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=D,n&&r&&(i=be(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 Ts(r){return _(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 xs(r){return new this(r).sin()}function Bs(r){return new this(r).sinh()}function Is(r){return new this(r).sqrt()}function Ss(r,e){return new this(r).sub(e)}function Ks(){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,_(t,this.precision,this.rounding)}function Ls(r){return new this(r).tan()}function Ns(r){return new this(r).tanh()}function Rs(r){return _(r=new this(r),r.e+1,1)}x[Symbol.for("nodejs.util.inspect.custom")]=x.toString;x[Symbol.toStringTag]="Decimal";var qt=x.constructor=oi(Hn);bn=new qt(bn);yn=new qt(yn);var N=qt;import{PublicKey as nr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Cs}from"@solana/spl-token";import{PublicKey as ce,SystemProgram as ai,SYSVAR_RENT_PUBKEY as Es}from"@solana/web3.js";function T({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Ms=[T({pubkey:Cs,isWritable:!1}),T({pubkey:ai.programId,isWritable:!1}),T({pubkey:Es,isWritable:!1})];function $n({publicKey:r,transformSol:e}){let t=Jn(r.toString());if(t instanceof ce)return e&&t.equals(Nt)?si:t;if(e&&t.toString()===Nt.toBase58())return si;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 Jn(r){try{return new ce(r)}catch{return r}}var An=new ce("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Du=new ce("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),at=new ce("SysvarRent111111111111111111111111111111111"),Wu=new ce("SysvarC1ock11111111111111111111111111111111"),Rt=new ce("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),_s=new ce("Sysvar1nstructions1111111111111111111111111"),qu=ai.programId,Gu=new ce("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Uu=new ce("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Xu=new ce("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),zu=new ce("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Hu=new ce("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Yu=new ce("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),ju=new ce("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Qu=new ce("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Zu=new ce("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),$u=new ce("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Ju=new ce("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),si=new ce("So11111111111111111111111111111111111111112"),Nt=ce.default;function er(r){return $n({publicKey:r,transformSol:!0})}import{PublicKey as vs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ui}from"@solana/spl-token";var tr={chainId:101,address:vs.default.toBase58(),programId:ui.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ut={chainId:101,address:"So11111111111111111111111111111111111111112",programId:ui.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 rr=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===Nt.toBase58()||e instanceof nr&&Nt.equals(e)){this.decimals=ut.decimals,this.symbol=ut.symbol,this.name=ut.name,this.mint=new nr(ut.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?nr.default:$n({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Pe=rr;Pe.WSOL=new rr(j(q({},ut),{mint:ut.address}));import{get as ci,set as Fs}from"lodash";import mi from"dayjs";import Vs from"dayjs/plugin/utc";mi.extend(Vs);var ir=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 mi().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}},li={},Os={};function re(r){let e=ci(li,r);if(!e){let t=ci(Os,r);e=new ir({name:r,logLevel:t}),Fs(li,r,e)}return e}import Pn from"big.js";import qs from"bn.js";import Gs from"decimal.js-light";import Ds from"toformat";var Ws=Ds,Gt=Ws;var Tn=re("module/fraction"),or=Gt(Pn),Ut=Gt(Gs),Us={[0]:Ut.ROUND_DOWN,[1]:Ut.ROUND_HALF_UP,[2]:Ut.ROUND_UP},Xs={[0]:Pn.roundDown,[1]:Pn.roundHalfUp,[2]:Pn.roundUp},ee=class{constructor(e,t=new qs(1)){this.numerator=te(e),this.denominator=te(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new ee(this.denominator,this.numerator)}add(e){let t=e instanceof ee?e:new ee(te(e));return this.denominator.eq(t.denominator)?new ee(this.numerator.add(t.numerator),this.denominator):new ee(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof ee?e:new ee(te(e));return this.denominator.eq(t.denominator)?new ee(this.numerator.sub(t.numerator),this.denominator):new ee(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof ee?e:new ee(te(e));return new ee(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof ee?e:new ee(te(e));return new ee(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Tn.logWithError(`${e} is not an integer.`),e<=0&&Tn.logWithError(`${e} is not positive.`),Ut.set({precision:e+1,rounding:Us[n]});let i=new Ut(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)||Tn.logWithError(`${e} is not an integer.`),e<0&&Tn.logWithError(`${e} is negative.`),or.DP=e,or.RM=Xs[n]||1,new or(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Hs=re("Raydium_price"),Fe=class extends ee{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new ee(sr(n.decimals),sr(i.decimals))}get raw(){return new ee(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&&Hs.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 ar=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},xn=ar;xn.SOL=new ar(tr);import Ys from"bn.js";var di=new ee(new Ys(100)),Xe=class extends ee{toSignificant(e=5,t,n){return this.mul(di).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(di).toFixed(e,t,n)}};import{PublicKey as js}from"@solana/web3.js";import Qs from"bn.js";function pi(r){return typeof r=="object"&&r!==null&&![Pe,le,js,ee,Qs,Fe,Xe].some(e=>typeof e=="object"&&r instanceof e)}function ft(r){return typeof r=="string"?Jn(r):Array.isArray(r)?r.map(e=>ft(e)):pi(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,ft(t)])):r}var Xt=new Ne(0),bi=new Ne(1),il=new Ne(2),ol=new Ne(3),sl=new Ne(5),ur=new Ne(10),al=new Ne(100),ul=new Ne(1e3),cl=new Ne(1e4),fi=9007199254740991;function te(r){let e=re("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>=fi||r<=-fi)&&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 sr(r){return ur.pow(te(r))}function Bn(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 $s=re("Raydium_amount"),yi=Gt(Zs);function Js(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")):$s.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var le=class extends ee{constructor(t,n,i=!0,o){let s=new In(0),a=ur.pow(new In(t.decimals));if(i)s=te(n);else{let u=new In(0),c=new In(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Js(n.toString(),t.decimals);u=te(l),c=te(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=re(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 yi.DP=this.token.decimals,new yi(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as ua}from"@solana/web3.js";import ki,{isBN as Ai}from"bn.js";import{bits as Rl,BitStructure as Cl,blob as ea,Blob as El,cstr as Ml,f32 as _l,f32be as vl,f64 as Fl,f64be as Vl,greedy as Ol,Layout as ta,ns64 as Dl,ns64be as Wl,nu64 as ql,nu64be as Gl,offset as Ul,s16 as Xl,s16be as zl,s24 as Hl,s24be as Yl,s32 as na,s32be as jl,s40 as Ql,s40be as Zl,s48 as $l,s48be as Jl,s8 as em,seq as ra,struct as tm,Structure as ia,u16 as oa,u16be as nm,u24 as rm,u24be as im,u32 as om,u32be as sm,u40 as am,u40be as um,u48 as cm,u48be as lm,u8 as sa,UInt as aa,union as mm,Union as dm,unionLayoutDiscriminator as pm,utf8 as fm}from"@solana/buffer-layout";var cr=ta,gi=ia;var lr=aa;var wi=sa,Ct=oa;var ke=na;var hi=ra;var xe=ea;var bt=class extends cr{constructor(t,n,i){super(t,i);this.blob=xe(t),this.signed=n}decode(t,n=0){let i=new ki(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 ki(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}};function v(r){return new lr(1,r)}function Me(r){return new lr(4,r)}function b(r){return new bt(8,!1,r)}function V(r){return new bt(16,!1,r)}function Ti(r){return new bt(1,!0,r)}function Kn(r){return new bt(8,!0,r)}function Pi(r){return new bt(16,!0,r)}var Sn=class extends cr{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 Sn(xe(32),e=>new ua(e),e=>e.toBuffer(),r)}function Re(r){return new Sn(wi(),ca,la,r)}function ca(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function la(r){return r?1:0}var mr=class extends gi{decode(e,t){return super.decode(e,t)}};function R(r,e,t){return new mr(r,e,t)}function W(r,e,t){let n,i=typeof e=="number"?e:Ai(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=Ai(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 hi(r,i,t)}var Km=R([Me("mintAuthorityOption"),I("mintAuthority"),b("supply"),v("decimals"),v("isInitialized"),Me("freezeAuthorityOption"),I("freezeAuthority")]);import{PublicKey as Cm}from"@solana/web3.js";import{MintLayout as Mm,TOKEN_PROGRAM_ID as vm}from"@solana/spl-token";var xi=r=>new Pe({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name});import{PublicKey as J}from"@solana/web3.js";var Bi=new J("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Ii=new J("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Si=new J("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),zm=new J("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Hm=new J("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Ym=new J("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Ki=new J("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),jm=new J("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Qm=new J("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Zm=new J("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),$m=new J("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Jm=new J("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),ed=new J("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),td=new J("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),nd=new J("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),rd=new J("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),id=new J("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),od=new J("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),ma=new J("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),da=new J("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),pa=new J("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");var sd={SERUM_MARKET:J.default,OPENBOOK_MARKET:new J("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:J.default,FarmV3:new J("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new J("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new J("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new J("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new J("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new J("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new J("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:ma,CREATE_CPMM_POOL_AUTH:da,CREATE_CPMM_POOL_FEE_ACC:pa,FEE_DESTINATION_ID:new J("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as ha}from"@solana/web3.js";import{PublicKey as fa,ComputeBudgetProgram as Li,Transaction as Ri,TransactionMessage as ba,Keypair as Ci,VersionedTransaction as Ei}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ya}from"@solana/spl-token";var Q={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 Ni=re("Raydium_txUtil"),Mi=1644;function Ln(r){let e=[],t=[];return r.microLamports&&(e.push(Li.setComputeUnitPrice({microLamports:r.microLamports})),t.push(Q.SetComputeUnitPrice)),r.units&&(e.push(Li.setComputeUnitLimit({units:r.units})),t.push(Q.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Et(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 ga(r,e){r.length<1&&Ni.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Ni.logWithError(`no signers provided:, ${e.toString()}`);let t=new Ri;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Mi}catch{return!1}}function de(r,e){let[t,n]=fa.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}function zt({instructions:r,payer:e,signers:t}){return ga(r,[e,...t])}function Ht({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Ci.generate().publicKey.toString()}){let o=new ba({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Ei(o).serialize()).toString("base64").length<Mi}catch{return!1}}var wa=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 Ri&&(t.recentBlockhash||(t.recentBlockhash=ya.toBase58()),t.feePayer||(t.feePayer=Ci.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof Ei&&(n=wa(n));let i=n.toString("base64");e.push(i)}),console.log("simulate tx string:",e),e}import{TOKEN_PROGRAM_ID as ka}from"@solana/spl-token";function _e(r,e,t){return de([r.toBuffer(),(t!=null?t:ka).toBuffer(),e.toBuffer()],new ha("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import De from"bn.js";var Yt=1e4;function ye(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=j(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===Yt){let u=new De(o.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=jt(r.mul(new De(Yt)),new De(Yt-o.transferFeeBasisPoints)),c=new De(o.maximumFee.toString()),l=u.sub(r).gt(c)?r.add(c):u,m=jt(l.mul(new De(o.transferFeeBasisPoints)),new De(Yt)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let u=jt(r.mul(new De(o.transferFeeBasisPoints)),new De(Yt)),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 jt(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 Qt,sendAndConfirmTransaction as Zt,Transaction as $t,TransactionMessage as Jt,VersionedTransaction as en}from"@solana/web3.js";import Pa from"axios";import{PublicKey as _i,AddressLookupTableAccount as Rn}from"@solana/web3.js";import{PublicKey as Aa}from"@solana/web3.js";import{getTransferFeeConfig as jd,unpackMint as Qd}from"@solana/spl-token";function dr(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}var pr=re("Raydium_accountInfo_util");async function ct(r,e,t){let{batchRequest:n,commitment:i="confirmed"}=q({batchRequest:!1},t),o=dr(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=dr(a,10);s=(await(await Promise.all(u.map(async l=>await r._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&pr.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"&&pr.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(d[0],"base64"),executable:p,lamports:g,owner:new Aa(f),rentEpoch:y}}return null})))}else try{s=await Promise.all(o.map(a=>r.getMultipleAccountsInfo(a,i)))}catch(a){a instanceof Error&&pr.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function Nn(r,e,t){let n=await ct(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>j(q({},i),{accountInfo:n[o]}))}async function fr({connection:r,address:e}){let t=await ct(r,[...new Set(e.map(i=>i.toString()))].map(i=>new _i(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],s=e[i];if(!o)continue;let a=new Rn({key:s,state:Rn.deserialize(o.data)});n[s.toString()]=a,Cn[s.toString()]=a}return n}var Cn={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Rn({key:new _i("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Rn.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 En=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}=Ln(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!==Qt.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 $t;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 Et(this.connection);if(t.recentBlockhash=s,this.signers.length&&t.sign(...this.signers),yt([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await Zt(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 Et(this.connection);if((f=this.owner)!=null&&f.isKeyPair){if(l){let y=[];for(let w of s){let k=await Zt(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 Zt(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,S=>{let K=h.findIndex(B=>B.txId===A);K>-1&&(h[K].status=S.err?"error":"success"),m==null||m([...h]),S.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"?{}:Cn),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let p of a)s[p]===void 0&&u.push(new Qt(p));let c=await fr({connection:this.connection,address:u});for(let[p,g]of Object.entries(c))s[p]=g;let l=new Jt({payerKey:this.feePayer,recentBlockhash:i?Qt.default.toBase58():await Et(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new en(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(S=>S.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?Ln(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,m)=>j(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 Qt(f));if(u.length<12&&zt({instructions:d,payer:this.feePayer,signers:g})||zt({instructions:m,payer:this.feePayer,signers:g}))u.push(l);else{if(u.length===0)throw Error("item ins too big");zt({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:g})?s.push(new $t().add(...i.instructions,...u)):s.push(new $t().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);zt({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(d=>d.publicKey)})?s.push(new $t().add(...i.instructions,...u)):s.push(new $t().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 Et(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 Zt(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 Zt(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,S=>{let K=h.findIndex(B=>B.txId===A);K>-1&&(h[K].status=S.err?"error":"success"),d==null||d([...h]),S.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"?{}:Cn),n),a=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let w of a)s[w]===void 0&&u.push(new Qt(w));let c=await fr({connection:this.connection,address:u});for(let[w,k]of Object.entries(c))s[w]=k;let l=t?Ln(t):{instructions:[],instructionTypes:[]},m=await Et(this.connection),d=this.signers.reduce((w,k)=>j(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&&Ht({instructions:h,payer:this.feePayer,lookupTableAddressAccount:s})||Ht({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&&Ht({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let A=new Jt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new en(A))}else{let A=new Jt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new en(A))}g.push(Array.from(new Set(f.map(A=>A.keys.filter(S=>S.isSigner).map(S=>S.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&&Ht({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let h=new Jt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new en(h))}else{let h=new Jt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new en(h))}g.push(k)}return{builder:this,transactions:p,buildProps:e,signers:g,instructionTypes:this.instructionTypes,execute:async w=>{var S;let{sequentially:k,onTxUpdate:h,recentBlockHash:P,skipPreflight:A=!0}=w||{};if(p.map(async(K,B)=>{g[B].length&&K.sign(g[B]),P&&(K.message.recentBlockhash=P)}),yt(p),(S=this.owner)!=null&&S.isKeyPair){let{lastValidBlockHeight:K,blockhash:B}=await this.connection.getLatestBlockhash();if(p.forEach((O,F)=>{g[F].find(U=>U.publicKey.equals(this.owner.publicKey))||O.sign([this.owner.signer])}),k){let O=[];for(let F of p){let U=await this.connection.sendTransaction(F,{skipPreflight:A}),{lastValidBlockHeight:ue,blockhash:ie}=await this.connection.getLatestBlockhash();await this.connection.confirmTransaction({blockhash:ie,lastValidBlockHeight:ue,signature:U},"confirmed"),O.push(U)}return{txIds:O,signedTxs:p}}return{txIds:await Promise.all(p.map(async O=>{let F=await this.connection.sendTransaction(O,{skipPreflight:A});return await this.connection.confirmTransaction({blockhash:B,lastValidBlockHeight:K,signature:F},"confirmed"),F})),signedTxs:p}}if(this.signAllTransactions){let K=await this.signAllTransactions(p);if(k){let B=0,O=[],F=async()=>{if(!K[B])return;let U=await this.connection.sendTransaction(K[B],{skipPreflight:A});O.push({txId:U,status:"sent",signedTx:K[B]}),h==null||h([...O]),B++,this.connection.onSignature(U,ue=>{let ie=O.findIndex(oe=>oe.txId===U);ie>-1&&(O[ie].status=ue.err?"error":"success"),h==null||h([...O]),ue.err||F()},"processed"),this.connection.getSignatureStatus(U)};return F(),{txIds:[],signedTxs:K}}else{let B=[];for(let O=0;O<K.length;O+=1){let F=await this.connection.sendTransaction(K[O],{skipPreflight:A});B.push(F)}return{txIds:B,signedTxs:K}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};var br=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),tn=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=re(t)}createTxBuilder(e){return this.scope.checkOwner(),new En({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(br(e))}logInfo(...e){this.logger.info(br(e))}logAndCreateError(...e){let t=br(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{TOKEN_PROGRAM_ID as rn,ASSOCIATED_TOKEN_PROGRAM_ID as Fa}from"@solana/spl-token";import{PublicKey as ze,TransactionInstruction as _t,SystemProgram as Va,SYSVAR_RENT_PUBKEY as Cp}from"@solana/web3.js";var yr=R([v("instruction"),b("amountIn"),b("minAmountOut")]),gr=R([v("instruction"),b("maxAmountIn"),b("amountOut")]),Pp=R([v("instruction"),v("nonce")]),xa=R([v("instruction"),v("nonce"),b("startTime")]),vi=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")]),xp=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")]),wr=R([v("instruction"),b("baseAmountIn"),b("quoteAmountIn"),b("fixedSide")]),hr=R([v("instruction"),b("amountIn")]);var Fi=R([b("fee")]);import{PublicKey as Ba}from"@solana/web3.js";var Mt=new Ba("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ht=5e4,Ia=R([b("x"),b("y"),b("price")]),Sa=R([b("accountType"),b("status"),b("multiplier"),b("validDataCount"),W(Ia,ht,"DataElement")]);function Ka(r,e){return[0,ht-2]}function La(r){return[0,ht-2]}function Na(r){return[0,ht-2]}function Ra(r,e,t){let[n,i]=Ka(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 kr(r,e,t){let[n,i,o]=Ra(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 Vi(r,e,t){return e*t/r.multiplier}function Ca(r,e){let[t,n]=La(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 Ea(r,e){let[t,n]=Na(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 Oi(r,e,t,n){let i=n?e+t:e-t,[o,s,a]=Ca(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 Ma(r,e,t,n){let i=n?e-t:e+t,[o,s,a]=Ea(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 _a(r,e){let t=Oi(r,e,0,!1);return t[3]?t[0]:0}function Di(r,e,t,n){let i=kr(r,e,t),o=wt(r,e,i),s=wt(r,t,i),a=wt(r,n,i),u=!0,[c,l,m,d]=Oi(r,o,a,u);if(!d)return 0;if(m)return n*r.multiplier/c;{let p=s-l;return Vi(r,p,i)}}function Wi(r,e,t,n){let i=kr(r,e,t),o=wt(r,e,i),s=wt(r,t,i),a=wt(r,n,i),u=!1,[c,l,m,d]=Ma(r,s,a,u);if(!d)return 0;if(m)return n*c/r.multiplier;{let p=o-l;return Vi(r,p,i)}}function va(r){let e=Sa.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 qi(r,e,t,n){let i=_a(r,wt(r,e,kr(r,e,t)))/r.multiplier;return n?i:1/i}var nn=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(Mt);e&&(this._layoutData=va(e==null?void 0:e.data))}}};var Gi=re("Raydium_liquidity_instruction");function Ui(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:i,quoteAmountIn:o,fixedSide:s}=r,a=Buffer.alloc(wr.span);wr.encode({instruction:3,baseAmountIn:te(i),quoteAmountIn:te(o),fixedSide:s==="base"?Xt:bi},a);let u=[T({pubkey:rn,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:Mt})),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 _t({programId:new ze(e.programId),keys:u,data:a})}function Ar(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(hr.span);hr.encode({instruction:4,amountIn:te(i)},a);let u=[T({pubkey:rn,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:Mt})):(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 _t({programId:o.programId,keys:u,data:a})}return new _t({programId:o.programId,keys:[]})}function Xi({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:S,feeDestinationId:K}){let B=R([v("instruction"),v("nonce"),b("openTime"),b("pcAmount"),b("coinAmount")]),O=[{pubkey:rn,isSigner:!1,isWritable:!1},{pubkey:Fa,isSigner:!1,isWritable:!1},{pubkey:Va.programId,isSigner:!1,isWritable:!1},{pubkey:at,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:S,isSigner:!1,isWritable:!1},{pubkey:K,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}],F=Buffer.alloc(B.span);return B.encode({instruction:1,nonce:k,openTime:h,coinAmount:P,pcAmount:A},F),{instruction:new _t({keys:O,programId:r,data:F}),instructionType:Q.AmmV4CreatePool}}function Oa({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},i){let o=ft(r),s=Buffer.alloc(yr.span);yr.encode({instruction:9,amountIn:te(t),minAmountOut:te(n)},s);let a=[T({pubkey:rn,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:Mt})),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 _t({programId:o.programId,keys:a,data:s})}function Da({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},i){let o=ft(r),s=Buffer.alloc(gr.span);gr.encode({instruction:11,maxAmountIn:te(t),amountOut:te(n)},s);let a=[T({pubkey:rn,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:Mt})),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 _t({programId:o.programId,keys:a,data:s})}function zi(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 Oa(j(q({},a),{amountIn:i,minAmountOut:o}),t);if(s==="out")return Da(j(q({},a),{maxAmountIn:i,amountOut:o}),t);Gi.logWithError("invalid params","params",r)}throw Gi.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}import{TOKEN_PROGRAM_ID as Ae,TOKEN_2022_PROGRAM_ID as dt,ASSOCIATED_TOKEN_PROGRAM_ID as bo}from"@solana/spl-token";import{PublicKey as L,TransactionInstruction as qe,SystemProgram as Vt,Keypair as Mr}from"@solana/web3.js";import yo from"bn.js";import ja from"bn.js";function Mn(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function Tr(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function Pr(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function on(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function Hi(r,e){return on(r,e)?null:Tr(r,e)}function Yi(r,e){return on(r,e)?null:Pr(r,e)}var zp=Buffer.from("amm_config","utf8"),Wa=Buffer.from("pool","utf8"),qa=Buffer.from("pool_vault","utf8"),Ga=Buffer.from("pool_reward_vault","utf8"),ji=Buffer.from("position","utf8"),Ua=Buffer.from("tick_array","utf8"),Xa=Buffer.from("operation","utf8"),za=Buffer.from("pool_tick_array_bitmap_extension","utf8");function Qi(r,e,t,n){return de([Wa,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function xr(r,e,t){return de([qa,e.toBuffer(),t.toBuffer()],r)}function Zi(r,e,t){return de([Ga,e.toBuffer(),t.toBuffer()],r)}function se(r,e,t){return de([Ua,e.toBuffer(),Mn(t)],r)}function kt(r,e,t,n){return de([ji,e.toBuffer(),Mn(t),Mn(n)],r)}function He(r,e){return de([ji,e.toBuffer()],r)}function _n(r){return de([Buffer.from("metadata","utf8"),Rt.toBuffer(),r.toBuffer()],Rt)}function Br(r){return de([Xa],r)}function Ye(r,e){return de([za,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),vn=new je(1).shln(128),Ir=ve.sub(Qe),sn=64,$i=vn.subn(1),Be=-443636,Ke=-Be,vt=new je("4295048016"),Ft=new je("79226673521066979257578248091"),Ji=16,eo="59543866431248",to="184467440737095516",no="15793534762490258745",Fn=new je(10).pow(new je(6));var jp=new je("18446744073700000000");var Ha=15,Z=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(Ha/2));for(let p=0;p<l.length;p++){let{publicKey:g}=se(t,n,l[p]);u.push(g)}let m=(await ct(e,u)).map(p=>p!==null?an.decode(p.data):null),d={};for(let p=0;p<u.length;p++){let g=m[p];g!==null&&(d[g.startTickIndex]=j(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/Z.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=ge-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<ge;){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<ge;){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(Be,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return ge*e}};import Y from"bn.js";import{PublicKey as tt}from"@solana/web3.js";import me from"bn.js";var Sr=14,et=class{static maxTickInTickarrayBitmap(e){return e*ge*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(!Z.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-Z.tickCount(n):t+Z.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*ge,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=Hi(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=Yi(1024,l);if(m!==null){let d=(c+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-Z.tickCount(n)}}}},un=class{static getBitmapOffset(e,t){if(!Z.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<=Be)throw Error(`extensionTickBoundary check error: ${n}, ${Be}`);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=Z.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=on(512,u)?null:Tr(512,u);if(c!==null){let l=t-c*Z.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=M.mergeTickArrayBitmap(e).shrn(a),c=on(512,u)?null:Pr(512,u);if(c!==null){let l=t+c*Z.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-Z.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%et.maxTickInTickarrayBitmap(t),i=Math.floor(n/Z.tickCount(t));return e<0&&n!=0&&(i=At-i),i}};import Ze from"bn.js";var cn=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=z.wrappingSubU128(z.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),c=z.wrappingSubU128(z.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=z.mulDivFloor(z.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,ve),u=t.tokenFeesOwedA.add(a),c=z.mulDivFloor(z.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=z.mulDivFloor(z.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,ve),u=t.tokenFeesOwedA.add(a),c=z.mulDivFloor(z.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=z.wrappingSubU128(u,c.growthInsideLastX64),m=z.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=z.wrappingSubU128(u,c.growthInsideLastX64),m=z.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(z.wrappingSubU128(z.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(z.wrappingSubU128(z.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=H.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),u=H.getSqrtPriceX64FromTick(t.tickLower),c=H.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+i:1-i,m=$.getAmountsFromLiquidity(a,u,c,n,o),[d,p]=[ye(m.amountA,(y=e.mintA.extensions)==null?void 0:y.feeConfig,s,!0),ye(m.amountB,(w=e.mintB.extensions)==null?void 0:w.feeConfig,s,!0)],[g,f]=[ye(new Ze(new N(m.amountA.toString()).mul(l).toFixed(0)),(k=e.mintA.extensions)==null?void 0:k.feeConfig,s,!0),ye(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 ro}from"@solana/spl-token";var Ie=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}=Ie.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?un.checkTickArrayIsInit(Z.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,Z.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/Z.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=Z.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}=un.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Be||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=j(q({},m),{perSecond:z.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=z.mulDivFloor(f,p.emissionsPerSecondX64,i),w=p.rewardGrowthGlobalX64.add(y),k=z.mulDivFloor(f,p.emissionsPerSecondX64,ve),h=p.rewardTotalEmissioned.add(k);s.push(j(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=Z.getArrayStartIndex(Ke,e)+Z.tickCount(e)),n<Be&&(n=Z.getArrayStartIndex(Be,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!Z.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/Z.tickCount(t)*At}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await Nn(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=so.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 Nn(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=an.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=j(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 ct(t,c,{batchRequest:i}),m={};for(let d of l){if(d===null)continue;let p=oo.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}=$.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=>j(q({},B),{pendingReward:new me(0)})),leverage:A,tokenFeeAmountA:new me(0),tokenFeeAmountB:new me(0)}];let S=await M.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),K=await M.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=S,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=K}if(o){let d=Object.values(m),p=await ct(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]=an.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()],S=P.ticks[M.getTickOffsetInArray(w.tickLower,f.tickSpacing)],K=A.ticks[M.getTickOffsetInArray(w.tickUpper,f.tickSpacing)],{tokenFeeAmountA:B,tokenFeeAmountB:O}=await cn.GetPositionFees(f,w,S,K),F=await cn.GetPositionRewards(f,w,S,K);w.tokenFeeAmountA=B.gte(new me(0))?B:new me(0),w.tokenFeeAmountB=O.gte(new me(0))?O:new me(0);for(let U=0;U<F.length;U++)w.rewardInfos[U].pendingReward=F[U].gte(new me(0))?F[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 F;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?vt.add(new me(1)):Ft.sub(new me(1)):u=H.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let d=ye(o,l,i,!1),{expectedAmountOut:p,remainingAccounts:g,executionPrice:f,feeAmount:y}=Ie.getOutputAmountAndRemainAccounts(e,t,n,d.amount.sub((F=d.fee)!=null?F:pe),u),w=ye(p,m,i,!1),k=H.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=ye(P,m,i,!1),S=c?e.currentPrice:new N(1).div(e.currentPrice),K=new N(h).sub(S).abs(),B=S,O=new Xe(new N(K).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:O,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 Pe(j(q({},u),{mint:u.address,isToken2022:u.programId===ro.toBase58()})),new Pe(j(q({},c),{mint:c.address,isToken2022:c.programId===ro.toBase58()}))],{realAmountIn:d,amountOut:p,minAmountOut:g,expirationTime:f,currentPrice:y,executionPrice:w,priceImpact:k,fee:h,remainingAccounts:P}=await Ie.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new tt(u.address),amountIn:n,slippage:o,epochInfo:s}),A=j(q({},d),{amount:new le(l,d.amount),fee:d.fee===void 0?void 0:new le(l,d.fee)}),S=j(q({},p),{amount:new le(m,p.amount),fee:p.fee===void 0?void 0:new le(m,p.fee)}),K=j(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)}),O=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)}),F=new le(l,h);return{realAmountIn:A,amountOut:S,minAmountOut:K,expirationTime:f,currentPrice:B,executionPrice:O,priceImpact:k,fee:F,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[er(e.mintA.address).toString()],d=i[er(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=H.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),y=H.getSqrtPriceX64FromTick(s),w=H.getSqrtPriceX64FromTick(a),{amountSlippageA:k,amountSlippageB:h}=$.getAmountsFromLiquidityWithSlippage(f,y,w,t,!1,!1,0),{amountSlippageA:P,amountSlippageB:A}=$.getAmountsFromLiquidityWithSlippage(f,y,w,o,!1,!1,0),S=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)),K=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=K.div(S.add(K)).div(K),F=new N(l.volumeFee).mul(365).div(c).mul(B).mul(100).toNumber(),U=3600*24*365,ue=e.rewardDefaultInfos.map(ie=>{var X,pt;let oe=ie.mint.decimals,ne=i[ie.mint.address];return u<((X=ie.startTime)!=null?X:0)||u>((pt=ie.endTime)!=null?pt:0)||!ie.perSecond||!ne||oe===void 0?0:new N(ne.value).mul(new N(ie.perSecond).mul(U)).div(new N(10).pow(oe)).mul(B).mul(100).toNumber()});return{feeApr:F,rewardsApr:ue,apr:F+ue.reduce((ie,oe)=>ie+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=H.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),m=H.getSqrtPriceX64FromTick(n),d=H.getSqrtPriceX64FromTick(i),p=a?1-s:1+s,g=ye(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?$.getLiquidityFromTokenAmountA(m,d,f,!a):new me(0);else if(l.lte(d)){let h=$.getLiquidityFromTokenAmountA(l,d,f,!a),P=$.getLiquidityFromTokenAmountB(m,l,f);y=t?h:P}else y=t?new me(0):$.getLiquidityFromTokenAmountB(m,d,f);return Ie.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=H.getSqrtPriceX64FromTick(n),c=H.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,m=$.getAmountsFromLiquidity(H.priceToSqrtPriceX64(new N(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[d,p]=[ye(m.amountA,(y=t.mintA.extensions)==null?void 0:y.feeConfig,e,!0),ye(m.amountB,(w=t.mintB.extensions)==null?void 0:w.feeConfig,e,!0)],[g,f]=[ye(m.amountA.muln(l),(k=t.mintA.extensions)==null?void 0:k.feeConfig,e,!0),ye(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=io.decode(n.data),o=Ye(new tt(t.programId),new tt(t.id)).publicKey,s=await Ie.fetchExBitmaps({connection:e,exBitmapAddress:[o],batchRequest:!1});return j(q({},i),{id:new tt(t.id),programId:new tt(t.programId),mintA:t.mintA,mintB:t.mintB,ammConfig:j(q({},t.config),{id:new tt(t.config.id),fundOwner:""}),currentPrice:new N(t.price),exBitmapInfo:s[o.toBase58()],startTime:i.startTime.toNumber()})}};var z=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 Y(e.mul(N.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(vn).sub(t).mod(vn)}};function we(r,e){return Kr(r.mul(e),64,256)}function Ya(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Kr(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var H=class{static sqrtPriceX64ToPrice(e,t,n){return z.x64ToDecimal(e).pow(2).mul(N.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return z.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(sn);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?z.mulDivCeil(s,e,a):z.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 z.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(sn);if(i)return e.add(o.div(t));{let s=z.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<Be||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 Y("18445821805675395072"):new Y("18446744073709551616");return(t&2)!=0&&(n=we(n,new Y("18444899583751176192"))),(t&4)!=0&&(n=we(n,new Y("18443055278223355904"))),(t&8)!=0&&(n=we(n,new Y("18439367220385607680"))),(t&16)!=0&&(n=we(n,new Y("18431993317065453568"))),(t&32)!=0&&(n=we(n,new Y("18417254355718170624"))),(t&64)!=0&&(n=we(n,new Y("18387811781193609216"))),(t&128)!=0&&(n=we(n,new Y("18329067761203558400"))),(t&256)!=0&&(n=we(n,new Y("18212142134806163456"))),(t&512)!=0&&(n=we(n,new Y("17980523815641700352"))),(t&1024)!=0&&(n=we(n,new Y("17526086738831433728"))),(t&2048)!=0&&(n=we(n,new Y("16651378430235570176"))),(t&4096)!=0&&(n=we(n,new Y("15030750278694412288"))),(t&8192)!=0&&(n=we(n,new Y("12247334978884435968"))),(t&16384)!=0&&(n=we(n,new Y("8131365268886854656"))),(t&32768)!=0&&(n=we(n,new Y("3584323654725218816"))),(t&65536)!=0&&(n=we(n,new Y("696457651848324352"))),(t&131072)!=0&&(n=we(n,new Y("26294789957507116"))),(t&262144)!=0&&(n=we(n,new Y("37481735321082"))),e>0&&(n=$i.div(n)),n}static getTickFromPrice(e,t,n){return H.getTickFromSqrtPriceX64(H.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Ft)||e.lt(vt))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new Y(t-64),i=Ya(n,32,128),o=new Y("8000000000000000","hex"),s=0,a=new Y(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new Y(0))&&s<Ji;){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 Y(eo)),d=Kr(m.sub(new Y(to)),64,128).toNumber(),p=Kr(m.add(new Y(no)),64,128).toNumber();return d==p?d:H.getSqrtPriceX64FromTick(p).lte(e)?p:d}},Pt=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=H.getTickFromSqrtPriceX64(H.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=H.getSqrtPriceX64FromTick(o);return H.sqrtPriceX64ToPrice(s,n,i)}},$=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(sn),s=t.sub(e);return i?z.mulDivRoundingUp(z.mulDivCeil(o,s,t),Qe,e):z.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?z.mulDivCeil(n,t.sub(e),ve):z.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?z.mulDivRoundingUp(a,Qe,Ir):a.shrn(sn)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),z.mulDivFloor(n,Ir,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return $.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=$.getLiquidityFromTokenAmountA(e,n,i,!1),a=$.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return $.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:$.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new Y(0)};if(e.lt(n)){let s=$.getTokenAmountAFromLiquidity(e,n,i,o),a=$.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new Y(0),amountB:$.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:u,amountB:c}=$.getAmountsFromLiquidity(e,t,n,i,s),l=o?1+a:1-a,m=new Y(new N(u.toString()).mul(l).toFixed(0)),d=new Y(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=H.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),l=H.getSqrtPriceX64FromTick(t),m=H.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,p=$.getAmountsFromLiquidity(c,l,m,i,s),[g,f]=[ye(p.amountA,(k=e.mintA.extensions)==null?void 0:k.feeConfig,a,u),ye(p.amountB,(h=e.mintB.extensions)==null?void 0:h.feeConfig,a,u)],[y,w]=[ye(new Y(new N(p.amountA.toString()).mul(d).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,u),ye(new Y(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?vt.add(Qe):Ft.sub(Qe)),s){if(g.lt(vt))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(Ft))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+Z.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new Y(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 S=M.nextInitTick(k,y.tick,l,s,P),K=S||null,B=null;if(!(K!=null&&K.liquidityGross.gtn(0))){let F=Ie.nextInitializedTickArrayStartIndex({tickCurrent:y.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},w,s);if(!F.isExist)throw Error("swapCompute LiquidityInsufficient");w=F.nextStartIndex;let{publicKey:U}=se(e,t,w);B=U,k=n[w],K=M.firstInitializedTick(k,s)}A.tickNext=K.tick,A.initialized=K.liquidityGross.gtn(0),p!==w&&B&&(y.accounts.push(B),p=w),A.tickNext<Be?A.tickNext=Be:A.tickNext>Ke&&(A.tickNext=Ke),A.sqrtPriceNextX64=H.getSqrtPriceX64FromTick(A.tickNext);let O;if(s&&A.sqrtPriceNextX64.lt(g)||!s&&A.sqrtPriceNextX64.gt(g)?O=g:O=A.sqrtPriceNextX64,[y.sqrtPriceX64,A.amountIn,A.amountOut,A.feeAmount]=Tt.swapStepCompute(y.sqrtPriceX64,O,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 F=K.liquidityNet;s&&(F=F.mul(Je)),y.liquidity=$.addDelta(y.liquidity,F)}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 F=H.getTickFromSqrtPriceX64(y.sqrtPriceX64);P=F!=y.tick&&!s&&k.startTickIndex===F,y.tick=F}++h}try{let{nextStartIndex:A,isExist:S}=Z.nextInitializedTickArray(y.tick,l,s,i,o);S&&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 Y(0),amountIn:new Y(0),amountOut:new Y(0),feeAmount:new Y(0)},a=e.gte(t),u=i.gte(pe);if(u){let l=z.mulDivFloor(i,Fn.sub(new Y(o.toString())),Fn);s.amountIn=a?$.getTokenAmountAFromLiquidity(t,e,n,!0):$.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=H.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?$.getTokenAmountBFromLiquidity(t,e,n,!1):$.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(Je).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=H.getNextSqrtPriceX64FromOutput(e,n,i.mul(Je),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=$.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=$.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:$.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:$.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=z.mulDivCeil(s.amountIn,new Y(o),Fn.sub(new Y(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var ge=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>=ge)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=Z.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)*Z.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*ge,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*ge,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*ge:e+t*ge}static mergeTickArrayBitmap(e){let t=new ja(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*ge));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=Z.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=Z.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<Be||e>Ke}static nextInitTick(e,t,n,i,o){if(Z.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<ge;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=ge-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<ge;){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=H.getSqrtPriceX64FromTick(t),o=H.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=H.getSqrtPriceX64FromTick(o),a=H.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=H.getSqrtPriceX64FromTick(t),o=H.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=H.getSqrtPriceX64FromTick(o),a=H.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new N(1).div(a)}}};var ib=R([xe(8),v("bump"),Ct("index"),I(""),Me("protocolFeeRate"),Me("tradeFeeRate"),Ct("tickSpacing"),W(b(),8,"")]),Qa=R([Me("blockTimestamp"),V("sqrtPriceX64"),V("cumulativeTimePriceX64"),W(V(),1,"")]),Lr=R([xe(8),Re("initialized"),I("poolId"),W(Qa,1e3,"observations"),W(V(),5,"")]),Za=R([v("rewardState"),b("openTime"),b("endTime"),b("lastUpdateTime"),V("emissionsPerSecondX64"),b("rewardTotalEmissioned"),b("rewardClaimed"),I("tokenMint"),I("tokenVault"),I("creator"),V("rewardGrowthGlobalX64")]),io=R([xe(8),v("bump"),I("ammConfig"),I("creator"),I("mintA"),I("mintB"),I("vaultA"),I("vaultB"),I("observationId"),v("mintDecimalsA"),v("mintDecimalsB"),Ct("tickSpacing"),V("liquidity"),V("sqrtPriceX64"),ke("tickCurrent"),Ct("observationIndex"),Ct("observationUpdateDuration"),V("feeGrowthGlobalX64A"),V("feeGrowthGlobalX64B"),b("protocolFeesTokenA"),b("protocolFeesTokenB"),V("swapInAmountTokenA"),V("swapOutAmountTokenB"),V("swapInAmountTokenB"),V("swapOutAmountTokenA"),v("status"),W(v(),7,""),W(Za,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")]),$a=R([V("growthInsideLastX64"),b("rewardAmountOwed")]),oo=R([xe(8),v("bump"),I("nftMint"),I("poolId"),ke("tickLower"),ke("tickUpper"),V("liquidity"),V("feeGrowthInsideLastX64A"),V("feeGrowthInsideLastX64B"),b("tokenFeesOwedA"),b("tokenFeesOwedB"),W($a,3,"rewardInfos"),W(b(),8,"")]),ob=R([xe(8),v("bump"),I("poolId"),ke("tickLowerIndex"),ke("tickUpperIndex"),V("liquidity"),V("feeGrowthInsideLastX64A"),V("feeGrowthInsideLastX64B"),b("tokenFeesOwedA"),b("tokenFeesOwedB"),W(V(),3,"rewardGrowthInside"),W(b(),8,"")]),Ja=R([ke("tick"),Pi("liquidityNet"),V("liquidityGross"),V("feeGrowthOutsideX64A"),V("feeGrowthOutsideX64B"),W(V(),3,"rewardGrowthsOutsideX64"),W(Me(),13,"")]),an=R([xe(8),I("poolId"),ke("startTickIndex"),W(Ja,ge,"ticks"),v("initializedTickCount"),W(v(),115,"")]),sb=R([xe(329),W(I(),100,"whitelistMints")]),so=R([xe(8),I("poolId"),W(W(b(),8),Sr,"positiveTickArrayBitmap"),W(W(b(),8),Sr,"negativeTickArrayBitmap")]);import{PublicKey as iu,Keypair as ou}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as su}from"@solana/spl-token";import Sb from"bn.js";var ao=R([I("mint"),I("owner"),b("amount"),Me("delegateOption"),I("delegate"),v("state"),Me("isNativeOption"),b("isNative"),b("delegatedAmount"),Me("closeAuthorityOption"),I("closeAuthority")]);function eu(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function Nr(r,...e){if(!eu(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 Rr(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 uo(r,e){Nr(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var On=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),We=(r,e)=>r<<32-e|r>>>e;var db=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function tu(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Cr(r){return typeof r=="string"&&(r=tu(r)),Nr(r),r}var Vn=class{clone(){return this._cloneInto()}},pb={}.toString;function co(r){let e=n=>r().update(Cr(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function nu(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 lo=(r,e,t)=>r&e^~r&t,mo=(r,e,t)=>r&e^r&t^e&t,Dn=class extends Vn{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=On(this.buffer)}update(e){Rr(this);let{view:t,buffer:n,blockLen:i}=this;e=Cr(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=On(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){Rr(this),uo(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;nu(n,i-8,BigInt(this.length*8),o),this.process(n,0);let a=On(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 ru=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]),lt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),mt=new Uint32Array(64),Er=class extends Dn{constructor(){super(64,32,8,!1),this.A=lt[0]|0,this.B=lt[1]|0,this.C=lt[2]|0,this.D=lt[3]|0,this.E=lt[4]|0,this.F=lt[5]|0,this.G=lt[6]|0,this.H=lt[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)mt[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=mt[m-15],p=mt[m-2],g=We(d,7)^We(d,18)^d>>>3,f=We(p,17)^We(p,19)^p>>>10;mt[m]=f+mt[m-7]+g+mt[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+lo(a,u,c)+ru[m]+mt[m]|0,f=(We(n,2)^We(n,13)^We(n,22))+mo(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(){mt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var po=co(()=>new Er);var Rb=re("Raydium_Util");function fo({fromPublicKey:r,programId:e=su}){let t=ou.generate().publicKey.toBase58().slice(0,32);return{publicKey:au(r,t,e),seed:t}}function au(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=po(n);return new iu(i)}var go=re("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]},Wn=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:at,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=fo({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(Lr.span),space:Lr.span,programId:n})],{publicKey:f}=Qi(n,a,d,p),{publicKey:y}=xr(n,f,d),{publicKey:w}=xr(n,f,p);return g.push(this.createPoolInstruction(n,f,i,a,m.publicKey,d,y,new L(o.programId||Ae),p,w,new L(s.programId||Ae),Ye(n,f).publicKey,u,c)),{signers:[],instructions:g,instructionTypes:[Q.CreateAccount,Q.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,S,K,B,O,F){let U=R([ke("tickLowerIndex"),ke("tickUpperIndex"),ke("tickArrayLowerStartIndex"),ke("tickArrayUpperStartIndex"),V("liquidity"),b("amountMaxA"),b("amountMaxB"),Re("withMetadata"),v("optionBaseFlag"),Re("baseFlag")]),ue=[...F?[{pubkey:F,isSigner:!1,isWritable:!0}]:[]],ie=[{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:at,isSigner:!1,isWritable:!1},{pubkey:Vt.programId,isSigner:!1,isWritable:!1},{pubkey:Ae,isSigner:!1,isWritable:!1},{pubkey:bo,isSigner:!1,isWritable:!1},{pubkey:Rt,isSigner:!1,isWritable:!1},{pubkey:dt,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:S,amountMaxA:K,amountMaxB:B,withMetadata:O==="create",baseFlag:!1,optionBaseFlag:0},oe);let ne=Buffer.from([...Ge.openPosition,...oe]);return new qe({keys:ie,programId:e,data:ne})}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=Mr.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,Ae),{publicKey:P}=_n(g),{publicKey:A}=He(d,g),{publicKey:S}=kt(d,p,i,o),K=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,g,h,P,S,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:[K],instructionTypes:[Q.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:g,tickArrayLower:w,tickArrayUpper:k,positionNftAccount:h,metadataAccount:P,personalPosition:A,protocolPosition:S}}}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=Mr.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,Ae),{publicKey:P}=_n(g),{publicKey:A}=He(d,g),{publicKey:S}=kt(d,p,i,o),K=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,g,h,P,S,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,Ie.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:S},instructions:[K],signers:m,instructionTypes:[Q.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,S,K,B,O,F){let U=R([ke("tickLowerIndex"),ke("tickUpperIndex"),ke("tickArrayLowerStartIndex"),ke("tickArrayUpperStartIndex"),V("liquidity"),b("amountMaxA"),b("amountMaxB"),Re("withMetadata"),v("optionBaseFlag"),Re("baseFlag")]),ue=[...F?[{pubkey:F,isSigner:!1,isWritable:!0}]:[]],ie=[{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:at,isSigner:!1,isWritable:!1},{pubkey:Vt.programId,isSigner:!1,isWritable:!1},{pubkey:Ae,isSigner:!1,isWritable:!1},{pubkey:bo,isSigner:!1,isWritable:!1},{pubkey:Rt,isSigner:!1,isWritable:!1},{pubkey:dt,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 yo(0),amountMaxA:K==="MintA"?B:O,amountMaxB:K==="MintA"?O:B,withMetadata:S==="create",baseFlag:K==="MintA",optionBaseFlag:1},oe);let ne=Buffer.from([...Ge.openPosition,...oe]);return new qe({keys:ie,programId:e,data:ne})}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=Mr.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,Ae),{publicKey:P}=_n(m),{publicKey:A}=He(p,m),{publicKey:S}=kt(p,g,i,o),K=this.openPositionFromLiquidityInstruction(p,n.wallet,g,n.wallet,m,h,P,S,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,Ie.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:S},instructions:[K],signers:d,instructionTypes:[Q.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:Ae,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,Ae),{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:[Q.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"),v("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:Ae,isSigner:!1,isWritable:!1},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...P],S=Buffer.alloc(h.span);h.encode({liquidity:f,amountMaxA:y,amountMaxB:w,optionBaseFlag:0,baseFlag:!1},S);let K=Buffer.from([...Ge.increaseLiquidity,...S]);return new qe({keys:A,programId:e,data:K})}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,Ae),{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,Ie.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:[Q.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,Ae),{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,Ie.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Ye(u,c).publicKey:void 0)],signers:[],instructionTypes:[Q.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"),v("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:Ae,isSigner:!1,isWritable:!1},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...P],S=Buffer.alloc(h.span);h.encode({liquidity:new yo(0),amountMaxA:f==="MintA"?y:w,amountMaxB:f==="MintA"?w:y,baseFlag:f==="MintA",optionBaseFlag:1},S);let K=Buffer.from([...Ge.increaseLiquidity,...S]);return new qe({keys:A,programId:e,data:K})}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(O=>[{pubkey:O.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:O.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:O.rewardMint,isSigner:!1,isWritable:!1}]).flat()],S=[{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:Ae,isSigner:!1,isWritable:!1},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:An,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...A],K=Buffer.alloc(P.span);P.encode({liquidity:y,amountMinA:w,amountMinB:k},K);let B=Buffer.from([...Ge.decreaseLiquidity,...K]);return new qe({keys:S,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,Ie.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:[Q.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(K=>({pubkey:K,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:Ae,isSigner:!1,isWritable:!1},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:An,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 S=Buffer.from([...Ge.swap,...A]);return new qe({keys:P,programId:e,data:S})}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:[Q.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:at,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:te(l),endTime:te(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=Br(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:[Q.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,d){let p=R([v("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:Ae,isSigner:!1,isWritable:!1},{pubkey:dt,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:te(l),endTime:te(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)&&go.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Br(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:[Q.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,o,s,a){let u=R([v("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:Ae,isSigner:!1,isWritable:!1},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:An,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)&&go.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:[Q.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:[Q.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as lu}from"@solana/web3.js";import{PublicKey as uu}from"@solana/web3.js";import wo from"bn.js";var ho=new wo(25),ko=new wo(1e4);var cu=re("Raydium_liquidity_serum");function Ao({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=uu.createProgramAddressSync(o,r)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:i,nonce:n}}throw cu.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 my from"bn.js";function _r({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 mu({programId:r,marketId:e}){let{publicKey:t}=de([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function du({programId:r}){return de([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function To({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}=du({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=mu({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}=Ao({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:lu.default,configId:_r({programId:a})}}import{PublicKey as Po}from"@solana/web3.js";var hy=re("Raydium_farm_config"),ky=new Po("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Ay=new Po("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var xo={3:Fr,5:Bo,6:Io};var qn={"Standard SPL":0,"Option tokens":1},vr={[Bi.toString()]:3,[Ii.toString()]:5,[Si.toString()]:6};var Vr=R([v("instruction")]),yu=R([v("instruction")]),gu=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")]),wu=R([b("state"),b("nonce"),I("lpVault"),I("rewardVault"),I(),I(),b(),b(),b("totalReward"),V("perShareReward"),b("lastSlot"),b("perSlotReward")]),hu=R([b("state"),b("nonce"),I("lpVault"),I("rewardVaultA"),b("totalRewardA"),V("perShareRewardA"),b("perSlotRewardA"),v("option"),I("rewardVaultB"),xe(7),b("totalRewardB"),V("perShareRewardB"),b("perSlotRewardB"),b("lastSlot"),I()]),ku=R([b(),b("state"),b("nonce"),b("validRewardTokenNum"),V("rewardMultiplier"),b("rewardPeriodMax"),b("rewardPeriodMin"),b("rewardPeriodExtend"),I("lpMint"),I("lpVault"),W(gu,5,"rewardInfos"),I("creator"),I(),W(b(),32,"padding")]),pu=new Proxy(wu,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return j(q({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(r,e,t)}}),fu=new Proxy(hu,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return j(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)}}),bu=new Proxy(ku,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return j(q({},i),{version:6,rewardInfos:i.rewardInfos.map(o=>{var s;return j(q({},o),{rewardType:((s=Object.entries(qn).find(a=>String(a[1])===o.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),Au=R([b("isSet"),b("rewardPerSecond"),b("rewardOpenTime"),b("rewardEndTime"),b("rewardType")]),Tu=R([v("instruction"),b("nonce"),W(Au,5,"rewardTimeInfo")]),Pu=R([v("instruction"),b("rewardReopenTime"),b("rewardEndTime"),b("rewardPerSecond")]),xu=R([v("instruction"),b("isSet"),b("rewardPerSecond"),b("rewardOpenTime"),b("rewardEndTime"),b("rewardType")]),Ky=R([b("state"),I("id"),I("owner"),b("deposited"),W(b(),1,"rewardDebts")]),Fr=R([b("state"),I("id"),I("owner"),b("deposited"),W(V(),1,"rewardDebts"),b(""),b("voteLockedBalance"),W(b(),15)]),Ly=R([b("state"),I("id"),I("owner"),b("deposited"),W(b(),2,"rewardDebts")]),Bo=R([b("state"),I("id"),I("owner"),b("deposited"),W(V(),2,"rewardDebts"),W(b(),17)]),Io=R([b(),b("state"),I("id"),I("owner"),b("deposited"),W(V(),5,"rewardDebts"),W(b(),16)]),Bt=R([v("instruction"),b("amount")]),Bu=R([I("mint"),I("grantAuthority"),b("baselineVoteWeightScaledFactor"),b("maxExtraLockupVoteWeightScaledFactor"),b("lockupSaturationSecs"),Ti("digitShift"),W(v(),7,"reserved1"),W(b(),7,"reserved2")]),Iu=R([xe(8),I("governanceProgramId"),I("realm"),I("realmGoverningTokenMint"),I("realmAuthority"),W(v(),32,"reserved1"),W(Bu,4,"votingMints"),Kn("timeOffset"),v("bump"),W(v(),7,"reserved2"),W(b(),11,"reserved3")]),Su=R([Kn("startTime"),Kn("endTime"),v("kind"),W(v(),15,"reserved")]),Ku=R([W(Su,1,"lockup"),b("amountDeposited_native"),b("amountInitiallyLockedNative"),Re("isUsed"),Re("allowClawback"),v("votingMintConfigIdx"),W(v(),29,"reserved")]),Lu=R([xe(8),I("voterAuthority"),I("registrar"),W(Ku,32,"deposits"),v("voterBump"),v("voterWweightRecordBump"),W(v(),94,"reserved")]);import _y from"bn.js";var Nu=re("Raydium.farm.util");function Ot({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}function So(r){let e=xo[r];return e||Nu.logWithError("invalid version",r),e}import{PublicKey as Se,SystemProgram as Ru,SYSVAR_RENT_PUBKEY as Cu,SYSVAR_CLOCK_PUBKEY as Ko,TransactionInstruction as Gn}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as ag,TOKEN_PROGRAM_ID as Or,ASSOCIATED_TOKEN_PROGRAM_ID as ug}from"@solana/spl-token";import lg from"bn.js";var Eu=re("Raydium_farm_instruction"),Tg={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 Lo(r){let{version:e,id:t,ledger:n,programId:i,owner:o}=r,s={3:9,5:10}[e];s||Eu.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(Vr.span);Vr.encode({instruction:s},a);let u=[T({pubkey:t}),T({pubkey:n}),T({pubkey:o,isWritable:!1}),T({pubkey:Ru.programId,isWritable:!1}),T({pubkey:Cu,isWritable:!1})];return{instruction:new Gn({programId:i,keys:u,data:a}),instructionType:Q.FarmV3CreateLedger}}function No(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new Se(e.programId),new Se(e.id)],c=Ot({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Bt.span);Bt.encode({instruction:2,amount:te(s)},l);let m=[T({pubkey:Or,isWritable:!1}),T({pubkey:u}),T({pubkey:new Se(t.authority),isWritable:!1}),T({pubkey:new Se(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 Se(t.rewardInfos[d].vault)})),m.push(T({pubkey:i[d]}));return new Gn({programId:a,keys:m,data:l})}function Ro(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new Se(e.programId),new Se(e.id)],l=Ot({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Bt.span);Bt.encode({instruction:12,amount:te(s)},m);let d=[T({pubkey:c}),T({pubkey:new Se(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new Se(t.lpVault)}),T({pubkey:i[0]}),T({pubkey:new Se(t.rewardInfos[0].vault)}),T({pubkey:Ko,isWritable:!1}),T({pubkey:Or,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(T({pubkey:i[p]})),d.push(T({pubkey:new Se(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(T({pubkey:p}));return new Gn({programId:u,keys:d,data:m})}function Co(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new Se(e.programId),new Se(e.id)],l=Ot({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Bt.span);Bt.encode({instruction:11,amount:te(s)},m);let d=[T({pubkey:c}),T({pubkey:new Se(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new Se(t.lpVault)}),T({pubkey:i[0]}),T({pubkey:new Se(t.rewardInfos[0].vault)}),T({pubkey:Ko,isWritable:!1}),T({pubkey:Or,isWritable:!1})];if(a)for(let p of a)d.push(T({pubkey:p}));return new Gn({programId:u,keys:d,data:m})}import Ce from"bn.js";var Dr=class extends tn{constructor(t){super(t);this.stableLayout=new nn({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=xi(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=Xt;s.isZero()||(d=m==="base"?Bn(s.mul(c),u):Bn(s.mul(u),c)),this.logDebug("amountRaw:",d.toString(),"lpAmount:",l.toString());let p=Bn(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 fe(n.lpMint.address)}),k=[p,g],h=[f,y],P=[i.raw,o.raw],A=i.token.mint.toBase58()===n.mintA.address?"base":"quote",S="base";["quote","base"].includes(A)||this.logAndCreateError("invalid fixedSide","fixedSide",s),A==="quote"?(k.reverse(),h.reverse(),P.reverse(),S=s==="a"?"quote":"base"):A==="base"&&(S=s==="a"?"base":"quote");let[K,B]=k,[O,F]=h,[U,ue]=P,ie=await this.getAmmPoolKeys(n.id),oe=this.createTxBuilder(),dn=await l.handleTokenAccount({side:"in",amount:U,mint:K.mint,tokenAccount:O,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:ne}=dn,X=Ee(dn,["tokenAccount"]);oe.addInstruction(X);let It=await l.handleTokenAccount({side:"in",amount:ue,mint:B.mint,tokenAccount:F,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:pt}=It,ln=Ee(It,["tokenAccount"]);oe.addInstruction(ln);let St=await l.handleTokenAccount({side:"out",amount:0,mint:new fe(n.lpMint.address),tokenAccount:w,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:mn}=St,Dt=Ee(St,["tokenAccount"]);return oe.addInstruction(Dt),oe.addInstruction({instructions:[Ui({poolInfo:n,poolKeys:ie,userKeys:{baseTokenAccount:ne,quoteTokenAccount:pt,lpTokenAccount:mn,owner:this.scope.ownerPubKey},baseAmountIn:U,quoteAmountIn:ue,fixedSide:S})],instructionTypes:[n.pooltype.includes("StablePool")?Q.AmmV5AddLiquidity:Q.AmmV4AddLiquidity],lookupTableAddress:ie.lookupTableAccount?[ie.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 fe(n.mintA.address),new fe(n.mintB.address),new fe(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),K=await d.handleTokenAccount({side:"out",amount:0,mint:c,tokenAccount:g,bypassAssociatedCheck:w,checkCreateATAOwner:k}),{tokenAccount:h}=K,P=Ee(K,["tokenAccount"]);y.addInstruction(P);let B=await d.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:w,checkCreateATAOwner:k}),{tokenAccount:A}=B,S=Ee(B,["tokenAccount"]);return y.addInstruction(S),y.addInstruction({instructions:[Ar({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")?Q.AmmV5RemoveLiquidity:Q.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,userAuxiliaryLedgers:m,tokenProgram:d=Un,checkCreateATAOwner:p=!0,getEphemeralSigners:g,txVersion:f}){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 y=this.createTxBuilder();y.addCustomComputeBudget(c);let w={};for(let X of this.scope.account.tokenAccountRawInfos)(w[X.accountInfo.mint.toString()]===void 0||_e(this.scope.ownerPubKey,X.accountInfo.mint,Un).publicKey.equals(X.pubkey))&&(w[X.accountInfo.mint.toString()]=X.pubkey);let k=w[t.lpMint.address];if(k===void 0)throw Error("find lp account error in trade accounts");let h=i.add(a!=null?a:new Ce(0)),P=t.mintA.address===Pe.WSOL.mint.toString(),A=t.mintB.address===Pe.WSOL.mint.toString(),{account:S,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Un,mint:new fe(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:P?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:!0,checkCreateATAOwner:p});if(y.addInstruction(K||{}),S===void 0)throw new Error("base token account not found");let{account:B,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Un,mint:new fe(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:A?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!0,checkCreateATAOwner:p});if(y.addInstruction(O||{}),B===void 0)throw new Error("quote token account not found");if(w[t.mintA.address]=S,w[t.mintB.address]=B,s!==void 0&&!(a!=null&&a.isZero())){let X=vr[s.programId],pt=Ot({programId:new fe(s.programId),poolId:new fe(s.id),owner:this.scope.ownerPubKey,version:X}),ln,mn=await this.scope.connection.getAccountInfo(pt);if(mn&&(ln=So(X).decode(mn.data)),X!==6&&!ln){let{instruction:nt,instructionType:Xn}=Lo({id:new fe(s.id),programId:new fe(s.programId),version:X,ledger:pt,owner:this.scope.ownerPubKey});y.addInstruction({instructions:[nt],instructionTypes:[Xn]})}let Dt=[];for(let nt of s.rewardInfos){let Xn=nt.mint.address===Pe.WSOL.mint.toString();if(w[nt.mint.address])Dt.push(w[nt.mint.address]);else{let{account:Wr,instructionParams:qr}=await this.scope.account.getOrCreateTokenAccount({mint:new fe(nt.mint.address),tokenProgram:d,owner:this.scope.ownerPubKey,skipCloseAccount:!Xn,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:p});Wr||this.logAndCreateError("farm reward account not found:",nt.mint.address),qr&&y.addInstruction(qr),Dt.push(Wr)}}let dn=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],It={userAuxiliaryLedgers:m,amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:dn,lpAccount:k,rewardAccounts:Dt},St=vr[s.programId],Mo=St===6?No(It):St===5?Ro(It):Co(It),_o={3:Q.FarmV3Withdraw,5:Q.FarmV5Withdraw,6:Q.FarmV6Withdraw};y.addInstruction({instructions:[Mo],instructionTypes:[_o[St]]})}let F=await this.getAmmPoolKeys(t.id),U=Ar({poolInfo:t,poolKeys:F,userKeys:{lpTokenAccount:k,baseTokenAccount:S,quoteTokenAccount:B,owner:this.scope.ownerPubKey},amountIn:h});y.addInstruction({instructions:[U],instructionTypes:[t.pooltype.includes("StablePool")?Q.AmmV5RemoveLiquidity:Q.AmmV4RemoveLiquidity],lookupTableAddress:F.lookupTableAccount?[F.lookupTableAccount]:[]});let[ue,ie]=t.mintA.address===n.mintA.address?[S,B]:[B,S],oe=await this.scope.clmm.getClmmPoolKeys(t.id),ne=await Wn.openPositionFromBaseInstructions(j(q({poolInfo:n,poolKeys:oe,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:ue,tokenAccountB:ie},withMetadata:"create"},o),{base:u,getEphemeralSigners:g}));return y.addInstruction({instructions:[...ne.instructions],signers:ne.signers,instructionTypes:[...ne.instructionTypes],lookupTableAddress:oe.lookupTableAccount?[oe.lookupTableAccount]:[]}),f===0?y.sizeCheckBuildV0():y.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(Eo),k=c.useSOLBalance&&o.mint.equals(Eo),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:S,instructionParams:K}=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(K||{}),P===void 0||S===void 0)throw Error("you don't has some token account");let B=To({version:4,marketVersion:3,marketId:n.marketId,baseMint:i.mint,quoteMint:o.mint,baseDecimals:i.decimals,quoteDecimals:o.decimals,programId:t,marketProgramId:n.programId}),O={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:F,instructionType:U}=Xi(j(q({},O),{userWallet:this.scope.ownerPubKey,userCoinVault:P,userPcVault:S,userLpVault:_e(this.scope.ownerPubKey,B.lpMint,d).publicKey,nonce:B.nonce,openTime:u,coinAmount:s,pcAmount:a}));return h.addInstruction({instructions:[F],instructionTypes:[U]}),h.addCustomComputeBudget(f),h.versionBuild({txVersion:p,extInfo:{address:O}})}async getCreatePoolFee({programId:t}){let n=_r({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return Fi.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===Ki.toBase58(),g;if(p)g=new N(d.toString()).div(m.toString());else{let B=qi(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=jt(f.mul(ho),ko);let B=f.sub(w),O=m.add(B);y=d.mul(B).div(O)}else{w=f.mul(new Ce(2)).div(new Ce(1e4));let B=f.sub(w);l==="quote"?y=new Ce(Di(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),B.toNumber())):y=new Ce(Wi(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 S=g.sub(A).div(g).mul(100);return{amountOut:h,minAmountOut:P,currentPrice:g,executionPrice:A,priceImpact:S,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 fe(l.address),programId:new fe(l.programId),associatedOnly:!1}),p=await this.scope.account.getCreatedTokenAccount({mint:new fe(m.address),programId:new fe(m.programId),associatedOnly:!1}),P=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new fe(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 fe(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:[zi({version:h,poolKeys:k,userKeys:{tokenAccountIn:g,tokenAccountOut:y,owner:this.scope.ownerPubKey},amountIn:n,amountOut:i,fixedSide:s})],instructionTypes:[h===4?Q.AmmV4SwapBaseIn:Q.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 fe(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=vi.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 fe(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(Mu.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]=j(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{Dr as default};
2
2
  /*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
3
3
  //# sourceMappingURL=liquidity.mjs.map