@raydium-io/raydium-sdk-v2 0.1.20-alpha → 0.1.22-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 (39) 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/index.d.ts +1 -1
  9. package/lib/raydium/cpmm/cpmm.d.ts +1 -1
  10. package/lib/raydium/farm/farm.d.ts +1 -1
  11. package/lib/raydium/ido/ido.d.ts +1 -1
  12. package/lib/raydium/ido/index.d.ts +1 -1
  13. package/lib/raydium/index.d.ts +1 -1
  14. package/lib/raydium/index.js +1 -1
  15. package/lib/raydium/index.js.map +1 -1
  16. package/lib/raydium/index.mjs +1 -1
  17. package/lib/raydium/index.mjs.map +1 -1
  18. package/lib/raydium/liquidity/liquidity.d.ts +1 -1
  19. package/lib/raydium/marketV2/createMarket.d.ts +1 -1
  20. package/lib/raydium/marketV2/index.d.ts +1 -1
  21. package/lib/raydium/moduleBase.d.ts +1 -1
  22. package/lib/raydium/raydium.d.ts +1 -1
  23. package/lib/raydium/raydium.js +1 -1
  24. package/lib/raydium/raydium.js.map +1 -1
  25. package/lib/raydium/raydium.mjs +1 -1
  26. package/lib/raydium/raydium.mjs.map +1 -1
  27. package/lib/raydium/token/token.d.ts +1 -1
  28. package/lib/raydium/tradeV2/index.js.map +1 -1
  29. package/lib/raydium/tradeV2/index.mjs.map +1 -1
  30. package/lib/raydium/tradeV2/trade.d.ts +1 -1
  31. package/lib/raydium/tradeV2/trade.js +1 -1
  32. package/lib/raydium/tradeV2/trade.js.map +1 -1
  33. package/lib/raydium/tradeV2/trade.mjs +1 -1
  34. package/lib/raydium/tradeV2/trade.mjs.map +1 -1
  35. package/lib/raydium/utils1216/index.d.ts +1 -1
  36. package/lib/raydium/utils1216/utils1216.d.ts +1 -1
  37. package/lib/{raydium-48a3a05a.d.ts → raydium-c9108dcc.d.ts} +6 -2
  38. package/package.json +1 -1
  39. package/src/raydium/tradeV2/trade.ts +21 -5
@@ -1,3 +1,3 @@
1
- var Ao=Object.defineProperty,Po=Object.defineProperties;var ko=Object.getOwnPropertyDescriptors;var on=Object.getOwnPropertySymbols;var _i=Object.prototype.hasOwnProperty,vi=Object.prototype.propertyIsEnumerable;var Fi=(i,e,t)=>e in i?Ao(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,v=(i,e)=>{for(var t in e||(e={}))_i.call(e,t)&&Fi(i,t,e[t]);if(on)for(var t of on(e))vi.call(e,t)&&Fi(i,t,e[t]);return i},X=(i,e)=>Po(i,ko(e));var bt=(i,e)=>{var t={};for(var n in i)_i.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&on)for(var n of on(i))e.indexOf(n)<0&&vi.call(i,n)&&(t[n]=i[n]);return t};import{PublicKey as It}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as pe,TOKEN_2022_PROGRAM_ID as Ni,createTransferInstruction as yo}from"@solana/spl-token";import{get as Di,set as wo}from"lodash";import Wi from"dayjs";import ho from"dayjs/plugin/utc";Wi.extend(ho);var vn=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 Wi().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}},Vi={},To={};function oe(i){let e=Di(Vi,i);if(!e){let t=Di(To,i);e=new vn({name:i,logLevel:t}),wo(Vi,i,e)}return e}import{PublicKey as Ms}from"@solana/web3.js";import Es from"bn.js";import Rs from"big.js";import gn from"bn.js";import Ne from"bn.js";var St=9e15,ct=1e9,Dn="0123456789abcdef",an="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",un="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Vn={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-St,maxE:St,crypto:!1},Xi,$e,U=!0,ln="[DecimalError] ",ut=ln+"Invalid argument: ",zi=ln+"Precision limit exceeded",Hi=ln+"crypto unavailable",Qi="[object Decimal]",Be=Math.floor,fe=Math.pow,Bo=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,xo=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Io=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Yi=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,De=1e7,q=7,So=9007199254740991,Ko=an.length-1,Wn=un.length-1,w={toStringTag:Qi};w.absoluteValue=w.abs=function(){var i=new this.constructor(this);return i.s<0&&(i.s=1),F(i)};w.ceil=function(){return F(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(ut+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,c=o.s,u=i.s;if(!s||!a)return!c||!u?NaN:c!==u?c:s===a?0:!s^c<0?1:-1;if(!s[0]||!a[0])return s[0]?c:a[0]?-u:0;if(c!==u)return c;if(o.e!==i.e)return o.e>i.e^c<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]^c<0?1:-1;return n===r?0:n>r^c<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())+q,n.rounding=1,t=Co(n,er(n,t)),n.precision=i,n.rounding=e,F($e==2||$e==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,c,u,l=this,d=l.constructor;if(!l.isFinite()||l.isZero())return new d(l);for(U=!1,o=l.s*fe(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=we(l.d),i=l.e,(o=(i-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=fe(t,1/3),i=Be((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 d(t),n.s=l.s):n=new d(o.toString()),s=(i=d.precision)+3;;)if(a=n,c=a.times(a).times(a),u=c.plus(l),n=se(u.plus(l).times(a),u.plus(c),s+2,1),we(a.d).slice(0,s)===(t=we(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!r&&t=="4999"){if(!r&&(F(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")&&(F(n,i+1,1),e=!n.times(n).times(n).eq(l));break}return U=!0,F(n,i,d.rounding,e)};w.decimalPlaces=w.dp=function(){var i,e=this.d,t=NaN;if(e){if(i=e.length-1,t=(i-Be(this.e/q))*q,i=e[i],i)for(;i%10==0;i/=10)t--;t<0&&(t=0)}return t};w.dividedBy=w.div=function(i){return se(this,new this.constructor(i))};w.dividedToIntegerBy=w.divToInt=function(i){var e=this,t=e.constructor;return F(se(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 F(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/dn(4,i)).toString()):(i=16,e="2.3283064365386962890625e-10"),o=Kt(s,1,o.times(e),new s(1),!0);for(var c,u=i,l=new s(8);u--;)c=o.times(o),o=a.minus(c.times(l.minus(c.times(l))));return F(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=Kt(o,2,r,r,!0);else{i=1.4*Math.sqrt(n),i=i>16?16:i|0,r=r.times(1/dn(5,i)),r=Kt(o,2,r,r,!0);for(var s,a=new o(5),c=new o(16),u=new o(20);i--;)s=r.times(r),r=r.times(a.plus(s.times(c.times(s).plus(u))))}return o.precision=e,o.rounding=t,F(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,se(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()?ve(t,r,o):new t(0):new t(NaN):e.isZero()?ve(t,r+4,o).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),i=ve(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,U=!1,t=t.times(t).minus(1).sqrt().plus(t),U=!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,U=!1,t=t.times(t).plus(1).sqrt().plus(t),U=!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?F(new o(r),i,e,!0):(o.precision=t=n-r.e,r=se(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=ve(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,c,u=this,l=u.constructor,d=l.precision,m=l.rounding;if(u.isFinite()){if(u.isZero())return new l(u);if(u.abs().eq(1)&&d+4<=Wn)return s=ve(l,d+4,m).times(.25),s.s=u.s,s}else{if(!u.s)return new l(NaN);if(d+4<=Wn)return s=ve(l,d+4,m).times(.5),s.s=u.s,s}for(l.precision=a=d+10,l.rounding=1,t=Math.min(28,a/q+2|0),i=t;i;--i)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(U=!1,e=Math.ceil(a/q),n=1,c=u.times(u),s=new l(u),r=u;i!==-1;)if(r=r.times(c),o=s.minus(r.div(n+=2)),r=r.times(c),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)),U=!0,F(s,l.precision=d,l.rounding=m,!0)};w.isFinite=function(){return!!this.d};w.isInteger=w.isInt=function(){return!!this.d&&Be(this.e/q)>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,c,u=this,l=u.constructor,d=l.precision,m=l.rounding,p=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=u.d,u.s<0||!t||!t[0]||u.eq(1))return new l(t&&!t[0]?-1/0:u.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(U=!1,a=d+p,s=at(u,a),n=e?cn(l,a+10):at(i,a),c=se(s,n,a,1),Et(c.d,r=d,m))do if(a+=10,s=at(u,a),n=e?cn(l,a+10):at(i,a),c=se(s,n,a,1),!o){+we(c.d).slice(r+1,r+15)+1==1e14&&(c=F(c,d+1,0));break}while(Et(c.d,r+=10,m));return U=!0,F(c,d,m)};w.minus=w.sub=function(i){var e,t,n,r,o,s,a,c,u,l,d,m,p=this,g=p.constructor;if(i=new g(i),!p.d||!i.d)return!p.s||!i.s?i=new g(NaN):p.d?i.s=-i.s:i=new g(i.d||p.s!==i.s?p:NaN),i;if(p.s!=i.s)return i.s=-i.s,p.plus(i);if(u=p.d,m=i.d,a=g.precision,c=g.rounding,!u[0]||!m[0]){if(m[0])i.s=-i.s;else if(u[0])i=new g(p);else return new g(c===3?-0:0);return U?F(i,a,c):i}if(t=Be(i.e/q),l=Be(p.e/q),u=u.slice(),o=l-t,o){for(d=o<0,d?(e=u,o=-o,s=m.length):(e=m,t=l,s=u.length),n=Math.max(Math.ceil(a/q),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=u.length,s=m.length,d=n<s,d&&(s=n),n=0;n<s;n++)if(u[n]!=m[n]){d=u[n]<m[n];break}o=0}for(d&&(e=u,u=m,m=e,i.s=-i.s),s=u.length,n=m.length-s;n>0;--n)u[s++]=0;for(n=m.length;n>o;){if(u[--n]<m[n]){for(r=n;r&&u[--r]===0;)u[r]=De-1;--u[r],u[n]+=De}u[n]-=m[n]}for(;u[--s]===0;)u.pop();for(;u[0]===0;u.shift())--t;return u[0]?(i.d=u,i.e=mn(u,t),U?F(i,a,c):i):new g(c===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]?F(new n(t),n.precision,n.rounding):(U=!1,n.modulo==9?(e=se(t,i.abs(),0,3,1),e.s*=i.s):e=se(t,i,0,n.modulo,1),e=e.times(i),U=!0,t.minus(e))};w.naturalExponential=w.exp=function(){return qn(this)};w.naturalLogarithm=w.ln=function(){return at(this)};w.negated=w.neg=function(){var i=new this.constructor(this);return i.s=-i.s,F(i)};w.plus=w.add=function(i){var e,t,n,r,o,s,a,c,u,l,d=this,m=d.constructor;if(i=new m(i),!d.d||!i.d)return!d.s||!i.s?i=new m(NaN):d.d||(i=new m(i.d||d.s===i.s?d:NaN)),i;if(d.s!=i.s)return i.s=-i.s,d.minus(i);if(u=d.d,l=i.d,a=m.precision,c=m.rounding,!u[0]||!l[0])return l[0]||(i=new m(d)),U?F(i,a,c):i;if(o=Be(d.e/q),n=Be(i.e/q),u=u.slice(),r=o-n,r){for(r<0?(t=u,r=-r,s=l.length):(t=l,n=o,s=u.length),o=Math.ceil(a/q),s=o>s?o+1:s+1,r>s&&(r=s,t.length=1),t.reverse();r--;)t.push(0);t.reverse()}for(s=u.length,r=l.length,s-r<0&&(r=s,t=l,l=u,u=t),e=0;r;)e=(u[--r]=u[r]+l[r]+e)/De|0,u[r]%=De;for(e&&(u.unshift(e),++n),s=u.length;u[--s]==0;)u.pop();return i.d=u,i.e=mn(u,n),U?F(i,a,c):i};w.precision=w.sd=function(i){var e,t=this;if(i!==void 0&&i!==!!i&&i!==1&&i!==0)throw Error(ut+i);return t.d?(e=ji(t.d),i&&t.e+1>e&&(e=t.e+1)):e=NaN,e};w.round=function(){var i=this,e=i.constructor;return F(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())+q,n.rounding=1,t=Ro(n,er(n,t)),n.precision=i,n.rounding=e,F($e>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,c=s.e,u=s.s,l=s.constructor;if(u!==1||!a||!a[0])return new l(!u||u<0&&(!a||a[0])?NaN:a?s:1/0);for(U=!1,u=Math.sqrt(+s),u==0||u==1/0?(e=we(a),(e.length+c)%2==0&&(e+="0"),u=Math.sqrt(e),c=Be((c+1)/2)-(c<0||c%2),u==1/0?e="5e"+c:(e=u.toExponential(),e=e.slice(0,e.indexOf("e")+1)+c),n=new l(e)):n=new l(u.toString()),t=(c=l.precision)+3;;)if(o=n,n=o.plus(se(s,o,t+2,1)).times(.5),we(o.d).slice(0,t)===(e=we(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(F(o,c+1,0),o.times(o).eq(s))){n=o;break}t+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(F(n,c+1,1),i=!n.times(n).eq(s));break}return U=!0,F(n,c,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=se(t,new n(1).minus(t.times(t)).sqrt(),i+10,0),n.precision=i,n.rounding=e,F($e==2||$e==4?t.neg():t,i,e,!0)):new n(NaN)};w.times=w.mul=function(i){var e,t,n,r,o,s,a,c,u,l=this,d=l.constructor,m=l.d,p=(i=new d(i)).d;if(i.s*=l.s,!m||!m[0]||!p||!p[0])return new d(!i.s||m&&!m[0]&&!p||p&&!p[0]&&!m?NaN:!m||!p?i.s/0:i.s*0);for(t=Be(l.e/q)+Be(i.e/q),c=m.length,u=p.length,c<u&&(o=m,m=p,p=o,s=c,c=u,u=s),o=[],s=c+u,n=s;n--;)o.push(0);for(n=u;--n>=0;){for(e=0,r=c+n;r>n;)a=o[r]+p[n]*m[r-n-1]+e,o[r--]=a%De|0,e=a/De|0;o[r]=(o[r]+e)%De|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),i.d=o,i.e=mn(o,t),U?F(i,d.precision,d.rounding):i};w.toBinary=function(i,e){return Un(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:(Ke(i,0,ct),e===void 0?e=n.rounding:Ke(e,0,8),F(t,i+t.e+1,e))};w.toExponential=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=ze(n,!0):(Ke(i,0,ct),e===void 0?e=r.rounding:Ke(e,0,8),n=F(new r(n),i+1,e),t=ze(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=ze(r):(Ke(i,0,ct),e===void 0?e=o.rounding:Ke(e,0,8),n=F(new o(r),i+r.e+1,e),t=ze(n,!1,i+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};w.toFraction=function(i){var e,t,n,r,o,s,a,c,u,l,d,m,p=this,g=p.d,f=p.constructor;if(!g)return new f(p);if(u=t=new f(1),n=c=new f(0),e=new f(n),o=e.e=ji(g)-p.e-1,s=o%q,e.d[0]=fe(10,s<0?q+s:s),i==null)i=o>0?e:u;else{if(a=new f(i),!a.isInt()||a.lt(u))throw Error(ut+a);i=a.gt(e)?o>0?e:u:a}for(U=!1,a=new f(we(g)),l=f.precision,f.precision=o=g.length*q*2;d=se(a,e,0,1,1),r=t.plus(d.times(n)),r.cmp(i)!=1;)t=n,n=r,r=u,u=c.plus(d.times(r)),c=r,r=e,e=a.minus(d.times(r)),a=r;return r=se(i.minus(t),n,0,1,1),c=c.plus(r.times(u)),t=t.plus(r.times(n)),c.s=u.s=p.s,m=se(u,n,o,1).minus(p).abs().cmp(se(c,t,o,1).minus(p).abs())<1?[u,n]:[c,t],f.precision=l,U=!0,m};w.toHexadecimal=w.toHex=function(i,e){return Un(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:Ke(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]?(U=!1,t=se(t,i,0,e,1).times(i),U=!0,F(t)):(i.s=t.s,t=i),t};w.toNumber=function(){return+this};w.toOctal=function(i,e){return Un(this,8,i,e)};w.toPower=w.pow=function(i){var e,t,n,r,o,s,a=this,c=a.constructor,u=+(i=new c(i));if(!a.d||!i.d||!a.d[0]||!i.d[0])return new c(fe(+a,u));if(a=new c(a),a.eq(1))return a;if(n=c.precision,o=c.rounding,i.eq(1))return F(a,n,o);if(e=Be(i.e/q),e>=i.d.length-1&&(t=u<0?-u:u)<=So)return r=Zi(c,a,t,n),i.s<0?new c(1).div(r):F(r,n,o);if(s=a.s,s<0){if(e<i.d.length-1)return new c(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=fe(+a,u),e=t==0||!isFinite(t)?Be(u*(Math.log("0."+we(a.d))/Math.LN10+a.e+1)):new c(t+"").e,e>c.maxE+1||e<c.minE-1?new c(e>0?s/0:0):(U=!1,c.rounding=a.s=1,t=Math.min(12,(e+"").length),r=qn(i.times(at(a,n+t)),n),r.d&&(r=F(r,n+5,1),Et(r.d,n,o)&&(e=n+10,r=F(qn(i.times(at(a,e+t)),e),e+5,1),+we(r.d).slice(n+1,n+15)+1==1e14&&(r=F(r,n+1,0)))),r.s=s,U=!0,c.rounding=o,F(r,n,o))};w.toPrecision=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=ze(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(Ke(i,1,ct),e===void 0?e=r.rounding:Ke(e,0,8),n=F(new r(n),i,e),t=ze(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):(Ke(i,1,ct),e===void 0?e=n.rounding:Ke(e,0,8)),F(new n(t),i,e)};w.toString=function(){var i=this,e=i.constructor,t=ze(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()&&!i.isZero()?"-"+t:t};w.truncated=w.trunc=function(){return F(new this.constructor(this),this.e+1,1)};w.valueOf=w.toJSON=function(){var i=this,e=i.constructor,t=ze(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()?"-"+t:t};function we(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=q-n.length,t&&(o+=st(t)),o+=n;s=i[e],n=s+"",t=q-n.length,t&&(o+=st(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Ke(i,e,t){if(i!==~~i||i<e||i>t)throw Error(ut+i)}function Et(i,e,t,n){var r,o,s,a;for(o=i[0];o>=10;o/=10)--e;return--e<0?(e+=q,r=0):(r=Math.ceil((e+1)/q),e%=q),o=fe(10,q-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)==fe(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)==fe(10,e-3)-1,s}function sn(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]+=Dn.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 Co(i,e){var t,n,r;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),r=(1/dn(4,t)).toString()):(t=16,r="2.3283064365386962890625e-10"),i.precision+=t,e=Kt(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 se=function(){function i(n,r,o){var s,a=0,c=n.length;for(n=n.slice();c--;)s=n[c]*r+a,n[c]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,r,o,s){var a,c;if(o!=s)c=o>s?1:-1;else for(a=c=0;a<o;a++)if(n[a]!=r[a]){c=n[a]>r[a]?1:-1;break}return c}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,c){var u,l,d,m,p,g,f,y,b,k,P,B,I,x,N,R,W,h,L,ae,z=n.constructor,Pe=n.s==r.s?1:-1,Z=n.d,D=r.d;if(!Z||!Z[0]||!D||!D[0])return new z(!n.s||!r.s||(Z?D&&Z[0]==D[0]:!D)?NaN:Z&&Z[0]==0||!D?Pe*0:Pe/0);for(c?(p=1,l=n.e-r.e):(c=De,p=q,l=Be(n.e/p)-Be(r.e/p)),L=D.length,W=Z.length,b=new z(Pe),k=b.d=[],d=0;D[d]==(Z[d]||0);d++);if(D[d]>(Z[d]||0)&&l--,o==null?(x=o=z.precision,s=z.rounding):a?x=o+(n.e-r.e)+1:x=o,x<0)k.push(1),g=!0;else{if(x=x/p+2|0,d=0,L==1){for(m=0,D=D[0],x++;(d<W||m)&&x--;d++)N=m*c+(Z[d]||0),k[d]=N/D|0,m=N%D|0;g=m||d<W}else{for(m=c/(D[0]+1)|0,m>1&&(D=i(D,m,c),Z=i(Z,m,c),L=D.length,W=Z.length),R=L,P=Z.slice(0,L),B=P.length;B<L;)P[B++]=0;ae=D.slice(),ae.unshift(0),h=D[0],D[1]>=c/2&&++h;do m=0,u=e(D,P,L,B),u<0?(I=P[0],L!=B&&(I=I*c+(P[1]||0)),m=I/h|0,m>1?(m>=c&&(m=c-1),f=i(D,m,c),y=f.length,B=P.length,u=e(f,P,y,B),u==1&&(m--,t(f,L<y?ae:D,y,c))):(m==0&&(u=m=1),f=D.slice()),y=f.length,y<B&&f.unshift(0),t(P,f,B,c),u==-1&&(B=P.length,u=e(D,P,L,B),u<1&&(m++,t(P,L<B?ae:D,B,c))),B=P.length):u===0&&(m++,P=[0]),k[d++]=m,u&&P[0]?P[B++]=Z[R]||0:(P=[Z[R]],B=1);while((R++<W||P[0]!==void 0)&&x--);g=P[0]!==void 0}k[0]||k.shift()}if(p==1)b.e=l,Xi=g;else{for(d=1,m=k[0];m>=10;m/=10)d++;b.e=d+l*p-1,F(b,a?o+b.e+1:o,s,g)}return b}}();function F(i,e,t,n){var r,o,s,a,c,u,l,d,m,p=i.constructor;e:if(e!=null){if(d=i.d,!d)return i;for(r=1,a=d[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=q,s=e,l=d[m=0],c=l/fe(10,r-s-1)%10|0;else if(m=Math.ceil((o+1)/q),a=d.length,m>=a)if(n){for(;a++<=m;)d.push(0);l=c=0,r=1,o%=q,s=o-q+1}else break e;else{for(l=a=d[m],r=1;a>=10;a/=10)r++;o%=q,s=o-q+r,c=s<0?0:l/fe(10,r-s-1)%10|0}if(n=n||e<0||d[m+1]!==void 0||(s<0?l:l%fe(10,r-s-1)),u=t<4?(c||n)&&(t==0||t==(i.s<0?3:2)):c>5||c==5&&(t==4||n||t==6&&(o>0?s>0?l/fe(10,r-s):0:d[m-1])%10&1||t==(i.s<0?8:7)),e<1||!d[0])return d.length=0,u?(e-=i.e+1,d[0]=fe(10,(q-e%q)%q),i.e=-e||0):d[0]=i.e=0,i;if(o==0?(d.length=m,a=1,m--):(d.length=m+1,a=fe(10,q-o),d[m]=s>0?(l/fe(10,r-s)%fe(10,s)|0)*a:0),u)for(;;)if(m==0){for(o=1,s=d[0];s>=10;s/=10)o++;for(s=d[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(i.e++,d[0]==De&&(d[0]=1));break}else{if(d[m]+=a,d[m]!=De)break;d[m--]=0,a=1}for(o=d.length;d[--o]===0;)d.pop()}return U&&(i.e>p.maxE?(i.d=null,i.e=NaN):i.e<p.minE&&(i.e=0,i.d=[0])),i}function ze(i,e,t){if(!i.isFinite())return $i(i);var n,r=i.e,o=we(i.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+st(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(i.e<0?"e":"e+")+i.e):r<0?(o="0."+st(-r-1)+o,t&&(n=t-s)>0&&(o+=st(n))):r>=s?(o+=st(r+1-s),t&&(n=t-r-1)>0&&(o=o+"."+st(n))):((n=r+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(r+1===s&&(o+="."),o+=st(n))),o}function mn(i,e){var t=i[0];for(e*=q;t>=10;t/=10)e++;return e}function cn(i,e,t){if(e>Ko)throw U=!0,t&&(i.precision=t),Error(zi);return F(new i(an),e,1,!0)}function ve(i,e,t){if(e>Wn)throw Error(zi);return F(new i(un),e,t,!0)}function ji(i){var e=i.length-1,t=e*q+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 st(i){for(var e="";i--;)e+="0";return e}function Zi(i,e,t,n){var r,o=new i(1),s=Math.ceil(n/q+4);for(U=!1;;){if(t%2&&(o=o.times(e),Gi(o.d,s)&&(r=!0)),t=Be(t/2),t===0){t=o.d.length-1,r&&o.d[t]===0&&++o.d[t];break}e=e.times(e),Gi(e.d,s)}return U=!0,o}function qi(i){return i.d[i.d.length-1]&1}function Ji(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 qn(i,e){var t,n,r,o,s,a,c,u=0,l=0,d=0,m=i.constructor,p=m.rounding,g=m.precision;if(!i.d||!i.d[0]||i.e>17)return new m(i.d?i.d[0]?i.s<0?0:1/0:1:i.s?i.s<0?0:i:0/0);for(e==null?(U=!1,c=g):c=e,a=new m(.03125);i.e>-2;)i=i.times(a),d+=5;for(n=Math.log(fe(2,d))/Math.LN10*2+5|0,c+=n,t=o=s=new m(1),m.precision=c;;){if(o=F(o.times(i),c,1),t=t.times(++l),a=s.plus(se(o,t,c,1)),we(a.d).slice(0,c)===we(s.d).slice(0,c)){for(r=d;r--;)s=F(s.times(s),c,1);if(e==null)if(u<3&&Et(s.d,c-n,p,u))m.precision=c+=10,t=o=a=new m(1),l=0,u++;else return F(s,m.precision=g,p,U=!0);else return m.precision=g,s}s=a}}function at(i,e){var t,n,r,o,s,a,c,u,l,d,m,p=1,g=10,f=i,y=f.d,b=f.constructor,k=b.rounding,P=b.precision;if(f.s<0||!y||!y[0]||!f.e&&y[0]==1&&y.length==1)return new b(y&&!y[0]?-1/0:f.s!=1?NaN:y?0:f);if(e==null?(U=!1,l=P):l=e,b.precision=l+=g,t=we(y),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(i),t=we(f.d),n=t.charAt(0),p++;o=f.e,n>1?(f=new b("0."+t),o++):f=new b(n+"."+t.slice(1))}else return u=cn(b,l+2,P).times(o+""),f=at(new b(n+"."+t.slice(1)),l-g).plus(u),b.precision=P,e==null?F(f,P,k,U=!0):f;for(d=f,c=s=f=se(f.minus(1),f.plus(1),l,1),m=F(f.times(f),l,1),r=3;;){if(s=F(s.times(m),l,1),u=c.plus(se(s,new b(r),l,1)),we(u.d).slice(0,l)===we(c.d).slice(0,l))if(c=c.times(2),o!==0&&(c=c.plus(cn(b,l+2,P).times(o+""))),c=se(c,new b(p),l,1),e==null)if(Et(c.d,l-g,k,a))b.precision=l+=g,u=s=f=se(d.minus(1),d.plus(1),l,1),m=F(f.times(f),l,1),r=a=1;else return F(c,b.precision=P,k,U=!0);else return b.precision=P,c;c=u,r+=2}}function $i(i){return String(i.s*i.s/0)}function Gn(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)%q,t<0&&(n+=q),n<r){for(n&&i.d.push(+e.slice(0,n)),r-=q;n<r;)i.d.push(+e.slice(n,n+=q));e=e.slice(n),n=q-e.length}else n-=r;for(;n--;)e+="0";i.d.push(+e),U&&(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 No(i,e){var t,n,r,o,s,a,c,u,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Yi.test(e))return Gn(i,e)}else if(e==="Infinity"||e==="NaN")return+e||(i.s=NaN),i.e=NaN,i.d=null,i;if(xo.test(e))t=16,e=e.toLowerCase();else if(Bo.test(e))t=2;else if(Io.test(e))t=8;else throw Error(ut+e);for(o=e.search(/p/i),o>0?(c=+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=Zi(n,new n(t),o,o*2)),u=sn(e,t,De),l=u.length-1,o=l;u[o]===0;--o)u.pop();return o<0?new n(i.s*0):(i.e=mn(u,l),i.d=u,U=!1,s&&(i=se(i,r,a*4)),c&&(i=i.times(Math.abs(c)<54?fe(2,c):Ft.pow(2,c))),U=!0,i)}function Ro(i,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:Kt(i,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/dn(5,t)),e=Kt(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 Kt(i,e,t,n,r){var o,s,a,c,u=1,l=i.precision,d=Math.ceil(l/q);for(U=!1,c=t.times(t),a=new i(n);;){if(s=se(a.times(c),new i(e++*e++),l,1),a=r?n.plus(s):n.minus(s),n=se(s.times(c),new i(e++*e++),l,1),s=a.plus(n),s.d[d]!==void 0){for(o=d;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,u++}return U=!0,s.d.length=d+1,s}function dn(i,e){for(var t=i;--e;)t*=i;return t}function er(i,e){var t,n=e.s<0,r=ve(i,i.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return $e=n?4:1,e;if(t=e.divToInt(r),t.isZero())$e=n?3:2;else{if(e=e.minus(t.times(r)),e.lte(o))return $e=qi(t)?n?2:3:n?4:1,e;$e=qi(t)?n?1:4:n?3:2}return e.minus(r).abs()}function Un(i,e,t,n){var r,o,s,a,c,u,l,d,m,p=i.constructor,g=t!==void 0;if(g?(Ke(t,1,ct),n===void 0?n=p.rounding:Ke(n,0,8)):(t=p.precision,n=p.rounding),!i.isFinite())l=$i(i);else{for(l=ze(i),s=l.indexOf("."),g?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(l=l.replace(".",""),m=new p(1),m.e=l.length-s,m.d=sn(ze(m),10,r),m.e=m.d.length),d=sn(l,10,r),o=c=d.length;d[--c]==0;)d.pop();if(!d[0])l=g?"0p+0":"0";else{if(s<0?o--:(i=new p(i),i.d=d,i.e=o,i=se(i,m,t,n,0,r),d=i.d,o=i.e,u=Xi),s=d[t],a=r/2,u=u||d[t+1]!==void 0,u=n<4?(s!==void 0||u)&&(n===0||n===(i.s<0?3:2)):s>a||s===a&&(n===4||u||n===6&&d[t-1]&1||n===(i.s<0?8:7)),d.length=t,u)for(;++d[--t]>r-1;)d[t]=0,t||(++o,d.unshift(1));for(c=d.length;!d[c-1];--c);for(s=0,l="";s<c;s++)l+=Dn.charAt(d[s]);if(g){if(c>1)if(e==16||e==8){for(s=e==16?4:3,--c;c%s;c++)l+="0";for(d=sn(l,r,e),c=d.length;!d[c-1];--c);for(s=1,l="1.";s<c;s++)l+=Dn.charAt(d[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>c)for(o-=c;o--;)l+="0";else o<c&&(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 Gi(i,e){if(i.length>e)return i.length=e,!0}function Lo(i){return new this(i).abs()}function Oo(i){return new this(i).acos()}function Mo(i){return new this(i).acosh()}function Eo(i,e){return new this(i).plus(e)}function Fo(i){return new this(i).asin()}function _o(i){return new this(i).asinh()}function vo(i){return new this(i).atan()}function Do(i){return new this(i).atanh()}function Vo(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=ve(this,o,1).times(e.s>0?.25:.75),t.s=i.s):!e.d||i.isZero()?(t=e.s<0?ve(this,n,r):new this(0),t.s=i.s):!i.d||e.isZero()?(t=ve(this,o,1).times(.5),t.s=i.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(se(i,e,o,1)),e=ve(this,o,1),this.precision=n,this.rounding=r,t=i.s<0?t.minus(e):t.plus(e)):t=this.atan(se(i,e,o,1)),t}function Wo(i){return new this(i).cbrt()}function qo(i){return F(i=new this(i),i.e+1,2)}function Go(i,e,t){return new this(i).clamp(e,t)}function Uo(i){if(!i||typeof i!="object")throw Error(ln+"Object expected");var e,t,n,r=i.defaults===!0,o=["precision",1,ct,"rounding",0,8,"toExpNeg",-St,0,"toExpPos",0,St,"maxE",0,St,"minE",-St,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],r&&(this[t]=Vn[t]),(n=i[t])!==void 0)if(Be(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(ut+t+": "+n);if(t="crypto",r&&(this[t]=Vn[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(Hi);else this[t]=!1;else throw Error(ut+t+": "+n);return this}function Xo(i){return new this(i).cos()}function zo(i){return new this(i).cosh()}function tr(i){var e,t,n;function r(o){var s,a,c,u=this;if(!(u instanceof r))return new r(o);if(u.constructor=r,Ui(o)){u.s=o.s,U?!o.d||o.e>r.maxE?(u.e=NaN,u.d=null):o.e<r.minE?(u.e=0,u.d=[0]):(u.e=o.e,u.d=o.d.slice()):(u.e=o.e,u.d=o.d?o.d.slice():o.d);return}if(c=typeof o,c==="number"){if(o===0){u.s=1/o<0?-1:1,u.e=0,u.d=[0];return}if(o<0?(o=-o,u.s=-1):u.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;U?s>r.maxE?(u.e=NaN,u.d=null):s<r.minE?(u.e=0,u.d=[0]):(u.e=s,u.d=[o]):(u.e=s,u.d=[o]);return}else if(o*0!==0){o||(u.s=NaN),u.e=NaN,u.d=null;return}return Gn(u,o.toString())}else if(c!=="string")throw Error(ut+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),u.s=-1):(a===43&&(o=o.slice(1)),u.s=1),Yi.test(o)?Gn(u,o):No(u,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=Uo,r.clone=tr,r.isDecimal=Ui,r.abs=Lo,r.acos=Oo,r.acosh=Mo,r.add=Eo,r.asin=Fo,r.asinh=_o,r.atan=vo,r.atanh=Do,r.atan2=Vo,r.cbrt=Wo,r.ceil=qo,r.clamp=Go,r.cos=Xo,r.cosh=zo,r.div=Ho,r.exp=Qo,r.floor=Yo,r.hypot=jo,r.ln=Zo,r.log=Jo,r.log10=es,r.log2=$o,r.max=ts,r.min=ns,r.mod=is,r.mul=rs,r.pow=os,r.random=ss,r.round=as,r.sign=us,r.sin=cs,r.sinh=ls,r.sqrt=ms,r.sub=ds,r.sum=ps,r.tan=fs,r.tanh=bs,r.trunc=ys,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 Ho(i,e){return new this(i).div(e)}function Qo(i){return new this(i).exp()}function Yo(i){return F(i=new this(i),i.e+1,3)}function jo(){var i,e,t=new this(0);for(U=!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 U=!0,new this(1/0);t=e}return U=!0,t.sqrt()}function Ui(i){return i instanceof Ft||i&&i.toStringTag===Qi||!1}function Zo(i){return new this(i).ln()}function Jo(i,e){return new this(i).log(e)}function $o(i){return new this(i).log(2)}function es(i){return new this(i).log(10)}function ts(){return Ji(this,arguments,"lt")}function ns(){return Ji(this,arguments,"gt")}function is(i,e){return new this(i).mod(e)}function rs(i,e){return new this(i).mul(e)}function os(i,e){return new this(i).pow(e)}function ss(i){var e,t,n,r,o=0,s=new this(1),a=[];if(i===void 0?i=this.precision:Ke(i,1,ct),n=Math.ceil(i/q),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(Hi);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],i%=q,n&&i&&(r=fe(10,q-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-=q)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<q&&(t-=q-n)}return s.e=t,s.d=a,s}function as(i){return F(i=new this(i),i.e+1,this.rounding)}function us(i){return i=new this(i),i.d?i.d[0]?i.s:0*i.s:i.s||NaN}function cs(i){return new this(i).sin()}function ls(i){return new this(i).sinh()}function ms(i){return new this(i).sqrt()}function ds(i,e){return new this(i).sub(e)}function ps(){var i=0,e=arguments,t=new this(e[i]);for(U=!1;t.s&&++i<e.length;)t=t.plus(e[i]);return U=!0,F(t,this.precision,this.rounding)}function fs(i){return new this(i).tan()}function bs(i){return new this(i).tanh()}function ys(i){return F(i=new this(i),i.e+1,1)}w[Symbol.for("nodejs.util.inspect.custom")]=w.toString;w[Symbol.toStringTag]="Decimal";var Ft=w.constructor=tr(Vn);an=new Ft(an);un=new Ft(un);var M=Ft;import{PublicKey as Yn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as gs}from"@solana/spl-token";import{PublicKey as le,SystemProgram as nr,SYSVAR_RENT_PUBKEY as As}from"@solana/web3.js";function T({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var pu=[T({pubkey:gs,isWritable:!1}),T({pubkey:nr.programId,isWritable:!1}),T({pubkey:As,isWritable:!1})];function Xn({publicKey:i,transformSol:e}){let t=zn(i.toString());if(t instanceof le)return e&&t.equals(_t)?He:t;if(e&&t.toString()===_t.toBase58())return He;if(typeof t=="string"){if(t===le.default.toBase58())return le.default;try{return new le(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function zn(i){try{return new le(i)}catch{return i}}var pn=new le("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Hn=new le("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),yt=new le("SysvarRent111111111111111111111111111111111"),fu=new le("SysvarC1ock11111111111111111111111111111111"),Ct=new le("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),bu=new le("Sysvar1nstructions1111111111111111111111111"),Ps=nr.programId,yu=new le("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),gu=new le("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Au=new le("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Pu=new le("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),ku=new le("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),wu=new le("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),hu=new le("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Tu=new le("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Bu=new le("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),xu=new le("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Iu=new le("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),He=new le("So11111111111111111111111111111111111111112"),_t=le.default;function Qe(i){return Xn({publicKey:i,transformSol:!0})}import{PublicKey as ks}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ir}from"@solana/spl-token";var Qn={chainId:101,address:ks.default.toBase58(),programId:ir.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Ye={chainId:101,address:"So11111111111111111111111111111111111111112",programId:ir.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 jn=class{constructor({mint:e,decimals:t,symbol:n,name:r,skipMint:o=!1,isToken2022:s=!1}){if(e===_t.toBase58()||e instanceof Yn&&_t.equals(e)){this.decimals=Ye.decimals,this.symbol=Ye.symbol,this.name=Ye.name,this.mint=new Yn(Ye.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?Yn.default:Xn({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Re=jn;Re.WSOL=new jn(X(v({},Ye),{mint:Ye.address}));import bn from"big.js";import Ts from"bn.js";import Bs from"decimal.js-light";import ws from"toformat";var hs=ws,vt=hs;var fn=oe("module/fraction"),Zn=vt(bn),Dt=vt(Bs),xs={[0]:Dt.ROUND_DOWN,[1]:Dt.ROUND_HALF_UP,[2]:Dt.ROUND_UP},Is={[0]:bn.roundDown,[1]:bn.roundHalfUp,[2]:bn.roundUp},ie=class{constructor(e,t=new Ts(1)){this.numerator=ue(e),this.denominator=ue(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new ie(this.denominator,this.numerator)}add(e){let t=e instanceof ie?e:new ie(ue(e));return this.denominator.eq(t.denominator)?new ie(this.numerator.add(t.numerator),this.denominator):new ie(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof ie?e:new ie(ue(e));return this.denominator.eq(t.denominator)?new ie(this.numerator.sub(t.numerator),this.denominator):new ie(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof ie?e:new ie(ue(e));return new ie(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof ie?e:new ie(ue(e));return new ie(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||fn.logWithError(`${e} is not an integer.`),e<=0&&fn.logWithError(`${e} is not positive.`),Dt.set({precision:e+1,rounding:xs[n]});let r=new Dt(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)||fn.logWithError(`${e} is not an integer.`),e<0&&fn.logWithError(`${e} is negative.`),Zn.DP=e,Zn.RM=Is[n]||1,new Zn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Ks=oe("Raydium_price"),Ce=class extends ie{constructor(t){let{baseToken:n,quoteToken:r,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=r,this.scalar=new ie(Jn(n.decimals),Jn(r.decimals))}get raw(){return new ie(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&&Ks.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 $n=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},yn=$n;yn.SOL=new $n(Qn);import Cs from"bn.js";var rr=new ie(new Cs(100)),lt=class extends ie{toSignificant(e=5,t,n){return this.mul(rr).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(rr).toFixed(e,t,n)}};var or=new Ne(0),Ns=new Ne(1),hc=new Ne(2),Tc=new Ne(3),Bc=new Ne(5),ei=new Ne(10),xc=new Ne(100),Ic=new Ne(1e3),Sc=new Ne(1e4),sr=9007199254740991;function ue(i){let e=oe("Raydium_parseBigNumberish");if(i instanceof Ne)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new Ne(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=sr||i<=-sr)&&e.logWithError(`BigNumberish number overflow: ${i}`),new Ne(String(i))):typeof i=="bigint"?new Ne(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new Ne(0))}function Jn(i){return ei.pow(ue(i))}var Ls=oe("Raydium_amount"),ur=vt(Rs);function Os(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")):Ls.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,n.slice(0,e)||n]}var ce=class extends ie{constructor(t,n,r=!0,o){let s=new gn(0),a=ei.pow(new gn(t.decimals));if(r)s=ue(n);else{let c=new gn(0),u=new gn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,d]=Os(n.toString(),t.decimals);c=ue(l),u=ue(d)}c=c.mul(a),s=c.add(u)}super(s,a);this.logger=oe(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 ce(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new ce(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 ur.DP=this.token.decimals,new ur(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};function ar(i){return typeof i=="object"&&i!==null&&![Re,ce,Ms,ie,Es,Ce,lt].some(e=>typeof e=="object"&&i instanceof e)}function gt(i){return typeof i=="string"?zn(i):Array.isArray(i)?i.map(e=>gt(e)):ar(i)?Object.fromEntries(Object.entries(i).map(([e,t])=>[e,gt(t)])):i}import{PublicKey as qt,sendAndConfirmTransaction as Gt,Transaction as Ut,TransactionMessage as Xt,VersionedTransaction as zt}from"@solana/web3.js";import Xs from"axios";var $={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut"};import{PublicKey as Fs,ComputeBudgetProgram as cr,Transaction as mr,TransactionMessage as _s,Keypair as dr,VersionedTransaction as pr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as vs}from"@solana/spl-token";var lr=oe("Raydium_txUtil"),fr=1644;function An(i){let e=[],t=[];return i.microLamports&&(e.push(cr.setComputeUnitPrice({microLamports:i.microLamports})),t.push($.SetComputeUnitPrice)),i.units&&(e.push(cr.setComputeUnitLimit({units:i.units})),t.push($.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Nt(i,e){var n,r;let t=e!=null?e:"confirmed";try{return((r=await((n=i.getLatestBlockhash)==null?void 0:n.call(i,{commitment:t})))==null?void 0:r.blockhash)||(await i.getRecentBlockhash(t)).blockhash}catch{return(await i.getRecentBlockhash(t)).blockhash}}function Ds(i,e){i.length<1&&lr.logWithError(`no instructions provided: ${i.toString()}`),e.length<1&&lr.logWithError(`no signers provided:, ${e.toString()}`);let t=new mr;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...i);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<fr}catch{return!1}}function xe(i,e){let[t,n]=Fs.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}function Vt({instructions:i,payer:e,signers:t}){return Ds(i,[e,...t])}function Wt({instructions:i,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=dr.generate().publicKey.toString()}){let o=new _s({payerKey:e,recentBlockhash:n,instructions:i}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new pr(o).serialize()).toString("base64").length<fr}catch{return!1}}var Vs=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i);function At(i){let e=[];return i.forEach(t=>{t instanceof mr&&(t.recentBlockhash||(t.recentBlockhash=vs.toBase58()),t.feePayer||(t.feePayer=dr.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof pr&&(n=Vs(n));let r=n.toString("base64");e.push(r)}),console.log("simulate tx string:",e),e}import{PublicKey as gr,AddressLookupTableAccount as Pn}from"@solana/web3.js";import{PublicKey as br}from"@solana/web3.js";import{MINT_SIZE as Ws,TOKEN_PROGRAM_ID as qs,getTransferFeeConfig as Gs,unpackMint as Us}from"@solana/spl-token";var ti=oe("Raydium_accountInfo_util");async function et(i,e,t){let{batchRequest:n,commitment:r="confirmed",chunkCount:o=100}=v({batchRequest:!1},t),s=ni(e,o),a=new Array(s.length).fill([]);if(n){let c=s.map(d=>{let m=i._buildArgs([d.map(p=>p.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=ni(c,10);a=(await(await Promise.all(u.map(async d=>await i._rpcBatchRequest(d)))).flat()).map(d=>(d.error&&ti.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${d.error.message}`),d.result.value.map(m=>{if(m){let{data:p,executable:g,lamports:f,owner:y,rentEpoch:b}=m;return p.length!==2&&p[1]!=="base64"&&ti.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:g,lamports:f,owner:new br(y),rentEpoch:b}}return null})))}else try{a=await Promise.all(s.map(c=>i.getMultipleAccountsInfo(c,r)))}catch(c){c instanceof Error&&ti.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${c.message}`)}return a.flat()}async function Pt(i,e,t){let n=await et(i,e.map(r=>r.pubkey),t);return e.map((r,o)=>X(v({},r),{accountInfo:n[o]}))}async function yr({connection:i,mints:e,config:t}){var o,s,a;if(e.length===0)return{};let n=await Pt(i,e.map(c=>({pubkey:Qe(c)})),t),r={};for(let c of n){if(!c.accountInfo||c.accountInfo.data.length<Ws){console.log("invalid mint account",c.pubkey.toBase58());continue}let u=Us(c.pubkey,c.accountInfo,(o=c.accountInfo)==null?void 0:o.owner);r[c.pubkey.toString()]=X(v({},u),{programId:((s=c.accountInfo)==null?void 0:s.owner)||qs,feeConfig:(a=Gs(u))!=null?a:void 0})}return r[br.default.toBase58()]=r[He.toBase58()],r}async function ii({connection:i,address:e}){let t=await et(i,[...new Set(e.map(r=>r.toString()))].map(r=>new gr(r))),n={};for(let r=0;r<e.length;r++){let o=t[r],s=e[r];if(!o)continue;let a=new Pn({key:s,state:Pn.deserialize(o.data)});n[s.toString()]=a,kn[s.toString()]=a}return n}var kn={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Pn({key:new gr("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Pn.deserialize(Buffer.from("AQAAAP//////////d49+DAAAAAAAAQZMWvw7GUNJdaccNBVnb57OKakxL2BHLYvhRwVILRsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkG3fbh7nWP3hhCXbzkbM3athr8TYO5DSf+vfko2KGL/AVKU1D4XciC1hSlVnJ4iilt3x6rq9CmBniISTL07vagBqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAIyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZC3BlsePRfEU4nVJ/awTDzVi4bHMaoP21SbbRvAP4KUbIScv+6Yw2LHF/6K0ZjUPibbSWXCirYPGuuVl7zT789IUPLW4CpHr4JNCatp3ELXDLKMv6JJ+37le50lbBJ2LvDQdRqCgtphMF/imcN7mY5YRx2xE1A3MQ+L4QRaYK9u4GRfZP3LsAd00a+IkCpA22UNQMKdq5BFbJuwuOLqc8zxCTDlqxBG8J0HcxtfogQHDK06ukzfaXiNDKAob1MqBHS9lJxDYCwz8gd5DtFqNSTKG5l1zxIaKpDP/sffi2is1H9aKveyXSu5StXElYRl9SD5As0DHE4N0GLnf84/siiKXVyp4Ez121kLcUui/jLLFZEz/BwZK3Ilf9B9OcsEAeDMKAy2vjGSxQODgBz0QwGA+eP4ZjIjrIAQaXENv31QfLlOdXSRCkaybRniDHF4C8YcwhcvsqrOVuTP4B2Na+9wLdtrB31uz2rtlFI5kahdsnp/d1SrASDInYCtTYtdoke4kX+hoKWcEWM4Tle8pTUkUVv4BxS6fje/EzKBE4Qu9N9LMnrw/JNO0hqMVB4rk/2ou4AB1loQ7FZoPwut2o4KZB+0p9xnbrQKw038qjpHar+PyDwvxBRcu5hpHw3dguezeWv+IwvgW5icu8EGkhGa9AkFPPJT7VMSFb8xowveU=","base64"))})};var wn=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster,this.blockhashCommitment=e.blockhashCommitment}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var n;let e=(await Xs.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(n=e==null?void 0:e[15])!=null?n:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:n}=An(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:r=[],endInstructionTypes:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...r),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==qt.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(v({},t||{})):this.build(t)}build(e){let t=new Ut;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async n=>{var a;let{recentBlockHash:r,skipPreflight:o=!0}=n||{},s=r!=null?r:await Nt(this.connection,this.blockhashCommitment);if(t.recentBlockhash=s,this.signers.length&&t.sign(...this.signers),At([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await Gt(this.connection,t,this.signers.find(c=>c.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:o}),signedTx:t};if(this.signAllTransactions){let c=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(c[0].serialize(),{skipPreflight:o}),signedTx:c[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:r}=this.build(n),o=t.filter(u=>u.transaction.instructions.length>0),s=[r,...o.map(u=>u.transaction)],a=[this.signers,...o.map(u=>u.signers)],c=[...this.instructionTypes,...o.map(u=>u.instructionTypes).flat()];return{builder:this,transactions:s,signers:a,instructionTypes:c,execute:async u=>{var f;let{sequentially:l,onTxUpdate:d,recentBlockHash:m,skipPreflight:p=!0}=u||{},g=m!=null?m:await Nt(this.connection,this.blockhashCommitment);if((f=this.owner)!=null&&f.isKeyPair){if(l){let y=[];for(let b of s){let k=await Gt(this.connection,b,this.signers.find(P=>P.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:p});y.push(k)}return{txIds:y,signedTxs:s}}return{txIds:await await Promise.all(s.map(async(y,b)=>(y.recentBlockhash=g,await Gt(this.connection,y,a[b].find(k=>k.publicKey.equals(this.owner.publicKey))?a[b]:[...a[b],this.owner.signer],{skipPreflight:p})))),signedTxs:s}}if(this.signAllTransactions){let y=s.map((k,P)=>(k.recentBlockhash=g,a[P].length&&k.sign(...a[P]),k));At(y);let b=await this.signAllTransactions(y);if(l){let k=0,P=[],B=async()=>{if(!b[k])return;let I=await this.connection.sendRawTransaction(b[k].serialize(),{skipPreflight:p});P.push({txId:I,status:"sent",signedTx:b[k]}),d==null||d([...P]),k++,this.connection.onSignature(I,x=>{let N=P.findIndex(R=>R.txId===I);N>-1&&(P[N].status=x.err?"error":"success"),d==null||d([...P]),x.err||B()},"processed"),this.connection.getSignatureStatus(I)};return await B(),{txIds:P.map(I=>I.txId),signedTxs:b}}else{let k=[];for(let P=0;P<b.length;P+=1){let B=await this.connection.sendRawTransaction(b[P].serialize(),{skipPreflight:p});k.push(B)}return{txIds:k,signedTxs:b}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){let m=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:r}=m,o=bt(m,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=v(v({},this.cluster==="devnet"?{}:kn),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),c=[];for(let p of a)s[p]===void 0&&c.push(new qt(p));let u=await ii({connection:this.connection,address:c});for(let[p,g]of Object.entries(u))s[p]=g;let l=new Xt({payerKey:this.feePayer,recentBlockhash:r?qt.default.toBase58():await Nt(this.connection,this.blockhashCommitment),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),d=new zt(l);return d.sign(this.signers),{builder:this,transaction:d,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async p=>{var y;let{recentBlockHash:g,skipPreflight:f=!0}=p||{};if(g&&(d.message.recentBlockhash=g),At([d]),(y=this.owner)!=null&&y.isKeyPair){this.signers.find(B=>B.publicKey.equals(this.owner.publicKey))||d.sign([this.owner.signer]);let b=await this.connection.sendTransaction(d,{skipPreflight:f}),{lastValidBlockHeight:k,blockhash:P}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});return await this.connection.confirmTransaction({blockhash:P,lastValidBlockHeight:k,signature:b},"confirmed"),{txId:b,signedTx:d}}if(this.signAllTransactions){let b=await this.signAllTransactions([d]);return{txId:await this.connection.sendTransaction(b[0],{skipPreflight:f}),signedTx:b[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async buildV0MultiTx(e){let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:r}=await this.buildV0(n),o=t.filter(u=>u.builder.instructions.length>0),s=[r,...o.map(u=>u.transaction)],a=[this.signers,...o.map(u=>u.signers)],c=[...this.instructionTypes,...o.map(u=>u.instructionTypes).flat()];return s.forEach(async(u,l)=>{u.sign(a[l])}),{builder:this,transactions:s,signers:a,instructionTypes:c,buildProps:n,execute:async u=>{var g;let{sequentially:l,onTxUpdate:d,recentBlockHash:m,skipPreflight:p=!0}=u||{};if(m&&s.forEach(f=>f.message.recentBlockhash=m),At(s),(g=this.owner)!=null&&g.isKeyPair){let{lastValidBlockHeight:f,blockhash:y}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});if(s.forEach((b,k)=>{a[k].find(P=>P.publicKey.equals(this.owner.publicKey))||b.sign([this.owner.signer])}),l){let b=[];for(let k of s){let P=await this.connection.sendTransaction(k,{skipPreflight:p}),{lastValidBlockHeight:B,blockhash:I}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:I,lastValidBlockHeight:B,signature:P},"confirmed"),b.push(P)}return{txIds:b,signedTxs:s}}return{txIds:await Promise.all(s.map(async b=>{let k=await this.connection.sendTransaction(b,{skipPreflight:p});return await this.connection.confirmTransaction({blockhash:y,lastValidBlockHeight:f,signature:k},"confirmed"),k})),signedTxs:s}}if(this.signAllTransactions){let f=await this.signAllTransactions(s);if(l){let y=0,b=[],k=async()=>{if(!f[y])return;let P=await this.connection.sendTransaction(f[y],{skipPreflight:p});b.push({txId:P,status:"sent",signedTx:f[y]}),d==null||d([...b]),y++,this.connection.onSignature(P,B=>{let I=b.findIndex(x=>x.txId===P);I>-1&&(b[I].status=B.err?"error":"success"),d==null||d([...b]),B.err||k()},"processed"),this.connection.getSignatureStatus(P)};return k(),{txIds:[],signedTxs:f}}else{let y=[];for(let b=0;b<f.length;b+=1){let k=await this.connection.sendTransaction(f[b],{skipPreflight:p});y.push(k)}return{txIds:y,signedTxs:f}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){let u=e||{},{computeBudgetConfig:t}=u,n=bt(u,["computeBudgetConfig"]),r=t?An(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,d)=>X(v({},l),{[d.publicKey.toBase58()]:d}),{}),s=[],a=[],c=[];if(this.allInstructions.forEach(l=>{let d=[...c,l],m=t?[...r.instructions,...d]:d,g=[...new Set(d.map(f=>f.keys.filter(y=>y.isSigner).map(y=>y.pubkey.toString())).flat()).values()].map(f=>new qt(f));if(c.length<12&&Vt({instructions:m,payer:this.feePayer,signers:g})||Vt({instructions:d,payer:this.feePayer,signers:g}))c.push(l);else{if(c.length===0)throw Error("item ins too big");Vt({instructions:t?[...r.instructions,...c]:[...c],payer:this.feePayer,signers:g})?s.push(new Ut().add(...r.instructions,...c)):s.push(new Ut().add(...c)),a.push(Array.from(new Set(c.map(f=>f.keys.filter(y=>y.isSigner).map(y=>y.pubkey.toString())).flat())).map(f=>o[f]).filter(f=>f!==void 0)),c=[l]}}),c.length>0){let d=[...new Set(c.map(m=>m.keys.filter(p=>p.isSigner).map(p=>p.pubkey.toString())).flat()).values()].map(m=>o[m]).filter(m=>m!==void 0);Vt({instructions:t?[...r.instructions,...c]:[...c],payer:this.feePayer,signers:d.map(m=>m.publicKey)})?s.push(new Ut().add(...r.instructions,...c)):s.push(new Ut().add(...c)),a.push(d)}return s.forEach(l=>l.feePayer=this.feePayer),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async l=>{var y;let{sequentially:d,onTxUpdate:m,recentBlockHash:p,skipPreflight:g=!0}=l||{},f=p!=null?p:await Nt(this.connection,this.blockhashCommitment);if(s.forEach(async(b,k)=>{b.recentBlockhash=f,a[k].length&&b.sign(...a[k])}),At(s),(y=this.owner)!=null&&y.isKeyPair){if(d){let b=[];for(let k of s){let P=await Gt(this.connection,k,this.signers.find(B=>B.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:g});b.push(P)}return{txIds:b,signedTxs:s}}return{txIds:await Promise.all(s.map(async(b,k)=>await Gt(this.connection,b,a[k].find(P=>P.publicKey.equals(this.owner.publicKey))?a[k]:[...a[k],this.owner.signer],{skipPreflight:g}))),signedTxs:s}}if(this.signAllTransactions){let b=await this.signAllTransactions(s);if(d){let k=0,P=[],B=async()=>{if(!b[k])return;let I=await this.connection.sendRawTransaction(b[k].serialize(),{skipPreflight:g});P.push({txId:I,status:"sent",signedTx:b[k]}),m==null||m([...P]),k++,this.connection.onSignature(I,x=>{let N=P.findIndex(R=>R.txId===I);N>-1&&(P[N].status=x.err?"error":"success"),m==null||m([...P]),x.err||B()},"processed"),this.connection.getSignatureStatus(I)};return await B(),{txIds:P.map(I=>I.txId),signedTxs:b}}else{let k=[];for(let P=0;P<b.length;P+=1){let B=await this.connection.sendRawTransaction(b[P].serialize(),{skipPreflight:g});k.push(B)}return{txIds:k,signedTxs:b}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){let y=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:r=[]}=y,o=bt(y,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=v(v({},this.cluster==="devnet"?{}:kn),n),a=Array.from(new Set([...this.lookupTableAddress,...r])),c=[];for(let b of a)s[b]===void 0&&c.push(new qt(b));let u=await ii({connection:this.connection,address:c});for(let[b,k]of Object.entries(u))s[b]=k;let l=t?An(t):{instructions:[],instructionTypes:[]},d=await Nt(this.connection,this.blockhashCommitment),m=this.signers.reduce((b,k)=>X(v({},b),{[k.publicKey.toBase58()]:k}),{}),p=[],g=[],f=[];if(this.allInstructions.forEach(b=>{let k=[...f,b],P=t?[...l.instructions,...k]:k;if(f.length<12&&Wt({instructions:P,payer:this.feePayer,lookupTableAddressAccount:s})||Wt({instructions:k,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(b);else{if(f.length===0)throw Error("item ins too big");let B={};for(let I of[...new Set(a)])s[I]!==void 0&&(B[I]=s[I]);if(t&&Wt({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:d})){let I=new Xt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new zt(I))}else{let I=new Xt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new zt(I))}g.push(Array.from(new Set(f.map(I=>I.keys.filter(x=>x.isSigner).map(x=>x.pubkey.toString())).flat())).map(I=>m[I]).filter(I=>I!==void 0)),f=[b]}}),f.length>0){let k=[...new Set(f.map(P=>P.keys.filter(B=>B.isSigner).map(B=>B.pubkey.toString())).flat()).values()].map(P=>m[P]).filter(P=>P!==void 0);if(t&&Wt({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:d})){let P=new Xt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new zt(P))}else{let P=new Xt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new zt(P))}g.push(k)}return{builder:this,transactions:p,buildProps:e,signers:g,instructionTypes:this.instructionTypes,execute:async b=>{var x;let{sequentially:k,onTxUpdate:P,recentBlockHash:B,skipPreflight:I=!0}=b||{};if(p.map(async(N,R)=>{g[R].length&&N.sign(g[R]),B&&(N.message.recentBlockhash=B)}),At(p),(x=this.owner)!=null&&x.isKeyPair){let{lastValidBlockHeight:N,blockhash:R}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});if(p.forEach((W,h)=>{g[h].find(L=>L.publicKey.equals(this.owner.publicKey))||W.sign([this.owner.signer])}),k){let W=[];for(let h of p){let L=await this.connection.sendTransaction(h,{skipPreflight:I}),{lastValidBlockHeight:ae,blockhash:z}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:z,lastValidBlockHeight:ae,signature:L},"confirmed"),W.push(L)}return{txIds:W,signedTxs:p}}return{txIds:await Promise.all(p.map(async W=>{let h=await this.connection.sendTransaction(W,{skipPreflight:I});return await this.connection.confirmTransaction({blockhash:R,lastValidBlockHeight:N,signature:h},"confirmed"),h})),signedTxs:p}}if(this.signAllTransactions){let N=await this.signAllTransactions(p);if(k){let R=0,W=[],h=async()=>{if(!N[R])return;let L=await this.connection.sendTransaction(N[R],{skipPreflight:I});W.push({txId:L,status:"sent",signedTx:N[R]}),P==null||P([...W]),R++,this.connection.onSignature(L,ae=>{let z=W.findIndex(Pe=>Pe.txId===L);z>-1&&(W[z].status=ae.err?"error":"success"),P==null||P([...W]),ae.err||h()},"processed"),this.connection.getSignatureStatus(L)};return h(),{txIds:[],signedTxs:N}}else{let R=[];for(let W=0;W<N.length;W+=1){let h=await this.connection.sendTransaction(N[W],{skipPreflight:I});R.push(h)}return{txIds:R,signedTxs:N}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};function ni(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 ee}from"@solana/web3.js";var _l=new ee("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),vl=new ee("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Dl=new ee("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Vl=new ee("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Wl=new ee("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),ri=new ee("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Pr=new ee("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),ql=new ee("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),kr=new ee("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),wr=new ee("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Gl=new ee("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Ul=new ee("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Xl=new ee("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),zl=new ee("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Hl=new ee("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Ql=new ee("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),hr=new ee("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Yl=new ee("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),jl=new ee("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),zs=new ee("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Hs=new ee("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Qs=new ee("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");var Zl={SERUM_MARKET:ee.default,OPENBOOK_MARKET:new ee("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:ee.default,FarmV3:new ee("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new ee("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new ee("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new ee("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new ee("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new ee("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new ee("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:zs,CREATE_CPMM_POOL_AUTH:Hs,CREATE_CPMM_POOL_FEE_ACC:Qs,FEE_DESTINATION_ID:new ee("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as Ys}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as js}from"@solana/spl-token";function je(i,e,t){return xe([i.toBuffer(),(t!=null?t:js).toBuffer(),e.toBuffer()],new Ys("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import Ve from"bn.js";var Ht=1e4;function be(i,e,t,n){if(e===void 0)return{amount:i,fee:void 0,expirationTime:void 0};let r=X(v({},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 Ve(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===Ht){let c=new Ve(o.maximumFee.toString());return{amount:i.add(c),fee:c,expirationTime:a}}else{let c=oi(i.mul(new Ve(Ht)),new Ve(Ht-o.transferFeeBasisPoints)),u=new Ve(o.maximumFee.toString()),l=c.sub(i).gt(u)?i.add(u):c,d=oi(l.mul(new Ve(o.transferFeeBasisPoints)),new Ve(Ht)),m=d.gt(s)?s:d;return{amount:l,fee:m,expirationTime:a}}else{let c=oi(i.mul(new Ve(o.transferFeeBasisPoints)),new Ve(Ht)),u=c.gt(s)?s:c;return{amount:i,fee:u,expirationTime:a}}}function Ze(i,e){return i===void 0?e:e===void 0?i:Math.min(i,e)}function oi(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new Ve(0))?t.add(new Ve(1)):t}var si=(...i)=>i.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Rt=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=oe(t)}createTxBuilder(e){return this.scope.checkOwner(),new wn({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(si(e))}logInfo(...e){this.logger.info(si(e))}logAndCreateError(...e){let t=si(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as ya,createCloseAccountInstruction as ga,createTransferInstruction as Aa,TOKEN_PROGRAM_ID as Lt}from"@solana/spl-token";import{PublicKey as Pa,SystemProgram as ka}from"@solana/web3.js";import wa from"bn.js";import{PublicKey as da,Keypair as pa}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as fa}from"@solana/spl-token";import qd from"bn.js";import{PublicKey as oa}from"@solana/web3.js";import Ir,{isBN as Sr}from"bn.js";import{bits as Sm,BitStructure as Km,blob as Zs,Blob as Cm,cstr as Nm,f32 as Rm,f32be as Lm,f64 as Om,f64be as Mm,greedy as Em,Layout as Js,ns64 as Fm,ns64be as _m,nu64 as vm,nu64be as Dm,offset as Vm,s16 as Wm,s16be as qm,s24 as Gm,s24be as Um,s32 as $s,s32be as Xm,s40 as zm,s40be as Hm,s48 as Qm,s48be as Ym,s8 as jm,seq as ea,struct as Zm,Structure as ta,u16 as na,u16be as Jm,u24 as $m,u24be as ed,u32 as td,u32be as nd,u40 as id,u40be as rd,u48 as od,u48be as sd,u8 as ia,UInt as ra,union as ad,Union as ud,unionLayoutDiscriminator as cd,utf8 as ld}from"@solana/buffer-layout";var ai=Js,Tr=ta;var ui=ra;var Br=ia,mt=na;var he=$s;var xr=ea;var ye=Zs;var Qt=class extends ai{constructor(t,n,r){super(t,r);this.blob=ye(t),this.signed=n}decode(t,n=0){let r=new Ir(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 Ir(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,r)}};function H(i){return new ui(1,i)}function Ee(i){return new ui(4,i)}function A(i){return new Qt(8,!1,i)}function G(i){return new Qt(16,!1,i)}function Kr(i){return new Qt(16,!0,i)}var hn=class extends ai{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 S(i){return new hn(ye(32),e=>new oa(e),e=>e.toBuffer(),i)}function Fe(i){return new hn(Br(),sa,aa,i)}function sa(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function aa(i){return i?1:0}var ci=class extends Tr{decode(e,t){return super.decode(e,t)}};function _(i,e,t){return new ci(i,e,t)}function ne(i,e,t){let n,r=typeof e=="number"?e:Sr(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=Sr(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 xr(i,r,t)}var Tn=_([S("mint"),S("owner"),A("amount"),Ee("delegateOption"),S("delegate"),H("state"),Ee("isNativeOption"),A("isNative"),A("delegatedAmount"),Ee("closeAuthorityOption"),S("closeAuthority")]);function ua(i){return i instanceof Uint8Array||i!=null&&typeof i=="object"&&i.constructor.name==="Uint8Array"}function li(i,...e){if(!ua(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 mi(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 Cr(i,e){li(i);let t=e.outputLen;if(i.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var xn=i=>new DataView(i.buffer,i.byteOffset,i.byteLength),We=(i,e)=>i<<32-e|i>>>e;var Sd=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function ca(i){if(typeof i!="string")throw new Error(`utf8ToBytes expected string, got ${typeof i}`);return new Uint8Array(new TextEncoder().encode(i))}function di(i){return typeof i=="string"&&(i=ca(i)),li(i),i}var Bn=class{clone(){return this._cloneInto()}},Kd={}.toString;function Nr(i){let e=n=>i().update(di(n)).digest(),t=i();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>i(),e}function la(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),c=n?4:0,u=n?0:4;i.setUint32(e+c,s,n),i.setUint32(e+u,a,n)}var Rr=(i,e,t)=>i&e^~i&t,Lr=(i,e,t)=>i&e^i&t^e&t,In=class extends Bn{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=xn(this.buffer)}update(e){mi(this);let{view:t,buffer:n,blockLen:r}=this;e=di(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(r-this.pos,o-s);if(a===r){let c=xn(e);for(;r<=o-s;s+=r)this.process(c,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){mi(this),Cr(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 d=s;d<r;d++)t[d]=0;la(n,r-8,BigInt(this.length*8),o),this.process(n,0);let a=xn(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let u=c/4,l=this.get();if(u>l.length)throw new Error("_sha2: outputLen bigger than state");for(let d=0;d<u;d++)a.setUint32(4*d,l[d],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 ma=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]),dt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),pt=new Uint32Array(64),pi=class extends In{constructor(){super(64,32,8,!1),this.A=dt[0]|0,this.B=dt[1]|0,this.C=dt[2]|0,this.D=dt[3]|0,this.E=dt[4]|0,this.F=dt[5]|0,this.G=dt[6]|0,this.H=dt[7]|0}get(){let{A:e,B:t,C:n,D:r,E:o,F:s,G:a,H:c}=this;return[e,t,n,r,o,s,a,c]}set(e,t,n,r,o,s,a,c){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=c|0}process(e,t){for(let d=0;d<16;d++,t+=4)pt[d]=e.getUint32(t,!1);for(let d=16;d<64;d++){let m=pt[d-15],p=pt[d-2],g=We(m,7)^We(m,18)^m>>>3,f=We(p,17)^We(p,19)^p>>>10;pt[d]=f+pt[d-7]+g+pt[d-16]|0}let{A:n,B:r,C:o,D:s,E:a,F:c,G:u,H:l}=this;for(let d=0;d<64;d++){let m=We(a,6)^We(a,11)^We(a,25),p=l+m+Rr(a,c,u)+ma[d]+pt[d]|0,f=(We(n,2)^We(n,13)^We(n,22))+Lr(n,r,o)|0;l=u,u=c,c=a,a=s+p|0,s=o,o=r,r=n,n=p+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,c=c+this.F|0,u=u+this.G|0,l=l+this.H|0,this.set(n,r,o,s,a,c,u,l)}roundClean(){pt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Or=Nr(()=>new pi);var zd=oe("Raydium_Util");function Sn({fromPublicKey:i,programId:e=fa}){let t=pa.generate().publicKey.toBase58().slice(0,32);return{publicKey:ba(i,t,e),seed:t}}function ba(i,e,t){let n=Buffer.concat([i.toBuffer(),Buffer.from(e),t.toBuffer()]),r=Or(n);return new da(r)}function ha(i){let{mint:e,tokenAccount:t,owner:n,programId:r=Lt}=i;return ya(t,e,n,r)}function Yt(i){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:r,programId:o=Lt}=i;return ga(e,t,r,n,o)}async function fi(i){let{connection:e,amount:t,commitment:n,payer:r,owner:o,skipCloseAccount:s}=i,a=await e.getMinimumBalanceForRentExemption(Tn.span,n),c=ue(t).add(new wa(a)),u=Sn({fromPublicKey:r,programId:Lt});return{addresses:{newAccount:u.publicKey},signers:[],instructions:[ka.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:u.seed,newAccountPubkey:u.publicKey,lamports:c.toNumber(),space:Tn.span,programId:Lt}),ha({mint:new Pa(Ye.address),tokenAccount:u.publicKey,owner:o,programId:Lt})],instructionTypes:[$.CreateAccount,$.InitAccount],endInstructionTypes:s?[]:[$.CloseAccount],endInstructions:s?[]:[Yt({tokenAccount:u.publicKey,payer:r,owner:o})]}}function bi({source:i,destination:e,owner:t,amount:n,multiSigners:r=[],tokenProgram:o=Lt}){return Aa(i,e,t,BigInt(String(n)),r,o)}import Mr from"bn.js";var cp=new Mr(25),lp=new Mr(1e4);var yi=_([H("instruction"),A("amountIn"),A("minAmountOut")]),gi=_([H("instruction"),A("maxAmountIn"),A("amountOut")]),gp=_([H("instruction"),H("nonce")]),Ta=_([H("instruction"),H("nonce"),A("startTime")]),Er=_([A("status"),A("nonce"),A("maxOrder"),A("depth"),A("baseDecimal"),A("quoteDecimal"),A("state"),A("resetFlag"),A("minSize"),A("volMaxCutRatio"),A("amountWaveRatio"),A("baseLotSize"),A("quoteLotSize"),A("minPriceMultiplier"),A("maxPriceMultiplier"),A("systemDecimalValue"),A("minSeparateNumerator"),A("minSeparateDenominator"),A("tradeFeeNumerator"),A("tradeFeeDenominator"),A("pnlNumerator"),A("pnlDenominator"),A("swapFeeNumerator"),A("swapFeeDenominator"),A("baseNeedTakePnl"),A("quoteNeedTakePnl"),A("quoteTotalPnl"),A("baseTotalPnl"),A("poolOpenTime"),A("punishPcAmount"),A("punishCoinAmount"),A("orderbookToInitTime"),G("swapBaseInAmount"),G("swapQuoteOutAmount"),A("swapBase2QuoteFee"),G("swapQuoteInAmount"),G("swapBaseOutAmount"),A("swapQuote2BaseFee"),S("baseVault"),S("quoteVault"),S("baseMint"),S("quoteMint"),S("lpMint"),S("openOrders"),S("marketId"),S("marketProgramId"),S("targetOrders"),S("withdrawQueue"),S("lpVault"),S("owner"),A("lpReserve"),ne(A(),3,"padding")]),Ap=_([A("accountType"),A("status"),A("nonce"),A("maxOrder"),A("depth"),A("baseDecimal"),A("quoteDecimal"),A("state"),A("resetFlag"),A("minSize"),A("volMaxCutRatio"),A("amountWaveRatio"),A("baseLotSize"),A("quoteLotSize"),A("minPriceMultiplier"),A("maxPriceMultiplier"),A("systemDecimalsValue"),A("abortTradeFactor"),A("priceTickMultiplier"),A("priceTick"),A("minSeparateNumerator"),A("minSeparateDenominator"),A("tradeFeeNumerator"),A("tradeFeeDenominator"),A("pnlNumerator"),A("pnlDenominator"),A("swapFeeNumerator"),A("swapFeeDenominator"),A("baseNeedTakePnl"),A("quoteNeedTakePnl"),A("quoteTotalPnl"),A("baseTotalPnl"),A("poolOpenTime"),A("punishPcAmount"),A("punishCoinAmount"),A("orderbookToInitTime"),G("swapBaseInAmount"),G("swapQuoteOutAmount"),G("swapQuoteInAmount"),G("swapBaseOutAmount"),A("swapQuote2BaseFee"),A("swapBase2QuoteFee"),S("baseVault"),S("quoteVault"),S("baseMint"),S("quoteMint"),S("lpMint"),S("modelDataAccount"),S("openOrders"),S("marketId"),S("marketProgramId"),S("targetOrders"),S("owner"),ne(A(),64,"padding")]),Ba=_([H("instruction"),A("baseAmountIn"),A("quoteAmountIn"),A("fixedSide")]),xa=_([H("instruction"),A("amountIn")]);var Pp=_([A("fee")]);import{PublicKey as Ra}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as La}from"@solana/spl-token";import{PublicKey as Tp}from"@solana/web3.js";import{MintLayout as xp,TOKEN_PROGRAM_ID as Sp}from"@solana/spl-token";var Fr=i=>new Re({mint:i.address,decimals:i.decimals,symbol:i.symbol,name:i.name}),jt=r=>{var o=r,{amount:i,isRaw:e,name:t}=o,n=bt(o,["amount","isRaw","name"]);return new ce(new Re({mint:Qe(n.address).toBase58(),decimals:n.decimals,symbol:n.symbol,name:t}),i,e,t)};var kt=r=>{var o=r,{address:i,programId:e,decimals:t}=o,n=bt(o,["address","programId","decimals"]);return v({chainId:101,address:Qe(i).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)};import{PublicKey as Ep}from"@solana/web3.js";var vp=oe("Raydium_liquidity_serum");import{PublicKey as Ia}from"@solana/web3.js";var Ai=new Ia("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Sa=5e4,Ka=_([A("x"),A("y"),A("price")]),Gp=_([A("accountType"),A("status"),A("multiplier"),A("validDataCount"),ne(Ka,Sa,"DataElement")]);import{TOKEN_PROGRAM_ID as vr,ASSOCIATED_TOKEN_PROGRAM_ID as zp}from"@solana/spl-token";import{PublicKey as Qp,TransactionInstruction as Dr,SystemProgram as Yp,SYSVAR_RENT_PUBKEY as jp}from"@solana/web3.js";var _r=oe("Raydium_liquidity_instruction");function Ca({poolKeys:i,userKeys:e,amountIn:t,minAmountOut:n},r){let o=gt(i),s=Buffer.alloc(yi.span);yi.encode({instruction:9,amountIn:ue(t),minAmountOut:ue(n)},s);let a=[T({pubkey:vr,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders})];return r===4&&a.push(T({pubkey:o.targetOrders})),a.push(T({pubkey:o.vault.A}),T({pubkey:o.vault.B})),r===5&&a.push(T({pubkey:Ai})),a.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:e.tokenAccountIn}),T({pubkey:e.tokenAccountOut}),T({pubkey:e.owner,isWritable:!1})),new Dr({programId:o.programId,keys:a,data:s})}function Na({poolKeys:i,userKeys:e,maxAmountIn:t,amountOut:n},r){let o=gt(i),s=Buffer.alloc(gi.span);gi.encode({instruction:11,maxAmountIn:ue(t),amountOut:ue(n)},s);let a=[T({pubkey:vr,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders}),T({pubkey:o.targetOrders}),T({pubkey:o.vault.A}),T({pubkey:o.vault.B})];return r===5&&a.push(T({pubkey:Ai})),a.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:e.tokenAccountIn}),T({pubkey:e.tokenAccountOut}),T({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Dr({programId:o.programId,keys:a,data:s})}function Vr(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 Ca(X(v({},a),{amountIn:r,minAmountOut:o}),t);if(s==="out")return Na(X(v({},a),{maxAmountIn:r,amountOut:o}),t);_r.logWithError("invalid params","params",i)}throw _r.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}import hf from"bn.js";function Wr({programId:i}){return xe([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],i)}var Pi={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]},qr=i=>{let e={},t=La.toBase58();return Object.keys(i).map(n=>{let r=i[n],[o,s]=[r.baseMint.toBase58(),r.quoteMint.toBase58()];e[n]={id:n,version:4,status:r.status.toNumber(),programId:r.programId.toBase58(),mintA:kt({address:o,programId:t,decimals:r.baseDecimal.toNumber()}),mintB:kt({address:s,programId:t,decimals:r.quoteDecimal.toNumber()}),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:r.poolPrice.toNumber(),mintAmountA:new M(r.baseReserve.toString()).div(10**r.baseDecimal.toNumber()).toNumber(),mintAmountB:new M(r.quoteReserve.toString()).div(10**r.quoteDecimal.toNumber()).toNumber(),baseReserve:r.baseReserve,quoteReserve:r.quoteReserve,feeRate:new M(r.tradeFeeNumerator.toString()).div(r.tradeFeeDenominator.toString()).toNumber(),openTime:r.poolOpenTime.toString(),tvl:0,day:Pi,week:Pi,month:Pi,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,type:"Standard",marketId:r.marketId.toBase58(),configId:Ra.default.toBase58(),lpPrice:0,lpAmount:0,lpMint:kt({address:r.lpMint.toBase58(),programId:t,decimals:Math.min(r.baseDecimal.toNumber(),r.quoteDecimal.toNumber())})}}),e};import Wa from"bn.js";function Kn(i){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,i,!1),new Uint8Array(e)}function ki(i,e){let t=0;for(let n=i-1;n>=0&&!e.testn(n);n--)t++;return t}function wi(i,e){let t=0;for(let n=0;n<i&&!e.testn(n);n++)t++;return t}function Zt(i,e){for(let t=0;t<i;t++)if(e.testn(t))return!1;return!0}function Gr(i,e){return Zt(i,e)?null:ki(i,e)}function Ur(i,e){return Zt(i,e)?null:wi(i,e)}var Ff=Buffer.from("amm_config","utf8"),Oa=Buffer.from("pool","utf8"),Ma=Buffer.from("pool_vault","utf8"),Ea=Buffer.from("pool_reward_vault","utf8"),Xr=Buffer.from("position","utf8"),Fa=Buffer.from("tick_array","utf8"),_a=Buffer.from("operation","utf8"),va=Buffer.from("pool_tick_array_bitmap_extension","utf8");function zr(i,e,t,n){return xe([Oa,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function hi(i,e,t){return xe([Ma,e.toBuffer(),t.toBuffer()],i)}function Hr(i,e,t){return xe([Ea,e.toBuffer(),t.toBuffer()],i)}function re(i,e,t){return xe([Fa,e.toBuffer(),Kn(t)],i)}function wt(i,e,t,n){return xe([Xr,e.toBuffer(),Kn(t),Kn(n)],i)}function qe(i,e){return xe([Xr,e.toBuffer()],i)}function Cn(i){return xe([Buffer.from("metadata","utf8"),Ct.toBuffer(),i.toBuffer()],Ct)}function Nn(i){return xe([_a],i)}function Le(i,e){return xe([va,e.toBuffer()],i)}import _e from"bn.js";var me=new _e(0),Oe=new _e(1),tt=new _e(-1),Me=new _e(1).shln(64),Rn=new _e(1).shln(128),Ti=Me.sub(Oe),Jt=64,Qr=Rn.subn(1),Ie=-443636,Se=-Ie,nt=new _e("4295048016"),it=new _e("79226673521066979257578248091"),Ln=new _e("4295048017"),On=new _e("79226673521066979257578248090"),Yr=16,jr="59543866431248",Zr="184467440737095516",Jr="15793534762490258745",Mn=new _e(10).pow(new _e(6));var Df=new _e("18446744073700000000");var Da=15,J=class{static async getTickArrays(e,t,n,r,o,s,a){let c=[],u=E.getTickArrayStartIndexByTick(r,o),l=E.getInitializedTickArrayInRange(s,a,o,u,Math.floor(Da/2));for(let p=0;p<l.length;p++){let{publicKey:g}=re(t,n,l[p]);c.push(g)}let d=(await et(e,c)).map(p=>p!==null?$t.decode(p.data):null),m={};for(let p=0;p<c.length;p++){let g=d[p];g!==null&&(m[g.startTickIndex]=X(v({},g),{address:c[p]}))}return m}static nextInitializedTick(e,t,n,r,o,s){let{initializedTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}=this.nextInitializedTickInOneArray(e,t,n,r,o,s);for(;a==null||a.liquidityGross.lten(0);){if(u=E.getNextTickArrayStartIndex(u,o,s),this.checkIsValidStartIndex(u,o))throw new Error("No enough initialized tickArray");let l=n[u];if(l===void 0)continue;let{nextTick:d,tickArrayAddress:m,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,s);[a,c,u]=[d,m,p]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}}static nextInitializedTickArray(e,t,n,r,o){let s=Math.floor(e/J.tickCount(t)),a=n?E.searchLowBitFromStart(r,o,s-1,1,t):E.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=ge-1;for(;a>=0;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){o=c;break}a=a-1}}else{let a=0;for(;a<ge;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){o=c;break}a=a+1}}let{publicKey:s}=re(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,r,o,s){let a=E.getTickArrayStartIndexByTick(r,o),c=Math.floor((r-a)/o),u=n[a];if(u==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;c>=0;){let m=u.ticks[c];if(m.liquidityGross.gtn(0)){l=m;break}c=c-1}else for(c=c+1;c<ge;){let m=u.ticks[c];if(m.liquidityGross.gtn(0)){l=m;break}c=c+1}let{publicKey:d}=re(e,t,a);return{initializedTick:l,tickArrayAddress:d,tickArrayStartTickIndex:u.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(E.checkIsOutOfBoundary(e)){if(e>Se)return!1;let n=E.getTickArrayStartIndexByTick(Ie,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return ge*e}};import j from"bn.js";import{PublicKey as Ge}from"@solana/web3.js";import de from"bn.js";var Bi=14,rt=class{static maxTickInTickarrayBitmap(e){return e*ge*ht}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(!J.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=r?t-J.tickCount(n):t+J.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*ge,c=s/a+512;s<0&&s%a!=0&&c--;let u=Math.abs(c);if(r){let l=e.shln(1024-u-1),d=Gr(1024,l);if(d!==null){let m=(u-d-512)*a;return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(u),d=Ur(1024,l);if(d!==null){let m=(u+d-512)*a;return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:o-J.tickCount(n)}}}},en=class{static getBitmapOffset(e,t){if(!J.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=rt.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=rt.maxTickInTickarrayBitmap(e),n=-t;if(Se<=t)throw Error(`extensionTickBoundary check error: ${Se}, ${t}`);if(n<=Ie)throw Error(`extensionTickBoundary check error: ${n}, ${Ie}`);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:E.mergeTickArrayBitmap(r).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,r){let o=J.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}=rt.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(r){let c=E.mergeTickArrayBitmap(e).shln(ht-1-a),u=Zt(512,c)?null:ki(512,c);if(u!==null){let l=t-u*J.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let c=E.mergeTickArrayBitmap(e).shrn(a),u=Zt(512,c)?null:wi(512,c);if(u!==null){let l=t+u*J.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-J.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%rt.maxTickInTickarrayBitmap(t),r=Math.floor(n/J.tickCount(t));return e<0&&n!=0&&(r=ht-r),r}};import Je from"bn.js";var tn=class{static getfeeGrowthInside(e,t,n){let r=new Je(0),o=new Je(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 Je(0),a=new Je(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let c=Q.wrappingSubU128(Q.wrappingSubU128(e.feeGrowthGlobalX64A,r),s),u=Q.wrappingSubU128(Q.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:c,feeGrowthInsideBX64:u}}static GetPositionFees(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=Q.mulDivFloor(Q.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Me),c=t.tokenFeesOwedA.add(a),u=Q.mulDivFloor(Q.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Me),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=Q.mulDivFloor(Q.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Me),c=t.tokenFeesOwedA.add(a),u=Q.mulDivFloor(Q.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Me),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,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 c=s[a],u=t.rewardInfos[a],l=Q.wrappingSubU128(c,u.growthInsideLastX64),d=Q.mulDivFloor(l,t.liquidity,Me),m=u.rewardAmountOwed.add(d);o.push(m)}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 c=s[a],u=t.rewardInfos[a],l=Q.wrappingSubU128(c,u.growthInsideLastX64),d=Q.mulDivFloor(l,t.liquidity,Me),m=u.rewardAmountOwed.add(d);o.push(m)}return o}static getRewardGrowthInside(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new Je(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 c=new Je(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(Q.wrappingSubU128(Q.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),c))}return o}static getRewardGrowthInsideV2(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new Je(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 c=new Je(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(Q.wrappingSubU128(Q.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),c))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:r,add:o,epochInfo:s}){var y,b,k,P;let a=Y.priceToSqrtPriceX64(new M(e.price),e.mintA.decimals,e.mintB.decimals),c=Y.getSqrtPriceX64FromTick(t.tickLower),u=Y.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+r:1-r,d=te.getAmountsFromLiquidity(a,c,u,n,o),[m,p]=[be(d.amountA,(y=e.mintA.extensions)==null?void 0:y.feeConfig,s,!0),be(d.amountB,(b=e.mintB.extensions)==null?void 0:b.feeConfig,s,!0)],[g,f]=[be(new Je(new M(d.amountA.toString()).mul(l).toFixed(0)),(k=e.mintA.extensions)==null?void 0:k.feeConfig,s,!0),be(new Je(new M(d.amountB.toString()).mul(l).toFixed(0)),(P=e.mintB.extensions)==null?void 0:P.feeConfig,s,!0)];return{liquidity:n,amountA:m,amountB:p,amountSlippageA:g,amountSlippageB:f,expirationTime:Ze(m.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as $r}from"@solana/spl-token";var Ae=class{static getOutputAmountAndRemainAccounts(e,t,n,r,o,s=!1){let a=n.toBase58()===e.mintA.address,c=[],{isExist:u,startIndex:l,nextAccountMeta:d}=this.getFirstInitializedTickArray(e,a);if(!u||l===void 0||!d)throw new Error("Invalid tick array");c.push(d);let{allTrade:m,amountCalculated:p,accounts:g,sqrtPriceX64:f,feeAmount:y}=Tt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,a,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r,l,o,s);return c.push(...g),{allTrade:m,expectedAmountOut:p.mul(tt),remainingAccounts:c,executionPrice:f,feeAmount:y}}static getInputAmountAndRemainAccounts(e,t,n,r,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:c,startIndex:u,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!c||u===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:y}=re(e.programId,e.id,f.nextStartIndex);a.push(y)}}catch{}a.push(l);let{amountCalculated:d,accounts:m,sqrtPriceX64:p,feeAmount:g}=Tt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r.mul(tt),u,o);return a.push(...m),{expectedAmountIn:d,remainingAccounts:a,executionPrice:p,feeAmount:g}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:r}=Ae.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?en.checkTickArrayIsInit(J.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):E.checkTickArrayIsInitialized(E.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=re(e.programId,e.id,r);return{isExist:!0,startIndex:r,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,J.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=re(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/J.tickCount(e.tickSpacing)),r=t?E.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):E.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=J.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:r,tickIndex:o}=rt.nextInitializedTickArrayStartIndex(E.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(r)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=en.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Ie||t>Se)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:r,rewardInfos:o}){var a,c,u;let s=[];for(let l=0;l<o.length;l++){let d=o[l],m=(u=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?u:(c=await e.getAccountInfo(d.tokenMint))==null?void 0:c.owner;if(m===void 0)throw Error("get new reward mint info error");let p=X(v({},d),{perSecond:Q.x64ToDecimal(d.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Ge(m)});if(p.tokenMint.equals(Ge.default))continue;if(n<=p.openTime.toNumber()||r.eq(me)){s.push(p);continue}let g=new de(Math.min(p.endTime.toNumber(),n)),f=g.sub(p.lastUpdateTime),y=Q.mulDivFloor(f,p.emissionsPerSecondX64,r),b=p.rewardGrowthGlobalX64.add(y),k=Q.mulDivFloor(f,p.emissionsPerSecondX64,Me),P=p.rewardTotalEmissioned.add(k);s.push(X(v({},p),{rewardGrowthGlobalX64:b,rewardTotalEmissioned:P,lastUpdateTime:g}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:r}=this.tickRange(e);for(let o of t){let s=E.getTickArrayStartIndexByTick(o,e);if(s>=n||s<r)return!0}return!1}static tickRange(e){let t=rt.maxTickInTickarrayBitmap(e),n=-t;return t>Se&&(t=J.getArrayStartIndex(Se,e)+J.tickCount(e)),n<Ie&&(n=J.getArrayStartIndex(Ie,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!J.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/J.tickCount(t)*ht}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let r=await Pt(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of r)s.accountInfo!==null&&(o[s.pubkey.toString()]=eo.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let r={},o=[];for(let c of t){let u=E.getTickArrayStartIndexByTick(c.tickCurrent,c.tickSpacing),l=E.getInitializedTickArrayInRange(c.tickArrayBitmap,c.exBitmapInfo,c.tickSpacing,u,7);for(let d of l){let{publicKey:m}=re(c.programId,c.id,d);o.push({pubkey:m}),r[m.toString()]=c.id}}let s=await Pt(e,o,{batchRequest:n}),a={};for(let c of s){if(!c.accountInfo)continue;let u=r[c.pubkey.toString()];if(!u)continue;a[u.toString()]===void 0&&(a[u.toString()]={});let l=$t.decode(c.accountInfo.data);a[u.toString()][l.startTickIndex]=X(v({},l),{address:c.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:r=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let c=0;c<e.length;c++){let u=e[c];u!==null&&(s.find(l=>l.equals(u.state.programId))||s.push(u.state.programId))}if(n){let c=n.tokenAccounts.map(m=>m.accountInfo.mint),u=[];for(let m of c)for(let p of s)u.push(qe(p,m).publicKey);let l=await et(t,u,{batchRequest:r}),d={};for(let m of l){if(m===null)continue;let p=xi.decode(m.data),g=p.poolId.toString(),f=e.find(R=>R.state.id.toBase58()===g);if(f===void 0)continue;let y=f.state,b=E._getTickPriceLegacy({poolInfo:y,tick:p.tickLower,baseIn:!0}),k=E._getTickPriceLegacy({poolInfo:y,tick:p.tickUpper,baseIn:!0}),{amountA:P,amountB:B}=te.getAmountsFromLiquidity(y.sqrtPriceX64,b.tickSqrtPriceX64,k.tickSqrtPriceX64,p.liquidity,!1),I=1/(1-Math.sqrt(Math.sqrt(b.price.div(k.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:b.price,priceUpper:k.price,amountA:P,amountB:B,tickLower:p.tickLower,tickUpper:p.tickUpper,liquidity:p.liquidity,feeGrowthInsideLastX64A:p.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:p.feeGrowthInsideLastX64B,tokenFeesOwedA:p.tokenFeesOwedA,tokenFeesOwedB:p.tokenFeesOwedB,rewardInfos:p.rewardInfos.map(R=>X(v({},R),{pendingReward:new de(0)})),leverage:I,tokenFeeAmountA:new de(0),tokenFeeAmountB:new de(0)}];let x=await E.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),N=await E.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);d[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=x,d[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=N}if(o){let m=Object.values(d),p=await et(t,m,{batchRequest:r}),g={};for(let f=0;f<m.length;f++){let y=p[f];if(y===null)continue;let b=m[f].toString();g[b]=$t.decode(y.data)}for(let{state:f,positionAccount:y}of e)if(!!y)for(let b of y){let k=`${f.programId.toString()}-${f.id.toString()}-${b.tickLower}`,P=`${f.programId.toString()}-${f.id.toString()}-${b.tickUpper}`,B=g[d[k].toString()],I=g[d[P].toString()],x=B.ticks[E.getTickOffsetInArray(b.tickLower,f.tickSpacing)],N=I.ticks[E.getTickOffsetInArray(b.tickUpper,f.tickSpacing)],{tokenFeeAmountA:R,tokenFeeAmountB:W}=await tn.GetPositionFees(f,b,x,N),h=await tn.GetPositionRewards(f,b,x,N);b.tokenFeeAmountA=R.gte(new de(0))?R:new de(0),b.tokenFeeAmountB=W.gte(new de(0))?W:new de(0);for(let L=0;L<h.length;L++)b.rewardInfos[L].pendingReward=h[L].gte(new de(0))?h[L]:new de(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountIn:o,slippage:s,priceLimit:a=new M(0),catchLiquidityInsufficient:c=!1}){var ae;let u,l=n.toBase58()===e.mintA.address,[d,m]=l?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new M(0))?u=l?nt.add(new de(1)):it.sub(new de(1)):u=Y.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=be(o,d,r,!1),{allTrade:g,expectedAmountOut:f,remainingAccounts:y,executionPrice:b,feeAmount:k}=Ae.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((ae=p.fee)!=null?ae:me),u,c),P=be(f,m,r,!1),B=Y.sqrtPriceX64ToPrice(b,e.mintA.decimals,e.mintB.decimals),I=l?B:new M(1).div(B),x=f.mul(new de(Math.floor((1-s)*1e10))).div(new de(1e10)),N=be(x,m,r,!1),R=l?e.currentPrice:new M(1).div(e.currentPrice),W=new M(I).sub(R).abs(),h=R,L=new lt(new M(W).mul(10**15).toFixed(0),new M(h).mul(10**15).toFixed(0));return{allTrade:g,realAmountIn:p,amountOut:P,minAmountOut:N,expirationTime:Ze(p.expirationTime,P.expirationTime),currentPrice:e.currentPrice,executionPrice:I,priceImpact:L,fee:k,remainingAccounts:y,executionPriceX64:b}}static computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:r,slippage:o,epochInfo:s,catchLiquidityInsufficient:a=!1}){let c=r.address===e.mintB.address,[u,l]=c?[e.mintA,e.mintB]:[e.mintB,e.mintA],[d,m]=[new Re(X(v({},u),{mint:u.address,isToken2022:u.programId===$r.toBase58()})),new Re(X(v({},l),{mint:l.address,isToken2022:l.programId===$r.toBase58()}))],{allTrade:p,realAmountIn:g,amountOut:f,minAmountOut:y,expirationTime:b,currentPrice:k,executionPrice:P,priceImpact:B,fee:I,remainingAccounts:x,executionPriceX64:N}=Ae.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Ge(u.address),amountIn:n,slippage:o,epochInfo:s,catchLiquidityInsufficient:a}),R=X(v({},g),{amount:new ce(d,g.amount),fee:g.fee===void 0?void 0:new ce(d,g.fee)}),W=X(v({},f),{amount:new ce(m,f.amount),fee:f.fee===void 0?void 0:new ce(m,f.fee)}),h=X(v({},y),{amount:new ce(m,y.amount),fee:y.fee===void 0?void 0:new ce(m,y.fee)}),L=new Ce({baseToken:d,denominator:new de(10).pow(new de(20+d.decimals)),quoteToken:m,numerator:k.mul(new M(10**(20+m.decimals))).toFixed(0)}),ae=new Ce({baseToken:d,denominator:new de(10).pow(new de(20+d.decimals)),quoteToken:m,numerator:P.mul(new M(10**(20+m.decimals))).toFixed(0)}),z=new ce(d,I);return{allTrade:p,realAmountIn:R,amountOut:W,minAmountOut:h,expirationTime:b,currentPrice:L,executionPrice:ae,priceImpact:B,fee:z,remainingAccounts:x,executionPriceX64:N}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:r}){var g,f,y;let o=e[t],s=E.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=E.getTickPrice({poolInfo:e,tick:r,baseIn:!0}).price.toNumber(),c=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-c,d=a-s,m=o.priceMax-o.priceMin,p;return l<=0?p=0:d===l?p=m/l:m===l?p=l/d:p=l/m*(l/d),{feeApr:o.feeApr*p,rewardsApr:[(g=o.rewardApr[0])!=null?g:0*p,(f=o.rewardApr[1])!=null?f:0*p,(y=o.rewardApr[2])!=null?y:0*p],apr:o.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:r,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:c}){let u=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],d=r[Qe(e.mintA.address).toString()],m=r[Qe(e.mintB.address).toString()],p=e.mintA.decimals,g=e.mintB.decimals;if(!l||!d||!m)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=Y.priceToSqrtPriceX64(new M(e.price),e.mintA.decimals,e.mintB.decimals),y=Y.getSqrtPriceX64FromTick(s),b=Y.getSqrtPriceX64FromTick(a),{amountSlippageA:k,amountSlippageB:P}=te.getAmountsFromLiquidityWithSlippage(f,y,b,t,!1,!1,0),{amountSlippageA:B,amountSlippageB:I}=te.getAmountsFromLiquidityWithSlippage(f,y,b,o,!1,!1,0),x=new M(k.toString()).div(new M(10).pow(p)).mul(d.value).add(new M(P.toString()).div(new M(10).pow(g)).mul(m.value)),N=new M(B.toString()).div(new M(10).pow(p)).mul(d.value).add(new M(I.toString()).div(new M(10).pow(g)).mul(m.value)),R=N.div(x.add(N)).div(N),h=new M(l.volumeFee).mul(365).div(u).mul(R).mul(100).toNumber(),L=3600*24*365,ae=e.rewardDefaultInfos.map(z=>{var D,rn;let Pe=z.mint.decimals,Z=r[z.mint.address];return c<((D=z.startTime)!=null?D:0)||c>((rn=z.endTime)!=null?rn:0)||!z.perSecond||!Z||Pe===void 0?0:new M(Z.value).mul(new M(z.perSecond).mul(L)).div(new M(10).pow(Pe)).mul(R).mul(100).toNumber()});return{feeApr:h,rewardsApr:ae,apr:h+ae.reduce((z,Pe)=>z+Pe,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:r,amount:o,slippage:s,add:a,epochInfo:c,amountHasFee:u}){var b,k;let l=Y.priceToSqrtPriceX64(new M(e.price),e.mintA.decimals,e.mintB.decimals),d=Y.getSqrtPriceX64FromTick(n),m=Y.getSqrtPriceX64FromTick(r),p=a?1-s:1+s,g=be(o,(b=e[t?"mintA":"mintB"].extensions)==null?void 0:b.feeConfig,c,!u),f=new de(new M(g.amount.sub((k=g.fee)!=null?k:me).toString()).mul(p).toFixed(0)),y;if(l.lte(d))y=t?te.getLiquidityFromTokenAmountA(d,m,f,!a):new de(0);else if(l.lte(m)){let P=te.getLiquidityFromTokenAmountA(l,m,f,!a),B=te.getLiquidityFromTokenAmountB(d,l,f);y=t?P:B}else y=t?new de(0):te.getLiquidityFromTokenAmountB(d,m,f);return Ae.getAmountsFromLiquidity({epochInfo:c,poolInfo:e,tickLower:n,tickUpper:r,liquidity:y,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:r,liquidity:o,slippage:s,add:a}){var y,b,k,P;let c=Y.getSqrtPriceX64FromTick(n),u=Y.getSqrtPriceX64FromTick(r),l=a?1+s:1-s,d=te.getAmountsFromLiquidity(Y.priceToSqrtPriceX64(new M(t.price),t.mintA.decimals,t.mintB.decimals),c,u,o,a),[m,p]=[be(d.amountA,(y=t.mintA.extensions)==null?void 0:y.feeConfig,e,!0),be(d.amountB,(b=t.mintB.extensions)==null?void 0:b.feeConfig,e,!0)],[g,f]=[be(d.amountA.muln(l),(k=t.mintA.extensions)==null?void 0:k.feeConfig,e,!0),be(d.amountB.muln(l),(P=t.mintB.extensions)==null?void 0:P.feeConfig,e,!0)];return{liquidity:o,amountA:m,amountB:p,amountSlippageA:g,amountSlippageB:f,expirationTime:Ze(m.expirationTime,p.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let r=t.filter(c=>!n[c.id]).map(c=>new Ge(c.id));(await et(e,r)).forEach((c,u)=>{!c||(n[r[u].toBase58()]=Ot.decode(c.data))});let s=t.map(c=>Le(new Ge(c.programId),new Ge(c.id)).publicKey),a=await Ae.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1});return t.reduce((c,u)=>X(v({},c),{[u.id]:X(v({},n[u.id]),{id:new Ge(u.id),version:6,programId:new Ge(u.programId),mintA:u.mintA,mintB:u.mintB,ammConfig:X(v({},u.config),{id:new Ge(u.config.id),fundOwner:""}),currentPrice:new M(u.price),exBitmapInfo:a[Le(new Ge(u.programId),new Ge(u.id)).publicKey.toBase58()],startTime:n[u.id].startTime.toNumber()})}),{})}static async fetchComputeClmmInfo({connection:e,poolInfo:t,rpcData:n}){return(await this.fetchComputeMultipleClmmInfo({connection:e,rpcDataMap:n?{[t.id]:n}:void 0,poolList:[t]}))[t.id]}};var Q=class{static mulDivRoundingUp(e,t,n){let r=e.mul(t),o=r.div(n);return r.mod(n).eq(me)||(o=o.add(Oe)),o}static mulDivFloor(e,t,n){if(n.eq(me))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(me))throw new Error("division by 0");return e.mul(t).add(n.sub(Oe)).div(n)}static x64ToDecimal(e,t){return new M(e.toString()).div(M.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new j(e.mul(M.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Rn).sub(t).mod(Rn)}};function ke(i,e){return Ii(i.mul(e),64,256)}function Va(i,e,t){let n=i.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Ii(i,e,t){let n=i.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var Y=class{static sqrtPriceX64ToPrice(e,t,n){return Q.x64ToDecimal(e).pow(2).mul(M.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return Q.decimalToX64(e.mul(M.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,r){if(!e.gt(me))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(me))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(me))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(me))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(me))return e;let o=t.shln(Jt);if(r){let s=o,a=o.add(n.mul(e));return a.gte(s)?Q.mulDivCeil(s,e,a):Q.mulDivRoundingUp(s,Oe,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 Q.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,r){let o=n.shln(Jt);if(r)return e.add(o.div(t));{let s=Q.mulDivRoundingUp(o,Oe,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<Ie||e>Se)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new j("18445821805675395072"):new j("18446744073709551616");return(t&2)!=0&&(n=ke(n,new j("18444899583751176192"))),(t&4)!=0&&(n=ke(n,new j("18443055278223355904"))),(t&8)!=0&&(n=ke(n,new j("18439367220385607680"))),(t&16)!=0&&(n=ke(n,new j("18431993317065453568"))),(t&32)!=0&&(n=ke(n,new j("18417254355718170624"))),(t&64)!=0&&(n=ke(n,new j("18387811781193609216"))),(t&128)!=0&&(n=ke(n,new j("18329067761203558400"))),(t&256)!=0&&(n=ke(n,new j("18212142134806163456"))),(t&512)!=0&&(n=ke(n,new j("17980523815641700352"))),(t&1024)!=0&&(n=ke(n,new j("17526086738831433728"))),(t&2048)!=0&&(n=ke(n,new j("16651378430235570176"))),(t&4096)!=0&&(n=ke(n,new j("15030750278694412288"))),(t&8192)!=0&&(n=ke(n,new j("12247334978884435968"))),(t&16384)!=0&&(n=ke(n,new j("8131365268886854656"))),(t&32768)!=0&&(n=ke(n,new j("3584323654725218816"))),(t&65536)!=0&&(n=ke(n,new j("696457651848324352"))),(t&131072)!=0&&(n=ke(n,new j("26294789957507116"))),(t&262144)!=0&&(n=ke(n,new j("37481735321082"))),e>0&&(n=Qr.div(n)),n}static getTickFromPrice(e,t,n){return Y.getTickFromSqrtPriceX64(Y.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(it)||e.lt(nt))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new j(t-64),r=Va(n,32,128),o=new j("8000000000000000","hex"),s=0,a=new j(0),c=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new j(0))&&s<Yr;){c=c.mul(c);let g=c.shrn(127);c=c.shrn(63+g.toNumber()),a=a.add(o.mul(g)),o=o.shrn(1),s+=1}let u=a.shrn(32),d=r.add(u).mul(new j(jr)),m=Ii(d.sub(new j(Zr)),64,128).toNumber(),p=Ii(d.add(new j(Jr)),64,128).toNumber();return m==p?m:Y.getSqrtPriceX64FromTick(p).lte(e)?p:m}},Bt=class{static getTickWithPriceAndTickspacing(e,t,n,r){let s=Y.getTickFromSqrtPriceX64(Y.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=Bt.getTickWithPriceAndTickspacing(e,t,n,r),s=Y.getSqrtPriceX64FromTick(o);return Y.sqrtPriceX64ToPrice(s,n,r)}},te=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(me))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(Jt),s=t.sub(e);return r?Q.mulDivRoundingUp(Q.mulDivCeil(o,s,t),Oe,e):Q.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(me))throw new Error("sqrtPriceX64A must greater than 0");return r?Q.mulDivCeil(n,t.sub(e),Me):Q.mulDivFloor(n,t.sub(e),Me)}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?Q.mulDivRoundingUp(a,Oe,Ti):a.shrn(Jt)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),Q.mulDivFloor(n,Ti,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return te.getLiquidityFromTokenAmountA(t,n,r,!1);if(e.lt(n)){let s=te.getLiquidityFromTokenAmountA(e,n,r,!1),a=te.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return te.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:te.getTokenAmountAFromLiquidity(t,n,r,o),amountB:new j(0)};if(e.lt(n)){let s=te.getTokenAmountAFromLiquidity(e,n,r,o),a=te.getTokenAmountBFromLiquidity(t,e,r,o);return{amountA:s,amountB:a}}else return{amountA:new j(0),amountB:te.getTokenAmountBFromLiquidity(t,n,r,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,r,o,s,a){let{amountA:c,amountB:u}=te.getAmountsFromLiquidity(e,t,n,r,s),l=o?1+a:1-a,d=new j(new M(c.toString()).mul(l).toFixed(0)),m=new j(new M(u.toString()).mul(l).toFixed(0));return{amountSlippageA:d,amountSlippageB:m}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:r,slippage:o,add:s,epochInfo:a,amountAddFee:c}){var k,P,B,I;let u=Y.priceToSqrtPriceX64(new M(e.price),e.mintA.decimals,e.mintB.decimals),l=Y.getSqrtPriceX64FromTick(t),d=Y.getSqrtPriceX64FromTick(n),m=s?1+o:1-o,p=te.getAmountsFromLiquidity(u,l,d,r,s),[g,f]=[be(p.amountA,(k=e.mintA.extensions)==null?void 0:k.feeConfig,a,c),be(p.amountB,(P=e.mintB.extensions)==null?void 0:P.feeConfig,a,c)],[y,b]=[be(new j(new M(p.amountA.toString()).mul(m).toFixed(0)),(B=e.mintA.extensions)==null?void 0:B.feeConfig,a,c),be(new j(new M(p.amountB.toString()).mul(m).toFixed(0)),(I=e.mintB.extensions)==null?void 0:I.feeConfig,a,c)];return{liquidity:r,amountA:g,amountB:f,amountSlippageA:y,amountSlippageB:b,expirationTime:Ze(g.expirationTime,f.expirationTime)}}},Tt=class{static swapCompute(e,t,n,r,o,s,a,c,u,l,d,m,p,g,f=!1){if(m.eq(me))throw new Error("amountSpecified must not be 0");if(g||(g=s?nt.add(Oe):it.sub(Oe)),s){if(g.lt(nt))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(g.gte(d))throw new Error("sqrtPriceX64 must smaller than current")}else{if(g.gt(it))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(g.lte(d))throw new Error("sqrtPriceX64 must greater than current")}let y=m.gt(me),b={amountSpecifiedRemaining:m,amountCalculated:me,sqrtPriceX64:d,tick:u>p?Math.min(p+J.tickCount(l)-1,u):p,accounts:[],liquidity:c,feeAmount:new j(0)},k=p,P=n[p],B=0,I=!s&&P.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(me)&&!b.sqrtPriceX64.eq(g);){B>10;let x={};x.sqrtPriceStartX64=b.sqrtPriceX64;let N=E.nextInitTick(P,b.tick,l,s,I),R=N||null,W=null;if(!(R!=null&&R.liquidityGross.gtn(0))){let L=Ae.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:r,exBitmapInfo:o},k,s);if(!L.isExist){if(f)return{allTrade:!1,amountSpecifiedRemaining:b.amountSpecifiedRemaining,amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts};throw Error("swapCompute LiquidityInsufficient")}k=L.nextStartIndex;let{publicKey:ae}=re(e,t,k);W=ae,P=n[k];try{R=E.firstInitializedTick(P,s)}catch{throw Error("not found next tick info")}}x.tickNext=R.tick,x.initialized=R.liquidityGross.gtn(0),p!==k&&W&&(b.accounts.push(W),p=k),x.tickNext<Ie?x.tickNext=Ie:x.tickNext>Se&&(x.tickNext=Se),x.sqrtPriceNextX64=Y.getSqrtPriceX64FromTick(x.tickNext);let h;if(s&&x.sqrtPriceNextX64.lt(g)||!s&&x.sqrtPriceNextX64.gt(g)?h=g:h=x.sqrtPriceNextX64,[b.sqrtPriceX64,x.amountIn,x.amountOut,x.feeAmount]=Tt.swapStepCompute(b.sqrtPriceX64,h,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(x.feeAmount),y?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(x.amountIn.add(x.feeAmount)),b.amountCalculated=b.amountCalculated.sub(x.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(x.amountOut),b.amountCalculated=b.amountCalculated.add(x.amountIn.add(x.feeAmount))),b.sqrtPriceX64.eq(x.sqrtPriceNextX64)){if(x.initialized){let L=R.liquidityNet;s&&(L=L.mul(tt)),b.liquidity=te.addDelta(b.liquidity,L)}I=x.tickNext!=b.tick&&!s&&P.startTickIndex===x.tickNext,b.tick=s?x.tickNext-1:x.tickNext}else if(b.sqrtPriceX64!=x.sqrtPriceStartX64){let L=Y.getTickFromSqrtPriceX64(b.sqrtPriceX64);I=L!=b.tick&&!s&&P.startTickIndex===L,b.tick=L}++B}try{let{nextStartIndex:x,isExist:N}=J.nextInitializedTickArray(b.tick,l,s,r,o);N&&p!==x&&(b.accounts.push(re(e,t,x).publicKey),p=x)}catch{}return{allTrade:!0,amountSpecifiedRemaining:me,amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts}}static swapStepCompute(e,t,n,r,o){let s={sqrtPriceX64Next:new j(0),amountIn:new j(0),amountOut:new j(0),feeAmount:new j(0)},a=e.gte(t),c=r.gte(me);if(c){let l=Q.mulDivFloor(r,Mn.sub(new j(o.toString())),Mn);s.amountIn=a?te.getTokenAmountAFromLiquidity(t,e,n,!0):te.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=Y.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?te.getTokenAmountBFromLiquidity(t,e,n,!1):te.getTokenAmountAFromLiquidity(e,t,n,!1),r.mul(tt).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=Y.getNextSqrtPriceX64FromOutput(e,n,r.mul(tt),a);let u=t.eq(s.sqrtPriceX64Next);return a?(u&&c||(s.amountIn=te.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),u&&!c||(s.amountOut=te.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=u&&c?s.amountIn:te.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=u&&!c?s.amountOut:te.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!c&&s.amountOut.gt(r.mul(tt))&&(s.amountOut=r.mul(tt)),c&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=r.sub(s.amountIn):s.feeAmount=Q.mulDivCeil(s.amountIn,new j(o),Mn.sub(new j(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var ge=60,ht=512,E=class{static getTickArrayAddressByTick(e,t,n,r){let o=E.getTickArrayStartIndexByTick(n,r),{publicKey:s}=re(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=E.getTickArrayStartIndexByTick(e,t),r=Math.floor((e-n)/t);if(r<0||r>=ge)throw new Error("tick offset in array overflow");return r}static getTickArrayBitIndex(e,t){let n=J.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)*J.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*ge,r=Math.floor(e/n)+512;return Math.abs(r)}static checkTickArrayIsInitialized(e,t,n){let r=n*ge,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*ge:e+t*ge}static mergeTickArrayBitmap(e){let t=new Wa(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*ge));return[...E.searchLowBitFromStart(e,t,s-1,o,n),...E.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return E.searchHightBitFromStart(e,t,0,ht,n)}static getAllInitializedTickArrayInfo(e,t,n,r,o){let s=[],a=E.getAllInitializedTickArrayStartIndex(n,r,o);for(let c of a){let{publicKey:u}=re(e,t,c);s.push({tickArrayStartIndex:c,tickArrayAddress:u})}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(u=>E.mergeTickArrayBitmap(u)),a=[];for(;n>=-7680;){let u=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[u].testn(l)&&a.push(n),n--,a.length===r)break}let c=J.tickCount(o);return a.map(u=>u*c)}static searchHightBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(u=>E.mergeTickArrayBitmap(u)),a=[];for(;n<7680;){let u=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[u].testn(l)&&a.push(n),n++,a.length===r)break}let c=J.tickCount(o);return a.map(u=>u*c)}static checkIsOutOfBoundary(e){return e<Ie||e>Se}static nextInitTick(e,t,n,r,o){if(J.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<ge;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=ge-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<ge;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let r=Y.getSqrtPriceX64FromTick(t),o=Y.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new M(1).div(o),tickSqrtPriceX64:r}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let r=n?t:new M(1).div(t),o=Bt.getTickWithPriceAndTickspacing(r,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=Y.getSqrtPriceX64FromTick(o),a=Y.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new M(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let r=Y.getSqrtPriceX64FromTick(t),o=Y.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new M(1).div(o),tickSqrtPriceX64:r}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let r=n?t:new M(1).div(t),o=Bt.getTickWithPriceAndTickspacing(r,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=Y.getSqrtPriceX64FromTick(o),a=Y.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new M(1).div(a)}}};var qa=_([ye(8),H("bump"),mt("index"),S(""),Ee("protocolFeeRate"),Ee("tradeFeeRate"),mt("tickSpacing"),ne(A(),8,"")]),Ga=_([Ee("blockTimestamp"),G("sqrtPriceX64"),G("cumulativeTimePriceX64"),ne(G(),1,"")]),Si=_([ye(8),Fe("initialized"),S("poolId"),ne(Ga,1e3,"observations"),ne(G(),5,"")]),Ua=_([H("rewardState"),A("openTime"),A("endTime"),A("lastUpdateTime"),G("emissionsPerSecondX64"),A("rewardTotalEmissioned"),A("rewardClaimed"),S("tokenMint"),S("tokenVault"),S("creator"),G("rewardGrowthGlobalX64")]),Ot=_([ye(8),H("bump"),S("ammConfig"),S("creator"),S("mintA"),S("mintB"),S("vaultA"),S("vaultB"),S("observationId"),H("mintDecimalsA"),H("mintDecimalsB"),mt("tickSpacing"),G("liquidity"),G("sqrtPriceX64"),he("tickCurrent"),mt("observationIndex"),mt("observationUpdateDuration"),G("feeGrowthGlobalX64A"),G("feeGrowthGlobalX64B"),A("protocolFeesTokenA"),A("protocolFeesTokenB"),G("swapInAmountTokenA"),G("swapOutAmountTokenB"),G("swapInAmountTokenB"),G("swapOutAmountTokenA"),H("status"),ne(H(),7,""),ne(Ua,3,"rewardInfos"),ne(A(),16,"tickArrayBitmap"),A("totalFeesTokenA"),A("totalFeesClaimedTokenA"),A("totalFeesTokenB"),A("totalFeesClaimedTokenB"),A("fundFeesTokenA"),A("fundFeesTokenB"),A("startTime"),ne(A(),15*4-3,"padding")]),Xa=_([G("growthInsideLastX64"),A("rewardAmountOwed")]),xi=_([ye(8),H("bump"),S("nftMint"),S("poolId"),he("tickLower"),he("tickUpper"),G("liquidity"),G("feeGrowthInsideLastX64A"),G("feeGrowthInsideLastX64B"),A("tokenFeesOwedA"),A("tokenFeesOwedB"),ne(Xa,3,"rewardInfos"),ne(A(),8,"")]),Hb=_([ye(8),H("bump"),S("poolId"),he("tickLowerIndex"),he("tickUpperIndex"),G("liquidity"),G("feeGrowthInsideLastX64A"),G("feeGrowthInsideLastX64B"),A("tokenFeesOwedA"),A("tokenFeesOwedB"),ne(G(),3,"rewardGrowthInside"),ne(A(),8,"")]),za=_([he("tick"),Kr("liquidityNet"),G("liquidityGross"),G("feeGrowthOutsideX64A"),G("feeGrowthOutsideX64B"),ne(G(),3,"rewardGrowthsOutsideX64"),ne(Ee(),13,"")]),$t=_([ye(8),S("poolId"),he("startTickIndex"),ne(za,ge,"ticks"),H("initializedTickCount"),ne(H(),115,"")]),Ha=_([ye(329),ne(S(),100,"whitelistMints")]),eo=_([ye(8),S("poolId"),ne(ne(A(),8),Bi,"positiveTickArrayBitmap"),ne(ne(A(),8),Bi,"negativeTickArrayBitmap")]);var jb=_([ye(8),H("bump"),Fe("disableCreatePool"),mt("index"),A("tradeFeeRate"),A("protocolFeeRate"),A("fundFeeRate"),A("createPoolFee"),S("protocolOwner"),S("fundOwner"),ne(A(),16)]),to=_([ye(8),S("configId"),S("poolCreator"),S("vaultA"),S("vaultB"),S("mintLp"),S("mintA"),S("mintB"),S("mintProgramA"),S("mintProgramB"),S("observationId"),H("bump"),H("status"),H("lpDecimals"),H("mintDecimalA"),H("mintDecimalB"),A("lpAmount"),A("protocolFeesMintA"),A("protocolFeesMintB"),A("fundFeesMintA"),A("fundFeesMintB"),A("openTime"),ne(A(),32)]);import{TransactionInstruction as no}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ny,TOKEN_2022_PROGRAM_ID as iy,ASSOCIATED_TOKEN_PROGRAM_ID as ry}from"@solana/spl-token";var ay=oe("Raydium_cpmm"),io={initialize:[175,175,109,31,13,152,155,237],deposit:[242,35,198,137,82,225,242,182],withdraw:[183,18,70,156,148,109,161,34],swapBaseInput:[143,190,90,218,196,30,51,222],swapBaseOutput:[55,217,98,86,163,74,180,173]};function ro(i,e,t,n,r,o,s,a,c,u,l,d,m,p,g,f){let y=_([A("amountIn"),A("amounOutMin")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,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:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],k=Buffer.alloc(y.span);return y.encode({amountIn:g,amounOutMin:f},k),new no({keys:b,programId:i,data:Buffer.from([...io.swapBaseInput,...k])})}function oo(i,e,t,n,r,o,s,a,c,u,l,d,m,p,g,f){let y=_([A("amountInMax"),A("amountOut")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,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:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],k=Buffer.alloc(y.span);return y.encode({amountInMax:g,amountOut:f},k),new no({keys:b,programId:i,data:Buffer.from([...io.swapBaseOutput,...k])})}var Qa=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),ly=Buffer.from("amm_config","utf8"),my=Buffer.from("pool","utf8"),dy=Buffer.from("pool_lp_mint","utf8"),py=Buffer.from("pool_vault","utf8"),fy=Buffer.from("observation","utf8");function so(i){return xe([Qa],i)}import Ya from"bn.js";var gy=new Ya(1e6);import ja from"bn.js";var Ty=new ja(0);import{PublicKey as ig}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Te,TOKEN_2022_PROGRAM_ID as ft,ASSOCIATED_TOKEN_PROGRAM_ID as ao}from"@solana/spl-token";import{PublicKey as O,TransactionInstruction as Ue,SystemProgram as Mt,Keypair as Ki}from"@solana/web3.js";import uo from"bn.js";var co=oe("Raydium_Clmm"),Xe={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]},nn=class{static createPoolInstruction(e,t,n,r,o,s,a,c,u,l,d,m,p,g){let f=_([G("sqrtPriceX64"),A("startTime")]),y=[{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:u,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:Mt.programId,isSigner:!1,isWritable:!1},{pubkey:yt,isSigner:!1,isWritable:!1}],b=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:g},b);let k=Buffer.from([...Xe.createPool,...b]);return new Ue({keys:y,programId:e,data:k})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:r,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:c,startTime:u,forerunCreate:l}=e,d=Sn({fromPublicKey:r,programId:n}),[m,p]=[new O(o.address),new O(s.address)],g=[Mt.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:d.seed,newAccountPubkey:d.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Si.span),space:Si.span,programId:n})],{publicKey:f}=zr(n,a,m,p),{publicKey:y}=hi(n,f,m),{publicKey:b}=hi(n,f,p);return g.push(this.createPoolInstruction(n,f,r,a,d.publicKey,m,y,new O(o.programId||Te),p,b,new O(s.programId||Te),Le(n,f).publicKey,c,u)),{signers:[],instructions:g,instructionTypes:[$.CreateAccount,$.ClmmCreatePool],address:{poolId:f,observationId:d.publicKey,mintAVault:y,mintBVault:b},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,r,o,s,a,c,u,l,d,m,p,g,f,y,b,k,P,B,I,x,N,R,W,h){let L=_([he("tickLowerIndex"),he("tickUpperIndex"),he("tickArrayLowerStartIndex"),he("tickArrayUpperStartIndex"),G("liquidity"),A("amountMaxA"),A("amountMaxB"),Fe("withMetadata"),H("optionBaseFlag"),Fe("baseFlag")]),ae=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],z=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:yt,isSigner:!1,isWritable:!1},{pubkey:Mt.programId,isSigner:!1,isWritable:!1},{pubkey:Te,isSigner:!1,isWritable:!1},{pubkey:ao,isSigner:!1,isWritable:!1},{pubkey:Ct,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...ae],Pe=Buffer.alloc(L.span);L.encode({tickLowerIndex:k,tickUpperIndex:P,tickArrayLowerStartIndex:B,tickArrayUpperStartIndex:I,liquidity:x,amountMaxA:N,amountMaxB:R,withMetadata:W==="create",baseFlag:!1,optionBaseFlag:0},Pe);let Z=Buffer.from([...Xe.openPosition,...Pe]);return new Ue({keys:z,programId:e,data:Z})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l}){let d=[],[m,p]=[new O(e.programId),new O(e.id)],g;if(l)g=new O((await l(1))[0]);else{let R=Ki.generate();d.push(R),g=R.publicKey}let f=E.getTickArrayStartIndexByTick(r,e.config.tickSpacing),y=E.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:b}=re(m,p,f),{publicKey:k}=re(m,p,y),{publicKey:P}=je(n.wallet,g,Te),{publicKey:B}=Cn(g),{publicKey:I}=qe(m,g),{publicKey:x}=wt(m,p,r,o),N=this.openPositionFromLiquidityInstruction(m,n.feePayer,p,n.wallet,g,P,B,x,b,k,I,n.tokenAccountA,n.tokenAccountB,new O(t.vault.A),new O(t.vault.B),new O(e.mintA.address),new O(e.mintB.address),r,o,f,y,s,a,c,u);return{signers:d,instructions:[N],instructionTypes:[$.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:g,tickArrayLower:b,tickArrayUpper:k,positionNftAccount:P,metadataAccount:B,personalPosition:I,protocolPosition:x}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,withMetadata:u,getEphemeralSigners:l}){let d=[],[m,p]=[new O(e.programId),new O(e.id)],g;if(l)g=new O((await l(1))[0]);else{let R=Ki.generate();d.push(R),g=R.publicKey}let f=E.getTickArrayStartIndexByTick(r,e.config.tickSpacing),y=E.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:b}=re(m,p,f),{publicKey:k}=re(m,p,y),{publicKey:P}=je(n.wallet,g,Te),{publicKey:B}=Cn(g),{publicKey:I}=qe(m,g),{publicKey:x}=wt(m,p,r,o),N=this.openPositionFromBaseInstruction(m,n.feePayer,p,n.wallet,g,P,B,x,b,k,I,n.tokenAccountA,n.tokenAccountB,new O(t.vault.A),new O(t.vault.B),new O(e.mintA.address),new O(e.mintB.address),r,o,f,y,u,s,a,c,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,y])?Le(m,p).publicKey:void 0);return{address:{nftMint:g,tickArrayLower:b,tickArrayUpper:k,positionNftAccount:P,metadataAccount:B,personalPosition:I,protocolPosition:x},instructions:[N],signers:d,instructionTypes:[$.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,r,o,s,a,c,u,l,d,m,p,g,f,y,b,k,P,B,I,x,N,R,W,h){let L=_([he("tickLowerIndex"),he("tickUpperIndex"),he("tickArrayLowerStartIndex"),he("tickArrayUpperStartIndex"),G("liquidity"),A("amountMaxA"),A("amountMaxB"),Fe("withMetadata"),H("optionBaseFlag"),Fe("baseFlag")]),ae=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],z=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:yt,isSigner:!1,isWritable:!1},{pubkey:Mt.programId,isSigner:!1,isWritable:!1},{pubkey:Te,isSigner:!1,isWritable:!1},{pubkey:ao,isSigner:!1,isWritable:!1},{pubkey:Ct,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...ae],Pe=Buffer.alloc(L.span);L.encode({tickLowerIndex:k,tickUpperIndex:P,tickArrayLowerStartIndex:B,tickArrayUpperStartIndex:I,liquidity:new uo(0),amountMaxA:N==="MintA"?R:W,amountMaxB:N==="MintA"?W:R,withMetadata:x==="create",baseFlag:N==="MintA",optionBaseFlag:1},Pe);let Z=Buffer.from([...Xe.openPosition,...Pe]);return new Ue({keys:z,programId:e,data:Z})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l}){let d,m=[];if(l)d=new O((await l(1))[0]);else{let R=Ki.generate();m.push(R),d=R.publicKey}let[p,g]=[new O(e.programId),new O(e.id)],f=E.getTickArrayStartIndexByTick(r,e.config.tickSpacing),y=E.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:b}=re(p,g,f),{publicKey:k}=re(p,g,y),{publicKey:P}=je(n.wallet,d,Te),{publicKey:B}=Cn(d),{publicKey:I}=qe(p,d),{publicKey:x}=wt(p,g,r,o),N=this.openPositionFromLiquidityInstruction(p,n.wallet,g,n.wallet,d,P,B,x,b,k,I,n.tokenAccountA,n.tokenAccountB,new O(t.vault.A),new O(t.vault.B),new O(t.mintA.address),new O(t.mintB.address),r,o,f,y,s,a,c,u,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,y])?Le(p,g).publicKey:void 0);return{address:{nftMint:d,tickArrayLower:b,tickArrayUpper:k,positionNftAccount:P,metadataAccount:B,personalPosition:I,protocolPosition:x},instructions:[N],signers:m,instructionTypes:[$.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,o){let s=_([]),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:Mt.programId,isSigner:!1,isWritable:!1},{pubkey:Te,isSigner:!1,isWritable:!1}],c=Buffer.alloc(s.span);s.encode({},c);let u=Buffer.from([...Xe.closePosition,...c]);return new Ue({keys:a,programId:e,data:u})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:r}){let o=new O(e.programId),{publicKey:s}=je(n.wallet,r.nftMint,Te),{publicKey:a}=qe(o,r.nftMint),c=[];return c.push(this.closePositionInstruction(o,n.wallet,r.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:c,instructionTypes:[$.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,r,o,s,a,c,u,l,d,m,p,g,f,y,b,k){let P=_([G("liquidity"),A("amountMaxA"),A("amountMaxB"),H("optionBaseFlag"),Fe("baseFlag")]),B=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[]],I=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:Te,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...B],x=Buffer.alloc(P.span);P.encode({liquidity:f,amountMaxA:y,amountMaxB:b,optionBaseFlag:0,baseFlag:!1},x);let N=Buffer.from([...Xe.increaseLiquidity,...x]);return new Ue({keys:I,programId:e,data:N})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMaxA:s,amountMaxB:a}){let[c,u]=[new O(e.programId),new O(e.id)],l=E.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=E.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:m}=re(c,u,l),{publicKey:p}=re(c,u,d),{publicKey:g}=je(r.wallet,n.nftMint,Te),{publicKey:f}=qe(c,n.nftMint),{publicKey:y}=wt(c,u,n.tickLower,n.tickUpper),b=this.increasePositionFromLiquidityInstruction(c,r.wallet,g,f,u,y,m,p,r.tokenAccountA,r.tokenAccountB,new O(t.vault.A),new O(t.vault.B),new O(e.mintA.address),new O(e.mintB.address),o,s,a,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,d])?Le(c,u).publicKey:void 0);return{address:{tickArrayLower:m,tickArrayUpper:p,positionNftAccount:g,personalPosition:f,protocolPosition:y},signers:[],instructions:[b],instructionTypes:[$.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,base:o,baseAmount:s,otherAmountMax:a}){let[c,u]=[new O(e.programId),new O(e.id)],l=E.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=E.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:m}=re(c,u,l),{publicKey:p}=re(c,u,d),{publicKey:g}=je(r.wallet,n.nftMint,Te),{publicKey:f}=qe(c,n.nftMint),{publicKey:y}=wt(c,u,n.tickLower,n.tickUpper);return{address:{tickArrayLower:m,tickArrayUpper:p,positionNftAccount:g,personalPosition:f,protocolPosition:y},instructions:[this.increasePositionFromBaseInstruction(c,r.wallet,g,f,u,y,m,p,r.tokenAccountA,r.tokenAccountB,new O(t.vault.A),new O(t.vault.B),new O(e.mintA.address),new O(e.mintB.address),o,s,a,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,d])?Le(c,u).publicKey:void 0)],signers:[],instructionTypes:[$.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,r,o,s,a,c,u,l,d,m,p,g,f,y,b,k){let P=_([G("liquidity"),A("amountMaxA"),A("amountMaxB"),H("optionBaseFlag"),Fe("baseFlag")]),B=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[]],I=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:Te,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...B],x=Buffer.alloc(P.span);P.encode({liquidity:new uo(0),amountMaxA:f==="MintA"?y:b,amountMaxB:f==="MintA"?b:y,baseFlag:f==="MintA",optionBaseFlag:1},x);let N=Buffer.from([...Xe.increaseLiquidity,...x]);return new Ue({keys:I,programId:e,data:N})}static decreaseLiquidityInstruction(e,t,n,r,o,s,a,c,u,l,d,m,p,g,f,y,b,k,P){let B=_([G("liquidity"),A("amountMinA"),A("amountMinB")]),I=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[],...f.map(W=>[{pubkey:W.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:W.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:W.rewardMint,isSigner:!1,isWritable:!1}]).flat()],x=[{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:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:Te,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:pn,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...I],N=Buffer.alloc(B.span);B.encode({liquidity:y,amountMinA:b,amountMinB:k},N);let R=Buffer.from([...Xe.decreaseLiquidity,...N]);return new Ue({keys:x,programId:e,data:R})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMinA:s,amountMinB:a,programId:c}){let[u,l]=[new O(e.programId),new O(e.id)],d=E.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=E.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=re(u,l,d),{publicKey:g}=re(u,l,m),{publicKey:f}=je(r.wallet,n.nftMint,c),{publicKey:y}=qe(u,n.nftMint),{publicKey:b}=wt(u,l,n.tickLower,n.tickUpper),k=[];for(let B=0;B<e.rewardDefaultInfos.length;B++)k.push({poolRewardVault:new O(t.rewardInfos[B].vault),ownerRewardVault:r.rewardAccounts[B],rewardMint:new O(e.rewardDefaultInfos[B].mint.address)});let P=[];return P.push(this.decreaseLiquidityInstruction(u,r.wallet,f,y,l,b,p,g,r.tokenAccountA,r.tokenAccountB,new O(t.vault.A),new O(t.vault.B),new O(e.mintA.address),new O(e.mintB.address),k,o,s,a,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[d,m])?Le(u,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:g,positionNftAccount:f,personalPosition:y,protocolPosition:b},signers:[],instructions:P,instructionTypes:[$.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,r,o,s,a,c,u,l,d,m,p,g,f,y,b){let k=_([A("amount"),A("otherAmountThreshold"),G("sqrtPriceLimitX64"),Fe("isBaseInput")]),P=[...b?[{pubkey:b,isSigner:!1,isWritable:!0}]:[],...d.map(N=>({pubkey:N,isSigner:!1,isWritable:!0}))],B=[{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:c,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:Te,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:pn,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...P],I=Buffer.alloc(k.span);k.encode({amount:p,otherAmountThreshold:g,sqrtPriceLimitX64:f,isBaseInput:y},I);let x=Buffer.from([...Xe.swap,...I]);return new Ue({keys:B,programId:e,data:x})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:r,inputMint:o,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:c,remainingAccounts:u}){let[l,d]=[new O(e.programId),new O(e.id)],[m,p]=[new O(t.vault.A),new O(t.vault.B)],[g,f]=[new O(e.mintA.address),new O(e.mintB.address)],y=e.mintA.address===o.toString(),b=[this.swapInstruction(l,r.wallet,d,new O(e.config.id),y?r.tokenAccountA:r.tokenAccountB,y?r.tokenAccountB:r.tokenAccountA,y?m:p,y?p:m,y?g:f,y?f:g,u,n,s,a,c,!0,Le(l,d).publicKey)];return{signers:[],instructions:b,instructionTypes:[$.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,r,o,s,a,c,u,l,d,m){let p=_([A("openTime"),A("endTime"),G("emissionsPerSecondX64")]),g=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Mt.programId,isSigner:!1,isWritable:!1},{pubkey:yt,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:ue(l),endTime:ue(d),emissionsPerSecondX64:m},f);let y=Buffer.from([...Xe.initReward,...f]);return new Ue({keys:g,programId:e,data:y})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new O(e.programId),new O(e.id)],a=Hr(o,s,r.mint).publicKey,c=Nn(o).publicKey,u=[this.initRewardInstruction(o,n.wallet,s,c,new O(e.config.id),n.tokenAccount,r.programId,r.mint,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:c},signers:[],instructions:u,instructionTypes:[$.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,r,o,s,a,c,u,l,d,m){let p=_([H("rewardIndex"),G("emissionsPerSecondX64"),A("openTime"),A("endTime")]),g=[{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:Te,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:u,emissionsPerSecondX64:m,openTime:ue(l),endTime:ue(d)},f);let y=Buffer.from([...Xe.setRewardEmissions,...f]);return new Ue({keys:g,programId:e,data:y})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new O(e.programId),new O(e.id)],a,c,u;for(let m=0;m<e.rewardDefaultInfos.length;m++)e.rewardDefaultInfos[m].mint.address===r.mint.toString()&&(a=m,c=new O(t.rewardInfos[m].vault),u=new O(t.rewardInfos[m].mint.address));(a===void 0||c===void 0)&&co.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Nn(o).publicKey,d=[this.setRewardInstruction(o,n.wallet,s,l,new O(e.config.id),n.tokenAccount,c,u,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{rewardVault:c,operationId:l},signers:[],instructions:d,instructionTypes:[$.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,r,o,s,a){let c=_([H("rewardIndex")]),u=[{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:Te,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:pn,isSigner:!1,isWritable:!1}],l=Buffer.alloc(c.span);c.encode({rewardIndex:a},l);let d=Buffer.from([...Xe.collectReward,...l]);return new Ue({keys:u,programId:e,data:d})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:r}){let[o,s]=[new O(e.programId),new O(e.id)],a,c;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===r.toString()&&(a=l,c=new O(t.rewardInfos[l].vault));(a===void 0||c===void 0)&&co.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let u=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,c,r,a)];return{address:{rewardVault:c},signers:[],instructions:u,instructionTypes:[$.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:r,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:c}){let[u,l]=[new O(e.programId),new O(e.id)],[d,m]=[new O(t.vault.A),new O(t.vault.B)],[p,g]=[new O(e.mintA.address),new O(e.mintB.address)],f=e.mintA.address===r.toString(),y=[this.swapInstruction(u,n.wallet,l,new O(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?m:d,f?d:m,f?p:g,f?g:p,c,d,o,s,a,!1)];return{signers:[],instructions:y,instructionTypes:[$.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import kg from"bn.js";import{TOKEN_PROGRAM_ID as hg}from"@solana/spl-token";import _n from"bn.js";var zg=_([Ee("mintAuthorityOption"),S("mintAuthority"),A("supply"),H("decimals"),H("isInitialized"),Ee("freezeAuthorityOption"),S("freezeAuthority")]);import{TOKEN_PROGRAM_ID as Za,TOKEN_2022_PROGRAM_ID as Ja,ASSOCIATED_TOKEN_PROGRAM_ID as $a}from"@solana/spl-token";import{PublicKey as V,TransactionInstruction as eu,SystemProgram as tu}from"@solana/web3.js";import xt from"bn.js";function nu(i,e,t,n,r,o,s,a,c,u,l,d,m,p,g){var x;let f=[],y=[T({pubkey:Za,isWritable:!1}),T({pubkey:Ja,isWritable:!1}),T({pubkey:$a,isWritable:!1}),T({pubkey:tu.programId,isWritable:!1}),T({pubkey:e,isSigner:!0})];y.push(T({pubkey:t})),y.push(T({pubkey:r}));let b=[c,u],k=[l,d],P=[o,s,a];for(let N=0;N<b.length;N++){let R=b[N],W=P[N]===R.mintA.address;if(y.push(T({pubkey:new V(R.programId),isWritable:!1})),N===b.length-1?y.push(T({pubkey:r})):y.push(T({pubkey:n})),y.push(T({pubkey:new V(P[N])})),y.push(T({pubkey:new V(P[N+1])})),R.version===6){let h=k[N];y.push(T({pubkey:new V(h.config.id)})),y.push(T({pubkey:new V(h.id)})),y.push(T({pubkey:new V(W?h.vault.A:h.vault.B)})),y.push(T({pubkey:new V(W?h.vault.B:h.vault.A)})),y.push(T({pubkey:new V(R.observationId)})),y.push(T({pubkey:Hn})),y.push(T({pubkey:Le(new V(R.programId),new V(R.id)).publicKey})),f.push(iu(R.sqrtPriceX64.toString(),W));for(let L of(x=g[N])!=null?x:[])y.push(T({pubkey:new V(L)}))}else if(R.version===5){let h=k[N];y.push(T({pubkey:new V(h.id)})),y.push(T({pubkey:new V(h.authority),isWritable:!1})),y.push(T({pubkey:new V(h.marketProgramId)})),y.push(T({pubkey:new V(h.marketAuthority)})),y.push(T({pubkey:kr,isWritable:!1})),y.push(T({pubkey:new V(h.openOrders)})),y.push(T({pubkey:new V(h.vault.A)})),y.push(T({pubkey:new V(h.vault.B)})),y.push(T({pubkey:new V(h.id)})),y.push(T({pubkey:new V(h.id)})),y.push(T({pubkey:new V(h.id)})),y.push(T({pubkey:new V(h.id)})),y.push(T({pubkey:new V(h.id)})),y.push(T({pubkey:new V(h.id)})),y.push(T({pubkey:new V(h.marketId)})),y.push(T({pubkey:new V(h.marketBids)})),y.push(T({pubkey:new V(h.marketAsks)})),y.push(T({pubkey:new V(h.marketEventQueue)})),y.push(T({pubkey:new V(h.marketBaseVault)})),y.push(T({pubkey:new V(h.marketQuoteVault)}))}else if(R.version===4){let h=k[N],L=R.status!==1;y.push(T({pubkey:new V(h.id)})),y.push(T({pubkey:new V(h.authority),isWritable:!1})),y.push(T({pubkey:new V(L?h.id:h.marketProgramId)})),y.push(T({pubkey:new V(L?h.id:h.marketAuthority)})),y.push(T({pubkey:new V(L?h.id:h.openOrders)})),y.push(T({pubkey:new V(h.vault.A)})),y.push(T({pubkey:new V(h.vault.B)})),y.push(T({pubkey:new V(L?h.id:h.marketId)})),y.push(T({pubkey:new V(L?h.id:h.marketBids)})),y.push(T({pubkey:new V(L?h.id:h.marketAsks)})),y.push(T({pubkey:new V(L?h.id:h.marketEventQueue)})),y.push(T({pubkey:new V(L?h.id:h.marketBaseVault)})),y.push(T({pubkey:new V(L?h.id:h.marketQuoteVault)}))}else if(R.version===7){let h=k[N];y.push(T({pubkey:new V(h.authority)})),y.push(T({pubkey:new V(h.config.id)})),y.push(T({pubkey:new V(h.id)})),y.push(T({pubkey:new V(W?h.vault.A:h.vault.B)})),y.push(T({pubkey:new V(W?h.vault.B:h.vault.A)})),y.push(T({pubkey:new V(R.observationId)}))}else throw Error("pool type error")}let B=_([H("insId"),A("amountIn"),A("amountOut"),ne(G(),f.length,"clmmPriceLimit")]),I=Buffer.alloc(B.span);return B.encode({insId:0,amountIn:m,amountOut:p,clmmPriceLimit:f},I),new eu({keys:y,programId:i,data:I})}function iu(i,e){if(i)if(e){let t=new xt(i).div(new xt(25));return t.gt(Ln)?t:Ln}else{let t=new xt(i).mul(new xt(25));return t.lt(On)?t:On}else return e?Ln:On}function lo({routeProgram:i,ownerInfo:e,inputMint:t,swapInfo:n}){var r,o,s,a,c,u,l;if(n.routeType==="amm")if(n.poolInfo[0].version===6){let d=n.poolKey[0],m=gt(d),p=t.equals(m.mintA.address)?nt.add(Oe):it.sub(Oe);return nn.makeSwapBaseInInstructions({poolInfo:d,poolKeys:d,observationId:n.poolInfo[0].observationId,ownerInfo:{wallet:e.wallet,tokenAccountA:m.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:m.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 xt(0)),sqrtPriceLimitX64:p,remainingAccounts:(s=n.remainingAccounts[0])!=null?s:[]})}else if(n.poolInfo[0].version===7){let d=n.poolInfo[0],m=t.toString()===n.poolInfo[0].mintA.address;return{signers:[],instructions:[m?ro(d.programId,e.wallet,d.authority,d.configId,d.id,e.sourceToken,e.destinationToken,d.vaultA,d.vaultB,d.mintProgramA,d.mintProgramA,new V(d.mintA.address),new V(d.mintB.address),d.observationId,n.amountIn.amount.raw,n.minAmountOut.amount.raw):oo(d.programId,e.wallet,d.authority,d.configId,d.id,e.destinationToken,e.sourceToken,d.vaultB,d.vaultA,d.mintProgramB,d.mintProgramA,new V(d.mintB.address),new V(d.mintA.address),d.observationId,n.amountIn.amount.raw,n.minAmountOut.amount.raw)],lookupTableAddress:[],instructionTypes:[m?$.CpmmSwapBaseIn:$.CpmmSwapBaseOut],address:{}}}else{let d=n.poolKey[0];return{signers:[],instructions:[Vr({poolKeys:d,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((c=(a=n.minAmountOut.fee)==null?void 0:a.raw)!=null?c:new xt(0)),fixedSide:"in"})],lookupTableAddress:d.lookupTableAccount?[d.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?$.AmmV5SwapBaseIn:$.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let d=n.poolInfo[0],m=n.poolInfo[1],p=n.poolKey[0],g=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[nu(i,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.middleToken.mint.toString(),n.outputMint.toString(),d,m,p,g,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((l=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?l:new xt(0)),n.remainingAccounts)],instructionTypes:[$.RouteSwap],lookupTableAddress:[p.lookupTableAccount,g.lookupTableAccount].filter(f=>f!==void 0),address:{}}}else throw Error("route type error")}var mo={[ri.toBase58()]:3},po={3:ri};var Ci=_([ye(5),ye(8),S("ownAddress"),A("vaultSignerNonce"),S("baseMint"),S("quoteMint"),S("baseVault"),A("baseDepositsTotal"),A("baseFeesAccrued"),S("quoteVault"),A("quoteDepositsTotal"),A("quoteFeesAccrued"),A("quoteDustThreshold"),S("requestQueue"),S("eventQueue"),S("bids"),S("asks"),A("baseLotSize"),A("quoteLotSize"),A("feeRateBps"),A("referrerRebatesAccrued"),ye(7)]),fo={3:Ci};import{PublicKey as bo}from"@solana/web3.js";var En=oe("Serum"),Fn=class{static getProgramId(e){let t=po[e];return t||En.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=mo[t];return n||En.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=fo[e];return t||En.logWithError(!!t,"invalid version","version",e),t}static getLayouts(e){return{state:this.getStateLayout(e)}}static getAssociatedAuthority({programId:e,marketId:t}){let n=[t.toBuffer()],r=0,o;for(;r<100;){try{let s=n.concat(Buffer.from([r]),Buffer.alloc(7));o=bo.createProgramAddressSync(s,e)}catch(s){if(s instanceof TypeError)throw s;r++;continue}return{publicKey:o,nonce:r}}return En.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:bo.default,nonce:r}}};var ot=new _n(0),Ri=class extends Rt{constructor(e){super(e)}async getWSolAccounts(){this.scope.checkOwner(),await this.scope.account.fetchWalletTokenAccounts();let e=this.scope.account.tokenAccounts.filter(t=>t.mint.equals(He));return e.sort((t,n)=>t.isAssociated?1:n.isAssociated||t.amount.lt(n.amount)?-1:1),e}async unWrapWSol(e){let{amount:t,tokenProgram:n,txVersion:r=1}=e,o=await this.getWSolAccounts(),s=this.createTxBuilder();s.addCustomComputeBudget(e.computeBudgetConfig);let a=await fi({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});s.addInstruction(a);let c=ue(t);for(let u=0;u<o.length;u++)c.gte(o[u].amount)?(s.addInstruction({instructions:[Yt({tokenAccount:o[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),c.sub(o[u].amount)):(s.addInstruction({instructions:[Yt({tokenAccount:o[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),bi({destination:a.addresses.newAccount,source:o[u].publicKey,amount:c,owner:this.scope.ownerPubKey,tokenProgram:n}));return s.versionBuild({txVersion:r})}async wrapWSol(e,t,n){let r=await this.getWSolAccounts(),o=this.createTxBuilder(),s=await fi({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return o.addInstruction(s),r.length&&o.addInstruction({instructions:[bi({destination:r[0].publicKey,source:s.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[Yt({tokenAccount:s.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),o.versionBuild({txVersion:n!=null?n:1})}async swap({swapInfo:e,swapPoolKeys:t,ownerInfo:n,computeBudgetConfig:r,routeProgram:o,txVersion:s}){let a=this.createTxBuilder(),c=e.amountIn,u=e.amountOut,l=c.amount.token.mint.equals(He),d=c.amount.token.mint,m=u.amount.token.mint,{account:p,instructionParams:g}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:c.amount.token.isToken2022?Ni:pe,mint:d,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:l?{payer:this.scope.ownerPubKey,amount:c.amount.raw}:void 0,associatedOnly:l?!1:n.associatedOnly,checkCreateATAOwner:n.checkCreateATAOwner});if(g&&a.addInstruction(g),p===void 0)throw Error("input account check error");let f=this.scope.account.getAssociatedTokenAccount(m,u.amount.token.isToken2022?Ni:pe),y;if(e.routeType==="route"){let P=e.middleToken;y=this.scope.account.getAssociatedTokenAccount(P.mint,P.isToken2022?Ni:pe)}let b=t||await this.computePoolToPoolKeys({pools:e.poolInfoList}),k=lo({routeProgram:o,inputMint:d,swapInfo:X(v({},e),{poolInfo:[...e.poolInfoList],poolKey:b,outputMint:m}),ownerInfo:{wallet:this.scope.ownerPubKey,sourceToken:p,routeToken:y,destinationToken:f}});if(e.feeConfig!==void 0){let P=this.createTxBuilder();P.addInstruction({instructions:[yo(p,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[$.TransferAmount]}),P.addInstruction(k);let{transactions:B}=s===0?await P.sizeCheckBuildV0():await P.sizeCheckBuild();B.length<2&&a.addInstruction({instructions:[yo(p,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[$.TransferAmount]})}return a.addInstruction(k),s===0?a.sizeCheckBuildV0({computeBudgetConfig:r,address:k.address}):a.sizeCheckBuild({computeBudgetConfig:r,address:k.address})}async fetchRoutePoolBasicInfo(){let e=await this.scope.connection.getProgramAccounts(Pr,{dataSlice:{offset:Er.offsetOf("baseMint"),length:64}}),t=_([S("baseMint"),S("quoteMint")]),n=e.map(u=>({id:u.pubkey,version:4,mintA:t.decode(u.account.data).baseMint,mintB:t.decode(u.account.data).quoteMint})),r=_([S("mintA"),S("mintB")]),s=(await this.scope.connection.getProgramAccounts(wr,{filters:[{dataSize:Ot.span}],dataSlice:{offset:Ot.offsetOf("mintA"),length:64}})).map(u=>{let l=r.decode(u.account.data);return{id:u.pubkey,version:6,mintA:l.mintA,mintB:l.mintB}}),c=(await this.scope.connection.getProgramAccounts(hr,{dataSlice:{offset:to.offsetOf("mintA"),length:64}})).map(u=>{let l=r.decode(u.account.data);return{id:u.pubkey,version:7,mintA:l.mintA,mintB:l.mintB}});return{clmmPools:s,ammPools:n,cpmmPools:c}}getAllRoute({inputMint:e,outputMint:t,clmmPools:n,ammPools:r,cpmmPools:o}){e=e.toString()===It.default.toString()?He:e,t=t.toString()===It.default.toString()?He:t;let s={},a={},c={},u=[],l={};for(let m of n!=null?n:[]){if((m.mintA.equals(e)&&m.mintB.equals(t)||m.mintA.equals(t)&&m.mintB.equals(e))&&(u.push(m),a[m.id.toString()]=m),m.mintA.equals(e)){let p=m.mintB.toString();l[p]===void 0&&(l[p]={mintProgram:pe,in:[],out:[],mDecimals:0}),l[p].in.push(m)}if(m.mintB.equals(e)){let p=m.mintA.toString();l[p]===void 0&&(l[p]={mintProgram:pe,in:[],out:[],mDecimals:0}),l[p].in.push(m)}if(m.mintA.equals(t)){let p=m.mintB.toString();l[p]===void 0&&(l[p]={mintProgram:pe,in:[],out:[],mDecimals:0}),l[p].out.push(m)}if(m.mintB.equals(t)){let p=m.mintA.toString();l[p]===void 0&&(l[p]={mintProgram:pe,in:[],out:[],mDecimals:0}),l[p].out.push(m)}}let d=[];for(let m of r)(m.mintA.equals(e)&&m.mintB.equals(t)||m.mintA.equals(t)&&m.mintB.equals(e))&&(u.push(m),s[m.id.toBase58()]=m,d.push(m)),m.mintA.equals(e)&&(l[m.mintB.toBase58()]===void 0&&(l[m.mintB.toBase58()]={mintProgram:pe,in:[],out:[],mDecimals:0}),l[m.mintB.toBase58()].in.push(m)),m.mintB.equals(e)&&(l[m.mintA.toBase58()]===void 0&&(l[m.mintA.toBase58()]={mintProgram:pe,in:[],out:[],mDecimals:0}),l[m.mintA.toBase58()].in.push(m)),m.mintA.equals(t)&&(l[m.mintB.toBase58()]===void 0&&(l[m.mintB.toBase58()]={mintProgram:pe,in:[],out:[],mDecimals:0}),l[m.mintB.toBase58()].out.push(m)),m.mintB.equals(t)&&(l[m.mintA.toBase58()]===void 0&&(l[m.mintA.toBase58()]={mintProgram:pe,in:[],out:[],mDecimals:0}),l[m.mintA.toBase58()].out.push(m));for(let m of o)(m.mintA.equals(e)&&m.mintB.equals(t)||m.mintA.equals(t)&&m.mintB.equals(e))&&(u.push(m),c[m.id.toBase58()]=m),m.mintA.equals(e)&&(l[m.mintB.toBase58()]===void 0&&(l[m.mintB.toBase58()]={mintProgram:pe,in:[],out:[],mDecimals:0}),l[m.mintB.toBase58()].in.push(m)),m.mintB.equals(e)&&(l[m.mintA.toBase58()]===void 0&&(l[m.mintA.toBase58()]={mintProgram:pe,in:[],out:[],mDecimals:0}),l[m.mintA.toBase58()].in.push(m)),m.mintA.equals(t)&&(l[m.mintB.toBase58()]===void 0&&(l[m.mintB.toBase58()]={mintProgram:pe,in:[],out:[],mDecimals:0}),l[m.mintB.toBase58()].out.push(m)),m.mintB.equals(t)&&(l[m.mintA.toBase58()]===void 0&&(l[m.mintA.toBase58()]={mintProgram:pe,in:[],out:[],mDecimals:0}),l[m.mintA.toBase58()].out.push(m));for(let m of Object.keys(l)){if(l[m].in.length===1&&l[m].out.length===1&&l[m].in[0].id.equals(l[m].out[0].id)){delete l[m];continue}if(l[m].in.length===0||l[m].out.length===0){delete l[m];continue}let p=l[m];for(let g of p.in)for(let f of p.out)g.version===6&&a[g.id.toString()]===void 0?a[g.id.toString()]=g:g.version===7&&o[g.id.toString()]===void 0?c[g.id.toString()]=g:(g.version===4||g.version===5)&&s[g.id.toString()]===void 0&&(s[g.id.toString()]=g),f.version===6&&a[f.id.toString()]===void 0?a[f.id.toString()]=f:f.version===7&&o[f.id.toString()]===void 0?c[f.id.toString()]=f:(f.version===4||f.version===5)&&s[f.id.toString()]===void 0&&(s[f.id.toString()]=f)}return{directPath:u,addLiquidityPools:d,routePathDict:l,needSimulate:Object.values(s),needTickArray:Object.values(a),cpmmPoolList:Object.values(c)}}async fetchSwapRoutesData({routes:e,inputMint:t,outputMint:n}){let r=new Set([...e.needTickArray.map(f=>[f.mintA.toBase58(),f.mintB.toBase58()]).flat(),t.toString(),n.toString()]);console.log("fetching amm pools info, total: ",e.needSimulate.length);let o=await this.scope.liquidity.getRpcPoolInfos(e.needSimulate.map(f=>f.id)),s=qr(o),a={};Object.values(s).forEach(f=>{r.delete(f.mintA.address),a[f.mintA.address]={address:new It(f.mintA.address),programId:pe,mintAuthority:null,supply:BigInt(0),decimals:f.mintA.decimals,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0},r.delete(f.mintB.address),a[f.mintB.address]={address:new It(f.mintB.address),programId:pe,mintAuthority:null,supply:BigInt(0),decimals:f.mintB.decimals,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}}),console.log("fetching cpmm pools info, total: ",e.cpmmPoolList.length);let c=await this.scope.cpmm.getRpcPoolInfos(e.cpmmPoolList.map(f=>f.id.toBase58()),!0);Object.values(c).forEach(f=>{let[y,b]=[f.mintA.toBase58(),f.mintB.toBase58()];f.mintProgramA.equals(pe)?(r.delete(y),a[y]={address:f.mintA,programId:f.mintProgramA,mintAuthority:null,supply:BigInt(0),decimals:f.mintDecimalA,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}):r.add(y),f.mintProgramB.equals(pe)?(r.delete(b),a[b]={address:f.mintB,programId:f.mintProgramB,mintAuthority:null,supply:BigInt(0),decimals:f.mintDecimalB,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}):r.add(b)}),console.log("fetching mints info, total: ",r.size);let u=await yr({connection:this.scope.connection,mints:Array.from(r).map(f=>new It(f))});a=v(v({},a),u);let l=this.scope.cpmm.toComputePoolInfos({pools:c,mintInfos:a});console.log("fetching clmm pools info, total:",e.needTickArray.length);let d=await this.scope.clmm.getRpcClmmPoolInfos({poolIds:e.needTickArray.map(f=>f.id)}),{computeClmmPoolInfo:m,computePoolTickData:p}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:d,mintInfos:a}),g=Object.keys(e.routePathDict).reduce((f,y)=>X(v({},f),{[y]:X(v({},e.routePathDict[y]),{mintProgram:a[y].programId,mDecimals:a[y].decimals,in:e.routePathDict[y].in.map(b=>s[b.id.toBase58()]||m[b.id.toBase58()]||l[b.id.toBase58()]),out:e.routePathDict[y].out.map(b=>s[b.id.toBase58()]||m[b.id.toBase58()]||l[b.id.toBase58()])})}),{});return{mintInfos:a,ammPoolsRpcInfo:o,ammSimulateCache:s,clmmPoolsRpcInfo:d,computeClmmPoolInfo:m,computePoolTickData:p,computeCpmmData:l,routePathDict:g}}getAllRouteComputeAmountOut({inputTokenAmount:e,outputToken:t,directPath:n,routePathDict:r,simulateCache:o,tickCache:s,slippage:a,chainTime:c,epochInfo:u,feeConfig:l}){var b,k,P,B,I,x,N,R,W;let d=l===void 0?new _n(0):e.raw.mul(new _n(l.feeBps.toNumber())).div(new _n(1e4)),m=e.raw.sub(d),p=new ce(e.token,m),g=l===void 0?void 0:{feeAmount:d,feeAccount:l.feeAccount},f=X(v({},t),{address:Qe(t.address).toString()}),y=[];for(let h of n)try{y.push(X(v({},this.computeAmountOut({itemPool:h,tickCache:s,simulateCache:o,chainTime:c,epochInfo:u,slippage:a,outputToken:f,amountIn:p})),{feeConfig:g}))}catch(L){this.logDebug("direct error",h.version,h.id.toString(),L.message)}this.logDebug("direct done");for(let[h,L]of Object.entries(r)){let ae={chainId:101,address:h,programId:L.mintProgram.toBase58(),logoURI:"",symbol:"",name:"",decimals:L.mDecimals,tags:[],extensions:{}},z=L.in.map(Z=>{try{return{pool:Z,data:this.computeAmountOut({itemPool:Z,tickCache:s,simulateCache:o,chainTime:c,epochInfo:u,slippage:a,outputToken:ae,amountIn:p})}}catch(D){this.logDebug("route in error",Z.version,Z.id.toString(),D.message);return}}).sort((Z,D)=>{var Li,Oi,Mi,Ei;let rn=Z===void 0?ot:Z.data.amountOut.amount.raw.sub((Oi=(Li=Z.data.amountOut.fee)==null?void 0:Li.raw)!=null?Oi:ot),go=D===void 0?ot:D.data.amountOut.amount.raw.sub((Ei=(Mi=D.data.amountOut.fee)==null?void 0:Mi.raw)!=null?Ei:ot);return rn.lt(go)?1:-1})[0];if(z===void 0)continue;let Pe=new ce(Fr(ae),z.data.amountOut.amount.raw.sub((k=(b=z.data.amountOut.fee)==null?void 0:b.raw)!=null?k:ot));for(let Z of L.out)try{let D=this.computeAmountOut({itemPool:Z,tickCache:s,simulateCache:o,chainTime:c,epochInfo:u,slippage:a,outputToken:f,amountIn:Pe});y.push(X(v({},D),{allTrade:!!(z.data.allTrade&&D.allTrade),amountIn:z.data.amountIn,amountOut:D.amountOut,minAmountOut:D.minAmountOut,currentPrice:void 0,executionPrice:new M(new Ce({baseToken:z.data.amountIn.amount.token,denominator:z.data.amountIn.amount.raw,quoteToken:D.amountOut.amount.token,numerator:D.amountOut.amount.raw.sub((B=(P=D.amountOut.fee)==null?void 0:P.raw)!=null?B:ot)}).toFixed()),priceImpact:new M(z.data.priceImpact.add(D.priceImpact).toFixed()),fee:[z.data.fee[0],D.fee[0]],routeType:"route",poolInfoList:[z.pool,Z],remainingAccounts:[z.data.remainingAccounts[0],D.remainingAccounts[0]],minMiddleAmountFee:(I=D.amountOut.fee)!=null&&I.raw?new ce(z.data.amountOut.amount.token,((N=(x=z.data.amountOut.fee)==null?void 0:x.raw)!=null?N:ot).add((W=(R=D.amountOut.fee)==null?void 0:R.raw)!=null?W:ot)):void 0,middleToken:z.data.amountOut.amount.token,poolReady:z.data.poolReady&&D.poolReady,poolType:[z.data.poolType,D.poolType],feeConfig:g,expirationTime:Ze(z.data.expirationTime,D.expirationTime)}))}catch(D){this.logDebug("route out error",Z.version,Z.id.toString(),D.message)}}return y.filter(h=>h.allTrade).sort((h,L)=>h.amountOut.amount.raw.sub(L.amountOut.amount.raw).gt(ot)?-1:1)}computeAmountOut({itemPool:e,tickCache:t,simulateCache:n,chainTime:r,epochInfo:o,slippage:s,outputToken:a,amountIn:c}){if(e.version===6){let{allTrade:u,realAmountIn:l,amountOut:d,minAmountOut:m,expirationTime:p,currentPrice:g,executionPrice:f,priceImpact:y,fee:b,remainingAccounts:k,executionPriceX64:P}=Ae.computeAmountOutFormat({poolInfo:e,tickArrayCache:t[e.id.toString()],amountIn:c.raw,tokenOut:a,slippage:s,epochInfo:o,catchLiquidityInsufficient:!0});return{allTrade:u,amountIn:l,amountOut:d,minAmountOut:m,currentPrice:new M(g.toFixed()),executionPrice:new M(f.toFixed()),priceImpact:new M(y.toFixed()),fee:[b],remainingAccounts:[k],routeType:"amm",poolInfoList:[e],poolReady:e.startTime<r,poolType:"CLMM",slippage:s,clmmExPriceX64:[P],expirationTime:Ze(l.expirationTime,p)}}else if(e.version===7){let{allTrade:u,executionPrice:l,amountOut:d,minAmountOut:m,priceImpact:p,fee:g}=this.scope.cpmm.computeSwapAmount({pool:e,outputMint:a.address,amountIn:c.raw,slippage:s});return{allTrade:u,amountIn:{amount:c,fee:void 0,expirationTime:void 0},amountOut:{amount:jt(X(v({},a),{amount:d})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:jt(X(v({},a),{amount:m})),fee:void 0,expirationTime:void 0},currentPrice:e.poolPrice,executionPrice:l,priceImpact:p,fee:[new ce(c.token,g)],remainingAccounts:[],routeType:"amm",poolInfoList:[e],poolReady:e.openTime.toNumber()<r,poolType:"CPMM",slippage:s,clmmExPriceX64:[void 0],expirationTime:void 0}}else{if(![1,6,7].includes(n[e.id.toString()].status))throw Error("swap error");let{amountOut:u,minAmountOut:l,currentPrice:d,executionPrice:m,priceImpact:p,fee:g}=this.scope.liquidity.computeAmountOut({poolInfo:n[e.id.toString()],amountIn:c.raw,mintIn:c.token.mint,mintOut:a.address,slippage:s});return{amountIn:{amount:c,fee:void 0,expirationTime:void 0},amountOut:{amount:jt(X(v({},a),{amount:u})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:jt(X(v({},a),{amount:l})),fee:void 0,expirationTime:void 0},currentPrice:d,executionPrice:m,priceImpact:p,fee:[new ce(c.token,g)],routeType:"amm",poolInfoList:[e],remainingAccounts:[],poolReady:Number(n[e.id].openTime)<r,poolType:e.version===5?"STABLE":void 0,expirationTime:void 0,allTrade:!0,slippage:s,clmmExPriceX64:[void 0]}}}async computePoolToPoolKeys({pools:e,clmmRpcData:t={},ammRpcData:n={}}){let r=new Set(e.filter(u=>u.version===6&&!t[u.id.toString()]).map(u=>u.id.toString()));if(r.size>0){let u=this.scope.clmm.getRpcClmmPoolInfos({poolIds:Array.from(r)});Object.keys(u).forEach(l=>{t[l]=u[l]})}if(new Set(e.filter(u=>u.version===4&&!n[u.id.toString()]).map(u=>u.id.toString())).size>0){let u=this.scope.liquidity.getRpcPoolInfos(Array.from(r));Object.keys(u).forEach(l=>{n[l]=u[l]})}let s=new Set(e.filter(u=>u.version===4).map(u=>u.marketId)),a={};s.size>0&&(await Pt(this.scope.connection,Array.from(s).map(l=>({pubkey:new It(l)})))).forEach(l=>{if(!l.accountInfo)return;let d=Ci.decode(l.accountInfo.data);a[l.pubkey.toBase58()]={marketId:l.pubkey.toString(),marketProgramId:l.accountInfo.owner.toString(),marketAuthority:Fn.getAssociatedAuthority({programId:l.accountInfo.owner,marketId:l.pubkey}).publicKey.toString(),marketBaseVault:d.baseVault.toString(),marketQuoteVault:d.quoteVault.toString(),marketBids:d.bids.toString(),marketAsks:d.asks.toString(),marketEventQueue:d.eventQueue.toString()}});let c=[];return e.forEach(u=>{if(u.version===6){let l=t[u.id.toString()],d={programId:u.programId.toBase58(),id:u.id.toBase58(),mintA:u.mintA,mintB:u.mintB,openTime:String(u.startTime),vault:{A:l.vaultA.toBase58(),B:l.vaultB.toBase58()},config:X(v({},u.ammConfig),{id:u.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]}),rewardInfos:[]};c.push(d)}else if(u.version===4){let l=n[u.id.toString()],d=v({programId:u.programId,id:u.id,mintA:u.mintA,mintB:u.mintB,openTime:String(u.openTime),vault:{A:l.baseVault.toBase58(),B:l.quoteVault.toBase58()},authority:Wr({programId:new It(u.programId)}).publicKey.toString(),openOrders:l.openOrders.toBase58(),targetOrders:l.targetOrders.toBase58(),mintLp:u.lpMint},a[u.marketId]);c.push(d)}else u.version===7&&c.push({programId:u.programId.toBase58(),id:u.id.toBase58(),mintA:u.mintA,mintB:u.mintB,openTime:String(u.openTime),authority:so(u.programId).publicKey.toBase58(),vault:{A:u.vaultA.toBase58(),B:u.vaultB.toBase58()},mintLp:kt({address:u.mintLp.toBase58(),programId:pe.toBase58(),decimals:u.lpDecimals}),config:X(v({id:u.configId.toBase58()},u.configInfo),{protocolFeeRate:u.configInfo.protocolFeeRate.toNumber(),tradeFeeRate:u.configInfo.tradeFeeRate.toNumber(),fundFeeRate:u.configInfo.fundFeeRate.toNumber(),createPoolFee:u.configInfo.createPoolFee.toString()})})}),c}};export{Ri as default};
1
+ var Ao=Object.defineProperty,Po=Object.defineProperties;var ko=Object.getOwnPropertyDescriptors;var on=Object.getOwnPropertySymbols;var _i=Object.prototype.hasOwnProperty,vi=Object.prototype.propertyIsEnumerable;var Fi=(i,e,t)=>e in i?Ao(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,v=(i,e)=>{for(var t in e||(e={}))_i.call(e,t)&&Fi(i,t,e[t]);if(on)for(var t of on(e))vi.call(e,t)&&Fi(i,t,e[t]);return i},X=(i,e)=>Po(i,ko(e));var bt=(i,e)=>{var t={};for(var n in i)_i.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&on)for(var n of on(i))e.indexOf(n)<0&&vi.call(i,n)&&(t[n]=i[n]);return t};import{PublicKey as It}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as pe,TOKEN_2022_PROGRAM_ID as Ni,createTransferInstruction as yo}from"@solana/spl-token";import{get as Di,set as wo}from"lodash";import Wi from"dayjs";import ho from"dayjs/plugin/utc";Wi.extend(ho);var vn=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 Wi().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}},Vi={},To={};function oe(i){let e=Di(Vi,i);if(!e){let t=Di(To,i);e=new vn({name:i,logLevel:t}),wo(Vi,i,e)}return e}import{PublicKey as Ms}from"@solana/web3.js";import Es from"bn.js";import Rs from"big.js";import gn from"bn.js";import Ne from"bn.js";var St=9e15,ct=1e9,Dn="0123456789abcdef",an="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",un="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Vn={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-St,maxE:St,crypto:!1},Xi,$e,U=!0,ln="[DecimalError] ",ut=ln+"Invalid argument: ",zi=ln+"Precision limit exceeded",Hi=ln+"crypto unavailable",Qi="[object Decimal]",Be=Math.floor,fe=Math.pow,Bo=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,xo=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Io=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Yi=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,De=1e7,q=7,So=9007199254740991,Ko=an.length-1,Wn=un.length-1,w={toStringTag:Qi};w.absoluteValue=w.abs=function(){var i=new this.constructor(this);return i.s<0&&(i.s=1),F(i)};w.ceil=function(){return F(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(ut+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,c=o.s,u=i.s;if(!s||!a)return!c||!u?NaN:c!==u?c:s===a?0:!s^c<0?1:-1;if(!s[0]||!a[0])return s[0]?c:a[0]?-u:0;if(c!==u)return c;if(o.e!==i.e)return o.e>i.e^c<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]^c<0?1:-1;return n===r?0:n>r^c<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())+q,n.rounding=1,t=Co(n,er(n,t)),n.precision=i,n.rounding=e,F($e==2||$e==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,c,u,l=this,d=l.constructor;if(!l.isFinite()||l.isZero())return new d(l);for(U=!1,o=l.s*fe(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=we(l.d),i=l.e,(o=(i-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=fe(t,1/3),i=Be((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 d(t),n.s=l.s):n=new d(o.toString()),s=(i=d.precision)+3;;)if(a=n,c=a.times(a).times(a),u=c.plus(l),n=se(u.plus(l).times(a),u.plus(c),s+2,1),we(a.d).slice(0,s)===(t=we(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!r&&t=="4999"){if(!r&&(F(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")&&(F(n,i+1,1),e=!n.times(n).times(n).eq(l));break}return U=!0,F(n,i,d.rounding,e)};w.decimalPlaces=w.dp=function(){var i,e=this.d,t=NaN;if(e){if(i=e.length-1,t=(i-Be(this.e/q))*q,i=e[i],i)for(;i%10==0;i/=10)t--;t<0&&(t=0)}return t};w.dividedBy=w.div=function(i){return se(this,new this.constructor(i))};w.dividedToIntegerBy=w.divToInt=function(i){var e=this,t=e.constructor;return F(se(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 F(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/dn(4,i)).toString()):(i=16,e="2.3283064365386962890625e-10"),o=Kt(s,1,o.times(e),new s(1),!0);for(var c,u=i,l=new s(8);u--;)c=o.times(o),o=a.minus(c.times(l.minus(c.times(l))));return F(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=Kt(o,2,r,r,!0);else{i=1.4*Math.sqrt(n),i=i>16?16:i|0,r=r.times(1/dn(5,i)),r=Kt(o,2,r,r,!0);for(var s,a=new o(5),c=new o(16),u=new o(20);i--;)s=r.times(r),r=r.times(a.plus(s.times(c.times(s).plus(u))))}return o.precision=e,o.rounding=t,F(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,se(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()?ve(t,r,o):new t(0):new t(NaN):e.isZero()?ve(t,r+4,o).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),i=ve(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,U=!1,t=t.times(t).minus(1).sqrt().plus(t),U=!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,U=!1,t=t.times(t).plus(1).sqrt().plus(t),U=!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?F(new o(r),i,e,!0):(o.precision=t=n-r.e,r=se(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=ve(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,c,u=this,l=u.constructor,d=l.precision,m=l.rounding;if(u.isFinite()){if(u.isZero())return new l(u);if(u.abs().eq(1)&&d+4<=Wn)return s=ve(l,d+4,m).times(.25),s.s=u.s,s}else{if(!u.s)return new l(NaN);if(d+4<=Wn)return s=ve(l,d+4,m).times(.5),s.s=u.s,s}for(l.precision=a=d+10,l.rounding=1,t=Math.min(28,a/q+2|0),i=t;i;--i)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(U=!1,e=Math.ceil(a/q),n=1,c=u.times(u),s=new l(u),r=u;i!==-1;)if(r=r.times(c),o=s.minus(r.div(n+=2)),r=r.times(c),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)),U=!0,F(s,l.precision=d,l.rounding=m,!0)};w.isFinite=function(){return!!this.d};w.isInteger=w.isInt=function(){return!!this.d&&Be(this.e/q)>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,c,u=this,l=u.constructor,d=l.precision,m=l.rounding,p=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=u.d,u.s<0||!t||!t[0]||u.eq(1))return new l(t&&!t[0]?-1/0:u.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(U=!1,a=d+p,s=at(u,a),n=e?cn(l,a+10):at(i,a),c=se(s,n,a,1),Ft(c.d,r=d,m))do if(a+=10,s=at(u,a),n=e?cn(l,a+10):at(i,a),c=se(s,n,a,1),!o){+we(c.d).slice(r+1,r+15)+1==1e14&&(c=F(c,d+1,0));break}while(Ft(c.d,r+=10,m));return U=!0,F(c,d,m)};w.minus=w.sub=function(i){var e,t,n,r,o,s,a,c,u,l,d,m,p=this,g=p.constructor;if(i=new g(i),!p.d||!i.d)return!p.s||!i.s?i=new g(NaN):p.d?i.s=-i.s:i=new g(i.d||p.s!==i.s?p:NaN),i;if(p.s!=i.s)return i.s=-i.s,p.plus(i);if(u=p.d,m=i.d,a=g.precision,c=g.rounding,!u[0]||!m[0]){if(m[0])i.s=-i.s;else if(u[0])i=new g(p);else return new g(c===3?-0:0);return U?F(i,a,c):i}if(t=Be(i.e/q),l=Be(p.e/q),u=u.slice(),o=l-t,o){for(d=o<0,d?(e=u,o=-o,s=m.length):(e=m,t=l,s=u.length),n=Math.max(Math.ceil(a/q),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=u.length,s=m.length,d=n<s,d&&(s=n),n=0;n<s;n++)if(u[n]!=m[n]){d=u[n]<m[n];break}o=0}for(d&&(e=u,u=m,m=e,i.s=-i.s),s=u.length,n=m.length-s;n>0;--n)u[s++]=0;for(n=m.length;n>o;){if(u[--n]<m[n]){for(r=n;r&&u[--r]===0;)u[r]=De-1;--u[r],u[n]+=De}u[n]-=m[n]}for(;u[--s]===0;)u.pop();for(;u[0]===0;u.shift())--t;return u[0]?(i.d=u,i.e=mn(u,t),U?F(i,a,c):i):new g(c===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]?F(new n(t),n.precision,n.rounding):(U=!1,n.modulo==9?(e=se(t,i.abs(),0,3,1),e.s*=i.s):e=se(t,i,0,n.modulo,1),e=e.times(i),U=!0,t.minus(e))};w.naturalExponential=w.exp=function(){return qn(this)};w.naturalLogarithm=w.ln=function(){return at(this)};w.negated=w.neg=function(){var i=new this.constructor(this);return i.s=-i.s,F(i)};w.plus=w.add=function(i){var e,t,n,r,o,s,a,c,u,l,d=this,m=d.constructor;if(i=new m(i),!d.d||!i.d)return!d.s||!i.s?i=new m(NaN):d.d||(i=new m(i.d||d.s===i.s?d:NaN)),i;if(d.s!=i.s)return i.s=-i.s,d.minus(i);if(u=d.d,l=i.d,a=m.precision,c=m.rounding,!u[0]||!l[0])return l[0]||(i=new m(d)),U?F(i,a,c):i;if(o=Be(d.e/q),n=Be(i.e/q),u=u.slice(),r=o-n,r){for(r<0?(t=u,r=-r,s=l.length):(t=l,n=o,s=u.length),o=Math.ceil(a/q),s=o>s?o+1:s+1,r>s&&(r=s,t.length=1),t.reverse();r--;)t.push(0);t.reverse()}for(s=u.length,r=l.length,s-r<0&&(r=s,t=l,l=u,u=t),e=0;r;)e=(u[--r]=u[r]+l[r]+e)/De|0,u[r]%=De;for(e&&(u.unshift(e),++n),s=u.length;u[--s]==0;)u.pop();return i.d=u,i.e=mn(u,n),U?F(i,a,c):i};w.precision=w.sd=function(i){var e,t=this;if(i!==void 0&&i!==!!i&&i!==1&&i!==0)throw Error(ut+i);return t.d?(e=ji(t.d),i&&t.e+1>e&&(e=t.e+1)):e=NaN,e};w.round=function(){var i=this,e=i.constructor;return F(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())+q,n.rounding=1,t=Ro(n,er(n,t)),n.precision=i,n.rounding=e,F($e>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,c=s.e,u=s.s,l=s.constructor;if(u!==1||!a||!a[0])return new l(!u||u<0&&(!a||a[0])?NaN:a?s:1/0);for(U=!1,u=Math.sqrt(+s),u==0||u==1/0?(e=we(a),(e.length+c)%2==0&&(e+="0"),u=Math.sqrt(e),c=Be((c+1)/2)-(c<0||c%2),u==1/0?e="5e"+c:(e=u.toExponential(),e=e.slice(0,e.indexOf("e")+1)+c),n=new l(e)):n=new l(u.toString()),t=(c=l.precision)+3;;)if(o=n,n=o.plus(se(s,o,t+2,1)).times(.5),we(o.d).slice(0,t)===(e=we(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(F(o,c+1,0),o.times(o).eq(s))){n=o;break}t+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(F(n,c+1,1),i=!n.times(n).eq(s));break}return U=!0,F(n,c,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=se(t,new n(1).minus(t.times(t)).sqrt(),i+10,0),n.precision=i,n.rounding=e,F($e==2||$e==4?t.neg():t,i,e,!0)):new n(NaN)};w.times=w.mul=function(i){var e,t,n,r,o,s,a,c,u,l=this,d=l.constructor,m=l.d,p=(i=new d(i)).d;if(i.s*=l.s,!m||!m[0]||!p||!p[0])return new d(!i.s||m&&!m[0]&&!p||p&&!p[0]&&!m?NaN:!m||!p?i.s/0:i.s*0);for(t=Be(l.e/q)+Be(i.e/q),c=m.length,u=p.length,c<u&&(o=m,m=p,p=o,s=c,c=u,u=s),o=[],s=c+u,n=s;n--;)o.push(0);for(n=u;--n>=0;){for(e=0,r=c+n;r>n;)a=o[r]+p[n]*m[r-n-1]+e,o[r--]=a%De|0,e=a/De|0;o[r]=(o[r]+e)%De|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),i.d=o,i.e=mn(o,t),U?F(i,d.precision,d.rounding):i};w.toBinary=function(i,e){return Un(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:(Ke(i,0,ct),e===void 0?e=n.rounding:Ke(e,0,8),F(t,i+t.e+1,e))};w.toExponential=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=He(n,!0):(Ke(i,0,ct),e===void 0?e=r.rounding:Ke(e,0,8),n=F(new r(n),i+1,e),t=He(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=He(r):(Ke(i,0,ct),e===void 0?e=o.rounding:Ke(e,0,8),n=F(new o(r),i+r.e+1,e),t=He(n,!1,i+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};w.toFraction=function(i){var e,t,n,r,o,s,a,c,u,l,d,m,p=this,g=p.d,f=p.constructor;if(!g)return new f(p);if(u=t=new f(1),n=c=new f(0),e=new f(n),o=e.e=ji(g)-p.e-1,s=o%q,e.d[0]=fe(10,s<0?q+s:s),i==null)i=o>0?e:u;else{if(a=new f(i),!a.isInt()||a.lt(u))throw Error(ut+a);i=a.gt(e)?o>0?e:u:a}for(U=!1,a=new f(we(g)),l=f.precision,f.precision=o=g.length*q*2;d=se(a,e,0,1,1),r=t.plus(d.times(n)),r.cmp(i)!=1;)t=n,n=r,r=u,u=c.plus(d.times(r)),c=r,r=e,e=a.minus(d.times(r)),a=r;return r=se(i.minus(t),n,0,1,1),c=c.plus(r.times(u)),t=t.plus(r.times(n)),c.s=u.s=p.s,m=se(u,n,o,1).minus(p).abs().cmp(se(c,t,o,1).minus(p).abs())<1?[u,n]:[c,t],f.precision=l,U=!0,m};w.toHexadecimal=w.toHex=function(i,e){return Un(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:Ke(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]?(U=!1,t=se(t,i,0,e,1).times(i),U=!0,F(t)):(i.s=t.s,t=i),t};w.toNumber=function(){return+this};w.toOctal=function(i,e){return Un(this,8,i,e)};w.toPower=w.pow=function(i){var e,t,n,r,o,s,a=this,c=a.constructor,u=+(i=new c(i));if(!a.d||!i.d||!a.d[0]||!i.d[0])return new c(fe(+a,u));if(a=new c(a),a.eq(1))return a;if(n=c.precision,o=c.rounding,i.eq(1))return F(a,n,o);if(e=Be(i.e/q),e>=i.d.length-1&&(t=u<0?-u:u)<=So)return r=Zi(c,a,t,n),i.s<0?new c(1).div(r):F(r,n,o);if(s=a.s,s<0){if(e<i.d.length-1)return new c(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=fe(+a,u),e=t==0||!isFinite(t)?Be(u*(Math.log("0."+we(a.d))/Math.LN10+a.e+1)):new c(t+"").e,e>c.maxE+1||e<c.minE-1?new c(e>0?s/0:0):(U=!1,c.rounding=a.s=1,t=Math.min(12,(e+"").length),r=qn(i.times(at(a,n+t)),n),r.d&&(r=F(r,n+5,1),Ft(r.d,n,o)&&(e=n+10,r=F(qn(i.times(at(a,e+t)),e),e+5,1),+we(r.d).slice(n+1,n+15)+1==1e14&&(r=F(r,n+1,0)))),r.s=s,U=!0,c.rounding=o,F(r,n,o))};w.toPrecision=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=He(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(Ke(i,1,ct),e===void 0?e=r.rounding:Ke(e,0,8),n=F(new r(n),i,e),t=He(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):(Ke(i,1,ct),e===void 0?e=n.rounding:Ke(e,0,8)),F(new n(t),i,e)};w.toString=function(){var i=this,e=i.constructor,t=He(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()&&!i.isZero()?"-"+t:t};w.truncated=w.trunc=function(){return F(new this.constructor(this),this.e+1,1)};w.valueOf=w.toJSON=function(){var i=this,e=i.constructor,t=He(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()?"-"+t:t};function we(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=q-n.length,t&&(o+=st(t)),o+=n;s=i[e],n=s+"",t=q-n.length,t&&(o+=st(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Ke(i,e,t){if(i!==~~i||i<e||i>t)throw Error(ut+i)}function Ft(i,e,t,n){var r,o,s,a;for(o=i[0];o>=10;o/=10)--e;return--e<0?(e+=q,r=0):(r=Math.ceil((e+1)/q),e%=q),o=fe(10,q-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)==fe(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)==fe(10,e-3)-1,s}function sn(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]+=Dn.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 Co(i,e){var t,n,r;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),r=(1/dn(4,t)).toString()):(t=16,r="2.3283064365386962890625e-10"),i.precision+=t,e=Kt(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 se=function(){function i(n,r,o){var s,a=0,c=n.length;for(n=n.slice();c--;)s=n[c]*r+a,n[c]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,r,o,s){var a,c;if(o!=s)c=o>s?1:-1;else for(a=c=0;a<o;a++)if(n[a]!=r[a]){c=n[a]>r[a]?1:-1;break}return c}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,c){var u,l,d,m,p,g,f,y,b,k,P,h,I,x,N,R,W,T,L,ae,z=n.constructor,Pe=n.s==r.s?1:-1,Z=n.d,D=r.d;if(!Z||!Z[0]||!D||!D[0])return new z(!n.s||!r.s||(Z?D&&Z[0]==D[0]:!D)?NaN:Z&&Z[0]==0||!D?Pe*0:Pe/0);for(c?(p=1,l=n.e-r.e):(c=De,p=q,l=Be(n.e/p)-Be(r.e/p)),L=D.length,W=Z.length,b=new z(Pe),k=b.d=[],d=0;D[d]==(Z[d]||0);d++);if(D[d]>(Z[d]||0)&&l--,o==null?(x=o=z.precision,s=z.rounding):a?x=o+(n.e-r.e)+1:x=o,x<0)k.push(1),g=!0;else{if(x=x/p+2|0,d=0,L==1){for(m=0,D=D[0],x++;(d<W||m)&&x--;d++)N=m*c+(Z[d]||0),k[d]=N/D|0,m=N%D|0;g=m||d<W}else{for(m=c/(D[0]+1)|0,m>1&&(D=i(D,m,c),Z=i(Z,m,c),L=D.length,W=Z.length),R=L,P=Z.slice(0,L),h=P.length;h<L;)P[h++]=0;ae=D.slice(),ae.unshift(0),T=D[0],D[1]>=c/2&&++T;do m=0,u=e(D,P,L,h),u<0?(I=P[0],L!=h&&(I=I*c+(P[1]||0)),m=I/T|0,m>1?(m>=c&&(m=c-1),f=i(D,m,c),y=f.length,h=P.length,u=e(f,P,y,h),u==1&&(m--,t(f,L<y?ae:D,y,c))):(m==0&&(u=m=1),f=D.slice()),y=f.length,y<h&&f.unshift(0),t(P,f,h,c),u==-1&&(h=P.length,u=e(D,P,L,h),u<1&&(m++,t(P,L<h?ae:D,h,c))),h=P.length):u===0&&(m++,P=[0]),k[d++]=m,u&&P[0]?P[h++]=Z[R]||0:(P=[Z[R]],h=1);while((R++<W||P[0]!==void 0)&&x--);g=P[0]!==void 0}k[0]||k.shift()}if(p==1)b.e=l,Xi=g;else{for(d=1,m=k[0];m>=10;m/=10)d++;b.e=d+l*p-1,F(b,a?o+b.e+1:o,s,g)}return b}}();function F(i,e,t,n){var r,o,s,a,c,u,l,d,m,p=i.constructor;e:if(e!=null){if(d=i.d,!d)return i;for(r=1,a=d[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=q,s=e,l=d[m=0],c=l/fe(10,r-s-1)%10|0;else if(m=Math.ceil((o+1)/q),a=d.length,m>=a)if(n){for(;a++<=m;)d.push(0);l=c=0,r=1,o%=q,s=o-q+1}else break e;else{for(l=a=d[m],r=1;a>=10;a/=10)r++;o%=q,s=o-q+r,c=s<0?0:l/fe(10,r-s-1)%10|0}if(n=n||e<0||d[m+1]!==void 0||(s<0?l:l%fe(10,r-s-1)),u=t<4?(c||n)&&(t==0||t==(i.s<0?3:2)):c>5||c==5&&(t==4||n||t==6&&(o>0?s>0?l/fe(10,r-s):0:d[m-1])%10&1||t==(i.s<0?8:7)),e<1||!d[0])return d.length=0,u?(e-=i.e+1,d[0]=fe(10,(q-e%q)%q),i.e=-e||0):d[0]=i.e=0,i;if(o==0?(d.length=m,a=1,m--):(d.length=m+1,a=fe(10,q-o),d[m]=s>0?(l/fe(10,r-s)%fe(10,s)|0)*a:0),u)for(;;)if(m==0){for(o=1,s=d[0];s>=10;s/=10)o++;for(s=d[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(i.e++,d[0]==De&&(d[0]=1));break}else{if(d[m]+=a,d[m]!=De)break;d[m--]=0,a=1}for(o=d.length;d[--o]===0;)d.pop()}return U&&(i.e>p.maxE?(i.d=null,i.e=NaN):i.e<p.minE&&(i.e=0,i.d=[0])),i}function He(i,e,t){if(!i.isFinite())return $i(i);var n,r=i.e,o=we(i.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+st(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(i.e<0?"e":"e+")+i.e):r<0?(o="0."+st(-r-1)+o,t&&(n=t-s)>0&&(o+=st(n))):r>=s?(o+=st(r+1-s),t&&(n=t-r-1)>0&&(o=o+"."+st(n))):((n=r+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(r+1===s&&(o+="."),o+=st(n))),o}function mn(i,e){var t=i[0];for(e*=q;t>=10;t/=10)e++;return e}function cn(i,e,t){if(e>Ko)throw U=!0,t&&(i.precision=t),Error(zi);return F(new i(an),e,1,!0)}function ve(i,e,t){if(e>Wn)throw Error(zi);return F(new i(un),e,t,!0)}function ji(i){var e=i.length-1,t=e*q+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 st(i){for(var e="";i--;)e+="0";return e}function Zi(i,e,t,n){var r,o=new i(1),s=Math.ceil(n/q+4);for(U=!1;;){if(t%2&&(o=o.times(e),Gi(o.d,s)&&(r=!0)),t=Be(t/2),t===0){t=o.d.length-1,r&&o.d[t]===0&&++o.d[t];break}e=e.times(e),Gi(e.d,s)}return U=!0,o}function qi(i){return i.d[i.d.length-1]&1}function Ji(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 qn(i,e){var t,n,r,o,s,a,c,u=0,l=0,d=0,m=i.constructor,p=m.rounding,g=m.precision;if(!i.d||!i.d[0]||i.e>17)return new m(i.d?i.d[0]?i.s<0?0:1/0:1:i.s?i.s<0?0:i:0/0);for(e==null?(U=!1,c=g):c=e,a=new m(.03125);i.e>-2;)i=i.times(a),d+=5;for(n=Math.log(fe(2,d))/Math.LN10*2+5|0,c+=n,t=o=s=new m(1),m.precision=c;;){if(o=F(o.times(i),c,1),t=t.times(++l),a=s.plus(se(o,t,c,1)),we(a.d).slice(0,c)===we(s.d).slice(0,c)){for(r=d;r--;)s=F(s.times(s),c,1);if(e==null)if(u<3&&Ft(s.d,c-n,p,u))m.precision=c+=10,t=o=a=new m(1),l=0,u++;else return F(s,m.precision=g,p,U=!0);else return m.precision=g,s}s=a}}function at(i,e){var t,n,r,o,s,a,c,u,l,d,m,p=1,g=10,f=i,y=f.d,b=f.constructor,k=b.rounding,P=b.precision;if(f.s<0||!y||!y[0]||!f.e&&y[0]==1&&y.length==1)return new b(y&&!y[0]?-1/0:f.s!=1?NaN:y?0:f);if(e==null?(U=!1,l=P):l=e,b.precision=l+=g,t=we(y),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(i),t=we(f.d),n=t.charAt(0),p++;o=f.e,n>1?(f=new b("0."+t),o++):f=new b(n+"."+t.slice(1))}else return u=cn(b,l+2,P).times(o+""),f=at(new b(n+"."+t.slice(1)),l-g).plus(u),b.precision=P,e==null?F(f,P,k,U=!0):f;for(d=f,c=s=f=se(f.minus(1),f.plus(1),l,1),m=F(f.times(f),l,1),r=3;;){if(s=F(s.times(m),l,1),u=c.plus(se(s,new b(r),l,1)),we(u.d).slice(0,l)===we(c.d).slice(0,l))if(c=c.times(2),o!==0&&(c=c.plus(cn(b,l+2,P).times(o+""))),c=se(c,new b(p),l,1),e==null)if(Ft(c.d,l-g,k,a))b.precision=l+=g,u=s=f=se(d.minus(1),d.plus(1),l,1),m=F(f.times(f),l,1),r=a=1;else return F(c,b.precision=P,k,U=!0);else return b.precision=P,c;c=u,r+=2}}function $i(i){return String(i.s*i.s/0)}function Gn(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)%q,t<0&&(n+=q),n<r){for(n&&i.d.push(+e.slice(0,n)),r-=q;n<r;)i.d.push(+e.slice(n,n+=q));e=e.slice(n),n=q-e.length}else n-=r;for(;n--;)e+="0";i.d.push(+e),U&&(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 No(i,e){var t,n,r,o,s,a,c,u,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Yi.test(e))return Gn(i,e)}else if(e==="Infinity"||e==="NaN")return+e||(i.s=NaN),i.e=NaN,i.d=null,i;if(xo.test(e))t=16,e=e.toLowerCase();else if(Bo.test(e))t=2;else if(Io.test(e))t=8;else throw Error(ut+e);for(o=e.search(/p/i),o>0?(c=+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=Zi(n,new n(t),o,o*2)),u=sn(e,t,De),l=u.length-1,o=l;u[o]===0;--o)u.pop();return o<0?new n(i.s*0):(i.e=mn(u,l),i.d=u,U=!1,s&&(i=se(i,r,a*4)),c&&(i=i.times(Math.abs(c)<54?fe(2,c):_t.pow(2,c))),U=!0,i)}function Ro(i,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:Kt(i,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/dn(5,t)),e=Kt(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 Kt(i,e,t,n,r){var o,s,a,c,u=1,l=i.precision,d=Math.ceil(l/q);for(U=!1,c=t.times(t),a=new i(n);;){if(s=se(a.times(c),new i(e++*e++),l,1),a=r?n.plus(s):n.minus(s),n=se(s.times(c),new i(e++*e++),l,1),s=a.plus(n),s.d[d]!==void 0){for(o=d;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,u++}return U=!0,s.d.length=d+1,s}function dn(i,e){for(var t=i;--e;)t*=i;return t}function er(i,e){var t,n=e.s<0,r=ve(i,i.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return $e=n?4:1,e;if(t=e.divToInt(r),t.isZero())$e=n?3:2;else{if(e=e.minus(t.times(r)),e.lte(o))return $e=qi(t)?n?2:3:n?4:1,e;$e=qi(t)?n?1:4:n?3:2}return e.minus(r).abs()}function Un(i,e,t,n){var r,o,s,a,c,u,l,d,m,p=i.constructor,g=t!==void 0;if(g?(Ke(t,1,ct),n===void 0?n=p.rounding:Ke(n,0,8)):(t=p.precision,n=p.rounding),!i.isFinite())l=$i(i);else{for(l=He(i),s=l.indexOf("."),g?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(l=l.replace(".",""),m=new p(1),m.e=l.length-s,m.d=sn(He(m),10,r),m.e=m.d.length),d=sn(l,10,r),o=c=d.length;d[--c]==0;)d.pop();if(!d[0])l=g?"0p+0":"0";else{if(s<0?o--:(i=new p(i),i.d=d,i.e=o,i=se(i,m,t,n,0,r),d=i.d,o=i.e,u=Xi),s=d[t],a=r/2,u=u||d[t+1]!==void 0,u=n<4?(s!==void 0||u)&&(n===0||n===(i.s<0?3:2)):s>a||s===a&&(n===4||u||n===6&&d[t-1]&1||n===(i.s<0?8:7)),d.length=t,u)for(;++d[--t]>r-1;)d[t]=0,t||(++o,d.unshift(1));for(c=d.length;!d[c-1];--c);for(s=0,l="";s<c;s++)l+=Dn.charAt(d[s]);if(g){if(c>1)if(e==16||e==8){for(s=e==16?4:3,--c;c%s;c++)l+="0";for(d=sn(l,r,e),c=d.length;!d[c-1];--c);for(s=1,l="1.";s<c;s++)l+=Dn.charAt(d[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>c)for(o-=c;o--;)l+="0";else o<c&&(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 Gi(i,e){if(i.length>e)return i.length=e,!0}function Lo(i){return new this(i).abs()}function Oo(i){return new this(i).acos()}function Mo(i){return new this(i).acosh()}function Eo(i,e){return new this(i).plus(e)}function Fo(i){return new this(i).asin()}function _o(i){return new this(i).asinh()}function vo(i){return new this(i).atan()}function Do(i){return new this(i).atanh()}function Vo(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=ve(this,o,1).times(e.s>0?.25:.75),t.s=i.s):!e.d||i.isZero()?(t=e.s<0?ve(this,n,r):new this(0),t.s=i.s):!i.d||e.isZero()?(t=ve(this,o,1).times(.5),t.s=i.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(se(i,e,o,1)),e=ve(this,o,1),this.precision=n,this.rounding=r,t=i.s<0?t.minus(e):t.plus(e)):t=this.atan(se(i,e,o,1)),t}function Wo(i){return new this(i).cbrt()}function qo(i){return F(i=new this(i),i.e+1,2)}function Go(i,e,t){return new this(i).clamp(e,t)}function Uo(i){if(!i||typeof i!="object")throw Error(ln+"Object expected");var e,t,n,r=i.defaults===!0,o=["precision",1,ct,"rounding",0,8,"toExpNeg",-St,0,"toExpPos",0,St,"maxE",0,St,"minE",-St,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],r&&(this[t]=Vn[t]),(n=i[t])!==void 0)if(Be(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(ut+t+": "+n);if(t="crypto",r&&(this[t]=Vn[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(Hi);else this[t]=!1;else throw Error(ut+t+": "+n);return this}function Xo(i){return new this(i).cos()}function zo(i){return new this(i).cosh()}function tr(i){var e,t,n;function r(o){var s,a,c,u=this;if(!(u instanceof r))return new r(o);if(u.constructor=r,Ui(o)){u.s=o.s,U?!o.d||o.e>r.maxE?(u.e=NaN,u.d=null):o.e<r.minE?(u.e=0,u.d=[0]):(u.e=o.e,u.d=o.d.slice()):(u.e=o.e,u.d=o.d?o.d.slice():o.d);return}if(c=typeof o,c==="number"){if(o===0){u.s=1/o<0?-1:1,u.e=0,u.d=[0];return}if(o<0?(o=-o,u.s=-1):u.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;U?s>r.maxE?(u.e=NaN,u.d=null):s<r.minE?(u.e=0,u.d=[0]):(u.e=s,u.d=[o]):(u.e=s,u.d=[o]);return}else if(o*0!==0){o||(u.s=NaN),u.e=NaN,u.d=null;return}return Gn(u,o.toString())}else if(c!=="string")throw Error(ut+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),u.s=-1):(a===43&&(o=o.slice(1)),u.s=1),Yi.test(o)?Gn(u,o):No(u,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=Uo,r.clone=tr,r.isDecimal=Ui,r.abs=Lo,r.acos=Oo,r.acosh=Mo,r.add=Eo,r.asin=Fo,r.asinh=_o,r.atan=vo,r.atanh=Do,r.atan2=Vo,r.cbrt=Wo,r.ceil=qo,r.clamp=Go,r.cos=Xo,r.cosh=zo,r.div=Ho,r.exp=Qo,r.floor=Yo,r.hypot=jo,r.ln=Zo,r.log=Jo,r.log10=es,r.log2=$o,r.max=ts,r.min=ns,r.mod=is,r.mul=rs,r.pow=os,r.random=ss,r.round=as,r.sign=us,r.sin=cs,r.sinh=ls,r.sqrt=ms,r.sub=ds,r.sum=ps,r.tan=fs,r.tanh=bs,r.trunc=ys,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 Ho(i,e){return new this(i).div(e)}function Qo(i){return new this(i).exp()}function Yo(i){return F(i=new this(i),i.e+1,3)}function jo(){var i,e,t=new this(0);for(U=!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 U=!0,new this(1/0);t=e}return U=!0,t.sqrt()}function Ui(i){return i instanceof _t||i&&i.toStringTag===Qi||!1}function Zo(i){return new this(i).ln()}function Jo(i,e){return new this(i).log(e)}function $o(i){return new this(i).log(2)}function es(i){return new this(i).log(10)}function ts(){return Ji(this,arguments,"lt")}function ns(){return Ji(this,arguments,"gt")}function is(i,e){return new this(i).mod(e)}function rs(i,e){return new this(i).mul(e)}function os(i,e){return new this(i).pow(e)}function ss(i){var e,t,n,r,o=0,s=new this(1),a=[];if(i===void 0?i=this.precision:Ke(i,1,ct),n=Math.ceil(i/q),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(Hi);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],i%=q,n&&i&&(r=fe(10,q-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-=q)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<q&&(t-=q-n)}return s.e=t,s.d=a,s}function as(i){return F(i=new this(i),i.e+1,this.rounding)}function us(i){return i=new this(i),i.d?i.d[0]?i.s:0*i.s:i.s||NaN}function cs(i){return new this(i).sin()}function ls(i){return new this(i).sinh()}function ms(i){return new this(i).sqrt()}function ds(i,e){return new this(i).sub(e)}function ps(){var i=0,e=arguments,t=new this(e[i]);for(U=!1;t.s&&++i<e.length;)t=t.plus(e[i]);return U=!0,F(t,this.precision,this.rounding)}function fs(i){return new this(i).tan()}function bs(i){return new this(i).tanh()}function ys(i){return F(i=new this(i),i.e+1,1)}w[Symbol.for("nodejs.util.inspect.custom")]=w.toString;w[Symbol.toStringTag]="Decimal";var _t=w.constructor=tr(Vn);an=new _t(an);un=new _t(un);var M=_t;import{PublicKey as Yn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as gs}from"@solana/spl-token";import{PublicKey as le,SystemProgram as nr,SYSVAR_RENT_PUBKEY as As}from"@solana/web3.js";function B({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var pu=[B({pubkey:gs,isWritable:!1}),B({pubkey:nr.programId,isWritable:!1}),B({pubkey:As,isWritable:!1})];function Xn({publicKey:i,transformSol:e}){let t=zn(i.toString());if(t instanceof le)return e&&t.equals(vt)?Ve:t;if(e&&t.toString()===vt.toBase58())return Ve;if(typeof t=="string"){if(t===le.default.toBase58())return le.default;try{return new le(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function zn(i){try{return new le(i)}catch{return i}}var pn=new le("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Hn=new le("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),yt=new le("SysvarRent111111111111111111111111111111111"),fu=new le("SysvarC1ock11111111111111111111111111111111"),Ct=new le("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),bu=new le("Sysvar1nstructions1111111111111111111111111"),Ps=nr.programId,yu=new le("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),gu=new le("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Au=new le("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Pu=new le("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),ku=new le("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),wu=new le("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),hu=new le("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Tu=new le("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Bu=new le("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),xu=new le("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Iu=new le("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Ve=new le("So11111111111111111111111111111111111111112"),vt=le.default;function Qe(i){return Xn({publicKey:i,transformSol:!0})}import{PublicKey as ks}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ir}from"@solana/spl-token";var Qn={chainId:101,address:ks.default.toBase58(),programId:ir.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Ye={chainId:101,address:"So11111111111111111111111111111111111111112",programId:ir.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 jn=class{constructor({mint:e,decimals:t,symbol:n,name:r,skipMint:o=!1,isToken2022:s=!1}){if(e===vt.toBase58()||e instanceof Yn&&vt.equals(e)){this.decimals=Ye.decimals,this.symbol=Ye.symbol,this.name=Ye.name,this.mint=new Yn(Ye.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?Yn.default:Xn({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Re=jn;Re.WSOL=new jn(X(v({},Ye),{mint:Ye.address}));import bn from"big.js";import Ts from"bn.js";import Bs from"decimal.js-light";import ws from"toformat";var hs=ws,Dt=hs;var fn=oe("module/fraction"),Zn=Dt(bn),Vt=Dt(Bs),xs={[0]:Vt.ROUND_DOWN,[1]:Vt.ROUND_HALF_UP,[2]:Vt.ROUND_UP},Is={[0]:bn.roundDown,[1]:bn.roundHalfUp,[2]:bn.roundUp},ie=class{constructor(e,t=new Ts(1)){this.numerator=ue(e),this.denominator=ue(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new ie(this.denominator,this.numerator)}add(e){let t=e instanceof ie?e:new ie(ue(e));return this.denominator.eq(t.denominator)?new ie(this.numerator.add(t.numerator),this.denominator):new ie(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof ie?e:new ie(ue(e));return this.denominator.eq(t.denominator)?new ie(this.numerator.sub(t.numerator),this.denominator):new ie(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof ie?e:new ie(ue(e));return new ie(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof ie?e:new ie(ue(e));return new ie(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||fn.logWithError(`${e} is not an integer.`),e<=0&&fn.logWithError(`${e} is not positive.`),Vt.set({precision:e+1,rounding:xs[n]});let r=new Vt(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)||fn.logWithError(`${e} is not an integer.`),e<0&&fn.logWithError(`${e} is negative.`),Zn.DP=e,Zn.RM=Is[n]||1,new Zn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Ks=oe("Raydium_price"),Ce=class extends ie{constructor(t){let{baseToken:n,quoteToken:r,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=r,this.scalar=new ie(Jn(n.decimals),Jn(r.decimals))}get raw(){return new ie(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&&Ks.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 $n=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},yn=$n;yn.SOL=new $n(Qn);import Cs from"bn.js";var rr=new ie(new Cs(100)),lt=class extends ie{toSignificant(e=5,t,n){return this.mul(rr).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(rr).toFixed(e,t,n)}};var or=new Ne(0),Ns=new Ne(1),hc=new Ne(2),Tc=new Ne(3),Bc=new Ne(5),ei=new Ne(10),xc=new Ne(100),Ic=new Ne(1e3),Sc=new Ne(1e4),sr=9007199254740991;function ue(i){let e=oe("Raydium_parseBigNumberish");if(i instanceof Ne)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new Ne(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=sr||i<=-sr)&&e.logWithError(`BigNumberish number overflow: ${i}`),new Ne(String(i))):typeof i=="bigint"?new Ne(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new Ne(0))}function Jn(i){return ei.pow(ue(i))}var Ls=oe("Raydium_amount"),ur=Dt(Rs);function Os(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")):Ls.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,n.slice(0,e)||n]}var ce=class extends ie{constructor(t,n,r=!0,o){let s=new gn(0),a=ei.pow(new gn(t.decimals));if(r)s=ue(n);else{let c=new gn(0),u=new gn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,d]=Os(n.toString(),t.decimals);c=ue(l),u=ue(d)}c=c.mul(a),s=c.add(u)}super(s,a);this.logger=oe(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 ce(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new ce(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 ur.DP=this.token.decimals,new ur(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};function ar(i){return typeof i=="object"&&i!==null&&![Re,ce,Ms,ie,Es,Ce,lt].some(e=>typeof e=="object"&&i instanceof e)}function gt(i){return typeof i=="string"?zn(i):Array.isArray(i)?i.map(e=>gt(e)):ar(i)?Object.fromEntries(Object.entries(i).map(([e,t])=>[e,gt(t)])):i}import{PublicKey as Gt,sendAndConfirmTransaction as Ut,Transaction as Xt,TransactionMessage as zt,VersionedTransaction as Ht}from"@solana/web3.js";import Xs from"axios";var J={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 Fs,ComputeBudgetProgram as cr,Transaction as mr,TransactionMessage as _s,Keypair as dr,VersionedTransaction as pr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as vs}from"@solana/spl-token";var lr=oe("Raydium_txUtil"),fr=1644;function An(i){let e=[],t=[];return i.microLamports&&(e.push(cr.setComputeUnitPrice({microLamports:i.microLamports})),t.push(J.SetComputeUnitPrice)),i.units&&(e.push(cr.setComputeUnitLimit({units:i.units})),t.push(J.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Nt(i,e){var n,r;let t=e!=null?e:"confirmed";try{return((r=await((n=i.getLatestBlockhash)==null?void 0:n.call(i,{commitment:t})))==null?void 0:r.blockhash)||(await i.getRecentBlockhash(t)).blockhash}catch{return(await i.getRecentBlockhash(t)).blockhash}}function Ds(i,e){i.length<1&&lr.logWithError(`no instructions provided: ${i.toString()}`),e.length<1&&lr.logWithError(`no signers provided:, ${e.toString()}`);let t=new mr;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...i);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<fr}catch{return!1}}function xe(i,e){let[t,n]=Fs.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}function Wt({instructions:i,payer:e,signers:t}){return Ds(i,[e,...t])}function qt({instructions:i,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=dr.generate().publicKey.toString()}){let o=new _s({payerKey:e,recentBlockhash:n,instructions:i}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new pr(o).serialize()).toString("base64").length<fr}catch{return!1}}var Vs=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i);function At(i){let e=[];return i.forEach(t=>{t instanceof mr&&(t.recentBlockhash||(t.recentBlockhash=vs.toBase58()),t.feePayer||(t.feePayer=dr.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof pr&&(n=Vs(n));let r=n.toString("base64");e.push(r)}),console.log("simulate tx string:",e),e}import{PublicKey as gr,AddressLookupTableAccount as Pn}from"@solana/web3.js";import{PublicKey as br}from"@solana/web3.js";import{MINT_SIZE as Ws,TOKEN_PROGRAM_ID as qs,getTransferFeeConfig as Gs,unpackMint as Us}from"@solana/spl-token";var ti=oe("Raydium_accountInfo_util");async function et(i,e,t){let{batchRequest:n,commitment:r="confirmed",chunkCount:o=100}=v({batchRequest:!1},t),s=ni(e,o),a=new Array(s.length).fill([]);if(n){let c=s.map(d=>{let m=i._buildArgs([d.map(p=>p.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=ni(c,10);a=(await(await Promise.all(u.map(async d=>await i._rpcBatchRequest(d)))).flat()).map(d=>(d.error&&ti.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${d.error.message}`),d.result.value.map(m=>{if(m){let{data:p,executable:g,lamports:f,owner:y,rentEpoch:b}=m;return p.length!==2&&p[1]!=="base64"&&ti.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:g,lamports:f,owner:new br(y),rentEpoch:b}}return null})))}else try{a=await Promise.all(s.map(c=>i.getMultipleAccountsInfo(c,r)))}catch(c){c instanceof Error&&ti.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${c.message}`)}return a.flat()}async function Pt(i,e,t){let n=await et(i,e.map(r=>r.pubkey),t);return e.map((r,o)=>X(v({},r),{accountInfo:n[o]}))}async function yr({connection:i,mints:e,config:t}){var o,s,a;if(e.length===0)return{};let n=await Pt(i,e.map(c=>({pubkey:Qe(c)})),t),r={};for(let c of n){if(!c.accountInfo||c.accountInfo.data.length<Ws){console.log("invalid mint account",c.pubkey.toBase58());continue}let u=Us(c.pubkey,c.accountInfo,(o=c.accountInfo)==null?void 0:o.owner);r[c.pubkey.toString()]=X(v({},u),{programId:((s=c.accountInfo)==null?void 0:s.owner)||qs,feeConfig:(a=Gs(u))!=null?a:void 0})}return r[br.default.toBase58()]=r[Ve.toBase58()],r}async function ii({connection:i,address:e}){let t=await et(i,[...new Set(e.map(r=>r.toString()))].map(r=>new gr(r))),n={};for(let r=0;r<e.length;r++){let o=t[r],s=e[r];if(!o)continue;let a=new Pn({key:s,state:Pn.deserialize(o.data)});n[s.toString()]=a,kn[s.toString()]=a}return n}var kn={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Pn({key:new gr("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Pn.deserialize(Buffer.from("AQAAAP//////////d49+DAAAAAAAAQZMWvw7GUNJdaccNBVnb57OKakxL2BHLYvhRwVILRsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkG3fbh7nWP3hhCXbzkbM3athr8TYO5DSf+vfko2KGL/AVKU1D4XciC1hSlVnJ4iilt3x6rq9CmBniISTL07vagBqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAIyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZC3BlsePRfEU4nVJ/awTDzVi4bHMaoP21SbbRvAP4KUbIScv+6Yw2LHF/6K0ZjUPibbSWXCirYPGuuVl7zT789IUPLW4CpHr4JNCatp3ELXDLKMv6JJ+37le50lbBJ2LvDQdRqCgtphMF/imcN7mY5YRx2xE1A3MQ+L4QRaYK9u4GRfZP3LsAd00a+IkCpA22UNQMKdq5BFbJuwuOLqc8zxCTDlqxBG8J0HcxtfogQHDK06ukzfaXiNDKAob1MqBHS9lJxDYCwz8gd5DtFqNSTKG5l1zxIaKpDP/sffi2is1H9aKveyXSu5StXElYRl9SD5As0DHE4N0GLnf84/siiKXVyp4Ez121kLcUui/jLLFZEz/BwZK3Ilf9B9OcsEAeDMKAy2vjGSxQODgBz0QwGA+eP4ZjIjrIAQaXENv31QfLlOdXSRCkaybRniDHF4C8YcwhcvsqrOVuTP4B2Na+9wLdtrB31uz2rtlFI5kahdsnp/d1SrASDInYCtTYtdoke4kX+hoKWcEWM4Tle8pTUkUVv4BxS6fje/EzKBE4Qu9N9LMnrw/JNO0hqMVB4rk/2ou4AB1loQ7FZoPwut2o4KZB+0p9xnbrQKw038qjpHar+PyDwvxBRcu5hpHw3dguezeWv+IwvgW5icu8EGkhGa9AkFPPJT7VMSFb8xowveU=","base64"))})};var wn=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster,this.blockhashCommitment=e.blockhashCommitment}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var n;let e=(await Xs.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(n=e==null?void 0:e[15])!=null?n:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:n}=An(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:r=[],endInstructionTypes:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...r),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==Gt.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(v({},t||{})):this.build(t)}build(e){let t=new Xt;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async n=>{var a;let{recentBlockHash:r,skipPreflight:o=!0}=n||{},s=r!=null?r:await Nt(this.connection,this.blockhashCommitment);if(t.recentBlockhash=s,this.signers.length&&t.sign(...this.signers),At([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await Ut(this.connection,t,this.signers.find(c=>c.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:o}),signedTx:t};if(this.signAllTransactions){let c=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(c[0].serialize(),{skipPreflight:o}),signedTx:c[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:r}=this.build(n),o=t.filter(u=>u.transaction.instructions.length>0),s=[r,...o.map(u=>u.transaction)],a=[this.signers,...o.map(u=>u.signers)],c=[...this.instructionTypes,...o.map(u=>u.instructionTypes).flat()];return{builder:this,transactions:s,signers:a,instructionTypes:c,execute:async u=>{var f;let{sequentially:l,onTxUpdate:d,recentBlockHash:m,skipPreflight:p=!0}=u||{},g=m!=null?m:await Nt(this.connection,this.blockhashCommitment);if((f=this.owner)!=null&&f.isKeyPair){if(l){let y=[];for(let b of s){let k=await Ut(this.connection,b,this.signers.find(P=>P.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:p});y.push(k)}return{txIds:y,signedTxs:s}}return{txIds:await await Promise.all(s.map(async(y,b)=>(y.recentBlockhash=g,await Ut(this.connection,y,a[b].find(k=>k.publicKey.equals(this.owner.publicKey))?a[b]:[...a[b],this.owner.signer],{skipPreflight:p})))),signedTxs:s}}if(this.signAllTransactions){let y=s.map((k,P)=>(k.recentBlockhash=g,a[P].length&&k.sign(...a[P]),k));At(y);let b=await this.signAllTransactions(y);if(l){let k=0,P=[],h=async()=>{if(!b[k])return;let I=await this.connection.sendRawTransaction(b[k].serialize(),{skipPreflight:p});P.push({txId:I,status:"sent",signedTx:b[k]}),d==null||d([...P]),k++,this.connection.onSignature(I,x=>{let N=P.findIndex(R=>R.txId===I);N>-1&&(P[N].status=x.err?"error":"success"),d==null||d([...P]),x.err||h()},"processed"),this.connection.getSignatureStatus(I)};return await h(),{txIds:P.map(I=>I.txId),signedTxs:b}}else{let k=[];for(let P=0;P<b.length;P+=1){let h=await this.connection.sendRawTransaction(b[P].serialize(),{skipPreflight:p});k.push(h)}return{txIds:k,signedTxs:b}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){let m=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:r}=m,o=bt(m,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=v(v({},this.cluster==="devnet"?{}:kn),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),c=[];for(let p of a)s[p]===void 0&&c.push(new Gt(p));let u=await ii({connection:this.connection,address:c});for(let[p,g]of Object.entries(u))s[p]=g;let l=new zt({payerKey:this.feePayer,recentBlockhash:r?Gt.default.toBase58():await Nt(this.connection,this.blockhashCommitment),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),d=new Ht(l);return d.sign(this.signers),{builder:this,transaction:d,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async p=>{var y;let{recentBlockHash:g,skipPreflight:f=!0}=p||{};if(g&&(d.message.recentBlockhash=g),At([d]),(y=this.owner)!=null&&y.isKeyPair){this.signers.find(h=>h.publicKey.equals(this.owner.publicKey))||d.sign([this.owner.signer]);let b=await this.connection.sendTransaction(d,{skipPreflight:f}),{lastValidBlockHeight:k,blockhash:P}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});return await this.connection.confirmTransaction({blockhash:P,lastValidBlockHeight:k,signature:b},"confirmed"),{txId:b,signedTx:d}}if(this.signAllTransactions){let b=await this.signAllTransactions([d]);return{txId:await this.connection.sendTransaction(b[0],{skipPreflight:f}),signedTx:b[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async buildV0MultiTx(e){let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:r}=await this.buildV0(n),o=t.filter(u=>u.builder.instructions.length>0),s=[r,...o.map(u=>u.transaction)],a=[this.signers,...o.map(u=>u.signers)],c=[...this.instructionTypes,...o.map(u=>u.instructionTypes).flat()];return s.forEach(async(u,l)=>{u.sign(a[l])}),{builder:this,transactions:s,signers:a,instructionTypes:c,buildProps:n,execute:async u=>{var g;let{sequentially:l,onTxUpdate:d,recentBlockHash:m,skipPreflight:p=!0}=u||{};if(m&&s.forEach(f=>f.message.recentBlockhash=m),At(s),(g=this.owner)!=null&&g.isKeyPair){let{lastValidBlockHeight:f,blockhash:y}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});if(s.forEach((b,k)=>{a[k].find(P=>P.publicKey.equals(this.owner.publicKey))||b.sign([this.owner.signer])}),l){let b=[];for(let k of s){let P=await this.connection.sendTransaction(k,{skipPreflight:p}),{lastValidBlockHeight:h,blockhash:I}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:I,lastValidBlockHeight:h,signature:P},"confirmed"),b.push(P)}return{txIds:b,signedTxs:s}}return{txIds:await Promise.all(s.map(async b=>{let k=await this.connection.sendTransaction(b,{skipPreflight:p});return await this.connection.confirmTransaction({blockhash:y,lastValidBlockHeight:f,signature:k},"confirmed"),k})),signedTxs:s}}if(this.signAllTransactions){let f=await this.signAllTransactions(s);if(l){let y=0,b=[],k=async()=>{if(!f[y])return;let P=await this.connection.sendTransaction(f[y],{skipPreflight:p});b.push({txId:P,status:"sent",signedTx:f[y]}),d==null||d([...b]),y++,this.connection.onSignature(P,h=>{let I=b.findIndex(x=>x.txId===P);I>-1&&(b[I].status=h.err?"error":"success"),d==null||d([...b]),h.err||k()},"processed"),this.connection.getSignatureStatus(P)};return k(),{txIds:[],signedTxs:f}}else{let y=[];for(let b=0;b<f.length;b+=1){let k=await this.connection.sendTransaction(f[b],{skipPreflight:p});y.push(k)}return{txIds:y,signedTxs:f}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){let u=e||{},{computeBudgetConfig:t}=u,n=bt(u,["computeBudgetConfig"]),r=t?An(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,d)=>X(v({},l),{[d.publicKey.toBase58()]:d}),{}),s=[],a=[],c=[];if(this.allInstructions.forEach(l=>{let d=[...c,l],m=t?[...r.instructions,...d]:d,g=[...new Set(d.map(f=>f.keys.filter(y=>y.isSigner).map(y=>y.pubkey.toString())).flat()).values()].map(f=>new Gt(f));if(c.length<12&&Wt({instructions:m,payer:this.feePayer,signers:g})||Wt({instructions:d,payer:this.feePayer,signers:g}))c.push(l);else{if(c.length===0)throw Error("item ins too big");Wt({instructions:t?[...r.instructions,...c]:[...c],payer:this.feePayer,signers:g})?s.push(new Xt().add(...r.instructions,...c)):s.push(new Xt().add(...c)),a.push(Array.from(new Set(c.map(f=>f.keys.filter(y=>y.isSigner).map(y=>y.pubkey.toString())).flat())).map(f=>o[f]).filter(f=>f!==void 0)),c=[l]}}),c.length>0){let d=[...new Set(c.map(m=>m.keys.filter(p=>p.isSigner).map(p=>p.pubkey.toString())).flat()).values()].map(m=>o[m]).filter(m=>m!==void 0);Wt({instructions:t?[...r.instructions,...c]:[...c],payer:this.feePayer,signers:d.map(m=>m.publicKey)})?s.push(new Xt().add(...r.instructions,...c)):s.push(new Xt().add(...c)),a.push(d)}return s.forEach(l=>l.feePayer=this.feePayer),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async l=>{var y;let{sequentially:d,onTxUpdate:m,recentBlockHash:p,skipPreflight:g=!0}=l||{},f=p!=null?p:await Nt(this.connection,this.blockhashCommitment);if(s.forEach(async(b,k)=>{b.recentBlockhash=f,a[k].length&&b.sign(...a[k])}),At(s),(y=this.owner)!=null&&y.isKeyPair){if(d){let b=[];for(let k of s){let P=await Ut(this.connection,k,this.signers.find(h=>h.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:g});b.push(P)}return{txIds:b,signedTxs:s}}return{txIds:await Promise.all(s.map(async(b,k)=>await Ut(this.connection,b,a[k].find(P=>P.publicKey.equals(this.owner.publicKey))?a[k]:[...a[k],this.owner.signer],{skipPreflight:g}))),signedTxs:s}}if(this.signAllTransactions){let b=await this.signAllTransactions(s);if(d){let k=0,P=[],h=async()=>{if(!b[k])return;let I=await this.connection.sendRawTransaction(b[k].serialize(),{skipPreflight:g});P.push({txId:I,status:"sent",signedTx:b[k]}),m==null||m([...P]),k++,this.connection.onSignature(I,x=>{let N=P.findIndex(R=>R.txId===I);N>-1&&(P[N].status=x.err?"error":"success"),m==null||m([...P]),x.err||h()},"processed"),this.connection.getSignatureStatus(I)};return await h(),{txIds:P.map(I=>I.txId),signedTxs:b}}else{let k=[];for(let P=0;P<b.length;P+=1){let h=await this.connection.sendRawTransaction(b[P].serialize(),{skipPreflight:g});k.push(h)}return{txIds:k,signedTxs:b}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){let y=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:r=[]}=y,o=bt(y,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=v(v({},this.cluster==="devnet"?{}:kn),n),a=Array.from(new Set([...this.lookupTableAddress,...r])),c=[];for(let b of a)s[b]===void 0&&c.push(new Gt(b));let u=await ii({connection:this.connection,address:c});for(let[b,k]of Object.entries(u))s[b]=k;let l=t?An(t):{instructions:[],instructionTypes:[]},d=await Nt(this.connection,this.blockhashCommitment),m=this.signers.reduce((b,k)=>X(v({},b),{[k.publicKey.toBase58()]:k}),{}),p=[],g=[],f=[];if(this.allInstructions.forEach(b=>{let k=[...f,b],P=t?[...l.instructions,...k]:k;if(f.length<12&&qt({instructions:P,payer:this.feePayer,lookupTableAddressAccount:s})||qt({instructions:k,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(b);else{if(f.length===0)throw Error("item ins too big");let h={};for(let I of[...new Set(a)])s[I]!==void 0&&(h[I]=s[I]);if(t&&qt({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:d})){let I=new zt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Ht(I))}else{let I=new zt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Ht(I))}g.push(Array.from(new Set(f.map(I=>I.keys.filter(x=>x.isSigner).map(x=>x.pubkey.toString())).flat())).map(I=>m[I]).filter(I=>I!==void 0)),f=[b]}}),f.length>0){let k=[...new Set(f.map(P=>P.keys.filter(h=>h.isSigner).map(h=>h.pubkey.toString())).flat()).values()].map(P=>m[P]).filter(P=>P!==void 0);if(t&&qt({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:d})){let P=new zt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Ht(P))}else{let P=new zt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Ht(P))}g.push(k)}return{builder:this,transactions:p,buildProps:e,signers:g,instructionTypes:this.instructionTypes,execute:async b=>{var x;let{sequentially:k,onTxUpdate:P,recentBlockHash:h,skipPreflight:I=!0}=b||{};if(p.map(async(N,R)=>{g[R].length&&N.sign(g[R]),h&&(N.message.recentBlockhash=h)}),At(p),(x=this.owner)!=null&&x.isKeyPair){let{lastValidBlockHeight:N,blockhash:R}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});if(p.forEach((W,T)=>{g[T].find(L=>L.publicKey.equals(this.owner.publicKey))||W.sign([this.owner.signer])}),k){let W=[];for(let T of p){let L=await this.connection.sendTransaction(T,{skipPreflight:I}),{lastValidBlockHeight:ae,blockhash:z}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:z,lastValidBlockHeight:ae,signature:L},"confirmed"),W.push(L)}return{txIds:W,signedTxs:p}}return{txIds:await Promise.all(p.map(async W=>{let T=await this.connection.sendTransaction(W,{skipPreflight:I});return await this.connection.confirmTransaction({blockhash:R,lastValidBlockHeight:N,signature:T},"confirmed"),T})),signedTxs:p}}if(this.signAllTransactions){let N=await this.signAllTransactions(p);if(k){let R=0,W=[],T=async()=>{if(!N[R])return;let L=await this.connection.sendTransaction(N[R],{skipPreflight:I});W.push({txId:L,status:"sent",signedTx:N[R]}),P==null||P([...W]),R++,this.connection.onSignature(L,ae=>{let z=W.findIndex(Pe=>Pe.txId===L);z>-1&&(W[z].status=ae.err?"error":"success"),P==null||P([...W]),ae.err||T()},"processed"),this.connection.getSignatureStatus(L)};return T(),{txIds:[],signedTxs:N}}else{let R=[];for(let W=0;W<N.length;W+=1){let T=await this.connection.sendTransaction(N[W],{skipPreflight:I});R.push(T)}return{txIds:R,signedTxs:N}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};function ni(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 ee}from"@solana/web3.js";var _l=new ee("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),vl=new ee("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Dl=new ee("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Vl=new ee("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Wl=new ee("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),ri=new ee("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Pr=new ee("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),ql=new ee("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),kr=new ee("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),wr=new ee("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Gl=new ee("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Ul=new ee("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Xl=new ee("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),zl=new ee("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Hl=new ee("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Ql=new ee("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),hr=new ee("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Yl=new ee("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),jl=new ee("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),zs=new ee("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Hs=new ee("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Qs=new ee("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");var Zl={SERUM_MARKET:ee.default,OPENBOOK_MARKET:new ee("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:ee.default,FarmV3:new ee("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new ee("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new ee("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new ee("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new ee("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new ee("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new ee("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:zs,CREATE_CPMM_POOL_AUTH:Hs,CREATE_CPMM_POOL_FEE_ACC:Qs,FEE_DESTINATION_ID:new ee("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as Ys}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as js}from"@solana/spl-token";function je(i,e,t){return xe([i.toBuffer(),(t!=null?t:js).toBuffer(),e.toBuffer()],new Ys("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import We from"bn.js";var Qt=1e4;function be(i,e,t,n){if(e===void 0)return{amount:i,fee:void 0,expirationTime:void 0};let r=X(v({},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 We(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===Qt){let c=new We(o.maximumFee.toString());return{amount:i.add(c),fee:c,expirationTime:a}}else{let c=oi(i.mul(new We(Qt)),new We(Qt-o.transferFeeBasisPoints)),u=new We(o.maximumFee.toString()),l=c.sub(i).gt(u)?i.add(u):c,d=oi(l.mul(new We(o.transferFeeBasisPoints)),new We(Qt)),m=d.gt(s)?s:d;return{amount:l,fee:m,expirationTime:a}}else{let c=oi(i.mul(new We(o.transferFeeBasisPoints)),new We(Qt)),u=c.gt(s)?s:c;return{amount:i,fee:u,expirationTime:a}}}function Ze(i,e){return i===void 0?e:e===void 0?i:Math.min(i,e)}function oi(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new We(0))?t.add(new We(1)):t}var si=(...i)=>i.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Rt=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=oe(t)}createTxBuilder(e){return this.scope.checkOwner(),new wn({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(si(e))}logInfo(...e){this.logger.info(si(e))}logAndCreateError(...e){let t=si(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as ya,createCloseAccountInstruction as ga,createTransferInstruction as Aa,TOKEN_PROGRAM_ID as Lt}from"@solana/spl-token";import{PublicKey as Pa,SystemProgram as ka}from"@solana/web3.js";import wa from"bn.js";import{PublicKey as da,Keypair as pa}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as fa}from"@solana/spl-token";import qd from"bn.js";import{PublicKey as oa}from"@solana/web3.js";import Ir,{isBN as Sr}from"bn.js";import{bits as Sm,BitStructure as Km,blob as Zs,Blob as Cm,cstr as Nm,f32 as Rm,f32be as Lm,f64 as Om,f64be as Mm,greedy as Em,Layout as Js,ns64 as Fm,ns64be as _m,nu64 as vm,nu64be as Dm,offset as Vm,s16 as Wm,s16be as qm,s24 as Gm,s24be as Um,s32 as $s,s32be as Xm,s40 as zm,s40be as Hm,s48 as Qm,s48be as Ym,s8 as jm,seq as ea,struct as Zm,Structure as ta,u16 as na,u16be as Jm,u24 as $m,u24be as ed,u32 as td,u32be as nd,u40 as id,u40be as rd,u48 as od,u48be as sd,u8 as ia,UInt as ra,union as ad,Union as ud,unionLayoutDiscriminator as cd,utf8 as ld}from"@solana/buffer-layout";var ai=Js,Tr=ta;var ui=ra;var Br=ia,mt=na;var he=$s;var xr=ea;var ye=Zs;var Yt=class extends ai{constructor(t,n,r){super(t,r);this.blob=ye(t),this.signed=n}decode(t,n=0){let r=new Ir(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 Ir(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,r)}};function H(i){return new ui(1,i)}function Ee(i){return new ui(4,i)}function A(i){return new Yt(8,!1,i)}function G(i){return new Yt(16,!1,i)}function Kr(i){return new Yt(16,!0,i)}var hn=class extends ai{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 S(i){return new hn(ye(32),e=>new oa(e),e=>e.toBuffer(),i)}function Fe(i){return new hn(Br(),sa,aa,i)}function sa(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function aa(i){return i?1:0}var ci=class extends Tr{decode(e,t){return super.decode(e,t)}};function _(i,e,t){return new ci(i,e,t)}function ne(i,e,t){let n,r=typeof e=="number"?e:Sr(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=Sr(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 xr(i,r,t)}var Tn=_([S("mint"),S("owner"),A("amount"),Ee("delegateOption"),S("delegate"),H("state"),Ee("isNativeOption"),A("isNative"),A("delegatedAmount"),Ee("closeAuthorityOption"),S("closeAuthority")]);function ua(i){return i instanceof Uint8Array||i!=null&&typeof i=="object"&&i.constructor.name==="Uint8Array"}function li(i,...e){if(!ua(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 mi(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 Cr(i,e){li(i);let t=e.outputLen;if(i.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var xn=i=>new DataView(i.buffer,i.byteOffset,i.byteLength),qe=(i,e)=>i<<32-e|i>>>e;var Sd=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function ca(i){if(typeof i!="string")throw new Error(`utf8ToBytes expected string, got ${typeof i}`);return new Uint8Array(new TextEncoder().encode(i))}function di(i){return typeof i=="string"&&(i=ca(i)),li(i),i}var Bn=class{clone(){return this._cloneInto()}},Kd={}.toString;function Nr(i){let e=n=>i().update(di(n)).digest(),t=i();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>i(),e}function la(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),c=n?4:0,u=n?0:4;i.setUint32(e+c,s,n),i.setUint32(e+u,a,n)}var Rr=(i,e,t)=>i&e^~i&t,Lr=(i,e,t)=>i&e^i&t^e&t,In=class extends Bn{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=xn(this.buffer)}update(e){mi(this);let{view:t,buffer:n,blockLen:r}=this;e=di(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(r-this.pos,o-s);if(a===r){let c=xn(e);for(;r<=o-s;s+=r)this.process(c,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){mi(this),Cr(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 d=s;d<r;d++)t[d]=0;la(n,r-8,BigInt(this.length*8),o),this.process(n,0);let a=xn(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let u=c/4,l=this.get();if(u>l.length)throw new Error("_sha2: outputLen bigger than state");for(let d=0;d<u;d++)a.setUint32(4*d,l[d],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 ma=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]),dt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),pt=new Uint32Array(64),pi=class extends In{constructor(){super(64,32,8,!1),this.A=dt[0]|0,this.B=dt[1]|0,this.C=dt[2]|0,this.D=dt[3]|0,this.E=dt[4]|0,this.F=dt[5]|0,this.G=dt[6]|0,this.H=dt[7]|0}get(){let{A:e,B:t,C:n,D:r,E:o,F:s,G:a,H:c}=this;return[e,t,n,r,o,s,a,c]}set(e,t,n,r,o,s,a,c){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=c|0}process(e,t){for(let d=0;d<16;d++,t+=4)pt[d]=e.getUint32(t,!1);for(let d=16;d<64;d++){let m=pt[d-15],p=pt[d-2],g=qe(m,7)^qe(m,18)^m>>>3,f=qe(p,17)^qe(p,19)^p>>>10;pt[d]=f+pt[d-7]+g+pt[d-16]|0}let{A:n,B:r,C:o,D:s,E:a,F:c,G:u,H:l}=this;for(let d=0;d<64;d++){let m=qe(a,6)^qe(a,11)^qe(a,25),p=l+m+Rr(a,c,u)+ma[d]+pt[d]|0,f=(qe(n,2)^qe(n,13)^qe(n,22))+Lr(n,r,o)|0;l=u,u=c,c=a,a=s+p|0,s=o,o=r,r=n,n=p+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,c=c+this.F|0,u=u+this.G|0,l=l+this.H|0,this.set(n,r,o,s,a,c,u,l)}roundClean(){pt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Or=Nr(()=>new pi);var zd=oe("Raydium_Util");function Sn({fromPublicKey:i,programId:e=fa}){let t=pa.generate().publicKey.toBase58().slice(0,32);return{publicKey:ba(i,t,e),seed:t}}function ba(i,e,t){let n=Buffer.concat([i.toBuffer(),Buffer.from(e),t.toBuffer()]),r=Or(n);return new da(r)}function ha(i){let{mint:e,tokenAccount:t,owner:n,programId:r=Lt}=i;return ya(t,e,n,r)}function Ot(i){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:r,programId:o=Lt}=i;return ga(e,t,r,n,o)}async function fi(i){let{connection:e,amount:t,commitment:n,payer:r,owner:o,skipCloseAccount:s}=i,a=await e.getMinimumBalanceForRentExemption(Tn.span,n),c=ue(t).add(new wa(a)),u=Sn({fromPublicKey:r,programId:Lt});return{addresses:{newAccount:u.publicKey},signers:[],instructions:[ka.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:u.seed,newAccountPubkey:u.publicKey,lamports:c.toNumber(),space:Tn.span,programId:Lt}),ha({mint:new Pa(Ye.address),tokenAccount:u.publicKey,owner:o,programId:Lt})],instructionTypes:[J.CreateAccount,J.InitAccount],endInstructionTypes:s?[]:[J.CloseAccount],endInstructions:s?[]:[Ot({tokenAccount:u.publicKey,payer:r,owner:o})]}}function bi({source:i,destination:e,owner:t,amount:n,multiSigners:r=[],tokenProgram:o=Lt}){return Aa(i,e,t,BigInt(String(n)),r,o)}import Mr from"bn.js";var cp=new Mr(25),lp=new Mr(1e4);var yi=_([H("instruction"),A("amountIn"),A("minAmountOut")]),gi=_([H("instruction"),A("maxAmountIn"),A("amountOut")]),gp=_([H("instruction"),H("nonce")]),Ta=_([H("instruction"),H("nonce"),A("startTime")]),Er=_([A("status"),A("nonce"),A("maxOrder"),A("depth"),A("baseDecimal"),A("quoteDecimal"),A("state"),A("resetFlag"),A("minSize"),A("volMaxCutRatio"),A("amountWaveRatio"),A("baseLotSize"),A("quoteLotSize"),A("minPriceMultiplier"),A("maxPriceMultiplier"),A("systemDecimalValue"),A("minSeparateNumerator"),A("minSeparateDenominator"),A("tradeFeeNumerator"),A("tradeFeeDenominator"),A("pnlNumerator"),A("pnlDenominator"),A("swapFeeNumerator"),A("swapFeeDenominator"),A("baseNeedTakePnl"),A("quoteNeedTakePnl"),A("quoteTotalPnl"),A("baseTotalPnl"),A("poolOpenTime"),A("punishPcAmount"),A("punishCoinAmount"),A("orderbookToInitTime"),G("swapBaseInAmount"),G("swapQuoteOutAmount"),A("swapBase2QuoteFee"),G("swapQuoteInAmount"),G("swapBaseOutAmount"),A("swapQuote2BaseFee"),S("baseVault"),S("quoteVault"),S("baseMint"),S("quoteMint"),S("lpMint"),S("openOrders"),S("marketId"),S("marketProgramId"),S("targetOrders"),S("withdrawQueue"),S("lpVault"),S("owner"),A("lpReserve"),ne(A(),3,"padding")]),Ap=_([A("accountType"),A("status"),A("nonce"),A("maxOrder"),A("depth"),A("baseDecimal"),A("quoteDecimal"),A("state"),A("resetFlag"),A("minSize"),A("volMaxCutRatio"),A("amountWaveRatio"),A("baseLotSize"),A("quoteLotSize"),A("minPriceMultiplier"),A("maxPriceMultiplier"),A("systemDecimalsValue"),A("abortTradeFactor"),A("priceTickMultiplier"),A("priceTick"),A("minSeparateNumerator"),A("minSeparateDenominator"),A("tradeFeeNumerator"),A("tradeFeeDenominator"),A("pnlNumerator"),A("pnlDenominator"),A("swapFeeNumerator"),A("swapFeeDenominator"),A("baseNeedTakePnl"),A("quoteNeedTakePnl"),A("quoteTotalPnl"),A("baseTotalPnl"),A("poolOpenTime"),A("punishPcAmount"),A("punishCoinAmount"),A("orderbookToInitTime"),G("swapBaseInAmount"),G("swapQuoteOutAmount"),G("swapQuoteInAmount"),G("swapBaseOutAmount"),A("swapQuote2BaseFee"),A("swapBase2QuoteFee"),S("baseVault"),S("quoteVault"),S("baseMint"),S("quoteMint"),S("lpMint"),S("modelDataAccount"),S("openOrders"),S("marketId"),S("marketProgramId"),S("targetOrders"),S("owner"),ne(A(),64,"padding")]),Ba=_([H("instruction"),A("baseAmountIn"),A("quoteAmountIn"),A("fixedSide")]),xa=_([H("instruction"),A("amountIn")]);var Pp=_([A("fee")]);import{PublicKey as Ra}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as La}from"@solana/spl-token";import{PublicKey as Tp}from"@solana/web3.js";import{MintLayout as xp,TOKEN_PROGRAM_ID as Sp}from"@solana/spl-token";var Fr=i=>new Re({mint:i.address,decimals:i.decimals,symbol:i.symbol,name:i.name}),jt=r=>{var o=r,{amount:i,isRaw:e,name:t}=o,n=bt(o,["amount","isRaw","name"]);return new ce(new Re({mint:Qe(n.address).toBase58(),decimals:n.decimals,symbol:n.symbol,name:t}),i,e,t)};var kt=r=>{var o=r,{address:i,programId:e,decimals:t}=o,n=bt(o,["address","programId","decimals"]);return v({chainId:101,address:Qe(i).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)};import{PublicKey as Ep}from"@solana/web3.js";var vp=oe("Raydium_liquidity_serum");import{PublicKey as Ia}from"@solana/web3.js";var Ai=new Ia("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Sa=5e4,Ka=_([A("x"),A("y"),A("price")]),Gp=_([A("accountType"),A("status"),A("multiplier"),A("validDataCount"),ne(Ka,Sa,"DataElement")]);import{TOKEN_PROGRAM_ID as vr,ASSOCIATED_TOKEN_PROGRAM_ID as zp}from"@solana/spl-token";import{PublicKey as Qp,TransactionInstruction as Dr,SystemProgram as Yp,SYSVAR_RENT_PUBKEY as jp}from"@solana/web3.js";var _r=oe("Raydium_liquidity_instruction");function Ca({poolKeys:i,userKeys:e,amountIn:t,minAmountOut:n},r){let o=gt(i),s=Buffer.alloc(yi.span);yi.encode({instruction:9,amountIn:ue(t),minAmountOut:ue(n)},s);let a=[B({pubkey:vr,isWritable:!1}),B({pubkey:o.id}),B({pubkey:o.authority,isWritable:!1}),B({pubkey:o.openOrders})];return r===4&&a.push(B({pubkey:o.targetOrders})),a.push(B({pubkey:o.vault.A}),B({pubkey:o.vault.B})),r===5&&a.push(B({pubkey:Ai})),a.push(B({pubkey:o.marketProgramId,isWritable:!1}),B({pubkey:o.marketId}),B({pubkey:o.marketBids}),B({pubkey:o.marketAsks}),B({pubkey:o.marketEventQueue}),B({pubkey:o.marketBaseVault}),B({pubkey:o.marketQuoteVault}),B({pubkey:o.marketAuthority,isWritable:!1}),B({pubkey:e.tokenAccountIn}),B({pubkey:e.tokenAccountOut}),B({pubkey:e.owner,isWritable:!1})),new Dr({programId:o.programId,keys:a,data:s})}function Na({poolKeys:i,userKeys:e,maxAmountIn:t,amountOut:n},r){let o=gt(i),s=Buffer.alloc(gi.span);gi.encode({instruction:11,maxAmountIn:ue(t),amountOut:ue(n)},s);let a=[B({pubkey:vr,isWritable:!1}),B({pubkey:o.id}),B({pubkey:o.authority,isWritable:!1}),B({pubkey:o.openOrders}),B({pubkey:o.targetOrders}),B({pubkey:o.vault.A}),B({pubkey:o.vault.B})];return r===5&&a.push(B({pubkey:Ai})),a.push(B({pubkey:o.marketProgramId,isWritable:!1}),B({pubkey:o.marketId}),B({pubkey:o.marketBids}),B({pubkey:o.marketAsks}),B({pubkey:o.marketEventQueue}),B({pubkey:o.marketBaseVault}),B({pubkey:o.marketQuoteVault}),B({pubkey:o.marketAuthority,isWritable:!1}),B({pubkey:e.tokenAccountIn}),B({pubkey:e.tokenAccountOut}),B({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Dr({programId:o.programId,keys:a,data:s})}function Vr(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 Ca(X(v({},a),{amountIn:r,minAmountOut:o}),t);if(s==="out")return Na(X(v({},a),{maxAmountIn:r,amountOut:o}),t);_r.logWithError("invalid params","params",i)}throw _r.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}import hf from"bn.js";function Wr({programId:i}){return xe([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],i)}var Pi={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]},qr=i=>{let e={},t=La.toBase58();return Object.keys(i).map(n=>{let r=i[n],[o,s]=[r.baseMint.toBase58(),r.quoteMint.toBase58()];e[n]={id:n,version:4,status:r.status.toNumber(),programId:r.programId.toBase58(),mintA:kt({address:o,programId:t,decimals:r.baseDecimal.toNumber()}),mintB:kt({address:s,programId:t,decimals:r.quoteDecimal.toNumber()}),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:r.poolPrice.toNumber(),mintAmountA:new M(r.baseReserve.toString()).div(10**r.baseDecimal.toNumber()).toNumber(),mintAmountB:new M(r.quoteReserve.toString()).div(10**r.quoteDecimal.toNumber()).toNumber(),baseReserve:r.baseReserve,quoteReserve:r.quoteReserve,feeRate:new M(r.tradeFeeNumerator.toString()).div(r.tradeFeeDenominator.toString()).toNumber(),openTime:r.poolOpenTime.toString(),tvl:0,day:Pi,week:Pi,month:Pi,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,type:"Standard",marketId:r.marketId.toBase58(),configId:Ra.default.toBase58(),lpPrice:0,lpAmount:0,lpMint:kt({address:r.lpMint.toBase58(),programId:t,decimals:Math.min(r.baseDecimal.toNumber(),r.quoteDecimal.toNumber())})}}),e};import Wa from"bn.js";function Kn(i){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,i,!1),new Uint8Array(e)}function ki(i,e){let t=0;for(let n=i-1;n>=0&&!e.testn(n);n--)t++;return t}function wi(i,e){let t=0;for(let n=0;n<i&&!e.testn(n);n++)t++;return t}function Zt(i,e){for(let t=0;t<i;t++)if(e.testn(t))return!1;return!0}function Gr(i,e){return Zt(i,e)?null:ki(i,e)}function Ur(i,e){return Zt(i,e)?null:wi(i,e)}var Ff=Buffer.from("amm_config","utf8"),Oa=Buffer.from("pool","utf8"),Ma=Buffer.from("pool_vault","utf8"),Ea=Buffer.from("pool_reward_vault","utf8"),Xr=Buffer.from("position","utf8"),Fa=Buffer.from("tick_array","utf8"),_a=Buffer.from("operation","utf8"),va=Buffer.from("pool_tick_array_bitmap_extension","utf8");function zr(i,e,t,n){return xe([Oa,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function hi(i,e,t){return xe([Ma,e.toBuffer(),t.toBuffer()],i)}function Hr(i,e,t){return xe([Ea,e.toBuffer(),t.toBuffer()],i)}function re(i,e,t){return xe([Fa,e.toBuffer(),Kn(t)],i)}function wt(i,e,t,n){return xe([Xr,e.toBuffer(),Kn(t),Kn(n)],i)}function Ge(i,e){return xe([Xr,e.toBuffer()],i)}function Cn(i){return xe([Buffer.from("metadata","utf8"),Ct.toBuffer(),i.toBuffer()],Ct)}function Nn(i){return xe([_a],i)}function Le(i,e){return xe([va,e.toBuffer()],i)}import _e from"bn.js";var me=new _e(0),Oe=new _e(1),tt=new _e(-1),Me=new _e(1).shln(64),Rn=new _e(1).shln(128),Ti=Me.sub(Oe),Jt=64,Qr=Rn.subn(1),Ie=-443636,Se=-Ie,nt=new _e("4295048016"),it=new _e("79226673521066979257578248091"),Ln=new _e("4295048017"),On=new _e("79226673521066979257578248090"),Yr=16,jr="59543866431248",Zr="184467440737095516",Jr="15793534762490258745",Mn=new _e(10).pow(new _e(6));var Df=new _e("18446744073700000000");var Da=15,$=class{static async getTickArrays(e,t,n,r,o,s,a){let c=[],u=E.getTickArrayStartIndexByTick(r,o),l=E.getInitializedTickArrayInRange(s,a,o,u,Math.floor(Da/2));for(let p=0;p<l.length;p++){let{publicKey:g}=re(t,n,l[p]);c.push(g)}let d=(await et(e,c)).map(p=>p!==null?$t.decode(p.data):null),m={};for(let p=0;p<c.length;p++){let g=d[p];g!==null&&(m[g.startTickIndex]=X(v({},g),{address:c[p]}))}return m}static nextInitializedTick(e,t,n,r,o,s){let{initializedTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}=this.nextInitializedTickInOneArray(e,t,n,r,o,s);for(;a==null||a.liquidityGross.lten(0);){if(u=E.getNextTickArrayStartIndex(u,o,s),this.checkIsValidStartIndex(u,o))throw new Error("No enough initialized tickArray");let l=n[u];if(l===void 0)continue;let{nextTick:d,tickArrayAddress:m,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,s);[a,c,u]=[d,m,p]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}}static nextInitializedTickArray(e,t,n,r,o){let s=Math.floor(e/$.tickCount(t)),a=n?E.searchLowBitFromStart(r,o,s-1,1,t):E.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=ge-1;for(;a>=0;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){o=c;break}a=a-1}}else{let a=0;for(;a<ge;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){o=c;break}a=a+1}}let{publicKey:s}=re(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,r,o,s){let a=E.getTickArrayStartIndexByTick(r,o),c=Math.floor((r-a)/o),u=n[a];if(u==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;c>=0;){let m=u.ticks[c];if(m.liquidityGross.gtn(0)){l=m;break}c=c-1}else for(c=c+1;c<ge;){let m=u.ticks[c];if(m.liquidityGross.gtn(0)){l=m;break}c=c+1}let{publicKey:d}=re(e,t,a);return{initializedTick:l,tickArrayAddress:d,tickArrayStartTickIndex:u.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(E.checkIsOutOfBoundary(e)){if(e>Se)return!1;let n=E.getTickArrayStartIndexByTick(Ie,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return ge*e}};import j from"bn.js";import{PublicKey as Ue}from"@solana/web3.js";import de from"bn.js";var Bi=14,rt=class{static maxTickInTickarrayBitmap(e){return e*ge*ht}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(!$.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=r?t-$.tickCount(n):t+$.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*ge,c=s/a+512;s<0&&s%a!=0&&c--;let u=Math.abs(c);if(r){let l=e.shln(1024-u-1),d=Gr(1024,l);if(d!==null){let m=(u-d-512)*a;return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(u),d=Ur(1024,l);if(d!==null){let m=(u+d-512)*a;return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:o-$.tickCount(n)}}}},en=class{static getBitmapOffset(e,t){if(!$.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=rt.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=rt.maxTickInTickarrayBitmap(e),n=-t;if(Se<=t)throw Error(`extensionTickBoundary check error: ${Se}, ${t}`);if(n<=Ie)throw Error(`extensionTickBoundary check error: ${n}, ${Ie}`);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:E.mergeTickArrayBitmap(r).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,r){let o=$.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}=rt.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(r){let c=E.mergeTickArrayBitmap(e).shln(ht-1-a),u=Zt(512,c)?null:ki(512,c);if(u!==null){let l=t-u*$.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let c=E.mergeTickArrayBitmap(e).shrn(a),u=Zt(512,c)?null:wi(512,c);if(u!==null){let l=t+u*$.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-$.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%rt.maxTickInTickarrayBitmap(t),r=Math.floor(n/$.tickCount(t));return e<0&&n!=0&&(r=ht-r),r}};import Je from"bn.js";var tn=class{static getfeeGrowthInside(e,t,n){let r=new Je(0),o=new Je(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 Je(0),a=new Je(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let c=Q.wrappingSubU128(Q.wrappingSubU128(e.feeGrowthGlobalX64A,r),s),u=Q.wrappingSubU128(Q.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:c,feeGrowthInsideBX64:u}}static GetPositionFees(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=Q.mulDivFloor(Q.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Me),c=t.tokenFeesOwedA.add(a),u=Q.mulDivFloor(Q.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Me),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=Q.mulDivFloor(Q.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Me),c=t.tokenFeesOwedA.add(a),u=Q.mulDivFloor(Q.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Me),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,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 c=s[a],u=t.rewardInfos[a],l=Q.wrappingSubU128(c,u.growthInsideLastX64),d=Q.mulDivFloor(l,t.liquidity,Me),m=u.rewardAmountOwed.add(d);o.push(m)}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 c=s[a],u=t.rewardInfos[a],l=Q.wrappingSubU128(c,u.growthInsideLastX64),d=Q.mulDivFloor(l,t.liquidity,Me),m=u.rewardAmountOwed.add(d);o.push(m)}return o}static getRewardGrowthInside(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new Je(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 c=new Je(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(Q.wrappingSubU128(Q.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),c))}return o}static getRewardGrowthInsideV2(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new Je(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 c=new Je(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(Q.wrappingSubU128(Q.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),c))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:r,add:o,epochInfo:s}){var y,b,k,P;let a=Y.priceToSqrtPriceX64(new M(e.price),e.mintA.decimals,e.mintB.decimals),c=Y.getSqrtPriceX64FromTick(t.tickLower),u=Y.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+r:1-r,d=te.getAmountsFromLiquidity(a,c,u,n,o),[m,p]=[be(d.amountA,(y=e.mintA.extensions)==null?void 0:y.feeConfig,s,!0),be(d.amountB,(b=e.mintB.extensions)==null?void 0:b.feeConfig,s,!0)],[g,f]=[be(new Je(new M(d.amountA.toString()).mul(l).toFixed(0)),(k=e.mintA.extensions)==null?void 0:k.feeConfig,s,!0),be(new Je(new M(d.amountB.toString()).mul(l).toFixed(0)),(P=e.mintB.extensions)==null?void 0:P.feeConfig,s,!0)];return{liquidity:n,amountA:m,amountB:p,amountSlippageA:g,amountSlippageB:f,expirationTime:Ze(m.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as $r}from"@solana/spl-token";var Ae=class{static getOutputAmountAndRemainAccounts(e,t,n,r,o,s=!1){let a=n.toBase58()===e.mintA.address,c=[],{isExist:u,startIndex:l,nextAccountMeta:d}=this.getFirstInitializedTickArray(e,a);if(!u||l===void 0||!d)throw new Error("Invalid tick array");c.push(d);let{allTrade:m,amountCalculated:p,accounts:g,sqrtPriceX64:f,feeAmount:y}=Tt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,a,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r,l,o,s);return c.push(...g),{allTrade:m,expectedAmountOut:p.mul(tt),remainingAccounts:c,executionPrice:f,feeAmount:y}}static getInputAmountAndRemainAccounts(e,t,n,r,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:c,startIndex:u,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!c||u===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:y}=re(e.programId,e.id,f.nextStartIndex);a.push(y)}}catch{}a.push(l);let{amountCalculated:d,accounts:m,sqrtPriceX64:p,feeAmount:g}=Tt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r.mul(tt),u,o);return a.push(...m),{expectedAmountIn:d,remainingAccounts:a,executionPrice:p,feeAmount:g}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:r}=Ae.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?en.checkTickArrayIsInit($.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):E.checkTickArrayIsInitialized(E.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=re(e.programId,e.id,r);return{isExist:!0,startIndex:r,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,$.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=re(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/$.tickCount(e.tickSpacing)),r=t?E.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):E.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=$.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:r,tickIndex:o}=rt.nextInitializedTickArrayStartIndex(E.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(r)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=en.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Ie||t>Se)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:r,rewardInfos:o}){var a,c,u;let s=[];for(let l=0;l<o.length;l++){let d=o[l],m=(u=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?u:(c=await e.getAccountInfo(d.tokenMint))==null?void 0:c.owner;if(m===void 0)throw Error("get new reward mint info error");let p=X(v({},d),{perSecond:Q.x64ToDecimal(d.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Ue(m)});if(p.tokenMint.equals(Ue.default))continue;if(n<=p.openTime.toNumber()||r.eq(me)){s.push(p);continue}let g=new de(Math.min(p.endTime.toNumber(),n)),f=g.sub(p.lastUpdateTime),y=Q.mulDivFloor(f,p.emissionsPerSecondX64,r),b=p.rewardGrowthGlobalX64.add(y),k=Q.mulDivFloor(f,p.emissionsPerSecondX64,Me),P=p.rewardTotalEmissioned.add(k);s.push(X(v({},p),{rewardGrowthGlobalX64:b,rewardTotalEmissioned:P,lastUpdateTime:g}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:r}=this.tickRange(e);for(let o of t){let s=E.getTickArrayStartIndexByTick(o,e);if(s>=n||s<r)return!0}return!1}static tickRange(e){let t=rt.maxTickInTickarrayBitmap(e),n=-t;return t>Se&&(t=$.getArrayStartIndex(Se,e)+$.tickCount(e)),n<Ie&&(n=$.getArrayStartIndex(Ie,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!$.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/$.tickCount(t)*ht}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let r=await Pt(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of r)s.accountInfo!==null&&(o[s.pubkey.toString()]=eo.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let r={},o=[];for(let c of t){let u=E.getTickArrayStartIndexByTick(c.tickCurrent,c.tickSpacing),l=E.getInitializedTickArrayInRange(c.tickArrayBitmap,c.exBitmapInfo,c.tickSpacing,u,7);for(let d of l){let{publicKey:m}=re(c.programId,c.id,d);o.push({pubkey:m}),r[m.toString()]=c.id}}let s=await Pt(e,o,{batchRequest:n}),a={};for(let c of s){if(!c.accountInfo)continue;let u=r[c.pubkey.toString()];if(!u)continue;a[u.toString()]===void 0&&(a[u.toString()]={});let l=$t.decode(c.accountInfo.data);a[u.toString()][l.startTickIndex]=X(v({},l),{address:c.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:r=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let c=0;c<e.length;c++){let u=e[c];u!==null&&(s.find(l=>l.equals(u.state.programId))||s.push(u.state.programId))}if(n){let c=n.tokenAccounts.map(m=>m.accountInfo.mint),u=[];for(let m of c)for(let p of s)u.push(Ge(p,m).publicKey);let l=await et(t,u,{batchRequest:r}),d={};for(let m of l){if(m===null)continue;let p=xi.decode(m.data),g=p.poolId.toString(),f=e.find(R=>R.state.id.toBase58()===g);if(f===void 0)continue;let y=f.state,b=E._getTickPriceLegacy({poolInfo:y,tick:p.tickLower,baseIn:!0}),k=E._getTickPriceLegacy({poolInfo:y,tick:p.tickUpper,baseIn:!0}),{amountA:P,amountB:h}=te.getAmountsFromLiquidity(y.sqrtPriceX64,b.tickSqrtPriceX64,k.tickSqrtPriceX64,p.liquidity,!1),I=1/(1-Math.sqrt(Math.sqrt(b.price.div(k.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:b.price,priceUpper:k.price,amountA:P,amountB:h,tickLower:p.tickLower,tickUpper:p.tickUpper,liquidity:p.liquidity,feeGrowthInsideLastX64A:p.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:p.feeGrowthInsideLastX64B,tokenFeesOwedA:p.tokenFeesOwedA,tokenFeesOwedB:p.tokenFeesOwedB,rewardInfos:p.rewardInfos.map(R=>X(v({},R),{pendingReward:new de(0)})),leverage:I,tokenFeeAmountA:new de(0),tokenFeeAmountB:new de(0)}];let x=await E.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),N=await E.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);d[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=x,d[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=N}if(o){let m=Object.values(d),p=await et(t,m,{batchRequest:r}),g={};for(let f=0;f<m.length;f++){let y=p[f];if(y===null)continue;let b=m[f].toString();g[b]=$t.decode(y.data)}for(let{state:f,positionAccount:y}of e)if(!!y)for(let b of y){let k=`${f.programId.toString()}-${f.id.toString()}-${b.tickLower}`,P=`${f.programId.toString()}-${f.id.toString()}-${b.tickUpper}`,h=g[d[k].toString()],I=g[d[P].toString()],x=h.ticks[E.getTickOffsetInArray(b.tickLower,f.tickSpacing)],N=I.ticks[E.getTickOffsetInArray(b.tickUpper,f.tickSpacing)],{tokenFeeAmountA:R,tokenFeeAmountB:W}=await tn.GetPositionFees(f,b,x,N),T=await tn.GetPositionRewards(f,b,x,N);b.tokenFeeAmountA=R.gte(new de(0))?R:new de(0),b.tokenFeeAmountB=W.gte(new de(0))?W:new de(0);for(let L=0;L<T.length;L++)b.rewardInfos[L].pendingReward=T[L].gte(new de(0))?T[L]:new de(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountIn:o,slippage:s,priceLimit:a=new M(0),catchLiquidityInsufficient:c=!1}){var ae;let u,l=n.toBase58()===e.mintA.address,[d,m]=l?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new M(0))?u=l?nt.add(new de(1)):it.sub(new de(1)):u=Y.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=be(o,d,r,!1),{allTrade:g,expectedAmountOut:f,remainingAccounts:y,executionPrice:b,feeAmount:k}=Ae.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((ae=p.fee)!=null?ae:me),u,c),P=be(f,m,r,!1),h=Y.sqrtPriceX64ToPrice(b,e.mintA.decimals,e.mintB.decimals),I=l?h:new M(1).div(h),x=f.mul(new de(Math.floor((1-s)*1e10))).div(new de(1e10)),N=be(x,m,r,!1),R=l?e.currentPrice:new M(1).div(e.currentPrice),W=new M(I).sub(R).abs(),T=R,L=new lt(new M(W).mul(10**15).toFixed(0),new M(T).mul(10**15).toFixed(0));return{allTrade:g,realAmountIn:p,amountOut:P,minAmountOut:N,expirationTime:Ze(p.expirationTime,P.expirationTime),currentPrice:e.currentPrice,executionPrice:I,priceImpact:L,fee:k,remainingAccounts:y,executionPriceX64:b}}static computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:r,slippage:o,epochInfo:s,catchLiquidityInsufficient:a=!1}){let c=r.address===e.mintB.address,[u,l]=c?[e.mintA,e.mintB]:[e.mintB,e.mintA],[d,m]=[new Re(X(v({},u),{mint:u.address,isToken2022:u.programId===$r.toBase58()})),new Re(X(v({},l),{mint:l.address,isToken2022:l.programId===$r.toBase58()}))],{allTrade:p,realAmountIn:g,amountOut:f,minAmountOut:y,expirationTime:b,currentPrice:k,executionPrice:P,priceImpact:h,fee:I,remainingAccounts:x,executionPriceX64:N}=Ae.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Ue(u.address),amountIn:n,slippage:o,epochInfo:s,catchLiquidityInsufficient:a}),R=X(v({},g),{amount:new ce(d,g.amount),fee:g.fee===void 0?void 0:new ce(d,g.fee)}),W=X(v({},f),{amount:new ce(m,f.amount),fee:f.fee===void 0?void 0:new ce(m,f.fee)}),T=X(v({},y),{amount:new ce(m,y.amount),fee:y.fee===void 0?void 0:new ce(m,y.fee)}),L=new Ce({baseToken:d,denominator:new de(10).pow(new de(20+d.decimals)),quoteToken:m,numerator:k.mul(new M(10**(20+m.decimals))).toFixed(0)}),ae=new Ce({baseToken:d,denominator:new de(10).pow(new de(20+d.decimals)),quoteToken:m,numerator:P.mul(new M(10**(20+m.decimals))).toFixed(0)}),z=new ce(d,I);return{allTrade:p,realAmountIn:R,amountOut:W,minAmountOut:T,expirationTime:b,currentPrice:L,executionPrice:ae,priceImpact:h,fee:z,remainingAccounts:x,executionPriceX64:N}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:r}){var g,f,y;let o=e[t],s=E.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=E.getTickPrice({poolInfo:e,tick:r,baseIn:!0}).price.toNumber(),c=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-c,d=a-s,m=o.priceMax-o.priceMin,p;return l<=0?p=0:d===l?p=m/l:m===l?p=l/d:p=l/m*(l/d),{feeApr:o.feeApr*p,rewardsApr:[(g=o.rewardApr[0])!=null?g:0*p,(f=o.rewardApr[1])!=null?f:0*p,(y=o.rewardApr[2])!=null?y:0*p],apr:o.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:r,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:c}){let u=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],d=r[Qe(e.mintA.address).toString()],m=r[Qe(e.mintB.address).toString()],p=e.mintA.decimals,g=e.mintB.decimals;if(!l||!d||!m)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=Y.priceToSqrtPriceX64(new M(e.price),e.mintA.decimals,e.mintB.decimals),y=Y.getSqrtPriceX64FromTick(s),b=Y.getSqrtPriceX64FromTick(a),{amountSlippageA:k,amountSlippageB:P}=te.getAmountsFromLiquidityWithSlippage(f,y,b,t,!1,!1,0),{amountSlippageA:h,amountSlippageB:I}=te.getAmountsFromLiquidityWithSlippage(f,y,b,o,!1,!1,0),x=new M(k.toString()).div(new M(10).pow(p)).mul(d.value).add(new M(P.toString()).div(new M(10).pow(g)).mul(m.value)),N=new M(h.toString()).div(new M(10).pow(p)).mul(d.value).add(new M(I.toString()).div(new M(10).pow(g)).mul(m.value)),R=N.div(x.add(N)).div(N),T=new M(l.volumeFee).mul(365).div(u).mul(R).mul(100).toNumber(),L=3600*24*365,ae=e.rewardDefaultInfos.map(z=>{var D,rn;let Pe=z.mint.decimals,Z=r[z.mint.address];return c<((D=z.startTime)!=null?D:0)||c>((rn=z.endTime)!=null?rn:0)||!z.perSecond||!Z||Pe===void 0?0:new M(Z.value).mul(new M(z.perSecond).mul(L)).div(new M(10).pow(Pe)).mul(R).mul(100).toNumber()});return{feeApr:T,rewardsApr:ae,apr:T+ae.reduce((z,Pe)=>z+Pe,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:r,amount:o,slippage:s,add:a,epochInfo:c,amountHasFee:u}){var b,k;let l=Y.priceToSqrtPriceX64(new M(e.price),e.mintA.decimals,e.mintB.decimals),d=Y.getSqrtPriceX64FromTick(n),m=Y.getSqrtPriceX64FromTick(r),p=a?1-s:1+s,g=be(o,(b=e[t?"mintA":"mintB"].extensions)==null?void 0:b.feeConfig,c,!u),f=new de(new M(g.amount.sub((k=g.fee)!=null?k:me).toString()).mul(p).toFixed(0)),y;if(l.lte(d))y=t?te.getLiquidityFromTokenAmountA(d,m,f,!a):new de(0);else if(l.lte(m)){let P=te.getLiquidityFromTokenAmountA(l,m,f,!a),h=te.getLiquidityFromTokenAmountB(d,l,f);y=t?P:h}else y=t?new de(0):te.getLiquidityFromTokenAmountB(d,m,f);return Ae.getAmountsFromLiquidity({epochInfo:c,poolInfo:e,tickLower:n,tickUpper:r,liquidity:y,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:r,liquidity:o,slippage:s,add:a}){var y,b,k,P;let c=Y.getSqrtPriceX64FromTick(n),u=Y.getSqrtPriceX64FromTick(r),l=a?1+s:1-s,d=te.getAmountsFromLiquidity(Y.priceToSqrtPriceX64(new M(t.price),t.mintA.decimals,t.mintB.decimals),c,u,o,a),[m,p]=[be(d.amountA,(y=t.mintA.extensions)==null?void 0:y.feeConfig,e,!0),be(d.amountB,(b=t.mintB.extensions)==null?void 0:b.feeConfig,e,!0)],[g,f]=[be(d.amountA.muln(l),(k=t.mintA.extensions)==null?void 0:k.feeConfig,e,!0),be(d.amountB.muln(l),(P=t.mintB.extensions)==null?void 0:P.feeConfig,e,!0)];return{liquidity:o,amountA:m,amountB:p,amountSlippageA:g,amountSlippageB:f,expirationTime:Ze(m.expirationTime,p.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let r=t.filter(c=>!n[c.id]).map(c=>new Ue(c.id));(await et(e,r)).forEach((c,u)=>{!c||(n[r[u].toBase58()]=Mt.decode(c.data))});let s=t.map(c=>Le(new Ue(c.programId),new Ue(c.id)).publicKey),a=await Ae.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1});return t.reduce((c,u)=>X(v({},c),{[u.id]:X(v({},n[u.id]),{id:new Ue(u.id),version:6,programId:new Ue(u.programId),mintA:u.mintA,mintB:u.mintB,ammConfig:X(v({},u.config),{id:new Ue(u.config.id),fundOwner:""}),currentPrice:new M(u.price),exBitmapInfo:a[Le(new Ue(u.programId),new Ue(u.id)).publicKey.toBase58()],startTime:n[u.id].startTime.toNumber()})}),{})}static async fetchComputeClmmInfo({connection:e,poolInfo:t,rpcData:n}){return(await this.fetchComputeMultipleClmmInfo({connection:e,rpcDataMap:n?{[t.id]:n}:void 0,poolList:[t]}))[t.id]}};var Q=class{static mulDivRoundingUp(e,t,n){let r=e.mul(t),o=r.div(n);return r.mod(n).eq(me)||(o=o.add(Oe)),o}static mulDivFloor(e,t,n){if(n.eq(me))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(me))throw new Error("division by 0");return e.mul(t).add(n.sub(Oe)).div(n)}static x64ToDecimal(e,t){return new M(e.toString()).div(M.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new j(e.mul(M.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Rn).sub(t).mod(Rn)}};function ke(i,e){return Ii(i.mul(e),64,256)}function Va(i,e,t){let n=i.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Ii(i,e,t){let n=i.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var Y=class{static sqrtPriceX64ToPrice(e,t,n){return Q.x64ToDecimal(e).pow(2).mul(M.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return Q.decimalToX64(e.mul(M.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,r){if(!e.gt(me))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(me))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(me))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(me))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(me))return e;let o=t.shln(Jt);if(r){let s=o,a=o.add(n.mul(e));return a.gte(s)?Q.mulDivCeil(s,e,a):Q.mulDivRoundingUp(s,Oe,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 Q.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,r){let o=n.shln(Jt);if(r)return e.add(o.div(t));{let s=Q.mulDivRoundingUp(o,Oe,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<Ie||e>Se)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new j("18445821805675395072"):new j("18446744073709551616");return(t&2)!=0&&(n=ke(n,new j("18444899583751176192"))),(t&4)!=0&&(n=ke(n,new j("18443055278223355904"))),(t&8)!=0&&(n=ke(n,new j("18439367220385607680"))),(t&16)!=0&&(n=ke(n,new j("18431993317065453568"))),(t&32)!=0&&(n=ke(n,new j("18417254355718170624"))),(t&64)!=0&&(n=ke(n,new j("18387811781193609216"))),(t&128)!=0&&(n=ke(n,new j("18329067761203558400"))),(t&256)!=0&&(n=ke(n,new j("18212142134806163456"))),(t&512)!=0&&(n=ke(n,new j("17980523815641700352"))),(t&1024)!=0&&(n=ke(n,new j("17526086738831433728"))),(t&2048)!=0&&(n=ke(n,new j("16651378430235570176"))),(t&4096)!=0&&(n=ke(n,new j("15030750278694412288"))),(t&8192)!=0&&(n=ke(n,new j("12247334978884435968"))),(t&16384)!=0&&(n=ke(n,new j("8131365268886854656"))),(t&32768)!=0&&(n=ke(n,new j("3584323654725218816"))),(t&65536)!=0&&(n=ke(n,new j("696457651848324352"))),(t&131072)!=0&&(n=ke(n,new j("26294789957507116"))),(t&262144)!=0&&(n=ke(n,new j("37481735321082"))),e>0&&(n=Qr.div(n)),n}static getTickFromPrice(e,t,n){return Y.getTickFromSqrtPriceX64(Y.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(it)||e.lt(nt))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new j(t-64),r=Va(n,32,128),o=new j("8000000000000000","hex"),s=0,a=new j(0),c=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new j(0))&&s<Yr;){c=c.mul(c);let g=c.shrn(127);c=c.shrn(63+g.toNumber()),a=a.add(o.mul(g)),o=o.shrn(1),s+=1}let u=a.shrn(32),d=r.add(u).mul(new j(jr)),m=Ii(d.sub(new j(Zr)),64,128).toNumber(),p=Ii(d.add(new j(Jr)),64,128).toNumber();return m==p?m:Y.getSqrtPriceX64FromTick(p).lte(e)?p:m}},Bt=class{static getTickWithPriceAndTickspacing(e,t,n,r){let s=Y.getTickFromSqrtPriceX64(Y.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=Bt.getTickWithPriceAndTickspacing(e,t,n,r),s=Y.getSqrtPriceX64FromTick(o);return Y.sqrtPriceX64ToPrice(s,n,r)}},te=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(me))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(Jt),s=t.sub(e);return r?Q.mulDivRoundingUp(Q.mulDivCeil(o,s,t),Oe,e):Q.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(me))throw new Error("sqrtPriceX64A must greater than 0");return r?Q.mulDivCeil(n,t.sub(e),Me):Q.mulDivFloor(n,t.sub(e),Me)}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?Q.mulDivRoundingUp(a,Oe,Ti):a.shrn(Jt)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),Q.mulDivFloor(n,Ti,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return te.getLiquidityFromTokenAmountA(t,n,r,!1);if(e.lt(n)){let s=te.getLiquidityFromTokenAmountA(e,n,r,!1),a=te.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return te.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:te.getTokenAmountAFromLiquidity(t,n,r,o),amountB:new j(0)};if(e.lt(n)){let s=te.getTokenAmountAFromLiquidity(e,n,r,o),a=te.getTokenAmountBFromLiquidity(t,e,r,o);return{amountA:s,amountB:a}}else return{amountA:new j(0),amountB:te.getTokenAmountBFromLiquidity(t,n,r,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,r,o,s,a){let{amountA:c,amountB:u}=te.getAmountsFromLiquidity(e,t,n,r,s),l=o?1+a:1-a,d=new j(new M(c.toString()).mul(l).toFixed(0)),m=new j(new M(u.toString()).mul(l).toFixed(0));return{amountSlippageA:d,amountSlippageB:m}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:r,slippage:o,add:s,epochInfo:a,amountAddFee:c}){var k,P,h,I;let u=Y.priceToSqrtPriceX64(new M(e.price),e.mintA.decimals,e.mintB.decimals),l=Y.getSqrtPriceX64FromTick(t),d=Y.getSqrtPriceX64FromTick(n),m=s?1+o:1-o,p=te.getAmountsFromLiquidity(u,l,d,r,s),[g,f]=[be(p.amountA,(k=e.mintA.extensions)==null?void 0:k.feeConfig,a,c),be(p.amountB,(P=e.mintB.extensions)==null?void 0:P.feeConfig,a,c)],[y,b]=[be(new j(new M(p.amountA.toString()).mul(m).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,c),be(new j(new M(p.amountB.toString()).mul(m).toFixed(0)),(I=e.mintB.extensions)==null?void 0:I.feeConfig,a,c)];return{liquidity:r,amountA:g,amountB:f,amountSlippageA:y,amountSlippageB:b,expirationTime:Ze(g.expirationTime,f.expirationTime)}}},Tt=class{static swapCompute(e,t,n,r,o,s,a,c,u,l,d,m,p,g,f=!1){if(m.eq(me))throw new Error("amountSpecified must not be 0");if(g||(g=s?nt.add(Oe):it.sub(Oe)),s){if(g.lt(nt))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(g.gte(d))throw new Error("sqrtPriceX64 must smaller than current")}else{if(g.gt(it))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(g.lte(d))throw new Error("sqrtPriceX64 must greater than current")}let y=m.gt(me),b={amountSpecifiedRemaining:m,amountCalculated:me,sqrtPriceX64:d,tick:u>p?Math.min(p+$.tickCount(l)-1,u):p,accounts:[],liquidity:c,feeAmount:new j(0)},k=p,P=n[p],h=0,I=!s&&P.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(me)&&!b.sqrtPriceX64.eq(g);){h>10;let x={};x.sqrtPriceStartX64=b.sqrtPriceX64;let N=E.nextInitTick(P,b.tick,l,s,I),R=N||null,W=null;if(!(R!=null&&R.liquidityGross.gtn(0))){let L=Ae.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:r,exBitmapInfo:o},k,s);if(!L.isExist){if(f)return{allTrade:!1,amountSpecifiedRemaining:b.amountSpecifiedRemaining,amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts};throw Error("swapCompute LiquidityInsufficient")}k=L.nextStartIndex;let{publicKey:ae}=re(e,t,k);W=ae,P=n[k];try{R=E.firstInitializedTick(P,s)}catch{throw Error("not found next tick info")}}x.tickNext=R.tick,x.initialized=R.liquidityGross.gtn(0),p!==k&&W&&(b.accounts.push(W),p=k),x.tickNext<Ie?x.tickNext=Ie:x.tickNext>Se&&(x.tickNext=Se),x.sqrtPriceNextX64=Y.getSqrtPriceX64FromTick(x.tickNext);let T;if(s&&x.sqrtPriceNextX64.lt(g)||!s&&x.sqrtPriceNextX64.gt(g)?T=g:T=x.sqrtPriceNextX64,[b.sqrtPriceX64,x.amountIn,x.amountOut,x.feeAmount]=Tt.swapStepCompute(b.sqrtPriceX64,T,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(x.feeAmount),y?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(x.amountIn.add(x.feeAmount)),b.amountCalculated=b.amountCalculated.sub(x.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(x.amountOut),b.amountCalculated=b.amountCalculated.add(x.amountIn.add(x.feeAmount))),b.sqrtPriceX64.eq(x.sqrtPriceNextX64)){if(x.initialized){let L=R.liquidityNet;s&&(L=L.mul(tt)),b.liquidity=te.addDelta(b.liquidity,L)}I=x.tickNext!=b.tick&&!s&&P.startTickIndex===x.tickNext,b.tick=s?x.tickNext-1:x.tickNext}else if(b.sqrtPriceX64!=x.sqrtPriceStartX64){let L=Y.getTickFromSqrtPriceX64(b.sqrtPriceX64);I=L!=b.tick&&!s&&P.startTickIndex===L,b.tick=L}++h}try{let{nextStartIndex:x,isExist:N}=$.nextInitializedTickArray(b.tick,l,s,r,o);N&&p!==x&&(b.accounts.push(re(e,t,x).publicKey),p=x)}catch{}return{allTrade:!0,amountSpecifiedRemaining:me,amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts}}static swapStepCompute(e,t,n,r,o){let s={sqrtPriceX64Next:new j(0),amountIn:new j(0),amountOut:new j(0),feeAmount:new j(0)},a=e.gte(t),c=r.gte(me);if(c){let l=Q.mulDivFloor(r,Mn.sub(new j(o.toString())),Mn);s.amountIn=a?te.getTokenAmountAFromLiquidity(t,e,n,!0):te.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=Y.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?te.getTokenAmountBFromLiquidity(t,e,n,!1):te.getTokenAmountAFromLiquidity(e,t,n,!1),r.mul(tt).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=Y.getNextSqrtPriceX64FromOutput(e,n,r.mul(tt),a);let u=t.eq(s.sqrtPriceX64Next);return a?(u&&c||(s.amountIn=te.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),u&&!c||(s.amountOut=te.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=u&&c?s.amountIn:te.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=u&&!c?s.amountOut:te.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!c&&s.amountOut.gt(r.mul(tt))&&(s.amountOut=r.mul(tt)),c&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=r.sub(s.amountIn):s.feeAmount=Q.mulDivCeil(s.amountIn,new j(o),Mn.sub(new j(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var ge=60,ht=512,E=class{static getTickArrayAddressByTick(e,t,n,r){let o=E.getTickArrayStartIndexByTick(n,r),{publicKey:s}=re(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=E.getTickArrayStartIndexByTick(e,t),r=Math.floor((e-n)/t);if(r<0||r>=ge)throw new Error("tick offset in array overflow");return r}static getTickArrayBitIndex(e,t){let n=$.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)*$.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*ge,r=Math.floor(e/n)+512;return Math.abs(r)}static checkTickArrayIsInitialized(e,t,n){let r=n*ge,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*ge:e+t*ge}static mergeTickArrayBitmap(e){let t=new Wa(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*ge));return[...E.searchLowBitFromStart(e,t,s-1,o,n),...E.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return E.searchHightBitFromStart(e,t,0,ht,n)}static getAllInitializedTickArrayInfo(e,t,n,r,o){let s=[],a=E.getAllInitializedTickArrayStartIndex(n,r,o);for(let c of a){let{publicKey:u}=re(e,t,c);s.push({tickArrayStartIndex:c,tickArrayAddress:u})}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(u=>E.mergeTickArrayBitmap(u)),a=[];for(;n>=-7680;){let u=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[u].testn(l)&&a.push(n),n--,a.length===r)break}let c=$.tickCount(o);return a.map(u=>u*c)}static searchHightBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(u=>E.mergeTickArrayBitmap(u)),a=[];for(;n<7680;){let u=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[u].testn(l)&&a.push(n),n++,a.length===r)break}let c=$.tickCount(o);return a.map(u=>u*c)}static checkIsOutOfBoundary(e){return e<Ie||e>Se}static nextInitTick(e,t,n,r,o){if($.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<ge;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=ge-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<ge;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let r=Y.getSqrtPriceX64FromTick(t),o=Y.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new M(1).div(o),tickSqrtPriceX64:r}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let r=n?t:new M(1).div(t),o=Bt.getTickWithPriceAndTickspacing(r,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=Y.getSqrtPriceX64FromTick(o),a=Y.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new M(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let r=Y.getSqrtPriceX64FromTick(t),o=Y.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new M(1).div(o),tickSqrtPriceX64:r}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let r=n?t:new M(1).div(t),o=Bt.getTickWithPriceAndTickspacing(r,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=Y.getSqrtPriceX64FromTick(o),a=Y.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new M(1).div(a)}}};var qa=_([ye(8),H("bump"),mt("index"),S(""),Ee("protocolFeeRate"),Ee("tradeFeeRate"),mt("tickSpacing"),ne(A(),8,"")]),Ga=_([Ee("blockTimestamp"),G("sqrtPriceX64"),G("cumulativeTimePriceX64"),ne(G(),1,"")]),Si=_([ye(8),Fe("initialized"),S("poolId"),ne(Ga,1e3,"observations"),ne(G(),5,"")]),Ua=_([H("rewardState"),A("openTime"),A("endTime"),A("lastUpdateTime"),G("emissionsPerSecondX64"),A("rewardTotalEmissioned"),A("rewardClaimed"),S("tokenMint"),S("tokenVault"),S("creator"),G("rewardGrowthGlobalX64")]),Mt=_([ye(8),H("bump"),S("ammConfig"),S("creator"),S("mintA"),S("mintB"),S("vaultA"),S("vaultB"),S("observationId"),H("mintDecimalsA"),H("mintDecimalsB"),mt("tickSpacing"),G("liquidity"),G("sqrtPriceX64"),he("tickCurrent"),mt("observationIndex"),mt("observationUpdateDuration"),G("feeGrowthGlobalX64A"),G("feeGrowthGlobalX64B"),A("protocolFeesTokenA"),A("protocolFeesTokenB"),G("swapInAmountTokenA"),G("swapOutAmountTokenB"),G("swapInAmountTokenB"),G("swapOutAmountTokenA"),H("status"),ne(H(),7,""),ne(Ua,3,"rewardInfos"),ne(A(),16,"tickArrayBitmap"),A("totalFeesTokenA"),A("totalFeesClaimedTokenA"),A("totalFeesTokenB"),A("totalFeesClaimedTokenB"),A("fundFeesTokenA"),A("fundFeesTokenB"),A("startTime"),ne(A(),15*4-3,"padding")]),Xa=_([G("growthInsideLastX64"),A("rewardAmountOwed")]),xi=_([ye(8),H("bump"),S("nftMint"),S("poolId"),he("tickLower"),he("tickUpper"),G("liquidity"),G("feeGrowthInsideLastX64A"),G("feeGrowthInsideLastX64B"),A("tokenFeesOwedA"),A("tokenFeesOwedB"),ne(Xa,3,"rewardInfos"),ne(A(),8,"")]),Hb=_([ye(8),H("bump"),S("poolId"),he("tickLowerIndex"),he("tickUpperIndex"),G("liquidity"),G("feeGrowthInsideLastX64A"),G("feeGrowthInsideLastX64B"),A("tokenFeesOwedA"),A("tokenFeesOwedB"),ne(G(),3,"rewardGrowthInside"),ne(A(),8,"")]),za=_([he("tick"),Kr("liquidityNet"),G("liquidityGross"),G("feeGrowthOutsideX64A"),G("feeGrowthOutsideX64B"),ne(G(),3,"rewardGrowthsOutsideX64"),ne(Ee(),13,"")]),$t=_([ye(8),S("poolId"),he("startTickIndex"),ne(za,ge,"ticks"),H("initializedTickCount"),ne(H(),115,"")]),Ha=_([ye(329),ne(S(),100,"whitelistMints")]),eo=_([ye(8),S("poolId"),ne(ne(A(),8),Bi,"positiveTickArrayBitmap"),ne(ne(A(),8),Bi,"negativeTickArrayBitmap")]);var jb=_([ye(8),H("bump"),Fe("disableCreatePool"),mt("index"),A("tradeFeeRate"),A("protocolFeeRate"),A("fundFeeRate"),A("createPoolFee"),S("protocolOwner"),S("fundOwner"),ne(A(),16)]),to=_([ye(8),S("configId"),S("poolCreator"),S("vaultA"),S("vaultB"),S("mintLp"),S("mintA"),S("mintB"),S("mintProgramA"),S("mintProgramB"),S("observationId"),H("bump"),H("status"),H("lpDecimals"),H("mintDecimalA"),H("mintDecimalB"),A("lpAmount"),A("protocolFeesMintA"),A("protocolFeesMintB"),A("fundFeesMintA"),A("fundFeesMintB"),A("openTime"),ne(A(),32)]);import{TransactionInstruction as no}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ny,TOKEN_2022_PROGRAM_ID as iy,ASSOCIATED_TOKEN_PROGRAM_ID as ry}from"@solana/spl-token";var ay=oe("Raydium_cpmm"),io={initialize:[175,175,109,31,13,152,155,237],deposit:[242,35,198,137,82,225,242,182],withdraw:[183,18,70,156,148,109,161,34],swapBaseInput:[143,190,90,218,196,30,51,222],swapBaseOutput:[55,217,98,86,163,74,180,173]};function ro(i,e,t,n,r,o,s,a,c,u,l,d,m,p,g,f){let y=_([A("amountIn"),A("amounOutMin")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,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:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],k=Buffer.alloc(y.span);return y.encode({amountIn:g,amounOutMin:f},k),new no({keys:b,programId:i,data:Buffer.from([...io.swapBaseInput,...k])})}function oo(i,e,t,n,r,o,s,a,c,u,l,d,m,p,g,f){let y=_([A("amountInMax"),A("amountOut")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,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:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],k=Buffer.alloc(y.span);return y.encode({amountInMax:g,amountOut:f},k),new no({keys:b,programId:i,data:Buffer.from([...io.swapBaseOutput,...k])})}var Qa=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),ly=Buffer.from("amm_config","utf8"),my=Buffer.from("pool","utf8"),dy=Buffer.from("pool_lp_mint","utf8"),py=Buffer.from("pool_vault","utf8"),fy=Buffer.from("observation","utf8");function so(i){return xe([Qa],i)}import Ya from"bn.js";var gy=new Ya(1e6);import ja from"bn.js";var Ty=new ja(0);import{PublicKey as ig}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Te,TOKEN_2022_PROGRAM_ID as ft,ASSOCIATED_TOKEN_PROGRAM_ID as ao}from"@solana/spl-token";import{PublicKey as O,TransactionInstruction as Xe,SystemProgram as Et,Keypair as Ki}from"@solana/web3.js";import uo from"bn.js";var co=oe("Raydium_Clmm"),ze={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]},nn=class{static createPoolInstruction(e,t,n,r,o,s,a,c,u,l,d,m,p,g){let f=_([G("sqrtPriceX64"),A("startTime")]),y=[{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:u,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:Et.programId,isSigner:!1,isWritable:!1},{pubkey:yt,isSigner:!1,isWritable:!1}],b=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:g},b);let k=Buffer.from([...ze.createPool,...b]);return new Xe({keys:y,programId:e,data:k})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:r,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:c,startTime:u,forerunCreate:l}=e,d=Sn({fromPublicKey:r,programId:n}),[m,p]=[new O(o.address),new O(s.address)],g=[Et.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:d.seed,newAccountPubkey:d.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Si.span),space:Si.span,programId:n})],{publicKey:f}=zr(n,a,m,p),{publicKey:y}=hi(n,f,m),{publicKey:b}=hi(n,f,p);return g.push(this.createPoolInstruction(n,f,r,a,d.publicKey,m,y,new O(o.programId||Te),p,b,new O(s.programId||Te),Le(n,f).publicKey,c,u)),{signers:[],instructions:g,instructionTypes:[J.CreateAccount,J.ClmmCreatePool],address:{poolId:f,observationId:d.publicKey,mintAVault:y,mintBVault:b},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,r,o,s,a,c,u,l,d,m,p,g,f,y,b,k,P,h,I,x,N,R,W,T){let L=_([he("tickLowerIndex"),he("tickUpperIndex"),he("tickArrayLowerStartIndex"),he("tickArrayUpperStartIndex"),G("liquidity"),A("amountMaxA"),A("amountMaxB"),Fe("withMetadata"),H("optionBaseFlag"),Fe("baseFlag")]),ae=[...T?[{pubkey:T,isSigner:!1,isWritable:!0}]:[]],z=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:yt,isSigner:!1,isWritable:!1},{pubkey:Et.programId,isSigner:!1,isWritable:!1},{pubkey:Te,isSigner:!1,isWritable:!1},{pubkey:ao,isSigner:!1,isWritable:!1},{pubkey:Ct,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...ae],Pe=Buffer.alloc(L.span);L.encode({tickLowerIndex:k,tickUpperIndex:P,tickArrayLowerStartIndex:h,tickArrayUpperStartIndex:I,liquidity:x,amountMaxA:N,amountMaxB:R,withMetadata:W==="create",baseFlag:!1,optionBaseFlag:0},Pe);let Z=Buffer.from([...ze.openPosition,...Pe]);return new Xe({keys:z,programId:e,data:Z})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l}){let d=[],[m,p]=[new O(e.programId),new O(e.id)],g;if(l)g=new O((await l(1))[0]);else{let R=Ki.generate();d.push(R),g=R.publicKey}let f=E.getTickArrayStartIndexByTick(r,e.config.tickSpacing),y=E.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:b}=re(m,p,f),{publicKey:k}=re(m,p,y),{publicKey:P}=je(n.wallet,g,Te),{publicKey:h}=Cn(g),{publicKey:I}=Ge(m,g),{publicKey:x}=wt(m,p,r,o),N=this.openPositionFromLiquidityInstruction(m,n.feePayer,p,n.wallet,g,P,h,x,b,k,I,n.tokenAccountA,n.tokenAccountB,new O(t.vault.A),new O(t.vault.B),new O(e.mintA.address),new O(e.mintB.address),r,o,f,y,s,a,c,u);return{signers:d,instructions:[N],instructionTypes:[J.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:g,tickArrayLower:b,tickArrayUpper:k,positionNftAccount:P,metadataAccount:h,personalPosition:I,protocolPosition:x}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,withMetadata:u,getEphemeralSigners:l}){let d=[],[m,p]=[new O(e.programId),new O(e.id)],g;if(l)g=new O((await l(1))[0]);else{let R=Ki.generate();d.push(R),g=R.publicKey}let f=E.getTickArrayStartIndexByTick(r,e.config.tickSpacing),y=E.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:b}=re(m,p,f),{publicKey:k}=re(m,p,y),{publicKey:P}=je(n.wallet,g,Te),{publicKey:h}=Cn(g),{publicKey:I}=Ge(m,g),{publicKey:x}=wt(m,p,r,o),N=this.openPositionFromBaseInstruction(m,n.feePayer,p,n.wallet,g,P,h,x,b,k,I,n.tokenAccountA,n.tokenAccountB,new O(t.vault.A),new O(t.vault.B),new O(e.mintA.address),new O(e.mintB.address),r,o,f,y,u,s,a,c,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,y])?Le(m,p).publicKey:void 0);return{address:{nftMint:g,tickArrayLower:b,tickArrayUpper:k,positionNftAccount:P,metadataAccount:h,personalPosition:I,protocolPosition:x},instructions:[N],signers:d,instructionTypes:[J.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,r,o,s,a,c,u,l,d,m,p,g,f,y,b,k,P,h,I,x,N,R,W,T){let L=_([he("tickLowerIndex"),he("tickUpperIndex"),he("tickArrayLowerStartIndex"),he("tickArrayUpperStartIndex"),G("liquidity"),A("amountMaxA"),A("amountMaxB"),Fe("withMetadata"),H("optionBaseFlag"),Fe("baseFlag")]),ae=[...T?[{pubkey:T,isSigner:!1,isWritable:!0}]:[]],z=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:yt,isSigner:!1,isWritable:!1},{pubkey:Et.programId,isSigner:!1,isWritable:!1},{pubkey:Te,isSigner:!1,isWritable:!1},{pubkey:ao,isSigner:!1,isWritable:!1},{pubkey:Ct,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...ae],Pe=Buffer.alloc(L.span);L.encode({tickLowerIndex:k,tickUpperIndex:P,tickArrayLowerStartIndex:h,tickArrayUpperStartIndex:I,liquidity:new uo(0),amountMaxA:N==="MintA"?R:W,amountMaxB:N==="MintA"?W:R,withMetadata:x==="create",baseFlag:N==="MintA",optionBaseFlag:1},Pe);let Z=Buffer.from([...ze.openPosition,...Pe]);return new Xe({keys:z,programId:e,data:Z})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l}){let d,m=[];if(l)d=new O((await l(1))[0]);else{let R=Ki.generate();m.push(R),d=R.publicKey}let[p,g]=[new O(e.programId),new O(e.id)],f=E.getTickArrayStartIndexByTick(r,e.config.tickSpacing),y=E.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:b}=re(p,g,f),{publicKey:k}=re(p,g,y),{publicKey:P}=je(n.wallet,d,Te),{publicKey:h}=Cn(d),{publicKey:I}=Ge(p,d),{publicKey:x}=wt(p,g,r,o),N=this.openPositionFromLiquidityInstruction(p,n.wallet,g,n.wallet,d,P,h,x,b,k,I,n.tokenAccountA,n.tokenAccountB,new O(t.vault.A),new O(t.vault.B),new O(t.mintA.address),new O(t.mintB.address),r,o,f,y,s,a,c,u,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,y])?Le(p,g).publicKey:void 0);return{address:{nftMint:d,tickArrayLower:b,tickArrayUpper:k,positionNftAccount:P,metadataAccount:h,personalPosition:I,protocolPosition:x},instructions:[N],signers:m,instructionTypes:[J.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,o){let s=_([]),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:Et.programId,isSigner:!1,isWritable:!1},{pubkey:Te,isSigner:!1,isWritable:!1}],c=Buffer.alloc(s.span);s.encode({},c);let u=Buffer.from([...ze.closePosition,...c]);return new Xe({keys:a,programId:e,data:u})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:r}){let o=new O(e.programId),{publicKey:s}=je(n.wallet,r.nftMint,Te),{publicKey:a}=Ge(o,r.nftMint),c=[];return c.push(this.closePositionInstruction(o,n.wallet,r.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:c,instructionTypes:[J.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,r,o,s,a,c,u,l,d,m,p,g,f,y,b,k){let P=_([G("liquidity"),A("amountMaxA"),A("amountMaxB"),H("optionBaseFlag"),Fe("baseFlag")]),h=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[]],I=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:Te,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...h],x=Buffer.alloc(P.span);P.encode({liquidity:f,amountMaxA:y,amountMaxB:b,optionBaseFlag:0,baseFlag:!1},x);let N=Buffer.from([...ze.increaseLiquidity,...x]);return new Xe({keys:I,programId:e,data:N})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMaxA:s,amountMaxB:a}){let[c,u]=[new O(e.programId),new O(e.id)],l=E.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=E.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:m}=re(c,u,l),{publicKey:p}=re(c,u,d),{publicKey:g}=je(r.wallet,n.nftMint,Te),{publicKey:f}=Ge(c,n.nftMint),{publicKey:y}=wt(c,u,n.tickLower,n.tickUpper),b=this.increasePositionFromLiquidityInstruction(c,r.wallet,g,f,u,y,m,p,r.tokenAccountA,r.tokenAccountB,new O(t.vault.A),new O(t.vault.B),new O(e.mintA.address),new O(e.mintB.address),o,s,a,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,d])?Le(c,u).publicKey:void 0);return{address:{tickArrayLower:m,tickArrayUpper:p,positionNftAccount:g,personalPosition:f,protocolPosition:y},signers:[],instructions:[b],instructionTypes:[J.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,base:o,baseAmount:s,otherAmountMax:a}){let[c,u]=[new O(e.programId),new O(e.id)],l=E.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=E.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:m}=re(c,u,l),{publicKey:p}=re(c,u,d),{publicKey:g}=je(r.wallet,n.nftMint,Te),{publicKey:f}=Ge(c,n.nftMint),{publicKey:y}=wt(c,u,n.tickLower,n.tickUpper);return{address:{tickArrayLower:m,tickArrayUpper:p,positionNftAccount:g,personalPosition:f,protocolPosition:y},instructions:[this.increasePositionFromBaseInstruction(c,r.wallet,g,f,u,y,m,p,r.tokenAccountA,r.tokenAccountB,new O(t.vault.A),new O(t.vault.B),new O(e.mintA.address),new O(e.mintB.address),o,s,a,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,d])?Le(c,u).publicKey:void 0)],signers:[],instructionTypes:[J.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,r,o,s,a,c,u,l,d,m,p,g,f,y,b,k){let P=_([G("liquidity"),A("amountMaxA"),A("amountMaxB"),H("optionBaseFlag"),Fe("baseFlag")]),h=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[]],I=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:Te,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...h],x=Buffer.alloc(P.span);P.encode({liquidity:new uo(0),amountMaxA:f==="MintA"?y:b,amountMaxB:f==="MintA"?b:y,baseFlag:f==="MintA",optionBaseFlag:1},x);let N=Buffer.from([...ze.increaseLiquidity,...x]);return new Xe({keys:I,programId:e,data:N})}static decreaseLiquidityInstruction(e,t,n,r,o,s,a,c,u,l,d,m,p,g,f,y,b,k,P){let h=_([G("liquidity"),A("amountMinA"),A("amountMinB")]),I=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[],...f.map(W=>[{pubkey:W.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:W.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:W.rewardMint,isSigner:!1,isWritable:!1}]).flat()],x=[{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:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:Te,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:pn,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...I],N=Buffer.alloc(h.span);h.encode({liquidity:y,amountMinA:b,amountMinB:k},N);let R=Buffer.from([...ze.decreaseLiquidity,...N]);return new Xe({keys:x,programId:e,data:R})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMinA:s,amountMinB:a,programId:c}){let[u,l]=[new O(e.programId),new O(e.id)],d=E.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=E.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=re(u,l,d),{publicKey:g}=re(u,l,m),{publicKey:f}=je(r.wallet,n.nftMint,c),{publicKey:y}=Ge(u,n.nftMint),{publicKey:b}=wt(u,l,n.tickLower,n.tickUpper),k=[];for(let h=0;h<e.rewardDefaultInfos.length;h++)k.push({poolRewardVault:new O(t.rewardInfos[h].vault),ownerRewardVault:r.rewardAccounts[h],rewardMint:new O(e.rewardDefaultInfos[h].mint.address)});let P=[];return P.push(this.decreaseLiquidityInstruction(u,r.wallet,f,y,l,b,p,g,r.tokenAccountA,r.tokenAccountB,new O(t.vault.A),new O(t.vault.B),new O(e.mintA.address),new O(e.mintB.address),k,o,s,a,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[d,m])?Le(u,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:g,positionNftAccount:f,personalPosition:y,protocolPosition:b},signers:[],instructions:P,instructionTypes:[J.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,r,o,s,a,c,u,l,d,m,p,g,f,y,b){let k=_([A("amount"),A("otherAmountThreshold"),G("sqrtPriceLimitX64"),Fe("isBaseInput")]),P=[...b?[{pubkey:b,isSigner:!1,isWritable:!0}]:[],...d.map(N=>({pubkey:N,isSigner:!1,isWritable:!0}))],h=[{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:c,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:Te,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:pn,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...P],I=Buffer.alloc(k.span);k.encode({amount:p,otherAmountThreshold:g,sqrtPriceLimitX64:f,isBaseInput:y},I);let x=Buffer.from([...ze.swap,...I]);return new Xe({keys:h,programId:e,data:x})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:r,inputMint:o,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:c,remainingAccounts:u}){let[l,d]=[new O(e.programId),new O(e.id)],[m,p]=[new O(t.vault.A),new O(t.vault.B)],[g,f]=[new O(e.mintA.address),new O(e.mintB.address)],y=e.mintA.address===o.toString(),b=[this.swapInstruction(l,r.wallet,d,new O(e.config.id),y?r.tokenAccountA:r.tokenAccountB,y?r.tokenAccountB:r.tokenAccountA,y?m:p,y?p:m,y?g:f,y?f:g,u,n,s,a,c,!0,Le(l,d).publicKey)];return{signers:[],instructions:b,instructionTypes:[J.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,r,o,s,a,c,u,l,d,m){let p=_([A("openTime"),A("endTime"),G("emissionsPerSecondX64")]),g=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Et.programId,isSigner:!1,isWritable:!1},{pubkey:yt,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:ue(l),endTime:ue(d),emissionsPerSecondX64:m},f);let y=Buffer.from([...ze.initReward,...f]);return new Xe({keys:g,programId:e,data:y})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new O(e.programId),new O(e.id)],a=Hr(o,s,r.mint).publicKey,c=Nn(o).publicKey,u=[this.initRewardInstruction(o,n.wallet,s,c,new O(e.config.id),n.tokenAccount,r.programId,r.mint,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:c},signers:[],instructions:u,instructionTypes:[J.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,r,o,s,a,c,u,l,d,m){let p=_([H("rewardIndex"),G("emissionsPerSecondX64"),A("openTime"),A("endTime")]),g=[{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:Te,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:u,emissionsPerSecondX64:m,openTime:ue(l),endTime:ue(d)},f);let y=Buffer.from([...ze.setRewardEmissions,...f]);return new Xe({keys:g,programId:e,data:y})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new O(e.programId),new O(e.id)],a,c,u;for(let m=0;m<e.rewardDefaultInfos.length;m++)e.rewardDefaultInfos[m].mint.address===r.mint.toString()&&(a=m,c=new O(t.rewardInfos[m].vault),u=new O(t.rewardInfos[m].mint.address));(a===void 0||c===void 0)&&co.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Nn(o).publicKey,d=[this.setRewardInstruction(o,n.wallet,s,l,new O(e.config.id),n.tokenAccount,c,u,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{rewardVault:c,operationId:l},signers:[],instructions:d,instructionTypes:[J.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,r,o,s,a){let c=_([H("rewardIndex")]),u=[{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:Te,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:pn,isSigner:!1,isWritable:!1}],l=Buffer.alloc(c.span);c.encode({rewardIndex:a},l);let d=Buffer.from([...ze.collectReward,...l]);return new Xe({keys:u,programId:e,data:d})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:r}){let[o,s]=[new O(e.programId),new O(e.id)],a,c;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===r.toString()&&(a=l,c=new O(t.rewardInfos[l].vault));(a===void 0||c===void 0)&&co.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let u=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,c,r,a)];return{address:{rewardVault:c},signers:[],instructions:u,instructionTypes:[J.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:r,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:c}){let[u,l]=[new O(e.programId),new O(e.id)],[d,m]=[new O(t.vault.A),new O(t.vault.B)],[p,g]=[new O(e.mintA.address),new O(e.mintB.address)],f=e.mintA.address===r.toString(),y=[this.swapInstruction(u,n.wallet,l,new O(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?m:d,f?d:m,f?p:g,f?g:p,c,d,o,s,a,!1)];return{signers:[],instructions:y,instructionTypes:[J.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import kg from"bn.js";import{TOKEN_PROGRAM_ID as hg}from"@solana/spl-token";import _n from"bn.js";var zg=_([Ee("mintAuthorityOption"),S("mintAuthority"),A("supply"),H("decimals"),H("isInitialized"),Ee("freezeAuthorityOption"),S("freezeAuthority")]);import{TOKEN_PROGRAM_ID as Za,TOKEN_2022_PROGRAM_ID as Ja,ASSOCIATED_TOKEN_PROGRAM_ID as $a}from"@solana/spl-token";import{PublicKey as V,TransactionInstruction as eu,SystemProgram as tu}from"@solana/web3.js";import xt from"bn.js";function nu(i,e,t,n,r,o,s,a,c,u,l,d,m,p,g){var x;let f=[],y=[B({pubkey:Za,isWritable:!1}),B({pubkey:Ja,isWritable:!1}),B({pubkey:$a,isWritable:!1}),B({pubkey:tu.programId,isWritable:!1}),B({pubkey:e,isSigner:!0})];y.push(B({pubkey:t})),y.push(B({pubkey:r}));let b=[c,u],k=[l,d],P=[o,s,a];for(let N=0;N<b.length;N++){let R=b[N],W=P[N]===R.mintA.address;if(y.push(B({pubkey:new V(R.programId),isWritable:!1})),N===b.length-1?y.push(B({pubkey:r})):y.push(B({pubkey:n})),y.push(B({pubkey:new V(P[N])})),y.push(B({pubkey:new V(P[N+1])})),R.version===6){let T=k[N];y.push(B({pubkey:new V(T.config.id)})),y.push(B({pubkey:new V(T.id)})),y.push(B({pubkey:new V(W?T.vault.A:T.vault.B)})),y.push(B({pubkey:new V(W?T.vault.B:T.vault.A)})),y.push(B({pubkey:new V(R.observationId)})),y.push(B({pubkey:Hn})),y.push(B({pubkey:Le(new V(R.programId),new V(R.id)).publicKey})),f.push(iu(R.sqrtPriceX64.toString(),W));for(let L of(x=g[N])!=null?x:[])y.push(B({pubkey:new V(L)}))}else if(R.version===5){let T=k[N];y.push(B({pubkey:new V(T.id)})),y.push(B({pubkey:new V(T.authority),isWritable:!1})),y.push(B({pubkey:new V(T.marketProgramId)})),y.push(B({pubkey:new V(T.marketAuthority)})),y.push(B({pubkey:kr,isWritable:!1})),y.push(B({pubkey:new V(T.openOrders)})),y.push(B({pubkey:new V(T.vault.A)})),y.push(B({pubkey:new V(T.vault.B)})),y.push(B({pubkey:new V(T.id)})),y.push(B({pubkey:new V(T.id)})),y.push(B({pubkey:new V(T.id)})),y.push(B({pubkey:new V(T.id)})),y.push(B({pubkey:new V(T.id)})),y.push(B({pubkey:new V(T.id)})),y.push(B({pubkey:new V(T.marketId)})),y.push(B({pubkey:new V(T.marketBids)})),y.push(B({pubkey:new V(T.marketAsks)})),y.push(B({pubkey:new V(T.marketEventQueue)})),y.push(B({pubkey:new V(T.marketBaseVault)})),y.push(B({pubkey:new V(T.marketQuoteVault)}))}else if(R.version===4){let T=k[N],L=R.status!==1;y.push(B({pubkey:new V(T.id)})),y.push(B({pubkey:new V(T.authority),isWritable:!1})),y.push(B({pubkey:new V(L?T.id:T.marketProgramId)})),y.push(B({pubkey:new V(L?T.id:T.marketAuthority)})),y.push(B({pubkey:new V(L?T.id:T.openOrders)})),y.push(B({pubkey:new V(T.vault.A)})),y.push(B({pubkey:new V(T.vault.B)})),y.push(B({pubkey:new V(L?T.id:T.marketId)})),y.push(B({pubkey:new V(L?T.id:T.marketBids)})),y.push(B({pubkey:new V(L?T.id:T.marketAsks)})),y.push(B({pubkey:new V(L?T.id:T.marketEventQueue)})),y.push(B({pubkey:new V(L?T.id:T.marketBaseVault)})),y.push(B({pubkey:new V(L?T.id:T.marketQuoteVault)}))}else if(R.version===7){let T=k[N];y.push(B({pubkey:new V(T.authority)})),y.push(B({pubkey:new V(T.config.id)})),y.push(B({pubkey:new V(T.id)})),y.push(B({pubkey:new V(W?T.vault.A:T.vault.B)})),y.push(B({pubkey:new V(W?T.vault.B:T.vault.A)})),y.push(B({pubkey:new V(R.observationId)}))}else throw Error("pool type error")}let h=_([H("insId"),A("amountIn"),A("amountOut"),ne(G(),f.length,"clmmPriceLimit")]),I=Buffer.alloc(h.span);return h.encode({insId:0,amountIn:m,amountOut:p,clmmPriceLimit:f},I),new eu({keys:y,programId:i,data:I})}function iu(i,e){if(i)if(e){let t=new xt(i).div(new xt(25));return t.gt(Ln)?t:Ln}else{let t=new xt(i).mul(new xt(25));return t.lt(On)?t:On}else return e?Ln:On}function lo({routeProgram:i,ownerInfo:e,inputMint:t,swapInfo:n}){var r,o,s,a,c,u,l;if(n.routeType==="amm")if(n.poolInfo[0].version===6){let d=n.poolKey[0],m=gt(d),p=t.equals(m.mintA.address)?nt.add(Oe):it.sub(Oe);return nn.makeSwapBaseInInstructions({poolInfo:d,poolKeys:d,observationId:n.poolInfo[0].observationId,ownerInfo:{wallet:e.wallet,tokenAccountA:m.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:m.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 xt(0)),sqrtPriceLimitX64:p,remainingAccounts:(s=n.remainingAccounts[0])!=null?s:[]})}else if(n.poolInfo[0].version===7){let d=n.poolInfo[0],m=t.toString()===n.poolInfo[0].mintA.address;return{signers:[],instructions:[m?ro(d.programId,e.wallet,d.authority,d.configId,d.id,e.sourceToken,e.destinationToken,d.vaultA,d.vaultB,d.mintProgramA,d.mintProgramA,new V(d.mintA.address),new V(d.mintB.address),d.observationId,n.amountIn.amount.raw,n.minAmountOut.amount.raw):oo(d.programId,e.wallet,d.authority,d.configId,d.id,e.destinationToken,e.sourceToken,d.vaultB,d.vaultA,d.mintProgramB,d.mintProgramA,new V(d.mintB.address),new V(d.mintA.address),d.observationId,n.amountIn.amount.raw,n.minAmountOut.amount.raw)],lookupTableAddress:[],instructionTypes:[m?J.CpmmSwapBaseIn:J.CpmmSwapBaseOut],address:{}}}else{let d=n.poolKey[0];return{signers:[],instructions:[Vr({poolKeys:d,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((c=(a=n.minAmountOut.fee)==null?void 0:a.raw)!=null?c:new xt(0)),fixedSide:"in"})],lookupTableAddress:d.lookupTableAccount?[d.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?J.AmmV5SwapBaseIn:J.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let d=n.poolInfo[0],m=n.poolInfo[1],p=n.poolKey[0],g=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[nu(i,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.middleToken.mint.toString(),n.outputMint.toString(),d,m,p,g,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((l=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?l:new xt(0)),n.remainingAccounts)],instructionTypes:[J.RouteSwap],lookupTableAddress:[p.lookupTableAccount,g.lookupTableAccount].filter(f=>f!==void 0),address:{}}}else throw Error("route type error")}var mo={[ri.toBase58()]:3},po={3:ri};var Ci=_([ye(5),ye(8),S("ownAddress"),A("vaultSignerNonce"),S("baseMint"),S("quoteMint"),S("baseVault"),A("baseDepositsTotal"),A("baseFeesAccrued"),S("quoteVault"),A("quoteDepositsTotal"),A("quoteFeesAccrued"),A("quoteDustThreshold"),S("requestQueue"),S("eventQueue"),S("bids"),S("asks"),A("baseLotSize"),A("quoteLotSize"),A("feeRateBps"),A("referrerRebatesAccrued"),ye(7)]),fo={3:Ci};import{PublicKey as bo}from"@solana/web3.js";var En=oe("Serum"),Fn=class{static getProgramId(e){let t=po[e];return t||En.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=mo[t];return n||En.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=fo[e];return t||En.logWithError(!!t,"invalid version","version",e),t}static getLayouts(e){return{state:this.getStateLayout(e)}}static getAssociatedAuthority({programId:e,marketId:t}){let n=[t.toBuffer()],r=0,o;for(;r<100;){try{let s=n.concat(Buffer.from([r]),Buffer.alloc(7));o=bo.createProgramAddressSync(s,e)}catch(s){if(s instanceof TypeError)throw s;r++;continue}return{publicKey:o,nonce:r}}return En.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:bo.default,nonce:r}}};var ot=new _n(0),Ri=class extends Rt{constructor(e){super(e)}async getWSolAccounts(){this.scope.checkOwner(),await this.scope.account.fetchWalletTokenAccounts();let e=this.scope.account.tokenAccounts.filter(t=>t.mint.equals(Ve));return e.sort((t,n)=>t.isAssociated?1:n.isAssociated||t.amount.lt(n.amount)?-1:1),e}async unWrapWSol(e){let{amount:t,tokenProgram:n,txVersion:r=1}=e,o=await this.getWSolAccounts(),s=this.createTxBuilder();s.addCustomComputeBudget(e.computeBudgetConfig);let a=await fi({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});s.addInstruction(a);let c=ue(t);for(let u=0;u<o.length;u++)c.gte(o[u].amount)?(s.addInstruction({instructions:[Ot({tokenAccount:o[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),c.sub(o[u].amount)):(s.addInstruction({instructions:[Ot({tokenAccount:o[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),bi({destination:a.addresses.newAccount,source:o[u].publicKey,amount:c,owner:this.scope.ownerPubKey,tokenProgram:n}));return s.versionBuild({txVersion:r})}async wrapWSol(e,t,n){let r=await this.getWSolAccounts(),o=this.createTxBuilder(),s=await fi({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return o.addInstruction(s),r.length&&o.addInstruction({instructions:[bi({destination:r[0].publicKey,source:s.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[Ot({tokenAccount:s.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),o.versionBuild({txVersion:n!=null?n:1})}async swap({swapInfo:e,swapPoolKeys:t,ownerInfo:n,computeBudgetConfig:r,routeProgram:o,txVersion:s}){let a=this.createTxBuilder(),c=e.amountIn,u=e.amountOut,l=c.amount.token.mint.equals(Ve),d=u.amount.token.mint.equals(Ve),m=c.amount.token.mint,p=u.amount.token.mint,{account:g,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:c.amount.token.isToken2022?Ni:pe,mint:m,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:l?{payer:this.scope.ownerPubKey,amount:c.amount.raw}:void 0,associatedOnly:l?!1:n.associatedOnly,checkCreateATAOwner:n.checkCreateATAOwner});if(f&&a.addInstruction(f),g===void 0)throw Error("input account check error");let y=this.scope.account.getAssociatedTokenAccount(p,u.amount.token.isToken2022?Ni:pe);d&&a.addInstruction({endInstructions:[Ot({owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,tokenAccount:y,programId:pe})],endInstructionTypes:[J.CloseAccount]});let b;if(e.routeType==="route"){let h=e.middleToken;b=this.scope.account.getAssociatedTokenAccount(h.mint,h.isToken2022?Ni:pe)}let k=t||await this.computePoolToPoolKeys({pools:e.poolInfoList}),P=lo({routeProgram:o,inputMint:m,swapInfo:X(v({},e),{poolInfo:[...e.poolInfoList],poolKey:k,outputMint:p}),ownerInfo:{wallet:this.scope.ownerPubKey,sourceToken:g,routeToken:b,destinationToken:y}});if(e.feeConfig!==void 0){let h=this.createTxBuilder();h.addInstruction({instructions:[yo(g,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[J.TransferAmount]}),h.addInstruction(P);let{transactions:I}=s===0?await h.sizeCheckBuildV0():await h.sizeCheckBuild();I.length<2&&a.addInstruction({instructions:[yo(g,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[J.TransferAmount]})}return a.addInstruction(P),s===0?a.sizeCheckBuildV0({computeBudgetConfig:r,address:P.address}):a.sizeCheckBuild({computeBudgetConfig:r,address:P.address})}async fetchRoutePoolBasicInfo(e){let{amm:t=Pr,clmm:n=wr,cpmm:r=hr}=e||{},o=await this.scope.connection.getProgramAccounts(t,{dataSlice:{offset:Er.offsetOf("baseMint"),length:64}}),s=_([S("baseMint"),S("quoteMint")]),a=o.map(p=>({id:p.pubkey,version:4,mintA:s.decode(p.account.data).baseMint,mintB:s.decode(p.account.data).quoteMint})),c=_([S("mintA"),S("mintB")]),l=(await this.scope.connection.getProgramAccounts(n,{filters:[{dataSize:Mt.span}],dataSlice:{offset:Mt.offsetOf("mintA"),length:64}})).map(p=>{let g=c.decode(p.account.data);return{id:p.pubkey,version:6,mintA:g.mintA,mintB:g.mintB}}),m=(await this.scope.connection.getProgramAccounts(r,{dataSlice:{offset:to.offsetOf("mintA"),length:64}})).map(p=>{let g=c.decode(p.account.data);return{id:p.pubkey,version:7,mintA:g.mintA,mintB:g.mintB}});return{clmmPools:l,ammPools:a,cpmmPools:m}}getAllRoute({inputMint:e,outputMint:t,clmmPools:n,ammPools:r,cpmmPools:o}){e=e.toString()===It.default.toString()?Ve:e,t=t.toString()===It.default.toString()?Ve:t;let s={},a={},c={},u=[],l={};for(let m of n!=null?n:[]){if((m.mintA.equals(e)&&m.mintB.equals(t)||m.mintA.equals(t)&&m.mintB.equals(e))&&(u.push(m),a[m.id.toString()]=m),m.mintA.equals(e)){let p=m.mintB.toString();l[p]===void 0&&(l[p]={mintProgram:pe,in:[],out:[],mDecimals:0}),l[p].in.push(m)}if(m.mintB.equals(e)){let p=m.mintA.toString();l[p]===void 0&&(l[p]={mintProgram:pe,in:[],out:[],mDecimals:0}),l[p].in.push(m)}if(m.mintA.equals(t)){let p=m.mintB.toString();l[p]===void 0&&(l[p]={mintProgram:pe,in:[],out:[],mDecimals:0}),l[p].out.push(m)}if(m.mintB.equals(t)){let p=m.mintA.toString();l[p]===void 0&&(l[p]={mintProgram:pe,in:[],out:[],mDecimals:0}),l[p].out.push(m)}}let d=[];for(let m of r)(m.mintA.equals(e)&&m.mintB.equals(t)||m.mintA.equals(t)&&m.mintB.equals(e))&&(u.push(m),s[m.id.toBase58()]=m,d.push(m)),m.mintA.equals(e)&&(l[m.mintB.toBase58()]===void 0&&(l[m.mintB.toBase58()]={mintProgram:pe,in:[],out:[],mDecimals:0}),l[m.mintB.toBase58()].in.push(m)),m.mintB.equals(e)&&(l[m.mintA.toBase58()]===void 0&&(l[m.mintA.toBase58()]={mintProgram:pe,in:[],out:[],mDecimals:0}),l[m.mintA.toBase58()].in.push(m)),m.mintA.equals(t)&&(l[m.mintB.toBase58()]===void 0&&(l[m.mintB.toBase58()]={mintProgram:pe,in:[],out:[],mDecimals:0}),l[m.mintB.toBase58()].out.push(m)),m.mintB.equals(t)&&(l[m.mintA.toBase58()]===void 0&&(l[m.mintA.toBase58()]={mintProgram:pe,in:[],out:[],mDecimals:0}),l[m.mintA.toBase58()].out.push(m));for(let m of o)(m.mintA.equals(e)&&m.mintB.equals(t)||m.mintA.equals(t)&&m.mintB.equals(e))&&(u.push(m),c[m.id.toBase58()]=m),m.mintA.equals(e)&&(l[m.mintB.toBase58()]===void 0&&(l[m.mintB.toBase58()]={mintProgram:pe,in:[],out:[],mDecimals:0}),l[m.mintB.toBase58()].in.push(m)),m.mintB.equals(e)&&(l[m.mintA.toBase58()]===void 0&&(l[m.mintA.toBase58()]={mintProgram:pe,in:[],out:[],mDecimals:0}),l[m.mintA.toBase58()].in.push(m)),m.mintA.equals(t)&&(l[m.mintB.toBase58()]===void 0&&(l[m.mintB.toBase58()]={mintProgram:pe,in:[],out:[],mDecimals:0}),l[m.mintB.toBase58()].out.push(m)),m.mintB.equals(t)&&(l[m.mintA.toBase58()]===void 0&&(l[m.mintA.toBase58()]={mintProgram:pe,in:[],out:[],mDecimals:0}),l[m.mintA.toBase58()].out.push(m));for(let m of Object.keys(l)){if(l[m].in.length===1&&l[m].out.length===1&&l[m].in[0].id.equals(l[m].out[0].id)){delete l[m];continue}if(l[m].in.length===0||l[m].out.length===0){delete l[m];continue}let p=l[m];for(let g of p.in)for(let f of p.out)g.version===6&&a[g.id.toString()]===void 0?a[g.id.toString()]=g:g.version===7&&o[g.id.toString()]===void 0?c[g.id.toString()]=g:(g.version===4||g.version===5)&&s[g.id.toString()]===void 0&&(s[g.id.toString()]=g),f.version===6&&a[f.id.toString()]===void 0?a[f.id.toString()]=f:f.version===7&&o[f.id.toString()]===void 0?c[f.id.toString()]=f:(f.version===4||f.version===5)&&s[f.id.toString()]===void 0&&(s[f.id.toString()]=f)}return{directPath:u,addLiquidityPools:d,routePathDict:l,needSimulate:Object.values(s),needTickArray:Object.values(a),cpmmPoolList:Object.values(c)}}async fetchSwapRoutesData({routes:e,inputMint:t,outputMint:n}){let r=new Set([...e.needTickArray.map(f=>[f.mintA.toBase58(),f.mintB.toBase58()]).flat(),t.toString(),n.toString()]);console.log("fetching amm pools info, total: ",e.needSimulate.length);let o=await this.scope.liquidity.getRpcPoolInfos(e.needSimulate.map(f=>f.id)),s=qr(o),a={};Object.values(s).forEach(f=>{r.delete(f.mintA.address),a[f.mintA.address]={address:new It(f.mintA.address),programId:pe,mintAuthority:null,supply:BigInt(0),decimals:f.mintA.decimals,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0},r.delete(f.mintB.address),a[f.mintB.address]={address:new It(f.mintB.address),programId:pe,mintAuthority:null,supply:BigInt(0),decimals:f.mintB.decimals,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}}),console.log("fetching cpmm pools info, total: ",e.cpmmPoolList.length);let c=await this.scope.cpmm.getRpcPoolInfos(e.cpmmPoolList.map(f=>f.id.toBase58()),!0);Object.values(c).forEach(f=>{let[y,b]=[f.mintA.toBase58(),f.mintB.toBase58()];f.mintProgramA.equals(pe)?(r.delete(y),a[y]={address:f.mintA,programId:f.mintProgramA,mintAuthority:null,supply:BigInt(0),decimals:f.mintDecimalA,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}):r.add(y),f.mintProgramB.equals(pe)?(r.delete(b),a[b]={address:f.mintB,programId:f.mintProgramB,mintAuthority:null,supply:BigInt(0),decimals:f.mintDecimalB,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}):r.add(b)}),console.log("fetching mints info, total: ",r.size);let u=await yr({connection:this.scope.connection,mints:Array.from(r).map(f=>new It(f))});a=v(v({},a),u);let l=this.scope.cpmm.toComputePoolInfos({pools:c,mintInfos:a});console.log("fetching clmm pools info, total:",e.needTickArray.length);let d=await this.scope.clmm.getRpcClmmPoolInfos({poolIds:e.needTickArray.map(f=>f.id)}),{computeClmmPoolInfo:m,computePoolTickData:p}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:d,mintInfos:a}),g=Object.keys(e.routePathDict).reduce((f,y)=>X(v({},f),{[y]:X(v({},e.routePathDict[y]),{mintProgram:a[y].programId,mDecimals:a[y].decimals,in:e.routePathDict[y].in.map(b=>s[b.id.toBase58()]||m[b.id.toBase58()]||l[b.id.toBase58()]),out:e.routePathDict[y].out.map(b=>s[b.id.toBase58()]||m[b.id.toBase58()]||l[b.id.toBase58()])})}),{});return{mintInfos:a,ammPoolsRpcInfo:o,ammSimulateCache:s,clmmPoolsRpcInfo:d,computeClmmPoolInfo:m,computePoolTickData:p,computeCpmmData:l,routePathDict:g}}getAllRouteComputeAmountOut({inputTokenAmount:e,outputToken:t,directPath:n,routePathDict:r,simulateCache:o,tickCache:s,slippage:a,chainTime:c,epochInfo:u,feeConfig:l}){var b,k,P,h,I,x,N,R,W;let d=l===void 0?new _n(0):e.raw.mul(new _n(l.feeBps.toNumber())).div(new _n(1e4)),m=e.raw.sub(d),p=new ce(e.token,m),g=l===void 0?void 0:{feeAmount:d,feeAccount:l.feeAccount},f=X(v({},t),{address:Qe(t.address).toString()}),y=[];for(let T of n)try{y.push(X(v({},this.computeAmountOut({itemPool:T,tickCache:s,simulateCache:o,chainTime:c,epochInfo:u,slippage:a,outputToken:f,amountIn:p})),{feeConfig:g}))}catch(L){this.logDebug("direct error",T.version,T.id.toString(),L.message)}this.logDebug("direct done");for(let[T,L]of Object.entries(r)){let ae={chainId:101,address:T,programId:L.mintProgram.toBase58(),logoURI:"",symbol:"",name:"",decimals:L.mDecimals,tags:[],extensions:{}},z=L.in.map(Z=>{try{return{pool:Z,data:this.computeAmountOut({itemPool:Z,tickCache:s,simulateCache:o,chainTime:c,epochInfo:u,slippage:a,outputToken:ae,amountIn:p})}}catch(D){this.logDebug("route in error",Z.version,Z.id.toString(),D.message);return}}).sort((Z,D)=>{var Li,Oi,Mi,Ei;let rn=Z===void 0?ot:Z.data.amountOut.amount.raw.sub((Oi=(Li=Z.data.amountOut.fee)==null?void 0:Li.raw)!=null?Oi:ot),go=D===void 0?ot:D.data.amountOut.amount.raw.sub((Ei=(Mi=D.data.amountOut.fee)==null?void 0:Mi.raw)!=null?Ei:ot);return rn.lt(go)?1:-1})[0];if(z===void 0)continue;let Pe=new ce(Fr(ae),z.data.amountOut.amount.raw.sub((k=(b=z.data.amountOut.fee)==null?void 0:b.raw)!=null?k:ot));for(let Z of L.out)try{let D=this.computeAmountOut({itemPool:Z,tickCache:s,simulateCache:o,chainTime:c,epochInfo:u,slippage:a,outputToken:f,amountIn:Pe});y.push(X(v({},D),{allTrade:!!(z.data.allTrade&&D.allTrade),amountIn:z.data.amountIn,amountOut:D.amountOut,minAmountOut:D.minAmountOut,currentPrice:void 0,executionPrice:new M(new Ce({baseToken:z.data.amountIn.amount.token,denominator:z.data.amountIn.amount.raw,quoteToken:D.amountOut.amount.token,numerator:D.amountOut.amount.raw.sub((h=(P=D.amountOut.fee)==null?void 0:P.raw)!=null?h:ot)}).toFixed()),priceImpact:new M(z.data.priceImpact.add(D.priceImpact).toFixed()),fee:[z.data.fee[0],D.fee[0]],routeType:"route",poolInfoList:[z.pool,Z],remainingAccounts:[z.data.remainingAccounts[0],D.remainingAccounts[0]],minMiddleAmountFee:(I=D.amountOut.fee)!=null&&I.raw?new ce(z.data.amountOut.amount.token,((N=(x=z.data.amountOut.fee)==null?void 0:x.raw)!=null?N:ot).add((W=(R=D.amountOut.fee)==null?void 0:R.raw)!=null?W:ot)):void 0,middleToken:z.data.amountOut.amount.token,poolReady:z.data.poolReady&&D.poolReady,poolType:[z.data.poolType,D.poolType],feeConfig:g,expirationTime:Ze(z.data.expirationTime,D.expirationTime)}))}catch(D){this.logDebug("route out error",Z.version,Z.id.toString(),D.message)}}return y.filter(T=>T.allTrade).sort((T,L)=>T.amountOut.amount.raw.sub(L.amountOut.amount.raw).gt(ot)?-1:1)}computeAmountOut({itemPool:e,tickCache:t,simulateCache:n,chainTime:r,epochInfo:o,slippage:s,outputToken:a,amountIn:c}){if(e.version===6){let{allTrade:u,realAmountIn:l,amountOut:d,minAmountOut:m,expirationTime:p,currentPrice:g,executionPrice:f,priceImpact:y,fee:b,remainingAccounts:k,executionPriceX64:P}=Ae.computeAmountOutFormat({poolInfo:e,tickArrayCache:t[e.id.toString()],amountIn:c.raw,tokenOut:a,slippage:s,epochInfo:o,catchLiquidityInsufficient:!0});return{allTrade:u,amountIn:l,amountOut:d,minAmountOut:m,currentPrice:new M(g.toFixed()),executionPrice:new M(f.toFixed()),priceImpact:new M(y.toFixed()),fee:[b],remainingAccounts:[k],routeType:"amm",poolInfoList:[e],poolReady:e.startTime<r,poolType:"CLMM",slippage:s,clmmExPriceX64:[P],expirationTime:Ze(l.expirationTime,p)}}else if(e.version===7){let{allTrade:u,executionPrice:l,amountOut:d,minAmountOut:m,priceImpact:p,fee:g}=this.scope.cpmm.computeSwapAmount({pool:e,outputMint:a.address,amountIn:c.raw,slippage:s});return{allTrade:u,amountIn:{amount:c,fee:void 0,expirationTime:void 0},amountOut:{amount:jt(X(v({},a),{amount:d})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:jt(X(v({},a),{amount:m})),fee:void 0,expirationTime:void 0},currentPrice:e.poolPrice,executionPrice:l,priceImpact:p,fee:[new ce(c.token,g)],remainingAccounts:[],routeType:"amm",poolInfoList:[e],poolReady:e.openTime.toNumber()<r,poolType:"CPMM",slippage:s,clmmExPriceX64:[void 0],expirationTime:void 0}}else{if(![1,6,7].includes(n[e.id.toString()].status))throw Error("swap error");let{amountOut:u,minAmountOut:l,currentPrice:d,executionPrice:m,priceImpact:p,fee:g}=this.scope.liquidity.computeAmountOut({poolInfo:n[e.id.toString()],amountIn:c.raw,mintIn:c.token.mint,mintOut:a.address,slippage:s});return{amountIn:{amount:c,fee:void 0,expirationTime:void 0},amountOut:{amount:jt(X(v({},a),{amount:u})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:jt(X(v({},a),{amount:l})),fee:void 0,expirationTime:void 0},currentPrice:d,executionPrice:m,priceImpact:p,fee:[new ce(c.token,g)],routeType:"amm",poolInfoList:[e],remainingAccounts:[],poolReady:Number(n[e.id].openTime)<r,poolType:e.version===5?"STABLE":void 0,expirationTime:void 0,allTrade:!0,slippage:s,clmmExPriceX64:[void 0]}}}async computePoolToPoolKeys({pools:e,clmmRpcData:t={},ammRpcData:n={}}){let r=new Set(e.filter(u=>u.version===6&&!t[u.id.toString()]).map(u=>u.id.toString()));if(r.size>0){let u=this.scope.clmm.getRpcClmmPoolInfos({poolIds:Array.from(r)});Object.keys(u).forEach(l=>{t[l]=u[l]})}if(new Set(e.filter(u=>u.version===4&&!n[u.id.toString()]).map(u=>u.id.toString())).size>0){let u=this.scope.liquidity.getRpcPoolInfos(Array.from(r));Object.keys(u).forEach(l=>{n[l]=u[l]})}let s=new Set(e.filter(u=>u.version===4).map(u=>u.marketId)),a={};s.size>0&&(await Pt(this.scope.connection,Array.from(s).map(l=>({pubkey:new It(l)})))).forEach(l=>{if(!l.accountInfo)return;let d=Ci.decode(l.accountInfo.data);a[l.pubkey.toBase58()]={marketId:l.pubkey.toString(),marketProgramId:l.accountInfo.owner.toString(),marketAuthority:Fn.getAssociatedAuthority({programId:l.accountInfo.owner,marketId:l.pubkey}).publicKey.toString(),marketBaseVault:d.baseVault.toString(),marketQuoteVault:d.quoteVault.toString(),marketBids:d.bids.toString(),marketAsks:d.asks.toString(),marketEventQueue:d.eventQueue.toString()}});let c=[];return e.forEach(u=>{if(u.version===6){let l=t[u.id.toString()],d={programId:u.programId.toBase58(),id:u.id.toBase58(),mintA:u.mintA,mintB:u.mintB,openTime:String(u.startTime),vault:{A:l.vaultA.toBase58(),B:l.vaultB.toBase58()},config:X(v({},u.ammConfig),{id:u.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]}),rewardInfos:[]};c.push(d)}else if(u.version===4){let l=n[u.id.toString()],d=v({programId:u.programId,id:u.id,mintA:u.mintA,mintB:u.mintB,openTime:String(u.openTime),vault:{A:l.baseVault.toBase58(),B:l.quoteVault.toBase58()},authority:Wr({programId:new It(u.programId)}).publicKey.toString(),openOrders:l.openOrders.toBase58(),targetOrders:l.targetOrders.toBase58(),mintLp:u.lpMint},a[u.marketId]);c.push(d)}else u.version===7&&c.push({programId:u.programId.toBase58(),id:u.id.toBase58(),mintA:u.mintA,mintB:u.mintB,openTime:String(u.openTime),authority:so(u.programId).publicKey.toBase58(),vault:{A:u.vaultA.toBase58(),B:u.vaultB.toBase58()},mintLp:kt({address:u.mintLp.toBase58(),programId:pe.toBase58(),decimals:u.lpDecimals}),config:X(v({id:u.configId.toBase58()},u.configInfo),{protocolFeeRate:u.configInfo.protocolFeeRate.toNumber(),tradeFeeRate:u.configInfo.tradeFeeRate.toNumber(),fundFeeRate:u.configInfo.fundFeeRate.toNumber(),createPoolFee:u.configInfo.createPoolFee.toString()})})}),c}};export{Ri as default};
2
2
  /*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
3
3
  //# sourceMappingURL=trade.mjs.map