@raydium-io/raydium-sdk-v2 0.0.36-alpha → 0.0.37-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 (49) hide show
  1. package/lib/index.d.ts +1 -1
  2. package/lib/index.js +1 -1
  3. package/lib/index.js.map +1 -1
  4. package/lib/index.mjs +1 -1
  5. package/lib/index.mjs.map +1 -1
  6. package/lib/raydium/account/account.d.ts +1 -1
  7. package/lib/raydium/clmm/clmm.d.ts +1 -1
  8. package/lib/raydium/clmm/clmm.js +1 -1
  9. package/lib/raydium/clmm/clmm.js.map +1 -1
  10. package/lib/raydium/clmm/clmm.mjs +1 -1
  11. package/lib/raydium/clmm/clmm.mjs.map +1 -1
  12. package/lib/raydium/clmm/index.d.ts +1 -1
  13. package/lib/raydium/clmm/index.js +1 -1
  14. package/lib/raydium/clmm/index.js.map +1 -1
  15. package/lib/raydium/clmm/index.mjs +1 -1
  16. package/lib/raydium/clmm/index.mjs.map +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/marketV2/createMarket.d.ts +1 -1
  28. package/lib/raydium/marketV2/index.d.ts +1 -1
  29. package/lib/raydium/moduleBase.d.ts +1 -1
  30. package/lib/raydium/raydium.d.ts +1 -1
  31. package/lib/raydium/raydium.js +1 -1
  32. package/lib/raydium/raydium.js.map +1 -1
  33. package/lib/raydium/raydium.mjs +1 -1
  34. package/lib/raydium/raydium.mjs.map +1 -1
  35. package/lib/raydium/token/token.d.ts +1 -1
  36. package/lib/raydium/tradeV2/index.js +1 -1
  37. package/lib/raydium/tradeV2/index.js.map +1 -1
  38. package/lib/raydium/tradeV2/index.mjs +1 -1
  39. package/lib/raydium/tradeV2/index.mjs.map +1 -1
  40. package/lib/raydium/tradeV2/instrument.js +1 -1
  41. package/lib/raydium/tradeV2/instrument.js.map +1 -1
  42. package/lib/raydium/tradeV2/instrument.mjs +1 -1
  43. package/lib/raydium/tradeV2/instrument.mjs.map +1 -1
  44. package/lib/raydium/tradeV2/trade.d.ts +1 -1
  45. package/lib/raydium/utils1216/index.d.ts +1 -1
  46. package/lib/raydium/utils1216/utils1216.d.ts +1 -1
  47. package/lib/{raydium-5d4faf36.d.ts → raydium-3aa078dd.d.ts} +6 -1
  48. package/package.json +1 -1
  49. package/src/raydium/clmm/clmm.ts +19 -1
@@ -1,3 +1,3 @@
1
- var er=Object.defineProperty,tr=Object.defineProperties;var nr=Object.getOwnPropertyDescriptors;var zn=Object.getOwnPropertySymbols;var ir=Object.prototype.hasOwnProperty,rr=Object.prototype.propertyIsEnumerable;var Qn=(i,e,t)=>e in i?er(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,Q=(i,e)=>{for(var t in e||(e={}))ir.call(e,t)&&Qn(i,t,e[t]);if(zn)for(var t of zn(e))rr.call(e,t)&&Qn(i,t,e[t]);return i},ee=(i,e)=>tr(i,nr(e));import{TOKEN_PROGRAM_ID as Un,TOKEN_2022_PROGRAM_ID as qn}from"@solana/spl-token";import{PublicKey as Re,TransactionInstruction as Xn,SystemProgram as $i}from"@solana/web3.js";import Gn from"bn.js";import{PublicKey as wp}from"@solana/web3.js";var bt=9e15,nt=1e9,tn="0123456789abcdef",Ft="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Wt="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",nn={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-bt,maxE:bt,crypto:!1},Jn,ze,O=!0,Vt="[DecimalError] ",tt=Vt+"Invalid argument: ",$n=Vt+"Precision limit exceeded",ei=Vt+"crypto unavailable",ti="[object Decimal]",we=Math.floor,ce=Math.pow,or=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,sr=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,ar=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,ni=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Ee=1e7,K=7,ur=9007199254740991,cr=Ft.length-1,rn=Wt.length-1,w={toStringTag:ti};w.absoluteValue=w.abs=function(){var i=new this.constructor(this);return i.s<0&&(i.s=1),I(i)};w.ceil=function(){return I(new this.constructor(this),this.e+1,2)};w.clampedTo=w.clamp=function(i,e){var t,n=this,r=n.constructor;if(i=new r(i),e=new r(e),!i.s||!e.s)return new r(NaN);if(i.gt(e))throw Error(tt+e);return t=n.cmp(i),t<0?i:n.cmp(e)>0?e:new r(n)};w.comparedTo=w.cmp=function(i){var e,t,n,r,o=this,s=o.d,a=(i=new o.constructor(i)).d,u=o.s,c=i.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!==i.e)return o.e>i.e^u<0?1:-1;for(n=s.length,r=a.length,e=0,t=n<r?n:r;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===r?0:n>r^u<0?1:-1};w.cosine=w.cos=function(){var i,e,t=this,n=t.constructor;return t.d?t.d[0]?(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+K,n.rounding=1,t=lr(n,ai(n,t)),n.precision=i,n.rounding=e,I(ze==2||ze==3?t.neg():t,i,e,!0)):new n(1):new n(NaN)};w.cubeRoot=w.cbrt=function(){var i,e,t,n,r,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(O=!1,o=l.s*ce(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=fe(l.d),i=l.e,(o=(i-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=ce(t,1/3),i=we((i+1)/3)-(i%3==(i<0?-1:2)),o==1/0?t="5e"+i:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+i),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(i=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=j(c.plus(l).times(a),c.plus(u),s+2,1),fe(a.d).slice(0,s)===(t=fe(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!r&&t=="4999"){if(!r&&(I(a,i+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,r=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(I(n,i+1,1),e=!n.times(n).times(n).eq(l));break}return O=!0,I(n,i,m.rounding,e)};w.decimalPlaces=w.dp=function(){var i,e=this.d,t=NaN;if(e){if(i=e.length-1,t=(i-we(this.e/K))*K,i=e[i],i)for(;i%10==0;i/=10)t--;t<0&&(t=0)}return t};w.dividedBy=w.div=function(i){return j(this,new this.constructor(i))};w.dividedToIntegerBy=w.divToInt=function(i){var e=this,t=e.constructor;return I(j(e,new t(i),0,1,1),t.precision,t.rounding)};w.equals=w.eq=function(i){return this.cmp(i)===0};w.floor=function(){return I(new this.constructor(this),this.e+1,3)};w.greaterThan=w.gt=function(i){return this.cmp(i)>0};w.greaterThanOrEqualTo=w.gte=function(i){var e=this.cmp(i);return e==1||e===0};w.hyperbolicCosine=w.cosh=function(){var i,e,t,n,r,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,r=o.d.length,r<32?(i=Math.ceil(r/3),e=(1/_t(4,i)).toString()):(i=16,e="2.3283064365386962890625e-10"),o=yt(s,1,o.times(e),new s(1),!0);for(var u,c=i,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return I(o,s.precision=t,s.rounding=n,!0)};w.hyperbolicSine=w.sinh=function(){var i,e,t,n,r=this,o=r.constructor;if(!r.isFinite()||r.isZero())return new o(r);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(r.e,r.sd())+4,o.rounding=1,n=r.d.length,n<3)r=yt(o,2,r,r,!0);else{i=1.4*Math.sqrt(n),i=i>16?16:i|0,r=r.times(1/_t(5,i)),r=yt(o,2,r,r,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);i--;)s=r.times(r),r=r.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,I(r,e,t,!0)};w.hyperbolicTangent=w.tanh=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+7,n.rounding=1,j(t.sinh(),t.cosh(),n.precision=i,n.rounding=e)):new n(t.s)};w.inverseCosine=w.acos=function(){var i,e=this,t=e.constructor,n=e.abs().cmp(1),r=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?Me(t,r,o):new t(0):new t(NaN):e.isZero()?Me(t,r+4,o).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),i=Me(t,r+4,o).times(.5),t.precision=r,t.rounding=o,i.minus(e))};w.inverseHyperbolicCosine=w.acosh=function(){var i,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(i=n.precision,e=n.rounding,n.precision=i+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,O=!1,t=t.times(t).minus(1).sqrt().plus(t),O=!0,n.precision=i,n.rounding=e,t.ln()):new n(t)};w.inverseHyperbolicSine=w.asinh=function(){var i,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,O=!1,t=t.times(t).plus(1).sqrt().plus(t),O=!0,n.precision=i,n.rounding=e,t.ln())};w.inverseHyperbolicTangent=w.atanh=function(){var i,e,t,n,r=this,o=r.constructor;return r.isFinite()?r.e>=0?new o(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(i=o.precision,e=o.rounding,n=r.sd(),Math.max(n,i)<2*-r.e-1?I(new o(r),i,e,!0):(o.precision=t=n-r.e,r=j(r.plus(1),new o(1).minus(r),t+i,1),o.precision=i+4,o.rounding=1,r=r.ln(),o.precision=i,o.rounding=e,r.times(.5))):new o(NaN)};w.inverseSine=w.asin=function(){var i,e,t,n,r=this,o=r.constructor;return r.isZero()?new o(r):(e=r.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(i=Me(o,t+4,n).times(.5),i.s=r.s,i):new o(NaN):(o.precision=t+6,o.rounding=1,r=r.div(new o(1).minus(r.times(r)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,r.times(2)))};w.inverseTangent=w.atan=function(){var i,e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=rn)return s=Me(l,m+4,p).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=rn)return s=Me(l,m+4,p).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/K+2|0),i=t;i;--i)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(O=!1,e=Math.ceil(a/K),n=1,u=c.times(c),s=new l(c),r=c;i!==-1;)if(r=r.times(u),o=s.minus(r.div(n+=2)),r=r.times(u),s=o.plus(r.div(n+=2)),s.d[e]!==void 0)for(i=e;s.d[i]===o.d[i]&&i--;);return t&&(s=s.times(2<<t-1)),O=!0,I(s,l.precision=m,l.rounding=p,!0)};w.isFinite=function(){return!!this.d};w.isInteger=w.isInt=function(){return!!this.d&&we(this.e/K)>this.d.length-2};w.isNaN=function(){return!this.s};w.isNegative=w.isNeg=function(){return this.s<0};w.isPositive=w.isPos=function(){return this.s>0};w.isZero=function(){return!!this.d&&this.d[0]===0};w.lessThan=w.lt=function(i){return this.cmp(i)<0};w.lessThanOrEqualTo=w.lte=function(i){return this.cmp(i)<1};w.logarithm=w.log=function(i){var e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding,d=5;if(i==null)i=new l(10),e=!0;else{if(i=new l(i),t=i.d,i.s<0||!t||!t[0]||i.eq(1))return new l(NaN);e=i.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(r=t[0];r%10===0;)r/=10;o=r!==1}if(O=!1,a=m+d,s=et(c,a),n=e?vt(l,a+10):et(i,a),u=j(s,n,a,1),Pt(u.d,r=m,p))do if(a+=10,s=et(c,a),n=e?vt(l,a+10):et(i,a),u=j(s,n,a,1),!o){+fe(u.d).slice(r+1,r+15)+1==1e14&&(u=I(u,m+1,0));break}while(Pt(u.d,r+=10,p));return O=!0,I(u,m,p)};w.minus=w.sub=function(i){var e,t,n,r,o,s,a,u,c,l,m,p,d=this,b=d.constructor;if(i=new b(i),!d.d||!i.d)return!d.s||!i.s?i=new b(NaN):d.d?i.s=-i.s:i=new b(i.d||d.s!==i.s?d:NaN),i;if(d.s!=i.s)return i.s=-i.s,d.plus(i);if(c=d.d,p=i.d,a=b.precision,u=b.rounding,!c[0]||!p[0]){if(p[0])i.s=-i.s;else if(c[0])i=new b(d);else return new b(u===3?-0:0);return O?I(i,a,u):i}if(t=we(i.e/K),l=we(d.e/K),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=p.length):(e=p,t=l,s=c.length),n=Math.max(Math.ceil(a/K),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=p.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=p[n]){m=c[n]<p[n];break}o=0}for(m&&(e=c,c=p,p=e,i.s=-i.s),s=c.length,n=p.length-s;n>0;--n)c[s++]=0;for(n=p.length;n>o;){if(c[--n]<p[n]){for(r=n;r&&c[--r]===0;)c[r]=Ee-1;--c[r],c[n]+=Ee}c[n]-=p[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(i.d=c,i.e=Dt(c,t),O?I(i,a,u):i):new b(u===3?-0:0)};w.modulo=w.mod=function(i){var e,t=this,n=t.constructor;return i=new n(i),!t.d||!i.s||i.d&&!i.d[0]?new n(NaN):!i.d||t.d&&!t.d[0]?I(new n(t),n.precision,n.rounding):(O=!1,n.modulo==9?(e=j(t,i.abs(),0,3,1),e.s*=i.s):e=j(t,i,0,n.modulo,1),e=e.times(i),O=!0,t.minus(e))};w.naturalExponential=w.exp=function(){return on(this)};w.naturalLogarithm=w.ln=function(){return et(this)};w.negated=w.neg=function(){var i=new this.constructor(this);return i.s=-i.s,I(i)};w.plus=w.add=function(i){var e,t,n,r,o,s,a,u,c,l,m=this,p=m.constructor;if(i=new p(i),!m.d||!i.d)return!m.s||!i.s?i=new p(NaN):m.d||(i=new p(i.d||m.s===i.s?m:NaN)),i;if(m.s!=i.s)return i.s=-i.s,m.minus(i);if(c=m.d,l=i.d,a=p.precision,u=p.rounding,!c[0]||!l[0])return l[0]||(i=new p(m)),O?I(i,a,u):i;if(o=we(m.e/K),n=we(i.e/K),c=c.slice(),r=o-n,r){for(r<0?(t=c,r=-r,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/K),s=o>s?o+1:s+1,r>s&&(r=s,t.length=1),t.reverse();r--;)t.push(0);t.reverse()}for(s=c.length,r=l.length,s-r<0&&(r=s,t=l,l=c,c=t),e=0;r;)e=(c[--r]=c[r]+l[r]+e)/Ee|0,c[r]%=Ee;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return i.d=c,i.e=Dt(c,n),O?I(i,a,u):i};w.precision=w.sd=function(i){var e,t=this;if(i!==void 0&&i!==!!i&&i!==1&&i!==0)throw Error(tt+i);return t.d?(e=ii(t.d),i&&t.e+1>e&&(e=t.e+1)):e=NaN,e};w.round=function(){var i=this,e=i.constructor;return I(new e(i),i.e+1,e.rounding)};w.sine=w.sin=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+K,n.rounding=1,t=dr(n,ai(n,t)),n.precision=i,n.rounding=e,I(ze>2?t.neg():t,i,e,!0)):new n(NaN)};w.squareRoot=w.sqrt=function(){var i,e,t,n,r,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(O=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=fe(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=we((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(j(s,o,t+2,1)).times(.5),fe(o.d).slice(0,t)===(e=fe(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(I(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(I(n,u+1,1),i=!n.times(n).eq(s));break}return O=!0,I(n,u,l.rounding,i)};w.tangent=w.tan=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+10,n.rounding=1,t=t.sin(),t.s=1,t=j(t,new n(1).minus(t.times(t)).sqrt(),i+10,0),n.precision=i,n.rounding=e,I(ze==2||ze==4?t.neg():t,i,e,!0)):new n(NaN)};w.times=w.mul=function(i){var e,t,n,r,o,s,a,u,c,l=this,m=l.constructor,p=l.d,d=(i=new m(i)).d;if(i.s*=l.s,!p||!p[0]||!d||!d[0])return new m(!i.s||p&&!p[0]&&!d||d&&!d[0]&&!p?NaN:!p||!d?i.s/0:i.s*0);for(t=we(l.e/K)+we(i.e/K),u=p.length,c=d.length,u<c&&(o=p,p=d,d=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,r=u+n;r>n;)a=o[r]+d[n]*p[r-n-1]+e,o[r--]=a%Ee|0,e=a/Ee|0;o[r]=(o[r]+e)%Ee|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),i.d=o,i.e=Dt(o,t),O?I(i,m.precision,m.rounding):i};w.toBinary=function(i,e){return an(this,2,i,e)};w.toDecimalPlaces=w.toDP=function(i,e){var t=this,n=t.constructor;return t=new n(t),i===void 0?t:(xe(i,0,nt),e===void 0?e=n.rounding:xe(e,0,8),I(t,i+t.e+1,e))};w.toExponential=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=_e(n,!0):(xe(i,0,nt),e===void 0?e=r.rounding:xe(e,0,8),n=I(new r(n),i+1,e),t=_e(n,!0,i+1)),n.isNeg()&&!n.isZero()?"-"+t:t};w.toFixed=function(i,e){var t,n,r=this,o=r.constructor;return i===void 0?t=_e(r):(xe(i,0,nt),e===void 0?e=o.rounding:xe(e,0,8),n=I(new o(r),i+r.e+1,e),t=_e(n,!1,i+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};w.toFraction=function(i){var e,t,n,r,o,s,a,u,c,l,m,p,d=this,b=d.d,f=d.constructor;if(!b)return new f(d);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=ii(b)-d.e-1,s=o%K,e.d[0]=ce(10,s<0?K+s:s),i==null)i=o>0?e:c;else{if(a=new f(i),!a.isInt()||a.lt(c))throw Error(tt+a);i=a.gt(e)?o>0?e:c:a}for(O=!1,a=new f(fe(b)),l=f.precision,f.precision=o=b.length*K*2;m=j(a,e,0,1,1),r=t.plus(m.times(n)),r.cmp(i)!=1;)t=n,n=r,r=c,c=u.plus(m.times(r)),u=r,r=e,e=a.minus(m.times(r)),a=r;return r=j(i.minus(t),n,0,1,1),u=u.plus(r.times(c)),t=t.plus(r.times(n)),u.s=c.s=d.s,p=j(c,n,o,1).minus(d).abs().cmp(j(u,t,o,1).minus(d).abs())<1?[c,n]:[u,t],f.precision=l,O=!0,p};w.toHexadecimal=w.toHex=function(i,e){return an(this,16,i,e)};w.toNearest=function(i,e){var t=this,n=t.constructor;if(t=new n(t),i==null){if(!t.d)return t;i=new n(1),e=n.rounding}else{if(i=new n(i),e===void 0?e=n.rounding:xe(e,0,8),!t.d)return i.s?t:i;if(!i.d)return i.s&&(i.s=t.s),i}return i.d[0]?(O=!1,t=j(t,i,0,e,1).times(i),O=!0,I(t)):(i.s=t.s,t=i),t};w.toNumber=function(){return+this};w.toOctal=function(i,e){return an(this,8,i,e)};w.toPower=w.pow=function(i){var e,t,n,r,o,s,a=this,u=a.constructor,c=+(i=new u(i));if(!a.d||!i.d||!a.d[0]||!i.d[0])return new u(ce(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,i.eq(1))return I(a,n,o);if(e=we(i.e/K),e>=i.d.length-1&&(t=c<0?-c:c)<=ur)return r=ri(u,a,t,n),i.s<0?new u(1).div(r):I(r,n,o);if(s=a.s,s<0){if(e<i.d.length-1)return new u(NaN);if((i.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=ce(+a,c),e=t==0||!isFinite(t)?we(c*(Math.log("0."+fe(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):(O=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),r=on(i.times(et(a,n+t)),n),r.d&&(r=I(r,n+5,1),Pt(r.d,n,o)&&(e=n+10,r=I(on(i.times(et(a,e+t)),e),e+5,1),+fe(r.d).slice(n+1,n+15)+1==1e14&&(r=I(r,n+1,0)))),r.s=s,O=!0,u.rounding=o,I(r,n,o))};w.toPrecision=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=_e(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(xe(i,1,nt),e===void 0?e=r.rounding:xe(e,0,8),n=I(new r(n),i,e),t=_e(n,i<=n.e||n.e<=r.toExpNeg,i)),n.isNeg()&&!n.isZero()?"-"+t:t};w.toSignificantDigits=w.toSD=function(i,e){var t=this,n=t.constructor;return i===void 0?(i=n.precision,e=n.rounding):(xe(i,1,nt),e===void 0?e=n.rounding:xe(e,0,8)),I(new n(t),i,e)};w.toString=function(){var i=this,e=i.constructor,t=_e(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()&&!i.isZero()?"-"+t:t};w.truncated=w.trunc=function(){return I(new this.constructor(this),this.e+1,1)};w.valueOf=w.toJSON=function(){var i=this,e=i.constructor,t=_e(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()?"-"+t:t};function fe(i){var e,t,n,r=i.length-1,o="",s=i[0];if(r>0){for(o+=s,e=1;e<r;e++)n=i[e]+"",t=K-n.length,t&&(o+=$e(t)),o+=n;s=i[e],n=s+"",t=K-n.length,t&&(o+=$e(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function xe(i,e,t){if(i!==~~i||i<e||i>t)throw Error(tt+i)}function Pt(i,e,t,n){var r,o,s,a;for(o=i[0];o>=10;o/=10)--e;return--e<0?(e+=K,r=0):(r=Math.ceil((e+1)/K),e%=K),o=ce(10,K-e),a=i[r]%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)&&(i[r+1]/o/100|0)==ce(10,e-2)-1||(a==o/2||a==0)&&(i[r+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)&&(i[r+1]/o/1e3|0)==ce(10,e-3)-1,s}function Et(i,e,t){for(var n,r=[0],o,s=0,a=i.length;s<a;){for(o=r.length;o--;)r[o]*=e;for(r[0]+=tn.indexOf(i.charAt(s++)),n=0;n<r.length;n++)r[n]>t-1&&(r[n+1]===void 0&&(r[n+1]=0),r[n+1]+=r[n]/t|0,r[n]%=t)}return r.reverse()}function lr(i,e){var t,n,r;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),r=(1/_t(4,t)).toString()):(t=16,r="2.3283064365386962890625e-10"),i.precision+=t,e=yt(i,1,e.times(r),new i(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return i.precision-=t,e}var j=function(){function i(n,r,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*r+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,r,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=r[a]){u=n[a]>r[a]?1:-1;break}return u}function t(n,r,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<r[o]?1:0,n[o]=a*s+n[o]-r[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,r,o,s,a,u){var c,l,m,p,d,b,f,g,k,h,A,x,P,L,E,_,$,X,Z,Oe,pe=n.constructor,Te=n.s==r.s?1:-1,ne=n.d,z=r.d;if(!ne||!ne[0]||!z||!z[0])return new pe(!n.s||!r.s||(ne?z&&ne[0]==z[0]:!z)?NaN:ne&&ne[0]==0||!z?Te*0:Te/0);for(u?(d=1,l=n.e-r.e):(u=Ee,d=K,l=we(n.e/d)-we(r.e/d)),Z=z.length,$=ne.length,k=new pe(Te),h=k.d=[],m=0;z[m]==(ne[m]||0);m++);if(z[m]>(ne[m]||0)&&l--,o==null?(L=o=pe.precision,s=pe.rounding):a?L=o+(n.e-r.e)+1:L=o,L<0)h.push(1),b=!0;else{if(L=L/d+2|0,m=0,Z==1){for(p=0,z=z[0],L++;(m<$||p)&&L--;m++)E=p*u+(ne[m]||0),h[m]=E/z|0,p=E%z|0;b=p||m<$}else{for(p=u/(z[0]+1)|0,p>1&&(z=i(z,p,u),ne=i(ne,p,u),Z=z.length,$=ne.length),_=Z,A=ne.slice(0,Z),x=A.length;x<Z;)A[x++]=0;Oe=z.slice(),Oe.unshift(0),X=z[0],z[1]>=u/2&&++X;do p=0,c=e(z,A,Z,x),c<0?(P=A[0],Z!=x&&(P=P*u+(A[1]||0)),p=P/X|0,p>1?(p>=u&&(p=u-1),f=i(z,p,u),g=f.length,x=A.length,c=e(f,A,g,x),c==1&&(p--,t(f,Z<g?Oe:z,g,u))):(p==0&&(c=p=1),f=z.slice()),g=f.length,g<x&&f.unshift(0),t(A,f,x,u),c==-1&&(x=A.length,c=e(z,A,Z,x),c<1&&(p++,t(A,Z<x?Oe:z,x,u))),x=A.length):c===0&&(p++,A=[0]),h[m++]=p,c&&A[0]?A[x++]=ne[_]||0:(A=[ne[_]],x=1);while((_++<$||A[0]!==void 0)&&L--);b=A[0]!==void 0}h[0]||h.shift()}if(d==1)k.e=l,Jn=b;else{for(m=1,p=h[0];p>=10;p/=10)m++;k.e=m+l*d-1,I(k,a?o+k.e+1:o,s,b)}return k}}();function I(i,e,t,n){var r,o,s,a,u,c,l,m,p,d=i.constructor;e:if(e!=null){if(m=i.d,!m)return i;for(r=1,a=m[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=K,s=e,l=m[p=0],u=l/ce(10,r-s-1)%10|0;else if(p=Math.ceil((o+1)/K),a=m.length,p>=a)if(n){for(;a++<=p;)m.push(0);l=u=0,r=1,o%=K,s=o-K+1}else break e;else{for(l=a=m[p],r=1;a>=10;a/=10)r++;o%=K,s=o-K+r,u=s<0?0:l/ce(10,r-s-1)%10|0}if(n=n||e<0||m[p+1]!==void 0||(s<0?l:l%ce(10,r-s-1)),c=t<4?(u||n)&&(t==0||t==(i.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/ce(10,r-s):0:m[p-1])%10&1||t==(i.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=i.e+1,m[0]=ce(10,(K-e%K)%K),i.e=-e||0):m[0]=i.e=0,i;if(o==0?(m.length=p,a=1,p--):(m.length=p+1,a=ce(10,K-o),m[p]=s>0?(l/ce(10,r-s)%ce(10,s)|0)*a:0),c)for(;;)if(p==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&&(i.e++,m[0]==Ee&&(m[0]=1));break}else{if(m[p]+=a,m[p]!=Ee)break;m[p--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return O&&(i.e>d.maxE?(i.d=null,i.e=NaN):i.e<d.minE&&(i.e=0,i.d=[0])),i}function _e(i,e,t){if(!i.isFinite())return si(i);var n,r=i.e,o=fe(i.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+$e(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(i.e<0?"e":"e+")+i.e):r<0?(o="0."+$e(-r-1)+o,t&&(n=t-s)>0&&(o+=$e(n))):r>=s?(o+=$e(r+1-s),t&&(n=t-r-1)>0&&(o=o+"."+$e(n))):((n=r+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(r+1===s&&(o+="."),o+=$e(n))),o}function Dt(i,e){var t=i[0];for(e*=K;t>=10;t/=10)e++;return e}function vt(i,e,t){if(e>cr)throw O=!0,t&&(i.precision=t),Error($n);return I(new i(Ft),e,1,!0)}function Me(i,e,t){if(e>rn)throw Error($n);return I(new i(Wt),e,t,!0)}function ii(i){var e=i.length-1,t=e*K+1;if(e=i[e],e){for(;e%10==0;e/=10)t--;for(e=i[0];e>=10;e/=10)t++}return t}function $e(i){for(var e="";i--;)e+="0";return e}function ri(i,e,t,n){var r,o=new i(1),s=Math.ceil(n/K+4);for(O=!1;;){if(t%2&&(o=o.times(e),Zn(o.d,s)&&(r=!0)),t=we(t/2),t===0){t=o.d.length-1,r&&o.d[t]===0&&++o.d[t];break}e=e.times(e),Zn(e.d,s)}return O=!0,o}function Yn(i){return i.d[i.d.length-1]&1}function oi(i,e,t){for(var n,r=new i(e[0]),o=0;++o<e.length;)if(n=new i(e[o]),n.s)r[t](n)&&(r=n);else{r=n;break}return r}function on(i,e){var t,n,r,o,s,a,u,c=0,l=0,m=0,p=i.constructor,d=p.rounding,b=p.precision;if(!i.d||!i.d[0]||i.e>17)return new p(i.d?i.d[0]?i.s<0?0:1/0:1:i.s?i.s<0?0:i:0/0);for(e==null?(O=!1,u=b):u=e,a=new p(.03125);i.e>-2;)i=i.times(a),m+=5;for(n=Math.log(ce(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new p(1),p.precision=u;;){if(o=I(o.times(i),u,1),t=t.times(++l),a=s.plus(j(o,t,u,1)),fe(a.d).slice(0,u)===fe(s.d).slice(0,u)){for(r=m;r--;)s=I(s.times(s),u,1);if(e==null)if(c<3&&Pt(s.d,u-n,d,c))p.precision=u+=10,t=o=a=new p(1),l=0,c++;else return I(s,p.precision=b,d,O=!0);else return p.precision=b,s}s=a}}function et(i,e){var t,n,r,o,s,a,u,c,l,m,p,d=1,b=10,f=i,g=f.d,k=f.constructor,h=k.rounding,A=k.precision;if(f.s<0||!g||!g[0]||!f.e&&g[0]==1&&g.length==1)return new k(g&&!g[0]?-1/0:f.s!=1?NaN:g?0:f);if(e==null?(O=!1,l=A):l=e,k.precision=l+=b,t=fe(g),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(i),t=fe(f.d),n=t.charAt(0),d++;o=f.e,n>1?(f=new k("0."+t),o++):f=new k(n+"."+t.slice(1))}else return c=vt(k,l+2,A).times(o+""),f=et(new k(n+"."+t.slice(1)),l-b).plus(c),k.precision=A,e==null?I(f,A,h,O=!0):f;for(m=f,u=s=f=j(f.minus(1),f.plus(1),l,1),p=I(f.times(f),l,1),r=3;;){if(s=I(s.times(p),l,1),c=u.plus(j(s,new k(r),l,1)),fe(c.d).slice(0,l)===fe(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(vt(k,l+2,A).times(o+""))),u=j(u,new k(d),l,1),e==null)if(Pt(u.d,l-b,h,a))k.precision=l+=b,c=s=f=j(m.minus(1),m.plus(1),l,1),p=I(f.times(f),l,1),r=a=1;else return I(u,k.precision=A,h,O=!0);else return k.precision=A,u;u=c,r+=2}}function si(i){return String(i.s*i.s/0)}function sn(i,e){var t,n,r;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(r=e.length;e.charCodeAt(r-1)===48;--r);if(e=e.slice(n,r),e){if(r-=n,i.e=t=t-n-1,i.d=[],n=(t+1)%K,t<0&&(n+=K),n<r){for(n&&i.d.push(+e.slice(0,n)),r-=K;n<r;)i.d.push(+e.slice(n,n+=K));e=e.slice(n),n=K-e.length}else n-=r;for(;n--;)e+="0";i.d.push(+e),O&&(i.e>i.constructor.maxE?(i.d=null,i.e=NaN):i.e<i.constructor.minE&&(i.e=0,i.d=[0]))}else i.e=0,i.d=[0];return i}function mr(i,e){var t,n,r,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),ni.test(e))return sn(i,e)}else if(e==="Infinity"||e==="NaN")return+e||(i.s=NaN),i.e=NaN,i.d=null,i;if(sr.test(e))t=16,e=e.toLowerCase();else if(or.test(e))t=2;else if(ar.test(e))t=8;else throw Error(tt+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=i.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,r=ri(n,new n(t),o,o*2)),c=Et(e,t,Ee),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(i.s*0):(i.e=Dt(c,l),i.d=c,O=!1,s&&(i=j(i,r,a*4)),u&&(i=i.times(Math.abs(u)<54?ce(2,u):Tt.pow(2,u))),O=!0,i)}function dr(i,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:yt(i,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/_t(5,t)),e=yt(i,2,e,e);for(var r,o=new i(5),s=new i(16),a=new i(20);t--;)r=e.times(e),e=e.times(o.plus(r.times(s.times(r).minus(a))));return e}function yt(i,e,t,n,r){var o,s,a,u,c=1,l=i.precision,m=Math.ceil(l/K);for(O=!1,u=t.times(t),a=new i(n);;){if(s=j(a.times(u),new i(e++*e++),l,1),a=r?n.plus(s):n.minus(s),n=j(s.times(u),new i(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 O=!0,s.d.length=m+1,s}function _t(i,e){for(var t=i;--e;)t*=i;return t}function ai(i,e){var t,n=e.s<0,r=Me(i,i.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return ze=n?4:1,e;if(t=e.divToInt(r),t.isZero())ze=n?3:2;else{if(e=e.minus(t.times(r)),e.lte(o))return ze=Yn(t)?n?2:3:n?4:1,e;ze=Yn(t)?n?1:4:n?3:2}return e.minus(r).abs()}function an(i,e,t,n){var r,o,s,a,u,c,l,m,p,d=i.constructor,b=t!==void 0;if(b?(xe(t,1,nt),n===void 0?n=d.rounding:xe(n,0,8)):(t=d.precision,n=d.rounding),!i.isFinite())l=si(i);else{for(l=_e(i),s=l.indexOf("."),b?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(l=l.replace(".",""),p=new d(1),p.e=l.length-s,p.d=Et(_e(p),10,r),p.e=p.d.length),m=Et(l,10,r),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=b?"0p+0":"0";else{if(s<0?o--:(i=new d(i),i.d=m,i.e=o,i=j(i,p,t,n,0,r),m=i.d,o=i.e,c=Jn),s=m[t],a=r/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(i.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(i.s<0?8:7)),m.length=t,c)for(;++m[--t]>r-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+=tn.charAt(m[s]);if(b){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)l+="0";for(m=Et(l,r,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=tn.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 i.s<0?"-"+l:l}function Zn(i,e){if(i.length>e)return i.length=e,!0}function pr(i){return new this(i).abs()}function fr(i){return new this(i).acos()}function br(i){return new this(i).acosh()}function yr(i,e){return new this(i).plus(e)}function gr(i){return new this(i).asin()}function wr(i){return new this(i).asinh()}function kr(i){return new this(i).atan()}function Ar(i){return new this(i).atanh()}function hr(i,e){i=new this(i),e=new this(e);var t,n=this.precision,r=this.rounding,o=n+4;return!i.s||!e.s?t=new this(NaN):!i.d&&!e.d?(t=Me(this,o,1).times(e.s>0?.25:.75),t.s=i.s):!e.d||i.isZero()?(t=e.s<0?Me(this,n,r):new this(0),t.s=i.s):!i.d||e.isZero()?(t=Me(this,o,1).times(.5),t.s=i.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(j(i,e,o,1)),e=Me(this,o,1),this.precision=n,this.rounding=r,t=i.s<0?t.minus(e):t.plus(e)):t=this.atan(j(i,e,o,1)),t}function Pr(i){return new this(i).cbrt()}function Tr(i){return I(i=new this(i),i.e+1,2)}function xr(i,e,t){return new this(i).clamp(e,t)}function Br(i){if(!i||typeof i!="object")throw Error(Vt+"Object expected");var e,t,n,r=i.defaults===!0,o=["precision",1,nt,"rounding",0,8,"toExpNeg",-bt,0,"toExpPos",0,bt,"maxE",0,bt,"minE",-bt,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],r&&(this[t]=nn[t]),(n=i[t])!==void 0)if(we(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(tt+t+": "+n);if(t="crypto",r&&(this[t]=nn[t]),(n=i[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(ei);else this[t]=!1;else throw Error(tt+t+": "+n);return this}function Ir(i){return new this(i).cos()}function Sr(i){return new this(i).cosh()}function ui(i){var e,t,n;function r(o){var s,a,u,c=this;if(!(c instanceof r))return new r(o);if(c.constructor=r,jn(o)){c.s=o.s,O?!o.d||o.e>r.maxE?(c.e=NaN,c.d=null):o.e<r.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++;O?s>r.maxE?(c.e=NaN,c.d=null):s<r.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 sn(c,o.toString())}else if(u!=="string")throw Error(tt+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),ni.test(o)?sn(c,o):mr(c,o)}if(r.prototype=w,r.ROUND_UP=0,r.ROUND_DOWN=1,r.ROUND_CEIL=2,r.ROUND_FLOOR=3,r.ROUND_HALF_UP=4,r.ROUND_HALF_DOWN=5,r.ROUND_HALF_EVEN=6,r.ROUND_HALF_CEIL=7,r.ROUND_HALF_FLOOR=8,r.EUCLID=9,r.config=r.set=Br,r.clone=ui,r.isDecimal=jn,r.abs=pr,r.acos=fr,r.acosh=br,r.add=yr,r.asin=gr,r.asinh=wr,r.atan=kr,r.atanh=Ar,r.atan2=hr,r.cbrt=Pr,r.ceil=Tr,r.clamp=xr,r.cos=Ir,r.cosh=Sr,r.div=Cr,r.exp=Kr,r.floor=Nr,r.hypot=Lr,r.ln=Rr,r.log=Or,r.log10=Er,r.log2=Mr,r.max=Fr,r.min=Wr,r.mod=vr,r.mul=Vr,r.pow=Dr,r.random=_r,r.round=qr,r.sign=Gr,r.sin=Ur,r.sinh=Xr,r.sqrt=Hr,r.sub=zr,r.sum=Qr,r.tan=Yr,r.tanh=Zr,r.trunc=jr,i===void 0&&(i={}),i&&i.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)i.hasOwnProperty(t=n[e++])||(i[t]=this[t]);return r.config(i),r}function Cr(i,e){return new this(i).div(e)}function Kr(i){return new this(i).exp()}function Nr(i){return I(i=new this(i),i.e+1,3)}function Lr(){var i,e,t=new this(0);for(O=!1,i=0;i<arguments.length;)if(e=new this(arguments[i++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return O=!0,new this(1/0);t=e}return O=!0,t.sqrt()}function jn(i){return i instanceof Tt||i&&i.toStringTag===ti||!1}function Rr(i){return new this(i).ln()}function Or(i,e){return new this(i).log(e)}function Mr(i){return new this(i).log(2)}function Er(i){return new this(i).log(10)}function Fr(){return oi(this,arguments,"lt")}function Wr(){return oi(this,arguments,"gt")}function vr(i,e){return new this(i).mod(e)}function Vr(i,e){return new this(i).mul(e)}function Dr(i,e){return new this(i).pow(e)}function _r(i){var e,t,n,r,o=0,s=new this(1),a=[];if(i===void 0?i=this.precision:xe(i,1,nt),n=Math.ceil(i/K),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)r=e[o],r>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=r%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)r=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),r>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(r%1e7),o+=4);o=n/4}else throw Error(ei);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],i%=K,n&&i&&(r=ce(10,K-i),a[o]=(n/r|0)*r);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=K)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<K&&(t-=K-n)}return s.e=t,s.d=a,s}function qr(i){return I(i=new this(i),i.e+1,this.rounding)}function Gr(i){return i=new this(i),i.d?i.d[0]?i.s:0*i.s:i.s||NaN}function Ur(i){return new this(i).sin()}function Xr(i){return new this(i).sinh()}function Hr(i){return new this(i).sqrt()}function zr(i,e){return new this(i).sub(e)}function Qr(){var i=0,e=arguments,t=new this(e[i]);for(O=!1;t.s&&++i<e.length;)t=t.plus(e[i]);return O=!0,I(t,this.precision,this.rounding)}function Yr(i){return new this(i).tan()}function Zr(i){return new this(i).tanh()}function jr(i){return I(i=new this(i),i.e+1,1)}w[Symbol.for("nodejs.util.inspect.custom")]=w.toString;w[Symbol.toStringTag]="Decimal";var Tt=w.constructor=ui(nn);Ft=new Tt(Ft);Wt=new Tt(Wt);var N=Tt;import{get as ci,set as Jr}from"lodash";import mi from"dayjs";import $r from"dayjs/plugin/utc";mi.extend($r);var un=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={},eo={};function se(i){let e=ci(li,i);if(!e){let t=ci(eo,i);e=new un({name:i,logLevel:t}),Jr(li,i,e)}return e}import{PublicKey as wo}from"@solana/web3.js";import ko from"bn.js";import bo from"big.js";import Xt from"bn.js";import Be from"bn.js";import{PublicKey as pn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as to}from"@solana/spl-token";import{PublicKey as te,SystemProgram as di,SYSVAR_RENT_PUBKEY as no}from"@solana/web3.js";function V({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var Ss=[V({pubkey:to,isWritable:!1}),V({pubkey:di.programId,isWritable:!1}),V({pubkey:no,isWritable:!1})];function ln({publicKey:i,transformSol:e}){let t=mn(i.toString());if(t instanceof te)return e&&t.equals(xt)?cn:t;if(e&&t.toString()===xt.toBase58())return cn;if(typeof t=="string"){if(t===te.default.toBase58())return te.default;try{return new te(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function mn(i){try{return new te(i)}catch{return i}}var gt=new te("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Cs=new te("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),wt=new te("SysvarRent111111111111111111111111111111111"),Ks=new te("SysvarC1ock11111111111111111111111111111111"),kt=new te("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Ns=new te("Sysvar1nstructions1111111111111111111111111"),Ls=di.programId,Rs=new te("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Os=new te("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Ms=new te("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Es=new te("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Fs=new te("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Ws=new te("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),vs=new te("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Vs=new te("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Ds=new te("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),_s=new te("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),qs=new te("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),cn=new te("So11111111111111111111111111111111111111112"),xt=te.default;function dn(i){return ln({publicKey:i,transformSol:!0})}import{PublicKey as io}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as pi}from"@solana/spl-token";var fi={chainId:101,address:io.default.toBase58(),programId:pi.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:pi.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 fn=class{constructor({mint:e,decimals:t,symbol:n,name:r,skipMint:o=!1,isToken2022:s=!1}){if(e===xt.toBase58()||e instanceof pn&&xt.equals(e)){this.decimals=ut.decimals,this.symbol=ut.symbol,this.name=ut.name,this.mint=new pn(ut.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=r||e.toString().substring(0,6),this.mint=o?pn.default:ln({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},qe=fn;qe.WSOL=new fn(ee(Q({},ut),{mint:ut.address}));import Gt from"big.js";import so from"bn.js";import ao from"decimal.js-light";import ro from"toformat";var oo=ro,Bt=oo;var qt=se("module/fraction"),bn=Bt(Gt),It=Bt(ao),uo={[0]:It.ROUND_DOWN,[1]:It.ROUND_HALF_UP,[2]:It.ROUND_UP},co={[0]:Gt.roundDown,[1]:Gt.roundHalfUp,[2]:Gt.roundUp},H=class{constructor(e,t=new so(1)){this.numerator=ie(e),this.denominator=ie(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new H(this.denominator,this.numerator)}add(e){let t=e instanceof H?e:new H(ie(e));return this.denominator.eq(t.denominator)?new H(this.numerator.add(t.numerator),this.denominator):new H(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof H?e:new H(ie(e));return this.denominator.eq(t.denominator)?new H(this.numerator.sub(t.numerator),this.denominator):new H(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof H?e:new H(ie(e));return new H(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof H?e:new H(ie(e));return new H(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||qt.logWithError(`${e} is not an integer.`),e<=0&&qt.logWithError(`${e} is not positive.`),It.set({precision:e+1,rounding:uo[n]});let r=new It(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return r.toFormat(r.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||qt.logWithError(`${e} is not an integer.`),e<0&&qt.logWithError(`${e} is negative.`),bn.DP=e,bn.RM=co[n]||1,new bn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var mo=se("Raydium_price"),Ce=class extends H{constructor(t){let{baseToken:n,quoteToken:r,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=r,this.scalar=new H(yn(n.decimals),yn(r.decimals))}get raw(){return new H(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Ce({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&mo.logWithError("mul token not equals");let n=super.mul(t);return new Ce({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,r){return this.adjusted.toSignificant(t,n,r)}toFixed(t=this.quoteToken.decimals,n,r){return this.adjusted.toFixed(t,n,r)}};var gn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Ut=gn;Ut.SOL=new gn(fi);import po from"bn.js";var bi=new H(new po(100)),it=class extends H{toSignificant(e=5,t,n){return this.mul(bi).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(bi).toFixed(e,t,n)}};var yi=new Be(0),fo=new Be(1),va=new Be(2),Va=new Be(3),Da=new Be(5),wn=new Be(10),_a=new Be(100),qa=new Be(1e3),Ga=new Be(1e4),gi=9007199254740991;function ie(i){let e=se("Raydium_parseBigNumberish");if(i instanceof Be)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new Be(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=gi||i<=-gi)&&e.logWithError(`BigNumberish number overflow: ${i}`),new Be(String(i))):typeof i=="bigint"?new Be(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new Be(0))}function yn(i){return wn.pow(ie(i))}var yo=se("Raydium_amount"),ki=Bt(bo);function go(i,e){let t="0",n="0";if(i.includes(".")){let r=i.split(".");r.length===2?([t,n]=r,n=n.padEnd(e,"0")):yo.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,n.slice(0,e)||n]}var be=class extends H{constructor(t,n,r=!0,o){let s=new Xt(0),a=wn.pow(new Xt(t.decimals));if(r)s=ie(n);else{let u=new Xt(0),c=new Xt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=go(n.toString(),t.decimals);u=ie(l),c=ie(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=se(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 be(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new be(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,r=0){return super.toSignificant(t,n,r)}toFixed(t=this.token.decimals,n,r=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,r)}toExact(t={groupSeparator:""}){return ki.DP=this.token.decimals,new ki(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};function wi(i){return typeof i=="object"&&i!==null&&![qe,be,wo,H,ko,Ce,it].some(e=>typeof e=="object"&&i instanceof e)}function ke(i){return typeof i=="string"?mn(i):Array.isArray(i)?i.map(e=>ke(e)):wi(i)?Object.fromEntries(Object.entries(i).map(([e,t])=>[e,ke(t)])):i}import{PublicKey as tc,sendAndConfirmTransaction as nc,Transaction as rc,TransactionMessage as sc,VersionedTransaction as ac}from"@solana/web3.js";import cc from"axios";var re={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"};import{PublicKey as Ao,ComputeBudgetProgram as wu,Transaction as Au,TransactionMessage as Pu,Keypair as Tu,VersionedTransaction as Bu}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Su}from"@solana/spl-token";var Nu=se("Raydium_txUtil");function Ke(i,e){let[t,n]=Ao.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}import{PublicKey as Po,AddressLookupTableAccount as Ai}from"@solana/web3.js";import{PublicKey as ho}from"@solana/web3.js";import{getTransferFeeConfig as Wu,unpackMint as vu}from"@solana/spl-token";var kn=se("Raydium_accountInfo_util");async function ct(i,e,t){let{batchRequest:n,commitment:r="confirmed"}=Q({batchRequest:!1},t),o=An(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let m=i._buildArgs([l.map(p=>p.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=An(a,10);s=(await(await Promise.all(u.map(async l=>await i._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&kn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.error.message}`),l.result.value.map(m=>{if(m){let{data:p,executable:d,lamports:b,owner:f,rentEpoch:g}=m;return p.length!==2&&p[1]!=="base64"&&kn.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:d,lamports:b,owner:new ho(f),rentEpoch:g}}return null})))}else try{s=await Promise.all(o.map(a=>i.getMultipleAccountsInfo(a,r)))}catch(a){a instanceof Error&&kn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function hn(i,e,t){let n=await ct(i,e.map(r=>r.pubkey),t);return e.map((r,o)=>ee(Q({},r),{accountInfo:n[o]}))}var To={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Ai({key:new Po("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Ai.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"))})};function An(i,e=1,t=[]){let n=[...i];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}import{PublicKey as ae}from"@solana/web3.js";var kc=new ae("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Ac=new ae("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),hc=new ae("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Pc=new ae("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Tc=new ae("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),xc=new ae("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Bc=new ae("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Ic=new ae("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Sc=new ae("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Cc=new ae("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Kc=new ae("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Nc=new ae("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Lc=new ae("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Rc=new ae("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Oc=new ae("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Mc=new ae("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Ec=new ae("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Fc=new ae("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Wc=new ae("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),vc=new ae("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");import{PublicKey as Bo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Io}from"@solana/spl-token";function Ge(i,e,t){return Ke([i.toBuffer(),(t!=null?t:Io).toBuffer(),e.toBuffer()],new Bo("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import Fe from"bn.js";var St=1e4;function le(i,e,t,n){if(e===void 0)return{amount:i,fee:void 0,expirationTime:void 0};let r=ee(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<r.newerTransferFee.epoch?r.olderTransferFee:r.newerTransferFee,s=new Fe(o.maximumFee.toString()),a=t.epoch<r.newerTransferFee.epoch?(Number(r.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===St){let u=new Fe(o.maximumFee.toString());return{amount:i.add(u),fee:u,expirationTime:a}}else{let u=Pn(i.mul(new Fe(St)),new Fe(St-o.transferFeeBasisPoints)),c=new Fe(o.maximumFee.toString()),l=u.sub(i).gt(c)?i.add(c):u,m=Pn(l.mul(new Fe(o.transferFeeBasisPoints)),new Fe(St)),p=m.gt(s)?s:m;return{amount:l,fee:p,expirationTime:a}}else{let u=Pn(i.mul(new Fe(o.transferFeeBasisPoints)),new Fe(St)),c=u.gt(s)?s:u;return{amount:i,fee:c,expirationTime:a}}}function lt(i,e){return i===void 0?e:e===void 0?i:Math.min(i,e)}function Pn(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new Fe(0))?t.add(new Fe(1)):t}import Ue from"bn.js";var ue=new Ue(0),Ie=new Ue(1),Qe=new Ue(-1),Se=new Ue(1).shln(64),Ht=new Ue(1).shln(128),Tn=Se.sub(Ie),Ct=64,hi=Ht.subn(1),Ae=-443636,Pe=-Ae,Ye=new Ue("4295048016"),Ze=new Ue("79226673521066979257578248091"),Pi=16,Ti="59543866431248",xi="184467440737095516",Bi="15793534762490258745",zt=new Ue(10).pow(new Ue(6));var bl=new Ue("18446744073700000000");import D from"bn.js";function Qt(i){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,i,!1),new Uint8Array(e)}function xn(i,e){let t=0;for(let n=i-1;n>=0&&!e.testn(n);n--)t++;return t}function Bn(i,e){let t=0;for(let n=0;n<i&&!e.testn(n);n++)t++;return t}function Kt(i,e){for(let t=0;t<i;t++)if(e.testn(t))return!1;return!0}function Ii(i,e){return Kt(i,e)?null:xn(i,e)}function Si(i,e){return Kt(i,e)?null:Bn(i,e)}var hl=Buffer.from("amm_config","utf8"),So=Buffer.from("pool","utf8"),Co=Buffer.from("pool_vault","utf8"),Ko=Buffer.from("pool_reward_vault","utf8"),Ci=Buffer.from("position","utf8"),No=Buffer.from("tick_array","utf8"),Lo=Buffer.from("operation","utf8"),Ro=Buffer.from("pool_tick_array_bitmap_extension","utf8");function Ki(i,e,t,n){return Ke([So,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function In(i,e,t){return Ke([Co,e.toBuffer(),t.toBuffer()],i)}function Ni(i,e,t){return Ke([Ko,e.toBuffer(),t.toBuffer()],i)}function Y(i,e,t){return Ke([No,e.toBuffer(),Qt(t)],i)}function mt(i,e,t,n){return Ke([Ci,e.toBuffer(),Qt(t),Qt(n)],i)}function We(i,e){return Ke([Ci,e.toBuffer()],i)}function Yt(i){return Ke([Buffer.from("metadata","utf8"),kt.toBuffer(),i.toBuffer()],kt)}function Zt(i){return Ke([Lo],i)}function Ne(i,e){return Ke([Ro,e.toBuffer()],i)}import{PublicKey as rt}from"@solana/web3.js";import oe from"bn.js";import Zo from"bn.js";import{PublicKey as _o}from"@solana/web3.js";import Mi,{isBN as Ei}from"bn.js";import{bits as xl,BitStructure as Bl,blob as Oo,Blob as Il,cstr as Sl,f32 as Cl,f32be as Kl,f64 as Nl,f64be as Ll,greedy as Rl,Layout as Mo,ns64 as Ol,ns64be as Ml,nu64 as El,nu64be as Fl,offset as Wl,s16 as vl,s16be as Vl,s24 as Dl,s24be as _l,s32 as Eo,s32be as ql,s40 as Gl,s40be as Ul,s48 as Xl,s48be as Hl,s8 as zl,seq as Fo,struct as Ql,Structure as Wo,u16 as vo,u16be as Yl,u24 as Zl,u24be as jl,u32 as Jl,u32be as $l,u40 as em,u40be as tm,u48 as nm,u48be as im,u8 as Vo,UInt as Do,union as rm,Union as om,unionLayoutDiscriminator as sm,utf8 as am}from"@solana/buffer-layout";var Sn=Mo,Li=Wo;var Cn=Do;var Ri=Vo,At=vo;var ye=Eo;var Oi=Fo;var Le=Oo;var Nt=class extends Sn{constructor(t,n,r){super(t,r);this.blob=Le(t),this.signed=n}decode(t,n=0){let r=new Mi(this.blob.decode(t,n),10,"le");return this.signed?r.fromTwos(this.span*8).clone():r}encode(t,n,r=0){return typeof t=="number"&&(t=new Mi(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,r)}};function q(i){return new Cn(1,i)}function je(i){return new Cn(4,i)}function y(i){return new Nt(8,!1,i)}function M(i){return new Nt(16,!1,i)}function Fi(i){return new Nt(16,!0,i)}var jt=class extends Sn{constructor(t,n,r,o){super(t.span,o);this.layout=t,this.decoder=n,this.encoder=r}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,r){return this.layout.encode(this.encoder(t),n,r)}getSpan(t,n){return this.layout.getSpan(t,n)}};function R(i){return new jt(Le(32),e=>new _o(e),e=>e.toBuffer(),i)}function Xe(i){return new jt(Ri(),qo,Go,i)}function qo(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function Go(i){return i?1:0}var Kn=class extends Li{decode(e,t){return super.decode(e,t)}};function F(i,e,t){return new Kn(i,e,t)}function J(i,e,t){let n,r=typeof e=="number"?e:Ei(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=Ei(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 Oi(i,r,t)}var Nn=14,Je=class{static maxTickInTickarrayBitmap(e){return e*me*dt}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(r+=1);let o=n*r;return e<0?{minValue:-o,maxValue:-o+n}:{minValue:o,maxValue:o+n}}static nextInitializedTickArrayStartIndex(e,t,n,r){if(!G.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=r?t-G.tickCount(n):t+G.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*me,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(r){let l=e.shln(1024-c-1),m=Ii(1024,l);if(m!==null){let p=(c-m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=Si(1024,l);if(m!==null){let p=(c+m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:o-G.tickCount(n)}}}},Lt=class{static getBitmapOffset(e,t){if(!G.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=Je.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&r--,r}static getBitmap(e,t,n){let r=this.getBitmapOffset(e,t);return e<0?{offset:r,tickarrayBitmap:n.negativeTickArrayBitmap[r]}:{offset:r,tickarrayBitmap:n.positiveTickArrayBitmap[r]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:r}=this.extensionTickBoundary(t);if(e>=r&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=Je.maxTickInTickarrayBitmap(e),n=-t;if(Pe<=t)throw Error(`extensionTickBoundary check error: ${Pe}, ${t}`);if(n<=Ae)throw Error(`extensionTickBoundary check error: ${n}, ${Ae}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:r}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:B.mergeTickArrayBitmap(r).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,r){let o=G.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,r);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,r){let{minValue:o,maxValue:s}=Je.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(r){let u=B.mergeTickArrayBitmap(e).shln(dt-1-a),c=Kt(512,u)?null:xn(512,u);if(c!==null){let l=t-c*G.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=B.mergeTickArrayBitmap(e).shrn(a),c=Kt(512,u)?null:Bn(512,u);if(c!==null){let l=t+c*G.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-G.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%Je.maxTickInTickarrayBitmap(t),r=Math.floor(n/G.tickCount(t));return e<0&&n!=0&&(r=dt-r),r}};var Cm=F([Le(8),q("bump"),At("index"),R(""),je("protocolFeeRate"),je("tradeFeeRate"),At("tickSpacing"),J(y(),8,"")]),Uo=F([je("blockTimestamp"),M("sqrtPriceX64"),M("cumulativeTimePriceX64"),J(M(),1,"")]),Ln=F([Le(8),Xe("initialized"),R("poolId"),J(Uo,1e3,"observations"),J(M(),5,"")]),Xo=F([q("rewardState"),y("openTime"),y("endTime"),y("lastUpdateTime"),M("emissionsPerSecondX64"),y("rewardTotalEmissioned"),y("rewardClaimed"),R("tokenMint"),R("tokenVault"),R("creator"),M("rewardGrowthGlobalX64")]),Wi=F([Le(8),q("bump"),R("ammConfig"),R("creator"),R("mintA"),R("mintB"),R("vaultA"),R("vaultB"),R("observationId"),q("mintDecimalsA"),q("mintDecimalsB"),At("tickSpacing"),M("liquidity"),M("sqrtPriceX64"),ye("tickCurrent"),At("observationIndex"),At("observationUpdateDuration"),M("feeGrowthGlobalX64A"),M("feeGrowthGlobalX64B"),y("protocolFeesTokenA"),y("protocolFeesTokenB"),M("swapInAmountTokenA"),M("swapOutAmountTokenB"),M("swapInAmountTokenB"),M("swapOutAmountTokenA"),q("status"),J(q(),7,""),J(Xo,3,"rewardInfos"),J(y(),16,"tickArrayBitmap"),y("totalFeesTokenA"),y("totalFeesClaimedTokenA"),y("totalFeesTokenB"),y("totalFeesClaimedTokenB"),y("fundFeesTokenA"),y("fundFeesTokenB"),y("startTime"),J(y(),15*4-3,"padding")]),Ho=F([M("growthInsideLastX64"),y("rewardAmountOwed")]),Rn=F([Le(8),q("bump"),R("nftMint"),R("poolId"),ye("tickLower"),ye("tickUpper"),M("liquidity"),M("feeGrowthInsideLastX64A"),M("feeGrowthInsideLastX64B"),y("tokenFeesOwedA"),y("tokenFeesOwedB"),J(Ho,3,"rewardInfos"),J(y(),8,"")]),Km=F([Le(8),q("bump"),R("poolId"),ye("tickLowerIndex"),ye("tickUpperIndex"),M("liquidity"),M("feeGrowthInsideLastX64A"),M("feeGrowthInsideLastX64B"),y("tokenFeesOwedA"),y("tokenFeesOwedB"),J(M(),3,"rewardGrowthInside"),J(y(),8,"")]),zo=F([ye("tick"),Fi("liquidityNet"),M("liquidityGross"),M("feeGrowthOutsideX64A"),M("feeGrowthOutsideX64B"),J(M(),3,"rewardGrowthsOutsideX64"),J(je(),13,"")]),Rt=F([Le(8),R("poolId"),ye("startTickIndex"),J(zo,me,"ticks"),q("initializedTickCount"),J(q(),115,"")]),Qo=F([Le(329),J(R(),100,"whitelistMints")]),vi=F([Le(8),R("poolId"),J(J(y(),8),Nn,"positiveTickArrayBitmap"),J(J(y(),8),Nn,"negativeTickArrayBitmap")]);var Yo=15,G=class{static async getTickArrays(e,t,n,r,o,s,a){let u=[],c=B.getTickArrayStartIndexByTick(r,o),l=B.getInitializedTickArrayInRange(s,a,o,c,Math.floor(Yo/2));for(let d=0;d<l.length;d++){let{publicKey:b}=Y(t,n,l[d]);u.push(b)}let m=(await ct(e,u)).map(d=>d!==null?Rt.decode(d.data):null),p={};for(let d=0;d<u.length;d++){let b=m[d];b!==null&&(p[b.startTickIndex]=ee(Q({},b),{address:u[d]}))}return p}static nextInitializedTick(e,t,n,r,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,r,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=B.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:p,tickArrayStartTickIndex:d}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,p,d]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,r,o){let s=Math.floor(e/G.tickCount(t)),a=n?B.searchLowBitFromStart(r,o,s-1,1,t):B.searchHightBitFromStart(r,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,r){let o;if(r){let a=me-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<me;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=Y(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,r,o,s){let a=B.getTickArrayStartIndexByTick(r,o),u=Math.floor((r-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 p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u-1}else for(u=u+1;u<me;){let p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u+1}let{publicKey:m}=Y(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(B.checkIsOutOfBoundary(e)){if(e>Pe)return!1;let n=B.getTickArrayStartIndexByTick(Ae,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return me*e}};var me=60,dt=512,B=class{static getTickArrayAddressByTick(e,t,n,r){let o=B.getTickArrayStartIndexByTick(n,r),{publicKey:s}=Y(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=B.getTickArrayStartIndexByTick(e,t),r=Math.floor((e-n)/t);if(r<0||r>=me)throw new Error("tick offset in array overflow");return r}static getTickArrayBitIndex(e,t){let n=G.tickCount(t),r=e/n;return e<0&&e%n!=0?r=Math.ceil(r)-1:r=Math.floor(r),r}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*G.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*me,r=Math.floor(e/n)+512;return Math.abs(r)}static checkTickArrayIsInitialized(e,t,n){let r=n*me,o=Math.floor(t/r)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*r}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*me:e+t*me}static mergeTickArrayBitmap(e){let t=new Zo(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,r,o){let s=Math.floor(r/(n*me));return[...B.searchLowBitFromStart(e,t,s-1,o,n),...B.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return B.searchHightBitFromStart(e,t,0,dt,n)}static getAllInitializedTickArrayInfo(e,t,n,r,o){let s=[],a=B.getAllInitializedTickArrayStartIndex(n,r,o);for(let u of a){let{publicKey:c}=Y(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,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>B.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===r)break}let u=G.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>B.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===r)break}let u=G.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<Ae||e>Pe}static nextInitTick(e,t,n,r,o){if(G.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(r)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<me;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=me-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<me;){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 r=W.getSqrtPriceX64FromTick(t),o=W.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new N(1).div(o),tickSqrtPriceX64:r}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let r=n?t:new N(1).div(t),o=pt.getTickWithPriceAndTickspacing(r,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=W.getSqrtPriceX64FromTick(o),a=W.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 r=W.getSqrtPriceX64FromTick(t),o=W.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new N(1).div(o),tickSqrtPriceX64:r}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let r=n?t:new N(1).div(t),o=pt.getTickWithPriceAndTickspacing(r,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=W.getSqrtPriceX64FromTick(o),a=W.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new N(1).div(a)}}};import He from"bn.js";var Ot=class{static getfeeGrowthInside(e,t,n){let r=new He(0),o=new He(0);e.tickCurrent>=t.tick?(r=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(r=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),o=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new He(0),a=new He(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=v.wrappingSubU128(v.wrappingSubU128(e.feeGrowthGlobalX64A,r),s),c=v.wrappingSubU128(v.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=v.mulDivFloor(v.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Se),u=t.tokenFeesOwedA.add(a),c=v.mulDivFloor(v.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Se),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=v.mulDivFloor(v.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Se),u=t.tokenFeesOwedA.add(a),c=v.mulDivFloor(v.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Se),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,r){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=v.wrappingSubU128(u,c.growthInsideLastX64),m=v.mulDivFloor(l,t.liquidity,Se),p=c.rewardAmountOwed.add(m);o.push(p)}return o}static GetPositionRewards(e,t,n,r){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=v.wrappingSubU128(u,c.growthInsideLastX64),m=v.mulDivFloor(l,t.liquidity,Se),p=c.rewardAmountOwed.add(m);o.push(p)}return o}static getRewardGrowthInside(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new He(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new He(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(v.wrappingSubU128(v.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new He(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new He(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(v.wrappingSubU128(v.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:r,add:o,epochInfo:s}){var g,k,h,A;let a=W.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),u=W.getSqrtPriceX64FromTick(t.tickLower),c=W.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+r:1-r,m=U.getAmountsFromLiquidity(a,u,c,n,o),[p,d]=[le(m.amountA,(g=e.mintA.extensions)==null?void 0:g.feeConfig,s,!0),le(m.amountB,(k=e.mintB.extensions)==null?void 0:k.feeConfig,s,!0)],[b,f]=[le(new He(new N(m.amountA.toString()).mul(l).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,s,!0),le(new He(new N(m.amountB.toString()).mul(l).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,s,!0)];return{liquidity:n,amountA:p,amountB:d,amountSlippageA:b,amountSlippageB:f,expirationTime:lt(p.expirationTime,d.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as Vi}from"@solana/spl-token";var he=class{static getOutputAmountAndRemainAccounts(e,t,n,r,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:p,sqrtPriceX64:d,feeAmount:b}=ft.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r,c,o);return a.push(...p),{expectedAmountOut:m.mul(Qe),remainingAccounts:a,executionPrice:d,feeAmount:b}}static getInputAmountAndRemainAccounts(e,t,n,r,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:g}=Y(e.programId,e.id,f.nextStartIndex);a.push(g)}}catch{}a.push(l);let{amountCalculated:m,accounts:p,sqrtPriceX64:d,feeAmount:b}=ft.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r.mul(Qe),c,o);return a.push(...p),{expectedAmountIn:m,remainingAccounts:a,executionPrice:d,feeAmount:b}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:r}=he.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Lt.checkTickArrayIsInit(G.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):B.checkTickArrayIsInitialized(B.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=Y(e.programId,e.id,r);return{isExist:!0,startIndex:r,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,G.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=Y(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/G.tickCount(e.tickSpacing)),r=t?B.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):B.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return r.length>0?{isExist:!0,nextStartIndex:r[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=G.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:r,tickIndex:o}=Je.nextInitializedTickArrayStartIndex(B.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(r)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=Lt.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Ae||t>Pe)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:r,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],p=(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(p===void 0)throw Error("get new reward mint info error");let d=ee(Q({},m),{perSecond:v.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new rt(p)});if(d.tokenMint.equals(rt.default))continue;if(n<=d.openTime.toNumber()||r.eq(ue)){s.push(d);continue}let b=new oe(Math.min(d.endTime.toNumber(),n)),f=b.sub(d.lastUpdateTime),g=v.mulDivFloor(f,d.emissionsPerSecondX64,r),k=d.rewardGrowthGlobalX64.add(g),h=v.mulDivFloor(f,d.emissionsPerSecondX64,Se),A=d.rewardTotalEmissioned.add(h);s.push(ee(Q({},d),{rewardGrowthGlobalX64:k,rewardTotalEmissioned:A,lastUpdateTime:b}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:r}=this.tickRange(e);for(let o of t){let s=B.getTickArrayStartIndexByTick(o,e);if(s>=n||s<r)return!0}return!1}static tickRange(e){let t=Je.maxTickInTickarrayBitmap(e),n=-t;return t>Pe&&(t=G.getArrayStartIndex(Pe,e)+G.tickCount(e)),n<Ae&&(n=G.getArrayStartIndex(Ae,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!G.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/G.tickCount(t)*dt}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let r=await hn(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of r)s.accountInfo!==null&&(o[s.pubkey.toString()]=vi.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let r={},o=[];for(let u of t){let c=B.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=B.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:p}=Y(u.programId,u.id,m);o.push({pubkey:p}),r[p.toString()]=u.id}}let s=await hn(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=r[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=Rt.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=ee(Q({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:r=!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(p=>p.accountInfo.mint),c=[];for(let p of u)for(let d of s)c.push(We(d,p).publicKey);let l=await ct(t,c,{batchRequest:r}),m={};for(let p of l){if(p===null)continue;let d=Rn.decode(p.data),b=d.poolId.toString(),f=e.find(_=>_.state.id.toBase58()===b);if(f===void 0)continue;let g=f.state,k=B._getTickPriceLegacy({poolInfo:g,tick:d.tickLower,baseIn:!0}),h=B._getTickPriceLegacy({poolInfo:g,tick:d.tickUpper,baseIn:!0}),{amountA:A,amountB:x}=U.getAmountsFromLiquidity(g.sqrtPriceX64,k.tickSqrtPriceX64,h.tickSqrtPriceX64,d.liquidity,!1),P=1/(1-Math.sqrt(Math.sqrt(k.price.div(h.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:d.poolId,nftMint:d.nftMint,priceLower:k.price,priceUpper:h.price,amountA:A,amountB:x,tickLower:d.tickLower,tickUpper:d.tickUpper,liquidity:d.liquidity,feeGrowthInsideLastX64A:d.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:d.feeGrowthInsideLastX64B,tokenFeesOwedA:d.tokenFeesOwedA,tokenFeesOwedB:d.tokenFeesOwedB,rewardInfos:d.rewardInfos.map(_=>ee(Q({},_),{pendingReward:new oe(0)})),leverage:P,tokenFeeAmountA:new oe(0),tokenFeeAmountB:new oe(0)}];let L=await B.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickLower,f.state.tickSpacing),E=await B.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickLower}`]=L,m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickUpper}`]=E}if(o){let p=Object.values(m),d=await ct(t,p,{batchRequest:r}),b={};for(let f=0;f<p.length;f++){let g=d[f];if(g===null)continue;let k=p[f].toString();b[k]=Rt.decode(g.data)}for(let{state:f,positionAccount:g}of e)if(!!g)for(let k of g){let h=`${f.programId.toString()}-${f.id.toString()}-${k.tickLower}`,A=`${f.programId.toString()}-${f.id.toString()}-${k.tickUpper}`,x=b[m[h].toString()],P=b[m[A].toString()],L=x.ticks[B.getTickOffsetInArray(k.tickLower,f.tickSpacing)],E=P.ticks[B.getTickOffsetInArray(k.tickUpper,f.tickSpacing)],{tokenFeeAmountA:_,tokenFeeAmountB:$}=await Ot.GetPositionFees(f,k,L,E),X=await Ot.GetPositionRewards(f,k,L,E);k.tokenFeeAmountA=_.gte(new oe(0))?_:new oe(0),k.tokenFeeAmountB=$.gte(new oe(0))?$:new oe(0);for(let Z=0;Z<X.length;Z++)k.rewardInfos[Z].pendingReward=X[Z].gte(new oe(0))?X[Z]:new oe(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountIn:o,slippage:s,priceLimit:a=new N(0)}){var X;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?Ye.add(new oe(1)):Ze.sub(new oe(1)):u=W.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=le(o,l,r,!1),{expectedAmountOut:d,remainingAccounts:b,executionPrice:f,feeAmount:g}=he.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((X=p.fee)!=null?X:ue),u),k=le(d,m,r,!1),h=W.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),A=c?h:new N(1).div(h),x=d.mul(new oe(Math.floor((1-s)*1e10))).div(new oe(1e10)),P=le(x,m,r,!1),L=c?e.currentPrice:new N(1).div(e.currentPrice),E=new N(A).sub(L).abs(),_=L,$=new it(new N(E).mul(10**15).toFixed(0),new N(_).mul(10**15).toFixed(0));return{realAmountIn:p,amountOut:k,minAmountOut:P,expirationTime:lt(p.expirationTime,k.expirationTime),currentPrice:e.currentPrice,executionPrice:A,priceImpact:$,fee:g,remainingAccounts:b}}static async computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:r,slippage:o,epochInfo:s}){let a=r.address===e.mintB.address,[u,c]=a?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,m]=[new qe(ee(Q({},u),{mint:u.address,isToken2022:u.programId===Vi.toBase58()})),new qe(ee(Q({},c),{mint:c.address,isToken2022:c.programId===Vi.toBase58()}))],{realAmountIn:p,amountOut:d,minAmountOut:b,expirationTime:f,currentPrice:g,executionPrice:k,priceImpact:h,fee:A,remainingAccounts:x}=await he.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new rt(u.address),amountIn:n,slippage:o,epochInfo:s}),P=ee(Q({},p),{amount:new be(l,p.amount),fee:p.fee===void 0?void 0:new be(l,p.fee)}),L=ee(Q({},d),{amount:new be(m,d.amount),fee:d.fee===void 0?void 0:new be(m,d.fee)}),E=ee(Q({},b),{amount:new be(m,b.amount),fee:b.fee===void 0?void 0:new be(m,b.fee)}),_=new Ce({baseToken:l,denominator:new oe(10).pow(new oe(20+l.decimals)),quoteToken:m,numerator:g.mul(new N(10**(20+m.decimals))).toFixed(0)}),$=new Ce({baseToken:l,denominator:new oe(10).pow(new oe(20+l.decimals)),quoteToken:m,numerator:k.mul(new N(10**(20+m.decimals))).toFixed(0)}),X=new be(l,A);return{realAmountIn:P,amountOut:L,minAmountOut:E,expirationTime:f,currentPrice:_,executionPrice:$,priceImpact:h,fee:X,remainingAccounts:x}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:r}){var b,f,g;let o=e[t],s=B.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=B.getTickPrice({poolInfo:e,tick:r,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,m=a-s,p=o.priceMax-o.priceMin,d;return l<=0?d=0:m===l?d=p/l:p===l?d=l/m:d=l/p*(l/m),{feeApr:o.feeApr*d,rewardsApr:[(b=o.rewardApr[0])!=null?b:0*d,(f=o.rewardApr[1])!=null?f:0*d,(g=o.rewardApr[2])!=null?g:0*d],apr:o.apr*d}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:r,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=r[dn(e.mintA.address).toString()],p=r[dn(e.mintB.address).toString()],d=e.mintA.decimals,b=e.mintB.decimals;if(!l||!m||!p)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=W.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),g=W.getSqrtPriceX64FromTick(s),k=W.getSqrtPriceX64FromTick(a),{amountSlippageA:h,amountSlippageB:A}=U.getAmountsFromLiquidityWithSlippage(f,g,k,t,!1,!1,0),{amountSlippageA:x,amountSlippageB:P}=U.getAmountsFromLiquidityWithSlippage(f,g,k,o,!1,!1,0),L=new N(h.toString()).div(new N(10).pow(d)).mul(m.value).add(new N(A.toString()).div(new N(10).pow(b)).mul(p.value)),E=new N(x.toString()).div(new N(10).pow(d)).mul(m.value).add(new N(P.toString()).div(new N(10).pow(b)).mul(p.value)),_=E.div(L.add(E)).div(E),X=new N(l.volumeFee).mul(365).div(c).mul(_).mul(100).toNumber(),Z=3600*24*365,Oe=e.rewardDefaultInfos.map(pe=>{var z,Hn;let Te=pe.mint.decimals,ne=r[pe.mint.address];return u<((z=pe.startTime)!=null?z:0)||u>((Hn=pe.endTime)!=null?Hn:0)||!pe.perSecond||!ne||Te===void 0?0:new N(ne.value).mul(new N(pe.perSecond).mul(Z)).div(new N(10).pow(Te)).mul(_).mul(100).toNumber()});return{feeApr:X,rewardsApr:Oe,apr:X+Oe.reduce((pe,Te)=>pe+Te,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:r,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var k,h;let l=W.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),m=W.getSqrtPriceX64FromTick(n),p=W.getSqrtPriceX64FromTick(r),d=a?1-s:1+s,b=le(o,(k=e[t?"mintA":"mintB"].extensions)==null?void 0:k.feeConfig,u,!c),f=new oe(new N(b.amount.sub((h=b.fee)!=null?h:ue).toString()).mul(d).toFixed(0)),g;if(l.lte(m))g=t?U.getLiquidityFromTokenAmountA(m,p,f,!a):new oe(0);else if(l.lte(p)){let A=U.getLiquidityFromTokenAmountA(l,p,f,!a),x=U.getLiquidityFromTokenAmountB(m,l,f);g=t?A:x}else g=t?new oe(0):U.getLiquidityFromTokenAmountB(m,p,f);return he.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:r,liquidity:g,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:r,liquidity:o,slippage:s,add:a}){var g,k,h,A;let u=W.getSqrtPriceX64FromTick(n),c=W.getSqrtPriceX64FromTick(r),l=a?1+s:1-s,m=U.getAmountsFromLiquidity(W.priceToSqrtPriceX64(new N(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[p,d]=[le(m.amountA,(g=t.mintA.extensions)==null?void 0:g.feeConfig,e,!0),le(m.amountB,(k=t.mintB.extensions)==null?void 0:k.feeConfig,e,!0)],[b,f]=[le(m.amountA.muln(l),(h=t.mintA.extensions)==null?void 0:h.feeConfig,e,!0),le(m.amountB.muln(l),(A=t.mintB.extensions)==null?void 0:A.feeConfig,e,!0)];return{liquidity:o,amountA:p,amountB:d,amountSlippageA:b,amountSlippageB:f,expirationTime:lt(p.expirationTime,d.expirationTime)}}static async fetchComputeClmmInfo({owner:e,connection:t,poolInfo:n}){let r=await t.getAccountInfo(new rt(n.id));if(!r)throw new Error(`pool not found ${n.id}`);let o=Wi.decode(r.data),s=Ne(e,new rt(n.id)).publicKey,a=await he.fetchExBitmaps({connection:t,exBitmapAddress:[s],batchRequest:!1});return ee(Q({},o),{id:new rt(n.id),programId:new rt(n.programId),mintA:n.mintA,mintB:n.mintB,ammConfig:ee(Q({},n.config),{id:new rt(n.config.id),fundOwner:""}),currentPrice:new N(n.price),exBitmapInfo:a[s.toBase58()],startTime:o.startTime.toNumber()})}};var v=class{static mulDivRoundingUp(e,t,n){let r=e.mul(t),o=r.div(n);return r.mod(n).eq(ue)||(o=o.add(Ie)),o}static mulDivFloor(e,t,n){if(n.eq(ue))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(ue))throw new Error("division by 0");return e.mul(t).add(n.sub(Ie)).div(n)}static x64ToDecimal(e,t){return new N(e.toString()).div(N.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new D(e.mul(N.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Ht).sub(t).mod(Ht)}};function de(i,e){return On(i.mul(e),64,256)}function jo(i,e,t){let n=i.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function On(i,e,t){let n=i.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var W=class{static sqrtPriceX64ToPrice(e,t,n){return v.x64ToDecimal(e).pow(2).mul(N.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return v.decimalToX64(e.mul(N.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,r){if(!e.gt(ue))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(ue))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,r){if(!e.gt(ue))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(ue))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,r){if(n.eq(ue))return e;let o=t.shln(Ct);if(r){let s=o,a=o.add(n.mul(e));return a.gte(s)?v.mulDivCeil(s,e,a):v.mulDivRoundingUp(s,Ie,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 v.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,r){let o=n.shln(Ct);if(r)return e.add(o.div(t));{let s=v.mulDivRoundingUp(o,Ie,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<Ae||e>Pe)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new D("18445821805675395072"):new D("18446744073709551616");return(t&2)!=0&&(n=de(n,new D("18444899583751176192"))),(t&4)!=0&&(n=de(n,new D("18443055278223355904"))),(t&8)!=0&&(n=de(n,new D("18439367220385607680"))),(t&16)!=0&&(n=de(n,new D("18431993317065453568"))),(t&32)!=0&&(n=de(n,new D("18417254355718170624"))),(t&64)!=0&&(n=de(n,new D("18387811781193609216"))),(t&128)!=0&&(n=de(n,new D("18329067761203558400"))),(t&256)!=0&&(n=de(n,new D("18212142134806163456"))),(t&512)!=0&&(n=de(n,new D("17980523815641700352"))),(t&1024)!=0&&(n=de(n,new D("17526086738831433728"))),(t&2048)!=0&&(n=de(n,new D("16651378430235570176"))),(t&4096)!=0&&(n=de(n,new D("15030750278694412288"))),(t&8192)!=0&&(n=de(n,new D("12247334978884435968"))),(t&16384)!=0&&(n=de(n,new D("8131365268886854656"))),(t&32768)!=0&&(n=de(n,new D("3584323654725218816"))),(t&65536)!=0&&(n=de(n,new D("696457651848324352"))),(t&131072)!=0&&(n=de(n,new D("26294789957507116"))),(t&262144)!=0&&(n=de(n,new D("37481735321082"))),e>0&&(n=hi.div(n)),n}static getTickFromPrice(e,t,n){return W.getTickFromSqrtPriceX64(W.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Ze)||e.lt(Ye))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new D(t-64),r=jo(n,32,128),o=new D("8000000000000000","hex"),s=0,a=new D(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new D(0))&&s<Pi;){u=u.mul(u);let b=u.shrn(127);u=u.shrn(63+b.toNumber()),a=a.add(o.mul(b)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=r.add(c).mul(new D(Ti)),p=On(m.sub(new D(xi)),64,128).toNumber(),d=On(m.add(new D(Bi)),64,128).toNumber();return p==d?p:W.getSqrtPriceX64FromTick(d).lte(e)?d:p}},pt=class{static getTickWithPriceAndTickspacing(e,t,n,r){let s=W.getTickFromSqrtPriceX64(W.priceToSqrtPriceX64(e,n,r))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,r){let o=pt.getTickWithPriceAndTickspacing(e,t,n,r),s=W.getSqrtPriceX64FromTick(o);return W.sqrtPriceX64ToPrice(s,n,r)}},U=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(ue))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(Ct),s=t.sub(e);return r?v.mulDivRoundingUp(v.mulDivCeil(o,s,t),Ie,e):v.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(ue))throw new Error("sqrtPriceX64A must greater than 0");return r?v.mulDivCeil(n,t.sub(e),Se):v.mulDivFloor(n,t.sub(e),Se)}static getLiquidityFromTokenAmountA(e,t,n,r){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return r?v.mulDivRoundingUp(a,Ie,Tn):a.shrn(Ct)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),v.mulDivFloor(n,Tn,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return U.getLiquidityFromTokenAmountA(t,n,r,!1);if(e.lt(n)){let s=U.getLiquidityFromTokenAmountA(e,n,r,!1),a=U.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return U.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:U.getTokenAmountAFromLiquidity(t,n,r,o),amountB:new D(0)};if(e.lt(n)){let s=U.getTokenAmountAFromLiquidity(e,n,r,o),a=U.getTokenAmountBFromLiquidity(t,e,r,o);return{amountA:s,amountB:a}}else return{amountA:new D(0),amountB:U.getTokenAmountBFromLiquidity(t,n,r,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,r,o,s,a){let{amountA:u,amountB:c}=U.getAmountsFromLiquidity(e,t,n,r,s),l=o?1+a:1-a,m=new D(new N(u.toString()).mul(l).toFixed(0)),p=new D(new N(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:p}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:r,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var h,A,x,P;let c=W.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),l=W.getSqrtPriceX64FromTick(t),m=W.getSqrtPriceX64FromTick(n),p=s?1+o:1-o,d=U.getAmountsFromLiquidity(c,l,m,r,s),[b,f]=[le(d.amountA,(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,u),le(d.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)],[g,k]=[le(new D(new N(d.amountA.toString()).mul(p).toFixed(0)),(x=e.mintA.extensions)==null?void 0:x.feeConfig,a,u),le(new D(new N(d.amountB.toString()).mul(p).toFixed(0)),(P=e.mintB.extensions)==null?void 0:P.feeConfig,a,u)];return{liquidity:r,amountA:b,amountB:f,amountSlippageA:g,amountSlippageB:k,expirationTime:lt(b.expirationTime,f.expirationTime)}}},ft=class{static swapCompute(e,t,n,r,o,s,a,u,c,l,m,p,d,b){if(p.eq(ue))throw new Error("amountSpecified must not be 0");if(b||(b=s?Ye.add(Ie):Ze.sub(Ie)),s){if(b.lt(Ye))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(b.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(b.gt(Ze))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(b.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let f=p.gt(ue),g={amountSpecifiedRemaining:p,amountCalculated:ue,sqrtPriceX64:m,tick:c>d?Math.min(d+G.tickCount(l)-1,c):d,accounts:[],liquidity:u,feeAmount:new D(0)},k=d,h=n[d],A=0,x=!s&&h.startTickIndex===g.tick;for(;!g.amountSpecifiedRemaining.eq(ue)&&!g.sqrtPriceX64.eq(b);){if(A>10)throw Error("liquidity limit");let P={};P.sqrtPriceStartX64=g.sqrtPriceX64;let L=B.nextInitTick(h,g.tick,l,s,x),E=L||null,_=null;if(!(E!=null&&E.liquidityGross.gtn(0))){let X=he.nextInitializedTickArrayStartIndex({tickCurrent:g.tick,tickSpacing:l,tickArrayBitmap:r,exBitmapInfo:o},k,s);if(!X.isExist)throw Error("swapCompute LiquidityInsufficient");k=X.nextStartIndex;let{publicKey:Z}=Y(e,t,k);_=Z,h=n[k],E=B.firstInitializedTick(h,s)}P.tickNext=E.tick,P.initialized=E.liquidityGross.gtn(0),d!==k&&_&&(g.accounts.push(_),d=k),P.tickNext<Ae?P.tickNext=Ae:P.tickNext>Pe&&(P.tickNext=Pe),P.sqrtPriceNextX64=W.getSqrtPriceX64FromTick(P.tickNext);let $;if(s&&P.sqrtPriceNextX64.lt(b)||!s&&P.sqrtPriceNextX64.gt(b)?$=b:$=P.sqrtPriceNextX64,[g.sqrtPriceX64,P.amountIn,P.amountOut,P.feeAmount]=ft.swapStepCompute(g.sqrtPriceX64,$,g.liquidity,g.amountSpecifiedRemaining,a),g.feeAmount=g.feeAmount.add(P.feeAmount),f?(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.sub(P.amountIn.add(P.feeAmount)),g.amountCalculated=g.amountCalculated.sub(P.amountOut)):(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.add(P.amountOut),g.amountCalculated=g.amountCalculated.add(P.amountIn.add(P.feeAmount))),g.sqrtPriceX64.eq(P.sqrtPriceNextX64)){if(P.initialized){let X=E.liquidityNet;s&&(X=X.mul(Qe)),g.liquidity=U.addDelta(g.liquidity,X)}x=P.tickNext!=g.tick&&!s&&h.startTickIndex===P.tickNext,g.tick=s?P.tickNext-1:P.tickNext}else if(g.sqrtPriceX64!=P.sqrtPriceStartX64){let X=W.getTickFromSqrtPriceX64(g.sqrtPriceX64);x=X!=g.tick&&!s&&h.startTickIndex===X,g.tick=X}++A}try{let{nextStartIndex:P,isExist:L}=G.nextInitializedTickArray(g.tick,l,s,r,o);L&&d!==P&&(g.accounts.push(Y(e,t,P).publicKey),d=P)}catch{}return{amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts}}static swapStepCompute(e,t,n,r,o){let s={sqrtPriceX64Next:new D(0),amountIn:new D(0),amountOut:new D(0),feeAmount:new D(0)},a=e.gte(t),u=r.gte(ue);if(u){let l=v.mulDivFloor(r,zt.sub(new D(o.toString())),zt);s.amountIn=a?U.getTokenAmountAFromLiquidity(t,e,n,!0):U.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=W.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?U.getTokenAmountBFromLiquidity(t,e,n,!1):U.getTokenAmountAFromLiquidity(e,t,n,!1),r.mul(Qe).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=W.getNextSqrtPriceX64FromOutput(e,n,r.mul(Qe),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=U.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=U.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:U.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:U.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(r.mul(Qe))&&(s.amountOut=r.mul(Qe)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=r.sub(s.amountIn):s.feeAmount=v.mulDivCeil(s.amountIn,new D(o),zt.sub(new D(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};import{TOKEN_PROGRAM_ID as ge,TOKEN_2022_PROGRAM_ID as at,ASSOCIATED_TOKEN_PROGRAM_ID as Hi}from"@solana/spl-token";import{PublicKey as T,TransactionInstruction as Ve,SystemProgram as ht,Keypair as vn}from"@solana/web3.js";import zi from"bn.js";import{PublicKey as is,Keypair as rs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as os}from"@solana/spl-token";import Qd from"bn.js";var Jo=F([R("mint"),R("owner"),y("amount"),je("delegateOption"),R("delegate"),q("state"),je("isNativeOption"),y("isNative"),y("delegatedAmount"),je("closeAuthorityOption"),R("closeAuthority")]);function $o(i){return i instanceof Uint8Array||i!=null&&typeof i=="object"&&i.constructor.name==="Uint8Array"}function Mn(i,...e){if(!$o(i))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(i.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${i.length}`)}function En(i,e=!0){if(i.destroyed)throw new Error("Hash instance has been destroyed");if(e&&i.finished)throw new Error("Hash#digest() has already been called")}function Di(i,e){Mn(i);let t=e.outputLen;if(i.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var $t=i=>new DataView(i.buffer,i.byteOffset,i.byteLength),ve=(i,e)=>i<<32-e|i>>>e;var Od=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function es(i){if(typeof i!="string")throw new Error(`utf8ToBytes expected string, got ${typeof i}`);return new Uint8Array(new TextEncoder().encode(i))}function Fn(i){return typeof i=="string"&&(i=es(i)),Mn(i),i}var Jt=class{clone(){return this._cloneInto()}},Md={}.toString;function _i(i){let e=n=>i().update(Fn(n)).digest(),t=i();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>i(),e}function ts(i,e,t,n){if(typeof i.setBigUint64=="function")return i.setBigUint64(e,t,n);let r=BigInt(32),o=BigInt(4294967295),s=Number(t>>r&o),a=Number(t&o),u=n?4:0,c=n?0:4;i.setUint32(e+u,s,n),i.setUint32(e+c,a,n)}var qi=(i,e,t)=>i&e^~i&t,Gi=(i,e,t)=>i&e^i&t^e&t,en=class extends Jt{constructor(e,t,n,r){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=r,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=$t(this.buffer)}update(e){En(this);let{view:t,buffer:n,blockLen:r}=this;e=Fn(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(r-this.pos,o-s);if(a===r){let u=$t(e);for(;r<=o-s;s+=r)this.process(u,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===r&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){En(this),Di(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:r,isLE:o}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>r-s&&(this.process(n,0),s=0);for(let m=s;m<r;m++)t[m]=0;ts(n,r-8,BigInt(this.length*8),o),this.process(n,0);let a=$t(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:r,finished:o,destroyed:s,pos:a}=this;return e.length=r,e.pos=a,e.finished=o,e.destroyed=s,r%t&&e.buffer.set(n),e}};var ns=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]),ot=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),st=new Uint32Array(64),Wn=class extends en{constructor(){super(64,32,8,!1),this.A=ot[0]|0,this.B=ot[1]|0,this.C=ot[2]|0,this.D=ot[3]|0,this.E=ot[4]|0,this.F=ot[5]|0,this.G=ot[6]|0,this.H=ot[7]|0}get(){let{A:e,B:t,C:n,D:r,E:o,F:s,G:a,H:u}=this;return[e,t,n,r,o,s,a,u]}set(e,t,n,r,o,s,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=r|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)st[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let p=st[m-15],d=st[m-2],b=ve(p,7)^ve(p,18)^p>>>3,f=ve(d,17)^ve(d,19)^d>>>10;st[m]=f+st[m-7]+b+st[m-16]|0}let{A:n,B:r,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let p=ve(a,6)^ve(a,11)^ve(a,25),d=l+p+qi(a,u,c)+ns[m]+st[m]|0,f=(ve(n,2)^ve(n,13)^ve(n,22))+Gi(n,r,o)|0;l=c,c=u,u=a,a=s+d|0,s=o,o=r,r=n,n=d+f|0}n=n+this.A|0,r=r+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,r,o,s,a,u,c,l)}roundClean(){st.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Ui=_i(()=>new Wn);var Jd=se("Raydium_Util");function Xi({fromPublicKey:i,programId:e=os}){let t=rs.generate().publicKey.toBase58().slice(0,32);return{publicKey:ss(i,t,e),seed:t}}function ss(i,e,t){let n=Buffer.concat([i.toBuffer(),Buffer.from(e),t.toBuffer()]),r=Ui(n);return new is(r)}var Qi=se("Raydium_Clmm"),De={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]},Mt=class{static createPoolInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b){let f=F([M("sqrtPriceX64"),y("startTime")]),g=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:r,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:p,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:ht.programId,isSigner:!1,isWritable:!1},{pubkey:wt,isSigner:!1,isWritable:!1}],k=Buffer.alloc(f.span);f.encode({sqrtPriceX64:d,startTime:b},k);let h=Buffer.from([...De.createPool,...k]);return new Ve({keys:g,programId:e,data:h})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:r,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=Xi({fromPublicKey:r,programId:n}),[p,d]=[new T(o.address),new T(s.address)],b=[ht.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Ln.span),space:Ln.span,programId:n})],{publicKey:f}=Ki(n,a,p,d),{publicKey:g}=In(n,f,p),{publicKey:k}=In(n,f,d);return b.push(this.createPoolInstruction(n,f,r,a,m.publicKey,p,g,new T(o.programId||ge),d,k,new T(s.programId||ge),Ne(n,f).publicKey,u,c)),{signers:[],instructions:b,instructionTypes:[re.CreateAccount,re.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:g,mintBVault:k},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,g,k,h,A,x,P,L,E,_,$,X){let Z=F([ye("tickLowerIndex"),ye("tickUpperIndex"),ye("tickArrayLowerStartIndex"),ye("tickArrayUpperStartIndex"),M("liquidity"),y("amountMaxA"),y("amountMaxB"),Xe("withMetadata"),q("optionBaseFlag"),Xe("baseFlag")]),Oe=[...X?[{pubkey:X,isSigner:!1,isWritable:!0}]:[]],pe=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,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:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:wt,isSigner:!1,isWritable:!1},{pubkey:ht.programId,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:Hi,isSigner:!1,isWritable:!1},{pubkey:kt,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:k,isSigner:!1,isWritable:!1},...Oe],Te=Buffer.alloc(Z.span);Z.encode({tickLowerIndex:h,tickUpperIndex:A,tickArrayLowerStartIndex:x,tickArrayUpperStartIndex:P,liquidity:L,amountMaxA:E,amountMaxB:_,withMetadata:$==="create",baseFlag:!1,optionBaseFlag:0},Te);let ne=Buffer.from([...De.openPosition,...Te]);return new Ve({keys:pe,programId:e,data:ne})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[p,d]=[new T(e.programId),new T(e.id)],b;if(l)b=new T((await l(1))[0]);else{let _=vn.generate();m.push(_),b=_.publicKey}let f=B.getTickArrayStartIndexByTick(r,e.config.tickSpacing),g=B.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:k}=Y(p,d,f),{publicKey:h}=Y(p,d,g),{publicKey:A}=Ge(n.wallet,b,ge),{publicKey:x}=Yt(b),{publicKey:P}=We(p,b),{publicKey:L}=mt(p,d,r,o),E=this.openPositionFromLiquidityInstruction(p,n.feePayer,d,n.wallet,b,A,x,L,k,h,P,n.tokenAccountA,n.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),r,o,f,g,s,a,u,c);return{signers:m,instructions:[E],instructionTypes:[re.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:b,tickArrayLower:k,tickArrayUpper:h,positionNftAccount:A,metadataAccount:x,personalPosition:P,protocolPosition:L}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[p,d]=[new T(e.programId),new T(e.id)],b;if(l)b=new T((await l(1))[0]);else{let _=vn.generate();m.push(_),b=_.publicKey}let f=B.getTickArrayStartIndexByTick(r,e.config.tickSpacing),g=B.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:k}=Y(p,d,f),{publicKey:h}=Y(p,d,g),{publicKey:A}=Ge(n.wallet,b,ge),{publicKey:x}=Yt(b),{publicKey:P}=We(p,b),{publicKey:L}=mt(p,d,r,o),E=this.openPositionFromBaseInstruction(p,n.feePayer,d,n.wallet,b,A,x,L,k,h,P,n.tokenAccountA,n.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),r,o,f,g,c,s,a,u,he.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,g])?Ne(p,d).publicKey:void 0);return{address:{nftMint:b,tickArrayLower:k,tickArrayUpper:h,positionNftAccount:A,metadataAccount:x,personalPosition:P,protocolPosition:L},instructions:[E],signers:m,instructionTypes:[re.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,g,k,h,A,x,P,L,E,_,$,X){let Z=F([ye("tickLowerIndex"),ye("tickUpperIndex"),ye("tickArrayLowerStartIndex"),ye("tickArrayUpperStartIndex"),M("liquidity"),y("amountMaxA"),y("amountMaxB"),Xe("withMetadata"),q("optionBaseFlag"),Xe("baseFlag")]),Oe=[...X?[{pubkey:X,isSigner:!1,isWritable:!0}]:[]],pe=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,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:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:wt,isSigner:!1,isWritable:!1},{pubkey:ht.programId,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:Hi,isSigner:!1,isWritable:!1},{pubkey:kt,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:k,isSigner:!1,isWritable:!1},...Oe],Te=Buffer.alloc(Z.span);Z.encode({tickLowerIndex:h,tickUpperIndex:A,tickArrayLowerStartIndex:x,tickArrayUpperStartIndex:P,liquidity:new zi(0),amountMaxA:E==="MintA"?_:$,amountMaxB:E==="MintA"?$:_,withMetadata:L==="create",baseFlag:E==="MintA",optionBaseFlag:1},Te);let ne=Buffer.from([...De.openPosition,...Te]);return new Ve({keys:pe,programId:e,data:ne})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,p=[];if(l)m=new T((await l(1))[0]);else{let _=vn.generate();p.push(_),m=_.publicKey}let[d,b]=[new T(e.programId),new T(e.id)],f=B.getTickArrayStartIndexByTick(r,e.config.tickSpacing),g=B.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:k}=Y(d,b,f),{publicKey:h}=Y(d,b,g),{publicKey:A}=Ge(n.wallet,m,ge),{publicKey:x}=Yt(m),{publicKey:P}=We(d,m),{publicKey:L}=mt(d,b,r,o),E=this.openPositionFromLiquidityInstruction(d,n.wallet,b,n.wallet,m,A,x,L,k,h,P,n.tokenAccountA,n.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(t.mintA.address),new T(t.mintB.address),r,o,f,g,s,a,u,c,he.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,g])?Ne(d,b).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:k,tickArrayUpper:h,positionNftAccount:A,metadataAccount:x,personalPosition:P,protocolPosition:L},instructions:[E],signers:p,instructionTypes:[re.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,o){let s=F([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:ht.programId,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...De.closePosition,...u]);return new Ve({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:r}){let o=new T(e.programId),{publicKey:s}=Ge(n.wallet,r.nftMint,ge),{publicKey:a}=We(o,r.nftMint),u=[];return u.push(this.closePositionInstruction(o,n.wallet,r.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:u,instructionTypes:[re.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,g,k,h){let A=F([M("liquidity"),y("amountMaxA"),y("amountMaxB"),q("optionBaseFlag"),Xe("baseFlag")]),x=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],P=[{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:r,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:p,isSigner:!1,isWritable:!0},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...x],L=Buffer.alloc(A.span);A.encode({liquidity:f,amountMaxA:g,amountMaxB:k,optionBaseFlag:0,baseFlag:!1},L);let E=Buffer.from([...De.increaseLiquidity,...L]);return new Ve({keys:P,programId:e,data:E})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new T(e.programId),new T(e.id)],l=B.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=B.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=Y(u,c,l),{publicKey:d}=Y(u,c,m),{publicKey:b}=Ge(r.wallet,n.nftMint,ge),{publicKey:f}=We(u,n.nftMint),{publicKey:g}=mt(u,c,n.tickLower,n.tickUpper),k=this.increasePositionFromLiquidityInstruction(u,r.wallet,b,f,c,g,p,d,r.tokenAccountA,r.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),o,s,a,he.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Ne(u,c).publicKey:void 0);return{address:{tickArrayLower:p,tickArrayUpper:d,positionNftAccount:b,personalPosition:f,protocolPosition:g},signers:[],instructions:[k],instructionTypes:[re.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,base:o,baseAmount:s,otherAmountMax:a}){let[u,c]=[new T(e.programId),new T(e.id)],l=B.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=B.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=Y(u,c,l),{publicKey:d}=Y(u,c,m),{publicKey:b}=Ge(r.wallet,n.nftMint,ge),{publicKey:f}=We(u,n.nftMint),{publicKey:g}=mt(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:p,tickArrayUpper:d,positionNftAccount:b,personalPosition:f,protocolPosition:g},instructions:[this.increasePositionFromBaseInstruction(u,r.wallet,b,f,c,g,p,d,r.tokenAccountA,r.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),o,s,a,he.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Ne(u,c).publicKey:void 0)],signers:[],instructionTypes:[re.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,g,k,h){let A=F([M("liquidity"),y("amountMaxA"),y("amountMaxB"),q("optionBaseFlag"),Xe("baseFlag")]),x=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],P=[{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:r,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:p,isSigner:!1,isWritable:!0},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...x],L=Buffer.alloc(A.span);A.encode({liquidity:new zi(0),amountMaxA:f==="MintA"?g:k,amountMaxB:f==="MintA"?k:g,baseFlag:f==="MintA",optionBaseFlag:1},L);let E=Buffer.from([...De.increaseLiquidity,...L]);return new Ve({keys:P,programId:e,data:E})}static decreaseLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,g,k,h,A){let x=F([M("liquidity"),y("amountMinA"),y("amountMinB")]),P=[...A?[{pubkey:A,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()],L=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,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:ge,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:gt,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...P],E=Buffer.alloc(x.span);x.encode({liquidity:g,amountMinA:k,amountMinB:h},E);let _=Buffer.from([...De.decreaseLiquidity,...E]);return new Ve({keys:L,programId:e,data:_})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new T(e.programId),new T(e.id)],m=B.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),p=B.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=Y(c,l,m),{publicKey:b}=Y(c,l,p),{publicKey:f}=Ge(r.wallet,n.nftMint,u),{publicKey:g}=We(c,n.nftMint),{publicKey:k}=mt(c,l,n.tickLower,n.tickUpper),h=[];for(let x=0;x<e.rewardDefaultInfos.length;x++)h.push({poolRewardVault:new T(t.rewardInfos[x].vault),ownerRewardVault:r.rewardAccounts[x],rewardMint:new T(e.rewardDefaultInfos[x].mint.address)});let A=[];return A.push(this.decreaseLiquidityInstruction(c,r.wallet,f,g,l,k,d,b,r.tokenAccountA,r.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),h,o,s,a,he.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,p])?Ne(c,l).publicKey:void 0)),{address:{tickArrayLower:d,tickArrayUpper:b,positionNftAccount:f,personalPosition:g,protocolPosition:k},signers:[],instructions:A,instructionTypes:[re.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,g,k){let h=F([y("amount"),y("otherAmountThreshold"),M("sqrtPriceLimitX64"),Xe("isBaseInput")]),A=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[],...m.map(E=>({pubkey:E,isSigner:!1,isWritable:!0}))],x=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:r,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:p,isSigner:!1,isWritable:!0},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:gt,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...A],P=Buffer.alloc(h.span);h.encode({amount:d,otherAmountThreshold:b,sqrtPriceLimitX64:f,isBaseInput:g},P);let L=Buffer.from([...De.swap,...P]);return new Ve({keys:x,programId:e,data:L})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,inputMint:r,amountIn:o,amountOutMin:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new T(e.programId),new T(e.id)],[m,p]=[new T(t.vault.A),new T(t.vault.B)],[d,b]=[new T(e.mintA.address),new T(e.mintB.address)],f=e.mintA.address===r.toString(),g=[this.swapInstruction(c,n.wallet,l,new T(e.config.id),f?n.tokenAccountA:n.tokenAccountB,f?n.tokenAccountB:n.tokenAccountA,f?m:p,f?p:m,f?d:b,f?b:d,u,m,o,s,a,!0,Ne(c,l).publicKey)];return{signers:[],instructions:g,instructionTypes:[re.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,p){let d=F([y("openTime"),y("endTime"),M("emissionsPerSecondX64")]),b=[{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:r,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:ht.programId,isSigner:!1,isWritable:!1},{pubkey:wt,isSigner:!1,isWritable:!1}],f=Buffer.alloc(d.span);d.encode({openTime:ie(l),endTime:ie(m),emissionsPerSecondX64:p},f);let g=Buffer.from([...De.initReward,...f]);return new Ve({keys:b,programId:e,data:g})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new T(e.programId),new T(e.id)],a=Ni(o,s,r.mint).publicKey,u=Zt(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new T(e.config.id),n.tokenAccount,r.programId,r.mint,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[re.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,p){let d=F([q("rewardIndex"),M("emissionsPerSecondX64"),y("openTime"),y("endTime")]),b=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:at,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(d.span);d.encode({rewardIndex:c,emissionsPerSecondX64:p,openTime:ie(l),endTime:ie(m)},f);let g=Buffer.from([...De.setRewardEmissions,...f]);return new Ve({keys:b,programId:e,data:g})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new T(e.programId),new T(e.id)],a,u,c;for(let p=0;p<e.rewardDefaultInfos.length;p++)e.rewardDefaultInfos[p].mint.address===r.mint.toString()&&(a=p,u=new T(t.rewardInfos[p].vault),c=new T(t.rewardInfos[p].mint.address));(a===void 0||u===void 0)&&Qi.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Zt(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new T(e.config.id),n.tokenAccount,u,c,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[re.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,r,o,s,a){let u=F([q("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:gt,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...De.collectReward,...l]);return new Ve({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:r}){let[o,s]=[new T(e.programId),new T(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===r.toString()&&(a=l,u=new T(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&Qi.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,u,r,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[re.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:r,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new T(e.programId),new T(e.id)],[m,p]=[new T(t.vault.A),new T(t.vault.B)],[d,b]=[new T(e.mintA.address),new T(e.mintB.address)],f=e.mintA.address===r.toString(),g=[this.swapInstruction(c,n.wallet,l,new T(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?p:m,f?m:p,f?d:b,f?b:d,u,m,o,s,a,!1)];return{signers:[],instructions:g,instructionTypes:[re.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import Op from"bn.js";import{TOKEN_PROGRAM_ID as ps,ASSOCIATED_TOKEN_PROGRAM_ID as kf}from"@solana/spl-token";import{PublicKey as hf,TransactionInstruction as Zi,SystemProgram as fs,SYSVAR_RENT_PUBKEY as Pf}from"@solana/web3.js";var Vn=F([q("instruction"),y("amountIn"),y("minAmountOut")]),Dn=F([q("instruction"),y("maxAmountIn"),y("amountOut")]),uf=F([q("instruction"),q("nonce")]),as=F([q("instruction"),q("nonce"),y("startTime")]),cf=F([y("status"),y("nonce"),y("maxOrder"),y("depth"),y("baseDecimal"),y("quoteDecimal"),y("state"),y("resetFlag"),y("minSize"),y("volMaxCutRatio"),y("amountWaveRatio"),y("baseLotSize"),y("quoteLotSize"),y("minPriceMultiplier"),y("maxPriceMultiplier"),y("systemDecimalValue"),y("minSeparateNumerator"),y("minSeparateDenominator"),y("tradeFeeNumerator"),y("tradeFeeDenominator"),y("pnlNumerator"),y("pnlDenominator"),y("swapFeeNumerator"),y("swapFeeDenominator"),y("baseNeedTakePnl"),y("quoteNeedTakePnl"),y("quoteTotalPnl"),y("baseTotalPnl"),y("poolOpenTime"),y("punishPcAmount"),y("punishCoinAmount"),y("orderbookToInitTime"),M("swapBaseInAmount"),M("swapQuoteOutAmount"),y("swapBase2QuoteFee"),M("swapQuoteInAmount"),M("swapBaseOutAmount"),y("swapQuote2BaseFee"),R("baseVault"),R("quoteVault"),R("baseMint"),R("quoteMint"),R("lpMint"),R("openOrders"),R("marketId"),R("marketProgramId"),R("targetOrders"),R("withdrawQueue"),R("lpVault"),R("owner"),y("lpReserve"),J(y(),3,"padding")]),lf=F([y("accountType"),y("status"),y("nonce"),y("maxOrder"),y("depth"),y("baseDecimal"),y("quoteDecimal"),y("state"),y("resetFlag"),y("minSize"),y("volMaxCutRatio"),y("amountWaveRatio"),y("baseLotSize"),y("quoteLotSize"),y("minPriceMultiplier"),y("maxPriceMultiplier"),y("systemDecimalsValue"),y("abortTradeFactor"),y("priceTickMultiplier"),y("priceTick"),y("minSeparateNumerator"),y("minSeparateDenominator"),y("tradeFeeNumerator"),y("tradeFeeDenominator"),y("pnlNumerator"),y("pnlDenominator"),y("swapFeeNumerator"),y("swapFeeDenominator"),y("baseNeedTakePnl"),y("quoteNeedTakePnl"),y("quoteTotalPnl"),y("baseTotalPnl"),y("poolOpenTime"),y("punishPcAmount"),y("punishCoinAmount"),y("orderbookToInitTime"),M("swapBaseInAmount"),M("swapQuoteOutAmount"),M("swapQuoteInAmount"),M("swapBaseOutAmount"),y("swapQuote2BaseFee"),y("swapBase2QuoteFee"),R("baseVault"),R("quoteVault"),R("baseMint"),R("quoteMint"),R("lpMint"),R("modelDataAccount"),R("openOrders"),R("marketId"),R("marketProgramId"),R("targetOrders"),R("owner"),J(y(),64,"padding")]),us=F([q("instruction"),y("baseAmountIn"),y("quoteAmountIn"),y("fixedSide")]),cs=F([q("instruction"),y("amountIn")]);var mf=F([y("fee")]);import{PublicKey as ls}from"@solana/web3.js";var _n=new ls("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ms=5e4,ds=F([y("x"),y("y"),y("price")]),yf=F([y("accountType"),y("status"),y("multiplier"),y("validDataCount"),J(ds,ms,"DataElement")]);var Yi=se("Raydium_liquidity_instruction");function bs({poolKeys:i,userKeys:e,amountIn:t,minAmountOut:n},r){let o=ke(i),s=Buffer.alloc(Vn.span);Vn.encode({instruction:9,amountIn:ie(t),minAmountOut:ie(n)},s);let a=[V({pubkey:ps,isWritable:!1}),V({pubkey:o.id}),V({pubkey:o.authority,isWritable:!1}),V({pubkey:o.openOrders})];return r===4&&a.push(V({pubkey:o.targetOrders})),a.push(V({pubkey:o.vault.A}),V({pubkey:o.vault.B})),r===5&&a.push(V({pubkey:_n})),a.push(V({pubkey:o.marketProgramId,isWritable:!1}),V({pubkey:o.marketId}),V({pubkey:o.marketBids}),V({pubkey:o.marketAsks}),V({pubkey:o.marketEventQueue}),V({pubkey:o.marketBaseVault}),V({pubkey:o.marketQuoteVault}),V({pubkey:o.marketAuthority,isWritable:!1}),V({pubkey:e.tokenAccountIn}),V({pubkey:e.tokenAccountOut}),V({pubkey:e.owner,isWritable:!1})),new Zi({programId:o.programId,keys:a,data:s})}function ys({poolKeys:i,userKeys:e,maxAmountIn:t,amountOut:n},r){let o=ke(i),s=Buffer.alloc(Dn.span);Dn.encode({instruction:11,maxAmountIn:ie(t),amountOut:ie(n)},s);let a=[V({pubkey:fs.programId,isWritable:!1}),V({pubkey:o.id}),V({pubkey:o.authority,isWritable:!1}),V({pubkey:o.openOrders}),V({pubkey:o.targetOrders}),V({pubkey:o.vault.A}),V({pubkey:o.vault.B})];return r===5&&a.push(V({pubkey:_n})),a.push(V({pubkey:o.marketProgramId,isWritable:!1}),V({pubkey:o.marketId}),V({pubkey:o.marketBids}),V({pubkey:o.marketAsks}),V({pubkey:o.marketEventQueue}),V({pubkey:o.marketBaseVault}),V({pubkey:o.marketQuoteVault}),V({pubkey:o.marketAuthority,isWritable:!1}),V({pubkey:e.tokenAccountIn}),V({pubkey:e.tokenAccountOut}),V({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Zi({programId:o.programId,keys:a,data:s})}function ji(i){let{poolKeys:e,version:t,userKeys:n,amountIn:r,amountOut:o,fixedSide:s}=i;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return bs(ee(Q({},a),{amountIn:r,minAmountOut:o}),t);if(s==="out")return ys(ee(Q({},a),{maxAmountIn:r,amountOut:o}),t);Yi.logWithError("invalid params","params",i)}throw Yi.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function Df(i,e,t,n,r,o,s,a,u,c,l,m){let p=F([q("instruction"),y("amountIn"),y("amountOut")]),d=[{pubkey:$i.programId,isSigner:!1,isWritable:!1},{pubkey:Un,isSigner:!1,isWritable:!1},{pubkey:new Re(t.programId),isSigner:!1,isWritable:!1},{pubkey:new Re(t.id),isSigner:!1,isWritable:!0},{pubkey:new Re(n.id),isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let f=ke(t);d.push({pubkey:f.config.id,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.A:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.B:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},...m.map(g=>({pubkey:g,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let f=ke(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:new Re("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0})}else{let f=ke(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},...f.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:f.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:f.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0}])}let b=Buffer.alloc(p.span);return p.encode({instruction:4,amountIn:c,amountOut:l},b),new Xn({keys:d,programId:i,data:b})}function _f(i,e,t,n,r,o,s,a,u,c){let l=F([q("instruction")]),m=[{pubkey:$i.programId,isSigner:!1,isWritable:!1},{pubkey:Un,isSigner:!1,isWritable:!1},{pubkey:new Re(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new Re(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new Re(String(t.id)),isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let d=ke(n);m.push({pubkey:d.config.id,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.A:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.B:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},...c.map(b=>({pubkey:b,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let d=ke(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:new Re("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0})}else{let d=ke(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},...d.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:d.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:d.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0}])}let p=Buffer.alloc(l.span);return l.encode({instruction:5},p),new Xn({keys:m,programId:i,data:p})}function Ji(i,e,t,n,r,o){if(i.pooltype.includes("StablePool")){let s=ke(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:new Re("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]}else if(i.type==="Concentrated"){let s=i,a=ke(e),u=s.mintA.address===t;return[{pubkey:new Re(String(i.programId)),isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a.config.id,isSigner:!1,isWritable:!1},{pubkey:a.id,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.A:a.vault.B,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.B:a.vault.A,isSigner:!1,isWritable:!0},{pubkey:a.id,isSigner:!1,isWritable:!0},...a.mintA.programId.equals(qn)||a.mintB.programId.equals(qn)?[{pubkey:qn,isSigner:!1,isWritable:!1},{pubkey:gt,isSigner:!1,isWritable:!1},{pubkey:u?a.mintA.address:a.mintB.address,isSigner:!1,isWritable:!1},{pubkey:u?a.mintB.address:a.mintA.address,isSigner:!1,isWritable:!1}]:[],...(o!=null?o:[]).map(c=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:Ne(new Re(String(i.programId)),new Re(i.id)).publicKey,isSigner:!1,isWritable:!0}]}else{let s=ke(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},...s.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:s.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:s.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]]}}function gs(i,e,t,n,r,o,s,a,u,c,l,m,p,d){let b=F([q("instruction"),y("amountIn"),y("amountOut")]),f=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:Un,isSigner:!1,isWritable:!1}];f.push(...Ji(a,c,o,t,n,d[0])),f.push(...Ji(u,l,s,n,r,d[1]));let g=Buffer.alloc(b.span);return b.encode({instruction:8,amountIn:m,amountOut:p},g),new Xn({keys:f,programId:i,data:g})}async function qf({routeProgram:i,ownerInfo:e,inputMint:t,swapInfo:n}){var r,o,s,a,u,c;if(n.routeType==="amm")if(n.poolInfo[0].type==="Concentrated"){let l=ke(n.poolKey[0]),m=t.equals(l.mintA.address)?Ye.add(Ie):Ze.sub(Ie);return await Mt.makeSwapBaseInInstructions({poolInfo:l,poolKeys:l,ownerInfo:{wallet:e.wallet,tokenAccountA:l.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:l.mintA.address.equals(t)?e.destinationToken:e.sourceToken},inputMint:t,amountIn:n.amountIn.amount.raw,amountOutMin:n.minAmountOut.amount.raw.sub((o=(r=n.minAmountOut.fee)==null?void 0:r.raw)!=null?o:new Gn(0)),sqrtPriceLimitX64:m,remainingAccounts:n.remainingAccounts[0]})}else{let l=n.poolKey[0];return{signers:[],instructions:[ji({poolKeys:l,version:n.poolInfo[0].pooltype.includes("StablePool")?5:4,userKeys:{tokenAccountIn:e.sourceToken,tokenAccountOut:e.destinationToken,owner:e.wallet},amountIn:n.amountIn.amount.raw,amountOut:n.minAmountOut.amount.raw.sub((a=(s=n.minAmountOut.fee)==null?void 0:s.raw)!=null?a:new Gn(0)),fixedSide:"in"})],lookupTableAddress:l.lookupTableAccount?[l.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?re.AmmV5SwapBaseIn:re.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let l=n.poolInfo[0],m=n.poolInfo[1],p=n.poolKey[0],d=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[gs(i,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.minMiddleAmountFee.token.mint.toString(),l,m,p,d,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((c=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?c:new Gn(0)),n.remainingAccounts)],instructionTypes:[re.RouteSwap],lookupTableAddress:[p.lookupTableAccount,d.lookupTableAccount].filter(b=>b!==void 0),address:{}}}else throw Error("route type error")}export{qf as makeSwapInstruction,Df as route1Instruction,_f as route2Instruction,gs as routeInstruction};
1
+ var er=Object.defineProperty,tr=Object.defineProperties;var nr=Object.getOwnPropertyDescriptors;var Qn=Object.getOwnPropertySymbols;var ir=Object.prototype.hasOwnProperty,rr=Object.prototype.propertyIsEnumerable;var Yn=(i,e,t)=>e in i?er(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,Q=(i,e)=>{for(var t in e||(e={}))ir.call(e,t)&&Yn(i,t,e[t]);if(Qn)for(var t of Qn(e))rr.call(e,t)&&Yn(i,t,e[t]);return i},ee=(i,e)=>tr(i,nr(e));import{TOKEN_PROGRAM_ID as Xn,TOKEN_2022_PROGRAM_ID as Gn}from"@solana/spl-token";import{PublicKey as Re,TransactionInstruction as Hn,SystemProgram as $i}from"@solana/web3.js";import Un from"bn.js";import{PublicKey as wp}from"@solana/web3.js";var bt=9e15,nt=1e9,tn="0123456789abcdef",Ft="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Wt="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",nn={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-bt,maxE:bt,crypto:!1},$n,ze,O=!0,Vt="[DecimalError] ",tt=Vt+"Invalid argument: ",ei=Vt+"Precision limit exceeded",ti=Vt+"crypto unavailable",ni="[object Decimal]",we=Math.floor,ce=Math.pow,or=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,sr=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,ar=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,ii=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Ee=1e7,K=7,ur=9007199254740991,cr=Ft.length-1,rn=Wt.length-1,w={toStringTag:ni};w.absoluteValue=w.abs=function(){var i=new this.constructor(this);return i.s<0&&(i.s=1),I(i)};w.ceil=function(){return I(new this.constructor(this),this.e+1,2)};w.clampedTo=w.clamp=function(i,e){var t,n=this,r=n.constructor;if(i=new r(i),e=new r(e),!i.s||!e.s)return new r(NaN);if(i.gt(e))throw Error(tt+e);return t=n.cmp(i),t<0?i:n.cmp(e)>0?e:new r(n)};w.comparedTo=w.cmp=function(i){var e,t,n,r,o=this,s=o.d,a=(i=new o.constructor(i)).d,u=o.s,c=i.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!==i.e)return o.e>i.e^u<0?1:-1;for(n=s.length,r=a.length,e=0,t=n<r?n:r;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===r?0:n>r^u<0?1:-1};w.cosine=w.cos=function(){var i,e,t=this,n=t.constructor;return t.d?t.d[0]?(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+K,n.rounding=1,t=lr(n,ui(n,t)),n.precision=i,n.rounding=e,I(ze==2||ze==3?t.neg():t,i,e,!0)):new n(1):new n(NaN)};w.cubeRoot=w.cbrt=function(){var i,e,t,n,r,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(O=!1,o=l.s*ce(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=fe(l.d),i=l.e,(o=(i-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=ce(t,1/3),i=we((i+1)/3)-(i%3==(i<0?-1:2)),o==1/0?t="5e"+i:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+i),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(i=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=j(c.plus(l).times(a),c.plus(u),s+2,1),fe(a.d).slice(0,s)===(t=fe(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!r&&t=="4999"){if(!r&&(I(a,i+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,r=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(I(n,i+1,1),e=!n.times(n).times(n).eq(l));break}return O=!0,I(n,i,m.rounding,e)};w.decimalPlaces=w.dp=function(){var i,e=this.d,t=NaN;if(e){if(i=e.length-1,t=(i-we(this.e/K))*K,i=e[i],i)for(;i%10==0;i/=10)t--;t<0&&(t=0)}return t};w.dividedBy=w.div=function(i){return j(this,new this.constructor(i))};w.dividedToIntegerBy=w.divToInt=function(i){var e=this,t=e.constructor;return I(j(e,new t(i),0,1,1),t.precision,t.rounding)};w.equals=w.eq=function(i){return this.cmp(i)===0};w.floor=function(){return I(new this.constructor(this),this.e+1,3)};w.greaterThan=w.gt=function(i){return this.cmp(i)>0};w.greaterThanOrEqualTo=w.gte=function(i){var e=this.cmp(i);return e==1||e===0};w.hyperbolicCosine=w.cosh=function(){var i,e,t,n,r,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,r=o.d.length,r<32?(i=Math.ceil(r/3),e=(1/_t(4,i)).toString()):(i=16,e="2.3283064365386962890625e-10"),o=yt(s,1,o.times(e),new s(1),!0);for(var u,c=i,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return I(o,s.precision=t,s.rounding=n,!0)};w.hyperbolicSine=w.sinh=function(){var i,e,t,n,r=this,o=r.constructor;if(!r.isFinite()||r.isZero())return new o(r);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(r.e,r.sd())+4,o.rounding=1,n=r.d.length,n<3)r=yt(o,2,r,r,!0);else{i=1.4*Math.sqrt(n),i=i>16?16:i|0,r=r.times(1/_t(5,i)),r=yt(o,2,r,r,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);i--;)s=r.times(r),r=r.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,I(r,e,t,!0)};w.hyperbolicTangent=w.tanh=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+7,n.rounding=1,j(t.sinh(),t.cosh(),n.precision=i,n.rounding=e)):new n(t.s)};w.inverseCosine=w.acos=function(){var i,e=this,t=e.constructor,n=e.abs().cmp(1),r=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?Me(t,r,o):new t(0):new t(NaN):e.isZero()?Me(t,r+4,o).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),i=Me(t,r+4,o).times(.5),t.precision=r,t.rounding=o,i.minus(e))};w.inverseHyperbolicCosine=w.acosh=function(){var i,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(i=n.precision,e=n.rounding,n.precision=i+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,O=!1,t=t.times(t).minus(1).sqrt().plus(t),O=!0,n.precision=i,n.rounding=e,t.ln()):new n(t)};w.inverseHyperbolicSine=w.asinh=function(){var i,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,O=!1,t=t.times(t).plus(1).sqrt().plus(t),O=!0,n.precision=i,n.rounding=e,t.ln())};w.inverseHyperbolicTangent=w.atanh=function(){var i,e,t,n,r=this,o=r.constructor;return r.isFinite()?r.e>=0?new o(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(i=o.precision,e=o.rounding,n=r.sd(),Math.max(n,i)<2*-r.e-1?I(new o(r),i,e,!0):(o.precision=t=n-r.e,r=j(r.plus(1),new o(1).minus(r),t+i,1),o.precision=i+4,o.rounding=1,r=r.ln(),o.precision=i,o.rounding=e,r.times(.5))):new o(NaN)};w.inverseSine=w.asin=function(){var i,e,t,n,r=this,o=r.constructor;return r.isZero()?new o(r):(e=r.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(i=Me(o,t+4,n).times(.5),i.s=r.s,i):new o(NaN):(o.precision=t+6,o.rounding=1,r=r.div(new o(1).minus(r.times(r)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,r.times(2)))};w.inverseTangent=w.atan=function(){var i,e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=rn)return s=Me(l,m+4,p).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=rn)return s=Me(l,m+4,p).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/K+2|0),i=t;i;--i)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(O=!1,e=Math.ceil(a/K),n=1,u=c.times(c),s=new l(c),r=c;i!==-1;)if(r=r.times(u),o=s.minus(r.div(n+=2)),r=r.times(u),s=o.plus(r.div(n+=2)),s.d[e]!==void 0)for(i=e;s.d[i]===o.d[i]&&i--;);return t&&(s=s.times(2<<t-1)),O=!0,I(s,l.precision=m,l.rounding=p,!0)};w.isFinite=function(){return!!this.d};w.isInteger=w.isInt=function(){return!!this.d&&we(this.e/K)>this.d.length-2};w.isNaN=function(){return!this.s};w.isNegative=w.isNeg=function(){return this.s<0};w.isPositive=w.isPos=function(){return this.s>0};w.isZero=function(){return!!this.d&&this.d[0]===0};w.lessThan=w.lt=function(i){return this.cmp(i)<0};w.lessThanOrEqualTo=w.lte=function(i){return this.cmp(i)<1};w.logarithm=w.log=function(i){var e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding,d=5;if(i==null)i=new l(10),e=!0;else{if(i=new l(i),t=i.d,i.s<0||!t||!t[0]||i.eq(1))return new l(NaN);e=i.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(r=t[0];r%10===0;)r/=10;o=r!==1}if(O=!1,a=m+d,s=et(c,a),n=e?vt(l,a+10):et(i,a),u=j(s,n,a,1),Pt(u.d,r=m,p))do if(a+=10,s=et(c,a),n=e?vt(l,a+10):et(i,a),u=j(s,n,a,1),!o){+fe(u.d).slice(r+1,r+15)+1==1e14&&(u=I(u,m+1,0));break}while(Pt(u.d,r+=10,p));return O=!0,I(u,m,p)};w.minus=w.sub=function(i){var e,t,n,r,o,s,a,u,c,l,m,p,d=this,b=d.constructor;if(i=new b(i),!d.d||!i.d)return!d.s||!i.s?i=new b(NaN):d.d?i.s=-i.s:i=new b(i.d||d.s!==i.s?d:NaN),i;if(d.s!=i.s)return i.s=-i.s,d.plus(i);if(c=d.d,p=i.d,a=b.precision,u=b.rounding,!c[0]||!p[0]){if(p[0])i.s=-i.s;else if(c[0])i=new b(d);else return new b(u===3?-0:0);return O?I(i,a,u):i}if(t=we(i.e/K),l=we(d.e/K),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=p.length):(e=p,t=l,s=c.length),n=Math.max(Math.ceil(a/K),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=p.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=p[n]){m=c[n]<p[n];break}o=0}for(m&&(e=c,c=p,p=e,i.s=-i.s),s=c.length,n=p.length-s;n>0;--n)c[s++]=0;for(n=p.length;n>o;){if(c[--n]<p[n]){for(r=n;r&&c[--r]===0;)c[r]=Ee-1;--c[r],c[n]+=Ee}c[n]-=p[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(i.d=c,i.e=Dt(c,t),O?I(i,a,u):i):new b(u===3?-0:0)};w.modulo=w.mod=function(i){var e,t=this,n=t.constructor;return i=new n(i),!t.d||!i.s||i.d&&!i.d[0]?new n(NaN):!i.d||t.d&&!t.d[0]?I(new n(t),n.precision,n.rounding):(O=!1,n.modulo==9?(e=j(t,i.abs(),0,3,1),e.s*=i.s):e=j(t,i,0,n.modulo,1),e=e.times(i),O=!0,t.minus(e))};w.naturalExponential=w.exp=function(){return on(this)};w.naturalLogarithm=w.ln=function(){return et(this)};w.negated=w.neg=function(){var i=new this.constructor(this);return i.s=-i.s,I(i)};w.plus=w.add=function(i){var e,t,n,r,o,s,a,u,c,l,m=this,p=m.constructor;if(i=new p(i),!m.d||!i.d)return!m.s||!i.s?i=new p(NaN):m.d||(i=new p(i.d||m.s===i.s?m:NaN)),i;if(m.s!=i.s)return i.s=-i.s,m.minus(i);if(c=m.d,l=i.d,a=p.precision,u=p.rounding,!c[0]||!l[0])return l[0]||(i=new p(m)),O?I(i,a,u):i;if(o=we(m.e/K),n=we(i.e/K),c=c.slice(),r=o-n,r){for(r<0?(t=c,r=-r,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/K),s=o>s?o+1:s+1,r>s&&(r=s,t.length=1),t.reverse();r--;)t.push(0);t.reverse()}for(s=c.length,r=l.length,s-r<0&&(r=s,t=l,l=c,c=t),e=0;r;)e=(c[--r]=c[r]+l[r]+e)/Ee|0,c[r]%=Ee;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return i.d=c,i.e=Dt(c,n),O?I(i,a,u):i};w.precision=w.sd=function(i){var e,t=this;if(i!==void 0&&i!==!!i&&i!==1&&i!==0)throw Error(tt+i);return t.d?(e=ri(t.d),i&&t.e+1>e&&(e=t.e+1)):e=NaN,e};w.round=function(){var i=this,e=i.constructor;return I(new e(i),i.e+1,e.rounding)};w.sine=w.sin=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+K,n.rounding=1,t=dr(n,ui(n,t)),n.precision=i,n.rounding=e,I(ze>2?t.neg():t,i,e,!0)):new n(NaN)};w.squareRoot=w.sqrt=function(){var i,e,t,n,r,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(O=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=fe(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=we((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(j(s,o,t+2,1)).times(.5),fe(o.d).slice(0,t)===(e=fe(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(I(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(I(n,u+1,1),i=!n.times(n).eq(s));break}return O=!0,I(n,u,l.rounding,i)};w.tangent=w.tan=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+10,n.rounding=1,t=t.sin(),t.s=1,t=j(t,new n(1).minus(t.times(t)).sqrt(),i+10,0),n.precision=i,n.rounding=e,I(ze==2||ze==4?t.neg():t,i,e,!0)):new n(NaN)};w.times=w.mul=function(i){var e,t,n,r,o,s,a,u,c,l=this,m=l.constructor,p=l.d,d=(i=new m(i)).d;if(i.s*=l.s,!p||!p[0]||!d||!d[0])return new m(!i.s||p&&!p[0]&&!d||d&&!d[0]&&!p?NaN:!p||!d?i.s/0:i.s*0);for(t=we(l.e/K)+we(i.e/K),u=p.length,c=d.length,u<c&&(o=p,p=d,d=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,r=u+n;r>n;)a=o[r]+d[n]*p[r-n-1]+e,o[r--]=a%Ee|0,e=a/Ee|0;o[r]=(o[r]+e)%Ee|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),i.d=o,i.e=Dt(o,t),O?I(i,m.precision,m.rounding):i};w.toBinary=function(i,e){return an(this,2,i,e)};w.toDecimalPlaces=w.toDP=function(i,e){var t=this,n=t.constructor;return t=new n(t),i===void 0?t:(xe(i,0,nt),e===void 0?e=n.rounding:xe(e,0,8),I(t,i+t.e+1,e))};w.toExponential=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=_e(n,!0):(xe(i,0,nt),e===void 0?e=r.rounding:xe(e,0,8),n=I(new r(n),i+1,e),t=_e(n,!0,i+1)),n.isNeg()&&!n.isZero()?"-"+t:t};w.toFixed=function(i,e){var t,n,r=this,o=r.constructor;return i===void 0?t=_e(r):(xe(i,0,nt),e===void 0?e=o.rounding:xe(e,0,8),n=I(new o(r),i+r.e+1,e),t=_e(n,!1,i+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};w.toFraction=function(i){var e,t,n,r,o,s,a,u,c,l,m,p,d=this,b=d.d,f=d.constructor;if(!b)return new f(d);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=ri(b)-d.e-1,s=o%K,e.d[0]=ce(10,s<0?K+s:s),i==null)i=o>0?e:c;else{if(a=new f(i),!a.isInt()||a.lt(c))throw Error(tt+a);i=a.gt(e)?o>0?e:c:a}for(O=!1,a=new f(fe(b)),l=f.precision,f.precision=o=b.length*K*2;m=j(a,e,0,1,1),r=t.plus(m.times(n)),r.cmp(i)!=1;)t=n,n=r,r=c,c=u.plus(m.times(r)),u=r,r=e,e=a.minus(m.times(r)),a=r;return r=j(i.minus(t),n,0,1,1),u=u.plus(r.times(c)),t=t.plus(r.times(n)),u.s=c.s=d.s,p=j(c,n,o,1).minus(d).abs().cmp(j(u,t,o,1).minus(d).abs())<1?[c,n]:[u,t],f.precision=l,O=!0,p};w.toHexadecimal=w.toHex=function(i,e){return an(this,16,i,e)};w.toNearest=function(i,e){var t=this,n=t.constructor;if(t=new n(t),i==null){if(!t.d)return t;i=new n(1),e=n.rounding}else{if(i=new n(i),e===void 0?e=n.rounding:xe(e,0,8),!t.d)return i.s?t:i;if(!i.d)return i.s&&(i.s=t.s),i}return i.d[0]?(O=!1,t=j(t,i,0,e,1).times(i),O=!0,I(t)):(i.s=t.s,t=i),t};w.toNumber=function(){return+this};w.toOctal=function(i,e){return an(this,8,i,e)};w.toPower=w.pow=function(i){var e,t,n,r,o,s,a=this,u=a.constructor,c=+(i=new u(i));if(!a.d||!i.d||!a.d[0]||!i.d[0])return new u(ce(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,i.eq(1))return I(a,n,o);if(e=we(i.e/K),e>=i.d.length-1&&(t=c<0?-c:c)<=ur)return r=oi(u,a,t,n),i.s<0?new u(1).div(r):I(r,n,o);if(s=a.s,s<0){if(e<i.d.length-1)return new u(NaN);if((i.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=ce(+a,c),e=t==0||!isFinite(t)?we(c*(Math.log("0."+fe(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):(O=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),r=on(i.times(et(a,n+t)),n),r.d&&(r=I(r,n+5,1),Pt(r.d,n,o)&&(e=n+10,r=I(on(i.times(et(a,e+t)),e),e+5,1),+fe(r.d).slice(n+1,n+15)+1==1e14&&(r=I(r,n+1,0)))),r.s=s,O=!0,u.rounding=o,I(r,n,o))};w.toPrecision=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=_e(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(xe(i,1,nt),e===void 0?e=r.rounding:xe(e,0,8),n=I(new r(n),i,e),t=_e(n,i<=n.e||n.e<=r.toExpNeg,i)),n.isNeg()&&!n.isZero()?"-"+t:t};w.toSignificantDigits=w.toSD=function(i,e){var t=this,n=t.constructor;return i===void 0?(i=n.precision,e=n.rounding):(xe(i,1,nt),e===void 0?e=n.rounding:xe(e,0,8)),I(new n(t),i,e)};w.toString=function(){var i=this,e=i.constructor,t=_e(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()&&!i.isZero()?"-"+t:t};w.truncated=w.trunc=function(){return I(new this.constructor(this),this.e+1,1)};w.valueOf=w.toJSON=function(){var i=this,e=i.constructor,t=_e(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()?"-"+t:t};function fe(i){var e,t,n,r=i.length-1,o="",s=i[0];if(r>0){for(o+=s,e=1;e<r;e++)n=i[e]+"",t=K-n.length,t&&(o+=$e(t)),o+=n;s=i[e],n=s+"",t=K-n.length,t&&(o+=$e(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function xe(i,e,t){if(i!==~~i||i<e||i>t)throw Error(tt+i)}function Pt(i,e,t,n){var r,o,s,a;for(o=i[0];o>=10;o/=10)--e;return--e<0?(e+=K,r=0):(r=Math.ceil((e+1)/K),e%=K),o=ce(10,K-e),a=i[r]%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)&&(i[r+1]/o/100|0)==ce(10,e-2)-1||(a==o/2||a==0)&&(i[r+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)&&(i[r+1]/o/1e3|0)==ce(10,e-3)-1,s}function Et(i,e,t){for(var n,r=[0],o,s=0,a=i.length;s<a;){for(o=r.length;o--;)r[o]*=e;for(r[0]+=tn.indexOf(i.charAt(s++)),n=0;n<r.length;n++)r[n]>t-1&&(r[n+1]===void 0&&(r[n+1]=0),r[n+1]+=r[n]/t|0,r[n]%=t)}return r.reverse()}function lr(i,e){var t,n,r;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),r=(1/_t(4,t)).toString()):(t=16,r="2.3283064365386962890625e-10"),i.precision+=t,e=yt(i,1,e.times(r),new i(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return i.precision-=t,e}var j=function(){function i(n,r,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*r+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,r,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=r[a]){u=n[a]>r[a]?1:-1;break}return u}function t(n,r,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<r[o]?1:0,n[o]=a*s+n[o]-r[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,r,o,s,a,u){var c,l,m,p,d,b,f,g,k,h,A,x,P,L,E,_,$,X,Z,Oe,pe=n.constructor,Te=n.s==r.s?1:-1,ne=n.d,z=r.d;if(!ne||!ne[0]||!z||!z[0])return new pe(!n.s||!r.s||(ne?z&&ne[0]==z[0]:!z)?NaN:ne&&ne[0]==0||!z?Te*0:Te/0);for(u?(d=1,l=n.e-r.e):(u=Ee,d=K,l=we(n.e/d)-we(r.e/d)),Z=z.length,$=ne.length,k=new pe(Te),h=k.d=[],m=0;z[m]==(ne[m]||0);m++);if(z[m]>(ne[m]||0)&&l--,o==null?(L=o=pe.precision,s=pe.rounding):a?L=o+(n.e-r.e)+1:L=o,L<0)h.push(1),b=!0;else{if(L=L/d+2|0,m=0,Z==1){for(p=0,z=z[0],L++;(m<$||p)&&L--;m++)E=p*u+(ne[m]||0),h[m]=E/z|0,p=E%z|0;b=p||m<$}else{for(p=u/(z[0]+1)|0,p>1&&(z=i(z,p,u),ne=i(ne,p,u),Z=z.length,$=ne.length),_=Z,A=ne.slice(0,Z),x=A.length;x<Z;)A[x++]=0;Oe=z.slice(),Oe.unshift(0),X=z[0],z[1]>=u/2&&++X;do p=0,c=e(z,A,Z,x),c<0?(P=A[0],Z!=x&&(P=P*u+(A[1]||0)),p=P/X|0,p>1?(p>=u&&(p=u-1),f=i(z,p,u),g=f.length,x=A.length,c=e(f,A,g,x),c==1&&(p--,t(f,Z<g?Oe:z,g,u))):(p==0&&(c=p=1),f=z.slice()),g=f.length,g<x&&f.unshift(0),t(A,f,x,u),c==-1&&(x=A.length,c=e(z,A,Z,x),c<1&&(p++,t(A,Z<x?Oe:z,x,u))),x=A.length):c===0&&(p++,A=[0]),h[m++]=p,c&&A[0]?A[x++]=ne[_]||0:(A=[ne[_]],x=1);while((_++<$||A[0]!==void 0)&&L--);b=A[0]!==void 0}h[0]||h.shift()}if(d==1)k.e=l,$n=b;else{for(m=1,p=h[0];p>=10;p/=10)m++;k.e=m+l*d-1,I(k,a?o+k.e+1:o,s,b)}return k}}();function I(i,e,t,n){var r,o,s,a,u,c,l,m,p,d=i.constructor;e:if(e!=null){if(m=i.d,!m)return i;for(r=1,a=m[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=K,s=e,l=m[p=0],u=l/ce(10,r-s-1)%10|0;else if(p=Math.ceil((o+1)/K),a=m.length,p>=a)if(n){for(;a++<=p;)m.push(0);l=u=0,r=1,o%=K,s=o-K+1}else break e;else{for(l=a=m[p],r=1;a>=10;a/=10)r++;o%=K,s=o-K+r,u=s<0?0:l/ce(10,r-s-1)%10|0}if(n=n||e<0||m[p+1]!==void 0||(s<0?l:l%ce(10,r-s-1)),c=t<4?(u||n)&&(t==0||t==(i.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/ce(10,r-s):0:m[p-1])%10&1||t==(i.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=i.e+1,m[0]=ce(10,(K-e%K)%K),i.e=-e||0):m[0]=i.e=0,i;if(o==0?(m.length=p,a=1,p--):(m.length=p+1,a=ce(10,K-o),m[p]=s>0?(l/ce(10,r-s)%ce(10,s)|0)*a:0),c)for(;;)if(p==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&&(i.e++,m[0]==Ee&&(m[0]=1));break}else{if(m[p]+=a,m[p]!=Ee)break;m[p--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return O&&(i.e>d.maxE?(i.d=null,i.e=NaN):i.e<d.minE&&(i.e=0,i.d=[0])),i}function _e(i,e,t){if(!i.isFinite())return ai(i);var n,r=i.e,o=fe(i.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+$e(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(i.e<0?"e":"e+")+i.e):r<0?(o="0."+$e(-r-1)+o,t&&(n=t-s)>0&&(o+=$e(n))):r>=s?(o+=$e(r+1-s),t&&(n=t-r-1)>0&&(o=o+"."+$e(n))):((n=r+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(r+1===s&&(o+="."),o+=$e(n))),o}function Dt(i,e){var t=i[0];for(e*=K;t>=10;t/=10)e++;return e}function vt(i,e,t){if(e>cr)throw O=!0,t&&(i.precision=t),Error(ei);return I(new i(Ft),e,1,!0)}function Me(i,e,t){if(e>rn)throw Error(ei);return I(new i(Wt),e,t,!0)}function ri(i){var e=i.length-1,t=e*K+1;if(e=i[e],e){for(;e%10==0;e/=10)t--;for(e=i[0];e>=10;e/=10)t++}return t}function $e(i){for(var e="";i--;)e+="0";return e}function oi(i,e,t,n){var r,o=new i(1),s=Math.ceil(n/K+4);for(O=!1;;){if(t%2&&(o=o.times(e),jn(o.d,s)&&(r=!0)),t=we(t/2),t===0){t=o.d.length-1,r&&o.d[t]===0&&++o.d[t];break}e=e.times(e),jn(e.d,s)}return O=!0,o}function Zn(i){return i.d[i.d.length-1]&1}function si(i,e,t){for(var n,r=new i(e[0]),o=0;++o<e.length;)if(n=new i(e[o]),n.s)r[t](n)&&(r=n);else{r=n;break}return r}function on(i,e){var t,n,r,o,s,a,u,c=0,l=0,m=0,p=i.constructor,d=p.rounding,b=p.precision;if(!i.d||!i.d[0]||i.e>17)return new p(i.d?i.d[0]?i.s<0?0:1/0:1:i.s?i.s<0?0:i:0/0);for(e==null?(O=!1,u=b):u=e,a=new p(.03125);i.e>-2;)i=i.times(a),m+=5;for(n=Math.log(ce(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new p(1),p.precision=u;;){if(o=I(o.times(i),u,1),t=t.times(++l),a=s.plus(j(o,t,u,1)),fe(a.d).slice(0,u)===fe(s.d).slice(0,u)){for(r=m;r--;)s=I(s.times(s),u,1);if(e==null)if(c<3&&Pt(s.d,u-n,d,c))p.precision=u+=10,t=o=a=new p(1),l=0,c++;else return I(s,p.precision=b,d,O=!0);else return p.precision=b,s}s=a}}function et(i,e){var t,n,r,o,s,a,u,c,l,m,p,d=1,b=10,f=i,g=f.d,k=f.constructor,h=k.rounding,A=k.precision;if(f.s<0||!g||!g[0]||!f.e&&g[0]==1&&g.length==1)return new k(g&&!g[0]?-1/0:f.s!=1?NaN:g?0:f);if(e==null?(O=!1,l=A):l=e,k.precision=l+=b,t=fe(g),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(i),t=fe(f.d),n=t.charAt(0),d++;o=f.e,n>1?(f=new k("0."+t),o++):f=new k(n+"."+t.slice(1))}else return c=vt(k,l+2,A).times(o+""),f=et(new k(n+"."+t.slice(1)),l-b).plus(c),k.precision=A,e==null?I(f,A,h,O=!0):f;for(m=f,u=s=f=j(f.minus(1),f.plus(1),l,1),p=I(f.times(f),l,1),r=3;;){if(s=I(s.times(p),l,1),c=u.plus(j(s,new k(r),l,1)),fe(c.d).slice(0,l)===fe(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(vt(k,l+2,A).times(o+""))),u=j(u,new k(d),l,1),e==null)if(Pt(u.d,l-b,h,a))k.precision=l+=b,c=s=f=j(m.minus(1),m.plus(1),l,1),p=I(f.times(f),l,1),r=a=1;else return I(u,k.precision=A,h,O=!0);else return k.precision=A,u;u=c,r+=2}}function ai(i){return String(i.s*i.s/0)}function sn(i,e){var t,n,r;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(r=e.length;e.charCodeAt(r-1)===48;--r);if(e=e.slice(n,r),e){if(r-=n,i.e=t=t-n-1,i.d=[],n=(t+1)%K,t<0&&(n+=K),n<r){for(n&&i.d.push(+e.slice(0,n)),r-=K;n<r;)i.d.push(+e.slice(n,n+=K));e=e.slice(n),n=K-e.length}else n-=r;for(;n--;)e+="0";i.d.push(+e),O&&(i.e>i.constructor.maxE?(i.d=null,i.e=NaN):i.e<i.constructor.minE&&(i.e=0,i.d=[0]))}else i.e=0,i.d=[0];return i}function mr(i,e){var t,n,r,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),ii.test(e))return sn(i,e)}else if(e==="Infinity"||e==="NaN")return+e||(i.s=NaN),i.e=NaN,i.d=null,i;if(sr.test(e))t=16,e=e.toLowerCase();else if(or.test(e))t=2;else if(ar.test(e))t=8;else throw Error(tt+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=i.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,r=oi(n,new n(t),o,o*2)),c=Et(e,t,Ee),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(i.s*0):(i.e=Dt(c,l),i.d=c,O=!1,s&&(i=j(i,r,a*4)),u&&(i=i.times(Math.abs(u)<54?ce(2,u):Tt.pow(2,u))),O=!0,i)}function dr(i,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:yt(i,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/_t(5,t)),e=yt(i,2,e,e);for(var r,o=new i(5),s=new i(16),a=new i(20);t--;)r=e.times(e),e=e.times(o.plus(r.times(s.times(r).minus(a))));return e}function yt(i,e,t,n,r){var o,s,a,u,c=1,l=i.precision,m=Math.ceil(l/K);for(O=!1,u=t.times(t),a=new i(n);;){if(s=j(a.times(u),new i(e++*e++),l,1),a=r?n.plus(s):n.minus(s),n=j(s.times(u),new i(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 O=!0,s.d.length=m+1,s}function _t(i,e){for(var t=i;--e;)t*=i;return t}function ui(i,e){var t,n=e.s<0,r=Me(i,i.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return ze=n?4:1,e;if(t=e.divToInt(r),t.isZero())ze=n?3:2;else{if(e=e.minus(t.times(r)),e.lte(o))return ze=Zn(t)?n?2:3:n?4:1,e;ze=Zn(t)?n?1:4:n?3:2}return e.minus(r).abs()}function an(i,e,t,n){var r,o,s,a,u,c,l,m,p,d=i.constructor,b=t!==void 0;if(b?(xe(t,1,nt),n===void 0?n=d.rounding:xe(n,0,8)):(t=d.precision,n=d.rounding),!i.isFinite())l=ai(i);else{for(l=_e(i),s=l.indexOf("."),b?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(l=l.replace(".",""),p=new d(1),p.e=l.length-s,p.d=Et(_e(p),10,r),p.e=p.d.length),m=Et(l,10,r),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=b?"0p+0":"0";else{if(s<0?o--:(i=new d(i),i.d=m,i.e=o,i=j(i,p,t,n,0,r),m=i.d,o=i.e,c=$n),s=m[t],a=r/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(i.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(i.s<0?8:7)),m.length=t,c)for(;++m[--t]>r-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+=tn.charAt(m[s]);if(b){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)l+="0";for(m=Et(l,r,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=tn.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 i.s<0?"-"+l:l}function jn(i,e){if(i.length>e)return i.length=e,!0}function pr(i){return new this(i).abs()}function fr(i){return new this(i).acos()}function br(i){return new this(i).acosh()}function yr(i,e){return new this(i).plus(e)}function gr(i){return new this(i).asin()}function wr(i){return new this(i).asinh()}function kr(i){return new this(i).atan()}function Ar(i){return new this(i).atanh()}function hr(i,e){i=new this(i),e=new this(e);var t,n=this.precision,r=this.rounding,o=n+4;return!i.s||!e.s?t=new this(NaN):!i.d&&!e.d?(t=Me(this,o,1).times(e.s>0?.25:.75),t.s=i.s):!e.d||i.isZero()?(t=e.s<0?Me(this,n,r):new this(0),t.s=i.s):!i.d||e.isZero()?(t=Me(this,o,1).times(.5),t.s=i.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(j(i,e,o,1)),e=Me(this,o,1),this.precision=n,this.rounding=r,t=i.s<0?t.minus(e):t.plus(e)):t=this.atan(j(i,e,o,1)),t}function Pr(i){return new this(i).cbrt()}function Tr(i){return I(i=new this(i),i.e+1,2)}function xr(i,e,t){return new this(i).clamp(e,t)}function Br(i){if(!i||typeof i!="object")throw Error(Vt+"Object expected");var e,t,n,r=i.defaults===!0,o=["precision",1,nt,"rounding",0,8,"toExpNeg",-bt,0,"toExpPos",0,bt,"maxE",0,bt,"minE",-bt,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],r&&(this[t]=nn[t]),(n=i[t])!==void 0)if(we(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(tt+t+": "+n);if(t="crypto",r&&(this[t]=nn[t]),(n=i[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(ti);else this[t]=!1;else throw Error(tt+t+": "+n);return this}function Ir(i){return new this(i).cos()}function Sr(i){return new this(i).cosh()}function ci(i){var e,t,n;function r(o){var s,a,u,c=this;if(!(c instanceof r))return new r(o);if(c.constructor=r,Jn(o)){c.s=o.s,O?!o.d||o.e>r.maxE?(c.e=NaN,c.d=null):o.e<r.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++;O?s>r.maxE?(c.e=NaN,c.d=null):s<r.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 sn(c,o.toString())}else if(u!=="string")throw Error(tt+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),ii.test(o)?sn(c,o):mr(c,o)}if(r.prototype=w,r.ROUND_UP=0,r.ROUND_DOWN=1,r.ROUND_CEIL=2,r.ROUND_FLOOR=3,r.ROUND_HALF_UP=4,r.ROUND_HALF_DOWN=5,r.ROUND_HALF_EVEN=6,r.ROUND_HALF_CEIL=7,r.ROUND_HALF_FLOOR=8,r.EUCLID=9,r.config=r.set=Br,r.clone=ci,r.isDecimal=Jn,r.abs=pr,r.acos=fr,r.acosh=br,r.add=yr,r.asin=gr,r.asinh=wr,r.atan=kr,r.atanh=Ar,r.atan2=hr,r.cbrt=Pr,r.ceil=Tr,r.clamp=xr,r.cos=Ir,r.cosh=Sr,r.div=Cr,r.exp=Kr,r.floor=Nr,r.hypot=Lr,r.ln=Rr,r.log=Or,r.log10=Er,r.log2=Mr,r.max=Fr,r.min=Wr,r.mod=vr,r.mul=Vr,r.pow=Dr,r.random=_r,r.round=qr,r.sign=Gr,r.sin=Ur,r.sinh=Xr,r.sqrt=Hr,r.sub=zr,r.sum=Qr,r.tan=Yr,r.tanh=Zr,r.trunc=jr,i===void 0&&(i={}),i&&i.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)i.hasOwnProperty(t=n[e++])||(i[t]=this[t]);return r.config(i),r}function Cr(i,e){return new this(i).div(e)}function Kr(i){return new this(i).exp()}function Nr(i){return I(i=new this(i),i.e+1,3)}function Lr(){var i,e,t=new this(0);for(O=!1,i=0;i<arguments.length;)if(e=new this(arguments[i++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return O=!0,new this(1/0);t=e}return O=!0,t.sqrt()}function Jn(i){return i instanceof Tt||i&&i.toStringTag===ni||!1}function Rr(i){return new this(i).ln()}function Or(i,e){return new this(i).log(e)}function Mr(i){return new this(i).log(2)}function Er(i){return new this(i).log(10)}function Fr(){return si(this,arguments,"lt")}function Wr(){return si(this,arguments,"gt")}function vr(i,e){return new this(i).mod(e)}function Vr(i,e){return new this(i).mul(e)}function Dr(i,e){return new this(i).pow(e)}function _r(i){var e,t,n,r,o=0,s=new this(1),a=[];if(i===void 0?i=this.precision:xe(i,1,nt),n=Math.ceil(i/K),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)r=e[o],r>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=r%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)r=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),r>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(r%1e7),o+=4);o=n/4}else throw Error(ti);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],i%=K,n&&i&&(r=ce(10,K-i),a[o]=(n/r|0)*r);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=K)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<K&&(t-=K-n)}return s.e=t,s.d=a,s}function qr(i){return I(i=new this(i),i.e+1,this.rounding)}function Gr(i){return i=new this(i),i.d?i.d[0]?i.s:0*i.s:i.s||NaN}function Ur(i){return new this(i).sin()}function Xr(i){return new this(i).sinh()}function Hr(i){return new this(i).sqrt()}function zr(i,e){return new this(i).sub(e)}function Qr(){var i=0,e=arguments,t=new this(e[i]);for(O=!1;t.s&&++i<e.length;)t=t.plus(e[i]);return O=!0,I(t,this.precision,this.rounding)}function Yr(i){return new this(i).tan()}function Zr(i){return new this(i).tanh()}function jr(i){return I(i=new this(i),i.e+1,1)}w[Symbol.for("nodejs.util.inspect.custom")]=w.toString;w[Symbol.toStringTag]="Decimal";var Tt=w.constructor=ci(nn);Ft=new Tt(Ft);Wt=new Tt(Wt);var N=Tt;import{get as li,set as Jr}from"lodash";import di from"dayjs";import $r from"dayjs/plugin/utc";di.extend($r);var un=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 di().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}},mi={},eo={};function se(i){let e=li(mi,i);if(!e){let t=li(eo,i);e=new un({name:i,logLevel:t}),Jr(mi,i,e)}return e}import{PublicKey as wo}from"@solana/web3.js";import ko from"bn.js";import bo from"big.js";import Xt from"bn.js";import Be from"bn.js";import{PublicKey as pn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as to}from"@solana/spl-token";import{PublicKey as te,SystemProgram as pi,SYSVAR_RENT_PUBKEY as no}from"@solana/web3.js";function V({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var Ss=[V({pubkey:to,isWritable:!1}),V({pubkey:pi.programId,isWritable:!1}),V({pubkey:no,isWritable:!1})];function ln({publicKey:i,transformSol:e}){let t=mn(i.toString());if(t instanceof te)return e&&t.equals(xt)?cn:t;if(e&&t.toString()===xt.toBase58())return cn;if(typeof t=="string"){if(t===te.default.toBase58())return te.default;try{return new te(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function mn(i){try{return new te(i)}catch{return i}}var gt=new te("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Cs=new te("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),wt=new te("SysvarRent111111111111111111111111111111111"),Ks=new te("SysvarC1ock11111111111111111111111111111111"),kt=new te("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Ns=new te("Sysvar1nstructions1111111111111111111111111"),Ls=pi.programId,Rs=new te("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Os=new te("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Ms=new te("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Es=new te("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Fs=new te("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Ws=new te("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),vs=new te("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Vs=new te("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Ds=new te("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),_s=new te("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),qs=new te("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),cn=new te("So11111111111111111111111111111111111111112"),xt=te.default;function dn(i){return ln({publicKey:i,transformSol:!0})}import{PublicKey as io}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as fi}from"@solana/spl-token";var bi={chainId:101,address:io.default.toBase58(),programId:fi.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:fi.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 fn=class{constructor({mint:e,decimals:t,symbol:n,name:r,skipMint:o=!1,isToken2022:s=!1}){if(e===xt.toBase58()||e instanceof pn&&xt.equals(e)){this.decimals=ut.decimals,this.symbol=ut.symbol,this.name=ut.name,this.mint=new pn(ut.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=r||e.toString().substring(0,6),this.mint=o?pn.default:ln({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},qe=fn;qe.WSOL=new fn(ee(Q({},ut),{mint:ut.address}));import Gt from"big.js";import so from"bn.js";import ao from"decimal.js-light";import ro from"toformat";var oo=ro,Bt=oo;var qt=se("module/fraction"),bn=Bt(Gt),It=Bt(ao),uo={[0]:It.ROUND_DOWN,[1]:It.ROUND_HALF_UP,[2]:It.ROUND_UP},co={[0]:Gt.roundDown,[1]:Gt.roundHalfUp,[2]:Gt.roundUp},H=class{constructor(e,t=new so(1)){this.numerator=ie(e),this.denominator=ie(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new H(this.denominator,this.numerator)}add(e){let t=e instanceof H?e:new H(ie(e));return this.denominator.eq(t.denominator)?new H(this.numerator.add(t.numerator),this.denominator):new H(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof H?e:new H(ie(e));return this.denominator.eq(t.denominator)?new H(this.numerator.sub(t.numerator),this.denominator):new H(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof H?e:new H(ie(e));return new H(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof H?e:new H(ie(e));return new H(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||qt.logWithError(`${e} is not an integer.`),e<=0&&qt.logWithError(`${e} is not positive.`),It.set({precision:e+1,rounding:uo[n]});let r=new It(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return r.toFormat(r.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||qt.logWithError(`${e} is not an integer.`),e<0&&qt.logWithError(`${e} is negative.`),bn.DP=e,bn.RM=co[n]||1,new bn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var mo=se("Raydium_price"),Ce=class extends H{constructor(t){let{baseToken:n,quoteToken:r,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=r,this.scalar=new H(yn(n.decimals),yn(r.decimals))}get raw(){return new H(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Ce({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&mo.logWithError("mul token not equals");let n=super.mul(t);return new Ce({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,r){return this.adjusted.toSignificant(t,n,r)}toFixed(t=this.quoteToken.decimals,n,r){return this.adjusted.toFixed(t,n,r)}};var gn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Ut=gn;Ut.SOL=new gn(bi);import po from"bn.js";var yi=new H(new po(100)),it=class extends H{toSignificant(e=5,t,n){return this.mul(yi).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(yi).toFixed(e,t,n)}};var gi=new Be(0),fo=new Be(1),va=new Be(2),Va=new Be(3),Da=new Be(5),wn=new Be(10),_a=new Be(100),qa=new Be(1e3),Ga=new Be(1e4),wi=9007199254740991;function ie(i){let e=se("Raydium_parseBigNumberish");if(i instanceof Be)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new Be(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=wi||i<=-wi)&&e.logWithError(`BigNumberish number overflow: ${i}`),new Be(String(i))):typeof i=="bigint"?new Be(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new Be(0))}function yn(i){return wn.pow(ie(i))}var yo=se("Raydium_amount"),Ai=Bt(bo);function go(i,e){let t="0",n="0";if(i.includes(".")){let r=i.split(".");r.length===2?([t,n]=r,n=n.padEnd(e,"0")):yo.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,n.slice(0,e)||n]}var be=class extends H{constructor(t,n,r=!0,o){let s=new Xt(0),a=wn.pow(new Xt(t.decimals));if(r)s=ie(n);else{let u=new Xt(0),c=new Xt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=go(n.toString(),t.decimals);u=ie(l),c=ie(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=se(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 be(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new be(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,r=0){return super.toSignificant(t,n,r)}toFixed(t=this.token.decimals,n,r=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,r)}toExact(t={groupSeparator:""}){return Ai.DP=this.token.decimals,new Ai(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};function ki(i){return typeof i=="object"&&i!==null&&![qe,be,wo,H,ko,Ce,it].some(e=>typeof e=="object"&&i instanceof e)}function ke(i){return typeof i=="string"?mn(i):Array.isArray(i)?i.map(e=>ke(e)):ki(i)?Object.fromEntries(Object.entries(i).map(([e,t])=>[e,ke(t)])):i}import{PublicKey as tc,sendAndConfirmTransaction as nc,Transaction as rc,TransactionMessage as sc,VersionedTransaction as ac}from"@solana/web3.js";import cc from"axios";var re={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"};import{PublicKey as Ao,ComputeBudgetProgram as wu,Transaction as Au,TransactionMessage as Pu,Keypair as Tu,VersionedTransaction as Bu}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Su}from"@solana/spl-token";var Nu=se("Raydium_txUtil");function Ke(i,e){let[t,n]=Ao.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}import{PublicKey as Po,AddressLookupTableAccount as hi}from"@solana/web3.js";import{PublicKey as ho}from"@solana/web3.js";import{getTransferFeeConfig as Wu,unpackMint as vu}from"@solana/spl-token";var kn=se("Raydium_accountInfo_util");async function ct(i,e,t){let{batchRequest:n,commitment:r="confirmed"}=Q({batchRequest:!1},t),o=An(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let m=i._buildArgs([l.map(p=>p.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=An(a,10);s=(await(await Promise.all(u.map(async l=>await i._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&kn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.error.message}`),l.result.value.map(m=>{if(m){let{data:p,executable:d,lamports:b,owner:f,rentEpoch:g}=m;return p.length!==2&&p[1]!=="base64"&&kn.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:d,lamports:b,owner:new ho(f),rentEpoch:g}}return null})))}else try{s=await Promise.all(o.map(a=>i.getMultipleAccountsInfo(a,r)))}catch(a){a instanceof Error&&kn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function hn(i,e,t){let n=await ct(i,e.map(r=>r.pubkey),t);return e.map((r,o)=>ee(Q({},r),{accountInfo:n[o]}))}var To={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new hi({key:new Po("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:hi.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"))})};function An(i,e=1,t=[]){let n=[...i];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}import{PublicKey as ae}from"@solana/web3.js";var kc=new ae("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Ac=new ae("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),hc=new ae("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Pc=new ae("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Tc=new ae("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),xc=new ae("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Bc=new ae("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Ic=new ae("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Sc=new ae("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Cc=new ae("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Kc=new ae("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Nc=new ae("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Lc=new ae("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Rc=new ae("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Oc=new ae("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Mc=new ae("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Ec=new ae("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Fc=new ae("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Wc=new ae("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),vc=new ae("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");import{PublicKey as Bo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Io}from"@solana/spl-token";function Ge(i,e,t){return Ke([i.toBuffer(),(t!=null?t:Io).toBuffer(),e.toBuffer()],new Bo("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import Fe from"bn.js";var St=1e4;function le(i,e,t,n){if(e===void 0)return{amount:i,fee:void 0,expirationTime:void 0};let r=ee(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<r.newerTransferFee.epoch?r.olderTransferFee:r.newerTransferFee,s=new Fe(o.maximumFee.toString()),a=t.epoch<r.newerTransferFee.epoch?(Number(r.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===St){let u=new Fe(o.maximumFee.toString());return{amount:i.add(u),fee:u,expirationTime:a}}else{let u=Pn(i.mul(new Fe(St)),new Fe(St-o.transferFeeBasisPoints)),c=new Fe(o.maximumFee.toString()),l=u.sub(i).gt(c)?i.add(c):u,m=Pn(l.mul(new Fe(o.transferFeeBasisPoints)),new Fe(St)),p=m.gt(s)?s:m;return{amount:l,fee:p,expirationTime:a}}else{let u=Pn(i.mul(new Fe(o.transferFeeBasisPoints)),new Fe(St)),c=u.gt(s)?s:u;return{amount:i,fee:c,expirationTime:a}}}function lt(i,e){return i===void 0?e:e===void 0?i:Math.min(i,e)}function Pn(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new Fe(0))?t.add(new Fe(1)):t}import Ue from"bn.js";var ue=new Ue(0),Ie=new Ue(1),Qe=new Ue(-1),Se=new Ue(1).shln(64),Ht=new Ue(1).shln(128),Tn=Se.sub(Ie),Ct=64,Pi=Ht.subn(1),Ae=-443636,Pe=-Ae,Ye=new Ue("4295048016"),Ze=new Ue("79226673521066979257578248091"),Ti=16,xi="59543866431248",Bi="184467440737095516",Ii="15793534762490258745",zt=new Ue(10).pow(new Ue(6));var bl=new Ue("18446744073700000000");import D from"bn.js";function Qt(i){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,i,!1),new Uint8Array(e)}function xn(i,e){let t=0;for(let n=i-1;n>=0&&!e.testn(n);n--)t++;return t}function Bn(i,e){let t=0;for(let n=0;n<i&&!e.testn(n);n++)t++;return t}function Kt(i,e){for(let t=0;t<i;t++)if(e.testn(t))return!1;return!0}function Si(i,e){return Kt(i,e)?null:xn(i,e)}function Ci(i,e){return Kt(i,e)?null:Bn(i,e)}var hl=Buffer.from("amm_config","utf8"),So=Buffer.from("pool","utf8"),Co=Buffer.from("pool_vault","utf8"),Ko=Buffer.from("pool_reward_vault","utf8"),Ki=Buffer.from("position","utf8"),No=Buffer.from("tick_array","utf8"),Lo=Buffer.from("operation","utf8"),Ro=Buffer.from("pool_tick_array_bitmap_extension","utf8");function Ni(i,e,t,n){return Ke([So,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function In(i,e,t){return Ke([Co,e.toBuffer(),t.toBuffer()],i)}function Li(i,e,t){return Ke([Ko,e.toBuffer(),t.toBuffer()],i)}function Y(i,e,t){return Ke([No,e.toBuffer(),Qt(t)],i)}function mt(i,e,t,n){return Ke([Ki,e.toBuffer(),Qt(t),Qt(n)],i)}function We(i,e){return Ke([Ki,e.toBuffer()],i)}function Yt(i){return Ke([Buffer.from("metadata","utf8"),kt.toBuffer(),i.toBuffer()],kt)}function Zt(i){return Ke([Lo],i)}function Ne(i,e){return Ke([Ro,e.toBuffer()],i)}import{PublicKey as rt}from"@solana/web3.js";import oe from"bn.js";import Zo from"bn.js";import{PublicKey as _o}from"@solana/web3.js";import Ei,{isBN as Fi}from"bn.js";import{bits as xl,BitStructure as Bl,blob as Oo,Blob as Il,cstr as Sl,f32 as Cl,f32be as Kl,f64 as Nl,f64be as Ll,greedy as Rl,Layout as Mo,ns64 as Ol,ns64be as Ml,nu64 as El,nu64be as Fl,offset as Wl,s16 as vl,s16be as Vl,s24 as Dl,s24be as _l,s32 as Eo,s32be as ql,s40 as Gl,s40be as Ul,s48 as Xl,s48be as Hl,s8 as zl,seq as Fo,struct as Ql,Structure as Wo,u16 as vo,u16be as Yl,u24 as Zl,u24be as jl,u32 as Jl,u32be as $l,u40 as em,u40be as tm,u48 as nm,u48be as im,u8 as Vo,UInt as Do,union as rm,Union as om,unionLayoutDiscriminator as sm,utf8 as am}from"@solana/buffer-layout";var Sn=Mo,Ri=Wo;var Cn=Do;var Oi=Vo,At=vo;var ye=Eo;var Mi=Fo;var Le=Oo;var Nt=class extends Sn{constructor(t,n,r){super(t,r);this.blob=Le(t),this.signed=n}decode(t,n=0){let r=new Ei(this.blob.decode(t,n),10,"le");return this.signed?r.fromTwos(this.span*8).clone():r}encode(t,n,r=0){return typeof t=="number"&&(t=new Ei(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,r)}};function q(i){return new Cn(1,i)}function je(i){return new Cn(4,i)}function y(i){return new Nt(8,!1,i)}function M(i){return new Nt(16,!1,i)}function Wi(i){return new Nt(16,!0,i)}var jt=class extends Sn{constructor(t,n,r,o){super(t.span,o);this.layout=t,this.decoder=n,this.encoder=r}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,r){return this.layout.encode(this.encoder(t),n,r)}getSpan(t,n){return this.layout.getSpan(t,n)}};function R(i){return new jt(Le(32),e=>new _o(e),e=>e.toBuffer(),i)}function Xe(i){return new jt(Oi(),qo,Go,i)}function qo(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function Go(i){return i?1:0}var Kn=class extends Ri{decode(e,t){return super.decode(e,t)}};function F(i,e,t){return new Kn(i,e,t)}function J(i,e,t){let n,r=typeof e=="number"?e:Fi(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=Fi(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 Mi(i,r,t)}var Nn=14,Je=class{static maxTickInTickarrayBitmap(e){return e*me*dt}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(r+=1);let o=n*r;return e<0?{minValue:-o,maxValue:-o+n}:{minValue:o,maxValue:o+n}}static nextInitializedTickArrayStartIndex(e,t,n,r){if(!G.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=r?t-G.tickCount(n):t+G.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*me,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(r){let l=e.shln(1024-c-1),m=Si(1024,l);if(m!==null){let p=(c-m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=Ci(1024,l);if(m!==null){let p=(c+m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:o-G.tickCount(n)}}}},Lt=class{static getBitmapOffset(e,t){if(!G.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=Je.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&r--,r}static getBitmap(e,t,n){let r=this.getBitmapOffset(e,t);return e<0?{offset:r,tickarrayBitmap:n.negativeTickArrayBitmap[r]}:{offset:r,tickarrayBitmap:n.positiveTickArrayBitmap[r]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:r}=this.extensionTickBoundary(t);if(e>=r&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=Je.maxTickInTickarrayBitmap(e),n=-t;if(Pe<=t)throw Error(`extensionTickBoundary check error: ${Pe}, ${t}`);if(n<=Ae)throw Error(`extensionTickBoundary check error: ${n}, ${Ae}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:r}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:B.mergeTickArrayBitmap(r).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,r){let o=G.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,r);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,r){let{minValue:o,maxValue:s}=Je.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(r){let u=B.mergeTickArrayBitmap(e).shln(dt-1-a),c=Kt(512,u)?null:xn(512,u);if(c!==null){let l=t-c*G.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=B.mergeTickArrayBitmap(e).shrn(a),c=Kt(512,u)?null:Bn(512,u);if(c!==null){let l=t+c*G.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-G.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%Je.maxTickInTickarrayBitmap(t),r=Math.floor(n/G.tickCount(t));return e<0&&n!=0&&(r=dt-r),r}};var Cm=F([Le(8),q("bump"),At("index"),R(""),je("protocolFeeRate"),je("tradeFeeRate"),At("tickSpacing"),J(y(),8,"")]),Uo=F([je("blockTimestamp"),M("sqrtPriceX64"),M("cumulativeTimePriceX64"),J(M(),1,"")]),Ln=F([Le(8),Xe("initialized"),R("poolId"),J(Uo,1e3,"observations"),J(M(),5,"")]),Xo=F([q("rewardState"),y("openTime"),y("endTime"),y("lastUpdateTime"),M("emissionsPerSecondX64"),y("rewardTotalEmissioned"),y("rewardClaimed"),R("tokenMint"),R("tokenVault"),R("creator"),M("rewardGrowthGlobalX64")]),Rn=F([Le(8),q("bump"),R("ammConfig"),R("creator"),R("mintA"),R("mintB"),R("vaultA"),R("vaultB"),R("observationId"),q("mintDecimalsA"),q("mintDecimalsB"),At("tickSpacing"),M("liquidity"),M("sqrtPriceX64"),ye("tickCurrent"),At("observationIndex"),At("observationUpdateDuration"),M("feeGrowthGlobalX64A"),M("feeGrowthGlobalX64B"),y("protocolFeesTokenA"),y("protocolFeesTokenB"),M("swapInAmountTokenA"),M("swapOutAmountTokenB"),M("swapInAmountTokenB"),M("swapOutAmountTokenA"),q("status"),J(q(),7,""),J(Xo,3,"rewardInfos"),J(y(),16,"tickArrayBitmap"),y("totalFeesTokenA"),y("totalFeesClaimedTokenA"),y("totalFeesTokenB"),y("totalFeesClaimedTokenB"),y("fundFeesTokenA"),y("fundFeesTokenB"),y("startTime"),J(y(),15*4-3,"padding")]),Ho=F([M("growthInsideLastX64"),y("rewardAmountOwed")]),On=F([Le(8),q("bump"),R("nftMint"),R("poolId"),ye("tickLower"),ye("tickUpper"),M("liquidity"),M("feeGrowthInsideLastX64A"),M("feeGrowthInsideLastX64B"),y("tokenFeesOwedA"),y("tokenFeesOwedB"),J(Ho,3,"rewardInfos"),J(y(),8,"")]),Km=F([Le(8),q("bump"),R("poolId"),ye("tickLowerIndex"),ye("tickUpperIndex"),M("liquidity"),M("feeGrowthInsideLastX64A"),M("feeGrowthInsideLastX64B"),y("tokenFeesOwedA"),y("tokenFeesOwedB"),J(M(),3,"rewardGrowthInside"),J(y(),8,"")]),zo=F([ye("tick"),Wi("liquidityNet"),M("liquidityGross"),M("feeGrowthOutsideX64A"),M("feeGrowthOutsideX64B"),J(M(),3,"rewardGrowthsOutsideX64"),J(je(),13,"")]),Rt=F([Le(8),R("poolId"),ye("startTickIndex"),J(zo,me,"ticks"),q("initializedTickCount"),J(q(),115,"")]),Qo=F([Le(329),J(R(),100,"whitelistMints")]),vi=F([Le(8),R("poolId"),J(J(y(),8),Nn,"positiveTickArrayBitmap"),J(J(y(),8),Nn,"negativeTickArrayBitmap")]);var Yo=15,G=class{static async getTickArrays(e,t,n,r,o,s,a){let u=[],c=B.getTickArrayStartIndexByTick(r,o),l=B.getInitializedTickArrayInRange(s,a,o,c,Math.floor(Yo/2));for(let d=0;d<l.length;d++){let{publicKey:b}=Y(t,n,l[d]);u.push(b)}let m=(await ct(e,u)).map(d=>d!==null?Rt.decode(d.data):null),p={};for(let d=0;d<u.length;d++){let b=m[d];b!==null&&(p[b.startTickIndex]=ee(Q({},b),{address:u[d]}))}return p}static nextInitializedTick(e,t,n,r,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,r,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=B.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:p,tickArrayStartTickIndex:d}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,p,d]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,r,o){let s=Math.floor(e/G.tickCount(t)),a=n?B.searchLowBitFromStart(r,o,s-1,1,t):B.searchHightBitFromStart(r,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,r){let o;if(r){let a=me-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<me;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=Y(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,r,o,s){let a=B.getTickArrayStartIndexByTick(r,o),u=Math.floor((r-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 p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u-1}else for(u=u+1;u<me;){let p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u+1}let{publicKey:m}=Y(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(B.checkIsOutOfBoundary(e)){if(e>Pe)return!1;let n=B.getTickArrayStartIndexByTick(Ae,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return me*e}};var me=60,dt=512,B=class{static getTickArrayAddressByTick(e,t,n,r){let o=B.getTickArrayStartIndexByTick(n,r),{publicKey:s}=Y(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=B.getTickArrayStartIndexByTick(e,t),r=Math.floor((e-n)/t);if(r<0||r>=me)throw new Error("tick offset in array overflow");return r}static getTickArrayBitIndex(e,t){let n=G.tickCount(t),r=e/n;return e<0&&e%n!=0?r=Math.ceil(r)-1:r=Math.floor(r),r}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*G.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*me,r=Math.floor(e/n)+512;return Math.abs(r)}static checkTickArrayIsInitialized(e,t,n){let r=n*me,o=Math.floor(t/r)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*r}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*me:e+t*me}static mergeTickArrayBitmap(e){let t=new Zo(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,r,o){let s=Math.floor(r/(n*me));return[...B.searchLowBitFromStart(e,t,s-1,o,n),...B.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return B.searchHightBitFromStart(e,t,0,dt,n)}static getAllInitializedTickArrayInfo(e,t,n,r,o){let s=[],a=B.getAllInitializedTickArrayStartIndex(n,r,o);for(let u of a){let{publicKey:c}=Y(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,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>B.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===r)break}let u=G.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>B.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===r)break}let u=G.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<Ae||e>Pe}static nextInitTick(e,t,n,r,o){if(G.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(r)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<me;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=me-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<me;){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 r=W.getSqrtPriceX64FromTick(t),o=W.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new N(1).div(o),tickSqrtPriceX64:r}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let r=n?t:new N(1).div(t),o=pt.getTickWithPriceAndTickspacing(r,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=W.getSqrtPriceX64FromTick(o),a=W.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 r=W.getSqrtPriceX64FromTick(t),o=W.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new N(1).div(o),tickSqrtPriceX64:r}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let r=n?t:new N(1).div(t),o=pt.getTickWithPriceAndTickspacing(r,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=W.getSqrtPriceX64FromTick(o),a=W.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new N(1).div(a)}}};import He from"bn.js";var Ot=class{static getfeeGrowthInside(e,t,n){let r=new He(0),o=new He(0);e.tickCurrent>=t.tick?(r=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(r=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),o=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new He(0),a=new He(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=v.wrappingSubU128(v.wrappingSubU128(e.feeGrowthGlobalX64A,r),s),c=v.wrappingSubU128(v.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=v.mulDivFloor(v.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Se),u=t.tokenFeesOwedA.add(a),c=v.mulDivFloor(v.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Se),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=v.mulDivFloor(v.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Se),u=t.tokenFeesOwedA.add(a),c=v.mulDivFloor(v.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Se),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,r){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=v.wrappingSubU128(u,c.growthInsideLastX64),m=v.mulDivFloor(l,t.liquidity,Se),p=c.rewardAmountOwed.add(m);o.push(p)}return o}static GetPositionRewards(e,t,n,r){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=v.wrappingSubU128(u,c.growthInsideLastX64),m=v.mulDivFloor(l,t.liquidity,Se),p=c.rewardAmountOwed.add(m);o.push(p)}return o}static getRewardGrowthInside(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new He(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new He(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(v.wrappingSubU128(v.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new He(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new He(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(v.wrappingSubU128(v.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:r,add:o,epochInfo:s}){var g,k,h,A;let a=W.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),u=W.getSqrtPriceX64FromTick(t.tickLower),c=W.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+r:1-r,m=U.getAmountsFromLiquidity(a,u,c,n,o),[p,d]=[le(m.amountA,(g=e.mintA.extensions)==null?void 0:g.feeConfig,s,!0),le(m.amountB,(k=e.mintB.extensions)==null?void 0:k.feeConfig,s,!0)],[b,f]=[le(new He(new N(m.amountA.toString()).mul(l).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,s,!0),le(new He(new N(m.amountB.toString()).mul(l).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,s,!0)];return{liquidity:n,amountA:p,amountB:d,amountSlippageA:b,amountSlippageB:f,expirationTime:lt(p.expirationTime,d.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as Vi}from"@solana/spl-token";var he=class{static getOutputAmountAndRemainAccounts(e,t,n,r,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:p,sqrtPriceX64:d,feeAmount:b}=ft.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r,c,o);return a.push(...p),{expectedAmountOut:m.mul(Qe),remainingAccounts:a,executionPrice:d,feeAmount:b}}static getInputAmountAndRemainAccounts(e,t,n,r,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:g}=Y(e.programId,e.id,f.nextStartIndex);a.push(g)}}catch{}a.push(l);let{amountCalculated:m,accounts:p,sqrtPriceX64:d,feeAmount:b}=ft.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r.mul(Qe),c,o);return a.push(...p),{expectedAmountIn:m,remainingAccounts:a,executionPrice:d,feeAmount:b}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:r}=he.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Lt.checkTickArrayIsInit(G.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):B.checkTickArrayIsInitialized(B.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=Y(e.programId,e.id,r);return{isExist:!0,startIndex:r,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,G.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=Y(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/G.tickCount(e.tickSpacing)),r=t?B.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):B.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return r.length>0?{isExist:!0,nextStartIndex:r[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=G.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:r,tickIndex:o}=Je.nextInitializedTickArrayStartIndex(B.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(r)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=Lt.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Ae||t>Pe)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:r,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],p=(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(p===void 0)throw Error("get new reward mint info error");let d=ee(Q({},m),{perSecond:v.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new rt(p)});if(d.tokenMint.equals(rt.default))continue;if(n<=d.openTime.toNumber()||r.eq(ue)){s.push(d);continue}let b=new oe(Math.min(d.endTime.toNumber(),n)),f=b.sub(d.lastUpdateTime),g=v.mulDivFloor(f,d.emissionsPerSecondX64,r),k=d.rewardGrowthGlobalX64.add(g),h=v.mulDivFloor(f,d.emissionsPerSecondX64,Se),A=d.rewardTotalEmissioned.add(h);s.push(ee(Q({},d),{rewardGrowthGlobalX64:k,rewardTotalEmissioned:A,lastUpdateTime:b}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:r}=this.tickRange(e);for(let o of t){let s=B.getTickArrayStartIndexByTick(o,e);if(s>=n||s<r)return!0}return!1}static tickRange(e){let t=Je.maxTickInTickarrayBitmap(e),n=-t;return t>Pe&&(t=G.getArrayStartIndex(Pe,e)+G.tickCount(e)),n<Ae&&(n=G.getArrayStartIndex(Ae,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!G.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/G.tickCount(t)*dt}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let r=await hn(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of r)s.accountInfo!==null&&(o[s.pubkey.toString()]=vi.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let r={},o=[];for(let u of t){let c=B.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=B.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:p}=Y(u.programId,u.id,m);o.push({pubkey:p}),r[p.toString()]=u.id}}let s=await hn(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=r[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=Rt.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=ee(Q({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:r=!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(p=>p.accountInfo.mint),c=[];for(let p of u)for(let d of s)c.push(We(d,p).publicKey);let l=await ct(t,c,{batchRequest:r}),m={};for(let p of l){if(p===null)continue;let d=On.decode(p.data),b=d.poolId.toString(),f=e.find(_=>_.state.id.toBase58()===b);if(f===void 0)continue;let g=f.state,k=B._getTickPriceLegacy({poolInfo:g,tick:d.tickLower,baseIn:!0}),h=B._getTickPriceLegacy({poolInfo:g,tick:d.tickUpper,baseIn:!0}),{amountA:A,amountB:x}=U.getAmountsFromLiquidity(g.sqrtPriceX64,k.tickSqrtPriceX64,h.tickSqrtPriceX64,d.liquidity,!1),P=1/(1-Math.sqrt(Math.sqrt(k.price.div(h.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:d.poolId,nftMint:d.nftMint,priceLower:k.price,priceUpper:h.price,amountA:A,amountB:x,tickLower:d.tickLower,tickUpper:d.tickUpper,liquidity:d.liquidity,feeGrowthInsideLastX64A:d.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:d.feeGrowthInsideLastX64B,tokenFeesOwedA:d.tokenFeesOwedA,tokenFeesOwedB:d.tokenFeesOwedB,rewardInfos:d.rewardInfos.map(_=>ee(Q({},_),{pendingReward:new oe(0)})),leverage:P,tokenFeeAmountA:new oe(0),tokenFeeAmountB:new oe(0)}];let L=await B.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickLower,f.state.tickSpacing),E=await B.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickLower}`]=L,m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickUpper}`]=E}if(o){let p=Object.values(m),d=await ct(t,p,{batchRequest:r}),b={};for(let f=0;f<p.length;f++){let g=d[f];if(g===null)continue;let k=p[f].toString();b[k]=Rt.decode(g.data)}for(let{state:f,positionAccount:g}of e)if(!!g)for(let k of g){let h=`${f.programId.toString()}-${f.id.toString()}-${k.tickLower}`,A=`${f.programId.toString()}-${f.id.toString()}-${k.tickUpper}`,x=b[m[h].toString()],P=b[m[A].toString()],L=x.ticks[B.getTickOffsetInArray(k.tickLower,f.tickSpacing)],E=P.ticks[B.getTickOffsetInArray(k.tickUpper,f.tickSpacing)],{tokenFeeAmountA:_,tokenFeeAmountB:$}=await Ot.GetPositionFees(f,k,L,E),X=await Ot.GetPositionRewards(f,k,L,E);k.tokenFeeAmountA=_.gte(new oe(0))?_:new oe(0),k.tokenFeeAmountB=$.gte(new oe(0))?$:new oe(0);for(let Z=0;Z<X.length;Z++)k.rewardInfos[Z].pendingReward=X[Z].gte(new oe(0))?X[Z]:new oe(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountIn:o,slippage:s,priceLimit:a=new N(0)}){var X;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?Ye.add(new oe(1)):Ze.sub(new oe(1)):u=W.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=le(o,l,r,!1),{expectedAmountOut:d,remainingAccounts:b,executionPrice:f,feeAmount:g}=he.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((X=p.fee)!=null?X:ue),u),k=le(d,m,r,!1),h=W.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),A=c?h:new N(1).div(h),x=d.mul(new oe(Math.floor((1-s)*1e10))).div(new oe(1e10)),P=le(x,m,r,!1),L=c?e.currentPrice:new N(1).div(e.currentPrice),E=new N(A).sub(L).abs(),_=L,$=new it(new N(E).mul(10**15).toFixed(0),new N(_).mul(10**15).toFixed(0));return{realAmountIn:p,amountOut:k,minAmountOut:P,expirationTime:lt(p.expirationTime,k.expirationTime),currentPrice:e.currentPrice,executionPrice:A,priceImpact:$,fee:g,remainingAccounts:b}}static async computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:r,slippage:o,epochInfo:s}){let a=r.address===e.mintB.address,[u,c]=a?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,m]=[new qe(ee(Q({},u),{mint:u.address,isToken2022:u.programId===Vi.toBase58()})),new qe(ee(Q({},c),{mint:c.address,isToken2022:c.programId===Vi.toBase58()}))],{realAmountIn:p,amountOut:d,minAmountOut:b,expirationTime:f,currentPrice:g,executionPrice:k,priceImpact:h,fee:A,remainingAccounts:x}=await he.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new rt(u.address),amountIn:n,slippage:o,epochInfo:s}),P=ee(Q({},p),{amount:new be(l,p.amount),fee:p.fee===void 0?void 0:new be(l,p.fee)}),L=ee(Q({},d),{amount:new be(m,d.amount),fee:d.fee===void 0?void 0:new be(m,d.fee)}),E=ee(Q({},b),{amount:new be(m,b.amount),fee:b.fee===void 0?void 0:new be(m,b.fee)}),_=new Ce({baseToken:l,denominator:new oe(10).pow(new oe(20+l.decimals)),quoteToken:m,numerator:g.mul(new N(10**(20+m.decimals))).toFixed(0)}),$=new Ce({baseToken:l,denominator:new oe(10).pow(new oe(20+l.decimals)),quoteToken:m,numerator:k.mul(new N(10**(20+m.decimals))).toFixed(0)}),X=new be(l,A);return{realAmountIn:P,amountOut:L,minAmountOut:E,expirationTime:f,currentPrice:_,executionPrice:$,priceImpact:h,fee:X,remainingAccounts:x}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:r}){var b,f,g;let o=e[t],s=B.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=B.getTickPrice({poolInfo:e,tick:r,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,m=a-s,p=o.priceMax-o.priceMin,d;return l<=0?d=0:m===l?d=p/l:p===l?d=l/m:d=l/p*(l/m),{feeApr:o.feeApr*d,rewardsApr:[(b=o.rewardApr[0])!=null?b:0*d,(f=o.rewardApr[1])!=null?f:0*d,(g=o.rewardApr[2])!=null?g:0*d],apr:o.apr*d}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:r,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=r[dn(e.mintA.address).toString()],p=r[dn(e.mintB.address).toString()],d=e.mintA.decimals,b=e.mintB.decimals;if(!l||!m||!p)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=W.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),g=W.getSqrtPriceX64FromTick(s),k=W.getSqrtPriceX64FromTick(a),{amountSlippageA:h,amountSlippageB:A}=U.getAmountsFromLiquidityWithSlippage(f,g,k,t,!1,!1,0),{amountSlippageA:x,amountSlippageB:P}=U.getAmountsFromLiquidityWithSlippage(f,g,k,o,!1,!1,0),L=new N(h.toString()).div(new N(10).pow(d)).mul(m.value).add(new N(A.toString()).div(new N(10).pow(b)).mul(p.value)),E=new N(x.toString()).div(new N(10).pow(d)).mul(m.value).add(new N(P.toString()).div(new N(10).pow(b)).mul(p.value)),_=E.div(L.add(E)).div(E),X=new N(l.volumeFee).mul(365).div(c).mul(_).mul(100).toNumber(),Z=3600*24*365,Oe=e.rewardDefaultInfos.map(pe=>{var z,zn;let Te=pe.mint.decimals,ne=r[pe.mint.address];return u<((z=pe.startTime)!=null?z:0)||u>((zn=pe.endTime)!=null?zn:0)||!pe.perSecond||!ne||Te===void 0?0:new N(ne.value).mul(new N(pe.perSecond).mul(Z)).div(new N(10).pow(Te)).mul(_).mul(100).toNumber()});return{feeApr:X,rewardsApr:Oe,apr:X+Oe.reduce((pe,Te)=>pe+Te,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:r,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var k,h;let l=W.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),m=W.getSqrtPriceX64FromTick(n),p=W.getSqrtPriceX64FromTick(r),d=a?1-s:1+s,b=le(o,(k=e[t?"mintA":"mintB"].extensions)==null?void 0:k.feeConfig,u,!c),f=new oe(new N(b.amount.sub((h=b.fee)!=null?h:ue).toString()).mul(d).toFixed(0)),g;if(l.lte(m))g=t?U.getLiquidityFromTokenAmountA(m,p,f,!a):new oe(0);else if(l.lte(p)){let A=U.getLiquidityFromTokenAmountA(l,p,f,!a),x=U.getLiquidityFromTokenAmountB(m,l,f);g=t?A:x}else g=t?new oe(0):U.getLiquidityFromTokenAmountB(m,p,f);return he.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:r,liquidity:g,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:r,liquidity:o,slippage:s,add:a}){var g,k,h,A;let u=W.getSqrtPriceX64FromTick(n),c=W.getSqrtPriceX64FromTick(r),l=a?1+s:1-s,m=U.getAmountsFromLiquidity(W.priceToSqrtPriceX64(new N(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[p,d]=[le(m.amountA,(g=t.mintA.extensions)==null?void 0:g.feeConfig,e,!0),le(m.amountB,(k=t.mintB.extensions)==null?void 0:k.feeConfig,e,!0)],[b,f]=[le(m.amountA.muln(l),(h=t.mintA.extensions)==null?void 0:h.feeConfig,e,!0),le(m.amountB.muln(l),(A=t.mintB.extensions)==null?void 0:A.feeConfig,e,!0)];return{liquidity:o,amountA:p,amountB:d,amountSlippageA:b,amountSlippageB:f,expirationTime:lt(p.expirationTime,d.expirationTime)}}static async fetchComputeClmmInfo({owner:e,connection:t,poolInfo:n}){let r=await t.getAccountInfo(new rt(n.id));if(!r)throw new Error(`pool not found ${n.id}`);let o=Rn.decode(r.data),s=Ne(e,new rt(n.id)).publicKey,a=await he.fetchExBitmaps({connection:t,exBitmapAddress:[s],batchRequest:!1});return ee(Q({},o),{id:new rt(n.id),programId:new rt(n.programId),mintA:n.mintA,mintB:n.mintB,ammConfig:ee(Q({},n.config),{id:new rt(n.config.id),fundOwner:""}),currentPrice:new N(n.price),exBitmapInfo:a[s.toBase58()],startTime:o.startTime.toNumber()})}};var v=class{static mulDivRoundingUp(e,t,n){let r=e.mul(t),o=r.div(n);return r.mod(n).eq(ue)||(o=o.add(Ie)),o}static mulDivFloor(e,t,n){if(n.eq(ue))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(ue))throw new Error("division by 0");return e.mul(t).add(n.sub(Ie)).div(n)}static x64ToDecimal(e,t){return new N(e.toString()).div(N.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new D(e.mul(N.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Ht).sub(t).mod(Ht)}};function de(i,e){return Mn(i.mul(e),64,256)}function jo(i,e,t){let n=i.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Mn(i,e,t){let n=i.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var W=class{static sqrtPriceX64ToPrice(e,t,n){return v.x64ToDecimal(e).pow(2).mul(N.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return v.decimalToX64(e.mul(N.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,r){if(!e.gt(ue))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(ue))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,r){if(!e.gt(ue))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(ue))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,r){if(n.eq(ue))return e;let o=t.shln(Ct);if(r){let s=o,a=o.add(n.mul(e));return a.gte(s)?v.mulDivCeil(s,e,a):v.mulDivRoundingUp(s,Ie,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 v.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,r){let o=n.shln(Ct);if(r)return e.add(o.div(t));{let s=v.mulDivRoundingUp(o,Ie,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<Ae||e>Pe)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new D("18445821805675395072"):new D("18446744073709551616");return(t&2)!=0&&(n=de(n,new D("18444899583751176192"))),(t&4)!=0&&(n=de(n,new D("18443055278223355904"))),(t&8)!=0&&(n=de(n,new D("18439367220385607680"))),(t&16)!=0&&(n=de(n,new D("18431993317065453568"))),(t&32)!=0&&(n=de(n,new D("18417254355718170624"))),(t&64)!=0&&(n=de(n,new D("18387811781193609216"))),(t&128)!=0&&(n=de(n,new D("18329067761203558400"))),(t&256)!=0&&(n=de(n,new D("18212142134806163456"))),(t&512)!=0&&(n=de(n,new D("17980523815641700352"))),(t&1024)!=0&&(n=de(n,new D("17526086738831433728"))),(t&2048)!=0&&(n=de(n,new D("16651378430235570176"))),(t&4096)!=0&&(n=de(n,new D("15030750278694412288"))),(t&8192)!=0&&(n=de(n,new D("12247334978884435968"))),(t&16384)!=0&&(n=de(n,new D("8131365268886854656"))),(t&32768)!=0&&(n=de(n,new D("3584323654725218816"))),(t&65536)!=0&&(n=de(n,new D("696457651848324352"))),(t&131072)!=0&&(n=de(n,new D("26294789957507116"))),(t&262144)!=0&&(n=de(n,new D("37481735321082"))),e>0&&(n=Pi.div(n)),n}static getTickFromPrice(e,t,n){return W.getTickFromSqrtPriceX64(W.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Ze)||e.lt(Ye))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new D(t-64),r=jo(n,32,128),o=new D("8000000000000000","hex"),s=0,a=new D(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new D(0))&&s<Ti;){u=u.mul(u);let b=u.shrn(127);u=u.shrn(63+b.toNumber()),a=a.add(o.mul(b)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=r.add(c).mul(new D(xi)),p=Mn(m.sub(new D(Bi)),64,128).toNumber(),d=Mn(m.add(new D(Ii)),64,128).toNumber();return p==d?p:W.getSqrtPriceX64FromTick(d).lte(e)?d:p}},pt=class{static getTickWithPriceAndTickspacing(e,t,n,r){let s=W.getTickFromSqrtPriceX64(W.priceToSqrtPriceX64(e,n,r))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,r){let o=pt.getTickWithPriceAndTickspacing(e,t,n,r),s=W.getSqrtPriceX64FromTick(o);return W.sqrtPriceX64ToPrice(s,n,r)}},U=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(ue))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(Ct),s=t.sub(e);return r?v.mulDivRoundingUp(v.mulDivCeil(o,s,t),Ie,e):v.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(ue))throw new Error("sqrtPriceX64A must greater than 0");return r?v.mulDivCeil(n,t.sub(e),Se):v.mulDivFloor(n,t.sub(e),Se)}static getLiquidityFromTokenAmountA(e,t,n,r){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return r?v.mulDivRoundingUp(a,Ie,Tn):a.shrn(Ct)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),v.mulDivFloor(n,Tn,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return U.getLiquidityFromTokenAmountA(t,n,r,!1);if(e.lt(n)){let s=U.getLiquidityFromTokenAmountA(e,n,r,!1),a=U.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return U.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:U.getTokenAmountAFromLiquidity(t,n,r,o),amountB:new D(0)};if(e.lt(n)){let s=U.getTokenAmountAFromLiquidity(e,n,r,o),a=U.getTokenAmountBFromLiquidity(t,e,r,o);return{amountA:s,amountB:a}}else return{amountA:new D(0),amountB:U.getTokenAmountBFromLiquidity(t,n,r,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,r,o,s,a){let{amountA:u,amountB:c}=U.getAmountsFromLiquidity(e,t,n,r,s),l=o?1+a:1-a,m=new D(new N(u.toString()).mul(l).toFixed(0)),p=new D(new N(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:p}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:r,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var h,A,x,P;let c=W.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),l=W.getSqrtPriceX64FromTick(t),m=W.getSqrtPriceX64FromTick(n),p=s?1+o:1-o,d=U.getAmountsFromLiquidity(c,l,m,r,s),[b,f]=[le(d.amountA,(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,u),le(d.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)],[g,k]=[le(new D(new N(d.amountA.toString()).mul(p).toFixed(0)),(x=e.mintA.extensions)==null?void 0:x.feeConfig,a,u),le(new D(new N(d.amountB.toString()).mul(p).toFixed(0)),(P=e.mintB.extensions)==null?void 0:P.feeConfig,a,u)];return{liquidity:r,amountA:b,amountB:f,amountSlippageA:g,amountSlippageB:k,expirationTime:lt(b.expirationTime,f.expirationTime)}}},ft=class{static swapCompute(e,t,n,r,o,s,a,u,c,l,m,p,d,b){if(p.eq(ue))throw new Error("amountSpecified must not be 0");if(b||(b=s?Ye.add(Ie):Ze.sub(Ie)),s){if(b.lt(Ye))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(b.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(b.gt(Ze))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(b.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let f=p.gt(ue),g={amountSpecifiedRemaining:p,amountCalculated:ue,sqrtPriceX64:m,tick:c>d?Math.min(d+G.tickCount(l)-1,c):d,accounts:[],liquidity:u,feeAmount:new D(0)},k=d,h=n[d],A=0,x=!s&&h.startTickIndex===g.tick;for(;!g.amountSpecifiedRemaining.eq(ue)&&!g.sqrtPriceX64.eq(b);){if(A>10)throw Error("liquidity limit");let P={};P.sqrtPriceStartX64=g.sqrtPriceX64;let L=B.nextInitTick(h,g.tick,l,s,x),E=L||null,_=null;if(!(E!=null&&E.liquidityGross.gtn(0))){let X=he.nextInitializedTickArrayStartIndex({tickCurrent:g.tick,tickSpacing:l,tickArrayBitmap:r,exBitmapInfo:o},k,s);if(!X.isExist)throw Error("swapCompute LiquidityInsufficient");k=X.nextStartIndex;let{publicKey:Z}=Y(e,t,k);_=Z,h=n[k],E=B.firstInitializedTick(h,s)}P.tickNext=E.tick,P.initialized=E.liquidityGross.gtn(0),d!==k&&_&&(g.accounts.push(_),d=k),P.tickNext<Ae?P.tickNext=Ae:P.tickNext>Pe&&(P.tickNext=Pe),P.sqrtPriceNextX64=W.getSqrtPriceX64FromTick(P.tickNext);let $;if(s&&P.sqrtPriceNextX64.lt(b)||!s&&P.sqrtPriceNextX64.gt(b)?$=b:$=P.sqrtPriceNextX64,[g.sqrtPriceX64,P.amountIn,P.amountOut,P.feeAmount]=ft.swapStepCompute(g.sqrtPriceX64,$,g.liquidity,g.amountSpecifiedRemaining,a),g.feeAmount=g.feeAmount.add(P.feeAmount),f?(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.sub(P.amountIn.add(P.feeAmount)),g.amountCalculated=g.amountCalculated.sub(P.amountOut)):(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.add(P.amountOut),g.amountCalculated=g.amountCalculated.add(P.amountIn.add(P.feeAmount))),g.sqrtPriceX64.eq(P.sqrtPriceNextX64)){if(P.initialized){let X=E.liquidityNet;s&&(X=X.mul(Qe)),g.liquidity=U.addDelta(g.liquidity,X)}x=P.tickNext!=g.tick&&!s&&h.startTickIndex===P.tickNext,g.tick=s?P.tickNext-1:P.tickNext}else if(g.sqrtPriceX64!=P.sqrtPriceStartX64){let X=W.getTickFromSqrtPriceX64(g.sqrtPriceX64);x=X!=g.tick&&!s&&h.startTickIndex===X,g.tick=X}++A}try{let{nextStartIndex:P,isExist:L}=G.nextInitializedTickArray(g.tick,l,s,r,o);L&&d!==P&&(g.accounts.push(Y(e,t,P).publicKey),d=P)}catch{}return{amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts}}static swapStepCompute(e,t,n,r,o){let s={sqrtPriceX64Next:new D(0),amountIn:new D(0),amountOut:new D(0),feeAmount:new D(0)},a=e.gte(t),u=r.gte(ue);if(u){let l=v.mulDivFloor(r,zt.sub(new D(o.toString())),zt);s.amountIn=a?U.getTokenAmountAFromLiquidity(t,e,n,!0):U.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=W.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?U.getTokenAmountBFromLiquidity(t,e,n,!1):U.getTokenAmountAFromLiquidity(e,t,n,!1),r.mul(Qe).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=W.getNextSqrtPriceX64FromOutput(e,n,r.mul(Qe),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=U.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=U.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:U.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:U.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(r.mul(Qe))&&(s.amountOut=r.mul(Qe)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=r.sub(s.amountIn):s.feeAmount=v.mulDivCeil(s.amountIn,new D(o),zt.sub(new D(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};import{TOKEN_PROGRAM_ID as ge,TOKEN_2022_PROGRAM_ID as at,ASSOCIATED_TOKEN_PROGRAM_ID as Hi}from"@solana/spl-token";import{PublicKey as T,TransactionInstruction as Ve,SystemProgram as ht,Keypair as Vn}from"@solana/web3.js";import zi from"bn.js";import{PublicKey as is,Keypair as rs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as os}from"@solana/spl-token";import Qd from"bn.js";var Jo=F([R("mint"),R("owner"),y("amount"),je("delegateOption"),R("delegate"),q("state"),je("isNativeOption"),y("isNative"),y("delegatedAmount"),je("closeAuthorityOption"),R("closeAuthority")]);function $o(i){return i instanceof Uint8Array||i!=null&&typeof i=="object"&&i.constructor.name==="Uint8Array"}function En(i,...e){if(!$o(i))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(i.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${i.length}`)}function Fn(i,e=!0){if(i.destroyed)throw new Error("Hash instance has been destroyed");if(e&&i.finished)throw new Error("Hash#digest() has already been called")}function Di(i,e){En(i);let t=e.outputLen;if(i.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var $t=i=>new DataView(i.buffer,i.byteOffset,i.byteLength),ve=(i,e)=>i<<32-e|i>>>e;var Od=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function es(i){if(typeof i!="string")throw new Error(`utf8ToBytes expected string, got ${typeof i}`);return new Uint8Array(new TextEncoder().encode(i))}function Wn(i){return typeof i=="string"&&(i=es(i)),En(i),i}var Jt=class{clone(){return this._cloneInto()}},Md={}.toString;function _i(i){let e=n=>i().update(Wn(n)).digest(),t=i();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>i(),e}function ts(i,e,t,n){if(typeof i.setBigUint64=="function")return i.setBigUint64(e,t,n);let r=BigInt(32),o=BigInt(4294967295),s=Number(t>>r&o),a=Number(t&o),u=n?4:0,c=n?0:4;i.setUint32(e+u,s,n),i.setUint32(e+c,a,n)}var qi=(i,e,t)=>i&e^~i&t,Gi=(i,e,t)=>i&e^i&t^e&t,en=class extends Jt{constructor(e,t,n,r){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=r,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=$t(this.buffer)}update(e){Fn(this);let{view:t,buffer:n,blockLen:r}=this;e=Wn(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(r-this.pos,o-s);if(a===r){let u=$t(e);for(;r<=o-s;s+=r)this.process(u,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===r&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Fn(this),Di(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:r,isLE:o}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>r-s&&(this.process(n,0),s=0);for(let m=s;m<r;m++)t[m]=0;ts(n,r-8,BigInt(this.length*8),o),this.process(n,0);let a=$t(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:r,finished:o,destroyed:s,pos:a}=this;return e.length=r,e.pos=a,e.finished=o,e.destroyed=s,r%t&&e.buffer.set(n),e}};var ns=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]),ot=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),st=new Uint32Array(64),vn=class extends en{constructor(){super(64,32,8,!1),this.A=ot[0]|0,this.B=ot[1]|0,this.C=ot[2]|0,this.D=ot[3]|0,this.E=ot[4]|0,this.F=ot[5]|0,this.G=ot[6]|0,this.H=ot[7]|0}get(){let{A:e,B:t,C:n,D:r,E:o,F:s,G:a,H:u}=this;return[e,t,n,r,o,s,a,u]}set(e,t,n,r,o,s,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=r|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)st[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let p=st[m-15],d=st[m-2],b=ve(p,7)^ve(p,18)^p>>>3,f=ve(d,17)^ve(d,19)^d>>>10;st[m]=f+st[m-7]+b+st[m-16]|0}let{A:n,B:r,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let p=ve(a,6)^ve(a,11)^ve(a,25),d=l+p+qi(a,u,c)+ns[m]+st[m]|0,f=(ve(n,2)^ve(n,13)^ve(n,22))+Gi(n,r,o)|0;l=c,c=u,u=a,a=s+d|0,s=o,o=r,r=n,n=d+f|0}n=n+this.A|0,r=r+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,r,o,s,a,u,c,l)}roundClean(){st.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Ui=_i(()=>new vn);var Jd=se("Raydium_Util");function Xi({fromPublicKey:i,programId:e=os}){let t=rs.generate().publicKey.toBase58().slice(0,32);return{publicKey:ss(i,t,e),seed:t}}function ss(i,e,t){let n=Buffer.concat([i.toBuffer(),Buffer.from(e),t.toBuffer()]),r=Ui(n);return new is(r)}var Qi=se("Raydium_Clmm"),De={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]},Mt=class{static createPoolInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b){let f=F([M("sqrtPriceX64"),y("startTime")]),g=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:r,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:p,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:ht.programId,isSigner:!1,isWritable:!1},{pubkey:wt,isSigner:!1,isWritable:!1}],k=Buffer.alloc(f.span);f.encode({sqrtPriceX64:d,startTime:b},k);let h=Buffer.from([...De.createPool,...k]);return new Ve({keys:g,programId:e,data:h})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:r,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=Xi({fromPublicKey:r,programId:n}),[p,d]=[new T(o.address),new T(s.address)],b=[ht.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Ln.span),space:Ln.span,programId:n})],{publicKey:f}=Ni(n,a,p,d),{publicKey:g}=In(n,f,p),{publicKey:k}=In(n,f,d);return b.push(this.createPoolInstruction(n,f,r,a,m.publicKey,p,g,new T(o.programId||ge),d,k,new T(s.programId||ge),Ne(n,f).publicKey,u,c)),{signers:[],instructions:b,instructionTypes:[re.CreateAccount,re.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:g,mintBVault:k},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,g,k,h,A,x,P,L,E,_,$,X){let Z=F([ye("tickLowerIndex"),ye("tickUpperIndex"),ye("tickArrayLowerStartIndex"),ye("tickArrayUpperStartIndex"),M("liquidity"),y("amountMaxA"),y("amountMaxB"),Xe("withMetadata"),q("optionBaseFlag"),Xe("baseFlag")]),Oe=[...X?[{pubkey:X,isSigner:!1,isWritable:!0}]:[]],pe=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,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:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:wt,isSigner:!1,isWritable:!1},{pubkey:ht.programId,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:Hi,isSigner:!1,isWritable:!1},{pubkey:kt,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:k,isSigner:!1,isWritable:!1},...Oe],Te=Buffer.alloc(Z.span);Z.encode({tickLowerIndex:h,tickUpperIndex:A,tickArrayLowerStartIndex:x,tickArrayUpperStartIndex:P,liquidity:L,amountMaxA:E,amountMaxB:_,withMetadata:$==="create",baseFlag:!1,optionBaseFlag:0},Te);let ne=Buffer.from([...De.openPosition,...Te]);return new Ve({keys:pe,programId:e,data:ne})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[p,d]=[new T(e.programId),new T(e.id)],b;if(l)b=new T((await l(1))[0]);else{let _=Vn.generate();m.push(_),b=_.publicKey}let f=B.getTickArrayStartIndexByTick(r,e.config.tickSpacing),g=B.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:k}=Y(p,d,f),{publicKey:h}=Y(p,d,g),{publicKey:A}=Ge(n.wallet,b,ge),{publicKey:x}=Yt(b),{publicKey:P}=We(p,b),{publicKey:L}=mt(p,d,r,o),E=this.openPositionFromLiquidityInstruction(p,n.feePayer,d,n.wallet,b,A,x,L,k,h,P,n.tokenAccountA,n.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),r,o,f,g,s,a,u,c);return{signers:m,instructions:[E],instructionTypes:[re.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:b,tickArrayLower:k,tickArrayUpper:h,positionNftAccount:A,metadataAccount:x,personalPosition:P,protocolPosition:L}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[p,d]=[new T(e.programId),new T(e.id)],b;if(l)b=new T((await l(1))[0]);else{let _=Vn.generate();m.push(_),b=_.publicKey}let f=B.getTickArrayStartIndexByTick(r,e.config.tickSpacing),g=B.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:k}=Y(p,d,f),{publicKey:h}=Y(p,d,g),{publicKey:A}=Ge(n.wallet,b,ge),{publicKey:x}=Yt(b),{publicKey:P}=We(p,b),{publicKey:L}=mt(p,d,r,o),E=this.openPositionFromBaseInstruction(p,n.feePayer,d,n.wallet,b,A,x,L,k,h,P,n.tokenAccountA,n.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),r,o,f,g,c,s,a,u,he.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,g])?Ne(p,d).publicKey:void 0);return{address:{nftMint:b,tickArrayLower:k,tickArrayUpper:h,positionNftAccount:A,metadataAccount:x,personalPosition:P,protocolPosition:L},instructions:[E],signers:m,instructionTypes:[re.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,g,k,h,A,x,P,L,E,_,$,X){let Z=F([ye("tickLowerIndex"),ye("tickUpperIndex"),ye("tickArrayLowerStartIndex"),ye("tickArrayUpperStartIndex"),M("liquidity"),y("amountMaxA"),y("amountMaxB"),Xe("withMetadata"),q("optionBaseFlag"),Xe("baseFlag")]),Oe=[...X?[{pubkey:X,isSigner:!1,isWritable:!0}]:[]],pe=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,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:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:wt,isSigner:!1,isWritable:!1},{pubkey:ht.programId,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:Hi,isSigner:!1,isWritable:!1},{pubkey:kt,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:k,isSigner:!1,isWritable:!1},...Oe],Te=Buffer.alloc(Z.span);Z.encode({tickLowerIndex:h,tickUpperIndex:A,tickArrayLowerStartIndex:x,tickArrayUpperStartIndex:P,liquidity:new zi(0),amountMaxA:E==="MintA"?_:$,amountMaxB:E==="MintA"?$:_,withMetadata:L==="create",baseFlag:E==="MintA",optionBaseFlag:1},Te);let ne=Buffer.from([...De.openPosition,...Te]);return new Ve({keys:pe,programId:e,data:ne})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,p=[];if(l)m=new T((await l(1))[0]);else{let _=Vn.generate();p.push(_),m=_.publicKey}let[d,b]=[new T(e.programId),new T(e.id)],f=B.getTickArrayStartIndexByTick(r,e.config.tickSpacing),g=B.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:k}=Y(d,b,f),{publicKey:h}=Y(d,b,g),{publicKey:A}=Ge(n.wallet,m,ge),{publicKey:x}=Yt(m),{publicKey:P}=We(d,m),{publicKey:L}=mt(d,b,r,o),E=this.openPositionFromLiquidityInstruction(d,n.wallet,b,n.wallet,m,A,x,L,k,h,P,n.tokenAccountA,n.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(t.mintA.address),new T(t.mintB.address),r,o,f,g,s,a,u,c,he.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,g])?Ne(d,b).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:k,tickArrayUpper:h,positionNftAccount:A,metadataAccount:x,personalPosition:P,protocolPosition:L},instructions:[E],signers:p,instructionTypes:[re.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,o){let s=F([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:ht.programId,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...De.closePosition,...u]);return new Ve({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:r}){let o=new T(e.programId),{publicKey:s}=Ge(n.wallet,r.nftMint,ge),{publicKey:a}=We(o,r.nftMint),u=[];return u.push(this.closePositionInstruction(o,n.wallet,r.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:u,instructionTypes:[re.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,g,k,h){let A=F([M("liquidity"),y("amountMaxA"),y("amountMaxB"),q("optionBaseFlag"),Xe("baseFlag")]),x=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],P=[{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:r,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:p,isSigner:!1,isWritable:!0},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...x],L=Buffer.alloc(A.span);A.encode({liquidity:f,amountMaxA:g,amountMaxB:k,optionBaseFlag:0,baseFlag:!1},L);let E=Buffer.from([...De.increaseLiquidity,...L]);return new Ve({keys:P,programId:e,data:E})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new T(e.programId),new T(e.id)],l=B.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=B.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=Y(u,c,l),{publicKey:d}=Y(u,c,m),{publicKey:b}=Ge(r.wallet,n.nftMint,ge),{publicKey:f}=We(u,n.nftMint),{publicKey:g}=mt(u,c,n.tickLower,n.tickUpper),k=this.increasePositionFromLiquidityInstruction(u,r.wallet,b,f,c,g,p,d,r.tokenAccountA,r.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),o,s,a,he.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Ne(u,c).publicKey:void 0);return{address:{tickArrayLower:p,tickArrayUpper:d,positionNftAccount:b,personalPosition:f,protocolPosition:g},signers:[],instructions:[k],instructionTypes:[re.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,base:o,baseAmount:s,otherAmountMax:a}){let[u,c]=[new T(e.programId),new T(e.id)],l=B.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=B.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=Y(u,c,l),{publicKey:d}=Y(u,c,m),{publicKey:b}=Ge(r.wallet,n.nftMint,ge),{publicKey:f}=We(u,n.nftMint),{publicKey:g}=mt(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:p,tickArrayUpper:d,positionNftAccount:b,personalPosition:f,protocolPosition:g},instructions:[this.increasePositionFromBaseInstruction(u,r.wallet,b,f,c,g,p,d,r.tokenAccountA,r.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),o,s,a,he.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Ne(u,c).publicKey:void 0)],signers:[],instructionTypes:[re.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,g,k,h){let A=F([M("liquidity"),y("amountMaxA"),y("amountMaxB"),q("optionBaseFlag"),Xe("baseFlag")]),x=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],P=[{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:r,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:p,isSigner:!1,isWritable:!0},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...x],L=Buffer.alloc(A.span);A.encode({liquidity:new zi(0),amountMaxA:f==="MintA"?g:k,amountMaxB:f==="MintA"?k:g,baseFlag:f==="MintA",optionBaseFlag:1},L);let E=Buffer.from([...De.increaseLiquidity,...L]);return new Ve({keys:P,programId:e,data:E})}static decreaseLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,g,k,h,A){let x=F([M("liquidity"),y("amountMinA"),y("amountMinB")]),P=[...A?[{pubkey:A,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()],L=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,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:ge,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:gt,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...P],E=Buffer.alloc(x.span);x.encode({liquidity:g,amountMinA:k,amountMinB:h},E);let _=Buffer.from([...De.decreaseLiquidity,...E]);return new Ve({keys:L,programId:e,data:_})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new T(e.programId),new T(e.id)],m=B.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),p=B.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=Y(c,l,m),{publicKey:b}=Y(c,l,p),{publicKey:f}=Ge(r.wallet,n.nftMint,u),{publicKey:g}=We(c,n.nftMint),{publicKey:k}=mt(c,l,n.tickLower,n.tickUpper),h=[];for(let x=0;x<e.rewardDefaultInfos.length;x++)h.push({poolRewardVault:new T(t.rewardInfos[x].vault),ownerRewardVault:r.rewardAccounts[x],rewardMint:new T(e.rewardDefaultInfos[x].mint.address)});let A=[];return A.push(this.decreaseLiquidityInstruction(c,r.wallet,f,g,l,k,d,b,r.tokenAccountA,r.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),h,o,s,a,he.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,p])?Ne(c,l).publicKey:void 0)),{address:{tickArrayLower:d,tickArrayUpper:b,positionNftAccount:f,personalPosition:g,protocolPosition:k},signers:[],instructions:A,instructionTypes:[re.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,g,k){let h=F([y("amount"),y("otherAmountThreshold"),M("sqrtPriceLimitX64"),Xe("isBaseInput")]),A=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[],...m.map(E=>({pubkey:E,isSigner:!1,isWritable:!0}))],x=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:r,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:p,isSigner:!1,isWritable:!0},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:gt,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...A],P=Buffer.alloc(h.span);h.encode({amount:d,otherAmountThreshold:b,sqrtPriceLimitX64:f,isBaseInput:g},P);let L=Buffer.from([...De.swap,...P]);return new Ve({keys:x,programId:e,data:L})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,inputMint:r,amountIn:o,amountOutMin:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new T(e.programId),new T(e.id)],[m,p]=[new T(t.vault.A),new T(t.vault.B)],[d,b]=[new T(e.mintA.address),new T(e.mintB.address)],f=e.mintA.address===r.toString(),g=[this.swapInstruction(c,n.wallet,l,new T(e.config.id),f?n.tokenAccountA:n.tokenAccountB,f?n.tokenAccountB:n.tokenAccountA,f?m:p,f?p:m,f?d:b,f?b:d,u,m,o,s,a,!0,Ne(c,l).publicKey)];return{signers:[],instructions:g,instructionTypes:[re.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,p){let d=F([y("openTime"),y("endTime"),M("emissionsPerSecondX64")]),b=[{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:r,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:ht.programId,isSigner:!1,isWritable:!1},{pubkey:wt,isSigner:!1,isWritable:!1}],f=Buffer.alloc(d.span);d.encode({openTime:ie(l),endTime:ie(m),emissionsPerSecondX64:p},f);let g=Buffer.from([...De.initReward,...f]);return new Ve({keys:b,programId:e,data:g})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new T(e.programId),new T(e.id)],a=Li(o,s,r.mint).publicKey,u=Zt(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new T(e.config.id),n.tokenAccount,r.programId,r.mint,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[re.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,p){let d=F([q("rewardIndex"),M("emissionsPerSecondX64"),y("openTime"),y("endTime")]),b=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:at,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(d.span);d.encode({rewardIndex:c,emissionsPerSecondX64:p,openTime:ie(l),endTime:ie(m)},f);let g=Buffer.from([...De.setRewardEmissions,...f]);return new Ve({keys:b,programId:e,data:g})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new T(e.programId),new T(e.id)],a,u,c;for(let p=0;p<e.rewardDefaultInfos.length;p++)e.rewardDefaultInfos[p].mint.address===r.mint.toString()&&(a=p,u=new T(t.rewardInfos[p].vault),c=new T(t.rewardInfos[p].mint.address));(a===void 0||u===void 0)&&Qi.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Zt(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new T(e.config.id),n.tokenAccount,u,c,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[re.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,r,o,s,a){let u=F([q("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:gt,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...De.collectReward,...l]);return new Ve({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:r}){let[o,s]=[new T(e.programId),new T(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===r.toString()&&(a=l,u=new T(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&Qi.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,u,r,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[re.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:r,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new T(e.programId),new T(e.id)],[m,p]=[new T(t.vault.A),new T(t.vault.B)],[d,b]=[new T(e.mintA.address),new T(e.mintB.address)],f=e.mintA.address===r.toString(),g=[this.swapInstruction(c,n.wallet,l,new T(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?p:m,f?m:p,f?d:b,f?b:d,u,m,o,s,a,!1)];return{signers:[],instructions:g,instructionTypes:[re.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import Op from"bn.js";import{TOKEN_PROGRAM_ID as ps,ASSOCIATED_TOKEN_PROGRAM_ID as kf}from"@solana/spl-token";import{PublicKey as hf,TransactionInstruction as Zi,SystemProgram as fs,SYSVAR_RENT_PUBKEY as Pf}from"@solana/web3.js";var Dn=F([q("instruction"),y("amountIn"),y("minAmountOut")]),_n=F([q("instruction"),y("maxAmountIn"),y("amountOut")]),uf=F([q("instruction"),q("nonce")]),as=F([q("instruction"),q("nonce"),y("startTime")]),cf=F([y("status"),y("nonce"),y("maxOrder"),y("depth"),y("baseDecimal"),y("quoteDecimal"),y("state"),y("resetFlag"),y("minSize"),y("volMaxCutRatio"),y("amountWaveRatio"),y("baseLotSize"),y("quoteLotSize"),y("minPriceMultiplier"),y("maxPriceMultiplier"),y("systemDecimalValue"),y("minSeparateNumerator"),y("minSeparateDenominator"),y("tradeFeeNumerator"),y("tradeFeeDenominator"),y("pnlNumerator"),y("pnlDenominator"),y("swapFeeNumerator"),y("swapFeeDenominator"),y("baseNeedTakePnl"),y("quoteNeedTakePnl"),y("quoteTotalPnl"),y("baseTotalPnl"),y("poolOpenTime"),y("punishPcAmount"),y("punishCoinAmount"),y("orderbookToInitTime"),M("swapBaseInAmount"),M("swapQuoteOutAmount"),y("swapBase2QuoteFee"),M("swapQuoteInAmount"),M("swapBaseOutAmount"),y("swapQuote2BaseFee"),R("baseVault"),R("quoteVault"),R("baseMint"),R("quoteMint"),R("lpMint"),R("openOrders"),R("marketId"),R("marketProgramId"),R("targetOrders"),R("withdrawQueue"),R("lpVault"),R("owner"),y("lpReserve"),J(y(),3,"padding")]),lf=F([y("accountType"),y("status"),y("nonce"),y("maxOrder"),y("depth"),y("baseDecimal"),y("quoteDecimal"),y("state"),y("resetFlag"),y("minSize"),y("volMaxCutRatio"),y("amountWaveRatio"),y("baseLotSize"),y("quoteLotSize"),y("minPriceMultiplier"),y("maxPriceMultiplier"),y("systemDecimalsValue"),y("abortTradeFactor"),y("priceTickMultiplier"),y("priceTick"),y("minSeparateNumerator"),y("minSeparateDenominator"),y("tradeFeeNumerator"),y("tradeFeeDenominator"),y("pnlNumerator"),y("pnlDenominator"),y("swapFeeNumerator"),y("swapFeeDenominator"),y("baseNeedTakePnl"),y("quoteNeedTakePnl"),y("quoteTotalPnl"),y("baseTotalPnl"),y("poolOpenTime"),y("punishPcAmount"),y("punishCoinAmount"),y("orderbookToInitTime"),M("swapBaseInAmount"),M("swapQuoteOutAmount"),M("swapQuoteInAmount"),M("swapBaseOutAmount"),y("swapQuote2BaseFee"),y("swapBase2QuoteFee"),R("baseVault"),R("quoteVault"),R("baseMint"),R("quoteMint"),R("lpMint"),R("modelDataAccount"),R("openOrders"),R("marketId"),R("marketProgramId"),R("targetOrders"),R("owner"),J(y(),64,"padding")]),us=F([q("instruction"),y("baseAmountIn"),y("quoteAmountIn"),y("fixedSide")]),cs=F([q("instruction"),y("amountIn")]);var mf=F([y("fee")]);import{PublicKey as ls}from"@solana/web3.js";var qn=new ls("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ms=5e4,ds=F([y("x"),y("y"),y("price")]),yf=F([y("accountType"),y("status"),y("multiplier"),y("validDataCount"),J(ds,ms,"DataElement")]);var Yi=se("Raydium_liquidity_instruction");function bs({poolKeys:i,userKeys:e,amountIn:t,minAmountOut:n},r){let o=ke(i),s=Buffer.alloc(Dn.span);Dn.encode({instruction:9,amountIn:ie(t),minAmountOut:ie(n)},s);let a=[V({pubkey:ps,isWritable:!1}),V({pubkey:o.id}),V({pubkey:o.authority,isWritable:!1}),V({pubkey:o.openOrders})];return r===4&&a.push(V({pubkey:o.targetOrders})),a.push(V({pubkey:o.vault.A}),V({pubkey:o.vault.B})),r===5&&a.push(V({pubkey:qn})),a.push(V({pubkey:o.marketProgramId,isWritable:!1}),V({pubkey:o.marketId}),V({pubkey:o.marketBids}),V({pubkey:o.marketAsks}),V({pubkey:o.marketEventQueue}),V({pubkey:o.marketBaseVault}),V({pubkey:o.marketQuoteVault}),V({pubkey:o.marketAuthority,isWritable:!1}),V({pubkey:e.tokenAccountIn}),V({pubkey:e.tokenAccountOut}),V({pubkey:e.owner,isWritable:!1})),new Zi({programId:o.programId,keys:a,data:s})}function ys({poolKeys:i,userKeys:e,maxAmountIn:t,amountOut:n},r){let o=ke(i),s=Buffer.alloc(_n.span);_n.encode({instruction:11,maxAmountIn:ie(t),amountOut:ie(n)},s);let a=[V({pubkey:fs.programId,isWritable:!1}),V({pubkey:o.id}),V({pubkey:o.authority,isWritable:!1}),V({pubkey:o.openOrders}),V({pubkey:o.targetOrders}),V({pubkey:o.vault.A}),V({pubkey:o.vault.B})];return r===5&&a.push(V({pubkey:qn})),a.push(V({pubkey:o.marketProgramId,isWritable:!1}),V({pubkey:o.marketId}),V({pubkey:o.marketBids}),V({pubkey:o.marketAsks}),V({pubkey:o.marketEventQueue}),V({pubkey:o.marketBaseVault}),V({pubkey:o.marketQuoteVault}),V({pubkey:o.marketAuthority,isWritable:!1}),V({pubkey:e.tokenAccountIn}),V({pubkey:e.tokenAccountOut}),V({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Zi({programId:o.programId,keys:a,data:s})}function ji(i){let{poolKeys:e,version:t,userKeys:n,amountIn:r,amountOut:o,fixedSide:s}=i;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return bs(ee(Q({},a),{amountIn:r,minAmountOut:o}),t);if(s==="out")return ys(ee(Q({},a),{maxAmountIn:r,amountOut:o}),t);Yi.logWithError("invalid params","params",i)}throw Yi.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function Df(i,e,t,n,r,o,s,a,u,c,l,m){let p=F([q("instruction"),y("amountIn"),y("amountOut")]),d=[{pubkey:$i.programId,isSigner:!1,isWritable:!1},{pubkey:Xn,isSigner:!1,isWritable:!1},{pubkey:new Re(t.programId),isSigner:!1,isWritable:!1},{pubkey:new Re(t.id),isSigner:!1,isWritable:!0},{pubkey:new Re(n.id),isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let f=ke(t);d.push({pubkey:f.config.id,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.A:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.B:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},...m.map(g=>({pubkey:g,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let f=ke(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:new Re("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0})}else{let f=ke(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},...f.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:f.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:f.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0}])}let b=Buffer.alloc(p.span);return p.encode({instruction:4,amountIn:c,amountOut:l},b),new Hn({keys:d,programId:i,data:b})}function _f(i,e,t,n,r,o,s,a,u,c){let l=F([q("instruction")]),m=[{pubkey:$i.programId,isSigner:!1,isWritable:!1},{pubkey:Xn,isSigner:!1,isWritable:!1},{pubkey:new Re(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new Re(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new Re(String(t.id)),isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let d=ke(n);m.push({pubkey:d.config.id,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.A:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.B:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},...c.map(b=>({pubkey:b,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let d=ke(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:new Re("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0})}else{let d=ke(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},...d.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:d.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:d.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0}])}let p=Buffer.alloc(l.span);return l.encode({instruction:5},p),new Hn({keys:m,programId:i,data:p})}function Ji(i,e,t,n,r,o){if(i.pooltype.includes("StablePool")){let s=ke(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:new Re("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]}else if(i.type==="Concentrated"){let s=i,a=ke(e),u=s.mintA.address===t;return[{pubkey:new Re(String(i.programId)),isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a.config.id,isSigner:!1,isWritable:!1},{pubkey:a.id,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.A:a.vault.B,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.B:a.vault.A,isSigner:!1,isWritable:!0},{pubkey:a.id,isSigner:!1,isWritable:!0},...a.mintA.programId.equals(Gn)||a.mintB.programId.equals(Gn)?[{pubkey:Gn,isSigner:!1,isWritable:!1},{pubkey:gt,isSigner:!1,isWritable:!1},{pubkey:u?a.mintA.address:a.mintB.address,isSigner:!1,isWritable:!1},{pubkey:u?a.mintB.address:a.mintA.address,isSigner:!1,isWritable:!1}]:[],...(o!=null?o:[]).map(c=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:Ne(new Re(String(i.programId)),new Re(i.id)).publicKey,isSigner:!1,isWritable:!0}]}else{let s=ke(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},...s.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:s.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:s.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]]}}function gs(i,e,t,n,r,o,s,a,u,c,l,m,p,d){let b=F([q("instruction"),y("amountIn"),y("amountOut")]),f=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:Xn,isSigner:!1,isWritable:!1}];f.push(...Ji(a,c,o,t,n,d[0])),f.push(...Ji(u,l,s,n,r,d[1]));let g=Buffer.alloc(b.span);return b.encode({instruction:8,amountIn:m,amountOut:p},g),new Hn({keys:f,programId:i,data:g})}async function qf({routeProgram:i,ownerInfo:e,inputMint:t,swapInfo:n}){var r,o,s,a,u,c;if(n.routeType==="amm")if(n.poolInfo[0].type==="Concentrated"){let l=ke(n.poolKey[0]),m=t.equals(l.mintA.address)?Ye.add(Ie):Ze.sub(Ie);return await Mt.makeSwapBaseInInstructions({poolInfo:l,poolKeys:l,ownerInfo:{wallet:e.wallet,tokenAccountA:l.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:l.mintA.address.equals(t)?e.destinationToken:e.sourceToken},inputMint:t,amountIn:n.amountIn.amount.raw,amountOutMin:n.minAmountOut.amount.raw.sub((o=(r=n.minAmountOut.fee)==null?void 0:r.raw)!=null?o:new Un(0)),sqrtPriceLimitX64:m,remainingAccounts:n.remainingAccounts[0]})}else{let l=n.poolKey[0];return{signers:[],instructions:[ji({poolKeys:l,version:n.poolInfo[0].pooltype.includes("StablePool")?5:4,userKeys:{tokenAccountIn:e.sourceToken,tokenAccountOut:e.destinationToken,owner:e.wallet},amountIn:n.amountIn.amount.raw,amountOut:n.minAmountOut.amount.raw.sub((a=(s=n.minAmountOut.fee)==null?void 0:s.raw)!=null?a:new Un(0)),fixedSide:"in"})],lookupTableAddress:l.lookupTableAccount?[l.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?re.AmmV5SwapBaseIn:re.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let l=n.poolInfo[0],m=n.poolInfo[1],p=n.poolKey[0],d=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[gs(i,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.minMiddleAmountFee.token.mint.toString(),l,m,p,d,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((c=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?c:new Un(0)),n.remainingAccounts)],instructionTypes:[re.RouteSwap],lookupTableAddress:[p.lookupTableAccount,d.lookupTableAccount].filter(b=>b!==void 0),address:{}}}else throw Error("route type error")}export{qf as makeSwapInstruction,Df as route1Instruction,_f as route2Instruction,gs as routeInstruction};
2
2
  /*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
3
3
  //# sourceMappingURL=instrument.mjs.map