@raydium-io/raydium-sdk-v2 0.0.36-alpha → 0.0.37-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/lib/index.d.ts +1 -1
  2. package/lib/index.js +1 -1
  3. package/lib/index.js.map +1 -1
  4. package/lib/index.mjs +1 -1
  5. package/lib/index.mjs.map +1 -1
  6. package/lib/raydium/account/account.d.ts +1 -1
  7. package/lib/raydium/clmm/clmm.d.ts +1 -1
  8. package/lib/raydium/clmm/clmm.js +1 -1
  9. package/lib/raydium/clmm/clmm.js.map +1 -1
  10. package/lib/raydium/clmm/clmm.mjs +1 -1
  11. package/lib/raydium/clmm/clmm.mjs.map +1 -1
  12. package/lib/raydium/clmm/index.d.ts +1 -1
  13. package/lib/raydium/clmm/index.js +1 -1
  14. package/lib/raydium/clmm/index.js.map +1 -1
  15. package/lib/raydium/clmm/index.mjs +1 -1
  16. package/lib/raydium/clmm/index.mjs.map +1 -1
  17. package/lib/raydium/cpmm/cpmm.d.ts +1 -1
  18. package/lib/raydium/farm/farm.d.ts +1 -1
  19. package/lib/raydium/ido/ido.d.ts +1 -1
  20. package/lib/raydium/ido/index.d.ts +1 -1
  21. package/lib/raydium/index.d.ts +1 -1
  22. package/lib/raydium/index.js +1 -1
  23. package/lib/raydium/index.js.map +1 -1
  24. package/lib/raydium/index.mjs +1 -1
  25. package/lib/raydium/index.mjs.map +1 -1
  26. package/lib/raydium/liquidity/liquidity.d.ts +1 -1
  27. package/lib/raydium/marketV2/createMarket.d.ts +1 -1
  28. package/lib/raydium/marketV2/index.d.ts +1 -1
  29. package/lib/raydium/moduleBase.d.ts +1 -1
  30. package/lib/raydium/raydium.d.ts +1 -1
  31. package/lib/raydium/raydium.js +1 -1
  32. package/lib/raydium/raydium.js.map +1 -1
  33. package/lib/raydium/raydium.mjs +1 -1
  34. package/lib/raydium/raydium.mjs.map +1 -1
  35. package/lib/raydium/token/token.d.ts +1 -1
  36. package/lib/raydium/tradeV2/index.js +1 -1
  37. package/lib/raydium/tradeV2/index.js.map +1 -1
  38. package/lib/raydium/tradeV2/index.mjs +1 -1
  39. package/lib/raydium/tradeV2/index.mjs.map +1 -1
  40. package/lib/raydium/tradeV2/instrument.js +1 -1
  41. package/lib/raydium/tradeV2/instrument.js.map +1 -1
  42. package/lib/raydium/tradeV2/instrument.mjs +1 -1
  43. package/lib/raydium/tradeV2/instrument.mjs.map +1 -1
  44. package/lib/raydium/tradeV2/trade.d.ts +1 -1
  45. package/lib/raydium/utils1216/index.d.ts +1 -1
  46. package/lib/raydium/utils1216/utils1216.d.ts +1 -1
  47. package/lib/{raydium-5d4faf36.d.ts → raydium-3aa078dd.d.ts} +6 -1
  48. package/package.json +1 -1
  49. package/src/raydium/clmm/clmm.ts +19 -1
package/lib/index.mjs CHANGED
@@ -1,3 +1,3 @@
1
- var ec=Object.defineProperty,tc=Object.defineProperties;var nc=Object.getOwnPropertyDescriptors;var Kr=Object.getOwnPropertySymbols;var ys=Object.prototype.hasOwnProperty,bs=Object.prototype.propertyIsEnumerable;var fs=(r,e,t)=>e in r?ec(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,M=(r,e)=>{for(var t in e||(e={}))ys.call(e,t)&&fs(r,t,e[t]);if(Kr)for(var t of Kr(e))bs.call(e,t)&&fs(r,t,e[t]);return r},D=(r,e)=>tc(r,nc(e));var Te=(r,e)=>{var t={};for(var n in r)ys.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&Kr)for(var n of Kr(r))e.indexOf(n)<0&&bs.call(r,n)&&(t[n]=r[n]);return t};import Xl from"axios";import{get as Ii,set as gs}from"lodash";import ws from"dayjs";import rc from"dayjs/plugin/utc";ws.extend(rc);var ic=(i=>(i[i.Error=0]="Error",i[i.Warning=1]="Warning",i[i.Info=2]="Info",i[i.Debug=3]="Debug",i))(ic||{}),xi=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 ws().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}},Bi={},As={};function ae(r){let e=Ii(Bi,r);if(!e){let t=Ii(As,r);e=new xi({name:r,logLevel:t}),gs(Bi,r,e)}return e}function Yp(r,e){gs(As,r,e);let t=Ii(Bi,r);t&&(t.level=e)}import{PublicKey as gl}from"@solana/web3.js";import wl from"bn.js";import yl from"big.js";import Xt from"bn.js";import ke from"bn.js";var gn=9e15,Gt=1e9,Si="0123456789abcdef",Rr="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Lr="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Ki={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-gn,maxE:gn,crypto:!1},Ts,Ot,J=!0,Nr="[DecimalError] ",Ut=Nr+"Invalid argument: ",Is=Nr+"Precision limit exceeded",xs=Nr+"crypto unavailable",Bs="[object Decimal]",Ue=Math.floor,Oe=Math.pow,oc=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,sc=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,ac=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Ss=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,bt=1e7,H=7,uc=9007199254740991,cc=Rr.length-1,Ci=Lr.length-1,O={toStringTag:Bs};O.absoluteValue=O.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),X(r)};O.ceil=function(){return X(new this.constructor(this),this.e+1,2)};O.clampedTo=O.clamp=function(r,e){var t,n=this,i=n.constructor;if(r=new i(r),e=new i(e),!r.s||!e.s)return new i(NaN);if(r.gt(e))throw Error(Ut+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};O.comparedTo=O.cmp=function(r){var e,t,n,i,o=this,s=o.d,a=(r=new o.constructor(r)).d,u=o.s,c=r.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==r.e)return o.e>r.e^u<0?1:-1;for(n=s.length,i=a.length,e=0,t=n<i?n:i;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===i?0:n>i^u<0?1:-1};O.cosine=O.cos=function(){var r,e,t=this,n=t.constructor;return t.d?t.d[0]?(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+H,n.rounding=1,t=lc(n,Os(n,t)),n.precision=r,n.rounding=e,X(Ot==2||Ot==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};O.cubeRoot=O.cbrt=function(){var r,e,t,n,i,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(J=!1,o=l.s*Oe(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=Fe(l.d),r=l.e,(o=(r-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=Oe(t,1/3),r=Ue((r+1)/3)-(r%3==(r<0?-1:2)),o==1/0?t="5e"+r:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+r),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(r=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=we(c.plus(l).times(a),c.plus(u),s+2,1),Fe(a.d).slice(0,s)===(t=Fe(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(X(a,r+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(X(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return J=!0,X(n,r,m.rounding,e)};O.decimalPlaces=O.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-Ue(this.e/H))*H,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};O.dividedBy=O.div=function(r){return we(this,new this.constructor(r))};O.dividedToIntegerBy=O.divToInt=function(r){var e=this,t=e.constructor;return X(we(e,new t(r),0,1,1),t.precision,t.rounding)};O.equals=O.eq=function(r){return this.cmp(r)===0};O.floor=function(){return X(new this.constructor(this),this.e+1,3)};O.greaterThan=O.gt=function(r){return this.cmp(r)>0};O.greaterThanOrEqualTo=O.gte=function(r){var e=this.cmp(r);return e==1||e===0};O.hyperbolicCosine=O.cosh=function(){var r,e,t,n,i,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,i=o.d.length,i<32?(r=Math.ceil(i/3),e=(1/_r(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=wn(s,1,o.times(e),new s(1),!0);for(var u,c=r,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return X(o,s.precision=t,s.rounding=n,!0)};O.hyperbolicSine=O.sinh=function(){var r,e,t,n,i=this,o=i.constructor;if(!i.isFinite()||i.isZero())return new o(i);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(i.e,i.sd())+4,o.rounding=1,n=i.d.length,n<3)i=wn(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/_r(5,r)),i=wn(o,2,i,i,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);r--;)s=i.times(i),i=i.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,X(i,e,t,!0)};O.hyperbolicTangent=O.tanh=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+7,n.rounding=1,we(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};O.inverseCosine=O.acos=function(){var r,e=this,t=e.constructor,n=e.abs().cmp(1),i=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?yt(t,i,o):new t(0):new t(NaN):e.isZero()?yt(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=yt(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};O.inverseHyperbolicCosine=O.acosh=function(){var r,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(r=n.precision,e=n.rounding,n.precision=r+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,J=!1,t=t.times(t).minus(1).sqrt().plus(t),J=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};O.inverseHyperbolicSine=O.asinh=function(){var r,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,J=!1,t=t.times(t).plus(1).sqrt().plus(t),J=!0,n.precision=r,n.rounding=e,t.ln())};O.inverseHyperbolicTangent=O.atanh=function(){var r,e,t,n,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(r=o.precision,e=o.rounding,n=i.sd(),Math.max(n,r)<2*-i.e-1?X(new o(i),r,e,!0):(o.precision=t=n-i.e,i=we(i.plus(1),new o(1).minus(i),t+r,1),o.precision=r+4,o.rounding=1,i=i.ln(),o.precision=r,o.rounding=e,i.times(.5))):new o(NaN)};O.inverseSine=O.asin=function(){var r,e,t,n,i=this,o=i.constructor;return i.isZero()?new o(i):(e=i.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(r=yt(o,t+4,n).times(.5),r.s=i.s,r):new o(NaN):(o.precision=t+6,o.rounding=1,i=i.div(new o(1).minus(i.times(i)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,i.times(2)))};O.inverseTangent=O.atan=function(){var r,e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=Ci)return s=yt(l,m+4,p).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=Ci)return s=yt(l,m+4,p).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/H+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(J=!1,e=Math.ceil(a/H),n=1,u=c.times(c),s=new l(c),i=c;r!==-1;)if(i=i.times(u),o=s.minus(i.div(n+=2)),i=i.times(u),s=o.plus(i.div(n+=2)),s.d[e]!==void 0)for(r=e;s.d[r]===o.d[r]&&r--;);return t&&(s=s.times(2<<t-1)),J=!0,X(s,l.precision=m,l.rounding=p,!0)};O.isFinite=function(){return!!this.d};O.isInteger=O.isInt=function(){return!!this.d&&Ue(this.e/H)>this.d.length-2};O.isNaN=function(){return!this.s};O.isNegative=O.isNeg=function(){return this.s<0};O.isPositive=O.isPos=function(){return this.s>0};O.isZero=function(){return!!this.d&&this.d[0]===0};O.lessThan=O.lt=function(r){return this.cmp(r)<0};O.lessThanOrEqualTo=O.lte=function(r){return this.cmp(r)<1};O.logarithm=O.log=function(r){var e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding,d=5;if(r==null)r=new l(10),e=!0;else{if(r=new l(r),t=r.d,r.s<0||!t||!t[0]||r.eq(1))return new l(NaN);e=r.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(i=t[0];i%10===0;)i/=10;o=i!==1}if(J=!1,a=m+d,s=qt(c,a),n=e?Or(l,a+10):qt(r,a),u=we(s,n,a,1),_n(u.d,i=m,p))do if(a+=10,s=qt(c,a),n=e?Or(l,a+10):qt(r,a),u=we(s,n,a,1),!o){+Fe(u.d).slice(i+1,i+15)+1==1e14&&(u=X(u,m+1,0));break}while(_n(u.d,i+=10,p));return J=!0,X(u,m,p)};O.minus=O.sub=function(r){var e,t,n,i,o,s,a,u,c,l,m,p,d=this,y=d.constructor;if(r=new y(r),!d.d||!r.d)return!d.s||!r.s?r=new y(NaN):d.d?r.s=-r.s:r=new y(r.d||d.s!==r.s?d:NaN),r;if(d.s!=r.s)return r.s=-r.s,d.plus(r);if(c=d.d,p=r.d,a=y.precision,u=y.rounding,!c[0]||!p[0]){if(p[0])r.s=-r.s;else if(c[0])r=new y(d);else return new y(u===3?-0:0);return J?X(r,a,u):r}if(t=Ue(r.e/H),l=Ue(d.e/H),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=p.length):(e=p,t=l,s=c.length),n=Math.max(Math.ceil(a/H),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=p.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=p[n]){m=c[n]<p[n];break}o=0}for(m&&(e=c,c=p,p=e,r.s=-r.s),s=c.length,n=p.length-s;n>0;--n)c[s++]=0;for(n=p.length;n>o;){if(c[--n]<p[n]){for(i=n;i&&c[--i]===0;)c[i]=bt-1;--c[i],c[n]+=bt}c[n]-=p[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(r.d=c,r.e=Mr(c,t),J?X(r,a,u):r):new y(u===3?-0:0)};O.modulo=O.mod=function(r){var e,t=this,n=t.constructor;return r=new n(r),!t.d||!r.s||r.d&&!r.d[0]?new n(NaN):!r.d||t.d&&!t.d[0]?X(new n(t),n.precision,n.rounding):(J=!1,n.modulo==9?(e=we(t,r.abs(),0,3,1),e.s*=r.s):e=we(t,r,0,n.modulo,1),e=e.times(r),J=!0,t.minus(e))};O.naturalExponential=O.exp=function(){return Ri(this)};O.naturalLogarithm=O.ln=function(){return qt(this)};O.negated=O.neg=function(){var r=new this.constructor(this);return r.s=-r.s,X(r)};O.plus=O.add=function(r){var e,t,n,i,o,s,a,u,c,l,m=this,p=m.constructor;if(r=new p(r),!m.d||!r.d)return!m.s||!r.s?r=new p(NaN):m.d||(r=new p(r.d||m.s===r.s?m:NaN)),r;if(m.s!=r.s)return r.s=-r.s,m.minus(r);if(c=m.d,l=r.d,a=p.precision,u=p.rounding,!c[0]||!l[0])return l[0]||(r=new p(m)),J?X(r,a,u):r;if(o=Ue(m.e/H),n=Ue(r.e/H),c=c.slice(),i=o-n,i){for(i<0?(t=c,i=-i,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/H),s=o>s?o+1:s+1,i>s&&(i=s,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(s=c.length,i=l.length,s-i<0&&(i=s,t=l,l=c,c=t),e=0;i;)e=(c[--i]=c[i]+l[i]+e)/bt|0,c[i]%=bt;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return r.d=c,r.e=Mr(c,n),J?X(r,a,u):r};O.precision=O.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(Ut+r);return t.d?(e=Ks(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};O.round=function(){var r=this,e=r.constructor;return X(new e(r),r.e+1,e.rounding)};O.sine=O.sin=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+H,n.rounding=1,t=dc(n,Os(n,t)),n.precision=r,n.rounding=e,X(Ot>2?t.neg():t,r,e,!0)):new n(NaN)};O.squareRoot=O.sqrt=function(){var r,e,t,n,i,o,s=this,a=s.d,u=s.e,c=s.s,l=s.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for(J=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=Fe(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=Ue((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(o=n,n=o.plus(we(s,o,t+2,1)).times(.5),Fe(o.d).slice(0,t)===(e=Fe(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(X(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(X(n,u+1,1),r=!n.times(n).eq(s));break}return J=!0,X(n,u,l.rounding,r)};O.tangent=O.tan=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+10,n.rounding=1,t=t.sin(),t.s=1,t=we(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,X(Ot==2||Ot==4?t.neg():t,r,e,!0)):new n(NaN)};O.times=O.mul=function(r){var e,t,n,i,o,s,a,u,c,l=this,m=l.constructor,p=l.d,d=(r=new m(r)).d;if(r.s*=l.s,!p||!p[0]||!d||!d[0])return new m(!r.s||p&&!p[0]&&!d||d&&!d[0]&&!p?NaN:!p||!d?r.s/0:r.s*0);for(t=Ue(l.e/H)+Ue(r.e/H),u=p.length,c=d.length,u<c&&(o=p,p=d,d=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,i=u+n;i>n;)a=o[i]+d[n]*p[i-n-1]+e,o[i--]=a%bt|0,e=a/bt|0;o[i]=(o[i]+e)%bt|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),r.d=o,r.e=Mr(o,t),J?X(r,m.precision,m.rounding):r};O.toBinary=function(r,e){return Oi(this,2,r,e)};O.toDecimalPlaces=O.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(tt(r,0,Gt),e===void 0?e=n.rounding:tt(e,0,8),X(t,r+t.e+1,e))};O.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=ht(n,!0):(tt(r,0,Gt),e===void 0?e=i.rounding:tt(e,0,8),n=X(new i(n),r+1,e),t=ht(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};O.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=ht(i):(tt(r,0,Gt),e===void 0?e=o.rounding:tt(e,0,8),n=X(new o(i),r+i.e+1,e),t=ht(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};O.toFraction=function(r){var e,t,n,i,o,s,a,u,c,l,m,p,d=this,y=d.d,f=d.constructor;if(!y)return new f(d);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=Ks(y)-d.e-1,s=o%H,e.d[0]=Oe(10,s<0?H+s:s),r==null)r=o>0?e:c;else{if(a=new f(r),!a.isInt()||a.lt(c))throw Error(Ut+a);r=a.gt(e)?o>0?e:c:a}for(J=!1,a=new f(Fe(y)),l=f.precision,f.precision=o=y.length*H*2;m=we(a,e,0,1,1),i=t.plus(m.times(n)),i.cmp(r)!=1;)t=n,n=i,i=c,c=u.plus(m.times(i)),u=i,i=e,e=a.minus(m.times(i)),a=i;return i=we(r.minus(t),n,0,1,1),u=u.plus(i.times(c)),t=t.plus(i.times(n)),u.s=c.s=d.s,p=we(c,n,o,1).minus(d).abs().cmp(we(u,t,o,1).minus(d).abs())<1?[c,n]:[u,t],f.precision=l,J=!0,p};O.toHexadecimal=O.toHex=function(r,e){return Oi(this,16,r,e)};O.toNearest=function(r,e){var t=this,n=t.constructor;if(t=new n(t),r==null){if(!t.d)return t;r=new n(1),e=n.rounding}else{if(r=new n(r),e===void 0?e=n.rounding:tt(e,0,8),!t.d)return r.s?t:r;if(!r.d)return r.s&&(r.s=t.s),r}return r.d[0]?(J=!1,t=we(t,r,0,e,1).times(r),J=!0,X(t)):(r.s=t.s,t=r),t};O.toNumber=function(){return+this};O.toOctal=function(r,e){return Oi(this,8,r,e)};O.toPower=O.pow=function(r){var e,t,n,i,o,s,a=this,u=a.constructor,c=+(r=new u(r));if(!a.d||!r.d||!a.d[0]||!r.d[0])return new u(Oe(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,r.eq(1))return X(a,n,o);if(e=Ue(r.e/H),e>=r.d.length-1&&(t=c<0?-c:c)<=uc)return i=Cs(u,a,t,n),r.s<0?new u(1).div(i):X(i,n,o);if(s=a.s,s<0){if(e<r.d.length-1)return new u(NaN);if((r.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=Oe(+a,c),e=t==0||!isFinite(t)?Ue(c*(Math.log("0."+Fe(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):(J=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),i=Ri(r.times(qt(a,n+t)),n),i.d&&(i=X(i,n+5,1),_n(i.d,n,o)&&(e=n+10,i=X(Ri(r.times(qt(a,e+t)),e),e+5,1),+Fe(i.d).slice(n+1,n+15)+1==1e14&&(i=X(i,n+1,0)))),i.s=s,J=!0,u.rounding=o,X(i,n,o))};O.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=ht(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(tt(r,1,Gt),e===void 0?e=i.rounding:tt(e,0,8),n=X(new i(n),r,e),t=ht(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};O.toSignificantDigits=O.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(tt(r,1,Gt),e===void 0?e=n.rounding:tt(e,0,8)),X(new n(t),r,e)};O.toString=function(){var r=this,e=r.constructor,t=ht(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};O.truncated=O.trunc=function(){return X(new this.constructor(this),this.e+1,1)};O.valueOf=O.toJSON=function(){var r=this,e=r.constructor,t=ht(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function Fe(r){var e,t,n,i=r.length-1,o="",s=r[0];if(i>0){for(o+=s,e=1;e<i;e++)n=r[e]+"",t=H-n.length,t&&(o+=Dt(t)),o+=n;s=r[e],n=s+"",t=H-n.length,t&&(o+=Dt(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function tt(r,e,t){if(r!==~~r||r<e||r>t)throw Error(Ut+r)}function _n(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=H,i=0):(i=Math.ceil((e+1)/H),e%=H),o=Oe(10,H-e),a=r[i]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(r[i+1]/o/100|0)==Oe(10,e-2)-1||(a==o/2||a==0)&&(r[i+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(r[i+1]/o/1e3|0)==Oe(10,e-3)-1,s}function Cr(r,e,t){for(var n,i=[0],o,s=0,a=r.length;s<a;){for(o=i.length;o--;)i[o]*=e;for(i[0]+=Si.indexOf(r.charAt(s++)),n=0;n<i.length;n++)i[n]>t-1&&(i[n+1]===void 0&&(i[n+1]=0),i[n+1]+=i[n]/t|0,i[n]%=t)}return i.reverse()}function lc(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/_r(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=wn(r,1,e.times(i),new r(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return r.precision-=t,e}var we=function(){function r(n,i,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*i+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,i,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=i[a]){u=n[a]>i[a]?1:-1;break}return u}function t(n,i,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<i[o]?1:0,n[o]=a*s+n[o]-i[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,i,o,s,a,u){var c,l,m,p,d,y,f,b,g,k,A,h,T,I,B,x,R,N,E,Q,W=n.constructor,j=n.s==i.s?1:-1,ee=n.d,se=i.d;if(!ee||!ee[0]||!se||!se[0])return new W(!n.s||!i.s||(ee?se&&ee[0]==se[0]:!se)?NaN:ee&&ee[0]==0||!se?j*0:j/0);for(u?(d=1,l=n.e-i.e):(u=bt,d=H,l=Ue(n.e/d)-Ue(i.e/d)),E=se.length,R=ee.length,g=new W(j),k=g.d=[],m=0;se[m]==(ee[m]||0);m++);if(se[m]>(ee[m]||0)&&l--,o==null?(I=o=W.precision,s=W.rounding):a?I=o+(n.e-i.e)+1:I=o,I<0)k.push(1),y=!0;else{if(I=I/d+2|0,m=0,E==1){for(p=0,se=se[0],I++;(m<R||p)&&I--;m++)B=p*u+(ee[m]||0),k[m]=B/se|0,p=B%se|0;y=p||m<R}else{for(p=u/(se[0]+1)|0,p>1&&(se=r(se,p,u),ee=r(ee,p,u),E=se.length,R=ee.length),x=E,A=ee.slice(0,E),h=A.length;h<E;)A[h++]=0;Q=se.slice(),Q.unshift(0),N=se[0],se[1]>=u/2&&++N;do p=0,c=e(se,A,E,h),c<0?(T=A[0],E!=h&&(T=T*u+(A[1]||0)),p=T/N|0,p>1?(p>=u&&(p=u-1),f=r(se,p,u),b=f.length,h=A.length,c=e(f,A,b,h),c==1&&(p--,t(f,E<b?Q:se,b,u))):(p==0&&(c=p=1),f=se.slice()),b=f.length,b<h&&f.unshift(0),t(A,f,h,u),c==-1&&(h=A.length,c=e(se,A,E,h),c<1&&(p++,t(A,E<h?Q:se,h,u))),h=A.length):c===0&&(p++,A=[0]),k[m++]=p,c&&A[0]?A[h++]=ee[x]||0:(A=[ee[x]],h=1);while((x++<R||A[0]!==void 0)&&I--);y=A[0]!==void 0}k[0]||k.shift()}if(d==1)g.e=l,Ts=y;else{for(m=1,p=k[0];p>=10;p/=10)m++;g.e=m+l*d-1,X(g,a?o+g.e+1:o,s,y)}return g}}();function X(r,e,t,n){var i,o,s,a,u,c,l,m,p,d=r.constructor;e:if(e!=null){if(m=r.d,!m)return r;for(i=1,a=m[0];a>=10;a/=10)i++;if(o=e-i,o<0)o+=H,s=e,l=m[p=0],u=l/Oe(10,i-s-1)%10|0;else if(p=Math.ceil((o+1)/H),a=m.length,p>=a)if(n){for(;a++<=p;)m.push(0);l=u=0,i=1,o%=H,s=o-H+1}else break e;else{for(l=a=m[p],i=1;a>=10;a/=10)i++;o%=H,s=o-H+i,u=s<0?0:l/Oe(10,i-s-1)%10|0}if(n=n||e<0||m[p+1]!==void 0||(s<0?l:l%Oe(10,i-s-1)),c=t<4?(u||n)&&(t==0||t==(r.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/Oe(10,i-s):0:m[p-1])%10&1||t==(r.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=r.e+1,m[0]=Oe(10,(H-e%H)%H),r.e=-e||0):m[0]=r.e=0,r;if(o==0?(m.length=p,a=1,p--):(m.length=p+1,a=Oe(10,H-o),m[p]=s>0?(l/Oe(10,i-s)%Oe(10,s)|0)*a:0),c)for(;;)if(p==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(r.e++,m[0]==bt&&(m[0]=1));break}else{if(m[p]+=a,m[p]!=bt)break;m[p--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return J&&(r.e>d.maxE?(r.d=null,r.e=NaN):r.e<d.minE&&(r.e=0,r.d=[0])),r}function ht(r,e,t){if(!r.isFinite())return Ls(r);var n,i=r.e,o=Fe(r.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+Dt(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+Dt(-i-1)+o,t&&(n=t-s)>0&&(o+=Dt(n))):i>=s?(o+=Dt(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+Dt(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=Dt(n))),o}function Mr(r,e){var t=r[0];for(e*=H;t>=10;t/=10)e++;return e}function Or(r,e,t){if(e>cc)throw J=!0,t&&(r.precision=t),Error(Is);return X(new r(Rr),e,1,!0)}function yt(r,e,t){if(e>Ci)throw Error(Is);return X(new r(Lr),e,t,!0)}function Ks(r){var e=r.length-1,t=e*H+1;if(e=r[e],e){for(;e%10==0;e/=10)t--;for(e=r[0];e>=10;e/=10)t++}return t}function Dt(r){for(var e="";r--;)e+="0";return e}function Cs(r,e,t,n){var i,o=new r(1),s=Math.ceil(n/H+4);for(J=!1;;){if(t%2&&(o=o.times(e),Ps(o.d,s)&&(i=!0)),t=Ue(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),Ps(e.d,s)}return J=!0,o}function ks(r){return r.d[r.d.length-1]&1}function Rs(r,e,t){for(var n,i=new r(e[0]),o=0;++o<e.length;)if(n=new r(e[o]),n.s)i[t](n)&&(i=n);else{i=n;break}return i}function Ri(r,e){var t,n,i,o,s,a,u,c=0,l=0,m=0,p=r.constructor,d=p.rounding,y=p.precision;if(!r.d||!r.d[0]||r.e>17)return new p(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:0/0);for(e==null?(J=!1,u=y):u=e,a=new p(.03125);r.e>-2;)r=r.times(a),m+=5;for(n=Math.log(Oe(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new p(1),p.precision=u;;){if(o=X(o.times(r),u,1),t=t.times(++l),a=s.plus(we(o,t,u,1)),Fe(a.d).slice(0,u)===Fe(s.d).slice(0,u)){for(i=m;i--;)s=X(s.times(s),u,1);if(e==null)if(c<3&&_n(s.d,u-n,d,c))p.precision=u+=10,t=o=a=new p(1),l=0,c++;else return X(s,p.precision=y,d,J=!0);else return p.precision=y,s}s=a}}function qt(r,e){var t,n,i,o,s,a,u,c,l,m,p,d=1,y=10,f=r,b=f.d,g=f.constructor,k=g.rounding,A=g.precision;if(f.s<0||!b||!b[0]||!f.e&&b[0]==1&&b.length==1)return new g(b&&!b[0]?-1/0:f.s!=1?NaN:b?0:f);if(e==null?(J=!1,l=A):l=e,g.precision=l+=y,t=Fe(b),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(r),t=Fe(f.d),n=t.charAt(0),d++;o=f.e,n>1?(f=new g("0."+t),o++):f=new g(n+"."+t.slice(1))}else return c=Or(g,l+2,A).times(o+""),f=qt(new g(n+"."+t.slice(1)),l-y).plus(c),g.precision=A,e==null?X(f,A,k,J=!0):f;for(m=f,u=s=f=we(f.minus(1),f.plus(1),l,1),p=X(f.times(f),l,1),i=3;;){if(s=X(s.times(p),l,1),c=u.plus(we(s,new g(i),l,1)),Fe(c.d).slice(0,l)===Fe(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(Or(g,l+2,A).times(o+""))),u=we(u,new g(d),l,1),e==null)if(_n(u.d,l-y,k,a))g.precision=l+=y,c=s=f=we(m.minus(1),m.plus(1),l,1),p=X(f.times(f),l,1),i=a=1;else return X(u,g.precision=A,k,J=!0);else return g.precision=A,u;u=c,i+=2}}function Ls(r){return String(r.s*r.s/0)}function Li(r,e){var t,n,i;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(i=e.length;e.charCodeAt(i-1)===48;--i);if(e=e.slice(n,i),e){if(i-=n,r.e=t=t-n-1,r.d=[],n=(t+1)%H,t<0&&(n+=H),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=H;n<i;)r.d.push(+e.slice(n,n+=H));e=e.slice(n),n=H-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),J&&(r.e>r.constructor.maxE?(r.d=null,r.e=NaN):r.e<r.constructor.minE&&(r.e=0,r.d=[0]))}else r.e=0,r.d=[0];return r}function mc(r,e){var t,n,i,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Ss.test(e))return Li(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(sc.test(e))t=16,e=e.toLowerCase();else if(oc.test(e))t=2;else if(ac.test(e))t=8;else throw Error(Ut+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=r.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,i=Cs(n,new n(t),o,o*2)),c=Cr(e,t,bt),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(r.s*0):(r.e=Mr(c,l),r.d=c,J=!1,s&&(r=we(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?Oe(2,u):Vn.pow(2,u))),J=!0,r)}function dc(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:wn(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/_r(5,t)),e=wn(r,2,e,e);for(var i,o=new r(5),s=new r(16),a=new r(20);t--;)i=e.times(e),e=e.times(o.plus(i.times(s.times(i).minus(a))));return e}function wn(r,e,t,n,i){var o,s,a,u,c=1,l=r.precision,m=Math.ceil(l/H);for(J=!1,u=t.times(t),a=new r(n);;){if(s=we(a.times(u),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=we(s.times(u),new r(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return J=!0,s.d.length=m+1,s}function _r(r,e){for(var t=r;--e;)t*=r;return t}function Os(r,e){var t,n=e.s<0,i=yt(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return Ot=n?4:1,e;if(t=e.divToInt(i),t.isZero())Ot=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return Ot=ks(t)?n?2:3:n?4:1,e;Ot=ks(t)?n?1:4:n?3:2}return e.minus(i).abs()}function Oi(r,e,t,n){var i,o,s,a,u,c,l,m,p,d=r.constructor,y=t!==void 0;if(y?(tt(t,1,Gt),n===void 0?n=d.rounding:tt(n,0,8)):(t=d.precision,n=d.rounding),!r.isFinite())l=Ls(r);else{for(l=ht(r),s=l.indexOf("."),y?(i=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):i=e,s>=0&&(l=l.replace(".",""),p=new d(1),p.e=l.length-s,p.d=Cr(ht(p),10,i),p.e=p.d.length),m=Cr(l,10,i),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=y?"0p+0":"0";else{if(s<0?o--:(r=new d(r),r.d=m,r.e=o,r=we(r,p,t,n,0,i),m=r.d,o=r.e,c=Ts),s=m[t],a=i/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(r.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(r.s<0?8:7)),m.length=t,c)for(;++m[--t]>i-1;)m[t]=0,t||(++o,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=Si.charAt(m[s]);if(y){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)l+="0";for(m=Cr(l,i,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=Si.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>u)for(o-=u;o--;)l+="0";else o<u&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return r.s<0?"-"+l:l}function Ps(r,e){if(r.length>e)return r.length=e,!0}function pc(r){return new this(r).abs()}function fc(r){return new this(r).acos()}function yc(r){return new this(r).acosh()}function bc(r,e){return new this(r).plus(e)}function gc(r){return new this(r).asin()}function wc(r){return new this(r).asinh()}function Ac(r){return new this(r).atan()}function kc(r){return new this(r).atanh()}function Pc(r,e){r=new this(r),e=new this(e);var t,n=this.precision,i=this.rounding,o=n+4;return!r.s||!e.s?t=new this(NaN):!r.d&&!e.d?(t=yt(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?yt(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=yt(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(we(r,e,o,1)),e=yt(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(we(r,e,o,1)),t}function hc(r){return new this(r).cbrt()}function Tc(r){return X(r=new this(r),r.e+1,2)}function Ic(r,e,t){return new this(r).clamp(e,t)}function xc(r){if(!r||typeof r!="object")throw Error(Nr+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,Gt,"rounding",0,8,"toExpNeg",-gn,0,"toExpPos",0,gn,"maxE",0,gn,"minE",-gn,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=Ki[t]),(n=r[t])!==void 0)if(Ue(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(Ut+t+": "+n);if(t="crypto",i&&(this[t]=Ki[t]),(n=r[t])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[t]=!0;else throw Error(xs);else this[t]=!1;else throw Error(Ut+t+": "+n);return this}function Bc(r){return new this(r).cos()}function Sc(r){return new this(r).cosh()}function Ns(r){var e,t,n;function i(o){var s,a,u,c=this;if(!(c instanceof i))return new i(o);if(c.constructor=i,hs(o)){c.s=o.s,J?!o.d||o.e>i.maxE?(c.e=NaN,c.d=null):o.e<i.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;J?s>i.maxE?(c.e=NaN,c.d=null):s<i.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return Li(c,o.toString())}else if(u!=="string")throw Error(Ut+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),Ss.test(o)?Li(c,o):mc(c,o)}if(i.prototype=O,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.EUCLID=9,i.config=i.set=xc,i.clone=Ns,i.isDecimal=hs,i.abs=pc,i.acos=fc,i.acosh=yc,i.add=bc,i.asin=gc,i.asinh=wc,i.atan=Ac,i.atanh=kc,i.atan2=Pc,i.cbrt=hc,i.ceil=Tc,i.clamp=Ic,i.cos=Bc,i.cosh=Sc,i.div=Kc,i.exp=Cc,i.floor=Rc,i.hypot=Lc,i.ln=Oc,i.log=Nc,i.log10=_c,i.log2=Mc,i.max=Vc,i.min=Ec,i.mod=Fc,i.mul=vc,i.pow=Wc,i.random=Dc,i.round=qc,i.sign=Uc,i.sin=Gc,i.sinh=Xc,i.sqrt=zc,i.sub=Yc,i.sum=Qc,i.tan=Hc,i.tanh=jc,i.trunc=Zc,r===void 0&&(r={}),r&&r.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)r.hasOwnProperty(t=n[e++])||(r[t]=this[t]);return i.config(r),i}function Kc(r,e){return new this(r).div(e)}function Cc(r){return new this(r).exp()}function Rc(r){return X(r=new this(r),r.e+1,3)}function Lc(){var r,e,t=new this(0);for(J=!1,r=0;r<arguments.length;)if(e=new this(arguments[r++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return J=!0,new this(1/0);t=e}return J=!0,t.sqrt()}function hs(r){return r instanceof Vn||r&&r.toStringTag===Bs||!1}function Oc(r){return new this(r).ln()}function Nc(r,e){return new this(r).log(e)}function Mc(r){return new this(r).log(2)}function _c(r){return new this(r).log(10)}function Vc(){return Rs(this,arguments,"lt")}function Ec(){return Rs(this,arguments,"gt")}function Fc(r,e){return new this(r).mod(e)}function vc(r,e){return new this(r).mul(e)}function Wc(r,e){return new this(r).pow(e)}function Dc(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:tt(r,1,Gt),n=Math.ceil(r/H),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)i=e[o],i>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=i%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)i=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(i%1e7),o+=4);o=n/4}else throw Error(xs);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=H,n&&r&&(i=Oe(10,H-r),a[o]=(n/i|0)*i);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=H)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<H&&(t-=H-n)}return s.e=t,s.d=a,s}function qc(r){return X(r=new this(r),r.e+1,this.rounding)}function Uc(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function Gc(r){return new this(r).sin()}function Xc(r){return new this(r).sinh()}function zc(r){return new this(r).sqrt()}function Yc(r,e){return new this(r).sub(e)}function Qc(){var r=0,e=arguments,t=new this(e[r]);for(J=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return J=!0,X(t,this.precision,this.rounding)}function Hc(r){return new this(r).tan()}function jc(r){return new this(r).tanh()}function Zc(r){return X(r=new this(r),r.e+1,1)}O[Symbol.for("nodejs.util.inspect.custom")]=O.toString;O[Symbol.toStringTag]="Decimal";var Vn=O.constructor=Ns(Ki);Rr=new Vn(Rr);Lr=new Vn(Lr);var F=Vn;import{PublicKey as Fi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as $c}from"@solana/spl-token";import{PublicKey as Ie,SystemProgram as Ms,SYSVAR_RENT_PUBKEY as Jc}from"@solana/web3.js";function P({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Ni=[P({pubkey:$c,isWritable:!1}),P({pubkey:Ms.programId,isWritable:!1}),P({pubkey:Jc,isWritable:!1})];function Mi({publicKey:r,transformSol:e}){let t=_i(r.toString());if(t instanceof Ie)return e&&t.equals(Ne)?te:t;if(e&&t.toString()===Ne.toBase58())return te;if(typeof t=="string"){if(t===Ie.default.toBase58())return Ie.default;try{return new Ie(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function _i(r){try{return new Ie(r)}catch{return r}}var An=new Ie("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),_s=new Ie("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),nt=new Ie("SysvarRent111111111111111111111111111111111"),Vi=new Ie("SysvarC1ock11111111111111111111111111111111"),kn=new Ie("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Vr=new Ie("Sysvar1nstructions1111111111111111111111111"),Vs=Ms.programId,Jp=new Ie("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),ef=new Ie("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),tf=new Ie("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),nf=new Ie("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),rf=new Ie("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),of=new Ie("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),sf=new Ie("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),af=new Ie("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),uf=new Ie("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),cf=new Ie("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),lf=new Ie("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),te=new Ie("So11111111111111111111111111111111111111112"),Ne=Ie.default;function Ei(r){return Mi({publicKey:r,transformSol:!0})}import{PublicKey as el}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Es}from"@solana/spl-token";var Tt={chainId:101,address:el.default.toBase58(),programId:Es.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Me={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Es.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 vi=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===Ne.toBase58()||e instanceof Fi&&Ne.equals(e)){this.decimals=Me.decimals,this.symbol=Me.symbol,this.name=Me.name,this.mint=new Fi(Me.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=i||e.toString().substring(0,6),this.mint=o?Fi.default:Mi({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},de=vi;de.WSOL=new vi(D(M({},Me),{mint:Me.address}));import Fr from"big.js";import rl from"bn.js";import il from"decimal.js-light";import tl from"toformat";var nl=tl,En=nl;var Er=ae("module/fraction"),Wi=En(Fr),Fn=En(il),ol={[0]:Fn.ROUND_DOWN,[1]:Fn.ROUND_HALF_UP,[2]:Fn.ROUND_UP},sl={[0]:Fr.roundDown,[1]:Fr.roundHalfUp,[2]:Fr.roundUp},ne=class{constructor(e,t=new rl(1)){this.numerator=U(e),this.denominator=U(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new ne(this.denominator,this.numerator)}add(e){let t=e instanceof ne?e:new ne(U(e));return this.denominator.eq(t.denominator)?new ne(this.numerator.add(t.numerator),this.denominator):new ne(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof ne?e:new ne(U(e));return this.denominator.eq(t.denominator)?new ne(this.numerator.sub(t.numerator),this.denominator):new ne(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof ne?e:new ne(U(e));return new ne(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof ne?e:new ne(U(e));return new ne(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Er.logWithError(`${e} is not an integer.`),e<=0&&Er.logWithError(`${e} is not positive.`),Fn.set({precision:e+1,rounding:ol[n]});let i=new Fn(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return i.toFormat(i.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||Er.logWithError(`${e} is not an integer.`),e<0&&Er.logWithError(`${e} is negative.`),Wi.DP=e,Wi.RM=sl[n]||1,new Wi(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var al=ae("Raydium_price"),Ge=class extends ne{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new ne(qi(n.decimals),qi(i.decimals))}get raw(){return new ne(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Ge({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&al.logWithError("mul token not equals");let n=super.mul(t);return new Ge({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,i){return this.adjusted.toSignificant(t,n,i)}toFixed(t=this.quoteToken.decimals,n,i){return this.adjusted.toFixed(t,n,i)}};var Ui=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},vn=Ui;vn.SOL=new Ui(Tt);function vf(r,e){return r instanceof de&&e instanceof de?r.equals(e):r instanceof de||e instanceof de?!1:r===e}import ul from"bn.js";var Fs=new ne(new ul(100)),ve=class extends ne{toSignificant(e=5,t,n){return this.mul(Fs).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Fs).toFixed(e,t,n)}};function Ke(r){if(r instanceof ve)return new ne(r.numerator,r.denominator);if(r instanceof Ge)return r.adjusted;if(r instanceof he)try{return Ke(r.toExact())}catch{return new ne(Se)}if(r instanceof ne)return r;let e=String(r),t=tn(e);return new ne(t.numerator,t.denominator)}function Yf(r){var n;if(r instanceof ve)return{fr:new ne(r.numerator,r.denominator)};if(r instanceof Ge)return{fr:r.adjusted};if(r instanceof he)return{fr:Ke(r.toExact()),decimals:r.token.decimals};if(r instanceof ne)return{fr:r};let e=String(r),t=tn(e);return{fr:new ne(t.numerator,t.denominator),decimals:(n=t.dec)==null?void 0:n.length}}function Qf(r,e){if(r==null||e==null)return!1;let t=Ke(r),n=Ke(e);return t.sub(n).numerator,t.sub(n).numerator.lt(Se)}function cl(r,e){if(r==null||e==null)return!1;let t=Ke(r),n=Ke(e);return t.sub(n).numerator.gt(Se)}function Hf(r,e){if(r==null||e==null)return!1;let t=Ke(r),n=Ke(e);return t.sub(n).numerator.lte(Se)}function jf(r,e){if(r==null||e==null)return!1;let t=Ke(r),n=Ke(e);return t.sub(n).numerator.gte(Se)}function ll(r,e){if(r==null||e==null)return!1;let t=Ke(r),n=Ke(e);return t.sub(n).numerator.eq(Se)}function Zf(r,e){if(r==null||e==null)return;let t=Ke(r),n=Ke(e);try{return t.div(n)}catch{return t}}function $f(r,e){if(r==null||e==null)return;let t=Ke(r),n=Ke(e);return t.sub(n)}function Jf(r){return r==null?!1:!ll(r,0)}function ey(r,e){return cl(e,r)?e:r}function Gi(r,e){if(r==null||e==null)return;let t=Ke(r),n=Ke(e);return t.mul(n)}function ty(r,e){if(r==null||e==null)return;let t=Ke(r),n=Ke(e);return t.add(n)}var Di=(n=>(n[n.ROUND_DOWN=0]="ROUND_DOWN",n[n.ROUND_HALF_UP=1]="ROUND_HALF_UP",n[n.ROUND_UP=2]="ROUND_UP",n))(Di||{}),Se=new ke(0),qs=new ke(1),fy=new ke(2),yy=new ke(3),by=new ke(5),nn=new ke(10),gy=new ke(100),wy=new ke(1e3),Ay=new ke(1e4),vs=9007199254740991;function U(r){let e=ae("Raydium_parseBigNumberish");if(r instanceof ke)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new ke(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=vs||r<=-vs)&&e.logWithError(`BigNumberish number overflow: ${r}`),new ke(String(r))):typeof r=="bigint"?new ke(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new ke(0))}function qi(r){return nn.pow(U(r))}function tn(r){var a;if(r===void 0)return{denominator:"1",numerator:"0"};if(r instanceof ke)return{numerator:r.toString(),denominator:"1"};if(r instanceof ne)return{denominator:r.denominator.toString(),numerator:r.numerator.toString()};let e=String(r),[,t="",n="",i=""]=(a=e.replace(",","").match(/(-?)(\d*)\.?(\d*)/))!=null?a:[],o="1"+"0".repeat(i.length),s=t+(n==="0"?"":n)+i||"0";return{denominator:o,numerator:s,sign:t,int:n,dec:i}}function vr(r,e){let t=r.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}function ml(r){var n;let[,e="",t=""]=(n=r.toFixed(2).match(/(-?)(\d*)\.?(\d*)/))!=null?n:[];return`${e}${t}`}function dl(r,e=0){return r instanceof ke?r:new ke(ml(Us(r).mul(nn.pow(new ke(String(e))))))}function Us(r){if(r instanceof ve)return new ne(r.numerator,r.denominator);if(r instanceof Ge)return r.adjusted;if(r instanceof he)try{return Us(r.toExact())}catch{return new ne(Se)}if(r instanceof ne)return r;let e=String(r),t=tn(e);return new ne(t.numerator,t.denominator)}function ky(r,e){let{numerator:t,denominator:n}=tn(r);return new ve(new ke(t),new ke(n).mul(e!=null&&e.alreadyDecimaled?new ke(100):new ke(1)))}function Py(r){let{token:e,numberPrice:t,decimalDone:n}=r,i=new de({mint:"",decimals:6,symbol:"usd",name:"usd",skipMint:!0}),{numerator:o,denominator:s}=tn(t),a=n?new ke(o).mul(nn.pow(new ke(e.decimals))):o,u=new ke(s).mul(nn.pow(new ke(i.decimals)));return new Ge({baseToken:i,denominator:u.toString(),quoteToken:new de(D(M({},e),{skipMint:!0,mint:""})),numerator:a.toString()})}function Ws(r){let e=new vn({decimals:6,symbol:"usd",name:"usd"}),t=dl(Gi(r,10**e.decimals));return new rn(e,t)}function hy(r,e){return Ws(!e||!r?0:Gi(r,e))}function pl(r){if(r==null)return;let{numerator:e,denominator:t}=tn(r.toString());return new ne(e,t)}function fl(r){return r instanceof F}function Ds(r){return fl(r)?pl(r):Array.isArray(r)?r.map(e=>Ds(e)):Xi(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,Ds(t)])):r}var bl=ae("Raydium_amount"),Wr=En(yl);function Gs(r,e){let t="0",n="0";if(r.includes(".")){let i=r.split(".");i.length===2?([t,n]=i,n=n.padEnd(e,"0")):bl.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var he=class extends ne{constructor(t,n,i=!0,o){let s=new Xt(0),a=nn.pow(new Xt(t.decimals));if(i)s=U(n);else{let u=new Xt(0),c=new Xt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Gs(n.toString(),t.decimals);u=U(l),c=U(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=ae(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 he(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new he(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.token.decimals,n,i=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return Wr.DP=this.token.decimals,new Wr(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}},rn=class extends ne{constructor(t,n,i=!0,o){let s=new Xt(0),a=nn.pow(new Xt(t.decimals));if(i)s=U(n);else{let u=new Xt(0),c=new Xt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Gs(n.toString(),t.decimals);u=U(l),c=U(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=ae(o||"TokenAmount"),this.currency=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.currency.equals(t.currency)||this.logger.logWithError("gt currency not equals"),this.raw.gt(t.raw)}lt(t){return this.currency.equals(t.currency)||this.logger.logWithError("lt currency not equals"),this.raw.lt(t.raw)}add(t){return this.currency.equals(t.currency)||this.logger.logWithError("add currency not equals"),new rn(this.currency,this.raw.add(t.raw))}sub(t){return this.currency.equals(t.currency)||this.logger.logWithError("sub currency not equals"),new rn(this.currency,this.raw.sub(t.raw))}toSignificant(t=this.currency.decimals,n,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.currency.decimals,n,i=0){return t>this.currency.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return Wr.DP=this.currency.decimals,new Wr(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};async function Xs(r){new Promise(e=>setTimeout(e,r))}function zy(){return new Date().getTime()}function Xi(r){return typeof r=="object"&&r!==null&&![de,he,gl,ne,wl,Ge,ve].some(e=>typeof e=="object"&&r instanceof e)}function fe(r){return typeof r=="string"?_i(r):Array.isArray(r)?r.map(e=>fe(e)):Xi(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,fe(t)])):r}import{PublicKey as Un,sendAndConfirmTransaction as Hi,Transaction as Gn,TransactionMessage as Xn,VersionedTransaction as zn}from"@solana/web3.js";import Sl from"axios";var Wn=(t=>(t[t.V0=0]="V0",t[t.LEGACY=1]="LEGACY",t))(Wn||{}),V={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 Ys,ComputeBudgetProgram as zs,Transaction as qr,TransactionMessage as Al,Keypair as Qs,VersionedTransaction as Hs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as kl}from"@solana/spl-token";var Nt=ae("Raydium_txUtil"),js=1644;function Ur(r){let e=[],t=[];return r.microLamports&&(e.push(zs.setComputeUnitPrice({microLamports:r.microLamports})),t.push(V.SetComputeUnitPrice)),r.units&&(e.push(zs.setComputeUnitLimit({units:r.units})),t.push(V.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Pn(r){var e,t;try{return((t=await((e=r.getLatestBlockhash)==null?void 0:e.call(r)))==null?void 0:t.blockhash)||(await r.getRecentBlockhash()).blockhash}catch{return(await r.getRecentBlockhash()).blockhash}}function Gr(r,e){r.length<1&&Nt.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Nt.logWithError(`no signers provided:, ${e.toString()}`);let t=new qr;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<js}catch{return!1}}async function Zs(r,e,t,n=!0){let i=new Ys("RaydiumSimuLateTransaction11111111111111111"),o=[],s=new qr;s.feePayer=i;for(let c of e)Gr([...s.instructions,c],[i])||(o.push(s),s=new qr,s.feePayer=i),s.add(c);s.instructions.length>0&&o.push(s);let a=[];try{if(a=await Pl(r,o,n),a.find(c=>c.err!==null))throw Error("rpc simulateTransaction error")}catch(c){c instanceof Error&&Nt.logWithError("failed to simulate for instructions","RPC_ERROR",{message:c.message})}let u=[];for(let c of a)if(Nt.debug("simulate result:",c),c.logs){let l=c.logs.filter(m=>m&&m.includes(t));Nt.debug("filteredLog:",u),l.length||Nt.logWithError("simulate log not match keyword","keyword",t),u.push(...l)}return u}function $s(r,e){let t=r.match(/{["\w:,]+}/g);return!t||t.length!==1?Nt.logWithError(`simulate log fail to match json, keyword: ${e}`):t[0]}function Mt(r,e){let n=new RegExp(`"${e}":(\\d+)`,"g").exec(r);return!n||n.length!==2?Nt.logWithError(`simulate log fail to match key", key: ${e}`):n[1]}function oe(r,e){let[t,n]=Ys.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}async function Pl(r,e,t){let n=[];if(t){let i=await r.getLatestBlockhash(),o=[];for(let c of e){c.recentBlockhash=i.blockhash,c.lastValidBlockHeight=i.lastValidBlockHeight;let m=c._compile().serialize(),d=c._serialize(m).toString("base64");o.push(d)}let s=o.map(c=>{let l=r._buildArgs([c],void 0,"base64");return{methodName:"simulateTransaction",args:l}}),a=[],u=20;for(let c=0;c<Math.ceil(s.length/u);c++)a.push(s.slice(c*u,(c+1)*u));n=await(await Promise.all(a.map(async c=>(await r._rpcBatchRequest(c)).map(l=>l.result.value)))).flat()}else try{n=await Promise.all(e.map(async i=>await(await r.simulateTransaction(i)).value))}catch(i){i instanceof Error&&Nt.logWithError("failed to get info for multiple accounts","RPC_ERROR",{message:i.message})}return n}function Dn({instructions:r,payer:e,signers:t}){return Gr(r,[e,...t])}function qn({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Qs.generate().publicKey.toString()}){let o=new Al({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Hs(o).serialize()).toString("base64").length<js}catch{return!1}}var Dr={time:0,data:void 0};async function rb(r){if(!Dr.data||(Date.now()-Dr.time)/1e3>30){let e=await r.getEpochInfo();return Dr={time:Date.now(),data:e},e}else return Dr.data}var hl=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r);function on(r){let e=[];return r.forEach(t=>{t instanceof qr&&(t.recentBlockhash||(t.recentBlockhash=kl.toBase58()),t.feePayer||(t.feePayer=Qs.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof Hs&&(n=hl(n));let i=n.toString("base64");e.push(i)}),console.log("simulate tx string:",e),e}import{PublicKey as Js,AddressLookupTableAccount as Xr}from"@solana/web3.js";import{PublicKey as Tl}from"@solana/web3.js";import{getTransferFeeConfig as Il,unpackMint as xl}from"@solana/spl-token";var zi=ae("Raydium_accountInfo_util");async function It(r,e,t){let{batchRequest:n,commitment:i="confirmed"}=M({batchRequest:!1},t),o=Yi(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let m=r._buildArgs([l.map(p=>p.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=Yi(a,10);s=(await(await Promise.all(u.map(async l=>await r._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&zi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.error.message}`),l.result.value.map(m=>{if(m){let{data:p,executable:d,lamports:y,owner:f,rentEpoch:b}=m;return p.length!==2&&p[1]!=="base64"&&zi.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:d,lamports:y,owner:new Tl(f),rentEpoch:b}}return null})))}else try{s=await Promise.all(o.map(a=>r.getMultipleAccountsInfo(a,i)))}catch(a){a instanceof Error&&zi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function hn(r,e,t){let n=await It(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>D(M({},i),{accountInfo:n[o]}))}var Bl=(n=>(n[n.Uninitialized=0]="Uninitialized",n[n.Mint=1]="Mint",n[n.Account=2]="Account",n))(Bl||{}),db=1;async function pb({connection:r,mints:e}){var i,o;if(e.length===0)return{};let t=await hn(r,e.map(s=>({pubkey:s}))),n={};for(let s of t){let a=xl(s.pubkey,s.accountInfo,(i=s.accountInfo)==null?void 0:i.owner);n[s.pubkey.toString()]=D(M({},a),{feeConfig:(o=Il(a))!=null?o:void 0})}return n}async function Qi({connection:r,address:e}){let t=await It(r,[...new Set(e.map(i=>i.toString()))].map(i=>new Js(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],s=e[i];if(!o)continue;let a=new Xr({key:s,state:Xr.deserialize(o.data)});n[s.toString()]=a,zr[s.toString()]=a}return n}var zr={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Xr({key:new Js("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Xr.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 Yr=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var n;let e=(await Sl.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}=Ur(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:i=[],endInstructionTypes:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...i),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==Un.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(M({},t||{})):this.build(t)}build(e){let t=new Gn;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async n=>{var a;let{recentBlockHash:i,skipPreflight:o=!0}=n||{},s=i!=null?i:await Pn(this.connection);if(t.recentBlockhash=s,this.signers.length&&t.sign(...this.signers),on([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await Hi(this.connection,t,this.signers.find(u=>u.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:o}),signedTx:t};if(this.signAllTransactions){let u=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(u[0].serialize(),{skipPreflight:o}),signedTx:u[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),o=t.filter(c=>c.transaction.instructions.length>0),s=[i,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return{builder:this,transactions:s,signers:a,instructionTypes:u,execute:async c=>{var f;let{sequentially:l,onTxUpdate:m,recentBlockHash:p,skipPreflight:d=!0}=c||{},y=p!=null?p:await Pn(this.connection);if((f=this.owner)!=null&&f.isKeyPair)return{txIds:await await Promise.all(s.map(async(b,g)=>(b.recentBlockhash=y,await Hi(this.connection,b,a[g].find(k=>k.publicKey.equals(this.owner.publicKey))?a[g]:[...a[g],this.owner.signer],{skipPreflight:d})))),signedTxs:s};if(this.signAllTransactions){let b=s.map((k,A)=>(k.recentBlockhash=y,a[A].length&&k.sign(...a[A]),k));on(b);let g=await this.signAllTransactions(b);if(l){let k=0,A=[],h=async()=>{if(!g[k])return;let T=await this.connection.sendRawTransaction(g[k].serialize(),{skipPreflight:d});A.push({txId:T,status:"sent",signedTx:g[k]}),m==null||m([...A]),k++,this.connection.onSignature(T,I=>{let B=A.findIndex(x=>x.txId===T);B>-1&&(A[B].status=I.err?"error":"success"),m==null||m([...A]),I.err||h()},"processed"),this.connection.getSignatureStatus(T)};return await h(),{txIds:A.map(T=>T.txId),signedTxs:g}}else{let k=[];for(let A=0;A<g.length;A+=1){let h=await this.connection.sendRawTransaction(g[A].serialize(),{skipPreflight:d});k.push(h)}return{txIds:k,signedTxs:g}}}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 p=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i}=p,o=Te(p,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=M(M({},this.cluster==="devnet"?{}:zr),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let d of a)s[d]===void 0&&u.push(new Un(d));let c=await Qi({connection:this.connection,address:u});for(let[d,y]of Object.entries(c))s[d]=y;let l=new Xn({payerKey:this.feePayer,recentBlockhash:i?Un.default.toBase58():await Pn(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new zn(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async d=>{var b;let{recentBlockHash:y,skipPreflight:f=!0}=d||{};if(y&&(m.message.recentBlockhash=y),on([m]),(b=this.owner)!=null&&b.isKeyPair){this.signers.find(h=>h.publicKey.equals(this.owner.publicKey))||m.sign([this.owner.signer]);let g=await this.connection.sendTransaction(m,{skipPreflight:f}),{lastValidBlockHeight:k,blockhash:A}=await this.connection.getLatestBlockhash();return await this.connection.confirmTransaction({blockhash:A,lastValidBlockHeight:k,signature:g},"confirmed"),{txId:g,signedTx:m}}if(this.signAllTransactions){let g=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(g[0],{skipPreflight:f}),signedTx:g[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async buildV0MultiTx(e){let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:i}=await this.buildV0(n),o=t.filter(c=>c.builder.instructions.length>0),s=[i,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return s.forEach(async(c,l)=>{c.sign(a[l])}),{builder:this,transactions:s,signers:a,instructionTypes:u,buildProps:n,execute:async c=>{var y;let{sequentially:l,onTxUpdate:m,recentBlockHash:p,skipPreflight:d=!0}=c||{};if(p&&s.forEach(f=>f.message.recentBlockhash=p),on(s),(y=this.owner)!=null&&y.isKeyPair){let{lastValidBlockHeight:f,blockhash:b}=await this.connection.getLatestBlockhash();return s.forEach((g,k)=>{a[k].find(A=>A.publicKey.equals(this.owner.publicKey))||g.sign([this.owner.signer])}),{txIds:await Promise.all(s.map(async g=>{let k=await this.connection.sendTransaction(g,{skipPreflight:d});return await this.connection.confirmTransaction({blockhash:b,lastValidBlockHeight:f,signature:k},"confirmed"),k})),signedTxs:s}}if(this.signAllTransactions){let f=await this.signAllTransactions(s);if(l){let b=0,g=[],k=async()=>{if(!f[b])return;let A=await this.connection.sendTransaction(f[b],{skipPreflight:d});g.push({txId:A,status:"sent",signedTx:f[b]}),m==null||m([...g]),b++,this.connection.onSignature(A,h=>{let T=g.findIndex(I=>I.txId===A);T>-1&&(g[T].status=h.err?"error":"success"),m==null||m([...g]),h.err||k()},"processed"),this.connection.getSignatureStatus(A)};return k(),{txIds:[],signedTxs:f}}else{let b=[];for(let g=0;g<f.length;g+=1){let k=await this.connection.sendTransaction(f[g],{skipPreflight:d});b.push(k)}return{txIds:b,signedTxs:f}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){let c=e||{},{computeBudgetConfig:t}=c,n=Te(c,["computeBudgetConfig"]),i=t?Ur(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,m)=>D(M({},l),{[m.publicKey.toBase58()]:m}),{}),s=[],a=[],u=[];if(this.allInstructions.forEach(l=>{let m=[...u,l],p=t?[...i.instructions,...m]:m,y=[...new Set(m.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(f=>new Un(f));if(u.length<12&&Dn({instructions:p,payer:this.feePayer,signers:y})||Dn({instructions:m,payer:this.feePayer,signers:y}))u.push(l);else{if(u.length===0)throw Error("item ins too big");Dn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:y})?s.push(new Gn().add(...i.instructions,...u)):s.push(new Gn().add(...u)),a.push(Array.from(new Set(u.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat())).map(f=>o[f]).filter(f=>f!==void 0)),u=[l]}}),u.length>0){let m=[...new Set(u.map(p=>p.keys.filter(d=>d.isSigner).map(d=>d.pubkey.toString())).flat()).values()].map(p=>o[p]).filter(p=>p!==void 0);Dn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(p=>p.publicKey)})?s.push(new Gn().add(...i.instructions,...u)):s.push(new Gn().add(...u)),a.push(m)}return s.forEach(l=>l.feePayer=this.feePayer),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async l=>{var b;let{sequentially:m,onTxUpdate:p,recentBlockHash:d,skipPreflight:y=!0}=l||{},f=d!=null?d:await Pn(this.connection);if(s.forEach(async(g,k)=>{g.recentBlockhash=f,a[k].length&&g.sign(...a[k])}),on(s),(b=this.owner)!=null&&b.isKeyPair)return{txIds:await Promise.all(s.map(async(g,k)=>await Hi(this.connection,g,a[k].find(A=>A.publicKey.equals(this.owner.publicKey))?a[k]:[...a[k],this.owner.signer],{skipPreflight:y}))),signedTxs:s};if(this.signAllTransactions){let g=await this.signAllTransactions(s);if(m){let k=0,A=[],h=async()=>{if(!g[k])return;let T=await this.connection.sendRawTransaction(g[k].serialize(),{skipPreflight:y});A.push({txId:T,status:"sent",signedTx:g[k]}),p==null||p([...A]),k++,this.connection.onSignature(T,I=>{let B=A.findIndex(x=>x.txId===T);B>-1&&(A[B].status=I.err?"error":"success"),p==null||p([...A]),I.err||h()},"processed"),this.connection.getSignatureStatus(T)};return await h(),{txIds:A.map(T=>T.txId),signedTxs:g}}else{let k=[];for(let A=0;A<g.length;A+=1){let h=await this.connection.sendRawTransaction(g[A].serialize(),{skipPreflight:y});k.push(h)}return{txIds:k,signedTxs:g}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){let b=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:i=[]}=b,o=Te(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=M(M({},this.cluster==="devnet"?{}:zr),n),a=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let g of a)s[g]===void 0&&u.push(new Un(g));let c=await Qi({connection:this.connection,address:u});for(let[g,k]of Object.entries(c))s[g]=k;let l=t?Ur(t):{instructions:[],instructionTypes:[]},m=await Pn(this.connection),p=this.signers.reduce((g,k)=>D(M({},g),{[k.publicKey.toBase58()]:k}),{}),d=[],y=[],f=[];if(this.allInstructions.forEach(g=>{let k=[...f,g],A=t?[...l.instructions,...k]:k;if(f.length<12&&qn({instructions:A,payer:this.feePayer,lookupTableAddressAccount:s})||qn({instructions:k,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(g);else{if(f.length===0)throw Error("item ins too big");let h={};for(let T of[...new Set(a)])s[T]!==void 0&&(h[T]=s[T]);if(t&&qn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let T=new Xn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));d.push(new zn(T))}else{let T=new Xn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));d.push(new zn(T))}y.push(Array.from(new Set(f.map(T=>T.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat())).map(T=>p[T]).filter(T=>T!==void 0)),f=[g]}}),f.length>0){let k=[...new Set(f.map(A=>A.keys.filter(h=>h.isSigner).map(h=>h.pubkey.toString())).flat()).values()].map(A=>p[A]).filter(A=>A!==void 0);if(t&&qn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let A=new Xn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));d.push(new zn(A))}else{let A=new Xn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));d.push(new zn(A))}y.push(k)}return{builder:this,transactions:d,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async g=>{var I;let{sequentially:k,onTxUpdate:A,recentBlockHash:h,skipPreflight:T=!0}=g||{};if(d.map(async(B,x)=>{y[x].length&&B.sign(y[x]),h&&(B.message.recentBlockhash=h)}),on(d),(I=this.owner)!=null&&I.isKeyPair){let{lastValidBlockHeight:B,blockhash:x}=await this.connection.getLatestBlockhash();return d.forEach((R,N)=>{y[N].find(E=>E.publicKey.equals(this.owner.publicKey))||R.sign([this.owner.signer])}),{txIds:await Promise.all(d.map(async R=>{let N=await this.connection.sendTransaction(R,{skipPreflight:T});return await this.connection.confirmTransaction({blockhash:x,lastValidBlockHeight:B,signature:N},"confirmed"),N})),signedTxs:d}}if(this.signAllTransactions){let B=await this.signAllTransactions(d);if(k){let x=0,R=[],N=async()=>{if(!B[x])return;let E=await this.connection.sendTransaction(B[x],{skipPreflight:T});R.push({txId:E,status:"sent",signedTx:B[x]}),A==null||A([...R]),x++,this.connection.onSignature(E,Q=>{let W=R.findIndex(j=>j.txId===E);W>-1&&(R[W].status=Q.err?"error":"success"),A==null||A([...R]),Q.err||N()},"processed"),this.connection.getSignatureStatus(E)};return N(),{txIds:[],signedTxs:B}}else{let x=[];for(let R=0;R<B.length;R+=1){let N=await this.connection.sendTransaction(B[R],{skipPreflight:T});x.push(N)}return{txIds:x,signedTxs:B}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};var gt=class{constructor(e){this._owner=e}get publicKey(){return gt.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return gt.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return gt.isKeyPair(this._owner)}get isPublicKey(){return gt.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!gt.isKeyPair(e)}};function Yi(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}function Rb(r,...e){return r.filter(t=>e.every(n=>n.includes(t)))}function Lb(r,...e){return r.filter(t=>e.every(n=>!n.includes(t)))}function Ob(r){return[...new Set(r)]}var ea=r=>typeof r=="number",ta=r=>r?new Date(r):new Date,Kl=r=>ta(r).getTime();function na(r,e,t){let n=ea(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()<=n}function ra(r,e,t){let n=ea(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()>n}function Mb(r,e){let n=Kl(r)+(e.days?e.days*24*60*60*1e3:0)+(e.hours?e.hours*60*60*1e3:0)+(e.minutes?e.minutes*60*1e3:0)+(e.seconds?e.seconds*1e3:0)+(e.milliseconds?e.milliseconds:0);return ta(n)}import{PublicKey as Re}from"@solana/web3.js";var ji=new Re("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Zi=new Re("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Tn=new Re("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Cl=new Re("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Rl=new Re("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Qr=new Re("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),$i=new Re("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Ll=new Re("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Ol=new Re("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Nl=new Re("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Ml=new Re("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),_l=new Re("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Vl=new Re("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),El=new Re("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Fl=new Re("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),vl=new Re("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Wl=new Re("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Eb=new Re("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Fb=new Re("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),vb=new Re("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),Yn={IDO_PROGRAM_ID_V1:Ml,IDO_PROGRAM_ID_V2:_l,IDO_PROGRAM_ID_V3:Vl,IDO_PROGRAM_ID_V4:El},Wb={AMM_V4:$i,AMM_STABLE:Ll,CLMM_PROGRAM_ID:Ol,FARM_PROGRAM_ID_V3:ji,FARM_PROGRAM_ID_V5:Zi,FARM_PROGRAM_ID_V6:Tn,OPEN_BOOK_PROGRAM:Rl,SERUM_PROGRAM_ID_V3:Qr,UTIL1216:Cl,Router:Nl,CREATE_CPMM_POOL_PROGRAM:Fl,CREATE_CPMM_POOL_AUTH:vl,CREATE_CPMM_POOL_FEE_ACC:Wl};import{PublicKey as Dl}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ql}from"@solana/spl-token";function ye(r,e,t){return oe([r.toBuffer(),(t!=null?t:ql).toBuffer(),e.toBuffer()],new Dl("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import Le from"bn.js";var xt=1e4;function Yb(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=t.epoch<e.newerTransferFee.epoch?e.olderTransferFee:e.newerTransferFee,o=new Le(i.maximumFee.toString()),s=t.epoch<e.newerTransferFee.epoch?(Number(e.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(i.transferFeeBasisPoints===xt){let a=new Le(i.maximumFee.toString());return{amount:r.add(a),fee:a,expirationTime:s}}else{let a=zt(r.mul(new Le(xt)),new Le(xt-i.transferFeeBasisPoints)),u=new Le(i.maximumFee.toString()),c=a.sub(r).gt(u)?r.add(u):a,l=zt(c.mul(new Le(i.transferFeeBasisPoints)),new Le(xt)),m=l.gt(o)?o:l;return{amount:c,fee:m,expirationTime:s}}else{let a=zt(r.mul(new Le(i.transferFeeBasisPoints)),new Le(xt)),u=a.gt(o)?o:a;return{amount:r,fee:u,expirationTime:s}}}function Ae(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=D(M({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),o=t.epoch<i.newerTransferFee.epoch?i.olderTransferFee:i.newerTransferFee,s=new Le(o.maximumFee.toString()),a=t.epoch<i.newerTransferFee.epoch?(Number(i.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===xt){let u=new Le(o.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=zt(r.mul(new Le(xt)),new Le(xt-o.transferFeeBasisPoints)),c=new Le(o.maximumFee.toString()),l=u.sub(r).gt(c)?r.add(c):u,m=zt(l.mul(new Le(o.transferFeeBasisPoints)),new Le(xt)),p=m.gt(s)?s:m;return{amount:l,fee:p,expirationTime:a}}else{let u=zt(r.mul(new Le(o.transferFeeBasisPoints)),new Le(xt)),c=u.gt(s)?s:u;return{amount:r,fee:c,expirationTime:a}}}function sn(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function zt(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new Le(0))?t.add(new Le(1)):t}var Ji=(t=>(t.ALL="all",t.Strict="strict",t))(Ji||{}),Ul=(n=>(n.All="all",n.Standard="standard",n.Concentrated="concentrated",n))(Ul||{});var Xe={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",VERSION:"/main/version",CHECK_AVAILABILITY:"/v3/main/AvailabilityCheckAPI",RPCS:"/main/rpcs",INFO:"/main/info",STAKE_POOLS:"/main/stake-pools",CHAIN_TIME:"/main/chain-time",TOKEN_LIST:"/mint/list",MINT_INFO_ID:"/mint/ids",JUP_TOKEN_LIST:"https://token.jup.ag/{type}",POOL_LIST:"/pools/info/list",POOL_SEARCH_BY_ID:"/pools/info/ids",POOL_SEARCH_MINT:"/pools/info/mint",POOL_SEARCH_LP:"/pools/info/lps",POOL_KEY_BY_ID:"/pools/key/ids",POOL_LIQUIDITY_LINE:"/pools/line/liquidity",POOL_POSITION_LINE:"/pools/line/position",FARM_INFO:"/farms/info/ids",FARM_LP_INFO:"/farms/info/lp",FARM_KEYS:"/farms/key/ids",OWNER_CREATED_FARM:"/create-pool/{owner}",OWNER_IDO:"/main/ido/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",IDO_KEYS:"/ido/key/ids",SWAP_HOST:"https://transaction-v1.raydium.io",SWAP_COMPUTE:"/compute/",SWAP_TX:"/transaction/",MINT_PRICE:"/mint/price",MIGRATE_CONFIG:"/main/migrate-lp",PRIORITY_FEE:"/main/auto-fee"},pg=M({},Xe);var ia="ray_tab_hash",eo="ray_req_hash",Gl=()=>{if(typeof window===void 0)return"";let r=sessionStorage.getItem(ia);return r||(r=`ray-${Date.now()}`,sessionStorage.setItem(ia,r)),r},Hr=async n=>{var i=n,{logCount:r=1e3,removeLastLog:e}=i,t=Te(i,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(s=>s());let o=JSON.parse(localStorage.getItem(eo)||"[]").slice(0,r-1);e&&o.pop(),new Blob([JSON.stringify(t.data)]).size>1024&&(t.data=JSON.stringify(t.data).substring(0,200)+"..."),o.unshift(D(M({},t),{time:Date.now(),session:Gl()}));try{localStorage.setItem(eo,JSON.stringify(o))}catch{if(e){let s=!1,a=JSON.stringify(t.data).substring(0,100);for(o[0].data=a+(a.length>100?"...":"");!s;){o.pop();let u=JSON.stringify(t.data).substring(0,100);o[0].data=u+(u.length>100?"...":"");try{localStorage.setItem(eo,JSON.stringify(o)),s=!0}catch{s=!1}}return new Promise(u=>u())}return Hr(D(M({},t),{logCount:r,removeLastLog:!0}))}};var In=ae("Raydium_Api"),to=new Map;async function Og(r,e,t=1e3){let n;for(;n==null;)try{In.debug(`Request ${r} through endlessRetry`),n=await e()}catch(i){In.error(`Request ${r} failed, retry after ${t} ms`,i),await Xs(t)}return n}var jr=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:i,urlConfigs:o}){this.cluster=e,this.urlConfigs=o||{},this.logCount=i||1e3,this.api=Xl.create({baseURL:this.urlConfigs.BASE_HOST||Xe.BASE_HOST,timeout:t}),this.api.interceptors.request.use(s=>{let{method:a,baseURL:u,url:c}=s;return In.debug(`${a==null?void 0:a.toUpperCase()} ${u}${c}`),s},s=>(In.error("Request failed"),Promise.reject(s))),this.api.interceptors.response.use(s=>{let{config:a,data:u,status:c}=s,{method:l,baseURL:m,url:p}=a;return n&&Hr({status:c,url:`${m}${p}`,params:a.params,data:u,logCount:this.logCount}),In.debug(`${l==null?void 0:l.toUpperCase()} ${m}${p} ${c}`),u},s=>{let{config:a,response:u={}}=s,{status:c}=u,{method:l,baseURL:m,url:p}=a;return n&&Hr({status:c,url:`${m}${p}`,params:a.params,data:s.message,logCount:this.logCount}),In.error(`${l.toUpperCase()} ${m}${p} ${c||s.message}`),Promise.reject(s)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||Xe.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||Xe.POOL_LIQUIDITY_LINE}?pool_id=${e}`)).data}async getBlockSlotCountForSecond(e){if(!e)return 2;let n=(await this.api.post(e,{id:"getRecentPerformanceSamples",jsonrpc:"2.0",method:"getRecentPerformanceSamples",params:[4]})).result.map(i=>i.numSlots);return n.reduce((i,o)=>i+o,0)/n.length/60}async getChainTimeOffset(){return(await this.api.get(this.urlConfigs.CHAIN_TIME||Xe.CHAIN_TIME)).data}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||Xe.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||Xe.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||Xe.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||Xe.MINT_INFO_ID)+`?mints=${e.map(n=>n.toString()).join(",")}`)).data}async getPoolList(e={}){let{type:t="all",sort:n="liquidity",order:i="desc",page:o=0,pageSize:s=100}=e;return(await this.api.get((this.urlConfigs.POOL_LIST||Xe.POOL_LIST)+`?poolType=${t}&poolSortField=${n}&sortType=${i}&page=${o}&pageSize=${s}`)).data}async fetchPoolById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.POOL_SEARCH_BY_ID||Xe.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],i=t.filter(s=>to.has(s)?(n.push(to.get(s)),!1):!0),o=[];return i.length&&(o=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||Xe.POOL_KEY_BY_ID)+`?ids=${i.join(",")}`)).data.filter(Boolean),o.forEach(a=>{to.set(a.id,a)})),n.concat(o)}async fetchFarmInfoById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_INFO||Xe.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||Xe.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||Xe.CHECK_AVAILABILITY)).data}};import{merge as Fp}from"lodash";var Zr="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",oa="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as bo,TOKEN_PROGRAM_ID as jt,AccountLayout as Bn,TOKEN_2022_PROGRAM_ID as td}from"@solana/spl-token";import{PublicKey as ii,SystemProgram as nd}from"@solana/web3.js";var no=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),xe=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ae(t)}createTxBuilder(e){return this.scope.checkOwner(),new Yr({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(no(e))}logInfo(...e){this.logger.info(no(e))}logAndCreateError(...e){let t=no(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as Hm,createCloseAccountInstruction as jm,createTransferInstruction as Zm,TOKEN_PROGRAM_ID as xn}from"@solana/spl-token";import{PublicKey as $m,SystemProgram as Jm}from"@solana/web3.js";import ed from"bn.js";import{PublicKey as Pa,Keypair as Xm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as zm}from"@solana/spl-token";import Ym from"bn.js";import{PublicKey as Em}from"@solana/web3.js";import da,{isBN as pa}from"bn.js";import{bits as zl,BitStructure as Yl,blob as Ql,Blob as Hl,cstr as jl,f32 as Zl,f32be as $l,f64 as Jl,f64be as em,greedy as tm,Layout as nm,ns64 as rm,ns64be as im,nu64 as om,nu64be as sm,offset as am,s16 as um,s16be as cm,s24 as lm,s24be as mm,s32 as dm,s32be as pm,s40 as fm,s40be as ym,s48 as bm,s48be as gm,s8 as wm,seq as Am,struct as Xg,Structure as km,u16 as Pm,u16be as hm,u24 as Tm,u24be as Im,u32 as xm,u32be as Bm,u40 as Sm,u40be as Km,u48 as Cm,u48be as Rm,u8 as Lm,UInt as Om,union as Nm,Union as Mm,unionLayoutDiscriminator as _m,utf8 as Vm}from"@solana/buffer-layout";var Qn=nm,sa=km,aa=Mm,zg=Yl,ro=Om,ua=Hl,Yg=tm,$r=Lm,Bt=Pm,Qg=Tm,Hn=xm,Hg=Sm,jg=Cm,ca=om,Zg=hm,$g=Im,Jg=Bm,ew=Km,tw=Rm,nw=sm,rw=wm,iw=um,ow=lm,We=dm,sw=fm,aw=bm,uw=rm,cw=cm,lw=mm,mw=pm,dw=ym,pw=gm,fw=im,yw=Zl,bw=$l,gw=Jl,ww=em;var la=Am,ma=Nm,Aw=_m,pe=Ql,kw=jl,Pw=Vm,io=zl,oo=am;var an=class extends Qn{constructor(t,n,i){super(t,i);this.blob=pe(t),this.signed=n}decode(t,n=0){let i=new da(this.blob.decode(t,n),10,"le");return this.signed?i.fromTwos(this.span*8).clone():i}encode(t,n,i=0){return typeof t=="number"&&(t=new da(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},Jr=class extends Qn{constructor(t){super(8,t);this._lower=io(Hn(),!1),this._upper=io(Hn(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let i=this._lower.decode(t,n),o=this._upper.decode(t,n+this._lower.span);return M(M({},i),o)}encode(t,n,i=0){return this._lower.encode(t,n,i)+this._upper.encode(t,n,i+this._lower.span)}};function _(r){return new ro(1,r)}function ze(r){return new ro(4,r)}function w(r){return new an(8,!1,r)}function z(r){return new an(16,!1,r)}function fa(r){return new an(1,!0,r)}function ei(r){return new an(8,!0,r)}function ya(r){return new an(16,!0,r)}var _t=class extends Qn{constructor(t,n,i,o){super(t.span,o);this.layout=t,this.decoder=n,this.encoder=i}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,i){return this.layout.encode(this.encoder(t),n,i)}getSpan(t,n){return this.layout.getSpan(t,n)}};function S(r){return new _t(pe(32),e=>new Em(e),e=>e.toBuffer(),r)}var so=class extends Qn{constructor(t,n){super(-1,n);this.layout=t,this.discriminator=$r()}encode(t,n,i=0){return t==null?this.discriminator.encode(0,n,i):(this.discriminator.encode(1,n,i),this.layout.encode(t,n,i+1)+1)}decode(t,n=0){let i=this.discriminator.decode(t,n);if(i===0)return null;if(i===1)return this.layout.decode(t,n+1);throw new Error("Invalid option "+this.property)}getSpan(t,n=0){let i=this.discriminator.decode(t,n);if(i===0)return 1;if(i===1)return this.layout.getSpan(t,n+1)+1;throw new Error("Invalid option "+this.property)}};function Bw(r,e){return new so(r,e)}function De(r){return new _t($r(),Fm,vm,r)}function Fm(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function vm(r){return r?1:0}function Sw(r,e){let t=Hn("length"),n=L([t,q(r,oo(t,-t.span),"values")]);return new _t(n,({values:i})=>i,i=>({values:i}),e)}function Kw(r,e,t){let n=L([w("tag"),e.replicate("data")]);function i({tag:o,data:s}){if(!o.eq(r))throw new Error("Invalid tag, expected: "+r.toString("hex")+", got: "+o.toString("hex"));return s}return new _t(n,i,o=>({tag:r,data:o}),t)}function Wm(r){let e=Hn("length"),t=L([e,pe(oo(e,-e.span),"data")]);return new _t(t,({data:n})=>n,n=>({data:n}),r)}function Cw(r){return new _t(Wm(),e=>e.toString("utf-8"),e=>Buffer.from(e,"utf-8"),r)}function Rw(r,e){let t=ma($r(),e);return r.forEach((n,i)=>t.addVariant(i,n,n.property)),t}function Lw(r,e,t){let n=L([q(r,e,"values")]);return new _t(n,({values:i})=>i,i=>({values:i}),t)}var ao=class extends sa{decode(e,t){return super.decode(e,t)}};function L(r,e,t){return new ao(r,e,t)}var uo=class extends aa{encodeInstruction(e){let t=Math.max(...Object.values(this.registry).map(i=>i.span)),n=Buffer.alloc(t);return n.slice(0,this.encode(e,n))}decodeInstruction(e){return this.decode(e)}};function Ow(r,e,t){return new uo(r,e,t)}var co=class extends ua{decode(e,t){let n=super.decode(e,t);if(!n.every(i=>i===0))throw new Error("nonzero padding bytes");return n}};function Nw(r){return new co(r)}function q(r,e,t){let n,i=typeof e=="number"?e:pa(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=pa(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 la(r,i,t)}var Yt=L([S("mint"),S("owner"),w("amount"),ze("delegateOption"),S("delegate"),_("state"),ze("isNativeOption"),w("isNative"),w("delegatedAmount"),ze("closeAuthorityOption"),S("closeAuthority")]);function Dm(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function lo(r,...e){if(!Dm(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${r.length}`)}function mo(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function ba(r,e){lo(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var ni=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),wt=(r,e)=>r<<32-e|r>>>e;var Ww=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function qm(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function po(r){return typeof r=="string"&&(r=qm(r)),lo(r),r}var ti=class{clone(){return this._cloneInto()}},Dw={}.toString;function ga(r){let e=n=>r().update(po(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function Um(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let i=BigInt(32),o=BigInt(4294967295),s=Number(t>>i&o),a=Number(t&o),u=n?4:0,c=n?0:4;r.setUint32(e+u,s,n),r.setUint32(e+c,a,n)}var wa=(r,e,t)=>r&e^~r&t,Aa=(r,e,t)=>r&e^r&t^e&t,ri=class extends ti{constructor(e,t,n,i){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=ni(this.buffer)}update(e){mo(this);let{view:t,buffer:n,blockLen:i}=this;e=po(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(i-this.pos,o-s);if(a===i){let u=ni(e);for(;i<=o-s;s+=i)this.process(u,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===i&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){mo(this),ba(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:i,isLE:o}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>i-s&&(this.process(n,0),s=0);for(let m=s;m<i;m++)t[m]=0;Um(n,i-8,BigInt(this.length*8),o),this.process(n,0);let a=ni(e),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let c=u/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<c;m++)a.setUint32(4*m,l[m],o)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:i,finished:o,destroyed:s,pos:a}=this;return e.length=i,e.pos=a,e.finished=o,e.destroyed=s,i%t&&e.buffer.set(n),e}};var Gm=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]),Qt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Ht=new Uint32Array(64),fo=class extends ri{constructor(){super(64,32,8,!1),this.A=Qt[0]|0,this.B=Qt[1]|0,this.C=Qt[2]|0,this.D=Qt[3]|0,this.E=Qt[4]|0,this.F=Qt[5]|0,this.G=Qt[6]|0,this.H=Qt[7]|0}get(){let{A:e,B:t,C:n,D:i,E:o,F:s,G:a,H:u}=this;return[e,t,n,i,o,s,a,u]}set(e,t,n,i,o,s,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=i|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)Ht[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let p=Ht[m-15],d=Ht[m-2],y=wt(p,7)^wt(p,18)^p>>>3,f=wt(d,17)^wt(d,19)^d>>>10;Ht[m]=f+Ht[m-7]+y+Ht[m-16]|0}let{A:n,B:i,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let p=wt(a,6)^wt(a,11)^wt(a,25),d=l+p+wa(a,u,c)+Gm[m]+Ht[m]|0,f=(wt(n,2)^wt(n,13)^wt(n,22))+Aa(n,i,o)|0;l=c,c=u,u=a,a=s+d|0,s=o,o=i,i=n,n=d+f|0}n=n+this.A|0,i=i+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,i,o,s,a,u,c,l)}roundClean(){Ht.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var ka=ga(()=>new fo);var iA=ae("Raydium_Util");function ha({owner:r,solAccountResp:e,tokenAccountResp:t}){let n=[],i=[];for(let{pubkey:o,account:s}of t.value){let a=Yt.decode(s.data),{mint:u,amount:c}=a;n.push({publicKey:o,mint:u,amount:c,isAssociated:ye(r,u,s.owner).publicKey.equals(o),isNative:!1,programId:s.owner}),i.push({pubkey:o,accountInfo:a,programId:s.owner})}return e&&n.push({mint:Pa.default,amount:new Ym(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:i}}function Ye({fromPublicKey:r,programId:e=zm}){let t=Xm.generate().publicKey.toBase58().slice(0,32);return{publicKey:Qm(r,t,e),seed:t}}function Qm(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=ka(n);return new Pa(i)}function yo(r){let{mint:e,tokenAccount:t,owner:n,programId:i=xn}=r;return Hm(t,e,n,i)}function Vt(r){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:i,programId:o=xn}=r;return jm(e,t,i,n,o)}async function St(r){let{connection:e,amount:t,commitment:n,payer:i,owner:o,skipCloseAccount:s}=r,a=await e.getMinimumBalanceForRentExemption(Yt.span,n),u=U(t).add(new ed(a)),c=Ye({fromPublicKey:i,programId:xn});return{addresses:{newAccount:c.publicKey},signers:[],instructions:[Jm.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:c.seed,newAccountPubkey:c.publicKey,lamports:u.toNumber(),space:Yt.span,programId:xn}),yo({mint:new $m(Me.address),tokenAccount:c.publicKey,owner:o,programId:xn})],instructionTypes:[V.CreateAccount,V.InitAccount],endInstructionTypes:s?[]:[V.CloseAccount],endInstructions:s?[]:[Vt({tokenAccount:c.publicKey,payer:i,owner:o})]}}function jn({source:r,destination:e,owner:t,amount:n,multiSigners:i=[],tokenProgram:o=xn}){return Zm(r,e,t,BigInt(String(n)),i,o)}var Zn=class extends xe{constructor(t){super(t);this._tokenAccounts=[];this._tokenAccountRawInfos=[];this._accountListener=[];this._clientOwnedToken=!1;let{tokenAccounts:n,tokenAccountRawInfos:i}=t;this._tokenAccounts=n||[],this._tokenAccountRawInfos=i||[],this._clientOwnedToken=!!(n||i)}get tokenAccounts(){return this._tokenAccounts}get tokenAccountRawInfos(){return this._tokenAccountRawInfos}updateTokenAccount({tokenAccounts:t,tokenAccountRawInfos:n}){return t&&(this._tokenAccounts=t),n&&(this._tokenAccountRawInfos=n),this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=void 0,this._clientOwnedToken=!0,this}addAccountChangeListener(t){return this._accountListener.push(t),this}removeAccountChangeListener(t){return this._accountListener=this._accountListener.filter(n=>n!==t),this}getAssociatedTokenAccount(t,n){return ye(this.scope.ownerPubKey,t,n).publicKey}async fetchWalletTokenAccounts(t){if(this._clientOwnedToken||!(t!=null&&t.forceUpdate)&&this._tokenAccounts.length)return{tokenAccounts:this._tokenAccounts,tokenAccountRawInfos:this._tokenAccountRawInfos};this.scope.checkOwner();let i=M(M({},{}),t),[o,s,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:jt},i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:td},i.commitment)]),{tokenAccounts:u,tokenAccountRawInfos:c}=ha({owner:this.scope.ownerPubKey,solAccountResp:o,tokenAccountResp:{context:s.context,value:[...s.value,...a.value]}});return this._tokenAccounts=u,this._tokenAccountRawInfos=c,this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=this.scope.connection.onAccountChange(this.scope.ownerPubKey,()=>this.fetchWalletTokenAccounts({forceUpdate:!0}),"confirmed"),{tokenAccounts:u,tokenAccountRawInfos:c}}async getCreatedTokenAccount({mint:t,programId:n=jt,associatedOnly:i=!0}){await this.fetchWalletTokenAccounts();let o=this._tokenAccounts.filter(({mint:a})=>a==null?void 0:a.equals(t)).sort((a,u)=>a.amount.lt(u.amount)?1:-1),s=this.getAssociatedTokenAccount(t,n);for(let a of o){let{publicKey:u}=a;if(u&&(!i||i&&s.equals(u)))return u}}async getOrCreateTokenAccount(t){var y,f,b;await this.fetchWalletTokenAccounts();let{mint:n,createInfo:i,associatedOnly:o,owner:s,notUseTokenAccount:a=!1,skipCloseAccount:u=!1,checkCreateATAOwner:c=!1}=t,l=new ii(t.tokenProgram||jt),m=this.getAssociatedTokenAccount(n,new ii(l)),p=(a?[]:this.tokenAccountRawInfos).filter(g=>g.accountInfo.mint.equals(n)&&(!o||g.pubkey.equals(m))).sort((g,k)=>g.accountInfo.amount.lt(k.accountInfo.amount)?1:-1);if(i===void 0||p.length>0)return p.length>0?{account:p[0].pubkey}:{};let d={instructions:[],endInstructions:[],signers:[],instructionTypes:[],endInstructionTypes:[]};if(o){let g=bo(s,m,s,n,l);if(c){let k=await this.scope.connection.getAccountInfo(m);if(k===null)(y=d.instructions)==null||y.push(g),d.instructionTypes.push(V.CreateATA);else if(!(k.owner.equals(l)&&Bn.decode(k.data).mint.equals(n)&&Bn.decode(k.data).owner.equals(s)))throw Error(`create ata check error -> mint: ${n.toString()}, ata: ${m.toString()}`)}else d.instructions.push(g),d.instructionTypes.push(V.CreateATA);if(n.equals(te)&&i.amount){let k=await St({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:i.payer||this.scope.ownerPubKey,amount:(f=i.amount)!=null?f:0,skipCloseAccount:u});d.instructions.push(...k.instructions||[]),d.endInstructions.push(...k.endInstructions||[]),d.instructionTypes.push(...k.instructionTypes||[]),d.endInstructionTypes.push(...k.endInstructionTypes||[]),i.amount&&(d.instructions.push(jn({source:k.addresses.newAccount,destination:m,owner:this.scope.ownerPubKey,amount:i.amount,tokenProgram:jt})),d.instructionTypes.push(V.TransferAmount))}return u||(d.endInstructions.push(Vt({owner:s,payer:i.payer||s,tokenAccount:m,programId:l})),d.endInstructionTypes.push(V.CloseAccount)),{account:m,instructionParams:d}}else if(n.equals(te)){let g=await St({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:i.payer||this.scope.ownerPubKey,amount:(b=i.amount)!=null?b:0,skipCloseAccount:u});return d.instructions.push(...g.instructions||[]),d.endInstructions.push(...g.endInstructions||[]),d.signers.push(...g.signers||[]),d.instructionTypes.push(...g.instructionTypes||[]),d.endInstructionTypes.push(...g.endInstructionTypes||[]),{account:g.addresses.newAccount,instructionParams:d}}else{let g=Ye({fromPublicKey:s,programId:l}),k=await this.scope.connection.getMinimumBalanceForRentExemption(Bn.span),A=nd.createAccountWithSeed({fromPubkey:s,basePubkey:s,seed:g.seed,newAccountPubkey:g.publicKey,lamports:k,space:Bn.span,programId:l});return d.instructions.push(A,yo({mint:n,tokenAccount:g.publicKey,owner:this.scope.ownerPubKey,programId:l})),d.instructionTypes.push(V.CreateAccount),d.instructionTypes.push(V.InitAccount),u||(d.endInstructions.push(Vt({owner:s,payer:i.payer||s,tokenAccount:g.publicKey,programId:l})),d.endInstructionTypes.push(V.CloseAccount)),{account:g.publicKey,instructionParams:d}}}async checkOrCreateAta({mint:t,programId:n=jt,autoUnwrapWSOLToSOL:i}){var u;await this.fetchWalletTokenAccounts();let o=(u=this.scope.account.tokenAccounts.find(({mint:c})=>(c==null?void 0:c.toBase58())===t.toBase58()))==null?void 0:u.publicKey,s=this.scope.ownerPubKey,a={};if(!o){let c=this.getAssociatedTokenAccount(t,n),l=await bo(s,c,s,t,n);a.instructions=[l],a.instructionTypes=[V.CreateATA],o=c}return i&&te.toBase58()===t.toBase58()&&(a.endInstructions=[Vt({owner:s,payer:s,tokenAccount:o,programId:n})],a.endInstructionTypes=[V.CloseAccount]),{pubKey:o,newInstructions:a}}async handleTokenAccount(t){let{side:n,amount:i,mint:o,programId:s=jt,tokenAccount:a,payer:u=this.scope.ownerPubKey,bypassAssociatedCheck:c,skipCloseAccount:l,checkCreateATAOwner:m}=t,p=this.getAssociatedTokenAccount(o,s);if(new ii(te).equals(o)){let d=await St({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:u,amount:i,skipCloseAccount:l});return M({tokenAccount:d.addresses.newAccount},d)}else if(!a||n==="out"&&!p.equals(a)&&!c){let d=[],y=bo(this.scope.ownerPubKey,p,this.scope.ownerPubKey,o,s);if(m){let f=await this.scope.connection.getAccountInfo(p);if(f===null)d.push(y);else if(!(f.owner.equals(jt)&&Bn.decode(f.data).mint.equals(o)&&Bn.decode(f.data).owner.equals(this.scope.ownerPubKey)))throw Error(`create ata check error -> mint: ${o.toString()}, ata: ${p.toString()}`)}else d.push(y);return{tokenAccount:p,instructions:d,instructionTypes:[V.CreateATA]}}return{tokenAccount:a}}async processTokenAccount(t){let{mint:n,programId:i=jt,amount:o,useSOLBalance:s,handleTokenAccount:a}=t,u,c=this.createTxBuilder();if(n.equals(new ii(te))&&s){let l=await this.handleTokenAccount({side:"in",amount:o||0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:p}=l,d=Te(l,["tokenAccount"]);u=p,c.addInstruction(d)}else if(u=await this.getCreatedTokenAccount({mint:n,associatedOnly:!1,programId:i}),!u&&a){let m=await this.scope.account.handleTokenAccount({side:"in",amount:0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:p}=m,d=Te(m,["tokenAccount"]);u=p,c.addInstruction(d)}return M({tokenAccount:u},c.AllTxData)}};import{createAssociatedTokenAccountInstruction as Td}from"@solana/spl-token";import{PublicKey as Pe,SystemProgram as Id}from"@solana/web3.js";import{PublicKey as Ca}from"@solana/web3.js";var go=L([_("instruction")]),wo=L([_("instruction")]),rd=L([w("rewardState"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardLastUpdateTime"),w("totalReward"),w("totalRewardEmissioned"),w("rewardClaimed"),w("rewardPerSecond"),z("accRewardPerShare"),S("rewardVault"),S("rewardMint"),S("rewardSender"),w("rewardType"),q(w(),15,"padding")]),id=L([w("state"),w("nonce"),S("lpVault"),S("rewardVault"),S(),S(),w(),w(),w("totalReward"),z("perShareReward"),w("lastSlot"),w("perSlotReward")]),od=L([w("state"),w("nonce"),S("lpVault"),S("rewardVaultA"),w("totalRewardA"),z("perShareRewardA"),w("perSlotRewardA"),_("option"),S("rewardVaultB"),pe(7),w("totalRewardB"),z("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),S()]),sd=L([w(),w("state"),w("nonce"),w("validRewardTokenNum"),z("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),S("lpMint"),S("lpVault"),q(rd,5,"rewardInfos"),S("creator"),S(),q(w(),32,"padding")]),Ta=new Proxy(id,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return D(M({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(r,e,t)}}),Ia=new Proxy(od,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return D(M({},i),{version:5,rewardInfos:[{rewardVault:i.rewardVaultA,totalReward:i.totalRewardA,perSlotReward:i.perSlotRewardA,perShareReward:i.perShareRewardA},{rewardVault:i.rewardVaultB,totalReward:i.totalRewardB,perSlotReward:i.perSlotRewardB,perShareReward:i.perShareRewardB}]})}:Reflect.get(r,e,t)}}),$n=new Proxy(sd,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return D(M({},i),{version:6,rewardInfos:i.rewardInfos.map(o=>{var s;return D(M({},o),{rewardType:((s=Object.entries(Zt).find(a=>String(a[1])===o.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),ad=L([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),Ao=L([_("instruction"),w("nonce"),q(ad,5,"rewardTimeInfo")]),ko=L([_("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),Po=L([_("instruction"),w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),VA=L([w("state"),S("id"),S("owner"),w("deposited"),q(w(),1,"rewardDebts")]),Jn=L([w("state"),S("id"),S("owner"),w("deposited"),q(z(),1,"rewardDebts"),w(""),w("voteLockedBalance"),q(w(),15)]),EA=L([w("state"),S("id"),S("owner"),w("deposited"),q(w(),2,"rewardDebts")]),xa=L([w("state"),S("id"),S("owner"),w("deposited"),q(z(),2,"rewardDebts"),q(w(),17)]),Ba=L([w(),w("state"),S("id"),S("owner"),w("deposited"),q(z(),5,"rewardDebts"),q(w(),16)]),Je=L([_("instruction"),w("amount")]),ud=L([S("mint"),S("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),fa("digitShift"),q(_(),7,"reserved1"),q(w(),7,"reserved2")]),Sa=L([pe(8),S("governanceProgramId"),S("realm"),S("realmGoverningTokenMint"),S("realmAuthority"),q(_(),32,"reserved1"),q(ud,4,"votingMints"),ei("timeOffset"),_("bump"),q(_(),7,"reserved2"),q(w(),11,"reserved3")]),cd=L([ei("startTime"),ei("endTime"),_("kind"),q(_(),15,"reserved")]),ld=L([q(cd,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),De("isUsed"),De("allowClawback"),_("votingMintConfigIdx"),q(_(),29,"reserved")]),Ka=L([pe(8),S("voterAuthority"),S("registrar"),q(ld,32,"deposits"),_("voterBump"),_("voterWweightRecordBump"),q(_(),94,"reserved")]);var XA=ae("Raydium_farm_config"),Ra=new Ca("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),La=new Ca("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1"),Oa={3:Ta,5:Ia,6:$n},Na={3:Jn,5:xa,6:Ba},ho=r=>[3,5,6].indexOf(r)!==-1,To=r=>{var s;let{version:e,rewardInfos:t,rewardTokenAccountsPublicKeys:n}=r,i=`rewardInfo:${JSON.stringify(t)}, rewardAccount:${JSON.stringify(n)}`,o={3:()=>{if(t.length!==1||n.length!==1)return`rewardInfos or rewardTokenAccounts lengths not equal 1: ${i}`},5:()=>{if(t.length!==n.length)return`rewardInfos and rewardTokenAccounts lengths not equal: ${i}`},6:()=>{if(!n.length||t.length!==n.length)return`no rewardTokenAccounts or rewardInfos and rewardTokenAccounts lengths not equal: ${i}`}};return(s=o[e])==null?void 0:s.call(o)},Zt={"Standard SPL":0,"Option tokens":1},At={[ji.toString()]:3,[Zi.toString()]:5,[Tn.toString()]:6};import{PublicKey as ie,SystemProgram as un,SYSVAR_RENT_PUBKEY as pd,SYSVAR_CLOCK_PUBKEY as nr,TransactionInstruction as Ve}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as fd,TOKEN_PROGRAM_ID as st,ASSOCIATED_TOKEN_PROGRAM_ID as yd}from"@solana/spl-token";import si from"bn.js";function Io(r,e,t){return oe([e.toBuffer(),Buffer.from("registrar","utf8"),t.toBuffer()],r)}function xo(r,e){return oe([e.toBuffer(),Buffer.from("voting_mint_seed","utf8")],r)}function Bo(r,e){return oe([e.toBuffer()],r)}function So(r,e,t){return oe([e.toBuffer(),Buffer.from("voter","utf8"),t.toBuffer()],r)}function Ko(r,e,t){return oe([e.toBuffer(),Buffer.from("voter-weight-record","utf8"),t.toBuffer()],r)}function Co(r,e,t,n){return oe([Buffer.from("governance","utf8"),e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}import rt from"bn.js";var er=ae("Raydium.farm.util");function tr({programId:r,poolId:e,mint:t,type:n}){let{publicKey:i}=oe([e.toBuffer(),t.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],r);return i}function it({programId:r,poolId:e,owner:t,version:n}){let{publicKey:i}=oe([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],r);return i}var Ma=({programId:r,poolId:e})=>oe([e.toBuffer()],r);function _a(r){return{isSet:new rt(1),rewardPerSecond:U(r.perSecond),rewardOpenTime:U(r.openTime),rewardEndTime:U(r.endTime),rewardType:U(Zt[r.rewardType])}}function Ro(r){return U(r.endTime).sub(U(r.openTime)).mul(U(r.perSecond))}function oi(r){let e=Na[r];return e||er.logWithError("invalid version",r),e}function md(r){let e=Oa[r];return e||er.logWithError("invalid version",r),e}function dd(r,e,t,n){if(r.version===3||r.version===5){if(r.lastSlot.gte(new rt(t)))return r;let i=new rt(t).sub(r.lastSlot);r.lastSlot=new rt(t);for(let o of r.rewardInfos){if(e.amount.eq(new rt(0)))continue;let s=o.perSlotReward.mul(i);o.perShareReward=o.perShareReward.add(s.mul(new rt(10).pow(new rt(r.version===3?9:15))).div(e.amount)),o.totalReward=o.totalReward.add(s)}}else if(r.version===6)for(let i of r.rewardInfos){if(i.rewardState.eq(new rt(0)))continue;let o=rt.min(new rt(n),i.rewardEndTime);if(i.rewardOpenTime.gte(o))continue;let a=o.sub(i.rewardLastUpdateTime).mul(i.rewardPerSecond),u=i.totalReward.sub(i.totalRewardEmissioned);u.lt(a)?(a=u,i.rewardLastUpdateTime=i.rewardLastUpdateTime.add(u.div(i.rewardPerSecond))):i.rewardLastUpdateTime=o,!e.amount.eq(new rt(0))&&(i.accRewardPerShare=i.accRewardPerShare.add(a.mul(r.rewardMultiplier).div(e.amount)),i.totalRewardEmissioned=i.totalRewardEmissioned.add(a))}return r}async function uk({connection:r,farmPools:e,owner:t,config:n,chainTime:i}){let o=!1,s=!1,a=new rt(10),u=[];for(let p of e){let d=fe(p);d.version===6?s=!0:o=!0,u.push({pubkey:d.id,version:d.version,key:"state",poolId:d.id},{pubkey:d.lpVault,version:d.version,key:"lpVault",poolId:d.id}),t&&u.push({pubkey:it({programId:d.programId,poolId:d.id,owner:t,version:p.version}),version:d.version,key:"ledger",poolId:d.id})}let c={},l=await hn(r,u,n);for(let{pubkey:p,version:d,key:y,poolId:f,accountInfo:b}of l){let g=f.toBase58();if(c[g]=M({},c[g]),y==="state"){let k=md(d);(!b||!b.data||b.data.length!==k.span)&&er.logWithError(`invalid farm state account info, pools.id, ${p}`),c[g].state=k.decode(b.data)}else if(y==="lpVault")(!b||!b.data||b.data.length!==Yt.span)&&er.logWithError(`invalid farm lp vault account info, pools.lpVault, ${p}`),c[g].lpVault=Yt.decode(b.data);else if(y==="ledger"){let k=oi(d);b&&b.data&&(b.data.length!==k.span&&er.logWithError(`invalid farm ledger account info, ledger, ${p}`),c[g].ledger=k.decode(b.data))}}let m=s||o?await r.getSlot():0;for(let p of Object.keys(c))c[p]!==void 0&&(c[p].state=dd(c[p].state,c[p].lpVault,m,i));for(let[p,{state:d,ledger:y}]of Object.entries(c))if(y){let f=d.version===6?d.rewardMultiplier:d.rewardInfos.length===1?a.pow(new rt(9)):a.pow(new rt(15)),b=d.rewardInfos.map((g,k)=>{let A=y.rewardDebts[k];return y.deposited.mul(d.version===6?g.accRewardPerShare:g.perShareReward).div(f).sub(A)});c[p].wrapped=D(M({},c[p].wrapped),{pendingRewards:b})}return c}function ck(r,e=Date.now()){if(r.version===6){let t=r.state.rewardInfos;if(t.every(({rewardOpenTime:n})=>na(e,n.toNumber(),{unit:"s"})))return"upcoming pool";if(t.every(({rewardEndTime:n})=>ra(e,n.toNumber(),{unit:"s"})))return"closed pool"}else{let t=r.state.rewardInfos.map(({perSlotReward:n})=>n);if(t.length===2){if(String(t[0])==="0"&&String(t[1])!=="0")return"normal fusion pool";if(String(t[0])!=="0"&&String(t[1])!=="0")return"dual fusion pool";if(String(t[0])==="0"&&String(t[1])==="0")return"closed pool"}else if(t.length===1&&String(t[0])==="0")return"closed pool"}}async function Lo(r,e,t,n){let i=await r.getAccountInfo(e);if(i===null)throw Error("registrar info check error");let s=Sa.decode(i.data).votingMints.findIndex(l=>l.mint.equals(n));if(s===-1)throw Error("find voter mint error");let a=await r.getAccountInfo(t);if(a===null)return{index:s,isInit:!1};let c=Ka.decode(a.data).deposits.findIndex(l=>l.isUsed&&l.votingMintConfigIdx===s);return c===-1?{index:s,isInit:!1}:{index:c,isInit:!0}}var bd=ae("Raydium_farm_instruction"),rr={voterStakeRegistryCreateVoter:Buffer.from([6,24,245,52,243,255,148,25]),voterStakeRegistryCreateDepositEntry:Buffer.from([185,131,167,186,159,125,19,67]),voterStakeRegistryDeposit:Buffer.from([242,35,198,137,82,225,242,182]),voterStakeRegistryWithdraw:Buffer.from([183,18,70,156,148,109,161,34]),voterStakeRegistryUpdateVoterWeightRecord:Buffer.from([45,185,3,36,109,190,115,169])};function Va(r){let{version:e,id:t,ledger:n,programId:i,owner:o}=r,s={3:9,5:10}[e];s||bd.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(go.span);go.encode({instruction:s},a);let u=[P({pubkey:t}),P({pubkey:n}),P({pubkey:o,isWritable:!1}),P({pubkey:un.programId,isWritable:!1}),P({pubkey:pd,isWritable:!1})];return{instruction:new Ve({programId:i,keys:u,data:a}),instructionType:V.FarmV3CreateLedger}}function Ea(r){var n;let e=Buffer.alloc(Ao.span);Ao.encode({instruction:0,nonce:new si(r.nonce),rewardTimeInfo:r.rewardInfoConfig},e);let t=[...Ni,P({pubkey:r.farmId}),P({pubkey:r.farmAuthority,isWritable:!1}),P({pubkey:r.lpVault}),P({pubkey:r.lpMint,isWritable:!1}),P({pubkey:r.lockVault}),P({pubkey:r.lockMint,isWritable:!1}),P({pubkey:(n=r.lockUserAccount)!=null?n:Ne}),P({pubkey:r.owner,isWritable:!1,isSigner:!0})];for(let i of r.rewardInfo)t.push(P({pubkey:i.rewardMint,isWritable:!1}),P({pubkey:i.rewardVault}),P({pubkey:i.userRewardToken}));return{instruction:new Ve({programId:r.programId,keys:t,data:e}),instructionType:V.FarmV6Create}}function Fa(r){let e=Buffer.alloc(wo.span);wo.encode({instruction:5},e);let t=[P({pubkey:st,isWritable:!1}),P({pubkey:r.id}),P({pubkey:r.authority,isWritable:!1}),P({pubkey:r.lpVault,isWritable:!1}),P({pubkey:r.rewardVault}),P({pubkey:r.userRewardToken}),P({pubkey:r.owner,isWritable:!1,isSigner:!0})];return{instruction:new Ve({programId:r.programId,keys:t,data:e}),instructionType:V.FarmV6CreatorWithdraw}}function gd(r,e,t,n,i,o,s,a,u,c,l,m,p){let d=L([_("depositEntryIndex"),w("amount")]),y=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:Vr,isSigner:!1,isWritable:!1}],f=Buffer.alloc(d.span);d.encode({depositEntryIndex:m,amount:p},f);let b=Buffer.from([...rr.voterStakeRegistryDeposit,...f]);return new Ve({keys:y,programId:r,data:b})}function wd(r,e,t,n){let i=L([]),o=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:un.programId,isSigner:!1,isWritable:!1}],s=Buffer.alloc(i.span);i.encode({},s);let a=Buffer.from([...rr.voterStakeRegistryUpdateVoterWeightRecord,...s]);return new Ve({keys:o,programId:r,data:a})}function Ad(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=L([_("depositEntryIndex"),w("amount")]),b=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:st,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:Vr,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({depositEntryIndex:d,amount:y},g);let k=Buffer.from([...rr.voterStakeRegistryWithdraw,...g]);return new Ve({keys:b,programId:r,data:k})}function kd(r,e,t,n,i,o){let s=L([_("ins")]),a=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:un.programId,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);return s.encode({ins:23},u),new Ve({keys:a,programId:r,data:u})}function Pd(r,e,t,n,i,o,s,a){let u=L([_("voterBump"),_("voterWeightRecordBump")]),c=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:un.programId,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:Vr,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({voterBump:s,voterWeightRecordBump:a},l);let m=Buffer.from([...rr.voterStakeRegistryCreateVoter,...l]);return new Ve({keys:c,programId:r,data:m})}function hd(r,e,t,n,i,o,s,a,u,c,l,m){let p=L([_("depositEntryIndex"),_("kind"),_("option"),w("startTs"),ze("periods"),De("allowClawback")]),d=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:un.programId,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1},{pubkey:yd,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1}],y=Buffer.alloc(p.span);p.encode({depositEntryIndex:a,kind:u,option:c===void 0?0:1,startTs:c,periods:l,allowClawback:m},y);let f=Buffer.from([...rr.voterStakeRegistryCreateDepositEntry,...y]);return new Ve({keys:d,programId:r,data:f})}async function Bk({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=Io(n,i,o).publicKey,l=it({programId:e,poolId:a,owner:s,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let p=Jn.decode(m.data),d=p.deposited.sub(p.voteLockedBalance);if(console.log("amount",d.toString()),d.eq(new si(0)))throw Error("user do not has new stake amount");let y=xo(e,a).publicKey,f=Bo(e,a).publicKey,{publicKey:b,nonce:g}=So(n,c,s),k=ye(b,y,u).publicKey,{publicKey:A,nonce:h}=Ko(n,c,s),T=Co(t,i,o,s).publicKey,I=[],B=ye(s,y,u).publicKey;if(await r.getAccountInfo(B)===null&&I.push(fd(s,B,s,y)),await r.getAccountInfo(b)===null){let Q=kd(t,i,s,o,s,T);I.push(Q,Pd(n,c,b,A,s,s,g,h))}let{index:N,isInit:E}=await Lo(r,c,b,y);return E||I.push(hd(n,c,b,k,s,s,y,N,0,void 0,0,!1)),I.push(gd(n,c,b,k,B,s,l,a,y,f,e,N,d),wd(n,c,b,A)),I}async function Sk({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=Io(n,i,o).publicKey,l=it({programId:e,poolId:a,owner:s,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let p=Jn.decode(m.data);if(p.voteLockedBalance.eq(new si(0)))throw Error("user has vote locked balance = 0");let d=xo(e,a).publicKey,y=Bo(e,a).publicKey,{publicKey:f}=So(n,c,s),b=ye(f,d,u).publicKey,{publicKey:g}=Ko(n,c,s),k=Co(t,i,o,s).publicKey,A=[],{index:h,isInit:T}=await Lo(r,c,f,d);if(!T)throw Error("deposit entry index check error");return A.push(Ad(n,c,f,s,k,g,b,ye(s,d,u).publicKey,l,a,d,y,e,h,p.voteLockedBalance)),A}function Oo({payer:r,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:i}){let o=Buffer.alloc(ko.span);ko.encode({instruction:3,rewardReopenTime:U(i.openTime),rewardEndTime:U(i.endTime),rewardPerSecond:U(i.perSecond)},o);let s=[P({pubkey:st,isWritable:!1}),P({pubkey:n.id}),P({pubkey:n.lpVault,isWritable:!1}),P({pubkey:e}),P({pubkey:t}),P({pubkey:r,isWritable:!1,isSigner:!0})];return new Ve({programId:n.programId,keys:s,data:o})}function No({payer:r,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:i}){let o=Buffer.alloc(Po.span);Po.encode({instruction:4,isSet:new si(1),rewardPerSecond:U(i.perSecond),rewardOpenTime:U(i.openTime),rewardEndTime:U(i.endTime),rewardType:U(Zt[i.rewardType])},o);let s=[...Ni,P({pubkey:t.id}),P({pubkey:t.authority,isWritable:!1}),P({pubkey:i.mint,isWritable:!1}),P({pubkey:n}),P({pubkey:e}),P({pubkey:r,isWritable:!1,isSigner:!0})];return new Ve({programId:t.programId,keys:s,data:o})}function Kk(r){let{farmInfo:e,farmKeys:t,version:n,lpAccount:i,rewardAccounts:o,owner:s,instruction:a,amount:u,deposit:c}=r,[l,m]=[new ie(e.programId),new ie(e.id)],p=it({programId:l,poolId:m,owner:s,version:n}),d=Buffer.alloc(Je.span);Je.encode({instruction:a,amount:u},d);let y=n===6?[P({pubkey:st,isWritable:!1}),...c?[P({pubkey:un.programId,isWritable:!1})]:[],P({pubkey:m}),P({pubkey:new ie(t.authority),isWritable:!1}),P({pubkey:new ie(t.lpVault)}),P({pubkey:p}),P({pubkey:s,isWritable:!1,isSigner:!0}),P({pubkey:i})]:[P({pubkey:m}),P({pubkey:new ie(t.authority),isWritable:!1}),P({pubkey:p}),P({pubkey:s,isWritable:!1,isSigner:!0}),P({pubkey:i}),P({pubkey:new ie(t.lpVault)}),P({pubkey:o[0]}),P({pubkey:new ie(t.rewardInfos[0].vault)}),P({pubkey:nr,isWritable:!1}),P({pubkey:st,isWritable:!1})];if(n===5)for(let f=1;f<t.rewardInfos.length;f++)y.push(P({pubkey:o[f]})),y.push(P({pubkey:new ie(t.rewardInfos[f].vault)}));if(n===6)for(let f=0;f<t.rewardInfos.length;f++)y.push(P({pubkey:new ie(t.rewardInfos[f].vault)})),y.push(P({pubkey:o[f]}));return new Ve({programId:l,keys:y,data:d})}function ir(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new ie(e.programId),new ie(e.id)],c=it({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Je.span);Je.encode({instruction:2,amount:U(s)},l);let m=[P({pubkey:st,isWritable:!1}),P({pubkey:u}),P({pubkey:new ie(t.authority),isWritable:!1}),P({pubkey:new ie(t.lpVault)}),P({pubkey:c}),P({pubkey:o,isWritable:!1,isSigner:!0}),P({pubkey:n})];for(let p=0;p<t.rewardInfos.length;p++)m.push(P({pubkey:new ie(t.rewardInfos[p].vault)})),m.push(P({pubkey:i[p]}));return new Ve({programId:a,keys:m,data:l})}function or(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=it({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Je.span);Je.encode({instruction:12,amount:U(s)},m);let p=[P({pubkey:c}),P({pubkey:new ie(t.authority),isWritable:!1}),P({pubkey:l}),P({pubkey:o,isWritable:!1,isSigner:!0}),P({pubkey:n}),P({pubkey:new ie(t.lpVault)}),P({pubkey:i[0]}),P({pubkey:new ie(t.rewardInfos[0].vault)}),P({pubkey:nr,isWritable:!1}),P({pubkey:st,isWritable:!1})];for(let d=1;d<t.rewardInfos.length;d++)p.push(P({pubkey:i[d]})),p.push(P({pubkey:new ie(t.rewardInfos[d].vault)}));if(a)for(let d of a)p.push(P({pubkey:d}));return new Ve({programId:u,keys:p,data:m})}function sr(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=it({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Je.span);Je.encode({instruction:11,amount:U(s)},m);let p=[P({pubkey:c}),P({pubkey:new ie(t.authority),isWritable:!1}),P({pubkey:l}),P({pubkey:o,isWritable:!1,isSigner:!0}),P({pubkey:n}),P({pubkey:new ie(t.lpVault)}),P({pubkey:i[0]}),P({pubkey:new ie(t.rewardInfos[0].vault)}),P({pubkey:nr,isWritable:!1}),P({pubkey:st,isWritable:!1})];if(a)for(let d of a)p.push(P({pubkey:d}));return new Ve({programId:u,keys:p,data:m})}function va(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=it({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Je.span);Je.encode({instruction:10,amount:U(s)},m);let p=[P({pubkey:c}),P({pubkey:new ie(t.authority),isWritable:!1}),P({pubkey:l}),P({pubkey:o,isWritable:!1,isSigner:!0}),P({pubkey:n}),P({pubkey:new ie(t.lpVault)}),P({pubkey:i[0]}),P({pubkey:new ie(t.rewardInfos[0].vault)}),P({pubkey:nr,isWritable:!1}),P({pubkey:st,isWritable:!1})];if(a)for(let d of a)p.push(P({pubkey:d}));return new Ve({programId:u,keys:p,data:m})}function Wa(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=it({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Je.span);Je.encode({instruction:11,amount:U(s)},m);let p=[P({pubkey:c}),P({pubkey:new ie(t.authority),isWritable:!1}),P({pubkey:l}),P({pubkey:o,isWritable:!1,isSigner:!0}),P({pubkey:n}),P({pubkey:new ie(t.lpVault)}),P({pubkey:i[0]}),P({pubkey:new ie(t.rewardInfos[0].vault)}),P({pubkey:nr,isWritable:!1}),P({pubkey:st,isWritable:!1})];for(let d=1;d<t.rewardInfos.length;d++)p.push(P({pubkey:i[d]})),p.push(P({pubkey:new ie(t.rewardInfos[d].vault)}));if(a)for(let d of a)p.push(P({pubkey:d}));return new Ve({programId:u,keys:p,data:m})}function Da(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new ie(e.programId),new ie(e.id)],c=it({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Je.span);Je.encode({instruction:1,amount:U(s)},l);let m=[P({pubkey:st,isWritable:!1}),P({pubkey:un.programId,isWritable:!1}),P({pubkey:u}),P({pubkey:new ie(t.authority),isWritable:!1}),P({pubkey:new ie(t.lpVault)}),P({pubkey:c}),P({pubkey:o,isWritable:!1,isSigner:!0}),P({pubkey:n})];for(let p=0;p<t.rewardInfos.length;p++)m.push(P({pubkey:new ie(t.rewardInfos[p].vault)})),m.push(P({pubkey:i[p]}));return new Ve({programId:a,keys:m,data:l})}var ar=class extends xe{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Ne)){let n=await St({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:Ro(D(M({},t),{openTime:t.openTime.toString(),endTime:t.endTime.toString()}))});return{rewardPubKey:n.addresses.newAccount,newInstruction:n}}return{rewardPubKey:await this.scope.account.getCreatedTokenAccount({mint:t.mint,associatedOnly:!1})}}async create({poolInfo:e,rewardInfos:t,payer:n,programId:i=Tn,txVersion:o}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new Pe(e.lpMint.address),lockInfo:{lockMint:Ra,lockVault:La},version:6,rewardInfos:t,programId:i},u=this.createTxBuilder(),c=n!=null?n:this.scope.ownerPubKey,l=Ye({fromPublicKey:c,programId:a.programId}),m=await this.scope.connection.getMinimumBalanceForRentExemption($n.span);u.addInstruction({instructions:[Id.createAccountWithSeed({fromPubkey:c,basePubkey:c,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m,space:$n.span,programId:a.programId})]});let{publicKey:p,nonce:d}=Ma({programId:new Pe(a.programId),poolId:l.publicKey}),y=tr({programId:a.programId,poolId:l.publicKey,mint:a.lpMint,type:"lpVault"}),f=[],b=[];for(let h of a.rewardInfos){h.openTime>=h.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",h.openTime.toString()),isNaN(Zt[h.rewardType])&&this.logAndCreateError("rewardType error",h.rewardType),Number(h.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",h.perSecond),f.push(_a(h));let{rewardPubKey:T,newInstruction:I}=await this._getUserRewardInfo({rewardInfo:h,payer:c});I&&u.addInstruction(I),T||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let B=h.mint.equals(Ne)?new Pe(Me.address):h.mint;b.push({rewardMint:B,rewardVault:tr({programId:a.programId,poolId:l.publicKey,mint:B,type:"rewardVault"}),userRewardToken:T})}let g=await this.scope.account.getCreatedTokenAccount({mint:a.lockInfo.lockMint});g||this.logAndCreateError("cannot found lock vault","tokenAccounts",this.scope.account.tokenAccounts);let{instruction:k,instructionType:A}=Ea({farmId:l.publicKey,owner:this.scope.ownerPubKey,farmAuthority:p,lpVault:y,lpMint:a.lpMint,lockVault:a.lockInfo.lockVault,lockMint:a.lockInfo.lockMint,lockUserAccount:g,programId:a.programId,rewardInfo:b,rewardInfoConfig:f,nonce:d});return u.addInstruction({instructions:[k],instructionTypes:[A]}).versionBuild({txVersion:o,extInfo:{farmId:l.publicKey,farmAuthority:p,lpVault:y,lockUserAccount:g,nonce:d}})}async restartReward({farmInfo:e,payer:t,newRewardInfo:n,txVersion:i}){var b;let o=At[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=fe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.openTime>=n.endTime&&this.logAndCreateError("start time error","newRewardInfo",n);let u=t||this.scope.ownerPubKey,c=n.mint.equals(Ne)?new Pe(Me.address):n.mint,l=a.rewardInfos.findIndex(g=>new Pe(g.mint.address).equals(c)),m=s.rewardInfos[l];m||this.logAndCreateError("configuration does not exist","rewardMint",c);let p=(b=m.vault)!=null?b:Ne,d=this.createTxBuilder(),{rewardPubKey:y,newInstruction:f}=await this._getUserRewardInfo({rewardInfo:n,payer:u});return f&&d.addInstruction(f),y||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts),d.addInstruction({instructions:[Oo({payer:this.scope.ownerPubKey,rewardVault:p,userRewardTokenPub:y,farmKeys:a,rewardInfo:n})],instructionTypes:[V.FarmV6Restart]}).versionBuild({txVersion:i})}async restartRewards({farmInfo:e,payer:t,newRewardInfos:n,txVersion:i}){var l;let o=At[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=fe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.forEach(m=>{m.openTime>=m.endTime&&this.logAndCreateError("start time error","newRewardInfo",m)});let u=t||this.scope.ownerPubKey,c=this.createTxBuilder();for(let m of n){let p=m.mint.equals(Ne)?new Pe(Me.address):m.mint,d=a.rewardInfos.findIndex(A=>new Pe(A.mint.address).equals(p)),y=s.rewardInfos[d];y||this.logAndCreateError("configuration does not exist","rewardMint",p);let f=(l=y.vault)!=null?l:Ne,{rewardPubKey:b,newInstruction:g}=await this._getUserRewardInfo({rewardInfo:m,payer:u});g&&c.addInstruction(g),b||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let k=Oo({payer:this.scope.ownerPubKey,rewardVault:f,userRewardTokenPub:b,farmKeys:a,rewardInfo:m});c.addInstruction({instructions:[k],instructionTypes:[V.FarmV6Restart]})}return c.versionBuild({txVersion:i})}async addNewRewardToken(e){let{txVersion:t,farmInfo:n,newRewardInfo:i,payer:o}=e,s=At[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=fe((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder(),l=i.mint.equals(Ne)?new Pe(Me.address):i.mint,m=tr({programId:new Pe(n.programId),poolId:new Pe(n.id),mint:l,type:"rewardVault"}),{rewardPubKey:p,newInstruction:d}=await this._getUserRewardInfo({rewardInfo:i,payer:u});return d&&c.addInstruction(d),p||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),i.mint=l,c.addInstruction({instructions:[No({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:a,rewardVault:m,rewardInfo:i})],instructionTypes:[V.FarmV6CreatorAddReward]}).versionBuild({txVersion:t})}async addNewRewardsToken(e){let{txVersion:t,farmInfo:n,newRewardInfos:i,payer:o}=e,s=At[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=fe((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder();for(let l of i){let m=l.mint.equals(Ne)?new Pe(Me.address):l.mint,p=tr({programId:new Pe(n.programId),poolId:new Pe(n.id),mint:m,type:"rewardVault"}),{rewardPubKey:d,newInstruction:y}=await this._getUserRewardInfo({rewardInfo:l,payer:u});y&&c.addInstruction(y),d||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let f=No({payer:this.scope.ownerPubKey,userRewardTokenPub:d,farmKeys:a,rewardVault:p,rewardInfo:D(M({},l),{mint:m})});c.addInstruction({instructions:[f],instructionTypes:[V.FarmV6CreatorAddReward]})}return c.versionBuild({txVersion:t})}async deposit(e){let{txVersion:t,farmInfo:n,amount:i,feePayer:o,useSOLBalance:s,associatedOnly:a=!0,checkCreateATAOwner:u=!1,userAuxiliaryLedgers:c,computeBudgetConfig:l}=e;this.scope.availability.addFarm===!1&&this.logAndCreateError("farm deposit feature disabled in your region");let{rewardInfos:m,programId:p}=n,d=At[p];ho(d)||this.logAndCreateError("invalid farm program:",n.programId);let[y,f]=[new Pe(n.programId),new Pe(n.id)],b=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],g=it({programId:y,poolId:f,owner:this.scope.ownerPubKey,version:d}),k=this.createTxBuilder();k.addCustomComputeBudget(l);let A={};for(let W of this.scope.account.tokenAccounts)if(a){let j=ye(this.scope.ownerPubKey,W.mint,W.programId).publicKey;W.publicKey&&j.equals(W.publicKey)&&(A[W.mint.toString()]=W.publicKey)}else A[W.mint.toString()]=W.publicKey;let h=b.lpMint,T=A[h.address];T||this.logAndCreateError("you don't have any lp","lp zero",A);let I=[];for(let W of m){let j=s&&W.mint.address===te.toString(),ee=A[W.mint.address];if(!ee){let{account:se,instructionParams:ft}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:W.mint.programId,mint:new Pe(W.mint.address),notUseTokenAccount:j,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!j,associatedOnly:j?!1:a,checkCreateATAOwner:u});ee=se,ft&&k.addInstruction(ft)}A[W.mint.address]=ee,I.push(ee)}let B,x=await this.scope.connection.getAccountInfo(g);if(x&&(B=oi(d).decode(x.data)),n.programId!==Tn.toString()&&!B){let{instruction:W,instructionType:j}=Va({id:f,programId:y,version:d,ledger:g,owner:this.scope.ownerPubKey});k.addInstruction({instructions:[W],instructionTypes:[j]})}let R=To({version:d,rewardInfos:m,rewardTokenAccountsPublicKeys:I});R&&this.logAndCreateError(R);let N={amount:U(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:b,lpAccount:T,rewardAccounts:I,userAuxiliaryLedgers:c==null?void 0:c.map(W=>new Pe(W))},E=d===6?Da(N):d===5?Wa(N):va(N),Q={3:V.FarmV3Deposit,5:V.FarmV5Deposit,6:V.FarmV6Deposit};return k.addInstruction({instructions:[E],instructionTypes:[Q[d]]}).versionBuild({txVersion:t})}async withdraw(e){let{txVersion:t,farmInfo:n,amount:i,deposited:o,useSOLBalance:s,feePayer:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,userAuxiliaryLedgers:l,computeBudgetConfig:m}=e,{rewardInfos:p}=n;this.scope.availability.removeFarm===!1&&this.logAndCreateError("farm withdraw feature disabled in your region");let d=At[n.programId];ho(d)||this.logAndCreateError("invalid farm program:",n.programId);let y=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],f=this.createTxBuilder();f.addCustomComputeBudget(m);let b={};for(let R of this.scope.account.tokenAccounts)if(u){let N=ye(this.scope.ownerPubKey,R.mint).publicKey;R.publicKey&&N.equals(R.publicKey)&&(b[R.mint.toString()]=R.publicKey)}else b[R.mint.toString()]=R.publicKey;if(o)o.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else{let R=it({programId:new Pe(n.programId),poolId:new Pe(n.id),owner:this.scope.ownerPubKey,version:d}),N=await this.scope.connection.getAccountInfo(R);N||this.logAndCreateError("no lp data",{farmId:n.id,version:d,ledgerData:N}),oi(d).decode(N.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id})}let g=y.lpMint.address,k=s&&g===te.toString(),A=b[g.toString()];if(!A){let{account:R,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y.lpMint.programId,mint:new Pe(g),notUseTokenAccount:k,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:k?!1:u,checkCreateATAOwner:c});A=R,N&&f.addInstruction(N)}b[g.toString()]=A;let h=[];for(let R of p){let N=s&&R.mint.address===te.toString(),E=b[R.mint.address];if(!E){let{account:Q,instructionParams:W}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:R.mint.programId,mint:new Pe(R.mint.address),notUseTokenAccount:N,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!N,associatedOnly:N?!1:u,checkCreateATAOwner:c});E=Q,W&&f.addInstruction(W)}b[R.mint.address]=E,h.push(E)}let T=To({version:d,rewardInfos:p,rewardTokenAccountsPublicKeys:h});T&&this.logAndCreateError(T);let I={amount:U(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:A,rewardAccounts:h,userAuxiliaryLedgers:l==null?void 0:l.map(R=>new Pe(R))},B=d===6?ir(I):d===5?or(I):sr(I),x={3:V.FarmV3Withdraw,5:V.FarmV5Withdraw,6:V.FarmV6Withdraw};return f.addInstruction({instructions:[B],instructionTypes:[x[d]]}).versionBuild({txVersion:t})}async withdrawFarmReward({farmInfo:e,withdrawMint:t,txVersion:n}){var d;this.scope.checkOwner();let i=fe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),o=At[e.programId];o!==6&&this.logAndCreateError("invalid farm version",o);let s=e.rewardInfos.findIndex(y=>y.mint.address===Ne.toString()?new Pe(Me.address):t),a=i.rewardInfos[s];a||this.logAndCreateError("withdraw mint error","rewardInfos",e);let u=(d=a==null?void 0:a.vault)!=null?d:Ne,c=this.createTxBuilder(),l;if(t.equals(Ne)){let y=await St({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:Ro(D(M({},a),{openTime:a.openTime,endTime:a.endTime,perSecond:new F(a.perSecond).mul(10**a.mint.decimals).toString()}))});l=y.addresses.newAccount,c.addInstruction(y)}else{let y=await this.scope.account.getCreatedTokenAccount({mint:t});y===null?(l=await this.scope.account.getAssociatedTokenAccount(t),c.addInstruction({instructions:[Td(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[V.CreateATA]})):l=y}let{instruction:m,instructionType:p}=Fa({programId:i.programId,id:i.id,authority:i.authority,lpVault:i.lpVault,rewardVault:u,userRewardToken:l,owner:this.scope.ownerPubKey});return c.addInstruction({instructions:[m],instructionTypes:[p]}).versionBuild({txVersion:n})}async harvestAllRewards(e){let{farmInfoList:t,useSOLBalance:n,feePayer:i,associatedOnly:o=!0,checkCreateATAOwner:s=!1,userAuxiliaryLedgers:a,txVersion:u,computeBudgetConfig:c}=e,l=this.createTxBuilder(),m={};for(let y of this.scope.account.tokenAccounts)if(o){let f=ye(this.scope.ownerPubKey,y.mint).publicKey;y.publicKey&&f.equals(y.publicKey)&&(m[y.mint.toString()]=y.publicKey)}else m[y.mint.toString()]=y.publicKey;let d=(await this.scope.api.fetchFarmKeysById({ids:Object.values(t).map(y=>y.id).join(",")})).reduce((y,f)=>D(M({},y),{[f.id]:f}),{});for(let y of Object.values(t)){let{programId:f,lpMint:b,rewardInfos:g,id:k}=y,A=At[f],h=b.address,T=n&&h===te.toString(),I=m[h];if(!I){let{account:Q,instructionParams:W}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:b.programId,mint:new Pe(h),notUseTokenAccount:T,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:T?!1:o,checkCreateATAOwner:s});I=Q,W&&l.addInstruction(W)}m[h.toString()]=I;let B=[];for(let Q of g){let W=n&&Q.mint.address===te.toString(),j=m[Q.mint.address];if(!j){let{account:ee,instructionParams:se}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Q.mint.programId,mint:new Pe(Q.mint.address),notUseTokenAccount:W,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!W,associatedOnly:W?!1:o,checkCreateATAOwner:s});j=ee,se&&l.addInstruction(se)}m[Q.mint.address]=j,B.push(j)}let x=d[k],R={amount:Se,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:x,lpAccount:I,rewardAccounts:B,userAuxiliaryLedgers:a==null?void 0:a.map(Q=>new Pe(Q))},N=A===6?ir(R):A===5?or(R):sr(R),E={3:V.FarmV3Withdraw,5:V.FarmV5Withdraw,6:V.FarmV6Withdraw};l.addInstruction({instructions:[N],instructionTypes:[E[A]]})}return u===1?l.sizeCheckBuild({computeBudgetConfig:c}):l.sizeCheckBuildV0({computeBudgetConfig:c})}};import{PublicKey as ot}from"@solana/web3.js";import{NATIVE_MINT as Iu,TOKEN_PROGRAM_ID as pi}from"@solana/spl-token";var Zk=L([ze("mintAuthorityOption"),S("mintAuthority"),w("supply"),_("decimals"),_("isInitialized"),ze("freezeAuthorityOption"),S("freezeAuthority")]);import{PublicKey as xd}from"@solana/web3.js";import{MintLayout as qa,TOKEN_PROGRAM_ID as Bd}from"@solana/spl-token";var oP=async({connection:r,mint:e})=>{let t=await r.getAccountInfo(new xd(e));return!t||t.data.length!==qa.span?void 0:qa.decode(t.data)},sP=({mint:r,decimals:e,programId:t=Bd,logoURI:n="",priority:i=3})=>{let o=r.toBase58().substring(0,6);return{address:r.toBase58(),decimals:e,symbol:o,logoURI:n,extensions:{},chainId:101,programId:t.toString(),name:o,tags:[],priority:i}},Ua=r=>new de({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name}),aP=i=>{var o=i,{amount:r,isRaw:e,name:t}=o,n=Te(o,["amount","isRaw","name"]);return new he(new de({mint:n.address,decimals:n.decimals,symbol:n.symbol,name:t}),r,e,t)};function uP(r){return r.address===Tt.address?Me:r}function cP(r){return r.address===Me.address?Tt:r}import{TOKEN_PROGRAM_ID as ur,ASSOCIATED_TOKEN_PROGRAM_ID as Dd}from"@solana/spl-token";import{PublicKey as be,TransactionInstruction as Et,SystemProgram as Wo,SYSVAR_RENT_PUBKEY as qd}from"@solana/web3.js";var Mo=L([_("instruction"),w("amountIn"),w("minAmountOut")]),_o=L([_("instruction"),w("maxAmountIn"),w("amountOut")]),PP=L([_("instruction"),_("nonce")]),Vo=L([_("instruction"),_("nonce"),w("startTime")]),Sd=L([w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalValue"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),w("swapBase2QuoteFee"),z("swapQuoteInAmount"),z("swapBaseOutAmount"),w("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"),w("lpReserve"),q(w(),3,"padding")]),Kd=L([w("accountType"),w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalsValue"),w("abortTradeFactor"),w("priceTickMultiplier"),w("priceTick"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),z("swapQuoteInAmount"),z("swapBaseOutAmount"),w("swapQuote2BaseFee"),w("swapBase2QuoteFee"),S("baseVault"),S("quoteVault"),S("baseMint"),S("quoteMint"),S("lpMint"),S("modelDataAccount"),S("openOrders"),S("marketId"),S("marketProgramId"),S("targetOrders"),S("owner"),q(w(),64,"padding")]),Eo=L([_("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide")]),Fo=L([_("instruction"),w("amountIn")]),hP={4:Sd,5:Kd},Ga=L([w("fee")]);import{PublicKey as Cd}from"@solana/web3.js";var Kn=new Cd("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ln=5e4,Rd=L([w("x"),w("y"),w("price")]),Ld=L([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),q(Rd,ln,"DataElement")]);function Od(r,e){return[0,ln-2]}function Nd(r){return[0,ln-2]}function Md(r){return[0,ln-2]}function _d(r,e,t){let[n,i]=Od(e,t),o=n,s=i,a=0,u=e*r.multiplier/t;for(;o<=s;){if(a=Math.floor((s+o)/2),a===0||a>=ln-2)return[a,a,!1];let c=r.DataElement[a].x*r.multiplier/r.DataElement[a].y,l=r.DataElement[a-1].x*r.multiplier/r.DataElement[a-1].y,m=r.DataElement[a+1].x*r.multiplier/r.DataElement[a+1].y;if(u===c)return[a,a,!0];if(u===l)return[a-1,a-1,!0];if(u===m)return[a+1,a+1,!0];if(u<l)s=a-1;else{if(u>l&&u<c)return[a-1,a,!0];if(u>c&&u<m)return[a,a+1,!0];o=a+1}}return[a,a,!1]}function vo(r,e,t){let[n,i,o]=_d(r,e,t);if(!o)return 0;if(n===i){let s=r.DataElement[n].x;return e*r.multiplier/s}else{let s=r.DataElement[n].x,a=r.DataElement[n].y,u=r.DataElement[i].x,c=r.DataElement[i].y,l=t*(u*a-s*c),m=s*l,p=(u-s)*(e*a-s*t)*c,d=m+p;return e*r.multiplier*l/d}}function cn(r,e,t){return e*r.multiplier/t}function Xa(r,e,t){return e*t/r.multiplier}function Vd(r,e){let[t,n]=Nd(e),i=t,o=n,s=0,a=e;for(;i<o;){if(s=Math.floor((o+i)/2),s<=0||s>ln-2)return[s,s,!1];let u=r.DataElement[s].x,c=r.DataElement[s-1].x,l=r.DataElement[s+1].x;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<c)o=s-1;else{if(a>c&&a<u)return[s-1,s,!0];if(a>u&&a<l)return[s,s+1,!0];i=s+1}}return[s,s,!1]}function Ed(r,e){let[t,n]=Md(e),i=t,o=n,s=0,a=e;for(;i<=o;){if(s=Math.floor((o+i)/2),s<=0||s>=ln-2)return[s,s,!1];let u=r.DataElement[s].y,c=r.DataElement[s-1].y,l=r.DataElement[s+1].y;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<l)i=s+1;else{if(a<c&&a>u)return[s-1,s,!0];if(a<u&&a>l)return[s,s+1,!0];o=s-1}}return[s,s,!1]}function za(r,e,t,n){let i=n?e+t:e-t,[o,s,a]=Vd(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].y,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,p=r.DataElement[o].y,d=r.DataElement[s].y;if(e>=u&&e<=c)return n?[m,d,!0,a]:[l,p,!0,a];{let y,f;return n?(y=l+(m-l)*(e-u)/(c-u),f=p-(i-u)*r.multiplier/m):(y=l+(m-l)*(e-u)/(c-u),f=d+(c-i)*r.multiplier/l),[y,f,!1,a]}}}function Fd(r,e,t,n){let i=n?e-t:e+t,[o,s,a]=Ed(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].x,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,p=r.DataElement[o].y,d=r.DataElement[s].y;if(e>=d&&e<=p)return n?[m,c,!0,a]:[l,u,!0,a];{let y,f;return n?(y=l+(m-l)*(p-e)/(p-d),f=u+m*(p-i)/r.multiplier):(y=l+(m-l)*(p-e)/(p-d),f=c-l*(i-d)/r.multiplier),[y,f,!1,a]}}}function vd(r,e){let t=za(r,e,0,!1);return t[3]?t[0]:0}function Ya(r,e,t,n){let i=vo(r,e,t),o=cn(r,e,i),s=cn(r,t,i),a=cn(r,n,i),u=!0,[c,l,m,p]=za(r,o,a,u);if(!p)return 0;if(m)return n*r.multiplier/c;{let d=s-l;return Xa(r,d,i)}}function Qa(r,e,t,n){let i=vo(r,e,t),o=cn(r,e,i),s=cn(r,t,i),a=cn(r,n,i),u=!1,[c,l,m,p]=Fd(r,s,a,u);if(!p)return 0;if(m)return n*c/r.multiplier;{let d=o-l;return Xa(r,d,i)}}function Wd(r){let e=Ld.decode(r);return{accountType:e.accountType.toNumber(),status:e.status.toNumber(),multiplier:e.multiplier.toNumber(),validDataCount:e.validDataCount.toNumber(),DataElement:e.DataElement.map(t=>({x:t.x.toNumber(),y:t.y.toNumber(),price:t.price.toNumber()}))}}function Ha(r,e,t,n){let i=vd(r,cn(r,e,vo(r,e,t)))/r.multiplier;return n?i:1/i}var Sn=class{constructor({connection:e}){this._layoutData={accountType:0,status:0,multiplier:0,validDataCount:0,DataElement:[]};this.connection=e}get stableModelData(){return this._layoutData}async initStableModelLayout(){if(this._layoutData.validDataCount===0&&this.connection){let e=await this.connection.getAccountInfo(Kn);e&&(this._layoutData=Wd(e==null?void 0:e.data))}}};var ja=ae("Raydium_liquidity_instruction");function Za(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:i,quoteAmountIn:o,fixedSide:s}=r,a=Buffer.alloc(Eo.span);Eo.encode({instruction:3,baseAmountIn:U(i),quoteAmountIn:U(o),fixedSide:s==="base"?Se:qs},a);let u=[P({pubkey:ur,isWritable:!1}),P({pubkey:new be(e.id)}),P({pubkey:new be(t.authority),isWritable:!1}),P({pubkey:new be(t.openOrders),isWritable:!1}),P({pubkey:new be(t.targetOrders)}),P({pubkey:new be(e.lpMint.address)}),P({pubkey:new be(t.vault.A)}),P({pubkey:new be(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(P({pubkey:Kn})),u.push(P({pubkey:new be(e.marketId),isWritable:!1}),P({pubkey:n.baseTokenAccount}),P({pubkey:n.quoteTokenAccount}),P({pubkey:n.lpTokenAccount}),P({pubkey:n.owner,isWritable:!1,isSigner:!0}),P({pubkey:new be(t.marketEventQueue),isWritable:!1})),new Et({programId:new be(e.programId),keys:u,data:a})}function Do(r){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:i}=r,o=fe(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(Fo.span);Fo.encode({instruction:4,amountIn:U(i)},a);let u=[P({pubkey:ur,isWritable:!1}),P({pubkey:o.id}),P({pubkey:o.authority,isWritable:!1}),P({pubkey:o.openOrders}),P({pubkey:o.targetOrders}),P({pubkey:o.mintLp.address}),P({pubkey:o.vault.A}),P({pubkey:o.vault.B})];return s===5?u.push(P({pubkey:Kn})):(u.push(P({pubkey:o.id})),u.push(P({pubkey:o.id}))),u.push(P({pubkey:o.marketProgramId,isWritable:!1}),P({pubkey:o.marketId}),P({pubkey:o.marketBaseVault}),P({pubkey:o.marketQuoteVault}),P({pubkey:o.marketAuthority,isWritable:!1}),P({pubkey:n.lpTokenAccount}),P({pubkey:n.baseTokenAccount}),P({pubkey:n.quoteTokenAccount}),P({pubkey:n.owner,isWritable:!1,isSigner:!0}),P({pubkey:o.marketEventQueue}),P({pubkey:o.marketBids}),P({pubkey:o.marketAsks})),new Et({programId:o.programId,keys:u,data:a})}return new Et({programId:o.programId,keys:[]})}function $a({programId:r,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:i,coinMint:o,pcMint:s,coinVault:a,pcVault:u,withdrawQueue:c,ammTargetOrders:l,poolTempLp:m,marketProgramId:p,marketId:d,userWallet:y,userCoinVault:f,userPcVault:b,userLpVault:g,nonce:k,openTime:A,coinAmount:h,pcAmount:T,ammConfigId:I,feeDestinationId:B}){let x=L([_("instruction"),_("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),R=[{pubkey:ur,isSigner:!1,isWritable:!1},{pubkey:Dd,isSigner:!1,isWritable:!1},{pubkey:Wo.programId,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:I,isSigner:!1,isWritable:!1},{pubkey:B,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!0,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0}],N=Buffer.alloc(x.span);return x.encode({instruction:1,nonce:k,openTime:A,coinAmount:h,pcAmount:T},N),{instruction:new Et({keys:R,programId:r,data:N}),instructionType:V.AmmV4CreatePool}}function FP(r){let e=L([_("instruction"),_("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[P({pubkey:new be(r.id),isWritable:!1}),P({pubkey:new be(r.authority),isWritable:!1}),P({pubkey:new be(r.openOrders),isWritable:!1}),P({pubkey:new be(r.vault.A),isWritable:!1}),P({pubkey:new be(r.vault.B),isWritable:!1}),P({pubkey:new be(r.mintLp.address),isWritable:!1}),P({pubkey:new be(r.marketId),isWritable:!1}),P({pubkey:new be(r.marketEventQueue),isWritable:!1})];return new Et({programId:new be(r.programId),keys:n,data:t})}function Ud({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},i){let o=fe(r),s=Buffer.alloc(Mo.span);Mo.encode({instruction:9,amountIn:U(t),minAmountOut:U(n)},s);let a=[P({pubkey:ur,isWritable:!1}),P({pubkey:o.id}),P({pubkey:o.authority,isWritable:!1}),P({pubkey:o.openOrders})];return i===4&&a.push(P({pubkey:o.targetOrders})),a.push(P({pubkey:o.vault.A}),P({pubkey:o.vault.B})),i===5&&a.push(P({pubkey:Kn})),a.push(P({pubkey:o.marketProgramId,isWritable:!1}),P({pubkey:o.marketId}),P({pubkey:o.marketBids}),P({pubkey:o.marketAsks}),P({pubkey:o.marketEventQueue}),P({pubkey:o.marketBaseVault}),P({pubkey:o.marketQuoteVault}),P({pubkey:o.marketAuthority,isWritable:!1}),P({pubkey:e.tokenAccountIn}),P({pubkey:e.tokenAccountOut}),P({pubkey:e.owner,isWritable:!1})),new Et({programId:o.programId,keys:a,data:s})}function Gd({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},i){let o=fe(r),s=Buffer.alloc(_o.span);_o.encode({instruction:11,maxAmountIn:U(t),amountOut:U(n)},s);let a=[P({pubkey:Wo.programId,isWritable:!1}),P({pubkey:o.id}),P({pubkey:o.authority,isWritable:!1}),P({pubkey:o.openOrders}),P({pubkey:o.targetOrders}),P({pubkey:o.vault.A}),P({pubkey:o.vault.B})];return i===5&&a.push(P({pubkey:Kn})),a.push(P({pubkey:o.marketProgramId,isWritable:!1}),P({pubkey:o.marketId}),P({pubkey:o.marketBids}),P({pubkey:o.marketAsks}),P({pubkey:o.marketEventQueue}),P({pubkey:o.marketBaseVault}),P({pubkey:o.marketQuoteVault}),P({pubkey:o.marketAuthority,isWritable:!1}),P({pubkey:e.tokenAccountIn}),P({pubkey:e.tokenAccountOut}),P({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Et({programId:o.programId,keys:a,data:s})}function ai(r){let{poolKeys:e,version:t,userKeys:n,amountIn:i,amountOut:o,fixedSide:s}=r;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return Ud(D(M({},a),{amountIn:i,minAmountOut:o}),t);if(s==="out")return Gd(D(M({},a),{maxAmountIn:i,amountOut:o}),t);ja.logWithError("invalid params","params",r)}throw ja.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function vP({poolKeys:r,userKeys:e,startTime:t}){let n=Buffer.alloc(Vo.span);Vo.encode({instruction:0,nonce:5,startTime:U(t)},n);let i=fe(r),o=[P({pubkey:ur,isWritable:!1}),P({pubkey:Wo.programId,isWritable:!1}),P({pubkey:qd,isWritable:!1}),P({pubkey:i.id}),P({pubkey:i.authority,isWritable:!1}),P({pubkey:i.openOrders}),P({pubkey:i.mintLp.address}),P({pubkey:i.mintA.address,isWritable:!1}),P({pubkey:i.mintB.address,isWritable:!1}),P({pubkey:i.vault.A,isWritable:!1}),P({pubkey:i.vault.B,isWritable:!1}),P({pubkey:i.id}),P({pubkey:i.targetOrders}),P({pubkey:e.lpTokenAccount}),P({pubkey:i.id,isWritable:!1}),P({pubkey:i.marketProgramId,isWritable:!1}),P({pubkey:i.marketId,isWritable:!1}),P({pubkey:e.payer,isSigner:!0})];return new Et({programId:i.programId,keys:o,data:n})}function Ja({poolKeys:r}){let e=L([_("instruction"),_("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[P({pubkey:new be(r.id),isWritable:!1}),P({pubkey:new be(r.authority),isWritable:!1}),P({pubkey:new be(r.openOrders),isWritable:!1}),P({pubkey:new be(r.vault.A),isWritable:!1}),P({pubkey:new be(r.vault.B),isWritable:!1}),P({pubkey:new be(r.mintLp.address),isWritable:!1}),P({pubkey:new be(r.marketId),isWritable:!1}),P({pubkey:new be(r.marketEventQueue),isWritable:!1})];return{instruction:new Et({programId:new be(r.programId),keys:n,data:t})}}import{TOKEN_PROGRAM_ID as qe,TOKEN_2022_PROGRAM_ID as Jt,ASSOCIATED_TOKEN_PROGRAM_ID as bu}from"@solana/spl-token";import{PublicKey as v,TransactionInstruction as kt,SystemProgram as Cn,Keypair as Ho}from"@solana/web3.js";import gu from"bn.js";import tp from"bn.js";function eu(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function DP(r){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,r,!1),new Uint8Array(e)}function qP(r){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,r,!1),new Uint8Array(e)}function ui(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function qo(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function Uo(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function cr(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function tu(r,e){return cr(r,e)?null:qo(r,e)}function nu(r,e){return cr(r,e)?null:Uo(r,e)}var Xd=Buffer.from("amm_config","utf8"),zd=Buffer.from("pool","utf8"),Yd=Buffer.from("pool_vault","utf8"),Qd=Buffer.from("pool_reward_vault","utf8"),ru=Buffer.from("position","utf8"),Hd=Buffer.from("tick_array","utf8"),jd=Buffer.from("operation","utf8"),Zd=Buffer.from("pool_tick_array_bitmap_extension","utf8");function zP(r,e){return oe([Xd,eu(e)],r)}function iu(r,e,t,n){return oe([zd,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Go(r,e,t){return oe([Yd,e.toBuffer(),t.toBuffer()],r)}function ou(r,e,t){return oe([Qd,e.toBuffer(),t.toBuffer()],r)}function ge(r,e,t){return oe([Hd,e.toBuffer(),ui(t)],r)}function mn(r,e,t,n){return oe([ru,e.toBuffer(),ui(t),ui(n)],r)}function ct(r,e){return oe([ru,e.toBuffer()],r)}function ci(r){return oe([Buffer.from("metadata","utf8"),kn.toBuffer(),r.toBuffer()],kn)}function lr(r){return oe([jd],r)}function lt(r,e){return oe([Zd,e.toBuffer()],r)}import Kt from"bn.js";var me=new Kt(0),at=new Kt(1),Ft=new Kt(-1),ut=new Kt(1).shln(64),li=new Kt(1).shln(128),Xo=ut.sub(at),mr=64,su=li.subn(1),Qe=-443636,et=-Qe,Ct=new Kt("4295048016"),Rt=new Kt("79226673521066979257578248091"),au=16,uu="59543866431248",cu="184467440737095516",lu="15793534762490258745",mi=new Kt(10).pow(new Kt(6)),$d=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))($d||{}),HP={[500]:10,[3e3]:60,[1e4]:200},jP={version:6,liquidity:me,tickCurrent:0,observationIndex:0,observationUpdateDuration:0,feeGrowthGlobalX64A:me,feeGrowthGlobalX64B:me,protocolFeesTokenA:me,protocolFeesTokenB:me,swapInAmountTokenA:me,swapOutAmountTokenB:me,swapInAmountTokenB:me,swapOutAmountTokenA:me,tickArrayBitmap:[],rewardInfos:[],day:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},week:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},month:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},tvl:0},mu={tvl:0,volumeQuote:0,mintAmountA:0,mintAmountB:0,rewardDefaultInfos:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,day:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},week:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},month:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},pooltype:[]},ZP=new Kt("18446744073700000000");var Jd=15,le=class{static async getTickArrays(e,t,n,i,o,s,a){let u=[],c=G.getTickArrayStartIndexByTick(i,o),l=G.getInitializedTickArrayInRange(s,a,o,c,Math.floor(Jd/2));for(let d=0;d<l.length;d++){let{publicKey:y}=ge(t,n,l[d]);u.push(y)}let m=(await It(e,u)).map(d=>d!==null?dr.decode(d.data):null),p={};for(let d=0;d<u.length;d++){let y=m[d];y!==null&&(p[y.startTickIndex]=D(M({},y),{address:u[d]}))}return p}static nextInitializedTick(e,t,n,i,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,i,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=G.getNextTickArrayStartIndex(c,o,s),this.checkIsValidStartIndex(c,o))throw new Error("No enough initialized tickArray");let l=n[c];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:p,tickArrayStartTickIndex:d}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,p,d]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,i,o){let s=Math.floor(e/le.tickCount(t)),a=n?G.searchLowBitFromStart(i,o,s-1,1,t):G.searchHightBitFromStart(i,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,i){let o;if(i){let a=_e-1;for(;a>=0;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a-1}}else{let a=0;for(;a<_e;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=ge(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=G.getTickArrayStartIndexByTick(i,o),u=Math.floor((i-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u-1}else for(u=u+1;u<_e;){let p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u+1}let{publicKey:m}=ge(e,t,a);return{initializedTick:l,tickArrayAddress:m,tickArrayStartTickIndex:c.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(G.checkIsOutOfBoundary(e)){if(e>et)return!1;let n=G.getTickArrayStartIndexByTick(Qe,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return _e*e}};import re from"bn.js";import{PublicKey as $t}from"@solana/web3.js";import Ce from"bn.js";var zo=14,vt=class{static maxTickInTickarrayBitmap(e){return e*_e*dn}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(i+=1);let o=n*i;return e<0?{minValue:-o,maxValue:-o+n}:{minValue:o,maxValue:o+n}}static nextInitializedTickArrayStartIndex(e,t,n,i){if(!le.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-le.tickCount(n):t+le.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*_e,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(i){let l=e.shln(1024-c-1),m=tu(1024,l);if(m!==null){let p=(c-m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=nu(1024,l);if(m!==null){let p=(c+m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:o-le.tickCount(n)}}}},pr=class{static getBitmapOffset(e,t){if(!le.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=vt.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&i--,i}static getBitmap(e,t,n){let i=this.getBitmapOffset(e,t);return e<0?{offset:i,tickarrayBitmap:n.negativeTickArrayBitmap[i]}:{offset:i,tickarrayBitmap:n.positiveTickArrayBitmap[i]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:i}=this.extensionTickBoundary(t);if(e>=i&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=vt.maxTickInTickarrayBitmap(e),n=-t;if(et<=t)throw Error(`extensionTickBoundary check error: ${et}, ${t}`);if(n<=Qe)throw Error(`extensionTickBoundary check error: ${n}, ${Qe}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:i}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:G.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=le.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,i);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,i){let{minValue:o,maxValue:s}=vt.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let u=G.mergeTickArrayBitmap(e).shln(dn-1-a),c=cr(512,u)?null:qo(512,u);if(c!==null){let l=t-c*le.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=G.mergeTickArrayBitmap(e).shrn(a),c=cr(512,u)?null:Uo(512,u);if(c!==null){let l=t+c*le.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-le.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%vt.maxTickInTickarrayBitmap(t),i=Math.floor(n/le.tickCount(t));return e<0&&n!=0&&(i=dn-i),i}};import Lt from"bn.js";var fr=class{static getfeeGrowthInside(e,t,n){let i=new Lt(0),o=new Lt(0);e.tickCurrent>=t.tick?(i=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(i=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),o=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new Lt(0),a=new Lt(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let u=$.wrappingSubU128($.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),c=$.wrappingSubU128($.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=$.mulDivFloor($.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,ut),u=t.tokenFeesOwedA.add(a),c=$.mulDivFloor($.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,ut),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=$.mulDivFloor($.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,ut),u=t.tokenFeesOwedA.add(a),c=$.mulDivFloor($.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,ut),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,i){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=$.wrappingSubU128(u,c.growthInsideLastX64),m=$.mulDivFloor(l,t.liquidity,ut),p=c.rewardAmountOwed.add(m);o.push(p)}return o}static GetPositionRewards(e,t,n,i){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=$.wrappingSubU128(u,c.growthInsideLastX64),m=$.mulDivFloor(l,t.liquidity,ut),p=c.rewardAmountOwed.add(m);o.push(p)}return o}static getRewardGrowthInside(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Lt(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Lt(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push($.wrappingSubU128($.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Lt(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Lt(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push($.wrappingSubU128($.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:o,epochInfo:s}){var b,g,k,A;let a=Z.priceToSqrtPriceX64(new F(e.price),e.mintA.decimals,e.mintB.decimals),u=Z.getSqrtPriceX64FromTick(t.tickLower),c=Z.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+i:1-i,m=ce.getAmountsFromLiquidity(a,u,c,n,o),[p,d]=[Ae(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),Ae(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[y,f]=[Ae(new Lt(new F(m.amountA.toString()).mul(l).toFixed(0)),(k=e.mintA.extensions)==null?void 0:k.feeConfig,s,!0),Ae(new Lt(new F(m.amountB.toString()).mul(l).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,s,!0)];return{liquidity:n,amountA:p,amountB:d,amountSlippageA:y,amountSlippageB:f,expirationTime:sn(p.expirationTime,d.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as du}from"@solana/spl-token";var He=class{static getOutputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintA.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");a.push(l);let{amountCalculated:m,accounts:p,sqrtPriceX64:d,feeAmount:y}=pn.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,c,o);return a.push(...p),{expectedAmountOut:m.mul(Ft),remainingAccounts:a,executionPrice:d,feeAmount:y}}static getInputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:b}=ge(e.programId,e.id,f.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:m,accounts:p,sqrtPriceX64:d,feeAmount:y}=pn.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(Ft),c,o);return a.push(...p),{expectedAmountIn:m,remainingAccounts:a,executionPrice:d,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=He.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?pr.checkTickArrayIsInit(le.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):G.checkTickArrayIsInitialized(G.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=ge(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,le.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=ge(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/le.tickCount(e.tickSpacing)),i=t?G.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):G.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return i.length>0?{isExist:!0,nextStartIndex:i[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=le.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=vt.nextInitializedTickArrayStartIndex(G.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=pr.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Qe||t>et)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],p=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(p===void 0)throw Error("get new reward mint info error");let d=D(M({},m),{perSecond:$.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new $t(p)});if(d.tokenMint.equals($t.default))continue;if(n<=d.openTime.toNumber()||i.eq(me)){s.push(d);continue}let y=new Ce(Math.min(d.endTime.toNumber(),n)),f=y.sub(d.lastUpdateTime),b=$.mulDivFloor(f,d.emissionsPerSecondX64,i),g=d.rewardGrowthGlobalX64.add(b),k=$.mulDivFloor(f,d.emissionsPerSecondX64,ut),A=d.rewardTotalEmissioned.add(k);s.push(D(M({},d),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:A,lastUpdateTime:y}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let o of t){let s=G.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=vt.maxTickInTickarrayBitmap(e),n=-t;return t>et&&(t=le.getArrayStartIndex(et,e)+le.tickCount(e)),n<Qe&&(n=le.getArrayStartIndex(Qe,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!le.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/le.tickCount(t)*dn}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await hn(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=fu.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let i={},o=[];for(let u of t){let c=G.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=G.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:p}=ge(u.programId,u.id,m);o.push({pubkey:p}),i[p.toString()]=u.id}}let s=await hn(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=i[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=dr.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=D(M({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:i=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(p=>p.accountInfo.mint),c=[];for(let p of u)for(let d of s)c.push(ct(d,p).publicKey);let l=await It(t,c,{batchRequest:i}),m={};for(let p of l){if(p===null)continue;let d=di.decode(p.data),y=d.poolId.toString(),f=e.find(x=>x.state.id.toBase58()===y);if(f===void 0)continue;let b=f.state,g=G._getTickPriceLegacy({poolInfo:b,tick:d.tickLower,baseIn:!0}),k=G._getTickPriceLegacy({poolInfo:b,tick:d.tickUpper,baseIn:!0}),{amountA:A,amountB:h}=ce.getAmountsFromLiquidity(b.sqrtPriceX64,g.tickSqrtPriceX64,k.tickSqrtPriceX64,d.liquidity,!1),T=1/(1-Math.sqrt(Math.sqrt(g.price.div(k.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:d.poolId,nftMint:d.nftMint,priceLower:g.price,priceUpper:k.price,amountA:A,amountB:h,tickLower:d.tickLower,tickUpper:d.tickUpper,liquidity:d.liquidity,feeGrowthInsideLastX64A:d.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:d.feeGrowthInsideLastX64B,tokenFeesOwedA:d.tokenFeesOwedA,tokenFeesOwedB:d.tokenFeesOwedB,rewardInfos:d.rewardInfos.map(x=>D(M({},x),{pendingReward:new Ce(0)})),leverage:T,tokenFeeAmountA:new Ce(0),tokenFeeAmountB:new Ce(0)}];let I=await G.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickLower,f.state.tickSpacing),B=await G.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickLower}`]=I,m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickUpper}`]=B}if(o){let p=Object.values(m),d=await It(t,p,{batchRequest:i}),y={};for(let f=0;f<p.length;f++){let b=d[f];if(b===null)continue;let g=p[f].toString();y[g]=dr.decode(b.data)}for(let{state:f,positionAccount:b}of e)if(!!b)for(let g of b){let k=`${f.programId.toString()}-${f.id.toString()}-${g.tickLower}`,A=`${f.programId.toString()}-${f.id.toString()}-${g.tickUpper}`,h=y[m[k].toString()],T=y[m[A].toString()],I=h.ticks[G.getTickOffsetInArray(g.tickLower,f.tickSpacing)],B=T.ticks[G.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:R}=await fr.GetPositionFees(f,g,I,B),N=await fr.GetPositionRewards(f,g,I,B);g.tokenFeeAmountA=x.gte(new Ce(0))?x:new Ce(0),g.tokenFeeAmountB=R.gte(new Ce(0))?R:new Ce(0);for(let E=0;E<N.length;E++)g.rewardInfos[E].pendingReward=N[E].gte(new Ce(0))?N[E]:new Ce(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:o,slippage:s,priceLimit:a=new F(0)}){var N;let u,c=n.toBase58()===e.mintA.address,[l,m]=c?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new F(0))?u=c?Ct.add(new Ce(1)):Rt.sub(new Ce(1)):u=Z.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=Ae(o,l,i,!1),{expectedAmountOut:d,remainingAccounts:y,executionPrice:f,feeAmount:b}=He.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((N=p.fee)!=null?N:me),u),g=Ae(d,m,i,!1),k=Z.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),A=c?k:new F(1).div(k),h=d.mul(new Ce(Math.floor((1-s)*1e10))).div(new Ce(1e10)),T=Ae(h,m,i,!1),I=c?e.currentPrice:new F(1).div(e.currentPrice),B=new F(A).sub(I).abs(),x=I,R=new ve(new F(B).mul(10**15).toFixed(0),new F(x).mul(10**15).toFixed(0));return{realAmountIn:p,amountOut:g,minAmountOut:T,expirationTime:sn(p.expirationTime,g.expirationTime),currentPrice:e.currentPrice,executionPrice:A,priceImpact:R,fee:b,remainingAccounts:y}}static async computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:i,slippage:o,epochInfo:s}){let a=i.address===e.mintB.address,[u,c]=a?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,m]=[new de(D(M({},u),{mint:u.address,isToken2022:u.programId===du.toBase58()})),new de(D(M({},c),{mint:c.address,isToken2022:c.programId===du.toBase58()}))],{realAmountIn:p,amountOut:d,minAmountOut:y,expirationTime:f,currentPrice:b,executionPrice:g,priceImpact:k,fee:A,remainingAccounts:h}=await He.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new $t(u.address),amountIn:n,slippage:o,epochInfo:s}),T=D(M({},p),{amount:new he(l,p.amount),fee:p.fee===void 0?void 0:new he(l,p.fee)}),I=D(M({},d),{amount:new he(m,d.amount),fee:d.fee===void 0?void 0:new he(m,d.fee)}),B=D(M({},y),{amount:new he(m,y.amount),fee:y.fee===void 0?void 0:new he(m,y.fee)}),x=new Ge({baseToken:l,denominator:new Ce(10).pow(new Ce(20+l.decimals)),quoteToken:m,numerator:b.mul(new F(10**(20+m.decimals))).toFixed(0)}),R=new Ge({baseToken:l,denominator:new Ce(10).pow(new Ce(20+l.decimals)),quoteToken:m,numerator:g.mul(new F(10**(20+m.decimals))).toFixed(0)}),N=new he(l,A);return{realAmountIn:T,amountOut:I,minAmountOut:B,expirationTime:f,currentPrice:x,executionPrice:R,priceImpact:k,fee:N,remainingAccounts:h}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var y,f,b;let o=e[t],s=G.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=G.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,m=a-s,p=o.priceMax-o.priceMin,d;return l<=0?d=0:m===l?d=p/l:p===l?d=l/m:d=l/p*(l/m),{feeApr:o.feeApr*d,rewardsApr:[(y=o.rewardApr[0])!=null?y:0*d,(f=o.rewardApr[1])!=null?f:0*d,(b=o.rewardApr[2])!=null?b:0*d],apr:o.apr*d}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:i,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=i[Ei(e.mintA.address).toString()],p=i[Ei(e.mintB.address).toString()],d=e.mintA.decimals,y=e.mintB.decimals;if(!l||!m||!p)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=Z.priceToSqrtPriceX64(new F(e.price),e.mintA.decimals,e.mintB.decimals),b=Z.getSqrtPriceX64FromTick(s),g=Z.getSqrtPriceX64FromTick(a),{amountSlippageA:k,amountSlippageB:A}=ce.getAmountsFromLiquidityWithSlippage(f,b,g,t,!1,!1,0),{amountSlippageA:h,amountSlippageB:T}=ce.getAmountsFromLiquidityWithSlippage(f,b,g,o,!1,!1,0),I=new F(k.toString()).div(new F(10).pow(d)).mul(m.value).add(new F(A.toString()).div(new F(10).pow(y)).mul(p.value)),B=new F(h.toString()).div(new F(10).pow(d)).mul(m.value).add(new F(T.toString()).div(new F(10).pow(y)).mul(p.value)),x=B.div(I.add(B)).div(B),N=new F(l.volumeFee).mul(365).div(c).mul(x).mul(100).toNumber(),E=3600*24*365,Q=e.rewardDefaultInfos.map(W=>{var se,ft;let j=W.mint.decimals,ee=i[W.mint.address];return u<((se=W.startTime)!=null?se:0)||u>((ft=W.endTime)!=null?ft:0)||!W.perSecond||!ee||j===void 0?0:new F(ee.value).mul(new F(W.perSecond).mul(E)).div(new F(10).pow(j)).mul(x).mul(100).toNumber()});return{feeApr:N,rewardsApr:Q,apr:N+Q.reduce((W,j)=>W+j,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var g,k;let l=Z.priceToSqrtPriceX64(new F(e.price),e.mintA.decimals,e.mintB.decimals),m=Z.getSqrtPriceX64FromTick(n),p=Z.getSqrtPriceX64FromTick(i),d=a?1-s:1+s,y=Ae(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,u,!c),f=new Ce(new F(y.amount.sub((k=y.fee)!=null?k:me).toString()).mul(d).toFixed(0)),b;if(l.lte(m))b=t?ce.getLiquidityFromTokenAmountA(m,p,f,!a):new Ce(0);else if(l.lte(p)){let A=ce.getLiquidityFromTokenAmountA(l,p,f,!a),h=ce.getLiquidityFromTokenAmountB(m,l,f);b=t?A:h}else b=t?new Ce(0):ce.getLiquidityFromTokenAmountB(m,p,f);return He.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:i,liquidity:b,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:o,slippage:s,add:a}){var b,g,k,A;let u=Z.getSqrtPriceX64FromTick(n),c=Z.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,m=ce.getAmountsFromLiquidity(Z.priceToSqrtPriceX64(new F(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[p,d]=[Ae(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),Ae(m.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[y,f]=[Ae(m.amountA.muln(l),(k=t.mintA.extensions)==null?void 0:k.feeConfig,e,!0),Ae(m.amountB.muln(l),(A=t.mintB.extensions)==null?void 0:A.feeConfig,e,!0)];return{liquidity:o,amountA:p,amountB:d,amountSlippageA:y,amountSlippageB:f,expirationTime:sn(p.expirationTime,d.expirationTime)}}static async fetchComputeClmmInfo({owner:e,connection:t,poolInfo:n}){let i=await t.getAccountInfo(new $t(n.id));if(!i)throw new Error(`pool not found ${n.id}`);let o=pu.decode(i.data),s=lt(e,new $t(n.id)).publicKey,a=await He.fetchExBitmaps({connection:t,exBitmapAddress:[s],batchRequest:!1});return D(M({},o),{id:new $t(n.id),programId:new $t(n.programId),mintA:n.mintA,mintB:n.mintB,ammConfig:D(M({},n.config),{id:new $t(n.config.id),fundOwner:""}),currentPrice:new F(n.price),exBitmapInfo:a[s.toBase58()],startTime:o.startTime.toNumber()})}};function Vh({poolInfo:r,tickLower:e,tickUpper:t,amountA:n,amountB:i,slippage:o,add:s,epochInfo:a,amountHasFee:u}){var A,h,T,I;let[c,l,m,p]=e<t?[e,t,n,i]:[t,e,i,n],d=Z.priceToSqrtPriceX64(new F(r.price),r.mintA.decimals,r.mintB.decimals),y=Z.getSqrtPriceX64FromTick(c),f=Z.getSqrtPriceX64FromTick(l),[b,g]=[Ae(m,(A=r.mintA.extensions)==null?void 0:A.feeConfig,a,!u),Ae(p,(h=r.mintB.extensions)==null?void 0:h.feeConfig,a,!u)],k=ce.getLiquidityFromTokenAmounts(d,y,f,b.amount.sub((T=b.fee)!=null?T:me),g.amount.sub((I=g.fee)!=null?I:me));return ce.getAmountsOutFromLiquidity({poolInfo:r,tickLower:e,tickUpper:t,liquidity:k,slippage:o,add:s,epochInfo:a,amountAddFee:!u})}var $=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(me)||(o=o.add(at)),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(at)).div(n)}static x64ToDecimal(e,t){return new F(e.toString()).div(F.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new re(e.mul(F.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(li).sub(t).mod(li)}};function Ee(r,e){return Yo(r.mul(e),64,256)}function ep(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Yo(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var Z=class{static sqrtPriceX64ToPrice(e,t,n){return $.x64ToDecimal(e).pow(2).mul(F.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return $.decimalToX64(e.mul(F.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){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 i?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,i){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 i?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,i){if(n.eq(me))return e;let o=t.shln(mr);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?$.mulDivCeil(s,e,a):$.mulDivRoundingUp(s,at,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 $.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(mr);if(i)return e.add(o.div(t));{let s=$.mulDivRoundingUp(o,at,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<Qe||e>et)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new re("18445821805675395072"):new re("18446744073709551616");return(t&2)!=0&&(n=Ee(n,new re("18444899583751176192"))),(t&4)!=0&&(n=Ee(n,new re("18443055278223355904"))),(t&8)!=0&&(n=Ee(n,new re("18439367220385607680"))),(t&16)!=0&&(n=Ee(n,new re("18431993317065453568"))),(t&32)!=0&&(n=Ee(n,new re("18417254355718170624"))),(t&64)!=0&&(n=Ee(n,new re("18387811781193609216"))),(t&128)!=0&&(n=Ee(n,new re("18329067761203558400"))),(t&256)!=0&&(n=Ee(n,new re("18212142134806163456"))),(t&512)!=0&&(n=Ee(n,new re("17980523815641700352"))),(t&1024)!=0&&(n=Ee(n,new re("17526086738831433728"))),(t&2048)!=0&&(n=Ee(n,new re("16651378430235570176"))),(t&4096)!=0&&(n=Ee(n,new re("15030750278694412288"))),(t&8192)!=0&&(n=Ee(n,new re("12247334978884435968"))),(t&16384)!=0&&(n=Ee(n,new re("8131365268886854656"))),(t&32768)!=0&&(n=Ee(n,new re("3584323654725218816"))),(t&65536)!=0&&(n=Ee(n,new re("696457651848324352"))),(t&131072)!=0&&(n=Ee(n,new re("26294789957507116"))),(t&262144)!=0&&(n=Ee(n,new re("37481735321082"))),e>0&&(n=su.div(n)),n}static getTickFromPrice(e,t,n){return Z.getTickFromSqrtPriceX64(Z.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Rt)||e.lt(Ct))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new re(t-64),i=ep(n,32,128),o=new re("8000000000000000","hex"),s=0,a=new re(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new re(0))&&s<au;){u=u.mul(u);let y=u.shrn(127);u=u.shrn(63+y.toNumber()),a=a.add(o.mul(y)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=i.add(c).mul(new re(uu)),p=Yo(m.sub(new re(cu)),64,128).toNumber(),d=Yo(m.add(new re(lu)),64,128).toNumber();return p==d?p:Z.getSqrtPriceX64FromTick(d).lte(e)?d:p}},fn=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=Z.getTickFromSqrtPriceX64(Z.priceToSqrtPriceX64(e,n,i))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,i){let o=fn.getTickWithPriceAndTickspacing(e,t,n,i),s=Z.getSqrtPriceX64FromTick(o);return Z.sqrtPriceX64ToPrice(s,n,i)}},ce=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(me))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(mr),s=t.sub(e);return i?$.mulDivRoundingUp($.mulDivCeil(o,s,t),at,e):$.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(me))throw new Error("sqrtPriceX64A must greater than 0");return i?$.mulDivCeil(n,t.sub(e),ut):$.mulDivFloor(n,t.sub(e),ut)}static getLiquidityFromTokenAmountA(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return i?$.mulDivRoundingUp(a,at,Xo):a.shrn(mr)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),$.mulDivFloor(n,Xo,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return ce.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=ce.getLiquidityFromTokenAmountA(e,n,i,!1),a=ce.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return ce.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:ce.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new re(0)};if(e.lt(n)){let s=ce.getTokenAmountAFromLiquidity(e,n,i,o),a=ce.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new re(0),amountB:ce.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:u,amountB:c}=ce.getAmountsFromLiquidity(e,t,n,i,s),l=o?1+a:1-a,m=new re(new F(u.toString()).mul(l).toFixed(0)),p=new re(new F(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:p}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:i,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var k,A,h,T;let c=Z.priceToSqrtPriceX64(new F(e.price),e.mintA.decimals,e.mintB.decimals),l=Z.getSqrtPriceX64FromTick(t),m=Z.getSqrtPriceX64FromTick(n),p=s?1+o:1-o,d=ce.getAmountsFromLiquidity(c,l,m,i,s),[y,f]=[Ae(d.amountA,(k=e.mintA.extensions)==null?void 0:k.feeConfig,a,u),Ae(d.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)],[b,g]=[Ae(new re(new F(d.amountA.toString()).mul(p).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,u),Ae(new re(new F(d.amountB.toString()).mul(p).toFixed(0)),(T=e.mintB.extensions)==null?void 0:T.feeConfig,a,u)];return{liquidity:i,amountA:y,amountB:f,amountSlippageA:b,amountSlippageB:g,expirationTime:sn(y.expirationTime,f.expirationTime)}}},pn=class{static swapCompute(e,t,n,i,o,s,a,u,c,l,m,p,d,y){if(p.eq(me))throw new Error("amountSpecified must not be 0");if(y||(y=s?Ct.add(at):Rt.sub(at)),s){if(y.lt(Ct))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(y.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(y.gt(Rt))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(y.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let f=p.gt(me),b={amountSpecifiedRemaining:p,amountCalculated:me,sqrtPriceX64:m,tick:c>d?Math.min(d+le.tickCount(l)-1,c):d,accounts:[],liquidity:u,feeAmount:new re(0)},g=d,k=n[d],A=0,h=!s&&k.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(me)&&!b.sqrtPriceX64.eq(y);){if(A>10)throw Error("liquidity limit");let T={};T.sqrtPriceStartX64=b.sqrtPriceX64;let I=G.nextInitTick(k,b.tick,l,s,h),B=I||null,x=null;if(!(B!=null&&B.liquidityGross.gtn(0))){let N=He.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},g,s);if(!N.isExist)throw Error("swapCompute LiquidityInsufficient");g=N.nextStartIndex;let{publicKey:E}=ge(e,t,g);x=E,k=n[g],B=G.firstInitializedTick(k,s)}T.tickNext=B.tick,T.initialized=B.liquidityGross.gtn(0),d!==g&&x&&(b.accounts.push(x),d=g),T.tickNext<Qe?T.tickNext=Qe:T.tickNext>et&&(T.tickNext=et),T.sqrtPriceNextX64=Z.getSqrtPriceX64FromTick(T.tickNext);let R;if(s&&T.sqrtPriceNextX64.lt(y)||!s&&T.sqrtPriceNextX64.gt(y)?R=y:R=T.sqrtPriceNextX64,[b.sqrtPriceX64,T.amountIn,T.amountOut,T.feeAmount]=pn.swapStepCompute(b.sqrtPriceX64,R,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(T.feeAmount),f?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(T.amountIn.add(T.feeAmount)),b.amountCalculated=b.amountCalculated.sub(T.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(T.amountOut),b.amountCalculated=b.amountCalculated.add(T.amountIn.add(T.feeAmount))),b.sqrtPriceX64.eq(T.sqrtPriceNextX64)){if(T.initialized){let N=B.liquidityNet;s&&(N=N.mul(Ft)),b.liquidity=ce.addDelta(b.liquidity,N)}h=T.tickNext!=b.tick&&!s&&k.startTickIndex===T.tickNext,b.tick=s?T.tickNext-1:T.tickNext}else if(b.sqrtPriceX64!=T.sqrtPriceStartX64){let N=Z.getTickFromSqrtPriceX64(b.sqrtPriceX64);h=N!=b.tick&&!s&&k.startTickIndex===N,b.tick=N}++A}try{let{nextStartIndex:T,isExist:I}=le.nextInitializedTickArray(b.tick,l,s,i,o);I&&d!==T&&(b.accounts.push(ge(e,t,T).publicKey),d=T)}catch{}return{amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts}}static swapStepCompute(e,t,n,i,o){let s={sqrtPriceX64Next:new re(0),amountIn:new re(0),amountOut:new re(0),feeAmount:new re(0)},a=e.gte(t),u=i.gte(me);if(u){let l=$.mulDivFloor(i,mi.sub(new re(o.toString())),mi);s.amountIn=a?ce.getTokenAmountAFromLiquidity(t,e,n,!0):ce.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=Z.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?ce.getTokenAmountBFromLiquidity(t,e,n,!1):ce.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(Ft).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=Z.getNextSqrtPriceX64FromOutput(e,n,i.mul(Ft),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=ce.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=ce.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:ce.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:ce.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(i.mul(Ft))&&(s.amountOut=i.mul(Ft)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=i.sub(s.amountIn):s.feeAmount=$.mulDivCeil(s.amountIn,new re(o),mi.sub(new re(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var _e=60,dn=512,G=class{static getTickArrayAddressByTick(e,t,n,i){let o=G.getTickArrayStartIndexByTick(n,i),{publicKey:s}=ge(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=G.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=_e)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=le.tickCount(t),i=e/n;return e<0&&e%n!=0?i=Math.ceil(i)-1:i=Math.floor(i),i}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*le.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*_e,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*_e,o=Math.floor(t/i)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*i}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*_e:e+t*_e}static mergeTickArrayBitmap(e){let t=new tp(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,i,o){let s=Math.floor(i/(n*_e));return[...G.searchLowBitFromStart(e,t,s-1,o,n),...G.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return G.searchHightBitFromStart(e,t,0,dn,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=G.getAllInitializedTickArrayStartIndex(n,i,o);for(let u of a){let{publicKey:c}=ge(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>G.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n--,a.length===i)break}let u=le.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>G.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n++,a.length===i)break}let u=le.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<Qe||e>et}static nextInitTick(e,t,n,i,o){if(le.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(i)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<_e;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=_e-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<_e;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let i=Z.getSqrtPriceX64FromTick(t),o=Z.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new F(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new F(1).div(t),o=fn.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=Z.getSqrtPriceX64FromTick(o),a=Z.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new F(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=Z.getSqrtPriceX64FromTick(t),o=Z.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new F(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new F(1).div(t),o=fn.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=Z.getSqrtPriceX64FromTick(o),a=Z.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new F(1).div(a)}}};var sT=L([pe(8),_("bump"),Bt("index"),S(""),ze("protocolFeeRate"),ze("tradeFeeRate"),Bt("tickSpacing"),q(w(),8,"")]),np=L([ze("blockTimestamp"),z("sqrtPriceX64"),z("cumulativeTimePriceX64"),q(z(),1,"")]),Qo=L([pe(8),De("initialized"),S("poolId"),q(np,1e3,"observations"),q(z(),5,"")]),rp=L([_("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),z("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),S("tokenMint"),S("tokenVault"),S("creator"),z("rewardGrowthGlobalX64")]),pu=L([pe(8),_("bump"),S("ammConfig"),S("creator"),S("mintA"),S("mintB"),S("vaultA"),S("vaultB"),S("observationId"),_("mintDecimalsA"),_("mintDecimalsB"),Bt("tickSpacing"),z("liquidity"),z("sqrtPriceX64"),We("tickCurrent"),Bt("observationIndex"),Bt("observationUpdateDuration"),z("feeGrowthGlobalX64A"),z("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),z("swapInAmountTokenA"),z("swapOutAmountTokenB"),z("swapInAmountTokenB"),z("swapOutAmountTokenA"),_("status"),q(_(),7,""),q(rp,3,"rewardInfos"),q(w(),16,"tickArrayBitmap"),w("totalFeesTokenA"),w("totalFeesClaimedTokenA"),w("totalFeesTokenB"),w("totalFeesClaimedTokenB"),w("fundFeesTokenA"),w("fundFeesTokenB"),w("startTime"),q(w(),15*4-3,"padding")]),ip=L([z("growthInsideLastX64"),w("rewardAmountOwed")]),di=L([pe(8),_("bump"),S("nftMint"),S("poolId"),We("tickLower"),We("tickUpper"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(ip,3,"rewardInfos"),q(w(),8,"")]),aT=L([pe(8),_("bump"),S("poolId"),We("tickLowerIndex"),We("tickUpperIndex"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(z(),3,"rewardGrowthInside"),q(w(),8,"")]),op=L([We("tick"),ya("liquidityNet"),z("liquidityGross"),z("feeGrowthOutsideX64A"),z("feeGrowthOutsideX64B"),q(z(),3,"rewardGrowthsOutsideX64"),q(ze(),13,"")]),dr=L([pe(8),S("poolId"),We("startTickIndex"),q(op,_e,"ticks"),_("initializedTickCount"),q(_(),115,"")]),yu=L([pe(329),q(S(),100,"whitelistMints")]),fu=L([pe(8),S("poolId"),q(q(w(),8),zo,"positiveTickArrayBitmap"),q(q(w(),8),zo,"negativeTickArrayBitmap")]);var wu=ae("Raydium_Clmm"),Pt={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]},Be=class{static createPoolInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=L([z("sqrtPriceX64"),w("startTime")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:Cn.programId,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({sqrtPriceX64:d,startTime:y},g);let k=Buffer.from([...Pt.createPool,...g]);return new kt({keys:b,programId:e,data:k})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:i,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=Ye({fromPublicKey:i,programId:n}),[p,d]=[new v(o.address),new v(s.address)],y=[Cn.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Qo.span),space:Qo.span,programId:n})],{publicKey:f}=iu(n,a,p,d),{publicKey:b}=Go(n,f,p),{publicKey:g}=Go(n,f,d);return y.push(this.createPoolInstruction(n,f,i,a,m.publicKey,p,b,new v(o.programId||qe),d,g,new v(s.programId||qe),lt(n,f).publicKey,u,c)),{signers:[],instructions:y,instructionTypes:[V.CreateAccount,V.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:b,mintBVault:g},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,k,A,h,T,I,B,x,R,N){let E=L([We("tickLowerIndex"),We("tickUpperIndex"),We("tickArrayLowerStartIndex"),We("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),De("withMetadata"),_("optionBaseFlag"),De("baseFlag")]),Q=[...N?[{pubkey:N,isSigner:!1,isWritable:!0}]:[]],W=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:Cn.programId,isSigner:!1,isWritable:!1},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:bu,isSigner:!1,isWritable:!1},{pubkey:kn,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...Q],j=Buffer.alloc(E.span);E.encode({tickLowerIndex:k,tickUpperIndex:A,tickArrayLowerStartIndex:h,tickArrayUpperStartIndex:T,liquidity:I,amountMaxA:B,amountMaxB:x,withMetadata:R==="create",baseFlag:!1,optionBaseFlag:0},j);let ee=Buffer.from([...Pt.openPosition,...j]);return new kt({keys:W,programId:e,data:ee})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[p,d]=[new v(e.programId),new v(e.id)],y;if(l)y=new v((await l(1))[0]);else{let x=Ho.generate();m.push(x),y=x.publicKey}let f=G.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=ge(p,d,f),{publicKey:k}=ge(p,d,b),{publicKey:A}=ye(n.wallet,y,qe),{publicKey:h}=ci(y),{publicKey:T}=ct(p,y),{publicKey:I}=mn(p,d,i,o),B=this.openPositionFromLiquidityInstruction(p,n.feePayer,d,n.wallet,y,A,h,I,g,k,T,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),i,o,f,b,s,a,u,c);return{signers:m,instructions:[B],instructionTypes:[V.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:g,tickArrayUpper:k,positionNftAccount:A,metadataAccount:h,personalPosition:T,protocolPosition:I}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[p,d]=[new v(e.programId),new v(e.id)],y;if(l)y=new v((await l(1))[0]);else{let x=Ho.generate();m.push(x),y=x.publicKey}let f=G.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=ge(p,d,f),{publicKey:k}=ge(p,d,b),{publicKey:A}=ye(n.wallet,y,qe),{publicKey:h}=ci(y),{publicKey:T}=ct(p,y),{publicKey:I}=mn(p,d,i,o),B=this.openPositionFromBaseInstruction(p,n.feePayer,d,n.wallet,y,A,h,I,g,k,T,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),i,o,f,b,c,s,a,u,He.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?lt(p,d).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:g,tickArrayUpper:k,positionNftAccount:A,metadataAccount:h,personalPosition:T,protocolPosition:I},instructions:[B],signers:m,instructionTypes:[V.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,k,A,h,T,I,B,x,R,N){let E=L([We("tickLowerIndex"),We("tickUpperIndex"),We("tickArrayLowerStartIndex"),We("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),De("withMetadata"),_("optionBaseFlag"),De("baseFlag")]),Q=[...N?[{pubkey:N,isSigner:!1,isWritable:!0}]:[]],W=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:Cn.programId,isSigner:!1,isWritable:!1},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:bu,isSigner:!1,isWritable:!1},{pubkey:kn,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...Q],j=Buffer.alloc(E.span);E.encode({tickLowerIndex:k,tickUpperIndex:A,tickArrayLowerStartIndex:h,tickArrayUpperStartIndex:T,liquidity:new gu(0),amountMaxA:B==="MintA"?x:R,amountMaxB:B==="MintA"?R:x,withMetadata:I==="create",baseFlag:B==="MintA",optionBaseFlag:1},j);let ee=Buffer.from([...Pt.openPosition,...j]);return new kt({keys:W,programId:e,data:ee})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,p=[];if(l)m=new v((await l(1))[0]);else{let x=Ho.generate();p.push(x),m=x.publicKey}let[d,y]=[new v(e.programId),new v(e.id)],f=G.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=ge(d,y,f),{publicKey:k}=ge(d,y,b),{publicKey:A}=ye(n.wallet,m,qe),{publicKey:h}=ci(m),{publicKey:T}=ct(d,m),{publicKey:I}=mn(d,y,i,o),B=this.openPositionFromLiquidityInstruction(d,n.wallet,y,n.wallet,m,A,h,I,g,k,T,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(t.mintA.address),new v(t.mintB.address),i,o,f,b,s,a,u,c,He.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?lt(d,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:g,tickArrayUpper:k,positionNftAccount:A,metadataAccount:h,personalPosition:T,protocolPosition:I},instructions:[B],signers:p,instructionTypes:[V.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,o){let s=L([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:Cn.programId,isSigner:!1,isWritable:!1},{pubkey:qe,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...Pt.closePosition,...u]);return new kt({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i}){let o=new v(e.programId),{publicKey:s}=ye(n.wallet,i.nftMint,qe),{publicKey:a}=ct(o,i.nftMint),u=[];return u.push(this.closePositionInstruction(o,n.wallet,i.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:u,instructionTypes:[V.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,k){let A=L([z("liquidity"),w("amountMaxA"),w("amountMaxB"),_("optionBaseFlag"),De("baseFlag")]),h=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[]],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...h],I=Buffer.alloc(A.span);A.encode({liquidity:f,amountMaxA:b,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},I);let B=Buffer.from([...Pt.increaseLiquidity,...I]);return new kt({keys:T,programId:e,data:B})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new v(e.programId),new v(e.id)],l=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=ge(u,c,l),{publicKey:d}=ge(u,c,m),{publicKey:y}=ye(i.wallet,n.nftMint,qe),{publicKey:f}=ct(u,n.nftMint),{publicKey:b}=mn(u,c,n.tickLower,n.tickUpper),g=this.increasePositionFromLiquidityInstruction(u,i.wallet,y,f,c,b,p,d,i.tokenAccountA,i.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),o,s,a,He.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?lt(u,c).publicKey:void 0);return{address:{tickArrayLower:p,tickArrayUpper:d,positionNftAccount:y,personalPosition:f,protocolPosition:b},signers:[],instructions:[g],instructionTypes:[V.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,base:o,baseAmount:s,otherAmountMax:a}){let[u,c]=[new v(e.programId),new v(e.id)],l=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=ge(u,c,l),{publicKey:d}=ge(u,c,m),{publicKey:y}=ye(i.wallet,n.nftMint,qe),{publicKey:f}=ct(u,n.nftMint),{publicKey:b}=mn(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:p,tickArrayUpper:d,positionNftAccount:y,personalPosition:f,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(u,i.wallet,y,f,c,b,p,d,i.tokenAccountA,i.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),o,s,a,He.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?lt(u,c).publicKey:void 0)],signers:[],instructionTypes:[V.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,k){let A=L([z("liquidity"),w("amountMaxA"),w("amountMaxB"),_("optionBaseFlag"),De("baseFlag")]),h=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[]],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...h],I=Buffer.alloc(A.span);A.encode({liquidity:new gu(0),amountMaxA:f==="MintA"?b:g,amountMaxB:f==="MintA"?g:b,baseFlag:f==="MintA",optionBaseFlag:1},I);let B=Buffer.from([...Pt.increaseLiquidity,...I]);return new kt({keys:T,programId:e,data:B})}static decreaseLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,k,A){let h=L([z("liquidity"),w("amountMinA"),w("amountMinB")]),T=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...f.map(R=>[{pubkey:R.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:R.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:R.rewardMint,isSigner:!1,isWritable:!1}]).flat()],I=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:An,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...T],B=Buffer.alloc(h.span);h.encode({liquidity:b,amountMinA:g,amountMinB:k},B);let x=Buffer.from([...Pt.decreaseLiquidity,...B]);return new kt({keys:I,programId:e,data:x})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new v(e.programId),new v(e.id)],m=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),p=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=ge(c,l,m),{publicKey:y}=ge(c,l,p),{publicKey:f}=ye(i.wallet,n.nftMint,u),{publicKey:b}=ct(c,n.nftMint),{publicKey:g}=mn(c,l,n.tickLower,n.tickUpper),k=[];for(let h=0;h<e.rewardDefaultInfos.length;h++)k.push({poolRewardVault:new v(t.rewardInfos[h].vault),ownerRewardVault:i.rewardAccounts[h],rewardMint:new v(e.rewardDefaultInfos[h].mint.address)});let A=[];return A.push(this.decreaseLiquidityInstruction(c,i.wallet,f,b,l,g,d,y,i.tokenAccountA,i.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),k,o,s,a,He.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,p])?lt(c,l).publicKey:void 0)),{address:{tickArrayLower:d,tickArrayUpper:y,positionNftAccount:f,personalPosition:b,protocolPosition:g},signers:[],instructions:A,instructionTypes:[V.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g){let k=L([w("amount"),w("otherAmountThreshold"),z("sqrtPriceLimitX64"),De("isBaseInput")]),A=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...m.map(B=>({pubkey:B,isSigner:!1,isWritable:!0}))],h=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:An,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...A],T=Buffer.alloc(k.span);k.encode({amount:d,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:b},T);let I=Buffer.from([...Pt.swap,...T]);return new kt({keys:h,programId:e,data:I})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,inputMint:i,amountIn:o,amountOutMin:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new v(e.programId),new v(e.id)],[m,p]=[new v(t.vault.A),new v(t.vault.B)],[d,y]=[new v(e.mintA.address),new v(e.mintB.address)],f=e.mintA.address===i.toString(),b=[this.swapInstruction(c,n.wallet,l,new v(e.config.id),f?n.tokenAccountA:n.tokenAccountB,f?n.tokenAccountB:n.tokenAccountA,f?m:p,f?p:m,f?d:y,f?y:d,u,m,o,s,a,!0,lt(c,l).publicKey)];return{signers:[],instructions:b,instructionTypes:[V.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,p){let d=L([w("openTime"),w("endTime"),z("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Cn.programId,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1}],f=Buffer.alloc(d.span);d.encode({openTime:U(l),endTime:U(m),emissionsPerSecondX64:p},f);let b=Buffer.from([...Pt.initReward,...f]);return new kt({keys:y,programId:e,data:b})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new v(e.programId),new v(e.id)],a=ou(o,s,i.mint).publicKey,u=lr(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new v(e.config.id),n.tokenAccount,i.programId,i.mint,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[V.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,p){let d=L([_("rewardIndex"),z("emissionsPerSecondX64"),w("openTime"),w("endTime")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(d.span);d.encode({rewardIndex:c,emissionsPerSecondX64:p,openTime:U(l),endTime:U(m)},f);let b=Buffer.from([...Pt.setRewardEmissions,...f]);return new kt({keys:y,programId:e,data:b})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new v(e.programId),new v(e.id)],a,u,c;for(let p=0;p<e.rewardDefaultInfos.length;p++)e.rewardDefaultInfos[p].mint.address===i.mint.toString()&&(a=p,u=new v(t.rewardInfos[p].vault),c=new v(t.rewardInfos[p].mint.address));(a===void 0||u===void 0)&&wu.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=lr(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new v(e.config.id),n.tokenAccount,u,c,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[V.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,o,s,a){let u=L([_("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:An,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...Pt.collectReward,...l]);return new kt({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[o,s]=[new v(e.programId),new v(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,u=new v(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&wu.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,u,i,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[V.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:i,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new v(e.programId),new v(e.id)],[m,p]=[new v(t.vault.A),new v(t.vault.B)],[d,y]=[new v(e.mintA.address),new v(e.mintB.address)],f=e.mintA.address===i.toString(),b=[this.swapInstruction(c,n.wallet,l,new v(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?p:m,f?m:p,f?d:y,f?y:d,u,m,o,s,a,!1)];return{signers:[],instructions:b,instructionTypes:[V.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as cp}from"@solana/web3.js";import{PublicKey as ap}from"@solana/web3.js";import Au from"bn.js";var ku=new Au(25),Pu=new Au(1e4),sp={4:3,5:3};var up=ae("Raydium_liquidity_serum");function hu({programId:r,marketId:e}){let t=[e.toBuffer()],n=0,i;for(;n<100;){try{let o=t.concat(Buffer.from([n]),Buffer.alloc(7));i=ap.createProgramAddressSync(o,r)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:i,nonce:n}}throw up.logWithError("unable to find a viable program address nonce","params",{programId:r,marketId:e}),new Error("unable to find a viable program address nonce")}import yr from"bn.js";function Zo({programId:r}){let{publicKey:e}=oe([Buffer.from("amm_config_account_seed","utf-8")],r);return e}function yn({name:r,programId:e,marketId:t}){let{publicKey:n}=oe([e.toBuffer(),t.toBuffer(),Buffer.from(r,"utf-8")],e);return n}function lp({programId:r,marketId:e}){let{publicKey:t}=oe([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function mp({programId:r}){return oe([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function Tu({version:r,marketVersion:e,marketId:t,baseMint:n,quoteMint:i,baseDecimals:o,quoteDecimals:s,programId:a,marketProgramId:u}){let c=yn({name:"amm_associated_seed",programId:a,marketId:t}),l=yn({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:p}=mp({programId:a}),d=yn({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=yn({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=yn({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),b=lp({programId:a,marketId:t}),g=yn({name:"target_associated_seed",programId:a,marketId:t}),k=yn({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:A}=hu({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:i,lpMint:l,baseDecimals:o,quoteDecimals:s,lpDecimals:o,version:r,programId:a,authority:m,nonce:p,baseVault:d,quoteVault:y,lpVault:f,openOrders:b,targetOrders:g,withdrawQueue:k,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:A,lookupTableAccount:cp.default,configId:Zo({programId:a})}}var jo;async function ET({connection:r,poolKeysList:e,config:t}){jo||(jo=new Sn({connection:r}),await jo.initStableModelLayout());let n=e.map(s=>Ja({poolKeys:s}));return(await Zs(r,n.map(s=>s.instruction),"GetPoolData")).map(s=>{let a=$s(s,"GetPoolData"),u=new yr(Mt(a,"status")),c=Number(Mt(a,"coin_decimals")),l=Number(Mt(a,"pc_decimals")),m=Number(Mt(a,"lp_decimals")),p=new yr(Mt(a,"pool_coin_amount")),d=new yr(Mt(a,"pool_pc_amount")),y=new yr(Mt(a,"pool_lp_supply")),f="0";try{f=Mt(a,"pool_open_time")}catch{}return{status:u,baseDecimals:c,quoteDecimals:l,lpDecimals:m,baseReserve:p,quoteReserve:d,lpSupply:y,startTime:new yr(f)}})}import je from"bn.js";var br=class extends xe{constructor(t){super(t);this.stableLayout=new Sn({connection:this.scope.connection})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:i,baseIn:o}){let s=new je(new F(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),a=Ua(t[o?"mintB":"mintA"]),[u,c]=[new je(new F(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new je(new F(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new je(new F(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,F.ROUND_DOWN));this.logDebug("baseReserve:",u.toString(),"quoteReserve:",c.toString()),this.logDebug("tokenIn:",o?t.mintA.symbol:t.mintB.symbol,"amountIn:",s.toString(),"anotherToken:",o?t.mintB.symbol:t.mintA.symbol,"slippage:",`${i.toSignificant()}%`);let m=o?"base":"quote";this.logDebug("input side:",m);let p=Se;s.isZero()||(p=m==="base"?vr(s.mul(c),u):vr(s.mul(u),c));let d=vr(s.mul(l),new je(m==="base"?t.mintAmountA:t.mintAmountB).mul(new je(10).pow(new je(t[m==="base"?"mintA":"mintB"].decimals)))),f=new ve(new je(1)).add(i).mul(p).quotient,b=new he(a,p),g=new he(a,f);return this.logDebug("anotherAmount:",b.toFixed(),"maxAnotherAmount:",g.toFixed()),{anotherAmount:b,maxAnotherAmount:g,liquidity:d}}async getAmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async addLiquidity(t){let{poolInfo:n,amountInA:i,amountInB:o,fixedSide:s,config:a,txVersion:u,computeBudgetConfig:c}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",i,"amountInB:",o),(i.isZero()||o.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:i.toFixed(),amountInB:o.toFixed()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:p}=M({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),[d,y]=[i.token,o.token],f=await l.getCreatedTokenAccount({mint:d.mint,associatedOnly:!1}),b=await l.getCreatedTokenAccount({mint:y.mint,associatedOnly:!1});!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let g=await l.getCreatedTokenAccount({mint:new ot(n.lpMint.address)}),k=[d,y],A=[f,b],h=[i.raw,o.raw],T=i.token.mint.toBase58()===n.mintA.address?"base":"quote",I="base";["quote","base"].includes(T)||this.logAndCreateError("invalid fixedSide","fixedSide",s),T==="quote"?(k.reverse(),A.reverse(),h.reverse(),I=s==="a"?"quote":"base"):T==="base"&&(I=s==="a"?"base":"quote");let[B,x]=k,[R,N]=A,[E,Q]=h,W=await this.getAmmPoolKeys(n.id),j=this.createTxBuilder(),Wt=await l.handleTokenAccount({side:"in",amount:E,mint:B.mint,tokenAccount:R,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:ee}=Wt,se=Te(Wt,["tokenAccount"]);j.addInstruction(se);let Sr=await l.handleTokenAccount({side:"in",amount:Q,mint:x.mint,tokenAccount:N,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:ft}=Sr,Nn=Te(Sr,["tokenAccount"]);j.addInstruction(Nn);let Mn=await l.handleTokenAccount({side:"out",amount:0,mint:new ot(n.lpMint.address),tokenAccount:g,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:hi}=Mn,Ti=Te(Mn,["tokenAccount"]);return j.addInstruction(Ti),j.addInstruction({instructions:[Za({poolInfo:n,poolKeys:W,userKeys:{baseTokenAccount:ee,quoteTokenAccount:ft,lpTokenAccount:hi,owner:this.scope.ownerPubKey},baseAmountIn:E,quoteAmountIn:Q,fixedSide:I})],instructionTypes:[n.pooltype.includes("StablePool")?V.AmmV5AddLiquidity:V.AmmV4AddLiquidity],lookupTableAddress:W.lookupTableAccount?[W.lookupTableAccount]:[]}),j.addCustomComputeBudget(c),u===0&&await j.buildV0(),j.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,amountIn:i,config:o,txVersion:s,computeBudgetConfig:a}=t,u=await this.getAmmPoolKeys(n.id),[c,l,m]=[new ot(n.mintA.address),new ot(n.mintB.address),new ot(n.lpMint.address)];this.logDebug("amountIn:",i),i.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",i.toString());let{account:p}=this.scope,d=await p.getCreatedTokenAccount({mint:m,associatedOnly:!1});d||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",p.tokenAccounts);let y=await p.getCreatedTokenAccount({mint:c}),f=await p.getCreatedTokenAccount({mint:l}),b=this.createTxBuilder(),{bypassAssociatedCheck:g,checkCreateATAOwner:k}=M({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),B=await p.handleTokenAccount({side:"out",amount:0,mint:c,tokenAccount:y,bypassAssociatedCheck:g,checkCreateATAOwner:k}),{tokenAccount:A}=B,h=Te(B,["tokenAccount"]);b.addInstruction(h);let x=await p.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:g,checkCreateATAOwner:k}),{tokenAccount:T}=x,I=Te(x,["tokenAccount"]);return b.addInstruction(I),b.addInstruction({instructions:[Do({poolInfo:n,poolKeys:u,userKeys:{lpTokenAccount:d,baseTokenAccount:A,quoteTokenAccount:T,owner:this.scope.ownerPubKey},amountIn:i})],lookupTableAddress:u.lookupTableAccount?[u.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?V.AmmV5RemoveLiquidity:V.AmmV4RemoveLiquidity]}),b.addCustomComputeBudget(a),s===0?await b.buildV0():b.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:i,createPositionInfo:o,farmInfo:s,userFarmLpAmount:a,base:u,computeBudgetConfig:c,payer:l,tokenProgram:m=pi,checkCreateATAOwner:p=!0,getEphemeralSigners:d,txVersion:y}){if((this.scope.availability.removeStandardPosition===!1||this.scope.availability.createConcentratedPosition===!1)&&this.logAndCreateError("remove liquidity or create position feature disabled in your region"),!(t.mintA.address===n.mintA.address||t.mintA.address===n.mintB.address)||!(t.mintB.address===n.mintA.address||t.mintB.address===n.mintB.address))throw Error("mint check error");let f=this.createTxBuilder();f.addCustomComputeBudget(c);let b={};for(let ee of this.scope.account.tokenAccountRawInfos)(b[ee.accountInfo.mint.toString()]===void 0||ye(this.scope.ownerPubKey,ee.accountInfo.mint,pi).publicKey.equals(ee.pubkey))&&(b[ee.accountInfo.mint.toString()]=ee.pubkey);let g=b[t.lpMint.address];if(g===void 0)throw Error("find lp account error in trade accounts");let k=i.add(a!=null?a:new je(0)),A=t.mintA.address===de.WSOL.mint.toString(),h=t.mintB.address===de.WSOL.mint.toString(),{account:T,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:pi,mint:new ot(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:A?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!0,checkCreateATAOwner:p});if(f.addInstruction(I||{}),T===void 0)throw new Error("base token account not found");let{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:pi,mint:new ot(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:h?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:!0,checkCreateATAOwner:p});if(f.addInstruction(x||{}),B===void 0)throw new Error("quote token account not found");if(b[t.mintA.address]=T,b[t.mintB.address]=B,s!==void 0&&!(a!=null&&a.isZero())){let ee=[];for(let Wt of s.rewardInfos){let Sr=Wt.mint.address===de.WSOL.mint.toString();if(b[Wt.mint.address])ee.push(b[Wt.mint.address]);else{let{account:Mn,instructionParams:ps}=await this.scope.account.getOrCreateTokenAccount({mint:new ot(Wt.mint.address),tokenProgram:m,owner:this.scope.ownerPubKey,skipCloseAccount:!Sr,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:p});Mn||this.logAndCreateError("farm reward account not found:",Wt.mint.address),ps&&f.addInstruction(ps),ee.push(Mn)}}let se=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],ft={amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:se,lpAccount:g,rewardAccounts:ee},Nn=At[s.programId],hi=Nn===6?ir(ft):Nn===5?or(ft):sr(ft),Ti={3:V.FarmV3Withdraw,5:V.FarmV5Withdraw,6:V.FarmV6Withdraw};f.addInstruction({instructions:[hi],instructionTypes:[Ti[Nn]]})}let R=await this.getAmmPoolKeys(t.id),N=Do({poolInfo:t,poolKeys:R,userKeys:{lpTokenAccount:g,baseTokenAccount:T,quoteTokenAccount:B,owner:this.scope.ownerPubKey},amountIn:k});f.addInstruction({instructions:[N],instructionTypes:[t.pooltype.includes("StablePool")?V.AmmV5RemoveLiquidity:V.AmmV4RemoveLiquidity],lookupTableAddress:R.lookupTableAccount?[R.lookupTableAccount]:[]});let[E,Q]=t.mintA.address===n.mintA.address?[T,B]:[B,T],W=await this.scope.clmm.getClmmPoolKeys(t.id),j=await Be.openPositionFromBaseInstructions(D(M({poolInfo:n,poolKeys:W,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:E,tokenAccountB:Q},withMetadata:"create"},o),{base:u,getEphemeralSigners:d}));return f.addInstruction({instructions:[...j.instructions],signers:j.signers,instructionTypes:[...j.instructionTypes],lookupTableAddress:W.lookupTableAccount?[W.lookupTableAccount]:[]}),y===0?f.sizeCheckBuildV0():f.sizeCheckBuild()}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:i,quoteMintInfo:o,baseAmount:s,quoteAmount:a,startTime:u,ownerInfo:c,associatedOnly:l=!1,checkCreateATAOwner:m=!1,tokenProgram:p,txVersion:d,feeDestinationId:y,computeBudgetConfig:f}){var Q;let b=c.feePayer||((Q=this.scope.owner)==null?void 0:Q.publicKey),g=c.useSOLBalance&&i.mint.equals(Iu),k=c.useSOLBalance&&o.mint.equals(Iu),A=this.createTxBuilder(),{account:h,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({mint:i.mint,owner:this.scope.ownerPubKey,createInfo:g?{payer:b,amount:s}:void 0,notUseTokenAccount:g,skipCloseAccount:!g,associatedOnly:g?!1:l,checkCreateATAOwner:m});A.addInstruction(T||{});let{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({mint:o.mint,owner:this.scope.ownerPubKey,createInfo:k?{payer:b,amount:a}:void 0,notUseTokenAccount:k,skipCloseAccount:!k,associatedOnly:k?!1:l,checkCreateATAOwner:m});if(A.addInstruction(B||{}),h===void 0||I===void 0)throw Error("you don't has some token account");let x=Tu({version:4,marketVersion:3,marketId:n.marketId,baseMint:i.mint,quoteMint:o.mint,baseDecimals:i.decimals,quoteDecimals:o.decimals,programId:t,marketProgramId:n.programId}),R={programId:t,ammId:x.id,ammAuthority:x.authority,ammOpenOrders:x.openOrders,lpMint:x.lpMint,coinMint:x.baseMint,pcMint:x.quoteMint,coinVault:x.baseVault,pcVault:x.quoteVault,withdrawQueue:x.withdrawQueue,ammTargetOrders:x.targetOrders,poolTempLp:x.lpVault,marketProgramId:x.marketProgramId,marketId:x.marketId,ammConfigId:x.configId,feeDestinationId:y},{instruction:N,instructionType:E}=$a(D(M({},R),{userWallet:this.scope.ownerPubKey,userCoinVault:h,userPcVault:I,userLpVault:ye(this.scope.ownerPubKey,x.lpMint,p).publicKey,nonce:x.nonce,openTime:u,coinAmount:s,pcAmount:a}));return A.addInstruction({instructions:[N],instructionTypes:[E]}),A.addCustomComputeBudget(f),A.versionBuild({txVersion:d,extInfo:{address:R}})}async getCreatePoolFee({programId:t}){let n=Zo({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return Ga.decode(i.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:i,mintOut:o,slippage:s}){if(i!==t.mintA.address&&i!==t.mintA.address)throw new Error("toke not match");if(o!==t.mintB.address&&o!==t.mintB.address)throw new Error("toke not match");let{baseReserve:a,quoteReserve:u}=t,c=[a,u],l=i==t.mintA.address?"base":"quote";l==="quote"&&c.reverse();let[m,p]=c,d=t.programId===$i.toBase58(),y;if(d)y=new F(p.toString()).div(m.toString());else{let x=Ha(this.stableLayout.stableModelData,a.toNumber(),u.toNumber(),!1);l==="quote"?y=new F(1e6).div(x*1e6):y=new F(x*1e6).div(1e6)}let f=n,b=new je(0),g=new je(0);if(!f.isZero())if(d){g=zt(f.mul(ku),Pu);let x=f.sub(g),R=m.add(x);b=p.mul(x).div(R)}else{g=f.mul(new je(2)).div(new je(1e4));let x=f.sub(g);l==="quote"?b=new je(Ya(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber())):b=new je(Qa(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber()))}let k=new je(new F(b.toString()).mul(1-s).toFixed(0)),A=b,h=k,T=new F(b.toString()).div(new F(f.sub(g).toString()).toFixed(0));!f.isZero()&&!b.isZero()&&(T=new F(b.toString()).div(f.sub(g).toString()));let I=y.sub(T).div(y).mul(100);return{amountOut:A,minAmountOut:h,currentPrice:y,executionPrice:T,priceImpact:I,fee:g}}async swap({poolInfo:t,amountIn:n,amountOut:i,inputMint:o,fixedSide:s,txVersion:a,computeBudgetConfig:u}){let c=this.createTxBuilder(),[l,m]=o===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],p=await this.scope.account.getCreatedTokenAccount({mint:new ot(l.address),programId:new ot(l.programId),associatedOnly:!1}),d=await this.scope.account.getCreatedTokenAccount({mint:new ot(m.address),programId:new ot(m.programId),associatedOnly:!1}),h=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new ot(l.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=h,f=Te(h,["tokenAccount"]);c.addInstruction(f);let T=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new ot(m.address),tokenAccount:d,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:b}=T,g=Te(T,["tokenAccount"]);c.addInstruction(g);let k=await this.getAmmPoolKeys(t.id),A=4;return t.pooltype.includes("StablePool")&&(A=5),c.addInstruction({instructions:[ai({version:A,poolKeys:k,userKeys:{tokenAccountIn:y,tokenAccountOut:b,owner:this.scope.ownerPubKey},amountIn:n,amountOut:i,fixedSide:s})],instructionTypes:[A===4?V.AmmV4SwapBaseIn:V.AmmV5SwapBaseIn]}),c.addCustomComputeBudget(u),c.versionBuild({txVersion:a})}};import{PublicKey as ue}from"@solana/web3.js";import mt from"bn.js";var gr=class extends xe{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var k;let{programId:t,owner:n=((k=this.scope.owner)==null?void 0:k.publicKey)||ue.default,mint1:i,mint2:o,ammConfig:s,initialPrice:a,startTime:u,computeBudgetConfig:c,forerunCreate:l,txVersion:m}=e,p=this.createTxBuilder(),[d,y,f]=new mt(new ue(i.address).toBuffer()).gt(new mt(new ue(o.address).toBuffer()))?[o,i,new F(1).div(a)]:[i,o,a],b=Z.priceToSqrtPriceX64(f,d.decimals,y.decimals),g=await Be.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:d,mintB:y,ammConfigId:s.id,initialPriceX64:b,startTime:u,forerunCreate:l});return p.addInstruction(g),p.addCustomComputeBudget(c),p.versionBuild({txVersion:m,extInfo:{address:D(M({},g.address),{programId:t.toString(),id:g.address.poolId.toString(),mintA:d,mintB:y,openTime:u.toString(),vault:{A:g.address.mintAVault.toString(),B:g.address.mintBVault.toString()},rewardInfos:[],config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:M({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:g.address.poolId.toString(),mintA:d,mintB:y,feeRate:s.tradeFeeRate,openTime:u.toString(),programId:t.toString(),price:f.toNumber(),config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}},mu),forerunCreate:l}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",getEphemeralSigners:p,computeBudgetConfig:d,txVersion:y}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let f=this.createTxBuilder(),b=null,g=null,k=n.useSOLBalance&&e.mintA.address===te.toString(),A=n.useSOLBalance&&e.mintB.address===te.toString(),[h,T]=s==="MintA"?[a,u]:[u,a],{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ue(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:k||h.isZero()?{payer:this.scope.ownerPubKey,amount:h}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:k?!1:c,checkCreateATAOwner:l});I&&(b=I),f.addInstruction(B||{});let{account:x,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ue(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||T.isZero()?{payer:this.scope.ownerPubKey,amount:T}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:A?!1:c,checkCreateATAOwner:l});x&&(g=x),f.addInstruction(R||{}),(!b||!g)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let N=t||await this.getClmmPoolKeys(e.id),E=await Be.openPositionFromBaseInstructions({poolInfo:e,poolKeys:N,ownerInfo:D(M({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g}),tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:m,getEphemeralSigners:p});return f.addInstruction(E),f.addCustomComputeBudget(d),f.versionBuild({txVersion:y,extInfo:E.address})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:i,amountMaxB:o,tickLower:s,tickUpper:a,liquidity:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",txVersion:p,getEphemeralSigners:d}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let y=this.createTxBuilder(),f=null,b=null,g=n.useSOLBalance&&e.mintA.address===te.toBase58(),k=n.useSOLBalance&&e.mintB.address===te.toBase58(),{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ue(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:g?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!g,notUseTokenAccount:g,associatedOnly:g?!1:c,checkCreateATAOwner:l});A&&(f=A),y.addInstruction(h||{});let{account:T,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ue(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:k?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:k?!1:c,checkCreateATAOwner:l});T&&(b=T),y.addInstruction(I||{}),(f===void 0||b===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let B=t||await this.getClmmPoolKeys(e.id),x=await Be.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:B,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},tickLower:s,tickUpper:a,liquidity:u,amountMaxA:i,amountMaxB:o,withMetadata:m,getEphemeralSigners:d});return y.addInstruction(x),y.versionBuild({txVersion:p,extInfo:{address:x.address}})}async increasePositionFromLiquidity(e){let{poolInfo:t,ownerPosition:n,amountMaxA:i,amountMaxB:o,liquidity:s,ownerInfo:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e,p=this.createTxBuilder(),d,y,f=a.useSOLBalance&&t.mintA.address===te.toString(),b=a.useSOLBalance&&t.mintB.address===te.toString(),{account:g,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ue(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(d=g),p.addInstruction(k||{});let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ue(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b?{payer:this.scope.ownerPubKey,amount:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});A&&(y=A),p.addInstruction(h||{}),!d&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let T=await this.getClmmPoolKeys(t.id),I=Be.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:T,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:d,tokenAccountB:y},liquidity:s,amountMaxA:i,amountMaxB:o});return p.addInstruction(I),p.addCustomComputeBudget(l),p.versionBuild({txVersion:m,extInfo:{address:I.address}})}async increasePositionFromBase(e){let{poolInfo:t,ownerPosition:n,base:i,baseAmount:o,otherAmountMax:s,ownerInfo:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e,p=this.createTxBuilder(),d,y,f=a.useSOLBalance&&t.mintA.address===te.toString(),b=a.useSOLBalance&&t.mintB.address===te.toString(),{account:g,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ue(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:i==="MintA"?o:s}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(d=g),p.addInstruction(k||{});let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ue(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b?{payer:this.scope.ownerPubKey,amount:i==="MintA"?s:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});A&&(y=A),p.addInstruction(h||{}),!d&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let T=await this.getClmmPoolKeys(t.id),I=Be.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:T,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:d,tokenAccountB:y},base:i,baseAmount:o,otherAmountMax:s});return p.addInstruction(I),p.addCustomComputeBudget(l),p.versionBuild({txVersion:m,extInfo:{address:I.address}})}async decreaseLiquidity(e){let{poolInfo:t,ownerPosition:n,ownerInfo:i,amountMinA:o,amountMinB:s,liquidity:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let p=this.createTxBuilder(),d=i.useSOLBalance&&t.mintA.address===te.toString(),y=i.useSOLBalance&&t.mintB.address===te.toString(),f,b,{account:g,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ue(t.mintA.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!d,associatedOnly:d?!1:u,checkCreateATAOwner:c});f=g,k&&p.addInstruction(k);let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ue(t.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,associatedOnly:y?!1:u,checkCreateATAOwner:c});b=A,h&&p.addInstruction(h);let T=[];for(let R of t.rewardDefaultInfos){let N=i.useSOLBalance&&R.mint.address===te.toString(),E;if(R.mint.address===t.mintA.address)E=f;else if(R.mint.address===t.mintB.address)E=b;else{let{account:Q,instructionParams:W}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(R.mint.programId),mint:new ue(R.mint.address),notUseTokenAccount:N,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!N,associatedOnly:N?!1:u,checkCreateATAOwner:c});E=Q,W&&p.addInstruction(W)}T.push(E)}!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let I=await this.getClmmPoolKeys(t.id),B=await Be.decreaseLiquidityInstructions({poolInfo:t,poolKeys:I,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:T},liquidity:a,amountMinA:o,amountMinB:s});p.addInstruction({instructions:B.instructions,instructionTypes:[V.ClmmDecreasePosition]});let x=M({},B.address);if(i.closePosition){let R=await Be.closePositionInstructions({poolInfo:t,poolKeys:I,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});p.addInstruction({endInstructions:R.instructions,endInstructionTypes:R.instructionTypes}),x=M(M({},x),R.address)}return p.addCustomComputeBudget(l),p.versionBuild({txVersion:m,extInfo:{address:x}})}async closePosition({poolInfo:e,ownerPosition:t,txVersion:n}){this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let i=this.createTxBuilder(),o=await this.getClmmPoolKeys(e.id),s=Be.closePositionInstructions({poolInfo:e,poolKeys:o,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:t});return i.addInstruction(s).versionBuild({txVersion:n,extInfo:{address:s.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(),c=t.useSOLBalance&&n.mint.address.toString()===te.toString(),l=n.perSecond.mul(n.endTime-n.openTime),{account:m,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(n.mint.address),mint:new ue(n.mint.address),notUseTokenAccount:!!c,skipCloseAccount:!c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new mt(new F(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:c?!1:i,checkCreateATAOwner:o});p&&u.addInstruction(p),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),y=Be.initRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{programId:new ue(n.mint.programId),mint:new ue(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:$.decimalToX64(n.perSecond)}});return u.addInstruction(y),u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:y.address}})}async initRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){for(let l of n)l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let u=this.createTxBuilder(),c={};for(let l of n){let m=t.useSOLBalance&&l.mint.address===te.toString(),p=l.perSecond.mul(l.endTime-l.openTime),{account:d,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(l.mint.programId),mint:new ue(l.mint.address),notUseTokenAccount:!!m,skipCloseAccount:!m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new mt(new F(p.toFixed(0)).gte(p)?p.toFixed(0):p.add(1).toFixed(0))}:void 0,associatedOnly:m?!1:i,checkCreateATAOwner:o});y&&u.addInstruction(y),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),b=Be.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{programId:new ue(l.mint.programId),mint:new ue(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:$.decimalToX64(l.perSecond)}});c=M(M({},c),b.address),u.addInstruction(b)}return u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:c}})}async setReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(),c=t.useSOLBalance&&n.mint.equals(te),{account:l,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.programId,mint:n.mint,notUseTokenAccount:c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new mt(new F(n.perSecond.sub(n.endTime-n.openTime).toFixed(0)).gte(n.perSecond.sub(n.endTime-n.openTime))?n.perSecond.sub(n.endTime-n.openTime).toFixed(0):n.perSecond.sub(n.endTime-n.openTime).add(1).toFixed(0))}:void 0,associatedOnly:c?!1:i,checkCreateATAOwner:o});m&&u.addInstruction(m),l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),d=Be.setRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:$.decimalToX64(n.perSecond)}});return u.addInstruction(d),u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:d.address}})}async setRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){let u=this.createTxBuilder(),c={};for(let l of n){l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let m=t.useSOLBalance&&l.mint.address===te.toString(),{account:p,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(l.mint.programId),mint:new ue(l.mint.address),notUseTokenAccount:m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new mt(new F(l.perSecond.sub(l.endTime-l.openTime).toFixed(0)).gte(l.perSecond.sub(l.endTime-l.openTime))?l.perSecond.sub(l.endTime-l.openTime).toFixed(0):l.perSecond.sub(l.endTime-l.openTime).add(1).toFixed(0))}:void 0,associatedOnly:m?!1:i,checkCreateATAOwner:o});d&&u.addInstruction(d),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let y=await this.getClmmPoolKeys(e.id),f=Be.setRewardInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{mint:new ue(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:$.decimalToX64(l.perSecond)}});u.addInstruction(f),c=M(M({},c),f.address)}return u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:c}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1}){let s=e.rewardDefaultInfos.find(d=>d.mint.address===n.toString());s||this.logAndCreateError("reward mint error","not found reward mint",n);let a=this.createTxBuilder(),u=t.useSOLBalance&&n.equals(te),{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(s.mint.programId),mint:n,notUseTokenAccount:u,owner:this.scope.ownerPubKey,skipCloseAccount:!u,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:u?!1:i,checkCreateATAOwner:o});l&&a.addInstruction(l),c||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let m=await this.getClmmPoolKeys(e.id),p=Be.collectRewardInstructions({poolInfo:e,poolKeys:m,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:c},rewardMint:n});return a.addInstruction(p),a.build({address:p.address})}async collectRewards({poolInfo:e,ownerInfo:t,rewardMints:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1}){let s=this.createTxBuilder(),a={};for(let u of n){let c=e.rewardDefaultInfos.find(f=>f.mint.address===u.toString());if(!c){this.logAndCreateError("reward mint error","not found reward mint",u);continue}let l=t.useSOLBalance&&u.equals(te),{account:m,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(c.mint.programId),mint:u,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:l?!1:i,checkCreateATAOwner:o});m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),p&&s.addInstruction(p);let d=await this.getClmmPoolKeys(e.id),y=Be.collectRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:u});s.addInstruction(y),a=M(M({},a),y.address)}return s.build({address:a})}async swap({poolInfo:e,inputMint:t,amountIn:n,amountOutMin:i,priceLimit:o,ownerInfo:s,remainingAccounts:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,txVersion:l}){let m=this.createTxBuilder(),p=s.useSOLBalance&&e.mintA.address===te.toBase58(),d=s.useSOLBalance&&e.mintB.address===te.toBase58(),y;!o||o.equals(new F(0))?y=t.toString()===e.mintA.address?Ct.add(new mt(1)):Rt.sub(new mt(1)):y=Z.priceToSqrtPriceX64(o,e.mintA.decimals,e.mintB.decimals);let f;if(!f){let{account:k,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ue(e.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:u,checkCreateATAOwner:c});f=k,A&&m.addInstruction(A)}let b;if(!b){let{account:k,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ue(e.mintB.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!d,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:d?!1:u,checkCreateATAOwner:c});b=k,A&&m.addInstruction(A)}(!f||!b)&&this.logAndCreateError("user do not have token account",this.scope.account.tokenAccountRawInfos);let g=await this.getClmmPoolKeys(e.id);return m.addInstruction(Be.makeSwapBaseInInstructions({poolInfo:e,poolKeys:g,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},inputMint:new ue(t),amountIn:n,amountOutMin:i,sqrtPriceLimitX64:y,remainingAccounts:a})),m.versionBuild({txVersion:l})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,programId:s,txVersion:a,computeBudgetConfig:u}){let c={};for(let m of this.scope.account.tokenAccountRawInfos)i?ye(this.scope.ownerPubKey,m.accountInfo.mint,s).publicKey.equals(m.pubkey)&&(c[m.accountInfo.mint.toString()]=m.pubkey):c[m.accountInfo.mint.toString()]=m.pubkey;let l=this.createTxBuilder();for(let m of Object.values(e)){if(t[m.id]===void 0||!t[m.id].find(A=>!A.liquidity.isZero()||A.rewardInfos.find(h=>!h.rewardAmountOwed.isZero())))continue;let p=m,d=n.useSOLBalance&&p.mintA.address===te.toString(),y=n.useSOLBalance&&p.mintB.address===te.toString(),f=c[p.mintA.address];if(!f){let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:p.mintA.programId,mint:new ue(p.mintA.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!d,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:d?!1:i,checkCreateATAOwner:o});f=A,h&&l.addInstruction(h)}let b=c[p.mintB.address];if(!b){let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:p.mintB.programId,mint:new ue(p.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:y?!1:i,checkCreateATAOwner:o});b=A,h&&l.addInstruction(h)}c[p.mintA.address]=f,c[p.mintB.address]=b;let g=[];for(let A of p.rewardDefaultInfos){let h=n.useSOLBalance&&A.mint.address===te.toString(),T=c[A.mint.address];if(!T){let{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(A.mint.programId),mint:new ue(A.mint.address),notUseTokenAccount:h,owner:this.scope.ownerPubKey,skipCloseAccount:!h,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:h?!1:i});T=I,B&&l.addInstruction(B)}c[A.mint.address]=T,g.push(T)}let k=await this.getClmmPoolKeys(p.id);for(let A of t[m.id]){let h=Be.decreaseLiquidityInstructions({poolInfo:p,poolKeys:k,ownerPosition:A,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:g},liquidity:new mt(0),amountMinA:new mt(0),amountMinB:new mt(0)});l.addInstruction(h)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:u}):l.sizeCheckBuild({computeBudgetConfig:u})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(lr(e).publicKey);return t?yu.decode(t.data).whitelistMints.filter(i=>!i.equals(ue.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new mt(1))).map(s=>ct(new ue(e),s.accountInfo.mint).publicKey),i=await this.scope.connection.getMultipleAccountsInfo(n),o=[];return i.forEach(s=>{if(!s)return;let a=di.decode(s.data);o.push(a)}),o}};import{PublicKey as Y}from"@solana/web3.js";import{NATIVE_MINT as yi,TOKEN_PROGRAM_ID as en,AccountLayout as _u}from"@solana/spl-token";var dp=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),pp=Buffer.from("amm_config","utf8"),fp=Buffer.from("pool","utf8"),yp=Buffer.from("pool_lp_mint","utf8"),bp=Buffer.from("pool_vault","utf8"),gp=Buffer.from("observation","utf8");function wp(r){return oe([dp],r)}function Ap(r,e){return oe([pp,hp(e)],r)}function kp(r,e,t,n){return oe([fp,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Pp(r,e){return oe([yp,e.toBuffer()],r)}function xu(r,e,t){return oe([bp,e.toBuffer(),t.toBuffer()],r)}function fi(r,e){return oe([gp,e.toBuffer()],r)}function hp(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function Bu({programId:r,mintA:e,mintB:t}){let n=Ap(r,0).publicKey,i=wp(r).publicKey,o=kp(r,n,e,t).publicKey,s=Pp(r,o).publicKey,a=xu(r,o,e).publicKey,u=xu(r,o,t).publicKey,c=fi(r,o).publicKey;return{poolId:o,configId:n,authority:i,lpMint:s,vaultA:a,vaultB:u,observationId:c}}import{TransactionInstruction as wr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as $o,TOKEN_2022_PROGRAM_ID as Su,ASSOCIATED_TOKEN_PROGRAM_ID as Tp}from"@solana/spl-token";var Ip=ae("Raydium_cpmm"),Ar={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 Ku(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,k,A){let h=L([w("amountMaxA"),w("amountMaxB"),w("openTime")]),T=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:$o,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:Tp,isSigner:!1,isWritable:!1},{pubkey:Vs,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1}],I=Buffer.alloc(h.span);return h.encode({amountMaxA:g,amountMaxB:k,openTime:A},I),new wr({keys:T,programId:r,data:Buffer.from([...Ar.initialize,...I])})}function Cu(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=L([w("lpAmount"),w("amountMaxA"),w("amountMaxB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:$o,isSigner:!1,isWritable:!1},{pubkey:Su,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0}],g=Buffer.alloc(f.span);return Ip.debug("cpmm deposit data",{lpAmount:p.toString(),amountMaxA:d.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:p,amountMaxA:d,amountMaxB:y},g),new wr({keys:b,programId:r,data:Buffer.from([...Ar.deposit,...g])})}function Ru(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=L([w("lpAmount"),w("amountMinA"),w("amountMinB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:$o,isSigner:!1,isWritable:!1},{pubkey:Su,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:_s,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);return f.encode({lpAmount:p,amountMinA:d,amountMinB:y},g),new wr({keys:b,programId:r,data:Buffer.from([...Ar.withdraw,...g])})}function Lu(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y,f){let b=L([w("amountIn"),w("amounOutMin")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0}],k=Buffer.alloc(b.span);return b.encode({amountIn:y,amounOutMin:f},k),new wr({keys:g,programId:r,data:Buffer.from([...Ar.swapBaseInput,...k])})}function Ou(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y,f){let b=L([w("amountInMax"),w("amountOut")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0}],k=Buffer.alloc(b.span);return b.encode({amountInMax:y,amountOut:f},k),new wr({keys:g,programId:r,data:Buffer.from([...Ar.swapBaseOutput,...k])})}import Ze from"bn.js";var Nu=L([pe(8),_("bump"),De("disableCreatePool"),Bt("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),S("protocolOwner"),S("fundOwner"),q(w(),16)]),Mu=L([pe(8),S("configId"),S("poolCreator"),S("vaultA"),S("vaultB"),S("mintLp"),S("mintA"),S("mintB"),S("mintProgramA"),S("mintProgramB"),S("observationId"),_("bump"),_("status"),_("lpDecimals"),_("mintDecimalA"),_("mintDecimalB"),w("lpAmount"),w("protocolFeesMintA"),w("protocolFeesMintB"),w("fundFeesMintA"),w("fundFeesMintB"),w("openTime"),q(w(),32)]);var kr=class extends xe{constructor(e){super(e)}async load(){this.checkDisabled()}async getCpmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async getRpcPoolInfo(e,t){let n=await this.scope.connection.getAccountInfo(new Y(e));if(!n)throw new Error(`pool not found: ${e}`);let i=Mu.decode(n.data),[o,s]=await this.scope.connection.getMultipleAccountsInfo([i.vaultA,i.vaultB]);if(!o)throw new Error(`pool vaultA info not found: ${i.vaultA.toBase58()}`);if(!s)throw new Error(`pool vaultB info not found: ${i.vaultB.toBase58()}`);let a;if(t){let u=await this.scope.connection.getAccountInfo(i.configId);u&&(a=Nu.decode(u.data))}return D(M({},i),{baseReserve:new Ze(_u.decode(o.data).amount.toString()).sub(i.protocolFeesMintA).sub(i.fundFeesMintA),quoteReserve:new Ze(_u.decode(s.data).amount.toString()).sub(i.protocolFeesMintB).sub(i.fundFeesMintB),configInfo:a})}async createPool(l){var m=l,{programId:e,poolFeeAccount:t,startTime:n,ownerInfo:i,associatedOnly:o=!1,checkCreateATAOwner:s=!1,txVersion:a,computeBudgetConfig:u}=m,c=Te(m,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var Q,W,j;let p=i.feePayer||((Q=this.scope.owner)==null?void 0:Q.publicKey),d=new Ze(new Y(c.mintA.address).toBuffer()).lte(new Ze(new Y(c.mintB.address).toBuffer())),[y,f]=d?[c.mintA,c.mintB]:[c.mintB,c.mintA],[b,g]=d?[c.mintAAmount,c.mintBAmount]:[c.mintBAmount,c.mintAAmount],k=i.useSOLBalance&&y.address===yi.toBase58(),A=i.useSOLBalance&&f.address===yi.toBase58(),[h,T]=[new Y(y.address),new Y(f.address)],I=this.createTxBuilder(),{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({mint:h,tokenProgram:y.programId,owner:this.scope.ownerPubKey,createInfo:k?{payer:p,amount:b}:void 0,notUseTokenAccount:k,skipCloseAccount:!k,associatedOnly:k?!1:o,checkCreateATAOwner:s});I.addInstruction(x||{});let{account:R,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({mint:new Y(f.address),tokenProgram:f.programId,owner:this.scope.ownerPubKey,createInfo:A?{payer:p,amount:g}:void 0,notUseTokenAccount:A,skipCloseAccount:!A,associatedOnly:A?!1:o,checkCreateATAOwner:s});if(I.addInstruction(N||{}),B===void 0||R===void 0)throw Error("you don't has some token account");let E=Bu({programId:e,mintA:h,mintB:T});return I.addInstruction({instructions:[Ku(e,this.scope.ownerPubKey,E.configId,E.authority,E.poolId,h,T,E.lpMint,B,R,ye(this.scope.ownerPubKey,E.lpMint).publicKey,E.vaultA,E.vaultB,t,new Y((W=y.programId)!=null?W:en),new Y((j=f.programId)!=null?j:en),E.observationId,b,g,n)],instructionTypes:[V.CpmmCreatePool]}),I.addCustomComputeBudget(u),I.versionBuild({txVersion:a,extInfo:{address:D(M({},E),{mintA:y,mintB:f,programId:e,poolFeeAccount:t})}})}async addLiquidity(e){let{poolInfo:t,inputAmount:n,baseIn:i,slippage:o,computeResult:s,computeBudgetConfig:a,config:u,txVersion:c}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),n.isZero()&&this.logAndCreateError("amounts must greater than zero","amountInA",{amountInA:n.toString()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:p}=M({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},u),d=await this.getRpcPoolInfo(t.id),{liquidity:y,inputAmountFee:f,anotherAmount:b}=s||this.computePairAmount({poolInfo:D(M({},t),{mintAmountA:new F(d.baseReserve.toString()).div(10**t.mintA.decimals).toNumber(),mintAmountB:new F(d.quoteReserve.toString()).div(10**t.mintB.decimals).toNumber(),lpAmount:new F(d.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),slippage:o,baseIn:i,epochInfo:await this.scope.fetchEpochInfo(),amount:new F(n.toString()).div(10**(i?t.mintA.decimals:t.mintB.decimals))}),g=b.amount,k=t.mintA.address===yi.toString(),A=t.mintB.address===yi.toString(),h=this.createTxBuilder(),[T,I]=[new Y(t.mintA.address),new Y(t.mintB.address)],{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Y(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:k||(i?n:g).isZero()?{payer:this.scope.ownerPubKey,amount:i?n:g}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:!1,checkCreateATAOwner:p});h.addInstruction(x||{});let{account:R,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Y(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||(i?g:n).isZero()?{payer:this.scope.ownerPubKey,amount:i?g:n}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!1,checkCreateATAOwner:p});h.addInstruction(N||{}),!B&&!R&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let E=await l.getCreatedTokenAccount({mint:new Y(t.lpMint.address)}),ee=await l.handleTokenAccount({side:"out",amount:0,mint:new Y(t.lpMint.address),tokenAccount:E,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:Q}=ee,W=Te(ee,["tokenAccount"]);h.addInstruction(W);let j=await this.getCpmmPoolKeys(t.id);return h.addInstruction({instructions:[Cu(new Y(t.programId),this.scope.ownerPubKey,new Y(j.authority),new Y(t.id),Q,B,R,new Y(j.vault.A),new Y(j.vault.B),T,I,new Y(t.lpMint.address),y,i?f.amount:g,i?g:f.amount)],instructionTypes:[V.CpmmAddLiquidity],lookupTableAddress:j.lookupTableAccount?[j.lookupTableAccount]:[]}),h.addCustomComputeBudget(a),h.versionBuild({txVersion:c})}async withdrawLiquidity(e){var Q,W;let{poolInfo:t,lpAmount:n,slippage:i,computeBudgetConfig:o,txVersion:s}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let a=new ve(new Ze(1)).sub(i),u=await this.getRpcPoolInfo(t.id),[c,l]=[a.mul(n.mul(u.baseReserve).div(u.lpAmount)).quotient,a.mul(n.mul(u.quoteReserve).div(u.lpAmount)).quotient],m=await this.scope.fetchEpochInfo(),[p,d]=[Ae(c,t.mintA.extensions.feeConfig,m,!0),Ae(l,t.mintB.extensions.feeConfig,m,!0)],{account:y}=this.scope,f=this.createTxBuilder(),[b,g]=[new Y(t.mintA.address),new Y(t.mintB.address)],k=b.equals(te),A=g.equals(te),h,T,{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Y(t.mintA.address),notUseTokenAccount:k,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!k,associatedOnly:!k,checkCreateATAOwner:!1});h=I,B&&f.addInstruction(B);let{account:x,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Y(t.mintB.address),notUseTokenAccount:A,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!A,associatedOnly:!A,checkCreateATAOwner:!1});T=x,R&&f.addInstruction(R),(!h||!T)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",y.tokenAccounts);let N=await y.getCreatedTokenAccount({mint:new Y(t.lpMint.address)});N||this.logAndCreateError("cannot found lp token account","tokenAccounts",y.tokenAccounts);let E=await this.getCpmmPoolKeys(t.id);return f.addInstruction({instructions:[Ru(new Y(t.programId),this.scope.ownerPubKey,new Y(E.authority),new Y(t.id),N,h,T,new Y(E.vault.A),new Y(E.vault.B),b,g,new Y(t.lpMint.address),n,c.sub((Q=p.fee)!=null?Q:new Ze(0)),l.sub((W=d.fee)!=null?W:new Ze(0)))],instructionTypes:[V.CpmmWithdrawLiquidity],lookupTableAddress:E.lookupTableAccount?[E.lookupTableAccount]:[]}),f.addCustomComputeBudget(o),f.versionBuild({txVersion:s})}async swap(e){var h,T,x,R,N,E;let{poolInfo:t,baseIn:n,swapResult:i,config:o,computeBudgetConfig:s,txVersion:a}=e,{bypassAssociatedCheck:u,checkCreateATAOwner:c}=M({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),l=this.createTxBuilder(),[m,p]=[new Y(t.mintA.address),new Y(t.mintB.address)],d=await this.scope.account.getCreatedTokenAccount({programId:new Y((h=t.mintA.programId)!=null?h:en),mint:m,associatedOnly:!1}),y=await this.scope.account.getCreatedTokenAccount({programId:new Y((T=t.mintB.programId)!=null?T:en),mint:p,associatedOnly:!1}),I=await this.scope.account.handleTokenAccount({side:n?"in":"out",amount:n?i.sourceAmountSwapped:i.destinationAmountSwapped,mint:m,tokenAccount:d,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:f}=I,b=Te(I,["tokenAccount"]);l.addInstruction(b);let B=await this.scope.account.handleTokenAccount({side:n?"out":"in",amount:n?i.destinationAmountSwapped:i.sourceAmountSwapped,mint:p,tokenAccount:y,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:g}=B,k=Te(B,["tokenAccount"]);l.addInstruction(k),!f&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let A=await this.getCpmmPoolKeys(t.id);return l.addInstruction({instructions:[n?Lu(new Y(t.programId),this.scope.ownerPubKey,new Y(A.authority),new Y(A.config.id),new Y(t.id),f,g,new Y(A.vault.A),new Y(A.vault.B),new Y((x=t.mintA.programId)!=null?x:en),new Y((R=t.mintB.programId)!=null?R:en),m,p,fi(new Y(t.programId),new Y(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped):Ou(new Y(t.programId),this.scope.ownerPubKey,new Y(A.authority),new Y(A.config.id),new Y(t.id),g,f,new Y(A.vault.B),new Y(A.vault.A),new Y((N=t.mintB.programId)!=null?N:en),new Y((E=t.mintA.programId)!=null?E:en),p,m,fi(new Y(t.programId),new Y(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped)],instructionTypes:[n?V.CpmmSwapBaseIn:V.CpmmSwapBaseOut]}),l.addCustomComputeBudget(s),l.versionBuild({txVersion:a})}computePairAmount({poolInfo:e,amount:t,slippage:n,epochInfo:i,baseIn:o}){var k,A,h,T,I,B,x,R;let s=1-Number(n.toSignificant())/100,a=new Ze(new F(t).mul(10**e[o?"mintA":"mintB"].decimals).mul(s).toFixed(0)),u=Ae(a,e[o?"mintA":"mintB"].extensions.feeConfig,i,!1),c=a.sub((k=u.fee)!=null?k:new Ze(0)),[l,m]=[new Ze(new F(e.mintAmountA).mul(10**e.mintA.decimals).toString()),new Ze(new F(e.mintAmountB).mul(10**e.mintB.decimals).toString())],p=new Ze(new F(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,F.ROUND_DOWN));this.logDebug("baseReserve:",l.toString(),"quoteReserve:",m.toString()),this.logDebug("tokenIn:",o?e.mintA.symbol:e.mintB.symbol,"amountIn:",a.toString(),"amountInFee:",(h=(A=u.fee)==null?void 0:A.toString())!=null?h:0,"anotherToken:",o?e.mintB.symbol:e.mintA.symbol,"slippage:",`${n.toSignificant()}%`);let d=o?"base":"quote";this.logDebug("input side:",d);let y=c.mul(p).div(d==="base"?l:m),f={amount:Se,fee:void 0,expirationTime:void 0};c.isZero()||(f=Ae(xp(y,l,m,p)[o?"amountB":"amountA"],e[o?"mintB":"mintA"].extensions.feeConfig,i,!0));let b=new ve(new Ze(1)).add(n),g=Ae(b.mul(f.amount.sub((T=f.fee)!=null?T:new Ze(0))).quotient,e[o?"mintB":"mintA"].extensions.feeConfig,i,!0);return this.logDebug("anotherAmount:",f.amount.toString(),"anotherAmountFee:",(B=(I=f.fee)==null?void 0:I.toString())!=null?B:0,"maxAnotherAmount:",g.amount.toString(),"maxAnotherAmountFee:",(R=(x=g.fee)==null?void 0:x.toString())!=null?R:0),{inputAmountFee:u,anotherAmount:f,maxAnotherAmount:g,liquidity:y}}};function xp(r,e,t,n){let i=r.mul(e).div(n);!i.isZero()&&!r.mul(e).mod(n).isZero()&&(i=i.add(new Ze(1)));let o=r.mul(t).div(n);return!o.isZero()&&!r.mul(t).mod(n).isZero()&&(o=o.add(new Ze(1))),{amountA:i,amountB:o}}var Pr=class extends xe{constructor(e){super(e)}static getAddLiquidityDefaultPool({addLiquidityPools:e,poolInfosCache:t}){if(e.length===0)return;if(e.length===1||(e.sort((i,o)=>o.version-i.version),e[0].version!==e[1].version))return e[0];let n=e.filter(i=>i.version===e[0].version);return n.sort((i,o)=>this.comparePoolSize(i,o,t)),n[0]}static comparePoolSize(e,t,n){let i=n[e.id],o=n[t.id];return i===void 0?1:o===void 0?-1:e.baseMint===t.baseMint?i.baseReserve.sub(o.baseReserve).gte(Se)?-1:1:i.baseReserve.sub(o.quoteReserve).gte(Se)?-1:1}async getWSolAccounts(){this.scope.checkOwner(),await this.scope.account.fetchWalletTokenAccounts();let e=this.scope.account.tokenAccounts.filter(t=>t.mint.equals(te));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}=e,i=await this.getWSolAccounts(),o=this.createTxBuilder();o.addCustomComputeBudget(e.computeBudgetConfig);let s=await St({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});o.addInstruction(s);let a=U(t);for(let u=0;u<i.length;u++)a.gte(i[u].amount)?(o.addInstruction({instructions:[Vt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),a.sub(i[u].amount)):(o.addInstruction({instructions:[Vt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),jn({destination:s.addresses.newAccount,source:i[u].publicKey,amount:a,owner:this.scope.ownerPubKey,tokenProgram:n}));return o.build()}async wrapWSol(e,t){let n=await this.getWSolAccounts(),i=this.createTxBuilder(),o=await St({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return i.addInstruction(o),n.length&&i.addInstruction({instructions:[jn({destination:n[0].publicKey,source:o.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[Vt({tokenAccount:o.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),i.build()}};import{TOKEN_PROGRAM_ID as Bp}from"@solana/spl-token";import{PublicKey as Sp,Transaction as Jo,TransactionInstruction as Kp}from"@solana/web3.js";import Vu from"bn.js";var $e=class extends xe{static getPdaPoolId(e,t){return oe([$e.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,i){return oe([$e.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new Vu(i).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:i,chainTime:o}){if(n.length===0)return[];let s=n.map(l=>$e.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<$e.VERSION_PROJECT.length;l++)a.push(...s.map(m=>$e.getPdaOwnerId(t,m,i,l).publicKey));let u=await It(e,[...s,...a]),c=[];for(let l=0;l<u.length;l++){let m=Math.floor(l/n.length),p=l%n.length,d=s[p],y=a[l],f=u[p],b=u[n.length+l];if(!(f&&b)||f.data.length!==$e.POOL_LAYOUT.span||b.data.length!==$e.OWNER_LAYOUT.span)continue;let g=$e.POOL_LAYOUT.decode(f.data),k=$e.OWNER_LAYOUT.decode(b.data),A=g.openTime.toNumber(),h=g.endTime.toNumber(),T=k.tokenInfo.map(x=>x.debtAmount.gt(new Vu(0))).filter(x=>!x).length!==3,I=o>A&&o<h&&g.status===1,B=T&&I;c.push({programId:t,poolId:d,ammId:g.ammId,ownerAccountId:y,snapshotLpAmount:k.lpAmount,project:$e.VERSION_PROJECT[m],openTime:A,endTime:h,canClaim:B,canClaimErrorType:T?I?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:g.tokenInfo.map((x,R)=>({mintAddress:x.mintAddress,mintVault:x.mintVault,mintDecimals:x.mintDecimals,perLpLoss:x.perLpLoss,debtAmount:k.tokenInfo[R].debtAmount.add(k.tokenInfo[R].claimedAmount)}))})}return c}async makeClaimTransaction({poolInfo:e,ownerInfo:t}){t.wallet||this.scope.checkOwner();let n=this.createTxBuilder(),i=t.wallet||this.scope.ownerPubKey,o=[];for(let u of e.tokenInfo){let{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({mint:u.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:u.mintAddress.equals(de.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!u.mintAddress.equals(de.WSOL.mint),associatedOnly:u.mintAddress.equals(de.WSOL.mint)?!1:t.associatedOnly});l&&n.addInstruction(l),o.push(c)}n.addInstruction({instructions:[$e.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:i,ownerPda:e.ownerAccountId,claimAddress:o}})]});let{transaction:s,signers:a}=n.build();return[{transaction:s,signer:a}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t}){let n=this.createTxBuilder(),i=t.wallet||this.scope.ownerPubKey,o={};for(let c of e){let l=[];for(let m of c.tokenInfo){let{account:p,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({mint:m.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:m.mintAddress.equals(de.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!m.mintAddress.equals(de.WSOL.mint),associatedOnly:m.mintAddress.equals(de.WSOL.mint)?!1:t.associatedOnly});d&&n.addInstruction(d),p&&(o[m.mintAddress.toString()]=p,l.push(p))}n.addInstruction({instructions:[$e.makeClaimInstruction({programId:c.programId,poolInfo:c,ownerInfo:{wallet:i,ownerPda:c.ownerAccountId,claimAddress:l}})]})}let{transaction:s,signers:a}=n.build(),u=n.allInstructions;return Gr(u,[i,...a.map(c=>c.publicKey)])?[{transaction:s,signer:a}]:[{transaction:new Jo().add(...u.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new Jo().add(...u.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new Jo().add(...n.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let i=L([]),o=[{pubkey:n.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:n.ownerPda,isSigner:!1,isWritable:!0},...n.claimAddress.map(u=>({pubkey:u,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:u})=>({pubkey:u,isSigner:!1,isWritable:!0})),{pubkey:Bp,isSigner:!1,isWritable:!1}],s=Buffer.alloc(i.span);i.encode({},s);let a=Buffer.from([10,66,208,184,161,6,191,98,...s]);return new Kp({keys:o,programId:e,data:a})}},dt=$e;dt.CLAIMED_NUM=3,dt.POOL_LAYOUT=L([pe(8),_("bump"),_("status"),w("openTime"),w("endTime"),S("ammId"),q(L([_("mintDecimals"),S("mintAddress"),S("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),$e.CLAIMED_NUM,"tokenInfo"),q(w(),10,"padding")]),dt.OWNER_LAYOUT=L([pe(8),_("bump"),_("version"),S("poolId"),S("owner"),w("lpAmount"),q(L([S("mintAddress"),w("debtAmount"),w("claimedAmount")]),$e.CLAIMED_NUM,"tokenInfo"),q(w(),4,"padding")]),dt.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new Sp(e)),dt.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},dt.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as ts}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Du}from"@solana/spl-token";import hr from"bn.js";import{TransactionInstruction as Rp,SYSVAR_RENT_PUBKEY as Lp}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Eu}from"@solana/spl-token";import{createInitializeAccountInstruction as Fu}from"@solana/spl-token";import{SystemProgram as bn,Transaction as vu}from"@solana/web3.js";function Cp(r="accountFlags"){let e=new Jr(r);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var es=L([pe(5),Cp("accountFlags"),S("ownAddress"),w("vaultSignerNonce"),S("baseMint"),S("quoteMint"),S("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),S("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),S("requestQueue"),S("eventQueue"),S("bids"),S("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),pe(7)]);function Op({programId:r,marketInfo:e}){let t=L([_("version"),ze("instruction"),w("baseLotSize"),w("quoteLotSize"),Bt("feeRateBps"),w("vaultSignerNonce"),w("quoteDustThreshold")]),n=[{pubkey:e.id,isSigner:!1,isWritable:!0},{pubkey:e.requestQueue,isSigner:!1,isWritable:!0},{pubkey:e.eventQueue,isSigner:!1,isWritable:!0},{pubkey:e.bids,isSigner:!1,isWritable:!0},{pubkey:e.asks,isSigner:!1,isWritable:!0},{pubkey:e.baseVault,isSigner:!1,isWritable:!0},{pubkey:e.quoteVault,isSigner:!1,isWritable:!0},{pubkey:e.baseMint,isSigner:!1,isWritable:!1},{pubkey:e.quoteMint,isSigner:!1,isWritable:!1},{pubkey:e.authority?e.quoteMint:Lp,isSigner:!1,isWritable:!1}].concat(e.authority?{pubkey:e.authority,isSigner:!1,isWritable:!1}:[]).concat(e.authority&&e.pruneAuthority?{pubkey:e.pruneAuthority,isSigner:!1,isWritable:!1}:[]),i=Buffer.alloc(t.span);return t.encode({version:0,instruction:0,baseLotSize:e.baseLotSize,quoteLotSize:e.quoteLotSize,feeRateBps:e.feeRateBps,vaultSignerNonce:e.vaultSignerNonce,quoteDustThreshold:e.quoteDustThreshold},i),new Rp({keys:n,programId:r,data:i})}async function Wu({connection:r,wallet:e,marketInfo:t}){let n=new vu,i=await r.getMinimumBalanceForRentExemption(165);n.add(bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:i,space:165,programId:Eu}),bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:i,space:165,programId:Eu}),Fu(t.baseVault.publicKey,t.baseMint,t.vaultOwner),Fu(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let o=new vu;return o.add(bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await r.getMinimumBalanceForRentExemption(es.span),space:es.span,programId:t.programId}),bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.requestQueue.seed,newAccountPubkey:t.requestQueue.publicKey,lamports:await r.getMinimumBalanceForRentExemption(5120+12),space:5120+12,programId:t.programId}),bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.eventQueue.seed,newAccountPubkey:t.eventQueue.publicKey,lamports:await r.getMinimumBalanceForRentExemption(262144+12),space:262144+12,programId:t.programId}),bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.bids.seed,newAccountPubkey:t.bids.publicKey,lamports:await r.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.asks.seed,newAccountPubkey:t.asks.publicKey,lamports:await r.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),Op({programId:t.programId,marketInfo:{id:t.id.publicKey,requestQueue:t.requestQueue.publicKey,eventQueue:t.eventQueue.publicKey,bids:t.bids.publicKey,asks:t.asks.publicKey,baseVault:t.baseVault.publicKey,quoteVault:t.quoteVault.publicKey,baseMint:t.baseMint,quoteMint:t.quoteMint,baseLotSize:t.baseLotSize,quoteLotSize:t.quoteLotSize,feeRateBps:t.feeRateBps,vaultSignerNonce:t.vaultSignerNonce,quoteDustThreshold:t.quoteDustThreshold}})),[{transaction:n,signer:[],instructionTypes:[V.CreateAccount,V.CreateAccount,V.InitAccount,V.InitAccount]},{transaction:o,signer:[],instructionTypes:[V.CreateAccount,V.CreateAccount,V.CreateAccount,V.CreateAccount,V.CreateAccount,V.InitMarket]}]}var Rn=class extends xe{async create({baseInfo:e,quoteInfo:t,lotSize:n,tickSize:i,dexProgramId:o,txVersion:s,computeBudgetConfig:a}){let u=this.scope.ownerPubKey,c=Ye({fromPublicKey:u,programId:o}),l=Ye({fromPublicKey:u,programId:o}),m=Ye({fromPublicKey:u,programId:o}),p=Ye({fromPublicKey:u,programId:o}),d=Ye({fromPublicKey:u,programId:o}),y=Ye({fromPublicKey:u,programId:Du}),f=Ye({fromPublicKey:u,programId:Du}),b=0,g=new hr(100);function k(){let N=new hr(0);for(;;)try{return{vaultOwner:ts.createProgramAddressSync([c.publicKey.toBuffer(),N.toArrayLike(Buffer,"le",8)],o),vaultSignerNonce:N}}catch{if(N.iaddn(1),N.gt(new hr(25555)))throw Error("find vault owner error")}}let{vaultOwner:A,vaultSignerNonce:h}=k(),T=new hr(Math.round(10**e.decimals*n)),I=new hr(Math.round(n*10**t.decimals*i));if(T.eq(Se))throw Error("lot size is too small");if(I.eq(Se))throw Error("tick size or lot size is too small");let B=await Wu({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:o,id:c,baseMint:e.mint,quoteMint:t.mint,baseVault:y,quoteVault:f,vaultOwner:A,requestQueue:l,eventQueue:m,bids:p,asks:d,feeRateBps:b,quoteDustThreshold:g,vaultSignerNonce:h,baseLotSize:T,quoteLotSize:I}}),x=this.createTxBuilder();x.addCustomComputeBudget(a),x.addInstruction({instructions:B[0].transaction.instructions,signers:B[0].signer});let R=[];for await(let N of B.slice(1,B.length)){let E=this.createTxBuilder();E.addCustomComputeBudget(a),E.addInstruction({instructions:N.transaction.instructions,signers:N.signer,instructionTypes:N.instructionTypes});let Q=await E.versionBuild({txVersion:s});R.push(Q)}return x.versionMultiBuild({extraPreBuildData:R,extInfo:{address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:p.publicKey,asks:d.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new ts(e.mint),quoteMin:new ts(t.mint)}},txVersion:s})}};import{PublicKey as Ir}from"@solana/web3.js";import{PublicKey as Np,TransactionInstruction as rs,SYSVAR_CLOCK_PUBKEY as Mp}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as is}from"@solana/spl-token";var ns=L([_("instruction"),ca("amount")]),Tr=L([_("instruction")]);function BB({programId:r,amount:e,instructionKeys:t}){let n=[{pubkey:new Np("11111111111111111111111111111111"),isSigner:!1,isWritable:!1},{pubkey:is,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:Vi,isSigner:!1,isWritable:!1},...Object.entries(t).map(([o,s])=>({pubkey:s,isSigner:o==="userOwner",isWritable:!["authority","userOwner","userIdoCheck","userStakeInfo"].includes(o)}))],i=Buffer.alloc(ns.span);return ns.encode({instruction:1,amount:Number(e)},i),new rs({keys:n,programId:r,data:i})}function bi({programId:r},e){let t=[{pubkey:is,isSigner:!1,isWritable:!1},{pubkey:Vi,isSigner:!1,isWritable:!1},...Object.entries(e).map(([i,o])=>({pubkey:o,isSigner:i==="userOwner",isWritable:!["authority","userOwner"].includes(i)}))],n=Buffer.alloc(Tr.span);return Tr.encode({instruction:2},n),new rs({keys:t,programId:r,data:n})}function os(r){let{poolConfig:e,userKeys:t,side:n}=r,i=n==="base"?t.baseTokenAccount:t.quoteTokenAccount,o=n==="base"?e.baseVault:e.quoteVault,s=Buffer.alloc(Tr.span);Tr.encode({instruction:2},s);let a=[{pubkey:is,isWritable:!1,isSigner:!1},{pubkey:Mp,isWritable:!1,isSigner:!1},{pubkey:e.id,isWritable:!0,isSigner:!1},{pubkey:e.authority,isWritable:!1,isSigner:!1},{pubkey:o,isWritable:!0,isSigner:!1},{pubkey:i,isWritable:!0,isSigner:!1},{pubkey:t.ledgerAccount,isWritable:!0,isSigner:!1},{pubkey:t.owner,isWritable:!1,isSigner:!0}];return new rs({programId:e.programId,keys:a,data:s})}import qu from"bn.js";var _p={[Yn.IDO_PROGRAM_ID_V1.toString()]:1,[Yn.IDO_PROGRAM_ID_V2.toString()]:2,[Yn.IDO_PROGRAM_ID_V3.toString()]:3,[Yn.IDO_PROGRAM_ID_V4.toString()]:4},Ln=class extends xe{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:i=!1,txVersion:o}){let s=this.createTxBuilder(),a=_p[t.programId];a||this.logAndCreateError("invalid version",a);let u=fe(t),[c,l]=[!new qu(e.coin).isZero(),!new qu(e.pc).isZero()],m=u.projectInfo.mint.address.equals(te),{account:p,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.projectInfo.mint.programId,mint:u.projectInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!m,notUseTokenAccount:m,associatedOnly:m?!1:n,checkCreateATAOwner:i});!p&&c&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),c&&d&&s.addInstruction(d);let y=u.buyInfo.mint.address.equals(te),{account:f,instructionParams:b}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.buyInfo.mint.programId,mint:u.buyInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,notUseTokenAccount:y,associatedOnly:y?!1:n,checkCreateATAOwner:i});if(!p&&l&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),l&&b&&s.addInstruction(b),(!p||!f)&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address,t.buyInfo.mint.address),a===3)return s.addInstruction({instructions:[...c?[bi({programId:u.programId},{idoId:u.id,authority:u.authority,poolTokenAccount:u.projectInfo.vault,userTokenAccount:p,userIdoInfo:new Ir(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[bi({programId:new Ir(t.programId)},{idoId:u.id,authority:u.authority,poolTokenAccount:u.buyInfo.vault,userTokenAccount:f,userIdoInfo:new Ir(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:o});if(a<3)return!c&&!l&&this.logAndCreateError("no claimable rewards"),s.addInstruction({instructions:[bi({programId:u.programId},{idoId:u.id,authority:u.authority,poolQuoteTokenAccount:u.buyInfo.vault,poolBaseTokenAccount:u.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:p,userIdoInfo:new Ir(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]}).versionBuild({txVersion:o});let g={poolConfig:{id:u.id,programId:u.programId,authority:u.authority,baseVault:u.projectInfo.vault,quoteVault:u.buyInfo.vault,baseToken:t.projectInfo.mint,quoteToken:t.buyInfo.mint},userKeys:{baseTokenAccount:p,quoteTokenAccount:f,ledgerAccount:new Ir(e.userIdoInfo),owner:this.scope.ownerPubKey}};return s.addInstruction({instructions:[...c?[os(D(M({},g),{side:"base"}))]:[],...l?[os(D(M({},g),{side:"quote"}))]:[]]}).versionBuild({txVersion:o})}};import{PublicKey as Vp}from"@solana/web3.js";import{MintLayout as Ep,TOKEN_2022_PROGRAM_ID as ss,TOKEN_PROGRAM_ID as as}from"@solana/spl-token";var xr=class extends xe{constructor(t){super(t);this._tokenList=[];this._tokenMap=new Map;this._blackTokenMap=new Map;this._mintGroup={official:new Set,jup:new Set,extra:new Set};this._extraTokenList=[]}async load(t){this.checkDisabled();let{forceUpdate:n=!1,type:i="strict"}=t||{},{mintList:o,blacklist:s}=await this.scope.fetchV3TokenList(n),a=await this.scope.fetchJupTokenList(i,n);this._tokenList=[],this._tokenMap=new Map,this._blackTokenMap=new Map,this._mintGroup={official:new Set,jup:new Set,extra:new Set},this._tokenMap.set(Tt.address,Tt),this._mintGroup.official.add(Tt.address),s.forEach(u=>{this._blackTokenMap.set(u.address,D(M({},u),{priority:-1}))}),o.forEach(u=>{var c;this._blackTokenMap.has(u.address)||(this._tokenMap.set(u.address,D(M({},u),{type:"raydium",priority:2,programId:(c=u.programId)!=null?c:u.tags.includes("token-2022")?ss.toBase58():as.toBase58()})),this._mintGroup.official.add(u.address))}),a.forEach(u=>{var c;this._blackTokenMap.has(u.address)||this._tokenMap.has(u.address)||(this._tokenMap.set(u.address,D(M({},u),{type:"jupiter",priority:1,programId:(c=u.programId)!=null?c:u.tags.includes("token-2022")?ss.toBase58():as.toBase58()})),this._mintGroup.jup.add(u.address))}),this._extraTokenList.forEach(u=>{this._blackTokenMap.has(u.address)||this._tokenMap.has(u.address)||(this._tokenMap.set(u.address,D(M({},u),{type:"extra",priority:1,programId:u.programId||u.tags.includes("token-2022")?ss.toBase58():as.toBase58()})),this._mintGroup.extra.add(u.address))}),this._tokenList=Array.from(this._tokenMap).map(u=>u[1])}get tokenList(){return this._tokenList}get tokenMap(){return this._tokenMap}get blackTokenMap(){return this._blackTokenMap}get mintGroup(){return this._mintGroup}async getTokenInfo(t){if(!t)throw new Error("please input mint");let n=t.toString(),i=this._tokenMap.get(n);if(i)return i;if(n.toLocaleUpperCase()==="SOL")return Tt;let o=(await this.scope.api.getTokenInfo([n]))[0];if(o)return this._mintGroup.extra.add(n),this._tokenMap.set(n,D(M({},o),{priority:2})),o;let s=await this.scope.connection.getAccountInfo(new Vp(n));if(!s)throw new Error(`mint address not found: ${n}`);let a=Ep.decode(s.data),u=n.toString().substring(0,6),c={chainId:101,address:n,programId:s.owner.toBase58(),logoURI:"",symbol:u,name:u,decimals:a.decimals,tags:[],extensions:{},priority:0,type:"unknown"};return this._mintGroup.extra.add(n),this._tokenMap.set(n,c),c}};var gi=class{constructor(e){this.rawBalances=new Map;let{connection:t,cluster:n,owner:i,api:o,defaultChainTime:s,defaultChainTimeOffset:a,apiCacheTime:u}=e;this._connection=t,this.cluster=n||"mainnet",this._owner=i?new gt(i):void 0,this._signAllTransactions=e.signAllTransactions,this.api=o,this._apiCacheTime=u||5*60*1e3,this.logger=ae("Raydium"),this.farm=new ar({scope:this,moduleName:"Raydium_Farm"}),this.account=new Zn({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new br({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new xr({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new Pr({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new gr({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new kr({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new dt({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new Rn({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new Ln({scope:this,moduleName:"Raydium_ido"}),this.availability={};let c=new Date().getTime();this.apiData={},a&&(this._chainTime={fetched:c,value:{chainTime:s||Date.now()-a,offset:a}})}static async load(e){var l;let t=Fp({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:i,logCount:o,logRequests:s,urlConfigs:a}=t,u=new jr({cluster:n,timeout:i,urlConfigs:a,logCount:o,logRequests:s}),c=new gi(D(M({},t),{api:u}));return await c.fetchAvailabilityStatus((l=e.disableFeatureCheck)!=null?l:!0),e.disableLoadToken||await c.token.load({type:e.jupTokenType}),c}get owner(){return this._owner}get ownerPubKey(){if(!this._owner)throw new Error(Zr);return this._owner.publicKey}setOwner(e){return this._owner=e?new gt(e):void 0,this}get connection(){if(!this._connection)throw new Error(oa);return this._connection}setConnection(e){return this._connection=e,this}get signAllTransactions(){return this._signAllTransactions}setSignAllTransactions(e){return this._signAllTransactions=e,this}checkOwner(){if(!this.owner)throw this.logger.error(Zr),new Error(Zr)}isCacheInvalidate(e){return new Date().getTime()-e>this._apiCacheTime}async fetchChainTime(){try{let e=await this.api.getChainTimeOffset();this._chainTime={fetched:Date.now(),value:{chainTime:Date.now()+e.offset*1e3,offset:e.offset*1e3}}}catch{this._chainTime=void 0}}async fetchV3TokenList(e){if(this.apiData.tokenList&&!this.isCacheInvalidate(this.apiData.tokenList.fetched)&&!e)return this.apiData.tokenList.data;let t=await this.api.getTokenList(),n={fetched:Date.now(),data:t};return this.apiData.tokenList=n,n.data}async fetchJupTokenList(e,t){var o;let n=(o=this.apiData.jupTokenList)==null?void 0:o[e];if(n&&!this.isCacheInvalidate(n.fetched)&&!t)return n.data;let i=await this.api.getJupTokenList(e);return this.apiData.jupTokenList=D(M({},this.apiData.jupTokenList),{[e]:{fetched:Date.now(),data:i}}),this.apiData.jupTokenList[e].data}get chainTimeData(){var e;return(e=this._chainTime)==null?void 0:e.value}async chainTimeOffset(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.offset:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.offset)||0)}async currentBlockChainTime(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.chainTime:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.chainTime)||Date.now())}async fetchEpochInfo(){return this._epochInfo&&Date.now()-this._epochInfo.fetched<=1e3*30?this._epochInfo.value:(this._epochInfo={fetched:Date.now(),value:await this.connection.getEpochInfo()},this._epochInfo.value)}async fetchAvailabilityStatus(e){if(e)return{};try{let t=await this.api.fetchAvailabilityStatus(),n=t.all===!1;return this.availability={all:t.all,swap:n?!1:t.swap,createConcentratedPosition:n?!1:t.createConcentratedPosition,addConcentratedPosition:n?!1:t.addConcentratedPosition,addStandardPosition:n?!1:t.addStandardPosition,removeConcentratedPosition:n?!1:t.removeConcentratedPosition,removeStandardPosition:n?!1:t.removeStandardPosition,addFarm:n?!1:t.addFarm,removeFarm:n?!1:t.removeFarm},t}catch{return{}}}};import{TOKEN_PROGRAM_ID as ls,TOKEN_2022_PROGRAM_ID as us}from"@solana/spl-token";import{PublicKey as pt,TransactionInstruction as ms,SystemProgram as Gu}from"@solana/web3.js";import cs from"bn.js";function OS(r,e,t,n,i,o,s,a,u,c,l,m){let p=L([_("instruction"),w("amountIn"),w("amountOut")]),d=[{pubkey:Gu.programId,isSigner:!1,isWritable:!1},{pubkey:ls,isSigner:!1,isWritable:!1},{pubkey:new pt(t.programId),isSigner:!1,isWritable:!1},{pubkey:new pt(t.id),isSigner:!1,isWritable:!0},{pubkey:new pt(n.id),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let f=fe(t);d.push({pubkey:f.config.id,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.A:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.B:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},...m.map(b=>({pubkey:b,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let f=fe(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:new pt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0})}else{let f=fe(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},...f.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:f.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:f.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0}])}let y=Buffer.alloc(p.span);return p.encode({instruction:4,amountIn:c,amountOut:l},y),new ms({keys:d,programId:r,data:y})}function NS(r,e,t,n,i,o,s,a,u,c){let l=L([_("instruction")]),m=[{pubkey:Gu.programId,isSigner:!1,isWritable:!1},{pubkey:ls,isSigner:!1,isWritable:!1},{pubkey:new pt(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new pt(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new pt(String(t.id)),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let d=fe(n);m.push({pubkey:d.config.id,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.A:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.B:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},...c.map(y=>({pubkey:y,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let d=fe(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:new pt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0})}else{let d=fe(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},...d.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:d.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:d.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0}])}let p=Buffer.alloc(l.span);return l.encode({instruction:5},p),new ms({keys:m,programId:r,data:p})}function Uu(r,e,t,n,i,o){if(r.pooltype.includes("StablePool")){let s=fe(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:new pt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]}else if(r.type==="Concentrated"){let s=r,a=fe(e),u=s.mintA.address===t;return[{pubkey:new pt(String(r.programId)),isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a.config.id,isSigner:!1,isWritable:!1},{pubkey:a.id,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.A:a.vault.B,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.B:a.vault.A,isSigner:!1,isWritable:!0},{pubkey:a.id,isSigner:!1,isWritable:!0},...a.mintA.programId.equals(us)||a.mintB.programId.equals(us)?[{pubkey:us,isSigner:!1,isWritable:!1},{pubkey:An,isSigner:!1,isWritable:!1},{pubkey:u?a.mintA.address:a.mintB.address,isSigner:!1,isWritable:!1},{pubkey:u?a.mintB.address:a.mintA.address,isSigner:!1,isWritable:!1}]:[],...(o!=null?o:[]).map(c=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:lt(new pt(String(r.programId)),new pt(r.id)).publicKey,isSigner:!1,isWritable:!0}]}else{let s=fe(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},...s.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:s.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:s.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]]}}function vp(r,e,t,n,i,o,s,a,u,c,l,m,p,d){let y=L([_("instruction"),w("amountIn"),w("amountOut")]),f=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:ls,isSigner:!1,isWritable:!1}];f.push(...Uu(a,c,o,t,n,d[0])),f.push(...Uu(u,l,s,n,i,d[1]));let b=Buffer.alloc(y.span);return y.encode({instruction:8,amountIn:m,amountOut:p},b),new ms({keys:f,programId:r,data:b})}async function MS({routeProgram:r,ownerInfo:e,inputMint:t,swapInfo:n}){var i,o,s,a,u,c;if(n.routeType==="amm")if(n.poolInfo[0].type==="Concentrated"){let l=fe(n.poolKey[0]),m=t.equals(l.mintA.address)?Ct.add(at):Rt.sub(at);return await Be.makeSwapBaseInInstructions({poolInfo:l,poolKeys:l,ownerInfo:{wallet:e.wallet,tokenAccountA:l.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:l.mintA.address.equals(t)?e.destinationToken:e.sourceToken},inputMint:t,amountIn:n.amountIn.amount.raw,amountOutMin:n.minAmountOut.amount.raw.sub((o=(i=n.minAmountOut.fee)==null?void 0:i.raw)!=null?o:new cs(0)),sqrtPriceLimitX64:m,remainingAccounts:n.remainingAccounts[0]})}else{let l=n.poolKey[0];return{signers:[],instructions:[ai({poolKeys:l,version:n.poolInfo[0].pooltype.includes("StablePool")?5:4,userKeys:{tokenAccountIn:e.sourceToken,tokenAccountOut:e.destinationToken,owner:e.wallet},amountIn:n.amountIn.amount.raw,amountOut:n.minAmountOut.amount.raw.sub((a=(s=n.minAmountOut.fee)==null?void 0:s.raw)!=null?a:new cs(0)),fixedSide:"in"})],lookupTableAddress:l.lookupTableAccount?[l.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?V.AmmV5SwapBaseIn:V.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let l=n.poolInfo[0],m=n.poolInfo[1],p=n.poolKey[0],d=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[vp(r,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.minMiddleAmountFee.token.mint.toString(),l,m,p,d,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((c=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?c:new cs(0)),n.remainingAccounts)],instructionTypes:[V.RouteSwap],lookupTableAddress:[p.lookupTableAccount,d.lookupTableAccount].filter(y=>y!==void 0),address:{}}}else throw Error("route type error")}import zu from"bn.js";var ds=new zu(1e6);function Wp(r,e,t){return r.mul(e).add(t).sub(new zu(1)).div(t)}function Xu(r,e,t){return r.mul(e).div(t)}var wi=class{static tradingFee(e,t){return Wp(e,t,ds)}static protocolFee(e,t){return Xu(e,t,ds)}static fundFee(e,t){return Xu(e,t,ds)}};import Br from"bn.js";function Ai(r,e){if(e.isZero())throw Error("divisor is zero");return r.mod(e)}function Dp(r,e){if(e.isZero())throw Error("rhs is zero");let t=r.div(e);if(t.isZero())throw Error("quotient is zero");let n=Ai(r,e);if(n.gt(On)){t=t.add(new Br(1));let i=r.div(t);n=Ai(r,t),n.gt(On)&&(i=i.add(new Br(1)))}return[t,e]}var On=new Br(0),ki=class{static swapWithoutFees(e,t,n){let i=t.mul(n),o=t.add(e),[s,a]=Dp(i,o),u=a.sub(t),c=n.sub(s);if(c.isZero())throw Error("destinationAmountSwapped is zero");return{sourceAmountSwapped:u,destinationAmountSwapped:c}}static lpTokensToTradingTokens(e,t,n,i,o){let s=e.mul(n).div(t),a=e.mul(i).div(t);if(o===0)return{tokenAmount0:s,tokenAmount1:a};if(o===1)return Ai(e.mul(n),t).gt(On)&&s.gt(On)&&(s=s.add(new Br(1))),Ai(e.mul(i),t).gt(On)&&a.gt(On)&&(a=a.add(new Br(1))),{tokenAmount0:s,tokenAmount1:a};throw Error("roundDirection value error")}};var Yu=(t=>(t[t.Floor=0]="Floor",t[t.Ceiling=1]="Ceiling",t))(Yu||{}),Qu=class{static validate_supply(e,t){if(e.isZero())throw Error("tokenAmount0 is zero");if(t.isZero())throw Error("tokenAmount1 is zero")}static swap(e,t,n,i){let o=wi.tradingFee(e,i),s=e.sub(o),{sourceAmountSwapped:a,destinationAmountSwapped:u}=ki.swapWithoutFees(s,t,n),c=a.add(o);return{newSwapSourceAmount:t.add(c),newSwapDestinationAmount:n.sub(u),sourceAmountSwapped:c,destinationAmountSwapped:u,tradeFee:o}}};var Hu={[Qr.toBase58()]:3},ju={3:Qr};var qp=L([pe(5),pe(8),S("ownAddress"),w("vaultSignerNonce"),S("baseMint"),S("quoteMint"),S("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),S("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),S("requestQueue"),S("eventQueue"),S("bids"),S("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),pe(7)]),Zu={3:qp};import{PublicKey as $u}from"@solana/web3.js";var Pi=ae("Serum"),Ju=class{static getProgramId(e){let t=ju[e];return t||Pi.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=Hu[t];return n||Pi.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=Zu[e];return t||Pi.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()],i=0,o;for(;i<100;){try{let s=n.concat(Buffer.from([i]),Buffer.alloc(7));o=$u.createProgramAddressSync(s,e)}catch(s){if(s instanceof TypeError)throw s;i++;continue}return{publicKey:o,nonce:i}}return Pi.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:$u.default,nonce:i}}};var KK=r=>r;export{db as ACCOUNT_TYPE_SIZE,Wb as ALL_PROGRAM_ID,Xd as AMM_CONFIG_SEED,Ll as AMM_STABLE,$i as AMM_V4,cf as ANAMint,Xe as API_URLS,Bl as AccountType,sT as AmmConfigLayout,jr as Api,au as BIT_PRECISION,zt as BNDivCeil,an as BNLayout,gy as BN_100,wy as BN_1000,Ay as BN_10000,by as BN_FIVE,qs as BN_ONE,nn as BN_TEN,yy as BN_THREE,fy as BN_TWO,Se as BN_ZERO,zg as BitStructure,ua as Blob,Ol as CLMM_PROGRAM_ID,Vi as CLOCK_PROGRAM_ID,vl as CREATE_CPMM_POOL_AUTH,Wl as CREATE_CPMM_POOL_FEE_ACC,Fl as CREATE_CPMM_POOL_PROGRAM,gr as Clmm,Be as ClmmInstrument,ki as ConstantProductCurve,Nu as CpmmConfigInfoLayout,wi as CpmmFee,Mu as CpmmPoolInfoLayout,vn as Currency,rn as CurrencyAmount,Qu as CurveCalculator,pg as DEV_API_URLS,Fb as DEV_CREATE_CPMM_POOL_AUTH,vb as DEV_CREATE_CPMM_POOL_FEE_ACC,Eb as DEV_CREATE_CPMM_POOL_PROGRAM,Rd as DataElement,lf as ETHMint,zo as EXTENSION_TICKARRAY_BITMAP_SIZE,Ra as FARM_LOCK_MINT,La as FARM_LOCK_VAULT,ji as FARM_PROGRAM_ID_V3,Zi as FARM_PROGRAM_ID_V5,Tn as FARM_PROGRAM_ID_V6,At as FARM_PROGRAM_TO_VERSION,Na as FARM_VERSION_TO_LEDGER_LAYOUT,Oa as FARM_VERSION_TO_STATE_LAYOUT,mi as FEE_RATE_DENOMINATOR,ds as FEE_RATE_DENOMINATOR_VALUE,Jd as FETCH_TICKARRAY_COUNT,$d as Fee,ne as Fraction,Yn as IDO_ALL_PROGRAM,Ml as IDO_PROGRAM_ID_V1,_l as IDO_PROGRAM_ID_V2,Vl as IDO_PROGRAM_ID_V3,El as IDO_PROGRAM_ID_V4,Vr as INSTRUCTION_PROGRAM_ID,V as InstructionType,Ji as JupTokenType,Pu as LIQUIDITY_FEES_DENOMINATOR,ku as LIQUIDITY_FEES_NUMERATOR,sp as LIQUIDITY_VERSION_TO_SERUM_VERSION,hP as LIQUIDITY_VERSION_TO_STATE_LAYOUT,uu as LOG_B_2_X32,cu as LOG_B_P_ERR_MARGIN_LOWER_X64,lu as LOG_B_P_ERR_MARGIN_UPPER_X64,zr as LOOKUP_TABLE_CACHE,Qn as Layout,ce as LiquidityMath,ic as LogLevel,xi as Logger,es as MARKET_STATE_LAYOUT_V2,qp as MARKET_STATE_LAYOUT_V3,Zu as MARKET_VERSION_TO_STATE_LAYOUT,js as MAX_BASE64_SIZE,Rt as MAX_SQRT_PRICE_X64,et as MAX_TICK,An as MEMO_PROGRAM_ID,_s as MEMO_PROGRAM_ID2,kn as METADATA_PROGRAM_ID,Ct as MIN_SQRT_PRICE_X64,Qe as MIN_TICK,Kn as MODEL_DATA_PUBKEY,Ju as Market,$ as MathUtil,Xo as MaxU64,su as MaxUint128,Ft as NEGATIVE_ONE,uf as NRVMint,at as ONE,Rl as OPEN_BOOK_PROGRAM,jd as OPERATION_SEED,Qo as ObservationInfoLayout,np as ObservationLayout,yu as OperationLayout,so as OptionLayout,gt as Owner,ef as PAIMint,Qd as POOL_REWARD_VAULT_SEED,zd as POOL_SEED,Zd as POOL_TICK_ARRAY_BITMAP_SEED,Yd as POOL_VAULT_SEED,ru as POSITION_SEED,ve as Percent,Ul as PoolFetchType,pu as PoolInfoLayout,He as PoolUtils,di as PositionInfoLayout,ip as PositionRewardInfoLayout,fr as PositionUtils,Ge as Price,aT as ProtocolPositionLayout,li as Q128,ut as Q64,Jp as RAYMint,nt as RENT_PROGRAM_ID,gi as Raydium,rp as RewardInfo,Yu as RoundDirection,Di as Rounding,Nl as Router,Hu as SERUM_PROGRAMID_TO_VERSION,Qr as SERUM_PROGRAM_ID_V3,ju as SERUM_VERSION_TO_PROGRAMID,ia as SESSION_KEY,Ne as SOLMint,Tt as SOL_INFO,Zk as SPL_MINT_LAYOUT,tf as SRMMint,eo as STORAGE_KEY,Vs as SYSTEM_PROGRAM_ID,Z as SqrtPriceMath,Sn as StableLayout,ao as Structure,pn as SwapMath,dn as TICK_ARRAY_BITMAP_SIZE,Hd as TICK_ARRAY_SEED,_e as TICK_ARRAY_SIZE,HP as TICK_SPACINGS,Me as TOKEN_WSOL,vt as TickArrayBitmap,fu as TickArrayBitmapExtensionLayout,pr as TickArrayBitmapExtensionUtils,dr as TickArrayLayout,op as TickLayout,fn as TickMath,le as TickQuery,G as TickUtils,de as Token,he as TokenAmount,Yr as TxBuilder,Wn as TxVersion,mr as U64Resolution,ZP as U64_IGNORE_RANGE,ro as UInt,nf as USDCMint,af as USDHMint,rf as USDTMint,Cl as UTIL1216,uo as Union,Ka as Voter,ld as VoterDepositEntry,cd as VoterLockup,Sa as VoterRegistrar,ud as VoterVotingMintConfig,te as WSOLMint,Jr as WideBits,_t as WrappedLayout,me as ZERO,Fs as _100_PERCENT,P as accountMeta,ty as add,Ur as addComputeBudget,Eo as addLiquidityLayout,Lw as array,go as associatedLedgerAccountLayout,io as bits,pe as blob,De as bool,Ro as calFarmRewardAmount,Wp as ceilDiv,Dn as checkLegacyTxSize,qn as checkV0TxSize,Yi as chunkArray,Tr as claimLayout,Vt as closeAccountInstruction,Ni as commonSystemAccountMeta,Va as createAssociatedLedgerAccountInstruction,ae as createLogger,Ga as createPoolFeeLayout,$a as createPoolV4InstructionV2,PP as createPoolV4Layout,St as createWSolAccountInstructions,kw as cstr,vf as currencyEquals,pl as decimalToFraction,Fm as decodeBool,Zf as div,vr as divCeil,Je as dwLayout,vm as encodeBool,Og as endlessRetry,ll as eq,yw as f32,bw as f32be,gw as f64,ww as f64be,Po as farmAddRewardLayout,VA as farmLedgerLayoutV3_1,Jn as farmLedgerLayoutV3_2,EA as farmLedgerLayoutV5_1,xa as farmLedgerLayoutV5_2,Ba as farmLedgerLayoutV6_1,_a as farmRewardInfoToConfig,Ao as farmRewardLayout,ko as farmRewardRestartLayout,ad as farmRewardTimeInfoLayout,Ta as farmStateV3Layout,Ia as farmStateV5Layout,$n as farmStateV6Layout,uk as fetchMultipleFarmInfoAndUpdate,ET as fetchMultipleInfo,pb as fetchMultipleMintInfos,oe as findProgramAddress,Mo as fixedSwapInLayout,_o as fixedSwapOutLayout,Xu as floorDiv,Gr as forecastTransactionSize,Wd as formatLayout,Ye as generatePubKey,ye as getATAAddress,Ma as getAssociatedAuthority,Zo as getAssociatedConfigId,it as getAssociatedLedgerAccount,tr as getAssociatedLedgerPoolAccount,lp as getAssociatedOpenOrders,Tu as getAssociatedPoolKeys,Ap as getCpmmPdaAmmConfigId,kp as getCpmmPdaPoolId,Bu as getCreatePoolKeys,ta as getDate,Lo as getDepositEntryIndex,Qa as getDxByDyBaseIn,Ya as getDyByDxBaseIn,rb as getEpochInfo,oi as getFarmLedgerLayout,md as getFarmStateLayout,mp as getLiquidityAssociatedAuthority,yn as getLiquidityAssociatedId,Vh as getLiquidityFromAmounts,ey as getMax,It as getMultipleAccountsInfo,hn as getMultipleAccountsInfoWithCustomFlags,Qi as getMultipleLookupTableInfo,zP as getPdaAmmConfigId,lt as getPdaExBitmapAccount,Pp as getPdaLpMint,ci as getPdaMetadataKey,fi as getPdaObservationId,lr as getPdaOperationAccount,ct as getPdaPersonalPositionAddress,wp as getPdaPoolAuthority,iu as getPdaPoolId,ou as getPdaPoolRewardVaulId,Go as getPdaPoolVaultId,mn as getPdaProtocolPositionAddress,ge as getPdaTickArrayAddress,xu as getPdaVault,Pn as getRecentBlockHash,Io as getRegistrarAddress,Gl as getSessionKey,Ha as getStablePrice,Kl as getTime,zy as getTimestamp,Co as getTokenOwnerRecordAddress,Yb as getTransferAmountFee,Ae as getTransferAmountFeeV2,So as getVoterAddress,Ko as getVoterWeightRecordAddress,Bo as getVotingMintAuthority,xo as getVotingTokenMint,kd as governanceCreateTokenOwnerRecord,Yg as greedy,cl as gt,jf as gte,ya as i128,DP as i16ToBytes,ui as i32ToBytes,ei as i64,fa as i8,Vo as initPoolLayout,yo as initTokenAccountInstruction,Op as initializeMarket,Rb as intersection,ra as isDateAfter,na as isDateBefore,fl as isDecimal,Jf as isMeaningfulNumber,ea as isNumber,ho as isValidFarmVersion,cr as isZero,fe as jsonInfo2PoolKeys,ck as judgeFarmType,qo as leadingZeros,nu as leastSignificantBit,Sd as liquidityStateV4Layout,Kd as liquidityStateV5Layout,Qf as lt,Hf as lte,of as mSOLMint,ai as makeAMMSwapInstruction,Za as makeAddLiquidityInstruction,No as makeAddNewRewardInstruction,bi as makeClaimInstruction,os as makeClaimInstructionV4,Ku as makeCreateCpmmPoolInInstruction,Ea as makeCreateFarmInstruction,Wu as makeCreateMarketInstruction,Fa as makeCreatorWithdrawFarmRewardInstruction,Cu as makeDepositCpmmInInstruction,va as makeDepositInstructionV3,Wa as makeDepositInstructionV5,Da as makeDepositInstructionV6,Bk as makeDepositTokenInstruction,Kk as makeDepositWithdrawInstruction,vP as makeInitPoolInstructionV4,BB as makePurchaseInstruction,Oo as makeRestartRewardInstruction,Ja as makeSimulatePoolInfoInstruction,Lu as makeSwapCpmmBaseInInInstruction,Ou as makeSwapCpmmBaseOutInInstruction,Ud as makeSwapFixedInInstruction,Gd as makeSwapFixedOutInstruction,MS as makeSwapInstruction,jn as makeTransferInstruction,Ru as makeWithdrawCpmmInInstruction,sr as makeWithdrawInstructionV3,or as makeWithdrawInstructionV5,ir as makeWithdrawInstructionV6,Sk as makeWithdrawTokenInstruction,sn as minExpirationTime,jP as mockCreatePoolInfo,mu as mockV3CreatePoolInfo,Ld as modelDataInfoLayout,tu as mostSignificantBit,Gi as mul,Xi as notInnerObject,uw as ns64,fw as ns64be,ca as nu64,nw as nu64be,oo as offset,Mb as offsetDateTime,Bw as option,U as parseBigNumberish,tn as parseNumberInfo,$s as parseSimulateLogToJson,Mt as parseSimulateValue,ha as parseTokenAccountResp,oP as parseTokenInfo,Zt as poolTypeV6,on as printSimulate,S as publicKey,ns as purchaseLayout,id as realFarmStateV3Layout,od as realFarmStateV5Layout,sd as realFarmV6Layout,Ds as recursivelyDecimalToFraction,Do as removeLiquidityInstruction,Fo as removeLiquidityLayout,OS as route1Instruction,NS as route2Instruction,vp as routeInstruction,Rw as rustEnum,iw as s16,cw as s16be,ow as s24,lw as s24be,We as s32,mw as s32be,sw as s40,dw as s40be,aw as s48,pw as s48be,rw as s8,q as seq,Yp as setLoggerLevel,ml as shakeFractionDecimal,Zs as simulateMultipleInstruction,FP as simulatePoolInfoInstruction,Pl as simulateTransaction,Xs as sleep,Ei as solToWSol,uP as solToWSolToken,Yt as splAccountLayout,Gs as splitNumber,sf as stSOLMint,Cw as str,L as struct,$f as sub,Kw as tagged,qi as tenExponential,dl as toBN,hl as toBuffer,Us as toFraction,Yf as toFractionWithDecimals,ky as toPercent,Ua as toToken,aP as toTokenAmount,sP as toTokenInfo,Py as toTokenPrice,hy as toTotalPrice,Ws as toUsdCurrency,Uo as trailingZeros,_i as tryParsePublicKey,z as u128,Bt as u16,eu as u16ToBytes,Zg as u16be,Qg as u24,$g as u24be,ze as u32,qP as u32ToBytes,Jg as u32be,Hg as u40,ew as u40be,jg as u48,tw as u48be,w as u64,_ as u8,Ow as union,KK as unionArr,Aw as unionLayoutDiscriminator,Ob as uniq,dd as updateFarmPoolInfo,Hr as updateReqHistory,Pw as utf8,Mi as validateAndParsePublicKey,To as validateFarmRewards,Sw as vec,Wm as vecU8,hd as voterStakeRegistryCreateDepositEntry,Pd as voterStakeRegistryCreateVoter,gd as voterStakeRegistryDeposit,wd as voterStakeRegistryUpdateVoterWeightRecord,Ad as voterStakeRegistryWithdraw,cP as wSolToSolToken,wo as withdrawRewardLayout,Lb as xor,Nw as zeros};
1
+ var ec=Object.defineProperty,tc=Object.defineProperties;var nc=Object.getOwnPropertyDescriptors;var Kr=Object.getOwnPropertySymbols;var bs=Object.prototype.hasOwnProperty,gs=Object.prototype.propertyIsEnumerable;var ys=(r,e,t)=>e in r?ec(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,M=(r,e)=>{for(var t in e||(e={}))bs.call(e,t)&&ys(r,t,e[t]);if(Kr)for(var t of Kr(e))gs.call(e,t)&&ys(r,t,e[t]);return r},D=(r,e)=>tc(r,nc(e));var Te=(r,e)=>{var t={};for(var n in r)bs.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&Kr)for(var n of Kr(r))e.indexOf(n)<0&&gs.call(r,n)&&(t[n]=r[n]);return t};import Xl from"axios";import{get as xi,set as ws}from"lodash";import As from"dayjs";import rc from"dayjs/plugin/utc";As.extend(rc);var ic=(i=>(i[i.Error=0]="Error",i[i.Warning=1]="Warning",i[i.Info=2]="Info",i[i.Debug=3]="Debug",i))(ic||{}),Bi=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 As().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}},Si={},Ps={};function ae(r){let e=xi(Si,r);if(!e){let t=xi(Ps,r);e=new Bi({name:r,logLevel:t}),ws(Si,r,e)}return e}function Yp(r,e){ws(Ps,r,e);let t=xi(Si,r);t&&(t.level=e)}import{PublicKey as gl}from"@solana/web3.js";import wl from"bn.js";import yl from"big.js";import Xt from"bn.js";import Pe from"bn.js";var gn=9e15,Gt=1e9,Ki="0123456789abcdef",Rr="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Lr="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Ci={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-gn,maxE:gn,crypto:!1},Is,Ot,J=!0,Nr="[DecimalError] ",Ut=Nr+"Invalid argument: ",xs=Nr+"Precision limit exceeded",Bs=Nr+"crypto unavailable",Ss="[object Decimal]",Ue=Math.floor,Oe=Math.pow,oc=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,sc=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,ac=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Ks=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,bt=1e7,H=7,uc=9007199254740991,cc=Rr.length-1,Ri=Lr.length-1,O={toStringTag:Ss};O.absoluteValue=O.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),X(r)};O.ceil=function(){return X(new this.constructor(this),this.e+1,2)};O.clampedTo=O.clamp=function(r,e){var t,n=this,i=n.constructor;if(r=new i(r),e=new i(e),!r.s||!e.s)return new i(NaN);if(r.gt(e))throw Error(Ut+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};O.comparedTo=O.cmp=function(r){var e,t,n,i,o=this,s=o.d,a=(r=new o.constructor(r)).d,u=o.s,c=r.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==r.e)return o.e>r.e^u<0?1:-1;for(n=s.length,i=a.length,e=0,t=n<i?n:i;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===i?0:n>i^u<0?1:-1};O.cosine=O.cos=function(){var r,e,t=this,n=t.constructor;return t.d?t.d[0]?(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+H,n.rounding=1,t=lc(n,Ns(n,t)),n.precision=r,n.rounding=e,X(Ot==2||Ot==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};O.cubeRoot=O.cbrt=function(){var r,e,t,n,i,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(J=!1,o=l.s*Oe(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=Fe(l.d),r=l.e,(o=(r-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=Oe(t,1/3),r=Ue((r+1)/3)-(r%3==(r<0?-1:2)),o==1/0?t="5e"+r:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+r),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(r=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=we(c.plus(l).times(a),c.plus(u),s+2,1),Fe(a.d).slice(0,s)===(t=Fe(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(X(a,r+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(X(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return J=!0,X(n,r,m.rounding,e)};O.decimalPlaces=O.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-Ue(this.e/H))*H,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};O.dividedBy=O.div=function(r){return we(this,new this.constructor(r))};O.dividedToIntegerBy=O.divToInt=function(r){var e=this,t=e.constructor;return X(we(e,new t(r),0,1,1),t.precision,t.rounding)};O.equals=O.eq=function(r){return this.cmp(r)===0};O.floor=function(){return X(new this.constructor(this),this.e+1,3)};O.greaterThan=O.gt=function(r){return this.cmp(r)>0};O.greaterThanOrEqualTo=O.gte=function(r){var e=this.cmp(r);return e==1||e===0};O.hyperbolicCosine=O.cosh=function(){var r,e,t,n,i,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,i=o.d.length,i<32?(r=Math.ceil(i/3),e=(1/_r(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=wn(s,1,o.times(e),new s(1),!0);for(var u,c=r,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return X(o,s.precision=t,s.rounding=n,!0)};O.hyperbolicSine=O.sinh=function(){var r,e,t,n,i=this,o=i.constructor;if(!i.isFinite()||i.isZero())return new o(i);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(i.e,i.sd())+4,o.rounding=1,n=i.d.length,n<3)i=wn(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/_r(5,r)),i=wn(o,2,i,i,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);r--;)s=i.times(i),i=i.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,X(i,e,t,!0)};O.hyperbolicTangent=O.tanh=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+7,n.rounding=1,we(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};O.inverseCosine=O.acos=function(){var r,e=this,t=e.constructor,n=e.abs().cmp(1),i=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?yt(t,i,o):new t(0):new t(NaN):e.isZero()?yt(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=yt(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};O.inverseHyperbolicCosine=O.acosh=function(){var r,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(r=n.precision,e=n.rounding,n.precision=r+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,J=!1,t=t.times(t).minus(1).sqrt().plus(t),J=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};O.inverseHyperbolicSine=O.asinh=function(){var r,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,J=!1,t=t.times(t).plus(1).sqrt().plus(t),J=!0,n.precision=r,n.rounding=e,t.ln())};O.inverseHyperbolicTangent=O.atanh=function(){var r,e,t,n,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(r=o.precision,e=o.rounding,n=i.sd(),Math.max(n,r)<2*-i.e-1?X(new o(i),r,e,!0):(o.precision=t=n-i.e,i=we(i.plus(1),new o(1).minus(i),t+r,1),o.precision=r+4,o.rounding=1,i=i.ln(),o.precision=r,o.rounding=e,i.times(.5))):new o(NaN)};O.inverseSine=O.asin=function(){var r,e,t,n,i=this,o=i.constructor;return i.isZero()?new o(i):(e=i.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(r=yt(o,t+4,n).times(.5),r.s=i.s,r):new o(NaN):(o.precision=t+6,o.rounding=1,i=i.div(new o(1).minus(i.times(i)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,i.times(2)))};O.inverseTangent=O.atan=function(){var r,e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=Ri)return s=yt(l,m+4,p).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=Ri)return s=yt(l,m+4,p).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/H+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(J=!1,e=Math.ceil(a/H),n=1,u=c.times(c),s=new l(c),i=c;r!==-1;)if(i=i.times(u),o=s.minus(i.div(n+=2)),i=i.times(u),s=o.plus(i.div(n+=2)),s.d[e]!==void 0)for(r=e;s.d[r]===o.d[r]&&r--;);return t&&(s=s.times(2<<t-1)),J=!0,X(s,l.precision=m,l.rounding=p,!0)};O.isFinite=function(){return!!this.d};O.isInteger=O.isInt=function(){return!!this.d&&Ue(this.e/H)>this.d.length-2};O.isNaN=function(){return!this.s};O.isNegative=O.isNeg=function(){return this.s<0};O.isPositive=O.isPos=function(){return this.s>0};O.isZero=function(){return!!this.d&&this.d[0]===0};O.lessThan=O.lt=function(r){return this.cmp(r)<0};O.lessThanOrEqualTo=O.lte=function(r){return this.cmp(r)<1};O.logarithm=O.log=function(r){var e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding,d=5;if(r==null)r=new l(10),e=!0;else{if(r=new l(r),t=r.d,r.s<0||!t||!t[0]||r.eq(1))return new l(NaN);e=r.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(i=t[0];i%10===0;)i/=10;o=i!==1}if(J=!1,a=m+d,s=qt(c,a),n=e?Or(l,a+10):qt(r,a),u=we(s,n,a,1),_n(u.d,i=m,p))do if(a+=10,s=qt(c,a),n=e?Or(l,a+10):qt(r,a),u=we(s,n,a,1),!o){+Fe(u.d).slice(i+1,i+15)+1==1e14&&(u=X(u,m+1,0));break}while(_n(u.d,i+=10,p));return J=!0,X(u,m,p)};O.minus=O.sub=function(r){var e,t,n,i,o,s,a,u,c,l,m,p,d=this,y=d.constructor;if(r=new y(r),!d.d||!r.d)return!d.s||!r.s?r=new y(NaN):d.d?r.s=-r.s:r=new y(r.d||d.s!==r.s?d:NaN),r;if(d.s!=r.s)return r.s=-r.s,d.plus(r);if(c=d.d,p=r.d,a=y.precision,u=y.rounding,!c[0]||!p[0]){if(p[0])r.s=-r.s;else if(c[0])r=new y(d);else return new y(u===3?-0:0);return J?X(r,a,u):r}if(t=Ue(r.e/H),l=Ue(d.e/H),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=p.length):(e=p,t=l,s=c.length),n=Math.max(Math.ceil(a/H),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=p.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=p[n]){m=c[n]<p[n];break}o=0}for(m&&(e=c,c=p,p=e,r.s=-r.s),s=c.length,n=p.length-s;n>0;--n)c[s++]=0;for(n=p.length;n>o;){if(c[--n]<p[n]){for(i=n;i&&c[--i]===0;)c[i]=bt-1;--c[i],c[n]+=bt}c[n]-=p[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(r.d=c,r.e=Mr(c,t),J?X(r,a,u):r):new y(u===3?-0:0)};O.modulo=O.mod=function(r){var e,t=this,n=t.constructor;return r=new n(r),!t.d||!r.s||r.d&&!r.d[0]?new n(NaN):!r.d||t.d&&!t.d[0]?X(new n(t),n.precision,n.rounding):(J=!1,n.modulo==9?(e=we(t,r.abs(),0,3,1),e.s*=r.s):e=we(t,r,0,n.modulo,1),e=e.times(r),J=!0,t.minus(e))};O.naturalExponential=O.exp=function(){return Li(this)};O.naturalLogarithm=O.ln=function(){return qt(this)};O.negated=O.neg=function(){var r=new this.constructor(this);return r.s=-r.s,X(r)};O.plus=O.add=function(r){var e,t,n,i,o,s,a,u,c,l,m=this,p=m.constructor;if(r=new p(r),!m.d||!r.d)return!m.s||!r.s?r=new p(NaN):m.d||(r=new p(r.d||m.s===r.s?m:NaN)),r;if(m.s!=r.s)return r.s=-r.s,m.minus(r);if(c=m.d,l=r.d,a=p.precision,u=p.rounding,!c[0]||!l[0])return l[0]||(r=new p(m)),J?X(r,a,u):r;if(o=Ue(m.e/H),n=Ue(r.e/H),c=c.slice(),i=o-n,i){for(i<0?(t=c,i=-i,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/H),s=o>s?o+1:s+1,i>s&&(i=s,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(s=c.length,i=l.length,s-i<0&&(i=s,t=l,l=c,c=t),e=0;i;)e=(c[--i]=c[i]+l[i]+e)/bt|0,c[i]%=bt;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return r.d=c,r.e=Mr(c,n),J?X(r,a,u):r};O.precision=O.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(Ut+r);return t.d?(e=Cs(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};O.round=function(){var r=this,e=r.constructor;return X(new e(r),r.e+1,e.rounding)};O.sine=O.sin=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+H,n.rounding=1,t=dc(n,Ns(n,t)),n.precision=r,n.rounding=e,X(Ot>2?t.neg():t,r,e,!0)):new n(NaN)};O.squareRoot=O.sqrt=function(){var r,e,t,n,i,o,s=this,a=s.d,u=s.e,c=s.s,l=s.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for(J=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=Fe(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=Ue((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(o=n,n=o.plus(we(s,o,t+2,1)).times(.5),Fe(o.d).slice(0,t)===(e=Fe(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(X(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(X(n,u+1,1),r=!n.times(n).eq(s));break}return J=!0,X(n,u,l.rounding,r)};O.tangent=O.tan=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+10,n.rounding=1,t=t.sin(),t.s=1,t=we(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,X(Ot==2||Ot==4?t.neg():t,r,e,!0)):new n(NaN)};O.times=O.mul=function(r){var e,t,n,i,o,s,a,u,c,l=this,m=l.constructor,p=l.d,d=(r=new m(r)).d;if(r.s*=l.s,!p||!p[0]||!d||!d[0])return new m(!r.s||p&&!p[0]&&!d||d&&!d[0]&&!p?NaN:!p||!d?r.s/0:r.s*0);for(t=Ue(l.e/H)+Ue(r.e/H),u=p.length,c=d.length,u<c&&(o=p,p=d,d=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,i=u+n;i>n;)a=o[i]+d[n]*p[i-n-1]+e,o[i--]=a%bt|0,e=a/bt|0;o[i]=(o[i]+e)%bt|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),r.d=o,r.e=Mr(o,t),J?X(r,m.precision,m.rounding):r};O.toBinary=function(r,e){return Ni(this,2,r,e)};O.toDecimalPlaces=O.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(tt(r,0,Gt),e===void 0?e=n.rounding:tt(e,0,8),X(t,r+t.e+1,e))};O.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=ht(n,!0):(tt(r,0,Gt),e===void 0?e=i.rounding:tt(e,0,8),n=X(new i(n),r+1,e),t=ht(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};O.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=ht(i):(tt(r,0,Gt),e===void 0?e=o.rounding:tt(e,0,8),n=X(new o(i),r+i.e+1,e),t=ht(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};O.toFraction=function(r){var e,t,n,i,o,s,a,u,c,l,m,p,d=this,y=d.d,f=d.constructor;if(!y)return new f(d);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=Cs(y)-d.e-1,s=o%H,e.d[0]=Oe(10,s<0?H+s:s),r==null)r=o>0?e:c;else{if(a=new f(r),!a.isInt()||a.lt(c))throw Error(Ut+a);r=a.gt(e)?o>0?e:c:a}for(J=!1,a=new f(Fe(y)),l=f.precision,f.precision=o=y.length*H*2;m=we(a,e,0,1,1),i=t.plus(m.times(n)),i.cmp(r)!=1;)t=n,n=i,i=c,c=u.plus(m.times(i)),u=i,i=e,e=a.minus(m.times(i)),a=i;return i=we(r.minus(t),n,0,1,1),u=u.plus(i.times(c)),t=t.plus(i.times(n)),u.s=c.s=d.s,p=we(c,n,o,1).minus(d).abs().cmp(we(u,t,o,1).minus(d).abs())<1?[c,n]:[u,t],f.precision=l,J=!0,p};O.toHexadecimal=O.toHex=function(r,e){return Ni(this,16,r,e)};O.toNearest=function(r,e){var t=this,n=t.constructor;if(t=new n(t),r==null){if(!t.d)return t;r=new n(1),e=n.rounding}else{if(r=new n(r),e===void 0?e=n.rounding:tt(e,0,8),!t.d)return r.s?t:r;if(!r.d)return r.s&&(r.s=t.s),r}return r.d[0]?(J=!1,t=we(t,r,0,e,1).times(r),J=!0,X(t)):(r.s=t.s,t=r),t};O.toNumber=function(){return+this};O.toOctal=function(r,e){return Ni(this,8,r,e)};O.toPower=O.pow=function(r){var e,t,n,i,o,s,a=this,u=a.constructor,c=+(r=new u(r));if(!a.d||!r.d||!a.d[0]||!r.d[0])return new u(Oe(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,r.eq(1))return X(a,n,o);if(e=Ue(r.e/H),e>=r.d.length-1&&(t=c<0?-c:c)<=uc)return i=Rs(u,a,t,n),r.s<0?new u(1).div(i):X(i,n,o);if(s=a.s,s<0){if(e<r.d.length-1)return new u(NaN);if((r.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=Oe(+a,c),e=t==0||!isFinite(t)?Ue(c*(Math.log("0."+Fe(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):(J=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),i=Li(r.times(qt(a,n+t)),n),i.d&&(i=X(i,n+5,1),_n(i.d,n,o)&&(e=n+10,i=X(Li(r.times(qt(a,e+t)),e),e+5,1),+Fe(i.d).slice(n+1,n+15)+1==1e14&&(i=X(i,n+1,0)))),i.s=s,J=!0,u.rounding=o,X(i,n,o))};O.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=ht(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(tt(r,1,Gt),e===void 0?e=i.rounding:tt(e,0,8),n=X(new i(n),r,e),t=ht(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};O.toSignificantDigits=O.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(tt(r,1,Gt),e===void 0?e=n.rounding:tt(e,0,8)),X(new n(t),r,e)};O.toString=function(){var r=this,e=r.constructor,t=ht(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};O.truncated=O.trunc=function(){return X(new this.constructor(this),this.e+1,1)};O.valueOf=O.toJSON=function(){var r=this,e=r.constructor,t=ht(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function Fe(r){var e,t,n,i=r.length-1,o="",s=r[0];if(i>0){for(o+=s,e=1;e<i;e++)n=r[e]+"",t=H-n.length,t&&(o+=Dt(t)),o+=n;s=r[e],n=s+"",t=H-n.length,t&&(o+=Dt(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function tt(r,e,t){if(r!==~~r||r<e||r>t)throw Error(Ut+r)}function _n(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=H,i=0):(i=Math.ceil((e+1)/H),e%=H),o=Oe(10,H-e),a=r[i]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(r[i+1]/o/100|0)==Oe(10,e-2)-1||(a==o/2||a==0)&&(r[i+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(r[i+1]/o/1e3|0)==Oe(10,e-3)-1,s}function Cr(r,e,t){for(var n,i=[0],o,s=0,a=r.length;s<a;){for(o=i.length;o--;)i[o]*=e;for(i[0]+=Ki.indexOf(r.charAt(s++)),n=0;n<i.length;n++)i[n]>t-1&&(i[n+1]===void 0&&(i[n+1]=0),i[n+1]+=i[n]/t|0,i[n]%=t)}return i.reverse()}function lc(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/_r(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=wn(r,1,e.times(i),new r(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return r.precision-=t,e}var we=function(){function r(n,i,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*i+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,i,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=i[a]){u=n[a]>i[a]?1:-1;break}return u}function t(n,i,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<i[o]?1:0,n[o]=a*s+n[o]-i[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,i,o,s,a,u){var c,l,m,p,d,y,f,b,g,P,A,h,T,I,B,x,R,N,E,Q,W=n.constructor,j=n.s==i.s?1:-1,ee=n.d,se=i.d;if(!ee||!ee[0]||!se||!se[0])return new W(!n.s||!i.s||(ee?se&&ee[0]==se[0]:!se)?NaN:ee&&ee[0]==0||!se?j*0:j/0);for(u?(d=1,l=n.e-i.e):(u=bt,d=H,l=Ue(n.e/d)-Ue(i.e/d)),E=se.length,R=ee.length,g=new W(j),P=g.d=[],m=0;se[m]==(ee[m]||0);m++);if(se[m]>(ee[m]||0)&&l--,o==null?(I=o=W.precision,s=W.rounding):a?I=o+(n.e-i.e)+1:I=o,I<0)P.push(1),y=!0;else{if(I=I/d+2|0,m=0,E==1){for(p=0,se=se[0],I++;(m<R||p)&&I--;m++)B=p*u+(ee[m]||0),P[m]=B/se|0,p=B%se|0;y=p||m<R}else{for(p=u/(se[0]+1)|0,p>1&&(se=r(se,p,u),ee=r(ee,p,u),E=se.length,R=ee.length),x=E,A=ee.slice(0,E),h=A.length;h<E;)A[h++]=0;Q=se.slice(),Q.unshift(0),N=se[0],se[1]>=u/2&&++N;do p=0,c=e(se,A,E,h),c<0?(T=A[0],E!=h&&(T=T*u+(A[1]||0)),p=T/N|0,p>1?(p>=u&&(p=u-1),f=r(se,p,u),b=f.length,h=A.length,c=e(f,A,b,h),c==1&&(p--,t(f,E<b?Q:se,b,u))):(p==0&&(c=p=1),f=se.slice()),b=f.length,b<h&&f.unshift(0),t(A,f,h,u),c==-1&&(h=A.length,c=e(se,A,E,h),c<1&&(p++,t(A,E<h?Q:se,h,u))),h=A.length):c===0&&(p++,A=[0]),P[m++]=p,c&&A[0]?A[h++]=ee[x]||0:(A=[ee[x]],h=1);while((x++<R||A[0]!==void 0)&&I--);y=A[0]!==void 0}P[0]||P.shift()}if(d==1)g.e=l,Is=y;else{for(m=1,p=P[0];p>=10;p/=10)m++;g.e=m+l*d-1,X(g,a?o+g.e+1:o,s,y)}return g}}();function X(r,e,t,n){var i,o,s,a,u,c,l,m,p,d=r.constructor;e:if(e!=null){if(m=r.d,!m)return r;for(i=1,a=m[0];a>=10;a/=10)i++;if(o=e-i,o<0)o+=H,s=e,l=m[p=0],u=l/Oe(10,i-s-1)%10|0;else if(p=Math.ceil((o+1)/H),a=m.length,p>=a)if(n){for(;a++<=p;)m.push(0);l=u=0,i=1,o%=H,s=o-H+1}else break e;else{for(l=a=m[p],i=1;a>=10;a/=10)i++;o%=H,s=o-H+i,u=s<0?0:l/Oe(10,i-s-1)%10|0}if(n=n||e<0||m[p+1]!==void 0||(s<0?l:l%Oe(10,i-s-1)),c=t<4?(u||n)&&(t==0||t==(r.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/Oe(10,i-s):0:m[p-1])%10&1||t==(r.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=r.e+1,m[0]=Oe(10,(H-e%H)%H),r.e=-e||0):m[0]=r.e=0,r;if(o==0?(m.length=p,a=1,p--):(m.length=p+1,a=Oe(10,H-o),m[p]=s>0?(l/Oe(10,i-s)%Oe(10,s)|0)*a:0),c)for(;;)if(p==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(r.e++,m[0]==bt&&(m[0]=1));break}else{if(m[p]+=a,m[p]!=bt)break;m[p--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return J&&(r.e>d.maxE?(r.d=null,r.e=NaN):r.e<d.minE&&(r.e=0,r.d=[0])),r}function ht(r,e,t){if(!r.isFinite())return Os(r);var n,i=r.e,o=Fe(r.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+Dt(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+Dt(-i-1)+o,t&&(n=t-s)>0&&(o+=Dt(n))):i>=s?(o+=Dt(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+Dt(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=Dt(n))),o}function Mr(r,e){var t=r[0];for(e*=H;t>=10;t/=10)e++;return e}function Or(r,e,t){if(e>cc)throw J=!0,t&&(r.precision=t),Error(xs);return X(new r(Rr),e,1,!0)}function yt(r,e,t){if(e>Ri)throw Error(xs);return X(new r(Lr),e,t,!0)}function Cs(r){var e=r.length-1,t=e*H+1;if(e=r[e],e){for(;e%10==0;e/=10)t--;for(e=r[0];e>=10;e/=10)t++}return t}function Dt(r){for(var e="";r--;)e+="0";return e}function Rs(r,e,t,n){var i,o=new r(1),s=Math.ceil(n/H+4);for(J=!1;;){if(t%2&&(o=o.times(e),hs(o.d,s)&&(i=!0)),t=Ue(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),hs(e.d,s)}return J=!0,o}function ks(r){return r.d[r.d.length-1]&1}function Ls(r,e,t){for(var n,i=new r(e[0]),o=0;++o<e.length;)if(n=new r(e[o]),n.s)i[t](n)&&(i=n);else{i=n;break}return i}function Li(r,e){var t,n,i,o,s,a,u,c=0,l=0,m=0,p=r.constructor,d=p.rounding,y=p.precision;if(!r.d||!r.d[0]||r.e>17)return new p(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:0/0);for(e==null?(J=!1,u=y):u=e,a=new p(.03125);r.e>-2;)r=r.times(a),m+=5;for(n=Math.log(Oe(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new p(1),p.precision=u;;){if(o=X(o.times(r),u,1),t=t.times(++l),a=s.plus(we(o,t,u,1)),Fe(a.d).slice(0,u)===Fe(s.d).slice(0,u)){for(i=m;i--;)s=X(s.times(s),u,1);if(e==null)if(c<3&&_n(s.d,u-n,d,c))p.precision=u+=10,t=o=a=new p(1),l=0,c++;else return X(s,p.precision=y,d,J=!0);else return p.precision=y,s}s=a}}function qt(r,e){var t,n,i,o,s,a,u,c,l,m,p,d=1,y=10,f=r,b=f.d,g=f.constructor,P=g.rounding,A=g.precision;if(f.s<0||!b||!b[0]||!f.e&&b[0]==1&&b.length==1)return new g(b&&!b[0]?-1/0:f.s!=1?NaN:b?0:f);if(e==null?(J=!1,l=A):l=e,g.precision=l+=y,t=Fe(b),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(r),t=Fe(f.d),n=t.charAt(0),d++;o=f.e,n>1?(f=new g("0."+t),o++):f=new g(n+"."+t.slice(1))}else return c=Or(g,l+2,A).times(o+""),f=qt(new g(n+"."+t.slice(1)),l-y).plus(c),g.precision=A,e==null?X(f,A,P,J=!0):f;for(m=f,u=s=f=we(f.minus(1),f.plus(1),l,1),p=X(f.times(f),l,1),i=3;;){if(s=X(s.times(p),l,1),c=u.plus(we(s,new g(i),l,1)),Fe(c.d).slice(0,l)===Fe(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(Or(g,l+2,A).times(o+""))),u=we(u,new g(d),l,1),e==null)if(_n(u.d,l-y,P,a))g.precision=l+=y,c=s=f=we(m.minus(1),m.plus(1),l,1),p=X(f.times(f),l,1),i=a=1;else return X(u,g.precision=A,P,J=!0);else return g.precision=A,u;u=c,i+=2}}function Os(r){return String(r.s*r.s/0)}function Oi(r,e){var t,n,i;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(i=e.length;e.charCodeAt(i-1)===48;--i);if(e=e.slice(n,i),e){if(i-=n,r.e=t=t-n-1,r.d=[],n=(t+1)%H,t<0&&(n+=H),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=H;n<i;)r.d.push(+e.slice(n,n+=H));e=e.slice(n),n=H-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),J&&(r.e>r.constructor.maxE?(r.d=null,r.e=NaN):r.e<r.constructor.minE&&(r.e=0,r.d=[0]))}else r.e=0,r.d=[0];return r}function mc(r,e){var t,n,i,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Ks.test(e))return Oi(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(sc.test(e))t=16,e=e.toLowerCase();else if(oc.test(e))t=2;else if(ac.test(e))t=8;else throw Error(Ut+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=r.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,i=Rs(n,new n(t),o,o*2)),c=Cr(e,t,bt),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(r.s*0):(r.e=Mr(c,l),r.d=c,J=!1,s&&(r=we(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?Oe(2,u):Vn.pow(2,u))),J=!0,r)}function dc(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:wn(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/_r(5,t)),e=wn(r,2,e,e);for(var i,o=new r(5),s=new r(16),a=new r(20);t--;)i=e.times(e),e=e.times(o.plus(i.times(s.times(i).minus(a))));return e}function wn(r,e,t,n,i){var o,s,a,u,c=1,l=r.precision,m=Math.ceil(l/H);for(J=!1,u=t.times(t),a=new r(n);;){if(s=we(a.times(u),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=we(s.times(u),new r(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return J=!0,s.d.length=m+1,s}function _r(r,e){for(var t=r;--e;)t*=r;return t}function Ns(r,e){var t,n=e.s<0,i=yt(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return Ot=n?4:1,e;if(t=e.divToInt(i),t.isZero())Ot=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return Ot=ks(t)?n?2:3:n?4:1,e;Ot=ks(t)?n?1:4:n?3:2}return e.minus(i).abs()}function Ni(r,e,t,n){var i,o,s,a,u,c,l,m,p,d=r.constructor,y=t!==void 0;if(y?(tt(t,1,Gt),n===void 0?n=d.rounding:tt(n,0,8)):(t=d.precision,n=d.rounding),!r.isFinite())l=Os(r);else{for(l=ht(r),s=l.indexOf("."),y?(i=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):i=e,s>=0&&(l=l.replace(".",""),p=new d(1),p.e=l.length-s,p.d=Cr(ht(p),10,i),p.e=p.d.length),m=Cr(l,10,i),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=y?"0p+0":"0";else{if(s<0?o--:(r=new d(r),r.d=m,r.e=o,r=we(r,p,t,n,0,i),m=r.d,o=r.e,c=Is),s=m[t],a=i/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(r.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(r.s<0?8:7)),m.length=t,c)for(;++m[--t]>i-1;)m[t]=0,t||(++o,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=Ki.charAt(m[s]);if(y){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)l+="0";for(m=Cr(l,i,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=Ki.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>u)for(o-=u;o--;)l+="0";else o<u&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return r.s<0?"-"+l:l}function hs(r,e){if(r.length>e)return r.length=e,!0}function pc(r){return new this(r).abs()}function fc(r){return new this(r).acos()}function yc(r){return new this(r).acosh()}function bc(r,e){return new this(r).plus(e)}function gc(r){return new this(r).asin()}function wc(r){return new this(r).asinh()}function Ac(r){return new this(r).atan()}function Pc(r){return new this(r).atanh()}function kc(r,e){r=new this(r),e=new this(e);var t,n=this.precision,i=this.rounding,o=n+4;return!r.s||!e.s?t=new this(NaN):!r.d&&!e.d?(t=yt(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?yt(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=yt(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(we(r,e,o,1)),e=yt(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(we(r,e,o,1)),t}function hc(r){return new this(r).cbrt()}function Tc(r){return X(r=new this(r),r.e+1,2)}function Ic(r,e,t){return new this(r).clamp(e,t)}function xc(r){if(!r||typeof r!="object")throw Error(Nr+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,Gt,"rounding",0,8,"toExpNeg",-gn,0,"toExpPos",0,gn,"maxE",0,gn,"minE",-gn,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=Ci[t]),(n=r[t])!==void 0)if(Ue(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(Ut+t+": "+n);if(t="crypto",i&&(this[t]=Ci[t]),(n=r[t])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[t]=!0;else throw Error(Bs);else this[t]=!1;else throw Error(Ut+t+": "+n);return this}function Bc(r){return new this(r).cos()}function Sc(r){return new this(r).cosh()}function Ms(r){var e,t,n;function i(o){var s,a,u,c=this;if(!(c instanceof i))return new i(o);if(c.constructor=i,Ts(o)){c.s=o.s,J?!o.d||o.e>i.maxE?(c.e=NaN,c.d=null):o.e<i.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;J?s>i.maxE?(c.e=NaN,c.d=null):s<i.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return Oi(c,o.toString())}else if(u!=="string")throw Error(Ut+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),Ks.test(o)?Oi(c,o):mc(c,o)}if(i.prototype=O,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.EUCLID=9,i.config=i.set=xc,i.clone=Ms,i.isDecimal=Ts,i.abs=pc,i.acos=fc,i.acosh=yc,i.add=bc,i.asin=gc,i.asinh=wc,i.atan=Ac,i.atanh=Pc,i.atan2=kc,i.cbrt=hc,i.ceil=Tc,i.clamp=Ic,i.cos=Bc,i.cosh=Sc,i.div=Kc,i.exp=Cc,i.floor=Rc,i.hypot=Lc,i.ln=Oc,i.log=Nc,i.log10=_c,i.log2=Mc,i.max=Vc,i.min=Ec,i.mod=Fc,i.mul=vc,i.pow=Wc,i.random=Dc,i.round=qc,i.sign=Uc,i.sin=Gc,i.sinh=Xc,i.sqrt=zc,i.sub=Yc,i.sum=Qc,i.tan=Hc,i.tanh=jc,i.trunc=Zc,r===void 0&&(r={}),r&&r.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)r.hasOwnProperty(t=n[e++])||(r[t]=this[t]);return i.config(r),i}function Kc(r,e){return new this(r).div(e)}function Cc(r){return new this(r).exp()}function Rc(r){return X(r=new this(r),r.e+1,3)}function Lc(){var r,e,t=new this(0);for(J=!1,r=0;r<arguments.length;)if(e=new this(arguments[r++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return J=!0,new this(1/0);t=e}return J=!0,t.sqrt()}function Ts(r){return r instanceof Vn||r&&r.toStringTag===Ss||!1}function Oc(r){return new this(r).ln()}function Nc(r,e){return new this(r).log(e)}function Mc(r){return new this(r).log(2)}function _c(r){return new this(r).log(10)}function Vc(){return Ls(this,arguments,"lt")}function Ec(){return Ls(this,arguments,"gt")}function Fc(r,e){return new this(r).mod(e)}function vc(r,e){return new this(r).mul(e)}function Wc(r,e){return new this(r).pow(e)}function Dc(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:tt(r,1,Gt),n=Math.ceil(r/H),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)i=e[o],i>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=i%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)i=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(i%1e7),o+=4);o=n/4}else throw Error(Bs);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=H,n&&r&&(i=Oe(10,H-r),a[o]=(n/i|0)*i);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=H)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<H&&(t-=H-n)}return s.e=t,s.d=a,s}function qc(r){return X(r=new this(r),r.e+1,this.rounding)}function Uc(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function Gc(r){return new this(r).sin()}function Xc(r){return new this(r).sinh()}function zc(r){return new this(r).sqrt()}function Yc(r,e){return new this(r).sub(e)}function Qc(){var r=0,e=arguments,t=new this(e[r]);for(J=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return J=!0,X(t,this.precision,this.rounding)}function Hc(r){return new this(r).tan()}function jc(r){return new this(r).tanh()}function Zc(r){return X(r=new this(r),r.e+1,1)}O[Symbol.for("nodejs.util.inspect.custom")]=O.toString;O[Symbol.toStringTag]="Decimal";var Vn=O.constructor=Ms(Ci);Rr=new Vn(Rr);Lr=new Vn(Lr);var F=Vn;import{PublicKey as vi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as $c}from"@solana/spl-token";import{PublicKey as Ie,SystemProgram as _s,SYSVAR_RENT_PUBKEY as Jc}from"@solana/web3.js";function k({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Mi=[k({pubkey:$c,isWritable:!1}),k({pubkey:_s.programId,isWritable:!1}),k({pubkey:Jc,isWritable:!1})];function _i({publicKey:r,transformSol:e}){let t=Vi(r.toString());if(t instanceof Ie)return e&&t.equals(Ne)?te:t;if(e&&t.toString()===Ne.toBase58())return te;if(typeof t=="string"){if(t===Ie.default.toBase58())return Ie.default;try{return new Ie(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Vi(r){try{return new Ie(r)}catch{return r}}var An=new Ie("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Vs=new Ie("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),nt=new Ie("SysvarRent111111111111111111111111111111111"),Ei=new Ie("SysvarC1ock11111111111111111111111111111111"),Pn=new Ie("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Vr=new Ie("Sysvar1nstructions1111111111111111111111111"),Es=_s.programId,Jp=new Ie("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),ef=new Ie("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),tf=new Ie("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),nf=new Ie("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),rf=new Ie("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),of=new Ie("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),sf=new Ie("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),af=new Ie("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),uf=new Ie("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),cf=new Ie("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),lf=new Ie("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),te=new Ie("So11111111111111111111111111111111111111112"),Ne=Ie.default;function Fi(r){return _i({publicKey:r,transformSol:!0})}import{PublicKey as el}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Fs}from"@solana/spl-token";var Tt={chainId:101,address:el.default.toBase58(),programId:Fs.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Me={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Fs.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 Wi=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===Ne.toBase58()||e instanceof vi&&Ne.equals(e)){this.decimals=Me.decimals,this.symbol=Me.symbol,this.name=Me.name,this.mint=new vi(Me.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=i||e.toString().substring(0,6),this.mint=o?vi.default:_i({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},de=Wi;de.WSOL=new Wi(D(M({},Me),{mint:Me.address}));import Fr from"big.js";import rl from"bn.js";import il from"decimal.js-light";import tl from"toformat";var nl=tl,En=nl;var Er=ae("module/fraction"),Di=En(Fr),Fn=En(il),ol={[0]:Fn.ROUND_DOWN,[1]:Fn.ROUND_HALF_UP,[2]:Fn.ROUND_UP},sl={[0]:Fr.roundDown,[1]:Fr.roundHalfUp,[2]:Fr.roundUp},ne=class{constructor(e,t=new rl(1)){this.numerator=U(e),this.denominator=U(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new ne(this.denominator,this.numerator)}add(e){let t=e instanceof ne?e:new ne(U(e));return this.denominator.eq(t.denominator)?new ne(this.numerator.add(t.numerator),this.denominator):new ne(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof ne?e:new ne(U(e));return this.denominator.eq(t.denominator)?new ne(this.numerator.sub(t.numerator),this.denominator):new ne(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof ne?e:new ne(U(e));return new ne(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof ne?e:new ne(U(e));return new ne(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Er.logWithError(`${e} is not an integer.`),e<=0&&Er.logWithError(`${e} is not positive.`),Fn.set({precision:e+1,rounding:ol[n]});let i=new Fn(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return i.toFormat(i.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||Er.logWithError(`${e} is not an integer.`),e<0&&Er.logWithError(`${e} is negative.`),Di.DP=e,Di.RM=sl[n]||1,new Di(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var al=ae("Raydium_price"),Ge=class extends ne{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new ne(Ui(n.decimals),Ui(i.decimals))}get raw(){return new ne(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Ge({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&al.logWithError("mul token not equals");let n=super.mul(t);return new Ge({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,i){return this.adjusted.toSignificant(t,n,i)}toFixed(t=this.quoteToken.decimals,n,i){return this.adjusted.toFixed(t,n,i)}};var Gi=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},vn=Gi;vn.SOL=new Gi(Tt);function vf(r,e){return r instanceof de&&e instanceof de?r.equals(e):r instanceof de||e instanceof de?!1:r===e}import ul from"bn.js";var vs=new ne(new ul(100)),ve=class extends ne{toSignificant(e=5,t,n){return this.mul(vs).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(vs).toFixed(e,t,n)}};function Ke(r){if(r instanceof ve)return new ne(r.numerator,r.denominator);if(r instanceof Ge)return r.adjusted;if(r instanceof he)try{return Ke(r.toExact())}catch{return new ne(Se)}if(r instanceof ne)return r;let e=String(r),t=tn(e);return new ne(t.numerator,t.denominator)}function Yf(r){var n;if(r instanceof ve)return{fr:new ne(r.numerator,r.denominator)};if(r instanceof Ge)return{fr:r.adjusted};if(r instanceof he)return{fr:Ke(r.toExact()),decimals:r.token.decimals};if(r instanceof ne)return{fr:r};let e=String(r),t=tn(e);return{fr:new ne(t.numerator,t.denominator),decimals:(n=t.dec)==null?void 0:n.length}}function Qf(r,e){if(r==null||e==null)return!1;let t=Ke(r),n=Ke(e);return t.sub(n).numerator,t.sub(n).numerator.lt(Se)}function cl(r,e){if(r==null||e==null)return!1;let t=Ke(r),n=Ke(e);return t.sub(n).numerator.gt(Se)}function Hf(r,e){if(r==null||e==null)return!1;let t=Ke(r),n=Ke(e);return t.sub(n).numerator.lte(Se)}function jf(r,e){if(r==null||e==null)return!1;let t=Ke(r),n=Ke(e);return t.sub(n).numerator.gte(Se)}function ll(r,e){if(r==null||e==null)return!1;let t=Ke(r),n=Ke(e);return t.sub(n).numerator.eq(Se)}function Zf(r,e){if(r==null||e==null)return;let t=Ke(r),n=Ke(e);try{return t.div(n)}catch{return t}}function $f(r,e){if(r==null||e==null)return;let t=Ke(r),n=Ke(e);return t.sub(n)}function Jf(r){return r==null?!1:!ll(r,0)}function ey(r,e){return cl(e,r)?e:r}function Xi(r,e){if(r==null||e==null)return;let t=Ke(r),n=Ke(e);return t.mul(n)}function ty(r,e){if(r==null||e==null)return;let t=Ke(r),n=Ke(e);return t.add(n)}var qi=(n=>(n[n.ROUND_DOWN=0]="ROUND_DOWN",n[n.ROUND_HALF_UP=1]="ROUND_HALF_UP",n[n.ROUND_UP=2]="ROUND_UP",n))(qi||{}),Se=new Pe(0),Us=new Pe(1),fy=new Pe(2),yy=new Pe(3),by=new Pe(5),nn=new Pe(10),gy=new Pe(100),wy=new Pe(1e3),Ay=new Pe(1e4),Ws=9007199254740991;function U(r){let e=ae("Raydium_parseBigNumberish");if(r instanceof Pe)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Pe(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=Ws||r<=-Ws)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Pe(String(r))):typeof r=="bigint"?new Pe(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Pe(0))}function Ui(r){return nn.pow(U(r))}function tn(r){var a;if(r===void 0)return{denominator:"1",numerator:"0"};if(r instanceof Pe)return{numerator:r.toString(),denominator:"1"};if(r instanceof ne)return{denominator:r.denominator.toString(),numerator:r.numerator.toString()};let e=String(r),[,t="",n="",i=""]=(a=e.replace(",","").match(/(-?)(\d*)\.?(\d*)/))!=null?a:[],o="1"+"0".repeat(i.length),s=t+(n==="0"?"":n)+i||"0";return{denominator:o,numerator:s,sign:t,int:n,dec:i}}function vr(r,e){let t=r.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}function ml(r){var n;let[,e="",t=""]=(n=r.toFixed(2).match(/(-?)(\d*)\.?(\d*)/))!=null?n:[];return`${e}${t}`}function dl(r,e=0){return r instanceof Pe?r:new Pe(ml(Gs(r).mul(nn.pow(new Pe(String(e))))))}function Gs(r){if(r instanceof ve)return new ne(r.numerator,r.denominator);if(r instanceof Ge)return r.adjusted;if(r instanceof he)try{return Gs(r.toExact())}catch{return new ne(Se)}if(r instanceof ne)return r;let e=String(r),t=tn(e);return new ne(t.numerator,t.denominator)}function Py(r,e){let{numerator:t,denominator:n}=tn(r);return new ve(new Pe(t),new Pe(n).mul(e!=null&&e.alreadyDecimaled?new Pe(100):new Pe(1)))}function ky(r){let{token:e,numberPrice:t,decimalDone:n}=r,i=new de({mint:"",decimals:6,symbol:"usd",name:"usd",skipMint:!0}),{numerator:o,denominator:s}=tn(t),a=n?new Pe(o).mul(nn.pow(new Pe(e.decimals))):o,u=new Pe(s).mul(nn.pow(new Pe(i.decimals)));return new Ge({baseToken:i,denominator:u.toString(),quoteToken:new de(D(M({},e),{skipMint:!0,mint:""})),numerator:a.toString()})}function Ds(r){let e=new vn({decimals:6,symbol:"usd",name:"usd"}),t=dl(Xi(r,10**e.decimals));return new rn(e,t)}function hy(r,e){return Ds(!e||!r?0:Xi(r,e))}function pl(r){if(r==null)return;let{numerator:e,denominator:t}=tn(r.toString());return new ne(e,t)}function fl(r){return r instanceof F}function qs(r){return fl(r)?pl(r):Array.isArray(r)?r.map(e=>qs(e)):zi(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,qs(t)])):r}var bl=ae("Raydium_amount"),Wr=En(yl);function Xs(r,e){let t="0",n="0";if(r.includes(".")){let i=r.split(".");i.length===2?([t,n]=i,n=n.padEnd(e,"0")):bl.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var he=class extends ne{constructor(t,n,i=!0,o){let s=new Xt(0),a=nn.pow(new Xt(t.decimals));if(i)s=U(n);else{let u=new Xt(0),c=new Xt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Xs(n.toString(),t.decimals);u=U(l),c=U(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=ae(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 he(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new he(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.token.decimals,n,i=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return Wr.DP=this.token.decimals,new Wr(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}},rn=class extends ne{constructor(t,n,i=!0,o){let s=new Xt(0),a=nn.pow(new Xt(t.decimals));if(i)s=U(n);else{let u=new Xt(0),c=new Xt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Xs(n.toString(),t.decimals);u=U(l),c=U(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=ae(o||"TokenAmount"),this.currency=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.currency.equals(t.currency)||this.logger.logWithError("gt currency not equals"),this.raw.gt(t.raw)}lt(t){return this.currency.equals(t.currency)||this.logger.logWithError("lt currency not equals"),this.raw.lt(t.raw)}add(t){return this.currency.equals(t.currency)||this.logger.logWithError("add currency not equals"),new rn(this.currency,this.raw.add(t.raw))}sub(t){return this.currency.equals(t.currency)||this.logger.logWithError("sub currency not equals"),new rn(this.currency,this.raw.sub(t.raw))}toSignificant(t=this.currency.decimals,n,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.currency.decimals,n,i=0){return t>this.currency.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return Wr.DP=this.currency.decimals,new Wr(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};async function zs(r){new Promise(e=>setTimeout(e,r))}function zy(){return new Date().getTime()}function zi(r){return typeof r=="object"&&r!==null&&![de,he,gl,ne,wl,Ge,ve].some(e=>typeof e=="object"&&r instanceof e)}function fe(r){return typeof r=="string"?Vi(r):Array.isArray(r)?r.map(e=>fe(e)):zi(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,fe(t)])):r}import{PublicKey as Un,sendAndConfirmTransaction as ji,Transaction as Gn,TransactionMessage as Xn,VersionedTransaction as zn}from"@solana/web3.js";import Sl from"axios";var Wn=(t=>(t[t.V0=0]="V0",t[t.LEGACY=1]="LEGACY",t))(Wn||{}),V={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 Qs,ComputeBudgetProgram as Ys,Transaction as qr,TransactionMessage as Al,Keypair as Hs,VersionedTransaction as js}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Pl}from"@solana/spl-token";var Nt=ae("Raydium_txUtil"),Zs=1644;function Ur(r){let e=[],t=[];return r.microLamports&&(e.push(Ys.setComputeUnitPrice({microLamports:r.microLamports})),t.push(V.SetComputeUnitPrice)),r.units&&(e.push(Ys.setComputeUnitLimit({units:r.units})),t.push(V.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function kn(r){var e,t;try{return((t=await((e=r.getLatestBlockhash)==null?void 0:e.call(r)))==null?void 0:t.blockhash)||(await r.getRecentBlockhash()).blockhash}catch{return(await r.getRecentBlockhash()).blockhash}}function Gr(r,e){r.length<1&&Nt.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Nt.logWithError(`no signers provided:, ${e.toString()}`);let t=new qr;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Zs}catch{return!1}}async function $s(r,e,t,n=!0){let i=new Qs("RaydiumSimuLateTransaction11111111111111111"),o=[],s=new qr;s.feePayer=i;for(let c of e)Gr([...s.instructions,c],[i])||(o.push(s),s=new qr,s.feePayer=i),s.add(c);s.instructions.length>0&&o.push(s);let a=[];try{if(a=await kl(r,o,n),a.find(c=>c.err!==null))throw Error("rpc simulateTransaction error")}catch(c){c instanceof Error&&Nt.logWithError("failed to simulate for instructions","RPC_ERROR",{message:c.message})}let u=[];for(let c of a)if(Nt.debug("simulate result:",c),c.logs){let l=c.logs.filter(m=>m&&m.includes(t));Nt.debug("filteredLog:",u),l.length||Nt.logWithError("simulate log not match keyword","keyword",t),u.push(...l)}return u}function Js(r,e){let t=r.match(/{["\w:,]+}/g);return!t||t.length!==1?Nt.logWithError(`simulate log fail to match json, keyword: ${e}`):t[0]}function Mt(r,e){let n=new RegExp(`"${e}":(\\d+)`,"g").exec(r);return!n||n.length!==2?Nt.logWithError(`simulate log fail to match key", key: ${e}`):n[1]}function oe(r,e){let[t,n]=Qs.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}async function kl(r,e,t){let n=[];if(t){let i=await r.getLatestBlockhash(),o=[];for(let c of e){c.recentBlockhash=i.blockhash,c.lastValidBlockHeight=i.lastValidBlockHeight;let m=c._compile().serialize(),d=c._serialize(m).toString("base64");o.push(d)}let s=o.map(c=>{let l=r._buildArgs([c],void 0,"base64");return{methodName:"simulateTransaction",args:l}}),a=[],u=20;for(let c=0;c<Math.ceil(s.length/u);c++)a.push(s.slice(c*u,(c+1)*u));n=await(await Promise.all(a.map(async c=>(await r._rpcBatchRequest(c)).map(l=>l.result.value)))).flat()}else try{n=await Promise.all(e.map(async i=>await(await r.simulateTransaction(i)).value))}catch(i){i instanceof Error&&Nt.logWithError("failed to get info for multiple accounts","RPC_ERROR",{message:i.message})}return n}function Dn({instructions:r,payer:e,signers:t}){return Gr(r,[e,...t])}function qn({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Hs.generate().publicKey.toString()}){let o=new Al({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new js(o).serialize()).toString("base64").length<Zs}catch{return!1}}var Dr={time:0,data:void 0};async function rb(r){if(!Dr.data||(Date.now()-Dr.time)/1e3>30){let e=await r.getEpochInfo();return Dr={time:Date.now(),data:e},e}else return Dr.data}var hl=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r);function on(r){let e=[];return r.forEach(t=>{t instanceof qr&&(t.recentBlockhash||(t.recentBlockhash=Pl.toBase58()),t.feePayer||(t.feePayer=Hs.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof js&&(n=hl(n));let i=n.toString("base64");e.push(i)}),console.log("simulate tx string:",e),e}import{PublicKey as ea,AddressLookupTableAccount as Xr}from"@solana/web3.js";import{PublicKey as Tl}from"@solana/web3.js";import{getTransferFeeConfig as Il,unpackMint as xl}from"@solana/spl-token";var Yi=ae("Raydium_accountInfo_util");async function It(r,e,t){let{batchRequest:n,commitment:i="confirmed"}=M({batchRequest:!1},t),o=Qi(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let m=r._buildArgs([l.map(p=>p.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=Qi(a,10);s=(await(await Promise.all(u.map(async l=>await r._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&Yi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.error.message}`),l.result.value.map(m=>{if(m){let{data:p,executable:d,lamports:y,owner:f,rentEpoch:b}=m;return p.length!==2&&p[1]!=="base64"&&Yi.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:d,lamports:y,owner:new Tl(f),rentEpoch:b}}return null})))}else try{s=await Promise.all(o.map(a=>r.getMultipleAccountsInfo(a,i)))}catch(a){a instanceof Error&&Yi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function hn(r,e,t){let n=await It(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>D(M({},i),{accountInfo:n[o]}))}var Bl=(n=>(n[n.Uninitialized=0]="Uninitialized",n[n.Mint=1]="Mint",n[n.Account=2]="Account",n))(Bl||{}),db=1;async function pb({connection:r,mints:e}){var i,o;if(e.length===0)return{};let t=await hn(r,e.map(s=>({pubkey:s}))),n={};for(let s of t){let a=xl(s.pubkey,s.accountInfo,(i=s.accountInfo)==null?void 0:i.owner);n[s.pubkey.toString()]=D(M({},a),{feeConfig:(o=Il(a))!=null?o:void 0})}return n}async function Hi({connection:r,address:e}){let t=await It(r,[...new Set(e.map(i=>i.toString()))].map(i=>new ea(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],s=e[i];if(!o)continue;let a=new Xr({key:s,state:Xr.deserialize(o.data)});n[s.toString()]=a,zr[s.toString()]=a}return n}var zr={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Xr({key:new ea("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Xr.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 Yr=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var n;let e=(await Sl.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}=Ur(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:i=[],endInstructionTypes:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...i),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==Un.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(M({},t||{})):this.build(t)}build(e){let t=new Gn;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async n=>{var a;let{recentBlockHash:i,skipPreflight:o=!0}=n||{},s=i!=null?i:await kn(this.connection);if(t.recentBlockhash=s,this.signers.length&&t.sign(...this.signers),on([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await ji(this.connection,t,this.signers.find(u=>u.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:o}),signedTx:t};if(this.signAllTransactions){let u=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(u[0].serialize(),{skipPreflight:o}),signedTx:u[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),o=t.filter(c=>c.transaction.instructions.length>0),s=[i,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return{builder:this,transactions:s,signers:a,instructionTypes:u,execute:async c=>{var f;let{sequentially:l,onTxUpdate:m,recentBlockHash:p,skipPreflight:d=!0}=c||{},y=p!=null?p:await kn(this.connection);if((f=this.owner)!=null&&f.isKeyPair)return{txIds:await await Promise.all(s.map(async(b,g)=>(b.recentBlockhash=y,await ji(this.connection,b,a[g].find(P=>P.publicKey.equals(this.owner.publicKey))?a[g]:[...a[g],this.owner.signer],{skipPreflight:d})))),signedTxs:s};if(this.signAllTransactions){let b=s.map((P,A)=>(P.recentBlockhash=y,a[A].length&&P.sign(...a[A]),P));on(b);let g=await this.signAllTransactions(b);if(l){let P=0,A=[],h=async()=>{if(!g[P])return;let T=await this.connection.sendRawTransaction(g[P].serialize(),{skipPreflight:d});A.push({txId:T,status:"sent",signedTx:g[P]}),m==null||m([...A]),P++,this.connection.onSignature(T,I=>{let B=A.findIndex(x=>x.txId===T);B>-1&&(A[B].status=I.err?"error":"success"),m==null||m([...A]),I.err||h()},"processed"),this.connection.getSignatureStatus(T)};return await h(),{txIds:A.map(T=>T.txId),signedTxs:g}}else{let P=[];for(let A=0;A<g.length;A+=1){let h=await this.connection.sendRawTransaction(g[A].serialize(),{skipPreflight:d});P.push(h)}return{txIds:P,signedTxs:g}}}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 p=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i}=p,o=Te(p,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=M(M({},this.cluster==="devnet"?{}:zr),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let d of a)s[d]===void 0&&u.push(new Un(d));let c=await Hi({connection:this.connection,address:u});for(let[d,y]of Object.entries(c))s[d]=y;let l=new Xn({payerKey:this.feePayer,recentBlockhash:i?Un.default.toBase58():await kn(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new zn(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async d=>{var b;let{recentBlockHash:y,skipPreflight:f=!0}=d||{};if(y&&(m.message.recentBlockhash=y),on([m]),(b=this.owner)!=null&&b.isKeyPair){this.signers.find(h=>h.publicKey.equals(this.owner.publicKey))||m.sign([this.owner.signer]);let g=await this.connection.sendTransaction(m,{skipPreflight:f}),{lastValidBlockHeight:P,blockhash:A}=await this.connection.getLatestBlockhash();return await this.connection.confirmTransaction({blockhash:A,lastValidBlockHeight:P,signature:g},"confirmed"),{txId:g,signedTx:m}}if(this.signAllTransactions){let g=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(g[0],{skipPreflight:f}),signedTx:g[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async buildV0MultiTx(e){let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:i}=await this.buildV0(n),o=t.filter(c=>c.builder.instructions.length>0),s=[i,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return s.forEach(async(c,l)=>{c.sign(a[l])}),{builder:this,transactions:s,signers:a,instructionTypes:u,buildProps:n,execute:async c=>{var y;let{sequentially:l,onTxUpdate:m,recentBlockHash:p,skipPreflight:d=!0}=c||{};if(p&&s.forEach(f=>f.message.recentBlockhash=p),on(s),(y=this.owner)!=null&&y.isKeyPair){let{lastValidBlockHeight:f,blockhash:b}=await this.connection.getLatestBlockhash();return s.forEach((g,P)=>{a[P].find(A=>A.publicKey.equals(this.owner.publicKey))||g.sign([this.owner.signer])}),{txIds:await Promise.all(s.map(async g=>{let P=await this.connection.sendTransaction(g,{skipPreflight:d});return await this.connection.confirmTransaction({blockhash:b,lastValidBlockHeight:f,signature:P},"confirmed"),P})),signedTxs:s}}if(this.signAllTransactions){let f=await this.signAllTransactions(s);if(l){let b=0,g=[],P=async()=>{if(!f[b])return;let A=await this.connection.sendTransaction(f[b],{skipPreflight:d});g.push({txId:A,status:"sent",signedTx:f[b]}),m==null||m([...g]),b++,this.connection.onSignature(A,h=>{let T=g.findIndex(I=>I.txId===A);T>-1&&(g[T].status=h.err?"error":"success"),m==null||m([...g]),h.err||P()},"processed"),this.connection.getSignatureStatus(A)};return P(),{txIds:[],signedTxs:f}}else{let b=[];for(let g=0;g<f.length;g+=1){let P=await this.connection.sendTransaction(f[g],{skipPreflight:d});b.push(P)}return{txIds:b,signedTxs:f}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){let c=e||{},{computeBudgetConfig:t}=c,n=Te(c,["computeBudgetConfig"]),i=t?Ur(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,m)=>D(M({},l),{[m.publicKey.toBase58()]:m}),{}),s=[],a=[],u=[];if(this.allInstructions.forEach(l=>{let m=[...u,l],p=t?[...i.instructions,...m]:m,y=[...new Set(m.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(f=>new Un(f));if(u.length<12&&Dn({instructions:p,payer:this.feePayer,signers:y})||Dn({instructions:m,payer:this.feePayer,signers:y}))u.push(l);else{if(u.length===0)throw Error("item ins too big");Dn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:y})?s.push(new Gn().add(...i.instructions,...u)):s.push(new Gn().add(...u)),a.push(Array.from(new Set(u.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat())).map(f=>o[f]).filter(f=>f!==void 0)),u=[l]}}),u.length>0){let m=[...new Set(u.map(p=>p.keys.filter(d=>d.isSigner).map(d=>d.pubkey.toString())).flat()).values()].map(p=>o[p]).filter(p=>p!==void 0);Dn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(p=>p.publicKey)})?s.push(new Gn().add(...i.instructions,...u)):s.push(new Gn().add(...u)),a.push(m)}return s.forEach(l=>l.feePayer=this.feePayer),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async l=>{var b;let{sequentially:m,onTxUpdate:p,recentBlockHash:d,skipPreflight:y=!0}=l||{},f=d!=null?d:await kn(this.connection);if(s.forEach(async(g,P)=>{g.recentBlockhash=f,a[P].length&&g.sign(...a[P])}),on(s),(b=this.owner)!=null&&b.isKeyPair)return{txIds:await Promise.all(s.map(async(g,P)=>await ji(this.connection,g,a[P].find(A=>A.publicKey.equals(this.owner.publicKey))?a[P]:[...a[P],this.owner.signer],{skipPreflight:y}))),signedTxs:s};if(this.signAllTransactions){let g=await this.signAllTransactions(s);if(m){let P=0,A=[],h=async()=>{if(!g[P])return;let T=await this.connection.sendRawTransaction(g[P].serialize(),{skipPreflight:y});A.push({txId:T,status:"sent",signedTx:g[P]}),p==null||p([...A]),P++,this.connection.onSignature(T,I=>{let B=A.findIndex(x=>x.txId===T);B>-1&&(A[B].status=I.err?"error":"success"),p==null||p([...A]),I.err||h()},"processed"),this.connection.getSignatureStatus(T)};return await h(),{txIds:A.map(T=>T.txId),signedTxs:g}}else{let P=[];for(let A=0;A<g.length;A+=1){let h=await this.connection.sendRawTransaction(g[A].serialize(),{skipPreflight:y});P.push(h)}return{txIds:P,signedTxs:g}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){let b=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:i=[]}=b,o=Te(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=M(M({},this.cluster==="devnet"?{}:zr),n),a=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let g of a)s[g]===void 0&&u.push(new Un(g));let c=await Hi({connection:this.connection,address:u});for(let[g,P]of Object.entries(c))s[g]=P;let l=t?Ur(t):{instructions:[],instructionTypes:[]},m=await kn(this.connection),p=this.signers.reduce((g,P)=>D(M({},g),{[P.publicKey.toBase58()]:P}),{}),d=[],y=[],f=[];if(this.allInstructions.forEach(g=>{let P=[...f,g],A=t?[...l.instructions,...P]:P;if(f.length<12&&qn({instructions:A,payer:this.feePayer,lookupTableAddressAccount:s})||qn({instructions:P,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(g);else{if(f.length===0)throw Error("item ins too big");let h={};for(let T of[...new Set(a)])s[T]!==void 0&&(h[T]=s[T]);if(t&&qn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let T=new Xn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));d.push(new zn(T))}else{let T=new Xn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));d.push(new zn(T))}y.push(Array.from(new Set(f.map(T=>T.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat())).map(T=>p[T]).filter(T=>T!==void 0)),f=[g]}}),f.length>0){let P=[...new Set(f.map(A=>A.keys.filter(h=>h.isSigner).map(h=>h.pubkey.toString())).flat()).values()].map(A=>p[A]).filter(A=>A!==void 0);if(t&&qn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let A=new Xn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));d.push(new zn(A))}else{let A=new Xn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));d.push(new zn(A))}y.push(P)}return{builder:this,transactions:d,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async g=>{var I;let{sequentially:P,onTxUpdate:A,recentBlockHash:h,skipPreflight:T=!0}=g||{};if(d.map(async(B,x)=>{y[x].length&&B.sign(y[x]),h&&(B.message.recentBlockhash=h)}),on(d),(I=this.owner)!=null&&I.isKeyPair){let{lastValidBlockHeight:B,blockhash:x}=await this.connection.getLatestBlockhash();return d.forEach((R,N)=>{y[N].find(E=>E.publicKey.equals(this.owner.publicKey))||R.sign([this.owner.signer])}),{txIds:await Promise.all(d.map(async R=>{let N=await this.connection.sendTransaction(R,{skipPreflight:T});return await this.connection.confirmTransaction({blockhash:x,lastValidBlockHeight:B,signature:N},"confirmed"),N})),signedTxs:d}}if(this.signAllTransactions){let B=await this.signAllTransactions(d);if(P){let x=0,R=[],N=async()=>{if(!B[x])return;let E=await this.connection.sendTransaction(B[x],{skipPreflight:T});R.push({txId:E,status:"sent",signedTx:B[x]}),A==null||A([...R]),x++,this.connection.onSignature(E,Q=>{let W=R.findIndex(j=>j.txId===E);W>-1&&(R[W].status=Q.err?"error":"success"),A==null||A([...R]),Q.err||N()},"processed"),this.connection.getSignatureStatus(E)};return N(),{txIds:[],signedTxs:B}}else{let x=[];for(let R=0;R<B.length;R+=1){let N=await this.connection.sendTransaction(B[R],{skipPreflight:T});x.push(N)}return{txIds:x,signedTxs:B}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};var gt=class{constructor(e){this._owner=e}get publicKey(){return gt.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return gt.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return gt.isKeyPair(this._owner)}get isPublicKey(){return gt.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!gt.isKeyPair(e)}};function Qi(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}function Rb(r,...e){return r.filter(t=>e.every(n=>n.includes(t)))}function Lb(r,...e){return r.filter(t=>e.every(n=>!n.includes(t)))}function Ob(r){return[...new Set(r)]}var ta=r=>typeof r=="number",na=r=>r?new Date(r):new Date,Kl=r=>na(r).getTime();function ra(r,e,t){let n=ta(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()<=n}function ia(r,e,t){let n=ta(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()>n}function Mb(r,e){let n=Kl(r)+(e.days?e.days*24*60*60*1e3:0)+(e.hours?e.hours*60*60*1e3:0)+(e.minutes?e.minutes*60*1e3:0)+(e.seconds?e.seconds*1e3:0)+(e.milliseconds?e.milliseconds:0);return na(n)}import{PublicKey as Re}from"@solana/web3.js";var Zi=new Re("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),$i=new Re("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Tn=new Re("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Cl=new Re("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Rl=new Re("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Qr=new Re("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Ji=new Re("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Ll=new Re("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Ol=new Re("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Nl=new Re("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Ml=new Re("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),_l=new Re("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Vl=new Re("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),El=new Re("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Fl=new Re("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),vl=new Re("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Wl=new Re("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Eb=new Re("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Fb=new Re("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),vb=new Re("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),Yn={IDO_PROGRAM_ID_V1:Ml,IDO_PROGRAM_ID_V2:_l,IDO_PROGRAM_ID_V3:Vl,IDO_PROGRAM_ID_V4:El},Wb={AMM_V4:Ji,AMM_STABLE:Ll,CLMM_PROGRAM_ID:Ol,FARM_PROGRAM_ID_V3:Zi,FARM_PROGRAM_ID_V5:$i,FARM_PROGRAM_ID_V6:Tn,OPEN_BOOK_PROGRAM:Rl,SERUM_PROGRAM_ID_V3:Qr,UTIL1216:Cl,Router:Nl,CREATE_CPMM_POOL_PROGRAM:Fl,CREATE_CPMM_POOL_AUTH:vl,CREATE_CPMM_POOL_FEE_ACC:Wl};import{PublicKey as Dl}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ql}from"@solana/spl-token";function ye(r,e,t){return oe([r.toBuffer(),(t!=null?t:ql).toBuffer(),e.toBuffer()],new Dl("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import Le from"bn.js";var xt=1e4;function Yb(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=t.epoch<e.newerTransferFee.epoch?e.olderTransferFee:e.newerTransferFee,o=new Le(i.maximumFee.toString()),s=t.epoch<e.newerTransferFee.epoch?(Number(e.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(i.transferFeeBasisPoints===xt){let a=new Le(i.maximumFee.toString());return{amount:r.add(a),fee:a,expirationTime:s}}else{let a=zt(r.mul(new Le(xt)),new Le(xt-i.transferFeeBasisPoints)),u=new Le(i.maximumFee.toString()),c=a.sub(r).gt(u)?r.add(u):a,l=zt(c.mul(new Le(i.transferFeeBasisPoints)),new Le(xt)),m=l.gt(o)?o:l;return{amount:c,fee:m,expirationTime:s}}else{let a=zt(r.mul(new Le(i.transferFeeBasisPoints)),new Le(xt)),u=a.gt(o)?o:a;return{amount:r,fee:u,expirationTime:s}}}function Ae(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=D(M({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),o=t.epoch<i.newerTransferFee.epoch?i.olderTransferFee:i.newerTransferFee,s=new Le(o.maximumFee.toString()),a=t.epoch<i.newerTransferFee.epoch?(Number(i.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===xt){let u=new Le(o.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=zt(r.mul(new Le(xt)),new Le(xt-o.transferFeeBasisPoints)),c=new Le(o.maximumFee.toString()),l=u.sub(r).gt(c)?r.add(c):u,m=zt(l.mul(new Le(o.transferFeeBasisPoints)),new Le(xt)),p=m.gt(s)?s:m;return{amount:l,fee:p,expirationTime:a}}else{let u=zt(r.mul(new Le(o.transferFeeBasisPoints)),new Le(xt)),c=u.gt(s)?s:u;return{amount:r,fee:c,expirationTime:a}}}function sn(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function zt(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new Le(0))?t.add(new Le(1)):t}var eo=(t=>(t.ALL="all",t.Strict="strict",t))(eo||{}),Ul=(n=>(n.All="all",n.Standard="standard",n.Concentrated="concentrated",n))(Ul||{});var Xe={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",VERSION:"/main/version",CHECK_AVAILABILITY:"/v3/main/AvailabilityCheckAPI",RPCS:"/main/rpcs",INFO:"/main/info",STAKE_POOLS:"/main/stake-pools",CHAIN_TIME:"/main/chain-time",TOKEN_LIST:"/mint/list",MINT_INFO_ID:"/mint/ids",JUP_TOKEN_LIST:"https://token.jup.ag/{type}",POOL_LIST:"/pools/info/list",POOL_SEARCH_BY_ID:"/pools/info/ids",POOL_SEARCH_MINT:"/pools/info/mint",POOL_SEARCH_LP:"/pools/info/lps",POOL_KEY_BY_ID:"/pools/key/ids",POOL_LIQUIDITY_LINE:"/pools/line/liquidity",POOL_POSITION_LINE:"/pools/line/position",FARM_INFO:"/farms/info/ids",FARM_LP_INFO:"/farms/info/lp",FARM_KEYS:"/farms/key/ids",OWNER_CREATED_FARM:"/create-pool/{owner}",OWNER_IDO:"/main/ido/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",IDO_KEYS:"/ido/key/ids",SWAP_HOST:"https://transaction-v1.raydium.io",SWAP_COMPUTE:"/compute/",SWAP_TX:"/transaction/",MINT_PRICE:"/mint/price",MIGRATE_CONFIG:"/main/migrate-lp",PRIORITY_FEE:"/main/auto-fee"},pg=M({},Xe);var oa="ray_tab_hash",to="ray_req_hash",Gl=()=>{if(typeof window===void 0)return"";let r=sessionStorage.getItem(oa);return r||(r=`ray-${Date.now()}`,sessionStorage.setItem(oa,r)),r},Hr=async n=>{var i=n,{logCount:r=1e3,removeLastLog:e}=i,t=Te(i,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(s=>s());let o=JSON.parse(localStorage.getItem(to)||"[]").slice(0,r-1);e&&o.pop(),new Blob([JSON.stringify(t.data)]).size>1024&&(t.data=JSON.stringify(t.data).substring(0,200)+"..."),o.unshift(D(M({},t),{time:Date.now(),session:Gl()}));try{localStorage.setItem(to,JSON.stringify(o))}catch{if(e){let s=!1,a=JSON.stringify(t.data).substring(0,100);for(o[0].data=a+(a.length>100?"...":"");!s;){o.pop();let u=JSON.stringify(t.data).substring(0,100);o[0].data=u+(u.length>100?"...":"");try{localStorage.setItem(to,JSON.stringify(o)),s=!0}catch{s=!1}}return new Promise(u=>u())}return Hr(D(M({},t),{logCount:r,removeLastLog:!0}))}};var In=ae("Raydium_Api"),no=new Map;async function Og(r,e,t=1e3){let n;for(;n==null;)try{In.debug(`Request ${r} through endlessRetry`),n=await e()}catch(i){In.error(`Request ${r} failed, retry after ${t} ms`,i),await zs(t)}return n}var jr=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:i,urlConfigs:o}){this.cluster=e,this.urlConfigs=o||{},this.logCount=i||1e3,this.api=Xl.create({baseURL:this.urlConfigs.BASE_HOST||Xe.BASE_HOST,timeout:t}),this.api.interceptors.request.use(s=>{let{method:a,baseURL:u,url:c}=s;return In.debug(`${a==null?void 0:a.toUpperCase()} ${u}${c}`),s},s=>(In.error("Request failed"),Promise.reject(s))),this.api.interceptors.response.use(s=>{let{config:a,data:u,status:c}=s,{method:l,baseURL:m,url:p}=a;return n&&Hr({status:c,url:`${m}${p}`,params:a.params,data:u,logCount:this.logCount}),In.debug(`${l==null?void 0:l.toUpperCase()} ${m}${p} ${c}`),u},s=>{let{config:a,response:u={}}=s,{status:c}=u,{method:l,baseURL:m,url:p}=a;return n&&Hr({status:c,url:`${m}${p}`,params:a.params,data:s.message,logCount:this.logCount}),In.error(`${l.toUpperCase()} ${m}${p} ${c||s.message}`),Promise.reject(s)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||Xe.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||Xe.POOL_LIQUIDITY_LINE}?pool_id=${e}`)).data}async getBlockSlotCountForSecond(e){if(!e)return 2;let n=(await this.api.post(e,{id:"getRecentPerformanceSamples",jsonrpc:"2.0",method:"getRecentPerformanceSamples",params:[4]})).result.map(i=>i.numSlots);return n.reduce((i,o)=>i+o,0)/n.length/60}async getChainTimeOffset(){return(await this.api.get(this.urlConfigs.CHAIN_TIME||Xe.CHAIN_TIME)).data}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||Xe.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||Xe.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||Xe.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||Xe.MINT_INFO_ID)+`?mints=${e.map(n=>n.toString()).join(",")}`)).data}async getPoolList(e={}){let{type:t="all",sort:n="liquidity",order:i="desc",page:o=0,pageSize:s=100}=e;return(await this.api.get((this.urlConfigs.POOL_LIST||Xe.POOL_LIST)+`?poolType=${t}&poolSortField=${n}&sortType=${i}&page=${o}&pageSize=${s}`)).data}async fetchPoolById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.POOL_SEARCH_BY_ID||Xe.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],i=t.filter(s=>no.has(s)?(n.push(no.get(s)),!1):!0),o=[];return i.length&&(o=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||Xe.POOL_KEY_BY_ID)+`?ids=${i.join(",")}`)).data.filter(Boolean),o.forEach(a=>{no.set(a.id,a)})),n.concat(o)}async fetchFarmInfoById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_INFO||Xe.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||Xe.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||Xe.CHECK_AVAILABILITY)).data}};import{merge as Fp}from"lodash";var Zr="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",sa="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as go,TOKEN_PROGRAM_ID as jt,AccountLayout as Bn,TOKEN_2022_PROGRAM_ID as td}from"@solana/spl-token";import{PublicKey as ii,SystemProgram as nd}from"@solana/web3.js";var ro=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),xe=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ae(t)}createTxBuilder(e){return this.scope.checkOwner(),new Yr({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(ro(e))}logInfo(...e){this.logger.info(ro(e))}logAndCreateError(...e){let t=ro(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as Hm,createCloseAccountInstruction as jm,createTransferInstruction as Zm,TOKEN_PROGRAM_ID as xn}from"@solana/spl-token";import{PublicKey as $m,SystemProgram as Jm}from"@solana/web3.js";import ed from"bn.js";import{PublicKey as ha,Keypair as Xm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as zm}from"@solana/spl-token";import Ym from"bn.js";import{PublicKey as Em}from"@solana/web3.js";import pa,{isBN as fa}from"bn.js";import{bits as zl,BitStructure as Yl,blob as Ql,Blob as Hl,cstr as jl,f32 as Zl,f32be as $l,f64 as Jl,f64be as em,greedy as tm,Layout as nm,ns64 as rm,ns64be as im,nu64 as om,nu64be as sm,offset as am,s16 as um,s16be as cm,s24 as lm,s24be as mm,s32 as dm,s32be as pm,s40 as fm,s40be as ym,s48 as bm,s48be as gm,s8 as wm,seq as Am,struct as Xg,Structure as Pm,u16 as km,u16be as hm,u24 as Tm,u24be as Im,u32 as xm,u32be as Bm,u40 as Sm,u40be as Km,u48 as Cm,u48be as Rm,u8 as Lm,UInt as Om,union as Nm,Union as Mm,unionLayoutDiscriminator as _m,utf8 as Vm}from"@solana/buffer-layout";var Qn=nm,aa=Pm,ua=Mm,zg=Yl,io=Om,ca=Hl,Yg=tm,$r=Lm,Bt=km,Qg=Tm,Hn=xm,Hg=Sm,jg=Cm,la=om,Zg=hm,$g=Im,Jg=Bm,ew=Km,tw=Rm,nw=sm,rw=wm,iw=um,ow=lm,We=dm,sw=fm,aw=bm,uw=rm,cw=cm,lw=mm,mw=pm,dw=ym,pw=gm,fw=im,yw=Zl,bw=$l,gw=Jl,ww=em;var ma=Am,da=Nm,Aw=_m,pe=Ql,Pw=jl,kw=Vm,oo=zl,so=am;var an=class extends Qn{constructor(t,n,i){super(t,i);this.blob=pe(t),this.signed=n}decode(t,n=0){let i=new pa(this.blob.decode(t,n),10,"le");return this.signed?i.fromTwos(this.span*8).clone():i}encode(t,n,i=0){return typeof t=="number"&&(t=new pa(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},Jr=class extends Qn{constructor(t){super(8,t);this._lower=oo(Hn(),!1),this._upper=oo(Hn(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let i=this._lower.decode(t,n),o=this._upper.decode(t,n+this._lower.span);return M(M({},i),o)}encode(t,n,i=0){return this._lower.encode(t,n,i)+this._upper.encode(t,n,i+this._lower.span)}};function _(r){return new io(1,r)}function ze(r){return new io(4,r)}function w(r){return new an(8,!1,r)}function z(r){return new an(16,!1,r)}function ya(r){return new an(1,!0,r)}function ei(r){return new an(8,!0,r)}function ba(r){return new an(16,!0,r)}var _t=class extends Qn{constructor(t,n,i,o){super(t.span,o);this.layout=t,this.decoder=n,this.encoder=i}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,i){return this.layout.encode(this.encoder(t),n,i)}getSpan(t,n){return this.layout.getSpan(t,n)}};function S(r){return new _t(pe(32),e=>new Em(e),e=>e.toBuffer(),r)}var ao=class extends Qn{constructor(t,n){super(-1,n);this.layout=t,this.discriminator=$r()}encode(t,n,i=0){return t==null?this.discriminator.encode(0,n,i):(this.discriminator.encode(1,n,i),this.layout.encode(t,n,i+1)+1)}decode(t,n=0){let i=this.discriminator.decode(t,n);if(i===0)return null;if(i===1)return this.layout.decode(t,n+1);throw new Error("Invalid option "+this.property)}getSpan(t,n=0){let i=this.discriminator.decode(t,n);if(i===0)return 1;if(i===1)return this.layout.getSpan(t,n+1)+1;throw new Error("Invalid option "+this.property)}};function Bw(r,e){return new ao(r,e)}function De(r){return new _t($r(),Fm,vm,r)}function Fm(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function vm(r){return r?1:0}function Sw(r,e){let t=Hn("length"),n=L([t,q(r,so(t,-t.span),"values")]);return new _t(n,({values:i})=>i,i=>({values:i}),e)}function Kw(r,e,t){let n=L([w("tag"),e.replicate("data")]);function i({tag:o,data:s}){if(!o.eq(r))throw new Error("Invalid tag, expected: "+r.toString("hex")+", got: "+o.toString("hex"));return s}return new _t(n,i,o=>({tag:r,data:o}),t)}function Wm(r){let e=Hn("length"),t=L([e,pe(so(e,-e.span),"data")]);return new _t(t,({data:n})=>n,n=>({data:n}),r)}function Cw(r){return new _t(Wm(),e=>e.toString("utf-8"),e=>Buffer.from(e,"utf-8"),r)}function Rw(r,e){let t=da($r(),e);return r.forEach((n,i)=>t.addVariant(i,n,n.property)),t}function Lw(r,e,t){let n=L([q(r,e,"values")]);return new _t(n,({values:i})=>i,i=>({values:i}),t)}var uo=class extends aa{decode(e,t){return super.decode(e,t)}};function L(r,e,t){return new uo(r,e,t)}var co=class extends ua{encodeInstruction(e){let t=Math.max(...Object.values(this.registry).map(i=>i.span)),n=Buffer.alloc(t);return n.slice(0,this.encode(e,n))}decodeInstruction(e){return this.decode(e)}};function Ow(r,e,t){return new co(r,e,t)}var lo=class extends ca{decode(e,t){let n=super.decode(e,t);if(!n.every(i=>i===0))throw new Error("nonzero padding bytes");return n}};function Nw(r){return new lo(r)}function q(r,e,t){let n,i=typeof e=="number"?e:fa(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=fa(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 ma(r,i,t)}var Yt=L([S("mint"),S("owner"),w("amount"),ze("delegateOption"),S("delegate"),_("state"),ze("isNativeOption"),w("isNative"),w("delegatedAmount"),ze("closeAuthorityOption"),S("closeAuthority")]);function Dm(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function mo(r,...e){if(!Dm(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${r.length}`)}function po(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function ga(r,e){mo(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var ni=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),wt=(r,e)=>r<<32-e|r>>>e;var Ww=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function qm(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function fo(r){return typeof r=="string"&&(r=qm(r)),mo(r),r}var ti=class{clone(){return this._cloneInto()}},Dw={}.toString;function wa(r){let e=n=>r().update(fo(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function Um(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let i=BigInt(32),o=BigInt(4294967295),s=Number(t>>i&o),a=Number(t&o),u=n?4:0,c=n?0:4;r.setUint32(e+u,s,n),r.setUint32(e+c,a,n)}var Aa=(r,e,t)=>r&e^~r&t,Pa=(r,e,t)=>r&e^r&t^e&t,ri=class extends ti{constructor(e,t,n,i){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=ni(this.buffer)}update(e){po(this);let{view:t,buffer:n,blockLen:i}=this;e=fo(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(i-this.pos,o-s);if(a===i){let u=ni(e);for(;i<=o-s;s+=i)this.process(u,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===i&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){po(this),ga(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:i,isLE:o}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>i-s&&(this.process(n,0),s=0);for(let m=s;m<i;m++)t[m]=0;Um(n,i-8,BigInt(this.length*8),o),this.process(n,0);let a=ni(e),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let c=u/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<c;m++)a.setUint32(4*m,l[m],o)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:i,finished:o,destroyed:s,pos:a}=this;return e.length=i,e.pos=a,e.finished=o,e.destroyed=s,i%t&&e.buffer.set(n),e}};var Gm=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]),Qt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Ht=new Uint32Array(64),yo=class extends ri{constructor(){super(64,32,8,!1),this.A=Qt[0]|0,this.B=Qt[1]|0,this.C=Qt[2]|0,this.D=Qt[3]|0,this.E=Qt[4]|0,this.F=Qt[5]|0,this.G=Qt[6]|0,this.H=Qt[7]|0}get(){let{A:e,B:t,C:n,D:i,E:o,F:s,G:a,H:u}=this;return[e,t,n,i,o,s,a,u]}set(e,t,n,i,o,s,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=i|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)Ht[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let p=Ht[m-15],d=Ht[m-2],y=wt(p,7)^wt(p,18)^p>>>3,f=wt(d,17)^wt(d,19)^d>>>10;Ht[m]=f+Ht[m-7]+y+Ht[m-16]|0}let{A:n,B:i,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let p=wt(a,6)^wt(a,11)^wt(a,25),d=l+p+Aa(a,u,c)+Gm[m]+Ht[m]|0,f=(wt(n,2)^wt(n,13)^wt(n,22))+Pa(n,i,o)|0;l=c,c=u,u=a,a=s+d|0,s=o,o=i,i=n,n=d+f|0}n=n+this.A|0,i=i+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,i,o,s,a,u,c,l)}roundClean(){Ht.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var ka=wa(()=>new yo);var iA=ae("Raydium_Util");function Ta({owner:r,solAccountResp:e,tokenAccountResp:t}){let n=[],i=[];for(let{pubkey:o,account:s}of t.value){let a=Yt.decode(s.data),{mint:u,amount:c}=a;n.push({publicKey:o,mint:u,amount:c,isAssociated:ye(r,u,s.owner).publicKey.equals(o),isNative:!1,programId:s.owner}),i.push({pubkey:o,accountInfo:a,programId:s.owner})}return e&&n.push({mint:ha.default,amount:new Ym(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:i}}function Ye({fromPublicKey:r,programId:e=zm}){let t=Xm.generate().publicKey.toBase58().slice(0,32);return{publicKey:Qm(r,t,e),seed:t}}function Qm(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=ka(n);return new ha(i)}function bo(r){let{mint:e,tokenAccount:t,owner:n,programId:i=xn}=r;return Hm(t,e,n,i)}function Vt(r){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:i,programId:o=xn}=r;return jm(e,t,i,n,o)}async function St(r){let{connection:e,amount:t,commitment:n,payer:i,owner:o,skipCloseAccount:s}=r,a=await e.getMinimumBalanceForRentExemption(Yt.span,n),u=U(t).add(new ed(a)),c=Ye({fromPublicKey:i,programId:xn});return{addresses:{newAccount:c.publicKey},signers:[],instructions:[Jm.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:c.seed,newAccountPubkey:c.publicKey,lamports:u.toNumber(),space:Yt.span,programId:xn}),bo({mint:new $m(Me.address),tokenAccount:c.publicKey,owner:o,programId:xn})],instructionTypes:[V.CreateAccount,V.InitAccount],endInstructionTypes:s?[]:[V.CloseAccount],endInstructions:s?[]:[Vt({tokenAccount:c.publicKey,payer:i,owner:o})]}}function jn({source:r,destination:e,owner:t,amount:n,multiSigners:i=[],tokenProgram:o=xn}){return Zm(r,e,t,BigInt(String(n)),i,o)}var Zn=class extends xe{constructor(t){super(t);this._tokenAccounts=[];this._tokenAccountRawInfos=[];this._accountListener=[];this._clientOwnedToken=!1;let{tokenAccounts:n,tokenAccountRawInfos:i}=t;this._tokenAccounts=n||[],this._tokenAccountRawInfos=i||[],this._clientOwnedToken=!!(n||i)}get tokenAccounts(){return this._tokenAccounts}get tokenAccountRawInfos(){return this._tokenAccountRawInfos}updateTokenAccount({tokenAccounts:t,tokenAccountRawInfos:n}){return t&&(this._tokenAccounts=t),n&&(this._tokenAccountRawInfos=n),this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=void 0,this._clientOwnedToken=!0,this}addAccountChangeListener(t){return this._accountListener.push(t),this}removeAccountChangeListener(t){return this._accountListener=this._accountListener.filter(n=>n!==t),this}getAssociatedTokenAccount(t,n){return ye(this.scope.ownerPubKey,t,n).publicKey}async fetchWalletTokenAccounts(t){if(this._clientOwnedToken||!(t!=null&&t.forceUpdate)&&this._tokenAccounts.length)return{tokenAccounts:this._tokenAccounts,tokenAccountRawInfos:this._tokenAccountRawInfos};this.scope.checkOwner();let i=M(M({},{}),t),[o,s,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:jt},i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:td},i.commitment)]),{tokenAccounts:u,tokenAccountRawInfos:c}=Ta({owner:this.scope.ownerPubKey,solAccountResp:o,tokenAccountResp:{context:s.context,value:[...s.value,...a.value]}});return this._tokenAccounts=u,this._tokenAccountRawInfos=c,this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=this.scope.connection.onAccountChange(this.scope.ownerPubKey,()=>this.fetchWalletTokenAccounts({forceUpdate:!0}),"confirmed"),{tokenAccounts:u,tokenAccountRawInfos:c}}async getCreatedTokenAccount({mint:t,programId:n=jt,associatedOnly:i=!0}){await this.fetchWalletTokenAccounts();let o=this._tokenAccounts.filter(({mint:a})=>a==null?void 0:a.equals(t)).sort((a,u)=>a.amount.lt(u.amount)?1:-1),s=this.getAssociatedTokenAccount(t,n);for(let a of o){let{publicKey:u}=a;if(u&&(!i||i&&s.equals(u)))return u}}async getOrCreateTokenAccount(t){var y,f,b;await this.fetchWalletTokenAccounts();let{mint:n,createInfo:i,associatedOnly:o,owner:s,notUseTokenAccount:a=!1,skipCloseAccount:u=!1,checkCreateATAOwner:c=!1}=t,l=new ii(t.tokenProgram||jt),m=this.getAssociatedTokenAccount(n,new ii(l)),p=(a?[]:this.tokenAccountRawInfos).filter(g=>g.accountInfo.mint.equals(n)&&(!o||g.pubkey.equals(m))).sort((g,P)=>g.accountInfo.amount.lt(P.accountInfo.amount)?1:-1);if(i===void 0||p.length>0)return p.length>0?{account:p[0].pubkey}:{};let d={instructions:[],endInstructions:[],signers:[],instructionTypes:[],endInstructionTypes:[]};if(o){let g=go(s,m,s,n,l);if(c){let P=await this.scope.connection.getAccountInfo(m);if(P===null)(y=d.instructions)==null||y.push(g),d.instructionTypes.push(V.CreateATA);else if(!(P.owner.equals(l)&&Bn.decode(P.data).mint.equals(n)&&Bn.decode(P.data).owner.equals(s)))throw Error(`create ata check error -> mint: ${n.toString()}, ata: ${m.toString()}`)}else d.instructions.push(g),d.instructionTypes.push(V.CreateATA);if(n.equals(te)&&i.amount){let P=await St({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:i.payer||this.scope.ownerPubKey,amount:(f=i.amount)!=null?f:0,skipCloseAccount:u});d.instructions.push(...P.instructions||[]),d.endInstructions.push(...P.endInstructions||[]),d.instructionTypes.push(...P.instructionTypes||[]),d.endInstructionTypes.push(...P.endInstructionTypes||[]),i.amount&&(d.instructions.push(jn({source:P.addresses.newAccount,destination:m,owner:this.scope.ownerPubKey,amount:i.amount,tokenProgram:jt})),d.instructionTypes.push(V.TransferAmount))}return u||(d.endInstructions.push(Vt({owner:s,payer:i.payer||s,tokenAccount:m,programId:l})),d.endInstructionTypes.push(V.CloseAccount)),{account:m,instructionParams:d}}else if(n.equals(te)){let g=await St({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:i.payer||this.scope.ownerPubKey,amount:(b=i.amount)!=null?b:0,skipCloseAccount:u});return d.instructions.push(...g.instructions||[]),d.endInstructions.push(...g.endInstructions||[]),d.signers.push(...g.signers||[]),d.instructionTypes.push(...g.instructionTypes||[]),d.endInstructionTypes.push(...g.endInstructionTypes||[]),{account:g.addresses.newAccount,instructionParams:d}}else{let g=Ye({fromPublicKey:s,programId:l}),P=await this.scope.connection.getMinimumBalanceForRentExemption(Bn.span),A=nd.createAccountWithSeed({fromPubkey:s,basePubkey:s,seed:g.seed,newAccountPubkey:g.publicKey,lamports:P,space:Bn.span,programId:l});return d.instructions.push(A,bo({mint:n,tokenAccount:g.publicKey,owner:this.scope.ownerPubKey,programId:l})),d.instructionTypes.push(V.CreateAccount),d.instructionTypes.push(V.InitAccount),u||(d.endInstructions.push(Vt({owner:s,payer:i.payer||s,tokenAccount:g.publicKey,programId:l})),d.endInstructionTypes.push(V.CloseAccount)),{account:g.publicKey,instructionParams:d}}}async checkOrCreateAta({mint:t,programId:n=jt,autoUnwrapWSOLToSOL:i}){var u;await this.fetchWalletTokenAccounts();let o=(u=this.scope.account.tokenAccounts.find(({mint:c})=>(c==null?void 0:c.toBase58())===t.toBase58()))==null?void 0:u.publicKey,s=this.scope.ownerPubKey,a={};if(!o){let c=this.getAssociatedTokenAccount(t,n),l=await go(s,c,s,t,n);a.instructions=[l],a.instructionTypes=[V.CreateATA],o=c}return i&&te.toBase58()===t.toBase58()&&(a.endInstructions=[Vt({owner:s,payer:s,tokenAccount:o,programId:n})],a.endInstructionTypes=[V.CloseAccount]),{pubKey:o,newInstructions:a}}async handleTokenAccount(t){let{side:n,amount:i,mint:o,programId:s=jt,tokenAccount:a,payer:u=this.scope.ownerPubKey,bypassAssociatedCheck:c,skipCloseAccount:l,checkCreateATAOwner:m}=t,p=this.getAssociatedTokenAccount(o,s);if(new ii(te).equals(o)){let d=await St({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:u,amount:i,skipCloseAccount:l});return M({tokenAccount:d.addresses.newAccount},d)}else if(!a||n==="out"&&!p.equals(a)&&!c){let d=[],y=go(this.scope.ownerPubKey,p,this.scope.ownerPubKey,o,s);if(m){let f=await this.scope.connection.getAccountInfo(p);if(f===null)d.push(y);else if(!(f.owner.equals(jt)&&Bn.decode(f.data).mint.equals(o)&&Bn.decode(f.data).owner.equals(this.scope.ownerPubKey)))throw Error(`create ata check error -> mint: ${o.toString()}, ata: ${p.toString()}`)}else d.push(y);return{tokenAccount:p,instructions:d,instructionTypes:[V.CreateATA]}}return{tokenAccount:a}}async processTokenAccount(t){let{mint:n,programId:i=jt,amount:o,useSOLBalance:s,handleTokenAccount:a}=t,u,c=this.createTxBuilder();if(n.equals(new ii(te))&&s){let l=await this.handleTokenAccount({side:"in",amount:o||0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:p}=l,d=Te(l,["tokenAccount"]);u=p,c.addInstruction(d)}else if(u=await this.getCreatedTokenAccount({mint:n,associatedOnly:!1,programId:i}),!u&&a){let m=await this.scope.account.handleTokenAccount({side:"in",amount:0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:p}=m,d=Te(m,["tokenAccount"]);u=p,c.addInstruction(d)}return M({tokenAccount:u},c.AllTxData)}};import{createAssociatedTokenAccountInstruction as Td}from"@solana/spl-token";import{PublicKey as ke,SystemProgram as Id}from"@solana/web3.js";import{PublicKey as Ra}from"@solana/web3.js";var wo=L([_("instruction")]),Ao=L([_("instruction")]),rd=L([w("rewardState"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardLastUpdateTime"),w("totalReward"),w("totalRewardEmissioned"),w("rewardClaimed"),w("rewardPerSecond"),z("accRewardPerShare"),S("rewardVault"),S("rewardMint"),S("rewardSender"),w("rewardType"),q(w(),15,"padding")]),id=L([w("state"),w("nonce"),S("lpVault"),S("rewardVault"),S(),S(),w(),w(),w("totalReward"),z("perShareReward"),w("lastSlot"),w("perSlotReward")]),od=L([w("state"),w("nonce"),S("lpVault"),S("rewardVaultA"),w("totalRewardA"),z("perShareRewardA"),w("perSlotRewardA"),_("option"),S("rewardVaultB"),pe(7),w("totalRewardB"),z("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),S()]),sd=L([w(),w("state"),w("nonce"),w("validRewardTokenNum"),z("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),S("lpMint"),S("lpVault"),q(rd,5,"rewardInfos"),S("creator"),S(),q(w(),32,"padding")]),Ia=new Proxy(id,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return D(M({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(r,e,t)}}),xa=new Proxy(od,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return D(M({},i),{version:5,rewardInfos:[{rewardVault:i.rewardVaultA,totalReward:i.totalRewardA,perSlotReward:i.perSlotRewardA,perShareReward:i.perShareRewardA},{rewardVault:i.rewardVaultB,totalReward:i.totalRewardB,perSlotReward:i.perSlotRewardB,perShareReward:i.perShareRewardB}]})}:Reflect.get(r,e,t)}}),$n=new Proxy(sd,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return D(M({},i),{version:6,rewardInfos:i.rewardInfos.map(o=>{var s;return D(M({},o),{rewardType:((s=Object.entries(Zt).find(a=>String(a[1])===o.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),ad=L([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),Po=L([_("instruction"),w("nonce"),q(ad,5,"rewardTimeInfo")]),ko=L([_("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),ho=L([_("instruction"),w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),VA=L([w("state"),S("id"),S("owner"),w("deposited"),q(w(),1,"rewardDebts")]),Jn=L([w("state"),S("id"),S("owner"),w("deposited"),q(z(),1,"rewardDebts"),w(""),w("voteLockedBalance"),q(w(),15)]),EA=L([w("state"),S("id"),S("owner"),w("deposited"),q(w(),2,"rewardDebts")]),Ba=L([w("state"),S("id"),S("owner"),w("deposited"),q(z(),2,"rewardDebts"),q(w(),17)]),Sa=L([w(),w("state"),S("id"),S("owner"),w("deposited"),q(z(),5,"rewardDebts"),q(w(),16)]),Je=L([_("instruction"),w("amount")]),ud=L([S("mint"),S("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),ya("digitShift"),q(_(),7,"reserved1"),q(w(),7,"reserved2")]),Ka=L([pe(8),S("governanceProgramId"),S("realm"),S("realmGoverningTokenMint"),S("realmAuthority"),q(_(),32,"reserved1"),q(ud,4,"votingMints"),ei("timeOffset"),_("bump"),q(_(),7,"reserved2"),q(w(),11,"reserved3")]),cd=L([ei("startTime"),ei("endTime"),_("kind"),q(_(),15,"reserved")]),ld=L([q(cd,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),De("isUsed"),De("allowClawback"),_("votingMintConfigIdx"),q(_(),29,"reserved")]),Ca=L([pe(8),S("voterAuthority"),S("registrar"),q(ld,32,"deposits"),_("voterBump"),_("voterWweightRecordBump"),q(_(),94,"reserved")]);var XA=ae("Raydium_farm_config"),La=new Ra("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Oa=new Ra("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1"),Na={3:Ia,5:xa,6:$n},Ma={3:Jn,5:Ba,6:Sa},To=r=>[3,5,6].indexOf(r)!==-1,Io=r=>{var s;let{version:e,rewardInfos:t,rewardTokenAccountsPublicKeys:n}=r,i=`rewardInfo:${JSON.stringify(t)}, rewardAccount:${JSON.stringify(n)}`,o={3:()=>{if(t.length!==1||n.length!==1)return`rewardInfos or rewardTokenAccounts lengths not equal 1: ${i}`},5:()=>{if(t.length!==n.length)return`rewardInfos and rewardTokenAccounts lengths not equal: ${i}`},6:()=>{if(!n.length||t.length!==n.length)return`no rewardTokenAccounts or rewardInfos and rewardTokenAccounts lengths not equal: ${i}`}};return(s=o[e])==null?void 0:s.call(o)},Zt={"Standard SPL":0,"Option tokens":1},At={[Zi.toString()]:3,[$i.toString()]:5,[Tn.toString()]:6};import{PublicKey as ie,SystemProgram as un,SYSVAR_RENT_PUBKEY as pd,SYSVAR_CLOCK_PUBKEY as nr,TransactionInstruction as Ve}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as fd,TOKEN_PROGRAM_ID as st,ASSOCIATED_TOKEN_PROGRAM_ID as yd}from"@solana/spl-token";import si from"bn.js";function xo(r,e,t){return oe([e.toBuffer(),Buffer.from("registrar","utf8"),t.toBuffer()],r)}function Bo(r,e){return oe([e.toBuffer(),Buffer.from("voting_mint_seed","utf8")],r)}function So(r,e){return oe([e.toBuffer()],r)}function Ko(r,e,t){return oe([e.toBuffer(),Buffer.from("voter","utf8"),t.toBuffer()],r)}function Co(r,e,t){return oe([e.toBuffer(),Buffer.from("voter-weight-record","utf8"),t.toBuffer()],r)}function Ro(r,e,t,n){return oe([Buffer.from("governance","utf8"),e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}import rt from"bn.js";var er=ae("Raydium.farm.util");function tr({programId:r,poolId:e,mint:t,type:n}){let{publicKey:i}=oe([e.toBuffer(),t.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],r);return i}function it({programId:r,poolId:e,owner:t,version:n}){let{publicKey:i}=oe([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],r);return i}var _a=({programId:r,poolId:e})=>oe([e.toBuffer()],r);function Va(r){return{isSet:new rt(1),rewardPerSecond:U(r.perSecond),rewardOpenTime:U(r.openTime),rewardEndTime:U(r.endTime),rewardType:U(Zt[r.rewardType])}}function Lo(r){return U(r.endTime).sub(U(r.openTime)).mul(U(r.perSecond))}function oi(r){let e=Ma[r];return e||er.logWithError("invalid version",r),e}function md(r){let e=Na[r];return e||er.logWithError("invalid version",r),e}function dd(r,e,t,n){if(r.version===3||r.version===5){if(r.lastSlot.gte(new rt(t)))return r;let i=new rt(t).sub(r.lastSlot);r.lastSlot=new rt(t);for(let o of r.rewardInfos){if(e.amount.eq(new rt(0)))continue;let s=o.perSlotReward.mul(i);o.perShareReward=o.perShareReward.add(s.mul(new rt(10).pow(new rt(r.version===3?9:15))).div(e.amount)),o.totalReward=o.totalReward.add(s)}}else if(r.version===6)for(let i of r.rewardInfos){if(i.rewardState.eq(new rt(0)))continue;let o=rt.min(new rt(n),i.rewardEndTime);if(i.rewardOpenTime.gte(o))continue;let a=o.sub(i.rewardLastUpdateTime).mul(i.rewardPerSecond),u=i.totalReward.sub(i.totalRewardEmissioned);u.lt(a)?(a=u,i.rewardLastUpdateTime=i.rewardLastUpdateTime.add(u.div(i.rewardPerSecond))):i.rewardLastUpdateTime=o,!e.amount.eq(new rt(0))&&(i.accRewardPerShare=i.accRewardPerShare.add(a.mul(r.rewardMultiplier).div(e.amount)),i.totalRewardEmissioned=i.totalRewardEmissioned.add(a))}return r}async function uP({connection:r,farmPools:e,owner:t,config:n,chainTime:i}){let o=!1,s=!1,a=new rt(10),u=[];for(let p of e){let d=fe(p);d.version===6?s=!0:o=!0,u.push({pubkey:d.id,version:d.version,key:"state",poolId:d.id},{pubkey:d.lpVault,version:d.version,key:"lpVault",poolId:d.id}),t&&u.push({pubkey:it({programId:d.programId,poolId:d.id,owner:t,version:p.version}),version:d.version,key:"ledger",poolId:d.id})}let c={},l=await hn(r,u,n);for(let{pubkey:p,version:d,key:y,poolId:f,accountInfo:b}of l){let g=f.toBase58();if(c[g]=M({},c[g]),y==="state"){let P=md(d);(!b||!b.data||b.data.length!==P.span)&&er.logWithError(`invalid farm state account info, pools.id, ${p}`),c[g].state=P.decode(b.data)}else if(y==="lpVault")(!b||!b.data||b.data.length!==Yt.span)&&er.logWithError(`invalid farm lp vault account info, pools.lpVault, ${p}`),c[g].lpVault=Yt.decode(b.data);else if(y==="ledger"){let P=oi(d);b&&b.data&&(b.data.length!==P.span&&er.logWithError(`invalid farm ledger account info, ledger, ${p}`),c[g].ledger=P.decode(b.data))}}let m=s||o?await r.getSlot():0;for(let p of Object.keys(c))c[p]!==void 0&&(c[p].state=dd(c[p].state,c[p].lpVault,m,i));for(let[p,{state:d,ledger:y}]of Object.entries(c))if(y){let f=d.version===6?d.rewardMultiplier:d.rewardInfos.length===1?a.pow(new rt(9)):a.pow(new rt(15)),b=d.rewardInfos.map((g,P)=>{let A=y.rewardDebts[P];return y.deposited.mul(d.version===6?g.accRewardPerShare:g.perShareReward).div(f).sub(A)});c[p].wrapped=D(M({},c[p].wrapped),{pendingRewards:b})}return c}function cP(r,e=Date.now()){if(r.version===6){let t=r.state.rewardInfos;if(t.every(({rewardOpenTime:n})=>ra(e,n.toNumber(),{unit:"s"})))return"upcoming pool";if(t.every(({rewardEndTime:n})=>ia(e,n.toNumber(),{unit:"s"})))return"closed pool"}else{let t=r.state.rewardInfos.map(({perSlotReward:n})=>n);if(t.length===2){if(String(t[0])==="0"&&String(t[1])!=="0")return"normal fusion pool";if(String(t[0])!=="0"&&String(t[1])!=="0")return"dual fusion pool";if(String(t[0])==="0"&&String(t[1])==="0")return"closed pool"}else if(t.length===1&&String(t[0])==="0")return"closed pool"}}async function Oo(r,e,t,n){let i=await r.getAccountInfo(e);if(i===null)throw Error("registrar info check error");let s=Ka.decode(i.data).votingMints.findIndex(l=>l.mint.equals(n));if(s===-1)throw Error("find voter mint error");let a=await r.getAccountInfo(t);if(a===null)return{index:s,isInit:!1};let c=Ca.decode(a.data).deposits.findIndex(l=>l.isUsed&&l.votingMintConfigIdx===s);return c===-1?{index:s,isInit:!1}:{index:c,isInit:!0}}var bd=ae("Raydium_farm_instruction"),rr={voterStakeRegistryCreateVoter:Buffer.from([6,24,245,52,243,255,148,25]),voterStakeRegistryCreateDepositEntry:Buffer.from([185,131,167,186,159,125,19,67]),voterStakeRegistryDeposit:Buffer.from([242,35,198,137,82,225,242,182]),voterStakeRegistryWithdraw:Buffer.from([183,18,70,156,148,109,161,34]),voterStakeRegistryUpdateVoterWeightRecord:Buffer.from([45,185,3,36,109,190,115,169])};function Ea(r){let{version:e,id:t,ledger:n,programId:i,owner:o}=r,s={3:9,5:10}[e];s||bd.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(wo.span);wo.encode({instruction:s},a);let u=[k({pubkey:t}),k({pubkey:n}),k({pubkey:o,isWritable:!1}),k({pubkey:un.programId,isWritable:!1}),k({pubkey:pd,isWritable:!1})];return{instruction:new Ve({programId:i,keys:u,data:a}),instructionType:V.FarmV3CreateLedger}}function Fa(r){var n;let e=Buffer.alloc(Po.span);Po.encode({instruction:0,nonce:new si(r.nonce),rewardTimeInfo:r.rewardInfoConfig},e);let t=[...Mi,k({pubkey:r.farmId}),k({pubkey:r.farmAuthority,isWritable:!1}),k({pubkey:r.lpVault}),k({pubkey:r.lpMint,isWritable:!1}),k({pubkey:r.lockVault}),k({pubkey:r.lockMint,isWritable:!1}),k({pubkey:(n=r.lockUserAccount)!=null?n:Ne}),k({pubkey:r.owner,isWritable:!1,isSigner:!0})];for(let i of r.rewardInfo)t.push(k({pubkey:i.rewardMint,isWritable:!1}),k({pubkey:i.rewardVault}),k({pubkey:i.userRewardToken}));return{instruction:new Ve({programId:r.programId,keys:t,data:e}),instructionType:V.FarmV6Create}}function va(r){let e=Buffer.alloc(Ao.span);Ao.encode({instruction:5},e);let t=[k({pubkey:st,isWritable:!1}),k({pubkey:r.id}),k({pubkey:r.authority,isWritable:!1}),k({pubkey:r.lpVault,isWritable:!1}),k({pubkey:r.rewardVault}),k({pubkey:r.userRewardToken}),k({pubkey:r.owner,isWritable:!1,isSigner:!0})];return{instruction:new Ve({programId:r.programId,keys:t,data:e}),instructionType:V.FarmV6CreatorWithdraw}}function gd(r,e,t,n,i,o,s,a,u,c,l,m,p){let d=L([_("depositEntryIndex"),w("amount")]),y=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:Vr,isSigner:!1,isWritable:!1}],f=Buffer.alloc(d.span);d.encode({depositEntryIndex:m,amount:p},f);let b=Buffer.from([...rr.voterStakeRegistryDeposit,...f]);return new Ve({keys:y,programId:r,data:b})}function wd(r,e,t,n){let i=L([]),o=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:un.programId,isSigner:!1,isWritable:!1}],s=Buffer.alloc(i.span);i.encode({},s);let a=Buffer.from([...rr.voterStakeRegistryUpdateVoterWeightRecord,...s]);return new Ve({keys:o,programId:r,data:a})}function Ad(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=L([_("depositEntryIndex"),w("amount")]),b=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:st,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:Vr,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({depositEntryIndex:d,amount:y},g);let P=Buffer.from([...rr.voterStakeRegistryWithdraw,...g]);return new Ve({keys:b,programId:r,data:P})}function Pd(r,e,t,n,i,o){let s=L([_("ins")]),a=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:un.programId,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);return s.encode({ins:23},u),new Ve({keys:a,programId:r,data:u})}function kd(r,e,t,n,i,o,s,a){let u=L([_("voterBump"),_("voterWeightRecordBump")]),c=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:un.programId,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:Vr,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({voterBump:s,voterWeightRecordBump:a},l);let m=Buffer.from([...rr.voterStakeRegistryCreateVoter,...l]);return new Ve({keys:c,programId:r,data:m})}function hd(r,e,t,n,i,o,s,a,u,c,l,m){let p=L([_("depositEntryIndex"),_("kind"),_("option"),w("startTs"),ze("periods"),De("allowClawback")]),d=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:un.programId,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1},{pubkey:yd,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1}],y=Buffer.alloc(p.span);p.encode({depositEntryIndex:a,kind:u,option:c===void 0?0:1,startTs:c,periods:l,allowClawback:m},y);let f=Buffer.from([...rr.voterStakeRegistryCreateDepositEntry,...y]);return new Ve({keys:d,programId:r,data:f})}async function BP({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=xo(n,i,o).publicKey,l=it({programId:e,poolId:a,owner:s,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let p=Jn.decode(m.data),d=p.deposited.sub(p.voteLockedBalance);if(console.log("amount",d.toString()),d.eq(new si(0)))throw Error("user do not has new stake amount");let y=Bo(e,a).publicKey,f=So(e,a).publicKey,{publicKey:b,nonce:g}=Ko(n,c,s),P=ye(b,y,u).publicKey,{publicKey:A,nonce:h}=Co(n,c,s),T=Ro(t,i,o,s).publicKey,I=[],B=ye(s,y,u).publicKey;if(await r.getAccountInfo(B)===null&&I.push(fd(s,B,s,y)),await r.getAccountInfo(b)===null){let Q=Pd(t,i,s,o,s,T);I.push(Q,kd(n,c,b,A,s,s,g,h))}let{index:N,isInit:E}=await Oo(r,c,b,y);return E||I.push(hd(n,c,b,P,s,s,y,N,0,void 0,0,!1)),I.push(gd(n,c,b,P,B,s,l,a,y,f,e,N,d),wd(n,c,b,A)),I}async function SP({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=xo(n,i,o).publicKey,l=it({programId:e,poolId:a,owner:s,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let p=Jn.decode(m.data);if(p.voteLockedBalance.eq(new si(0)))throw Error("user has vote locked balance = 0");let d=Bo(e,a).publicKey,y=So(e,a).publicKey,{publicKey:f}=Ko(n,c,s),b=ye(f,d,u).publicKey,{publicKey:g}=Co(n,c,s),P=Ro(t,i,o,s).publicKey,A=[],{index:h,isInit:T}=await Oo(r,c,f,d);if(!T)throw Error("deposit entry index check error");return A.push(Ad(n,c,f,s,P,g,b,ye(s,d,u).publicKey,l,a,d,y,e,h,p.voteLockedBalance)),A}function No({payer:r,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:i}){let o=Buffer.alloc(ko.span);ko.encode({instruction:3,rewardReopenTime:U(i.openTime),rewardEndTime:U(i.endTime),rewardPerSecond:U(i.perSecond)},o);let s=[k({pubkey:st,isWritable:!1}),k({pubkey:n.id}),k({pubkey:n.lpVault,isWritable:!1}),k({pubkey:e}),k({pubkey:t}),k({pubkey:r,isWritable:!1,isSigner:!0})];return new Ve({programId:n.programId,keys:s,data:o})}function Mo({payer:r,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:i}){let o=Buffer.alloc(ho.span);ho.encode({instruction:4,isSet:new si(1),rewardPerSecond:U(i.perSecond),rewardOpenTime:U(i.openTime),rewardEndTime:U(i.endTime),rewardType:U(Zt[i.rewardType])},o);let s=[...Mi,k({pubkey:t.id}),k({pubkey:t.authority,isWritable:!1}),k({pubkey:i.mint,isWritable:!1}),k({pubkey:n}),k({pubkey:e}),k({pubkey:r,isWritable:!1,isSigner:!0})];return new Ve({programId:t.programId,keys:s,data:o})}function KP(r){let{farmInfo:e,farmKeys:t,version:n,lpAccount:i,rewardAccounts:o,owner:s,instruction:a,amount:u,deposit:c}=r,[l,m]=[new ie(e.programId),new ie(e.id)],p=it({programId:l,poolId:m,owner:s,version:n}),d=Buffer.alloc(Je.span);Je.encode({instruction:a,amount:u},d);let y=n===6?[k({pubkey:st,isWritable:!1}),...c?[k({pubkey:un.programId,isWritable:!1})]:[],k({pubkey:m}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:new ie(t.lpVault)}),k({pubkey:p}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:i})]:[k({pubkey:m}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:p}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:i}),k({pubkey:new ie(t.lpVault)}),k({pubkey:o[0]}),k({pubkey:new ie(t.rewardInfos[0].vault)}),k({pubkey:nr,isWritable:!1}),k({pubkey:st,isWritable:!1})];if(n===5)for(let f=1;f<t.rewardInfos.length;f++)y.push(k({pubkey:o[f]})),y.push(k({pubkey:new ie(t.rewardInfos[f].vault)}));if(n===6)for(let f=0;f<t.rewardInfos.length;f++)y.push(k({pubkey:new ie(t.rewardInfos[f].vault)})),y.push(k({pubkey:o[f]}));return new Ve({programId:l,keys:y,data:d})}function ir(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new ie(e.programId),new ie(e.id)],c=it({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Je.span);Je.encode({instruction:2,amount:U(s)},l);let m=[k({pubkey:st,isWritable:!1}),k({pubkey:u}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:new ie(t.lpVault)}),k({pubkey:c}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n})];for(let p=0;p<t.rewardInfos.length;p++)m.push(k({pubkey:new ie(t.rewardInfos[p].vault)})),m.push(k({pubkey:i[p]}));return new Ve({programId:a,keys:m,data:l})}function or(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=it({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Je.span);Je.encode({instruction:12,amount:U(s)},m);let p=[k({pubkey:c}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new ie(t.lpVault)}),k({pubkey:i[0]}),k({pubkey:new ie(t.rewardInfos[0].vault)}),k({pubkey:nr,isWritable:!1}),k({pubkey:st,isWritable:!1})];for(let d=1;d<t.rewardInfos.length;d++)p.push(k({pubkey:i[d]})),p.push(k({pubkey:new ie(t.rewardInfos[d].vault)}));if(a)for(let d of a)p.push(k({pubkey:d}));return new Ve({programId:u,keys:p,data:m})}function sr(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=it({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Je.span);Je.encode({instruction:11,amount:U(s)},m);let p=[k({pubkey:c}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new ie(t.lpVault)}),k({pubkey:i[0]}),k({pubkey:new ie(t.rewardInfos[0].vault)}),k({pubkey:nr,isWritable:!1}),k({pubkey:st,isWritable:!1})];if(a)for(let d of a)p.push(k({pubkey:d}));return new Ve({programId:u,keys:p,data:m})}function Wa(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=it({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Je.span);Je.encode({instruction:10,amount:U(s)},m);let p=[k({pubkey:c}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new ie(t.lpVault)}),k({pubkey:i[0]}),k({pubkey:new ie(t.rewardInfos[0].vault)}),k({pubkey:nr,isWritable:!1}),k({pubkey:st,isWritable:!1})];if(a)for(let d of a)p.push(k({pubkey:d}));return new Ve({programId:u,keys:p,data:m})}function Da(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=it({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Je.span);Je.encode({instruction:11,amount:U(s)},m);let p=[k({pubkey:c}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new ie(t.lpVault)}),k({pubkey:i[0]}),k({pubkey:new ie(t.rewardInfos[0].vault)}),k({pubkey:nr,isWritable:!1}),k({pubkey:st,isWritable:!1})];for(let d=1;d<t.rewardInfos.length;d++)p.push(k({pubkey:i[d]})),p.push(k({pubkey:new ie(t.rewardInfos[d].vault)}));if(a)for(let d of a)p.push(k({pubkey:d}));return new Ve({programId:u,keys:p,data:m})}function qa(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new ie(e.programId),new ie(e.id)],c=it({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Je.span);Je.encode({instruction:1,amount:U(s)},l);let m=[k({pubkey:st,isWritable:!1}),k({pubkey:un.programId,isWritable:!1}),k({pubkey:u}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:new ie(t.lpVault)}),k({pubkey:c}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n})];for(let p=0;p<t.rewardInfos.length;p++)m.push(k({pubkey:new ie(t.rewardInfos[p].vault)})),m.push(k({pubkey:i[p]}));return new Ve({programId:a,keys:m,data:l})}var ar=class extends xe{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Ne)){let n=await St({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:Lo(D(M({},t),{openTime:t.openTime.toString(),endTime:t.endTime.toString()}))});return{rewardPubKey:n.addresses.newAccount,newInstruction:n}}return{rewardPubKey:await this.scope.account.getCreatedTokenAccount({mint:t.mint,associatedOnly:!1})}}async create({poolInfo:e,rewardInfos:t,payer:n,programId:i=Tn,txVersion:o}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new ke(e.lpMint.address),lockInfo:{lockMint:La,lockVault:Oa},version:6,rewardInfos:t,programId:i},u=this.createTxBuilder(),c=n!=null?n:this.scope.ownerPubKey,l=Ye({fromPublicKey:c,programId:a.programId}),m=await this.scope.connection.getMinimumBalanceForRentExemption($n.span);u.addInstruction({instructions:[Id.createAccountWithSeed({fromPubkey:c,basePubkey:c,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m,space:$n.span,programId:a.programId})]});let{publicKey:p,nonce:d}=_a({programId:new ke(a.programId),poolId:l.publicKey}),y=tr({programId:a.programId,poolId:l.publicKey,mint:a.lpMint,type:"lpVault"}),f=[],b=[];for(let h of a.rewardInfos){h.openTime>=h.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",h.openTime.toString()),isNaN(Zt[h.rewardType])&&this.logAndCreateError("rewardType error",h.rewardType),Number(h.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",h.perSecond),f.push(Va(h));let{rewardPubKey:T,newInstruction:I}=await this._getUserRewardInfo({rewardInfo:h,payer:c});I&&u.addInstruction(I),T||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let B=h.mint.equals(Ne)?new ke(Me.address):h.mint;b.push({rewardMint:B,rewardVault:tr({programId:a.programId,poolId:l.publicKey,mint:B,type:"rewardVault"}),userRewardToken:T})}let g=await this.scope.account.getCreatedTokenAccount({mint:a.lockInfo.lockMint});g||this.logAndCreateError("cannot found lock vault","tokenAccounts",this.scope.account.tokenAccounts);let{instruction:P,instructionType:A}=Fa({farmId:l.publicKey,owner:this.scope.ownerPubKey,farmAuthority:p,lpVault:y,lpMint:a.lpMint,lockVault:a.lockInfo.lockVault,lockMint:a.lockInfo.lockMint,lockUserAccount:g,programId:a.programId,rewardInfo:b,rewardInfoConfig:f,nonce:d});return u.addInstruction({instructions:[P],instructionTypes:[A]}).versionBuild({txVersion:o,extInfo:{farmId:l.publicKey,farmAuthority:p,lpVault:y,lockUserAccount:g,nonce:d}})}async restartReward({farmInfo:e,payer:t,newRewardInfo:n,txVersion:i}){var b;let o=At[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=fe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.openTime>=n.endTime&&this.logAndCreateError("start time error","newRewardInfo",n);let u=t||this.scope.ownerPubKey,c=n.mint.equals(Ne)?new ke(Me.address):n.mint,l=a.rewardInfos.findIndex(g=>new ke(g.mint.address).equals(c)),m=s.rewardInfos[l];m||this.logAndCreateError("configuration does not exist","rewardMint",c);let p=(b=m.vault)!=null?b:Ne,d=this.createTxBuilder(),{rewardPubKey:y,newInstruction:f}=await this._getUserRewardInfo({rewardInfo:n,payer:u});return f&&d.addInstruction(f),y||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts),d.addInstruction({instructions:[No({payer:this.scope.ownerPubKey,rewardVault:p,userRewardTokenPub:y,farmKeys:a,rewardInfo:n})],instructionTypes:[V.FarmV6Restart]}).versionBuild({txVersion:i})}async restartRewards({farmInfo:e,payer:t,newRewardInfos:n,txVersion:i}){var l;let o=At[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=fe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.forEach(m=>{m.openTime>=m.endTime&&this.logAndCreateError("start time error","newRewardInfo",m)});let u=t||this.scope.ownerPubKey,c=this.createTxBuilder();for(let m of n){let p=m.mint.equals(Ne)?new ke(Me.address):m.mint,d=a.rewardInfos.findIndex(A=>new ke(A.mint.address).equals(p)),y=s.rewardInfos[d];y||this.logAndCreateError("configuration does not exist","rewardMint",p);let f=(l=y.vault)!=null?l:Ne,{rewardPubKey:b,newInstruction:g}=await this._getUserRewardInfo({rewardInfo:m,payer:u});g&&c.addInstruction(g),b||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let P=No({payer:this.scope.ownerPubKey,rewardVault:f,userRewardTokenPub:b,farmKeys:a,rewardInfo:m});c.addInstruction({instructions:[P],instructionTypes:[V.FarmV6Restart]})}return c.versionBuild({txVersion:i})}async addNewRewardToken(e){let{txVersion:t,farmInfo:n,newRewardInfo:i,payer:o}=e,s=At[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=fe((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder(),l=i.mint.equals(Ne)?new ke(Me.address):i.mint,m=tr({programId:new ke(n.programId),poolId:new ke(n.id),mint:l,type:"rewardVault"}),{rewardPubKey:p,newInstruction:d}=await this._getUserRewardInfo({rewardInfo:i,payer:u});return d&&c.addInstruction(d),p||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),i.mint=l,c.addInstruction({instructions:[Mo({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:a,rewardVault:m,rewardInfo:i})],instructionTypes:[V.FarmV6CreatorAddReward]}).versionBuild({txVersion:t})}async addNewRewardsToken(e){let{txVersion:t,farmInfo:n,newRewardInfos:i,payer:o}=e,s=At[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=fe((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder();for(let l of i){let m=l.mint.equals(Ne)?new ke(Me.address):l.mint,p=tr({programId:new ke(n.programId),poolId:new ke(n.id),mint:m,type:"rewardVault"}),{rewardPubKey:d,newInstruction:y}=await this._getUserRewardInfo({rewardInfo:l,payer:u});y&&c.addInstruction(y),d||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let f=Mo({payer:this.scope.ownerPubKey,userRewardTokenPub:d,farmKeys:a,rewardVault:p,rewardInfo:D(M({},l),{mint:m})});c.addInstruction({instructions:[f],instructionTypes:[V.FarmV6CreatorAddReward]})}return c.versionBuild({txVersion:t})}async deposit(e){let{txVersion:t,farmInfo:n,amount:i,feePayer:o,useSOLBalance:s,associatedOnly:a=!0,checkCreateATAOwner:u=!1,userAuxiliaryLedgers:c,computeBudgetConfig:l}=e;this.scope.availability.addFarm===!1&&this.logAndCreateError("farm deposit feature disabled in your region");let{rewardInfos:m,programId:p}=n,d=At[p];To(d)||this.logAndCreateError("invalid farm program:",n.programId);let[y,f]=[new ke(n.programId),new ke(n.id)],b=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],g=it({programId:y,poolId:f,owner:this.scope.ownerPubKey,version:d}),P=this.createTxBuilder();P.addCustomComputeBudget(l);let A={};for(let W of this.scope.account.tokenAccounts)if(a){let j=ye(this.scope.ownerPubKey,W.mint,W.programId).publicKey;W.publicKey&&j.equals(W.publicKey)&&(A[W.mint.toString()]=W.publicKey)}else A[W.mint.toString()]=W.publicKey;let h=b.lpMint,T=A[h.address];T||this.logAndCreateError("you don't have any lp","lp zero",A);let I=[];for(let W of m){let j=s&&W.mint.address===te.toString(),ee=A[W.mint.address];if(!ee){let{account:se,instructionParams:ft}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:W.mint.programId,mint:new ke(W.mint.address),notUseTokenAccount:j,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!j,associatedOnly:j?!1:a,checkCreateATAOwner:u});ee=se,ft&&P.addInstruction(ft)}A[W.mint.address]=ee,I.push(ee)}let B,x=await this.scope.connection.getAccountInfo(g);if(x&&(B=oi(d).decode(x.data)),n.programId!==Tn.toString()&&!B){let{instruction:W,instructionType:j}=Ea({id:f,programId:y,version:d,ledger:g,owner:this.scope.ownerPubKey});P.addInstruction({instructions:[W],instructionTypes:[j]})}let R=Io({version:d,rewardInfos:m,rewardTokenAccountsPublicKeys:I});R&&this.logAndCreateError(R);let N={amount:U(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:b,lpAccount:T,rewardAccounts:I,userAuxiliaryLedgers:c==null?void 0:c.map(W=>new ke(W))},E=d===6?qa(N):d===5?Da(N):Wa(N),Q={3:V.FarmV3Deposit,5:V.FarmV5Deposit,6:V.FarmV6Deposit};return P.addInstruction({instructions:[E],instructionTypes:[Q[d]]}).versionBuild({txVersion:t})}async withdraw(e){let{txVersion:t,farmInfo:n,amount:i,deposited:o,useSOLBalance:s,feePayer:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,userAuxiliaryLedgers:l,computeBudgetConfig:m}=e,{rewardInfos:p}=n;this.scope.availability.removeFarm===!1&&this.logAndCreateError("farm withdraw feature disabled in your region");let d=At[n.programId];To(d)||this.logAndCreateError("invalid farm program:",n.programId);let y=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],f=this.createTxBuilder();f.addCustomComputeBudget(m);let b={};for(let R of this.scope.account.tokenAccounts)if(u){let N=ye(this.scope.ownerPubKey,R.mint).publicKey;R.publicKey&&N.equals(R.publicKey)&&(b[R.mint.toString()]=R.publicKey)}else b[R.mint.toString()]=R.publicKey;if(o)o.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else{let R=it({programId:new ke(n.programId),poolId:new ke(n.id),owner:this.scope.ownerPubKey,version:d}),N=await this.scope.connection.getAccountInfo(R);N||this.logAndCreateError("no lp data",{farmId:n.id,version:d,ledgerData:N}),oi(d).decode(N.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id})}let g=y.lpMint.address,P=s&&g===te.toString(),A=b[g.toString()];if(!A){let{account:R,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y.lpMint.programId,mint:new ke(g),notUseTokenAccount:P,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:P?!1:u,checkCreateATAOwner:c});A=R,N&&f.addInstruction(N)}b[g.toString()]=A;let h=[];for(let R of p){let N=s&&R.mint.address===te.toString(),E=b[R.mint.address];if(!E){let{account:Q,instructionParams:W}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:R.mint.programId,mint:new ke(R.mint.address),notUseTokenAccount:N,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!N,associatedOnly:N?!1:u,checkCreateATAOwner:c});E=Q,W&&f.addInstruction(W)}b[R.mint.address]=E,h.push(E)}let T=Io({version:d,rewardInfos:p,rewardTokenAccountsPublicKeys:h});T&&this.logAndCreateError(T);let I={amount:U(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:A,rewardAccounts:h,userAuxiliaryLedgers:l==null?void 0:l.map(R=>new ke(R))},B=d===6?ir(I):d===5?or(I):sr(I),x={3:V.FarmV3Withdraw,5:V.FarmV5Withdraw,6:V.FarmV6Withdraw};return f.addInstruction({instructions:[B],instructionTypes:[x[d]]}).versionBuild({txVersion:t})}async withdrawFarmReward({farmInfo:e,withdrawMint:t,txVersion:n}){var d;this.scope.checkOwner();let i=fe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),o=At[e.programId];o!==6&&this.logAndCreateError("invalid farm version",o);let s=e.rewardInfos.findIndex(y=>y.mint.address===Ne.toString()?new ke(Me.address):t),a=i.rewardInfos[s];a||this.logAndCreateError("withdraw mint error","rewardInfos",e);let u=(d=a==null?void 0:a.vault)!=null?d:Ne,c=this.createTxBuilder(),l;if(t.equals(Ne)){let y=await St({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:Lo(D(M({},a),{openTime:a.openTime,endTime:a.endTime,perSecond:new F(a.perSecond).mul(10**a.mint.decimals).toString()}))});l=y.addresses.newAccount,c.addInstruction(y)}else{let y=await this.scope.account.getCreatedTokenAccount({mint:t});y===null?(l=await this.scope.account.getAssociatedTokenAccount(t),c.addInstruction({instructions:[Td(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[V.CreateATA]})):l=y}let{instruction:m,instructionType:p}=va({programId:i.programId,id:i.id,authority:i.authority,lpVault:i.lpVault,rewardVault:u,userRewardToken:l,owner:this.scope.ownerPubKey});return c.addInstruction({instructions:[m],instructionTypes:[p]}).versionBuild({txVersion:n})}async harvestAllRewards(e){let{farmInfoList:t,useSOLBalance:n,feePayer:i,associatedOnly:o=!0,checkCreateATAOwner:s=!1,userAuxiliaryLedgers:a,txVersion:u,computeBudgetConfig:c}=e,l=this.createTxBuilder(),m={};for(let y of this.scope.account.tokenAccounts)if(o){let f=ye(this.scope.ownerPubKey,y.mint).publicKey;y.publicKey&&f.equals(y.publicKey)&&(m[y.mint.toString()]=y.publicKey)}else m[y.mint.toString()]=y.publicKey;let d=(await this.scope.api.fetchFarmKeysById({ids:Object.values(t).map(y=>y.id).join(",")})).reduce((y,f)=>D(M({},y),{[f.id]:f}),{});for(let y of Object.values(t)){let{programId:f,lpMint:b,rewardInfos:g,id:P}=y,A=At[f],h=b.address,T=n&&h===te.toString(),I=m[h];if(!I){let{account:Q,instructionParams:W}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:b.programId,mint:new ke(h),notUseTokenAccount:T,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:T?!1:o,checkCreateATAOwner:s});I=Q,W&&l.addInstruction(W)}m[h.toString()]=I;let B=[];for(let Q of g){let W=n&&Q.mint.address===te.toString(),j=m[Q.mint.address];if(!j){let{account:ee,instructionParams:se}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Q.mint.programId,mint:new ke(Q.mint.address),notUseTokenAccount:W,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!W,associatedOnly:W?!1:o,checkCreateATAOwner:s});j=ee,se&&l.addInstruction(se)}m[Q.mint.address]=j,B.push(j)}let x=d[P],R={amount:Se,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:x,lpAccount:I,rewardAccounts:B,userAuxiliaryLedgers:a==null?void 0:a.map(Q=>new ke(Q))},N=A===6?ir(R):A===5?or(R):sr(R),E={3:V.FarmV3Withdraw,5:V.FarmV5Withdraw,6:V.FarmV6Withdraw};l.addInstruction({instructions:[N],instructionTypes:[E[A]]})}return u===1?l.sizeCheckBuild({computeBudgetConfig:c}):l.sizeCheckBuildV0({computeBudgetConfig:c})}};import{PublicKey as ot}from"@solana/web3.js";import{NATIVE_MINT as Iu,TOKEN_PROGRAM_ID as fi}from"@solana/spl-token";var ZP=L([ze("mintAuthorityOption"),S("mintAuthority"),w("supply"),_("decimals"),_("isInitialized"),ze("freezeAuthorityOption"),S("freezeAuthority")]);import{PublicKey as xd}from"@solana/web3.js";import{MintLayout as Ua,TOKEN_PROGRAM_ID as Bd}from"@solana/spl-token";var ok=async({connection:r,mint:e})=>{let t=await r.getAccountInfo(new xd(e));return!t||t.data.length!==Ua.span?void 0:Ua.decode(t.data)},sk=({mint:r,decimals:e,programId:t=Bd,logoURI:n="",priority:i=3})=>{let o=r.toBase58().substring(0,6);return{address:r.toBase58(),decimals:e,symbol:o,logoURI:n,extensions:{},chainId:101,programId:t.toString(),name:o,tags:[],priority:i}},Ga=r=>new de({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name}),ak=i=>{var o=i,{amount:r,isRaw:e,name:t}=o,n=Te(o,["amount","isRaw","name"]);return new he(new de({mint:n.address,decimals:n.decimals,symbol:n.symbol,name:t}),r,e,t)};function uk(r){return r.address===Tt.address?Me:r}function ck(r){return r.address===Me.address?Tt:r}import{TOKEN_PROGRAM_ID as ur,ASSOCIATED_TOKEN_PROGRAM_ID as Dd}from"@solana/spl-token";import{PublicKey as be,TransactionInstruction as Et,SystemProgram as Do,SYSVAR_RENT_PUBKEY as qd}from"@solana/web3.js";var _o=L([_("instruction"),w("amountIn"),w("minAmountOut")]),Vo=L([_("instruction"),w("maxAmountIn"),w("amountOut")]),kk=L([_("instruction"),_("nonce")]),Eo=L([_("instruction"),_("nonce"),w("startTime")]),Sd=L([w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalValue"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),w("swapBase2QuoteFee"),z("swapQuoteInAmount"),z("swapBaseOutAmount"),w("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"),w("lpReserve"),q(w(),3,"padding")]),Kd=L([w("accountType"),w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalsValue"),w("abortTradeFactor"),w("priceTickMultiplier"),w("priceTick"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),z("swapQuoteInAmount"),z("swapBaseOutAmount"),w("swapQuote2BaseFee"),w("swapBase2QuoteFee"),S("baseVault"),S("quoteVault"),S("baseMint"),S("quoteMint"),S("lpMint"),S("modelDataAccount"),S("openOrders"),S("marketId"),S("marketProgramId"),S("targetOrders"),S("owner"),q(w(),64,"padding")]),Fo=L([_("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide")]),vo=L([_("instruction"),w("amountIn")]),hk={4:Sd,5:Kd},Xa=L([w("fee")]);import{PublicKey as Cd}from"@solana/web3.js";var Kn=new Cd("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ln=5e4,Rd=L([w("x"),w("y"),w("price")]),Ld=L([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),q(Rd,ln,"DataElement")]);function Od(r,e){return[0,ln-2]}function Nd(r){return[0,ln-2]}function Md(r){return[0,ln-2]}function _d(r,e,t){let[n,i]=Od(e,t),o=n,s=i,a=0,u=e*r.multiplier/t;for(;o<=s;){if(a=Math.floor((s+o)/2),a===0||a>=ln-2)return[a,a,!1];let c=r.DataElement[a].x*r.multiplier/r.DataElement[a].y,l=r.DataElement[a-1].x*r.multiplier/r.DataElement[a-1].y,m=r.DataElement[a+1].x*r.multiplier/r.DataElement[a+1].y;if(u===c)return[a,a,!0];if(u===l)return[a-1,a-1,!0];if(u===m)return[a+1,a+1,!0];if(u<l)s=a-1;else{if(u>l&&u<c)return[a-1,a,!0];if(u>c&&u<m)return[a,a+1,!0];o=a+1}}return[a,a,!1]}function Wo(r,e,t){let[n,i,o]=_d(r,e,t);if(!o)return 0;if(n===i){let s=r.DataElement[n].x;return e*r.multiplier/s}else{let s=r.DataElement[n].x,a=r.DataElement[n].y,u=r.DataElement[i].x,c=r.DataElement[i].y,l=t*(u*a-s*c),m=s*l,p=(u-s)*(e*a-s*t)*c,d=m+p;return e*r.multiplier*l/d}}function cn(r,e,t){return e*r.multiplier/t}function za(r,e,t){return e*t/r.multiplier}function Vd(r,e){let[t,n]=Nd(e),i=t,o=n,s=0,a=e;for(;i<o;){if(s=Math.floor((o+i)/2),s<=0||s>ln-2)return[s,s,!1];let u=r.DataElement[s].x,c=r.DataElement[s-1].x,l=r.DataElement[s+1].x;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<c)o=s-1;else{if(a>c&&a<u)return[s-1,s,!0];if(a>u&&a<l)return[s,s+1,!0];i=s+1}}return[s,s,!1]}function Ed(r,e){let[t,n]=Md(e),i=t,o=n,s=0,a=e;for(;i<=o;){if(s=Math.floor((o+i)/2),s<=0||s>=ln-2)return[s,s,!1];let u=r.DataElement[s].y,c=r.DataElement[s-1].y,l=r.DataElement[s+1].y;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<l)i=s+1;else{if(a<c&&a>u)return[s-1,s,!0];if(a<u&&a>l)return[s,s+1,!0];o=s-1}}return[s,s,!1]}function Ya(r,e,t,n){let i=n?e+t:e-t,[o,s,a]=Vd(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].y,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,p=r.DataElement[o].y,d=r.DataElement[s].y;if(e>=u&&e<=c)return n?[m,d,!0,a]:[l,p,!0,a];{let y,f;return n?(y=l+(m-l)*(e-u)/(c-u),f=p-(i-u)*r.multiplier/m):(y=l+(m-l)*(e-u)/(c-u),f=d+(c-i)*r.multiplier/l),[y,f,!1,a]}}}function Fd(r,e,t,n){let i=n?e-t:e+t,[o,s,a]=Ed(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].x,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,p=r.DataElement[o].y,d=r.DataElement[s].y;if(e>=d&&e<=p)return n?[m,c,!0,a]:[l,u,!0,a];{let y,f;return n?(y=l+(m-l)*(p-e)/(p-d),f=u+m*(p-i)/r.multiplier):(y=l+(m-l)*(p-e)/(p-d),f=c-l*(i-d)/r.multiplier),[y,f,!1,a]}}}function vd(r,e){let t=Ya(r,e,0,!1);return t[3]?t[0]:0}function Qa(r,e,t,n){let i=Wo(r,e,t),o=cn(r,e,i),s=cn(r,t,i),a=cn(r,n,i),u=!0,[c,l,m,p]=Ya(r,o,a,u);if(!p)return 0;if(m)return n*r.multiplier/c;{let d=s-l;return za(r,d,i)}}function Ha(r,e,t,n){let i=Wo(r,e,t),o=cn(r,e,i),s=cn(r,t,i),a=cn(r,n,i),u=!1,[c,l,m,p]=Fd(r,s,a,u);if(!p)return 0;if(m)return n*c/r.multiplier;{let d=o-l;return za(r,d,i)}}function Wd(r){let e=Ld.decode(r);return{accountType:e.accountType.toNumber(),status:e.status.toNumber(),multiplier:e.multiplier.toNumber(),validDataCount:e.validDataCount.toNumber(),DataElement:e.DataElement.map(t=>({x:t.x.toNumber(),y:t.y.toNumber(),price:t.price.toNumber()}))}}function ja(r,e,t,n){let i=vd(r,cn(r,e,Wo(r,e,t)))/r.multiplier;return n?i:1/i}var Sn=class{constructor({connection:e}){this._layoutData={accountType:0,status:0,multiplier:0,validDataCount:0,DataElement:[]};this.connection=e}get stableModelData(){return this._layoutData}async initStableModelLayout(){if(this._layoutData.validDataCount===0&&this.connection){let e=await this.connection.getAccountInfo(Kn);e&&(this._layoutData=Wd(e==null?void 0:e.data))}}};var Za=ae("Raydium_liquidity_instruction");function $a(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:i,quoteAmountIn:o,fixedSide:s}=r,a=Buffer.alloc(Fo.span);Fo.encode({instruction:3,baseAmountIn:U(i),quoteAmountIn:U(o),fixedSide:s==="base"?Se:Us},a);let u=[k({pubkey:ur,isWritable:!1}),k({pubkey:new be(e.id)}),k({pubkey:new be(t.authority),isWritable:!1}),k({pubkey:new be(t.openOrders),isWritable:!1}),k({pubkey:new be(t.targetOrders)}),k({pubkey:new be(e.lpMint.address)}),k({pubkey:new be(t.vault.A)}),k({pubkey:new be(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(k({pubkey:Kn})),u.push(k({pubkey:new be(e.marketId),isWritable:!1}),k({pubkey:n.baseTokenAccount}),k({pubkey:n.quoteTokenAccount}),k({pubkey:n.lpTokenAccount}),k({pubkey:n.owner,isWritable:!1,isSigner:!0}),k({pubkey:new be(t.marketEventQueue),isWritable:!1})),new Et({programId:new be(e.programId),keys:u,data:a})}function qo(r){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:i}=r,o=fe(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(vo.span);vo.encode({instruction:4,amountIn:U(i)},a);let u=[k({pubkey:ur,isWritable:!1}),k({pubkey:o.id}),k({pubkey:o.authority,isWritable:!1}),k({pubkey:o.openOrders}),k({pubkey:o.targetOrders}),k({pubkey:o.mintLp.address}),k({pubkey:o.vault.A}),k({pubkey:o.vault.B})];return s===5?u.push(k({pubkey:Kn})):(u.push(k({pubkey:o.id})),u.push(k({pubkey:o.id}))),u.push(k({pubkey:o.marketProgramId,isWritable:!1}),k({pubkey:o.marketId}),k({pubkey:o.marketBaseVault}),k({pubkey:o.marketQuoteVault}),k({pubkey:o.marketAuthority,isWritable:!1}),k({pubkey:n.lpTokenAccount}),k({pubkey:n.baseTokenAccount}),k({pubkey:n.quoteTokenAccount}),k({pubkey:n.owner,isWritable:!1,isSigner:!0}),k({pubkey:o.marketEventQueue}),k({pubkey:o.marketBids}),k({pubkey:o.marketAsks})),new Et({programId:o.programId,keys:u,data:a})}return new Et({programId:o.programId,keys:[]})}function Ja({programId:r,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:i,coinMint:o,pcMint:s,coinVault:a,pcVault:u,withdrawQueue:c,ammTargetOrders:l,poolTempLp:m,marketProgramId:p,marketId:d,userWallet:y,userCoinVault:f,userPcVault:b,userLpVault:g,nonce:P,openTime:A,coinAmount:h,pcAmount:T,ammConfigId:I,feeDestinationId:B}){let x=L([_("instruction"),_("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),R=[{pubkey:ur,isSigner:!1,isWritable:!1},{pubkey:Dd,isSigner:!1,isWritable:!1},{pubkey:Do.programId,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:I,isSigner:!1,isWritable:!1},{pubkey:B,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!0,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0}],N=Buffer.alloc(x.span);return x.encode({instruction:1,nonce:P,openTime:A,coinAmount:h,pcAmount:T},N),{instruction:new Et({keys:R,programId:r,data:N}),instructionType:V.AmmV4CreatePool}}function Fk(r){let e=L([_("instruction"),_("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[k({pubkey:new be(r.id),isWritable:!1}),k({pubkey:new be(r.authority),isWritable:!1}),k({pubkey:new be(r.openOrders),isWritable:!1}),k({pubkey:new be(r.vault.A),isWritable:!1}),k({pubkey:new be(r.vault.B),isWritable:!1}),k({pubkey:new be(r.mintLp.address),isWritable:!1}),k({pubkey:new be(r.marketId),isWritable:!1}),k({pubkey:new be(r.marketEventQueue),isWritable:!1})];return new Et({programId:new be(r.programId),keys:n,data:t})}function Ud({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},i){let o=fe(r),s=Buffer.alloc(_o.span);_o.encode({instruction:9,amountIn:U(t),minAmountOut:U(n)},s);let a=[k({pubkey:ur,isWritable:!1}),k({pubkey:o.id}),k({pubkey:o.authority,isWritable:!1}),k({pubkey:o.openOrders})];return i===4&&a.push(k({pubkey:o.targetOrders})),a.push(k({pubkey:o.vault.A}),k({pubkey:o.vault.B})),i===5&&a.push(k({pubkey:Kn})),a.push(k({pubkey:o.marketProgramId,isWritable:!1}),k({pubkey:o.marketId}),k({pubkey:o.marketBids}),k({pubkey:o.marketAsks}),k({pubkey:o.marketEventQueue}),k({pubkey:o.marketBaseVault}),k({pubkey:o.marketQuoteVault}),k({pubkey:o.marketAuthority,isWritable:!1}),k({pubkey:e.tokenAccountIn}),k({pubkey:e.tokenAccountOut}),k({pubkey:e.owner,isWritable:!1})),new Et({programId:o.programId,keys:a,data:s})}function Gd({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},i){let o=fe(r),s=Buffer.alloc(Vo.span);Vo.encode({instruction:11,maxAmountIn:U(t),amountOut:U(n)},s);let a=[k({pubkey:Do.programId,isWritable:!1}),k({pubkey:o.id}),k({pubkey:o.authority,isWritable:!1}),k({pubkey:o.openOrders}),k({pubkey:o.targetOrders}),k({pubkey:o.vault.A}),k({pubkey:o.vault.B})];return i===5&&a.push(k({pubkey:Kn})),a.push(k({pubkey:o.marketProgramId,isWritable:!1}),k({pubkey:o.marketId}),k({pubkey:o.marketBids}),k({pubkey:o.marketAsks}),k({pubkey:o.marketEventQueue}),k({pubkey:o.marketBaseVault}),k({pubkey:o.marketQuoteVault}),k({pubkey:o.marketAuthority,isWritable:!1}),k({pubkey:e.tokenAccountIn}),k({pubkey:e.tokenAccountOut}),k({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Et({programId:o.programId,keys:a,data:s})}function ai(r){let{poolKeys:e,version:t,userKeys:n,amountIn:i,amountOut:o,fixedSide:s}=r;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return Ud(D(M({},a),{amountIn:i,minAmountOut:o}),t);if(s==="out")return Gd(D(M({},a),{maxAmountIn:i,amountOut:o}),t);Za.logWithError("invalid params","params",r)}throw Za.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function vk({poolKeys:r,userKeys:e,startTime:t}){let n=Buffer.alloc(Eo.span);Eo.encode({instruction:0,nonce:5,startTime:U(t)},n);let i=fe(r),o=[k({pubkey:ur,isWritable:!1}),k({pubkey:Do.programId,isWritable:!1}),k({pubkey:qd,isWritable:!1}),k({pubkey:i.id}),k({pubkey:i.authority,isWritable:!1}),k({pubkey:i.openOrders}),k({pubkey:i.mintLp.address}),k({pubkey:i.mintA.address,isWritable:!1}),k({pubkey:i.mintB.address,isWritable:!1}),k({pubkey:i.vault.A,isWritable:!1}),k({pubkey:i.vault.B,isWritable:!1}),k({pubkey:i.id}),k({pubkey:i.targetOrders}),k({pubkey:e.lpTokenAccount}),k({pubkey:i.id,isWritable:!1}),k({pubkey:i.marketProgramId,isWritable:!1}),k({pubkey:i.marketId,isWritable:!1}),k({pubkey:e.payer,isSigner:!0})];return new Et({programId:i.programId,keys:o,data:n})}function eu({poolKeys:r}){let e=L([_("instruction"),_("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[k({pubkey:new be(r.id),isWritable:!1}),k({pubkey:new be(r.authority),isWritable:!1}),k({pubkey:new be(r.openOrders),isWritable:!1}),k({pubkey:new be(r.vault.A),isWritable:!1}),k({pubkey:new be(r.vault.B),isWritable:!1}),k({pubkey:new be(r.mintLp.address),isWritable:!1}),k({pubkey:new be(r.marketId),isWritable:!1}),k({pubkey:new be(r.marketEventQueue),isWritable:!1})];return{instruction:new Et({programId:new be(r.programId),keys:n,data:t})}}import{TOKEN_PROGRAM_ID as qe,TOKEN_2022_PROGRAM_ID as Jt,ASSOCIATED_TOKEN_PROGRAM_ID as bu}from"@solana/spl-token";import{PublicKey as v,TransactionInstruction as Pt,SystemProgram as Cn,Keypair as jo}from"@solana/web3.js";import gu from"bn.js";import tp from"bn.js";function tu(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function Dk(r){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,r,!1),new Uint8Array(e)}function qk(r){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,r,!1),new Uint8Array(e)}function ui(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function Uo(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function Go(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function cr(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function nu(r,e){return cr(r,e)?null:Uo(r,e)}function ru(r,e){return cr(r,e)?null:Go(r,e)}var Xd=Buffer.from("amm_config","utf8"),zd=Buffer.from("pool","utf8"),Yd=Buffer.from("pool_vault","utf8"),Qd=Buffer.from("pool_reward_vault","utf8"),iu=Buffer.from("position","utf8"),Hd=Buffer.from("tick_array","utf8"),jd=Buffer.from("operation","utf8"),Zd=Buffer.from("pool_tick_array_bitmap_extension","utf8");function zk(r,e){return oe([Xd,tu(e)],r)}function ou(r,e,t,n){return oe([zd,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Xo(r,e,t){return oe([Yd,e.toBuffer(),t.toBuffer()],r)}function su(r,e,t){return oe([Qd,e.toBuffer(),t.toBuffer()],r)}function ge(r,e,t){return oe([Hd,e.toBuffer(),ui(t)],r)}function mn(r,e,t,n){return oe([iu,e.toBuffer(),ui(t),ui(n)],r)}function ct(r,e){return oe([iu,e.toBuffer()],r)}function ci(r){return oe([Buffer.from("metadata","utf8"),Pn.toBuffer(),r.toBuffer()],Pn)}function lr(r){return oe([jd],r)}function lt(r,e){return oe([Zd,e.toBuffer()],r)}import Kt from"bn.js";var me=new Kt(0),at=new Kt(1),Ft=new Kt(-1),ut=new Kt(1).shln(64),li=new Kt(1).shln(128),zo=ut.sub(at),mr=64,au=li.subn(1),Qe=-443636,et=-Qe,Ct=new Kt("4295048016"),Rt=new Kt("79226673521066979257578248091"),uu=16,cu="59543866431248",lu="184467440737095516",mu="15793534762490258745",mi=new Kt(10).pow(new Kt(6)),$d=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))($d||{}),Hk={[500]:10,[3e3]:60,[1e4]:200},jk={version:6,liquidity:me,tickCurrent:0,observationIndex:0,observationUpdateDuration:0,feeGrowthGlobalX64A:me,feeGrowthGlobalX64B:me,protocolFeesTokenA:me,protocolFeesTokenB:me,swapInAmountTokenA:me,swapOutAmountTokenB:me,swapInAmountTokenB:me,swapOutAmountTokenA:me,tickArrayBitmap:[],rewardInfos:[],day:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},week:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},month:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},tvl:0},du={tvl:0,volumeQuote:0,mintAmountA:0,mintAmountB:0,rewardDefaultInfos:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,day:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},week:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},month:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},pooltype:[]},Zk=new Kt("18446744073700000000");var Jd=15,le=class{static async getTickArrays(e,t,n,i,o,s,a){let u=[],c=G.getTickArrayStartIndexByTick(i,o),l=G.getInitializedTickArrayInRange(s,a,o,c,Math.floor(Jd/2));for(let d=0;d<l.length;d++){let{publicKey:y}=ge(t,n,l[d]);u.push(y)}let m=(await It(e,u)).map(d=>d!==null?dr.decode(d.data):null),p={};for(let d=0;d<u.length;d++){let y=m[d];y!==null&&(p[y.startTickIndex]=D(M({},y),{address:u[d]}))}return p}static nextInitializedTick(e,t,n,i,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,i,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=G.getNextTickArrayStartIndex(c,o,s),this.checkIsValidStartIndex(c,o))throw new Error("No enough initialized tickArray");let l=n[c];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:p,tickArrayStartTickIndex:d}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,p,d]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,i,o){let s=Math.floor(e/le.tickCount(t)),a=n?G.searchLowBitFromStart(i,o,s-1,1,t):G.searchHightBitFromStart(i,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,i){let o;if(i){let a=_e-1;for(;a>=0;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a-1}}else{let a=0;for(;a<_e;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=ge(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=G.getTickArrayStartIndexByTick(i,o),u=Math.floor((i-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u-1}else for(u=u+1;u<_e;){let p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u+1}let{publicKey:m}=ge(e,t,a);return{initializedTick:l,tickArrayAddress:m,tickArrayStartTickIndex:c.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(G.checkIsOutOfBoundary(e)){if(e>et)return!1;let n=G.getTickArrayStartIndexByTick(Qe,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return _e*e}};import re from"bn.js";import{PublicKey as $t}from"@solana/web3.js";import Ce from"bn.js";var Yo=14,vt=class{static maxTickInTickarrayBitmap(e){return e*_e*dn}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(i+=1);let o=n*i;return e<0?{minValue:-o,maxValue:-o+n}:{minValue:o,maxValue:o+n}}static nextInitializedTickArrayStartIndex(e,t,n,i){if(!le.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-le.tickCount(n):t+le.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*_e,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(i){let l=e.shln(1024-c-1),m=nu(1024,l);if(m!==null){let p=(c-m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=ru(1024,l);if(m!==null){let p=(c+m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:o-le.tickCount(n)}}}},pr=class{static getBitmapOffset(e,t){if(!le.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=vt.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&i--,i}static getBitmap(e,t,n){let i=this.getBitmapOffset(e,t);return e<0?{offset:i,tickarrayBitmap:n.negativeTickArrayBitmap[i]}:{offset:i,tickarrayBitmap:n.positiveTickArrayBitmap[i]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:i}=this.extensionTickBoundary(t);if(e>=i&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=vt.maxTickInTickarrayBitmap(e),n=-t;if(et<=t)throw Error(`extensionTickBoundary check error: ${et}, ${t}`);if(n<=Qe)throw Error(`extensionTickBoundary check error: ${n}, ${Qe}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:i}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:G.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=le.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,i);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,i){let{minValue:o,maxValue:s}=vt.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let u=G.mergeTickArrayBitmap(e).shln(dn-1-a),c=cr(512,u)?null:Uo(512,u);if(c!==null){let l=t-c*le.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=G.mergeTickArrayBitmap(e).shrn(a),c=cr(512,u)?null:Go(512,u);if(c!==null){let l=t+c*le.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-le.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%vt.maxTickInTickarrayBitmap(t),i=Math.floor(n/le.tickCount(t));return e<0&&n!=0&&(i=dn-i),i}};import Lt from"bn.js";var fr=class{static getfeeGrowthInside(e,t,n){let i=new Lt(0),o=new Lt(0);e.tickCurrent>=t.tick?(i=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(i=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),o=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new Lt(0),a=new Lt(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let u=$.wrappingSubU128($.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),c=$.wrappingSubU128($.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=$.mulDivFloor($.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,ut),u=t.tokenFeesOwedA.add(a),c=$.mulDivFloor($.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,ut),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=$.mulDivFloor($.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,ut),u=t.tokenFeesOwedA.add(a),c=$.mulDivFloor($.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,ut),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,i){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=$.wrappingSubU128(u,c.growthInsideLastX64),m=$.mulDivFloor(l,t.liquidity,ut),p=c.rewardAmountOwed.add(m);o.push(p)}return o}static GetPositionRewards(e,t,n,i){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=$.wrappingSubU128(u,c.growthInsideLastX64),m=$.mulDivFloor(l,t.liquidity,ut),p=c.rewardAmountOwed.add(m);o.push(p)}return o}static getRewardGrowthInside(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Lt(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Lt(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push($.wrappingSubU128($.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Lt(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Lt(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push($.wrappingSubU128($.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:o,epochInfo:s}){var b,g,P,A;let a=Z.priceToSqrtPriceX64(new F(e.price),e.mintA.decimals,e.mintB.decimals),u=Z.getSqrtPriceX64FromTick(t.tickLower),c=Z.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+i:1-i,m=ce.getAmountsFromLiquidity(a,u,c,n,o),[p,d]=[Ae(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),Ae(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[y,f]=[Ae(new Lt(new F(m.amountA.toString()).mul(l).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,s,!0),Ae(new Lt(new F(m.amountB.toString()).mul(l).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,s,!0)];return{liquidity:n,amountA:p,amountB:d,amountSlippageA:y,amountSlippageB:f,expirationTime:sn(p.expirationTime,d.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as pu}from"@solana/spl-token";var He=class{static getOutputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintA.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");a.push(l);let{amountCalculated:m,accounts:p,sqrtPriceX64:d,feeAmount:y}=pn.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,c,o);return a.push(...p),{expectedAmountOut:m.mul(Ft),remainingAccounts:a,executionPrice:d,feeAmount:y}}static getInputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:b}=ge(e.programId,e.id,f.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:m,accounts:p,sqrtPriceX64:d,feeAmount:y}=pn.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(Ft),c,o);return a.push(...p),{expectedAmountIn:m,remainingAccounts:a,executionPrice:d,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=He.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?pr.checkTickArrayIsInit(le.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):G.checkTickArrayIsInitialized(G.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=ge(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,le.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=ge(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/le.tickCount(e.tickSpacing)),i=t?G.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):G.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return i.length>0?{isExist:!0,nextStartIndex:i[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=le.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=vt.nextInitializedTickArrayStartIndex(G.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=pr.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Qe||t>et)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],p=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(p===void 0)throw Error("get new reward mint info error");let d=D(M({},m),{perSecond:$.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new $t(p)});if(d.tokenMint.equals($t.default))continue;if(n<=d.openTime.toNumber()||i.eq(me)){s.push(d);continue}let y=new Ce(Math.min(d.endTime.toNumber(),n)),f=y.sub(d.lastUpdateTime),b=$.mulDivFloor(f,d.emissionsPerSecondX64,i),g=d.rewardGrowthGlobalX64.add(b),P=$.mulDivFloor(f,d.emissionsPerSecondX64,ut),A=d.rewardTotalEmissioned.add(P);s.push(D(M({},d),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:A,lastUpdateTime:y}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let o of t){let s=G.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=vt.maxTickInTickarrayBitmap(e),n=-t;return t>et&&(t=le.getArrayStartIndex(et,e)+le.tickCount(e)),n<Qe&&(n=le.getArrayStartIndex(Qe,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!le.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/le.tickCount(t)*dn}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await hn(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=fu.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let i={},o=[];for(let u of t){let c=G.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=G.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:p}=ge(u.programId,u.id,m);o.push({pubkey:p}),i[p.toString()]=u.id}}let s=await hn(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=i[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=dr.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=D(M({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:i=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(p=>p.accountInfo.mint),c=[];for(let p of u)for(let d of s)c.push(ct(d,p).publicKey);let l=await It(t,c,{batchRequest:i}),m={};for(let p of l){if(p===null)continue;let d=pi.decode(p.data),y=d.poolId.toString(),f=e.find(x=>x.state.id.toBase58()===y);if(f===void 0)continue;let b=f.state,g=G._getTickPriceLegacy({poolInfo:b,tick:d.tickLower,baseIn:!0}),P=G._getTickPriceLegacy({poolInfo:b,tick:d.tickUpper,baseIn:!0}),{amountA:A,amountB:h}=ce.getAmountsFromLiquidity(b.sqrtPriceX64,g.tickSqrtPriceX64,P.tickSqrtPriceX64,d.liquidity,!1),T=1/(1-Math.sqrt(Math.sqrt(g.price.div(P.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:d.poolId,nftMint:d.nftMint,priceLower:g.price,priceUpper:P.price,amountA:A,amountB:h,tickLower:d.tickLower,tickUpper:d.tickUpper,liquidity:d.liquidity,feeGrowthInsideLastX64A:d.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:d.feeGrowthInsideLastX64B,tokenFeesOwedA:d.tokenFeesOwedA,tokenFeesOwedB:d.tokenFeesOwedB,rewardInfos:d.rewardInfos.map(x=>D(M({},x),{pendingReward:new Ce(0)})),leverage:T,tokenFeeAmountA:new Ce(0),tokenFeeAmountB:new Ce(0)}];let I=await G.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickLower,f.state.tickSpacing),B=await G.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickLower}`]=I,m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickUpper}`]=B}if(o){let p=Object.values(m),d=await It(t,p,{batchRequest:i}),y={};for(let f=0;f<p.length;f++){let b=d[f];if(b===null)continue;let g=p[f].toString();y[g]=dr.decode(b.data)}for(let{state:f,positionAccount:b}of e)if(!!b)for(let g of b){let P=`${f.programId.toString()}-${f.id.toString()}-${g.tickLower}`,A=`${f.programId.toString()}-${f.id.toString()}-${g.tickUpper}`,h=y[m[P].toString()],T=y[m[A].toString()],I=h.ticks[G.getTickOffsetInArray(g.tickLower,f.tickSpacing)],B=T.ticks[G.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:R}=await fr.GetPositionFees(f,g,I,B),N=await fr.GetPositionRewards(f,g,I,B);g.tokenFeeAmountA=x.gte(new Ce(0))?x:new Ce(0),g.tokenFeeAmountB=R.gte(new Ce(0))?R:new Ce(0);for(let E=0;E<N.length;E++)g.rewardInfos[E].pendingReward=N[E].gte(new Ce(0))?N[E]:new Ce(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:o,slippage:s,priceLimit:a=new F(0)}){var N;let u,c=n.toBase58()===e.mintA.address,[l,m]=c?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new F(0))?u=c?Ct.add(new Ce(1)):Rt.sub(new Ce(1)):u=Z.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=Ae(o,l,i,!1),{expectedAmountOut:d,remainingAccounts:y,executionPrice:f,feeAmount:b}=He.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((N=p.fee)!=null?N:me),u),g=Ae(d,m,i,!1),P=Z.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),A=c?P:new F(1).div(P),h=d.mul(new Ce(Math.floor((1-s)*1e10))).div(new Ce(1e10)),T=Ae(h,m,i,!1),I=c?e.currentPrice:new F(1).div(e.currentPrice),B=new F(A).sub(I).abs(),x=I,R=new ve(new F(B).mul(10**15).toFixed(0),new F(x).mul(10**15).toFixed(0));return{realAmountIn:p,amountOut:g,minAmountOut:T,expirationTime:sn(p.expirationTime,g.expirationTime),currentPrice:e.currentPrice,executionPrice:A,priceImpact:R,fee:b,remainingAccounts:y}}static async computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:i,slippage:o,epochInfo:s}){let a=i.address===e.mintB.address,[u,c]=a?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,m]=[new de(D(M({},u),{mint:u.address,isToken2022:u.programId===pu.toBase58()})),new de(D(M({},c),{mint:c.address,isToken2022:c.programId===pu.toBase58()}))],{realAmountIn:p,amountOut:d,minAmountOut:y,expirationTime:f,currentPrice:b,executionPrice:g,priceImpact:P,fee:A,remainingAccounts:h}=await He.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new $t(u.address),amountIn:n,slippage:o,epochInfo:s}),T=D(M({},p),{amount:new he(l,p.amount),fee:p.fee===void 0?void 0:new he(l,p.fee)}),I=D(M({},d),{amount:new he(m,d.amount),fee:d.fee===void 0?void 0:new he(m,d.fee)}),B=D(M({},y),{amount:new he(m,y.amount),fee:y.fee===void 0?void 0:new he(m,y.fee)}),x=new Ge({baseToken:l,denominator:new Ce(10).pow(new Ce(20+l.decimals)),quoteToken:m,numerator:b.mul(new F(10**(20+m.decimals))).toFixed(0)}),R=new Ge({baseToken:l,denominator:new Ce(10).pow(new Ce(20+l.decimals)),quoteToken:m,numerator:g.mul(new F(10**(20+m.decimals))).toFixed(0)}),N=new he(l,A);return{realAmountIn:T,amountOut:I,minAmountOut:B,expirationTime:f,currentPrice:x,executionPrice:R,priceImpact:P,fee:N,remainingAccounts:h}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var y,f,b;let o=e[t],s=G.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=G.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,m=a-s,p=o.priceMax-o.priceMin,d;return l<=0?d=0:m===l?d=p/l:p===l?d=l/m:d=l/p*(l/m),{feeApr:o.feeApr*d,rewardsApr:[(y=o.rewardApr[0])!=null?y:0*d,(f=o.rewardApr[1])!=null?f:0*d,(b=o.rewardApr[2])!=null?b:0*d],apr:o.apr*d}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:i,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=i[Fi(e.mintA.address).toString()],p=i[Fi(e.mintB.address).toString()],d=e.mintA.decimals,y=e.mintB.decimals;if(!l||!m||!p)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=Z.priceToSqrtPriceX64(new F(e.price),e.mintA.decimals,e.mintB.decimals),b=Z.getSqrtPriceX64FromTick(s),g=Z.getSqrtPriceX64FromTick(a),{amountSlippageA:P,amountSlippageB:A}=ce.getAmountsFromLiquidityWithSlippage(f,b,g,t,!1,!1,0),{amountSlippageA:h,amountSlippageB:T}=ce.getAmountsFromLiquidityWithSlippage(f,b,g,o,!1,!1,0),I=new F(P.toString()).div(new F(10).pow(d)).mul(m.value).add(new F(A.toString()).div(new F(10).pow(y)).mul(p.value)),B=new F(h.toString()).div(new F(10).pow(d)).mul(m.value).add(new F(T.toString()).div(new F(10).pow(y)).mul(p.value)),x=B.div(I.add(B)).div(B),N=new F(l.volumeFee).mul(365).div(c).mul(x).mul(100).toNumber(),E=3600*24*365,Q=e.rewardDefaultInfos.map(W=>{var se,ft;let j=W.mint.decimals,ee=i[W.mint.address];return u<((se=W.startTime)!=null?se:0)||u>((ft=W.endTime)!=null?ft:0)||!W.perSecond||!ee||j===void 0?0:new F(ee.value).mul(new F(W.perSecond).mul(E)).div(new F(10).pow(j)).mul(x).mul(100).toNumber()});return{feeApr:N,rewardsApr:Q,apr:N+Q.reduce((W,j)=>W+j,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var g,P;let l=Z.priceToSqrtPriceX64(new F(e.price),e.mintA.decimals,e.mintB.decimals),m=Z.getSqrtPriceX64FromTick(n),p=Z.getSqrtPriceX64FromTick(i),d=a?1-s:1+s,y=Ae(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,u,!c),f=new Ce(new F(y.amount.sub((P=y.fee)!=null?P:me).toString()).mul(d).toFixed(0)),b;if(l.lte(m))b=t?ce.getLiquidityFromTokenAmountA(m,p,f,!a):new Ce(0);else if(l.lte(p)){let A=ce.getLiquidityFromTokenAmountA(l,p,f,!a),h=ce.getLiquidityFromTokenAmountB(m,l,f);b=t?A:h}else b=t?new Ce(0):ce.getLiquidityFromTokenAmountB(m,p,f);return He.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:i,liquidity:b,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:o,slippage:s,add:a}){var b,g,P,A;let u=Z.getSqrtPriceX64FromTick(n),c=Z.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,m=ce.getAmountsFromLiquidity(Z.priceToSqrtPriceX64(new F(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[p,d]=[Ae(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),Ae(m.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[y,f]=[Ae(m.amountA.muln(l),(P=t.mintA.extensions)==null?void 0:P.feeConfig,e,!0),Ae(m.amountB.muln(l),(A=t.mintB.extensions)==null?void 0:A.feeConfig,e,!0)];return{liquidity:o,amountA:p,amountB:d,amountSlippageA:y,amountSlippageB:f,expirationTime:sn(p.expirationTime,d.expirationTime)}}static async fetchComputeClmmInfo({owner:e,connection:t,poolInfo:n}){let i=await t.getAccountInfo(new $t(n.id));if(!i)throw new Error(`pool not found ${n.id}`);let o=di.decode(i.data),s=lt(e,new $t(n.id)).publicKey,a=await He.fetchExBitmaps({connection:t,exBitmapAddress:[s],batchRequest:!1});return D(M({},o),{id:new $t(n.id),programId:new $t(n.programId),mintA:n.mintA,mintB:n.mintB,ammConfig:D(M({},n.config),{id:new $t(n.config.id),fundOwner:""}),currentPrice:new F(n.price),exBitmapInfo:a[s.toBase58()],startTime:o.startTime.toNumber()})}};function Vh({poolInfo:r,tickLower:e,tickUpper:t,amountA:n,amountB:i,slippage:o,add:s,epochInfo:a,amountHasFee:u}){var A,h,T,I;let[c,l,m,p]=e<t?[e,t,n,i]:[t,e,i,n],d=Z.priceToSqrtPriceX64(new F(r.price),r.mintA.decimals,r.mintB.decimals),y=Z.getSqrtPriceX64FromTick(c),f=Z.getSqrtPriceX64FromTick(l),[b,g]=[Ae(m,(A=r.mintA.extensions)==null?void 0:A.feeConfig,a,!u),Ae(p,(h=r.mintB.extensions)==null?void 0:h.feeConfig,a,!u)],P=ce.getLiquidityFromTokenAmounts(d,y,f,b.amount.sub((T=b.fee)!=null?T:me),g.amount.sub((I=g.fee)!=null?I:me));return ce.getAmountsOutFromLiquidity({poolInfo:r,tickLower:e,tickUpper:t,liquidity:P,slippage:o,add:s,epochInfo:a,amountAddFee:!u})}var $=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(me)||(o=o.add(at)),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(at)).div(n)}static x64ToDecimal(e,t){return new F(e.toString()).div(F.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new re(e.mul(F.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(li).sub(t).mod(li)}};function Ee(r,e){return Qo(r.mul(e),64,256)}function ep(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Qo(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var Z=class{static sqrtPriceX64ToPrice(e,t,n){return $.x64ToDecimal(e).pow(2).mul(F.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return $.decimalToX64(e.mul(F.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){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 i?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,i){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 i?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,i){if(n.eq(me))return e;let o=t.shln(mr);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?$.mulDivCeil(s,e,a):$.mulDivRoundingUp(s,at,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 $.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(mr);if(i)return e.add(o.div(t));{let s=$.mulDivRoundingUp(o,at,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<Qe||e>et)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new re("18445821805675395072"):new re("18446744073709551616");return(t&2)!=0&&(n=Ee(n,new re("18444899583751176192"))),(t&4)!=0&&(n=Ee(n,new re("18443055278223355904"))),(t&8)!=0&&(n=Ee(n,new re("18439367220385607680"))),(t&16)!=0&&(n=Ee(n,new re("18431993317065453568"))),(t&32)!=0&&(n=Ee(n,new re("18417254355718170624"))),(t&64)!=0&&(n=Ee(n,new re("18387811781193609216"))),(t&128)!=0&&(n=Ee(n,new re("18329067761203558400"))),(t&256)!=0&&(n=Ee(n,new re("18212142134806163456"))),(t&512)!=0&&(n=Ee(n,new re("17980523815641700352"))),(t&1024)!=0&&(n=Ee(n,new re("17526086738831433728"))),(t&2048)!=0&&(n=Ee(n,new re("16651378430235570176"))),(t&4096)!=0&&(n=Ee(n,new re("15030750278694412288"))),(t&8192)!=0&&(n=Ee(n,new re("12247334978884435968"))),(t&16384)!=0&&(n=Ee(n,new re("8131365268886854656"))),(t&32768)!=0&&(n=Ee(n,new re("3584323654725218816"))),(t&65536)!=0&&(n=Ee(n,new re("696457651848324352"))),(t&131072)!=0&&(n=Ee(n,new re("26294789957507116"))),(t&262144)!=0&&(n=Ee(n,new re("37481735321082"))),e>0&&(n=au.div(n)),n}static getTickFromPrice(e,t,n){return Z.getTickFromSqrtPriceX64(Z.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Rt)||e.lt(Ct))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new re(t-64),i=ep(n,32,128),o=new re("8000000000000000","hex"),s=0,a=new re(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new re(0))&&s<uu;){u=u.mul(u);let y=u.shrn(127);u=u.shrn(63+y.toNumber()),a=a.add(o.mul(y)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=i.add(c).mul(new re(cu)),p=Qo(m.sub(new re(lu)),64,128).toNumber(),d=Qo(m.add(new re(mu)),64,128).toNumber();return p==d?p:Z.getSqrtPriceX64FromTick(d).lte(e)?d:p}},fn=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=Z.getTickFromSqrtPriceX64(Z.priceToSqrtPriceX64(e,n,i))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,i){let o=fn.getTickWithPriceAndTickspacing(e,t,n,i),s=Z.getSqrtPriceX64FromTick(o);return Z.sqrtPriceX64ToPrice(s,n,i)}},ce=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(me))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(mr),s=t.sub(e);return i?$.mulDivRoundingUp($.mulDivCeil(o,s,t),at,e):$.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(me))throw new Error("sqrtPriceX64A must greater than 0");return i?$.mulDivCeil(n,t.sub(e),ut):$.mulDivFloor(n,t.sub(e),ut)}static getLiquidityFromTokenAmountA(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return i?$.mulDivRoundingUp(a,at,zo):a.shrn(mr)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),$.mulDivFloor(n,zo,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return ce.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=ce.getLiquidityFromTokenAmountA(e,n,i,!1),a=ce.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return ce.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:ce.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new re(0)};if(e.lt(n)){let s=ce.getTokenAmountAFromLiquidity(e,n,i,o),a=ce.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new re(0),amountB:ce.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:u,amountB:c}=ce.getAmountsFromLiquidity(e,t,n,i,s),l=o?1+a:1-a,m=new re(new F(u.toString()).mul(l).toFixed(0)),p=new re(new F(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:p}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:i,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var P,A,h,T;let c=Z.priceToSqrtPriceX64(new F(e.price),e.mintA.decimals,e.mintB.decimals),l=Z.getSqrtPriceX64FromTick(t),m=Z.getSqrtPriceX64FromTick(n),p=s?1+o:1-o,d=ce.getAmountsFromLiquidity(c,l,m,i,s),[y,f]=[Ae(d.amountA,(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,u),Ae(d.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)],[b,g]=[Ae(new re(new F(d.amountA.toString()).mul(p).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,u),Ae(new re(new F(d.amountB.toString()).mul(p).toFixed(0)),(T=e.mintB.extensions)==null?void 0:T.feeConfig,a,u)];return{liquidity:i,amountA:y,amountB:f,amountSlippageA:b,amountSlippageB:g,expirationTime:sn(y.expirationTime,f.expirationTime)}}},pn=class{static swapCompute(e,t,n,i,o,s,a,u,c,l,m,p,d,y){if(p.eq(me))throw new Error("amountSpecified must not be 0");if(y||(y=s?Ct.add(at):Rt.sub(at)),s){if(y.lt(Ct))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(y.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(y.gt(Rt))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(y.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let f=p.gt(me),b={amountSpecifiedRemaining:p,amountCalculated:me,sqrtPriceX64:m,tick:c>d?Math.min(d+le.tickCount(l)-1,c):d,accounts:[],liquidity:u,feeAmount:new re(0)},g=d,P=n[d],A=0,h=!s&&P.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(me)&&!b.sqrtPriceX64.eq(y);){if(A>10)throw Error("liquidity limit");let T={};T.sqrtPriceStartX64=b.sqrtPriceX64;let I=G.nextInitTick(P,b.tick,l,s,h),B=I||null,x=null;if(!(B!=null&&B.liquidityGross.gtn(0))){let N=He.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},g,s);if(!N.isExist)throw Error("swapCompute LiquidityInsufficient");g=N.nextStartIndex;let{publicKey:E}=ge(e,t,g);x=E,P=n[g],B=G.firstInitializedTick(P,s)}T.tickNext=B.tick,T.initialized=B.liquidityGross.gtn(0),d!==g&&x&&(b.accounts.push(x),d=g),T.tickNext<Qe?T.tickNext=Qe:T.tickNext>et&&(T.tickNext=et),T.sqrtPriceNextX64=Z.getSqrtPriceX64FromTick(T.tickNext);let R;if(s&&T.sqrtPriceNextX64.lt(y)||!s&&T.sqrtPriceNextX64.gt(y)?R=y:R=T.sqrtPriceNextX64,[b.sqrtPriceX64,T.amountIn,T.amountOut,T.feeAmount]=pn.swapStepCompute(b.sqrtPriceX64,R,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(T.feeAmount),f?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(T.amountIn.add(T.feeAmount)),b.amountCalculated=b.amountCalculated.sub(T.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(T.amountOut),b.amountCalculated=b.amountCalculated.add(T.amountIn.add(T.feeAmount))),b.sqrtPriceX64.eq(T.sqrtPriceNextX64)){if(T.initialized){let N=B.liquidityNet;s&&(N=N.mul(Ft)),b.liquidity=ce.addDelta(b.liquidity,N)}h=T.tickNext!=b.tick&&!s&&P.startTickIndex===T.tickNext,b.tick=s?T.tickNext-1:T.tickNext}else if(b.sqrtPriceX64!=T.sqrtPriceStartX64){let N=Z.getTickFromSqrtPriceX64(b.sqrtPriceX64);h=N!=b.tick&&!s&&P.startTickIndex===N,b.tick=N}++A}try{let{nextStartIndex:T,isExist:I}=le.nextInitializedTickArray(b.tick,l,s,i,o);I&&d!==T&&(b.accounts.push(ge(e,t,T).publicKey),d=T)}catch{}return{amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts}}static swapStepCompute(e,t,n,i,o){let s={sqrtPriceX64Next:new re(0),amountIn:new re(0),amountOut:new re(0),feeAmount:new re(0)},a=e.gte(t),u=i.gte(me);if(u){let l=$.mulDivFloor(i,mi.sub(new re(o.toString())),mi);s.amountIn=a?ce.getTokenAmountAFromLiquidity(t,e,n,!0):ce.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=Z.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?ce.getTokenAmountBFromLiquidity(t,e,n,!1):ce.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(Ft).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=Z.getNextSqrtPriceX64FromOutput(e,n,i.mul(Ft),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=ce.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=ce.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:ce.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:ce.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(i.mul(Ft))&&(s.amountOut=i.mul(Ft)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=i.sub(s.amountIn):s.feeAmount=$.mulDivCeil(s.amountIn,new re(o),mi.sub(new re(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var _e=60,dn=512,G=class{static getTickArrayAddressByTick(e,t,n,i){let o=G.getTickArrayStartIndexByTick(n,i),{publicKey:s}=ge(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=G.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=_e)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=le.tickCount(t),i=e/n;return e<0&&e%n!=0?i=Math.ceil(i)-1:i=Math.floor(i),i}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*le.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*_e,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*_e,o=Math.floor(t/i)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*i}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*_e:e+t*_e}static mergeTickArrayBitmap(e){let t=new tp(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,i,o){let s=Math.floor(i/(n*_e));return[...G.searchLowBitFromStart(e,t,s-1,o,n),...G.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return G.searchHightBitFromStart(e,t,0,dn,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=G.getAllInitializedTickArrayStartIndex(n,i,o);for(let u of a){let{publicKey:c}=ge(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>G.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n--,a.length===i)break}let u=le.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>G.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n++,a.length===i)break}let u=le.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<Qe||e>et}static nextInitTick(e,t,n,i,o){if(le.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(i)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<_e;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=_e-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<_e;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let i=Z.getSqrtPriceX64FromTick(t),o=Z.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new F(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new F(1).div(t),o=fn.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=Z.getSqrtPriceX64FromTick(o),a=Z.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new F(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=Z.getSqrtPriceX64FromTick(t),o=Z.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new F(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new F(1).div(t),o=fn.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=Z.getSqrtPriceX64FromTick(o),a=Z.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new F(1).div(a)}}};var sT=L([pe(8),_("bump"),Bt("index"),S(""),ze("protocolFeeRate"),ze("tradeFeeRate"),Bt("tickSpacing"),q(w(),8,"")]),np=L([ze("blockTimestamp"),z("sqrtPriceX64"),z("cumulativeTimePriceX64"),q(z(),1,"")]),Ho=L([pe(8),De("initialized"),S("poolId"),q(np,1e3,"observations"),q(z(),5,"")]),rp=L([_("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),z("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),S("tokenMint"),S("tokenVault"),S("creator"),z("rewardGrowthGlobalX64")]),di=L([pe(8),_("bump"),S("ammConfig"),S("creator"),S("mintA"),S("mintB"),S("vaultA"),S("vaultB"),S("observationId"),_("mintDecimalsA"),_("mintDecimalsB"),Bt("tickSpacing"),z("liquidity"),z("sqrtPriceX64"),We("tickCurrent"),Bt("observationIndex"),Bt("observationUpdateDuration"),z("feeGrowthGlobalX64A"),z("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),z("swapInAmountTokenA"),z("swapOutAmountTokenB"),z("swapInAmountTokenB"),z("swapOutAmountTokenA"),_("status"),q(_(),7,""),q(rp,3,"rewardInfos"),q(w(),16,"tickArrayBitmap"),w("totalFeesTokenA"),w("totalFeesClaimedTokenA"),w("totalFeesTokenB"),w("totalFeesClaimedTokenB"),w("fundFeesTokenA"),w("fundFeesTokenB"),w("startTime"),q(w(),15*4-3,"padding")]),ip=L([z("growthInsideLastX64"),w("rewardAmountOwed")]),pi=L([pe(8),_("bump"),S("nftMint"),S("poolId"),We("tickLower"),We("tickUpper"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(ip,3,"rewardInfos"),q(w(),8,"")]),aT=L([pe(8),_("bump"),S("poolId"),We("tickLowerIndex"),We("tickUpperIndex"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(z(),3,"rewardGrowthInside"),q(w(),8,"")]),op=L([We("tick"),ba("liquidityNet"),z("liquidityGross"),z("feeGrowthOutsideX64A"),z("feeGrowthOutsideX64B"),q(z(),3,"rewardGrowthsOutsideX64"),q(ze(),13,"")]),dr=L([pe(8),S("poolId"),We("startTickIndex"),q(op,_e,"ticks"),_("initializedTickCount"),q(_(),115,"")]),yu=L([pe(329),q(S(),100,"whitelistMints")]),fu=L([pe(8),S("poolId"),q(q(w(),8),Yo,"positiveTickArrayBitmap"),q(q(w(),8),Yo,"negativeTickArrayBitmap")]);var wu=ae("Raydium_Clmm"),kt={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]},Be=class{static createPoolInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=L([z("sqrtPriceX64"),w("startTime")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:Cn.programId,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({sqrtPriceX64:d,startTime:y},g);let P=Buffer.from([...kt.createPool,...g]);return new Pt({keys:b,programId:e,data:P})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:i,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=Ye({fromPublicKey:i,programId:n}),[p,d]=[new v(o.address),new v(s.address)],y=[Cn.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Ho.span),space:Ho.span,programId:n})],{publicKey:f}=ou(n,a,p,d),{publicKey:b}=Xo(n,f,p),{publicKey:g}=Xo(n,f,d);return y.push(this.createPoolInstruction(n,f,i,a,m.publicKey,p,b,new v(o.programId||qe),d,g,new v(s.programId||qe),lt(n,f).publicKey,u,c)),{signers:[],instructions:y,instructionTypes:[V.CreateAccount,V.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:b,mintBVault:g},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P,A,h,T,I,B,x,R,N){let E=L([We("tickLowerIndex"),We("tickUpperIndex"),We("tickArrayLowerStartIndex"),We("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),De("withMetadata"),_("optionBaseFlag"),De("baseFlag")]),Q=[...N?[{pubkey:N,isSigner:!1,isWritable:!0}]:[]],W=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:Cn.programId,isSigner:!1,isWritable:!1},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:bu,isSigner:!1,isWritable:!1},{pubkey:Pn,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...Q],j=Buffer.alloc(E.span);E.encode({tickLowerIndex:P,tickUpperIndex:A,tickArrayLowerStartIndex:h,tickArrayUpperStartIndex:T,liquidity:I,amountMaxA:B,amountMaxB:x,withMetadata:R==="create",baseFlag:!1,optionBaseFlag:0},j);let ee=Buffer.from([...kt.openPosition,...j]);return new Pt({keys:W,programId:e,data:ee})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[p,d]=[new v(e.programId),new v(e.id)],y;if(l)y=new v((await l(1))[0]);else{let x=jo.generate();m.push(x),y=x.publicKey}let f=G.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=ge(p,d,f),{publicKey:P}=ge(p,d,b),{publicKey:A}=ye(n.wallet,y,qe),{publicKey:h}=ci(y),{publicKey:T}=ct(p,y),{publicKey:I}=mn(p,d,i,o),B=this.openPositionFromLiquidityInstruction(p,n.feePayer,d,n.wallet,y,A,h,I,g,P,T,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),i,o,f,b,s,a,u,c);return{signers:m,instructions:[B],instructionTypes:[V.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:A,metadataAccount:h,personalPosition:T,protocolPosition:I}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[p,d]=[new v(e.programId),new v(e.id)],y;if(l)y=new v((await l(1))[0]);else{let x=jo.generate();m.push(x),y=x.publicKey}let f=G.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=ge(p,d,f),{publicKey:P}=ge(p,d,b),{publicKey:A}=ye(n.wallet,y,qe),{publicKey:h}=ci(y),{publicKey:T}=ct(p,y),{publicKey:I}=mn(p,d,i,o),B=this.openPositionFromBaseInstruction(p,n.feePayer,d,n.wallet,y,A,h,I,g,P,T,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),i,o,f,b,c,s,a,u,He.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?lt(p,d).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:A,metadataAccount:h,personalPosition:T,protocolPosition:I},instructions:[B],signers:m,instructionTypes:[V.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P,A,h,T,I,B,x,R,N){let E=L([We("tickLowerIndex"),We("tickUpperIndex"),We("tickArrayLowerStartIndex"),We("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),De("withMetadata"),_("optionBaseFlag"),De("baseFlag")]),Q=[...N?[{pubkey:N,isSigner:!1,isWritable:!0}]:[]],W=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:Cn.programId,isSigner:!1,isWritable:!1},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:bu,isSigner:!1,isWritable:!1},{pubkey:Pn,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...Q],j=Buffer.alloc(E.span);E.encode({tickLowerIndex:P,tickUpperIndex:A,tickArrayLowerStartIndex:h,tickArrayUpperStartIndex:T,liquidity:new gu(0),amountMaxA:B==="MintA"?x:R,amountMaxB:B==="MintA"?R:x,withMetadata:I==="create",baseFlag:B==="MintA",optionBaseFlag:1},j);let ee=Buffer.from([...kt.openPosition,...j]);return new Pt({keys:W,programId:e,data:ee})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,p=[];if(l)m=new v((await l(1))[0]);else{let x=jo.generate();p.push(x),m=x.publicKey}let[d,y]=[new v(e.programId),new v(e.id)],f=G.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=ge(d,y,f),{publicKey:P}=ge(d,y,b),{publicKey:A}=ye(n.wallet,m,qe),{publicKey:h}=ci(m),{publicKey:T}=ct(d,m),{publicKey:I}=mn(d,y,i,o),B=this.openPositionFromLiquidityInstruction(d,n.wallet,y,n.wallet,m,A,h,I,g,P,T,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(t.mintA.address),new v(t.mintB.address),i,o,f,b,s,a,u,c,He.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?lt(d,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:A,metadataAccount:h,personalPosition:T,protocolPosition:I},instructions:[B],signers:p,instructionTypes:[V.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,o){let s=L([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:Cn.programId,isSigner:!1,isWritable:!1},{pubkey:qe,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...kt.closePosition,...u]);return new Pt({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i}){let o=new v(e.programId),{publicKey:s}=ye(n.wallet,i.nftMint,qe),{publicKey:a}=ct(o,i.nftMint),u=[];return u.push(this.closePositionInstruction(o,n.wallet,i.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:u,instructionTypes:[V.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P){let A=L([z("liquidity"),w("amountMaxA"),w("amountMaxB"),_("optionBaseFlag"),De("baseFlag")]),h=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...h],I=Buffer.alloc(A.span);A.encode({liquidity:f,amountMaxA:b,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},I);let B=Buffer.from([...kt.increaseLiquidity,...I]);return new Pt({keys:T,programId:e,data:B})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new v(e.programId),new v(e.id)],l=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=ge(u,c,l),{publicKey:d}=ge(u,c,m),{publicKey:y}=ye(i.wallet,n.nftMint,qe),{publicKey:f}=ct(u,n.nftMint),{publicKey:b}=mn(u,c,n.tickLower,n.tickUpper),g=this.increasePositionFromLiquidityInstruction(u,i.wallet,y,f,c,b,p,d,i.tokenAccountA,i.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),o,s,a,He.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?lt(u,c).publicKey:void 0);return{address:{tickArrayLower:p,tickArrayUpper:d,positionNftAccount:y,personalPosition:f,protocolPosition:b},signers:[],instructions:[g],instructionTypes:[V.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,base:o,baseAmount:s,otherAmountMax:a}){let[u,c]=[new v(e.programId),new v(e.id)],l=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=ge(u,c,l),{publicKey:d}=ge(u,c,m),{publicKey:y}=ye(i.wallet,n.nftMint,qe),{publicKey:f}=ct(u,n.nftMint),{publicKey:b}=mn(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:p,tickArrayUpper:d,positionNftAccount:y,personalPosition:f,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(u,i.wallet,y,f,c,b,p,d,i.tokenAccountA,i.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),o,s,a,He.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?lt(u,c).publicKey:void 0)],signers:[],instructionTypes:[V.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P){let A=L([z("liquidity"),w("amountMaxA"),w("amountMaxB"),_("optionBaseFlag"),De("baseFlag")]),h=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...h],I=Buffer.alloc(A.span);A.encode({liquidity:new gu(0),amountMaxA:f==="MintA"?b:g,amountMaxB:f==="MintA"?g:b,baseFlag:f==="MintA",optionBaseFlag:1},I);let B=Buffer.from([...kt.increaseLiquidity,...I]);return new Pt({keys:T,programId:e,data:B})}static decreaseLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P,A){let h=L([z("liquidity"),w("amountMinA"),w("amountMinB")]),T=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...f.map(R=>[{pubkey:R.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:R.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:R.rewardMint,isSigner:!1,isWritable:!1}]).flat()],I=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:An,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...T],B=Buffer.alloc(h.span);h.encode({liquidity:b,amountMinA:g,amountMinB:P},B);let x=Buffer.from([...kt.decreaseLiquidity,...B]);return new Pt({keys:I,programId:e,data:x})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new v(e.programId),new v(e.id)],m=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),p=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=ge(c,l,m),{publicKey:y}=ge(c,l,p),{publicKey:f}=ye(i.wallet,n.nftMint,u),{publicKey:b}=ct(c,n.nftMint),{publicKey:g}=mn(c,l,n.tickLower,n.tickUpper),P=[];for(let h=0;h<e.rewardDefaultInfos.length;h++)P.push({poolRewardVault:new v(t.rewardInfos[h].vault),ownerRewardVault:i.rewardAccounts[h],rewardMint:new v(e.rewardDefaultInfos[h].mint.address)});let A=[];return A.push(this.decreaseLiquidityInstruction(c,i.wallet,f,b,l,g,d,y,i.tokenAccountA,i.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),P,o,s,a,He.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,p])?lt(c,l).publicKey:void 0)),{address:{tickArrayLower:d,tickArrayUpper:y,positionNftAccount:f,personalPosition:b,protocolPosition:g},signers:[],instructions:A,instructionTypes:[V.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g){let P=L([w("amount"),w("otherAmountThreshold"),z("sqrtPriceLimitX64"),De("isBaseInput")]),A=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...m.map(B=>({pubkey:B,isSigner:!1,isWritable:!0}))],h=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:An,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...A],T=Buffer.alloc(P.span);P.encode({amount:d,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:b},T);let I=Buffer.from([...kt.swap,...T]);return new Pt({keys:h,programId:e,data:I})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,inputMint:i,amountIn:o,amountOutMin:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new v(e.programId),new v(e.id)],[m,p]=[new v(t.vault.A),new v(t.vault.B)],[d,y]=[new v(e.mintA.address),new v(e.mintB.address)],f=e.mintA.address===i.toString(),b=[this.swapInstruction(c,n.wallet,l,new v(e.config.id),f?n.tokenAccountA:n.tokenAccountB,f?n.tokenAccountB:n.tokenAccountA,f?m:p,f?p:m,f?d:y,f?y:d,u,m,o,s,a,!0,lt(c,l).publicKey)];return{signers:[],instructions:b,instructionTypes:[V.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,p){let d=L([w("openTime"),w("endTime"),z("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Cn.programId,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1}],f=Buffer.alloc(d.span);d.encode({openTime:U(l),endTime:U(m),emissionsPerSecondX64:p},f);let b=Buffer.from([...kt.initReward,...f]);return new Pt({keys:y,programId:e,data:b})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new v(e.programId),new v(e.id)],a=su(o,s,i.mint).publicKey,u=lr(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new v(e.config.id),n.tokenAccount,i.programId,i.mint,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[V.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,p){let d=L([_("rewardIndex"),z("emissionsPerSecondX64"),w("openTime"),w("endTime")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(d.span);d.encode({rewardIndex:c,emissionsPerSecondX64:p,openTime:U(l),endTime:U(m)},f);let b=Buffer.from([...kt.setRewardEmissions,...f]);return new Pt({keys:y,programId:e,data:b})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new v(e.programId),new v(e.id)],a,u,c;for(let p=0;p<e.rewardDefaultInfos.length;p++)e.rewardDefaultInfos[p].mint.address===i.mint.toString()&&(a=p,u=new v(t.rewardInfos[p].vault),c=new v(t.rewardInfos[p].mint.address));(a===void 0||u===void 0)&&wu.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=lr(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new v(e.config.id),n.tokenAccount,u,c,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[V.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,o,s,a){let u=L([_("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:An,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...kt.collectReward,...l]);return new Pt({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[o,s]=[new v(e.programId),new v(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,u=new v(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&wu.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,u,i,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[V.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:i,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new v(e.programId),new v(e.id)],[m,p]=[new v(t.vault.A),new v(t.vault.B)],[d,y]=[new v(e.mintA.address),new v(e.mintB.address)],f=e.mintA.address===i.toString(),b=[this.swapInstruction(c,n.wallet,l,new v(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?p:m,f?m:p,f?d:y,f?y:d,u,m,o,s,a,!1)];return{signers:[],instructions:b,instructionTypes:[V.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as cp}from"@solana/web3.js";import{PublicKey as ap}from"@solana/web3.js";import Au from"bn.js";var Pu=new Au(25),ku=new Au(1e4),sp={4:3,5:3};var up=ae("Raydium_liquidity_serum");function hu({programId:r,marketId:e}){let t=[e.toBuffer()],n=0,i;for(;n<100;){try{let o=t.concat(Buffer.from([n]),Buffer.alloc(7));i=ap.createProgramAddressSync(o,r)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:i,nonce:n}}throw up.logWithError("unable to find a viable program address nonce","params",{programId:r,marketId:e}),new Error("unable to find a viable program address nonce")}import yr from"bn.js";function $o({programId:r}){let{publicKey:e}=oe([Buffer.from("amm_config_account_seed","utf-8")],r);return e}function yn({name:r,programId:e,marketId:t}){let{publicKey:n}=oe([e.toBuffer(),t.toBuffer(),Buffer.from(r,"utf-8")],e);return n}function lp({programId:r,marketId:e}){let{publicKey:t}=oe([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function mp({programId:r}){return oe([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function Tu({version:r,marketVersion:e,marketId:t,baseMint:n,quoteMint:i,baseDecimals:o,quoteDecimals:s,programId:a,marketProgramId:u}){let c=yn({name:"amm_associated_seed",programId:a,marketId:t}),l=yn({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:p}=mp({programId:a}),d=yn({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=yn({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=yn({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),b=lp({programId:a,marketId:t}),g=yn({name:"target_associated_seed",programId:a,marketId:t}),P=yn({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:A}=hu({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:i,lpMint:l,baseDecimals:o,quoteDecimals:s,lpDecimals:o,version:r,programId:a,authority:m,nonce:p,baseVault:d,quoteVault:y,lpVault:f,openOrders:b,targetOrders:g,withdrawQueue:P,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:A,lookupTableAccount:cp.default,configId:$o({programId:a})}}var Zo;async function ET({connection:r,poolKeysList:e,config:t}){Zo||(Zo=new Sn({connection:r}),await Zo.initStableModelLayout());let n=e.map(s=>eu({poolKeys:s}));return(await $s(r,n.map(s=>s.instruction),"GetPoolData")).map(s=>{let a=Js(s,"GetPoolData"),u=new yr(Mt(a,"status")),c=Number(Mt(a,"coin_decimals")),l=Number(Mt(a,"pc_decimals")),m=Number(Mt(a,"lp_decimals")),p=new yr(Mt(a,"pool_coin_amount")),d=new yr(Mt(a,"pool_pc_amount")),y=new yr(Mt(a,"pool_lp_supply")),f="0";try{f=Mt(a,"pool_open_time")}catch{}return{status:u,baseDecimals:c,quoteDecimals:l,lpDecimals:m,baseReserve:p,quoteReserve:d,lpSupply:y,startTime:new yr(f)}})}import je from"bn.js";var br=class extends xe{constructor(t){super(t);this.stableLayout=new Sn({connection:this.scope.connection})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:i,baseIn:o}){let s=new je(new F(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),a=Ga(t[o?"mintB":"mintA"]),[u,c]=[new je(new F(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new je(new F(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new je(new F(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,F.ROUND_DOWN));this.logDebug("baseReserve:",u.toString(),"quoteReserve:",c.toString()),this.logDebug("tokenIn:",o?t.mintA.symbol:t.mintB.symbol,"amountIn:",s.toString(),"anotherToken:",o?t.mintB.symbol:t.mintA.symbol,"slippage:",`${i.toSignificant()}%`);let m=o?"base":"quote";this.logDebug("input side:",m);let p=Se;s.isZero()||(p=m==="base"?vr(s.mul(c),u):vr(s.mul(u),c));let d=vr(s.mul(l),new je(m==="base"?t.mintAmountA:t.mintAmountB).mul(new je(10).pow(new je(t[m==="base"?"mintA":"mintB"].decimals)))),f=new ve(new je(1)).add(i).mul(p).quotient,b=new he(a,p),g=new he(a,f);return this.logDebug("anotherAmount:",b.toFixed(),"maxAnotherAmount:",g.toFixed()),{anotherAmount:b,maxAnotherAmount:g,liquidity:d}}async getAmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async addLiquidity(t){let{poolInfo:n,amountInA:i,amountInB:o,fixedSide:s,config:a,txVersion:u,computeBudgetConfig:c}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",i,"amountInB:",o),(i.isZero()||o.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:i.toFixed(),amountInB:o.toFixed()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:p}=M({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),[d,y]=[i.token,o.token],f=await l.getCreatedTokenAccount({mint:d.mint,associatedOnly:!1}),b=await l.getCreatedTokenAccount({mint:y.mint,associatedOnly:!1});!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let g=await l.getCreatedTokenAccount({mint:new ot(n.lpMint.address)}),P=[d,y],A=[f,b],h=[i.raw,o.raw],T=i.token.mint.toBase58()===n.mintA.address?"base":"quote",I="base";["quote","base"].includes(T)||this.logAndCreateError("invalid fixedSide","fixedSide",s),T==="quote"?(P.reverse(),A.reverse(),h.reverse(),I=s==="a"?"quote":"base"):T==="base"&&(I=s==="a"?"base":"quote");let[B,x]=P,[R,N]=A,[E,Q]=h,W=await this.getAmmPoolKeys(n.id),j=this.createTxBuilder(),Wt=await l.handleTokenAccount({side:"in",amount:E,mint:B.mint,tokenAccount:R,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:ee}=Wt,se=Te(Wt,["tokenAccount"]);j.addInstruction(se);let Sr=await l.handleTokenAccount({side:"in",amount:Q,mint:x.mint,tokenAccount:N,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:ft}=Sr,Nn=Te(Sr,["tokenAccount"]);j.addInstruction(Nn);let Mn=await l.handleTokenAccount({side:"out",amount:0,mint:new ot(n.lpMint.address),tokenAccount:g,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:Ti}=Mn,Ii=Te(Mn,["tokenAccount"]);return j.addInstruction(Ii),j.addInstruction({instructions:[$a({poolInfo:n,poolKeys:W,userKeys:{baseTokenAccount:ee,quoteTokenAccount:ft,lpTokenAccount:Ti,owner:this.scope.ownerPubKey},baseAmountIn:E,quoteAmountIn:Q,fixedSide:I})],instructionTypes:[n.pooltype.includes("StablePool")?V.AmmV5AddLiquidity:V.AmmV4AddLiquidity],lookupTableAddress:W.lookupTableAccount?[W.lookupTableAccount]:[]}),j.addCustomComputeBudget(c),u===0&&await j.buildV0(),j.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,amountIn:i,config:o,txVersion:s,computeBudgetConfig:a}=t,u=await this.getAmmPoolKeys(n.id),[c,l,m]=[new ot(n.mintA.address),new ot(n.mintB.address),new ot(n.lpMint.address)];this.logDebug("amountIn:",i),i.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",i.toString());let{account:p}=this.scope,d=await p.getCreatedTokenAccount({mint:m,associatedOnly:!1});d||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",p.tokenAccounts);let y=await p.getCreatedTokenAccount({mint:c}),f=await p.getCreatedTokenAccount({mint:l}),b=this.createTxBuilder(),{bypassAssociatedCheck:g,checkCreateATAOwner:P}=M({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),B=await p.handleTokenAccount({side:"out",amount:0,mint:c,tokenAccount:y,bypassAssociatedCheck:g,checkCreateATAOwner:P}),{tokenAccount:A}=B,h=Te(B,["tokenAccount"]);b.addInstruction(h);let x=await p.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:g,checkCreateATAOwner:P}),{tokenAccount:T}=x,I=Te(x,["tokenAccount"]);return b.addInstruction(I),b.addInstruction({instructions:[qo({poolInfo:n,poolKeys:u,userKeys:{lpTokenAccount:d,baseTokenAccount:A,quoteTokenAccount:T,owner:this.scope.ownerPubKey},amountIn:i})],lookupTableAddress:u.lookupTableAccount?[u.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?V.AmmV5RemoveLiquidity:V.AmmV4RemoveLiquidity]}),b.addCustomComputeBudget(a),s===0?await b.buildV0():b.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:i,createPositionInfo:o,farmInfo:s,userFarmLpAmount:a,base:u,computeBudgetConfig:c,payer:l,tokenProgram:m=fi,checkCreateATAOwner:p=!0,getEphemeralSigners:d,txVersion:y}){if((this.scope.availability.removeStandardPosition===!1||this.scope.availability.createConcentratedPosition===!1)&&this.logAndCreateError("remove liquidity or create position feature disabled in your region"),!(t.mintA.address===n.mintA.address||t.mintA.address===n.mintB.address)||!(t.mintB.address===n.mintA.address||t.mintB.address===n.mintB.address))throw Error("mint check error");let f=this.createTxBuilder();f.addCustomComputeBudget(c);let b={};for(let ee of this.scope.account.tokenAccountRawInfos)(b[ee.accountInfo.mint.toString()]===void 0||ye(this.scope.ownerPubKey,ee.accountInfo.mint,fi).publicKey.equals(ee.pubkey))&&(b[ee.accountInfo.mint.toString()]=ee.pubkey);let g=b[t.lpMint.address];if(g===void 0)throw Error("find lp account error in trade accounts");let P=i.add(a!=null?a:new je(0)),A=t.mintA.address===de.WSOL.mint.toString(),h=t.mintB.address===de.WSOL.mint.toString(),{account:T,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:fi,mint:new ot(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:A?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!0,checkCreateATAOwner:p});if(f.addInstruction(I||{}),T===void 0)throw new Error("base token account not found");let{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:fi,mint:new ot(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:h?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:!0,checkCreateATAOwner:p});if(f.addInstruction(x||{}),B===void 0)throw new Error("quote token account not found");if(b[t.mintA.address]=T,b[t.mintB.address]=B,s!==void 0&&!(a!=null&&a.isZero())){let ee=[];for(let Wt of s.rewardInfos){let Sr=Wt.mint.address===de.WSOL.mint.toString();if(b[Wt.mint.address])ee.push(b[Wt.mint.address]);else{let{account:Mn,instructionParams:fs}=await this.scope.account.getOrCreateTokenAccount({mint:new ot(Wt.mint.address),tokenProgram:m,owner:this.scope.ownerPubKey,skipCloseAccount:!Sr,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:p});Mn||this.logAndCreateError("farm reward account not found:",Wt.mint.address),fs&&f.addInstruction(fs),ee.push(Mn)}}let se=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],ft={amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:se,lpAccount:g,rewardAccounts:ee},Nn=At[s.programId],Ti=Nn===6?ir(ft):Nn===5?or(ft):sr(ft),Ii={3:V.FarmV3Withdraw,5:V.FarmV5Withdraw,6:V.FarmV6Withdraw};f.addInstruction({instructions:[Ti],instructionTypes:[Ii[Nn]]})}let R=await this.getAmmPoolKeys(t.id),N=qo({poolInfo:t,poolKeys:R,userKeys:{lpTokenAccount:g,baseTokenAccount:T,quoteTokenAccount:B,owner:this.scope.ownerPubKey},amountIn:P});f.addInstruction({instructions:[N],instructionTypes:[t.pooltype.includes("StablePool")?V.AmmV5RemoveLiquidity:V.AmmV4RemoveLiquidity],lookupTableAddress:R.lookupTableAccount?[R.lookupTableAccount]:[]});let[E,Q]=t.mintA.address===n.mintA.address?[T,B]:[B,T],W=await this.scope.clmm.getClmmPoolKeys(t.id),j=await Be.openPositionFromBaseInstructions(D(M({poolInfo:n,poolKeys:W,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:E,tokenAccountB:Q},withMetadata:"create"},o),{base:u,getEphemeralSigners:d}));return f.addInstruction({instructions:[...j.instructions],signers:j.signers,instructionTypes:[...j.instructionTypes],lookupTableAddress:W.lookupTableAccount?[W.lookupTableAccount]:[]}),y===0?f.sizeCheckBuildV0():f.sizeCheckBuild()}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:i,quoteMintInfo:o,baseAmount:s,quoteAmount:a,startTime:u,ownerInfo:c,associatedOnly:l=!1,checkCreateATAOwner:m=!1,tokenProgram:p,txVersion:d,feeDestinationId:y,computeBudgetConfig:f}){var Q;let b=c.feePayer||((Q=this.scope.owner)==null?void 0:Q.publicKey),g=c.useSOLBalance&&i.mint.equals(Iu),P=c.useSOLBalance&&o.mint.equals(Iu),A=this.createTxBuilder(),{account:h,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({mint:i.mint,owner:this.scope.ownerPubKey,createInfo:g?{payer:b,amount:s}:void 0,notUseTokenAccount:g,skipCloseAccount:!g,associatedOnly:g?!1:l,checkCreateATAOwner:m});A.addInstruction(T||{});let{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({mint:o.mint,owner:this.scope.ownerPubKey,createInfo:P?{payer:b,amount:a}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:l,checkCreateATAOwner:m});if(A.addInstruction(B||{}),h===void 0||I===void 0)throw Error("you don't has some token account");let x=Tu({version:4,marketVersion:3,marketId:n.marketId,baseMint:i.mint,quoteMint:o.mint,baseDecimals:i.decimals,quoteDecimals:o.decimals,programId:t,marketProgramId:n.programId}),R={programId:t,ammId:x.id,ammAuthority:x.authority,ammOpenOrders:x.openOrders,lpMint:x.lpMint,coinMint:x.baseMint,pcMint:x.quoteMint,coinVault:x.baseVault,pcVault:x.quoteVault,withdrawQueue:x.withdrawQueue,ammTargetOrders:x.targetOrders,poolTempLp:x.lpVault,marketProgramId:x.marketProgramId,marketId:x.marketId,ammConfigId:x.configId,feeDestinationId:y},{instruction:N,instructionType:E}=Ja(D(M({},R),{userWallet:this.scope.ownerPubKey,userCoinVault:h,userPcVault:I,userLpVault:ye(this.scope.ownerPubKey,x.lpMint,p).publicKey,nonce:x.nonce,openTime:u,coinAmount:s,pcAmount:a}));return A.addInstruction({instructions:[N],instructionTypes:[E]}),A.addCustomComputeBudget(f),A.versionBuild({txVersion:d,extInfo:{address:R}})}async getCreatePoolFee({programId:t}){let n=$o({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return Xa.decode(i.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:i,mintOut:o,slippage:s}){if(i!==t.mintA.address&&i!==t.mintA.address)throw new Error("toke not match");if(o!==t.mintB.address&&o!==t.mintB.address)throw new Error("toke not match");let{baseReserve:a,quoteReserve:u}=t,c=[a,u],l=i==t.mintA.address?"base":"quote";l==="quote"&&c.reverse();let[m,p]=c,d=t.programId===Ji.toBase58(),y;if(d)y=new F(p.toString()).div(m.toString());else{let x=ja(this.stableLayout.stableModelData,a.toNumber(),u.toNumber(),!1);l==="quote"?y=new F(1e6).div(x*1e6):y=new F(x*1e6).div(1e6)}let f=n,b=new je(0),g=new je(0);if(!f.isZero())if(d){g=zt(f.mul(Pu),ku);let x=f.sub(g),R=m.add(x);b=p.mul(x).div(R)}else{g=f.mul(new je(2)).div(new je(1e4));let x=f.sub(g);l==="quote"?b=new je(Qa(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber())):b=new je(Ha(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber()))}let P=new je(new F(b.toString()).mul(1-s).toFixed(0)),A=b,h=P,T=new F(b.toString()).div(new F(f.sub(g).toString()).toFixed(0));!f.isZero()&&!b.isZero()&&(T=new F(b.toString()).div(f.sub(g).toString()));let I=y.sub(T).div(y).mul(100);return{amountOut:A,minAmountOut:h,currentPrice:y,executionPrice:T,priceImpact:I,fee:g}}async swap({poolInfo:t,amountIn:n,amountOut:i,inputMint:o,fixedSide:s,txVersion:a,computeBudgetConfig:u}){let c=this.createTxBuilder(),[l,m]=o===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],p=await this.scope.account.getCreatedTokenAccount({mint:new ot(l.address),programId:new ot(l.programId),associatedOnly:!1}),d=await this.scope.account.getCreatedTokenAccount({mint:new ot(m.address),programId:new ot(m.programId),associatedOnly:!1}),h=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new ot(l.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=h,f=Te(h,["tokenAccount"]);c.addInstruction(f);let T=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new ot(m.address),tokenAccount:d,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:b}=T,g=Te(T,["tokenAccount"]);c.addInstruction(g);let P=await this.getAmmPoolKeys(t.id),A=4;return t.pooltype.includes("StablePool")&&(A=5),c.addInstruction({instructions:[ai({version:A,poolKeys:P,userKeys:{tokenAccountIn:y,tokenAccountOut:b,owner:this.scope.ownerPubKey},amountIn:n,amountOut:i,fixedSide:s})],instructionTypes:[A===4?V.AmmV4SwapBaseIn:V.AmmV5SwapBaseIn]}),c.addCustomComputeBudget(u),c.versionBuild({txVersion:a})}};import{PublicKey as ue}from"@solana/web3.js";import mt from"bn.js";var gr=class extends xe{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var P;let{programId:t,owner:n=((P=this.scope.owner)==null?void 0:P.publicKey)||ue.default,mint1:i,mint2:o,ammConfig:s,initialPrice:a,startTime:u,computeBudgetConfig:c,forerunCreate:l,txVersion:m}=e,p=this.createTxBuilder(),[d,y,f]=new mt(new ue(i.address).toBuffer()).gt(new mt(new ue(o.address).toBuffer()))?[o,i,new F(1).div(a)]:[i,o,a],b=Z.priceToSqrtPriceX64(f,d.decimals,y.decimals),g=await Be.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:d,mintB:y,ammConfigId:s.id,initialPriceX64:b,startTime:u,forerunCreate:l});return p.addInstruction(g),p.addCustomComputeBudget(c),p.versionBuild({txVersion:m,extInfo:{address:D(M({},g.address),{programId:t.toString(),id:g.address.poolId.toString(),mintA:d,mintB:y,openTime:u.toString(),vault:{A:g.address.mintAVault.toString(),B:g.address.mintBVault.toString()},rewardInfos:[],config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:M({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:g.address.poolId.toString(),mintA:d,mintB:y,feeRate:s.tradeFeeRate,openTime:u.toString(),programId:t.toString(),price:f.toNumber(),config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}},du),forerunCreate:l}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",getEphemeralSigners:p,computeBudgetConfig:d,txVersion:y}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let f=this.createTxBuilder(),b=null,g=null,P=n.useSOLBalance&&e.mintA.address===te.toString(),A=n.useSOLBalance&&e.mintB.address===te.toString(),[h,T]=s==="MintA"?[a,u]:[u,a],{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ue(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:P||h.isZero()?{payer:this.scope.ownerPubKey,amount:h}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});I&&(b=I),f.addInstruction(B||{});let{account:x,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ue(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||T.isZero()?{payer:this.scope.ownerPubKey,amount:T}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:A?!1:c,checkCreateATAOwner:l});x&&(g=x),f.addInstruction(R||{}),(!b||!g)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let N=t||await this.getClmmPoolKeys(e.id),E=await Be.openPositionFromBaseInstructions({poolInfo:e,poolKeys:N,ownerInfo:D(M({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g}),tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:m,getEphemeralSigners:p});return f.addInstruction(E),f.addCustomComputeBudget(d),f.versionBuild({txVersion:y,extInfo:E.address})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:i,amountMaxB:o,tickLower:s,tickUpper:a,liquidity:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",txVersion:p,getEphemeralSigners:d}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let y=this.createTxBuilder(),f=null,b=null,g=n.useSOLBalance&&e.mintA.address===te.toBase58(),P=n.useSOLBalance&&e.mintB.address===te.toBase58(),{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ue(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:g?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!g,notUseTokenAccount:g,associatedOnly:g?!1:c,checkCreateATAOwner:l});A&&(f=A),y.addInstruction(h||{});let{account:T,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ue(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:P?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});T&&(b=T),y.addInstruction(I||{}),(f===void 0||b===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let B=t||await this.getClmmPoolKeys(e.id),x=await Be.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:B,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},tickLower:s,tickUpper:a,liquidity:u,amountMaxA:i,amountMaxB:o,withMetadata:m,getEphemeralSigners:d});return y.addInstruction(x),y.versionBuild({txVersion:p,extInfo:{address:x.address}})}async increasePositionFromLiquidity(e){let{poolInfo:t,ownerPosition:n,amountMaxA:i,amountMaxB:o,liquidity:s,ownerInfo:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e,p=this.createTxBuilder(),d,y,f=a.useSOLBalance&&t.mintA.address===te.toString(),b=a.useSOLBalance&&t.mintB.address===te.toString(),{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ue(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(d=g),p.addInstruction(P||{});let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ue(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b?{payer:this.scope.ownerPubKey,amount:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});A&&(y=A),p.addInstruction(h||{}),!d&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let T=await this.getClmmPoolKeys(t.id),I=Be.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:T,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:d,tokenAccountB:y},liquidity:s,amountMaxA:i,amountMaxB:o});return p.addInstruction(I),p.addCustomComputeBudget(l),p.versionBuild({txVersion:m,extInfo:{address:I.address}})}async increasePositionFromBase(e){let{poolInfo:t,ownerPosition:n,base:i,baseAmount:o,otherAmountMax:s,ownerInfo:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e,p=this.createTxBuilder(),d,y,f=a.useSOLBalance&&t.mintA.address===te.toString(),b=a.useSOLBalance&&t.mintB.address===te.toString(),{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ue(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:i==="MintA"?o:s}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(d=g),p.addInstruction(P||{});let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ue(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b?{payer:this.scope.ownerPubKey,amount:i==="MintA"?s:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});A&&(y=A),p.addInstruction(h||{}),!d&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let T=await this.getClmmPoolKeys(t.id),I=Be.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:T,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:d,tokenAccountB:y},base:i,baseAmount:o,otherAmountMax:s});return p.addInstruction(I),p.addCustomComputeBudget(l),p.versionBuild({txVersion:m,extInfo:{address:I.address}})}async decreaseLiquidity(e){let{poolInfo:t,ownerPosition:n,ownerInfo:i,amountMinA:o,amountMinB:s,liquidity:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let p=this.createTxBuilder(),d=i.useSOLBalance&&t.mintA.address===te.toString(),y=i.useSOLBalance&&t.mintB.address===te.toString(),f,b,{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ue(t.mintA.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!d,associatedOnly:d?!1:u,checkCreateATAOwner:c});f=g,P&&p.addInstruction(P);let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ue(t.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,associatedOnly:y?!1:u,checkCreateATAOwner:c});b=A,h&&p.addInstruction(h);let T=[];for(let R of t.rewardDefaultInfos){let N=i.useSOLBalance&&R.mint.address===te.toString(),E;if(R.mint.address===t.mintA.address)E=f;else if(R.mint.address===t.mintB.address)E=b;else{let{account:Q,instructionParams:W}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(R.mint.programId),mint:new ue(R.mint.address),notUseTokenAccount:N,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!N,associatedOnly:N?!1:u,checkCreateATAOwner:c});E=Q,W&&p.addInstruction(W)}T.push(E)}!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let I=await this.getClmmPoolKeys(t.id),B=await Be.decreaseLiquidityInstructions({poolInfo:t,poolKeys:I,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:T},liquidity:a,amountMinA:o,amountMinB:s});p.addInstruction({instructions:B.instructions,instructionTypes:[V.ClmmDecreasePosition]});let x=M({},B.address);if(i.closePosition){let R=await Be.closePositionInstructions({poolInfo:t,poolKeys:I,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});p.addInstruction({endInstructions:R.instructions,endInstructionTypes:R.instructionTypes}),x=M(M({},x),R.address)}return p.addCustomComputeBudget(l),p.versionBuild({txVersion:m,extInfo:{address:x}})}async closePosition({poolInfo:e,ownerPosition:t,txVersion:n}){this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let i=this.createTxBuilder(),o=await this.getClmmPoolKeys(e.id),s=Be.closePositionInstructions({poolInfo:e,poolKeys:o,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:t});return i.addInstruction(s).versionBuild({txVersion:n,extInfo:{address:s.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(),c=t.useSOLBalance&&n.mint.address.toString()===te.toString(),l=n.perSecond.mul(n.endTime-n.openTime),{account:m,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(n.mint.address),mint:new ue(n.mint.address),notUseTokenAccount:!!c,skipCloseAccount:!c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new mt(new F(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:c?!1:i,checkCreateATAOwner:o});p&&u.addInstruction(p),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),y=Be.initRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{programId:new ue(n.mint.programId),mint:new ue(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:$.decimalToX64(n.perSecond)}});return u.addInstruction(y),u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:y.address}})}async initRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){for(let l of n)l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let u=this.createTxBuilder(),c={};for(let l of n){let m=t.useSOLBalance&&l.mint.address===te.toString(),p=l.perSecond.mul(l.endTime-l.openTime),{account:d,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(l.mint.programId),mint:new ue(l.mint.address),notUseTokenAccount:!!m,skipCloseAccount:!m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new mt(new F(p.toFixed(0)).gte(p)?p.toFixed(0):p.add(1).toFixed(0))}:void 0,associatedOnly:m?!1:i,checkCreateATAOwner:o});y&&u.addInstruction(y),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),b=Be.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{programId:new ue(l.mint.programId),mint:new ue(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:$.decimalToX64(l.perSecond)}});c=M(M({},c),b.address),u.addInstruction(b)}return u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:c}})}async setReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(),c=t.useSOLBalance&&n.mint.equals(te),{account:l,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.programId,mint:n.mint,notUseTokenAccount:c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new mt(new F(n.perSecond.sub(n.endTime-n.openTime).toFixed(0)).gte(n.perSecond.sub(n.endTime-n.openTime))?n.perSecond.sub(n.endTime-n.openTime).toFixed(0):n.perSecond.sub(n.endTime-n.openTime).add(1).toFixed(0))}:void 0,associatedOnly:c?!1:i,checkCreateATAOwner:o});m&&u.addInstruction(m),l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),d=Be.setRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:$.decimalToX64(n.perSecond)}});return u.addInstruction(d),u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:d.address}})}async setRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){let u=this.createTxBuilder(),c={};for(let l of n){l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let m=t.useSOLBalance&&l.mint.address===te.toString(),{account:p,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(l.mint.programId),mint:new ue(l.mint.address),notUseTokenAccount:m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new mt(new F(l.perSecond.sub(l.endTime-l.openTime).toFixed(0)).gte(l.perSecond.sub(l.endTime-l.openTime))?l.perSecond.sub(l.endTime-l.openTime).toFixed(0):l.perSecond.sub(l.endTime-l.openTime).add(1).toFixed(0))}:void 0,associatedOnly:m?!1:i,checkCreateATAOwner:o});d&&u.addInstruction(d),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let y=await this.getClmmPoolKeys(e.id),f=Be.setRewardInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{mint:new ue(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:$.decimalToX64(l.perSecond)}});u.addInstruction(f),c=M(M({},c),f.address)}return u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:c}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1}){let s=e.rewardDefaultInfos.find(d=>d.mint.address===n.toString());s||this.logAndCreateError("reward mint error","not found reward mint",n);let a=this.createTxBuilder(),u=t.useSOLBalance&&n.equals(te),{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(s.mint.programId),mint:n,notUseTokenAccount:u,owner:this.scope.ownerPubKey,skipCloseAccount:!u,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:u?!1:i,checkCreateATAOwner:o});l&&a.addInstruction(l),c||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let m=await this.getClmmPoolKeys(e.id),p=Be.collectRewardInstructions({poolInfo:e,poolKeys:m,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:c},rewardMint:n});return a.addInstruction(p),a.build({address:p.address})}async collectRewards({poolInfo:e,ownerInfo:t,rewardMints:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1}){let s=this.createTxBuilder(),a={};for(let u of n){let c=e.rewardDefaultInfos.find(f=>f.mint.address===u.toString());if(!c){this.logAndCreateError("reward mint error","not found reward mint",u);continue}let l=t.useSOLBalance&&u.equals(te),{account:m,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(c.mint.programId),mint:u,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:l?!1:i,checkCreateATAOwner:o});m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),p&&s.addInstruction(p);let d=await this.getClmmPoolKeys(e.id),y=Be.collectRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:u});s.addInstruction(y),a=M(M({},a),y.address)}return s.build({address:a})}async swap({poolInfo:e,inputMint:t,amountIn:n,amountOutMin:i,priceLimit:o,ownerInfo:s,remainingAccounts:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,txVersion:l}){let m=this.createTxBuilder(),p=s.useSOLBalance&&e.mintA.address===te.toBase58(),d=s.useSOLBalance&&e.mintB.address===te.toBase58(),y;!o||o.equals(new F(0))?y=t.toString()===e.mintA.address?Ct.add(new mt(1)):Rt.sub(new mt(1)):y=Z.priceToSqrtPriceX64(o,e.mintA.decimals,e.mintB.decimals);let f;if(!f){let{account:P,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ue(e.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:u,checkCreateATAOwner:c});f=P,A&&m.addInstruction(A)}let b;if(!b){let{account:P,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ue(e.mintB.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!d,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:d?!1:u,checkCreateATAOwner:c});b=P,A&&m.addInstruction(A)}(!f||!b)&&this.logAndCreateError("user do not have token account",this.scope.account.tokenAccountRawInfos);let g=await this.getClmmPoolKeys(e.id);return m.addInstruction(Be.makeSwapBaseInInstructions({poolInfo:e,poolKeys:g,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},inputMint:new ue(t),amountIn:n,amountOutMin:i,sqrtPriceLimitX64:y,remainingAccounts:a})),m.versionBuild({txVersion:l})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,programId:s,txVersion:a,computeBudgetConfig:u}){let c={};for(let m of this.scope.account.tokenAccountRawInfos)i?ye(this.scope.ownerPubKey,m.accountInfo.mint,s).publicKey.equals(m.pubkey)&&(c[m.accountInfo.mint.toString()]=m.pubkey):c[m.accountInfo.mint.toString()]=m.pubkey;let l=this.createTxBuilder();for(let m of Object.values(e)){if(t[m.id]===void 0||!t[m.id].find(A=>!A.liquidity.isZero()||A.rewardInfos.find(h=>!h.rewardAmountOwed.isZero())))continue;let p=m,d=n.useSOLBalance&&p.mintA.address===te.toString(),y=n.useSOLBalance&&p.mintB.address===te.toString(),f=c[p.mintA.address];if(!f){let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:p.mintA.programId,mint:new ue(p.mintA.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!d,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:d?!1:i,checkCreateATAOwner:o});f=A,h&&l.addInstruction(h)}let b=c[p.mintB.address];if(!b){let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:p.mintB.programId,mint:new ue(p.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:y?!1:i,checkCreateATAOwner:o});b=A,h&&l.addInstruction(h)}c[p.mintA.address]=f,c[p.mintB.address]=b;let g=[];for(let A of p.rewardDefaultInfos){let h=n.useSOLBalance&&A.mint.address===te.toString(),T=c[A.mint.address];if(!T){let{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(A.mint.programId),mint:new ue(A.mint.address),notUseTokenAccount:h,owner:this.scope.ownerPubKey,skipCloseAccount:!h,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:h?!1:i});T=I,B&&l.addInstruction(B)}c[A.mint.address]=T,g.push(T)}let P=await this.getClmmPoolKeys(p.id);for(let A of t[m.id]){let h=Be.decreaseLiquidityInstructions({poolInfo:p,poolKeys:P,ownerPosition:A,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:g},liquidity:new mt(0),amountMinA:new mt(0),amountMinB:new mt(0)});l.addInstruction(h)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:u}):l.sizeCheckBuild({computeBudgetConfig:u})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(lr(e).publicKey);return t?yu.decode(t.data).whitelistMints.filter(i=>!i.equals(ue.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new mt(1))).map(s=>ct(new ue(e),s.accountInfo.mint).publicKey),i=await this.scope.connection.getMultipleAccountsInfo(n),o=[];return i.forEach(s=>{if(!s)return;let a=pi.decode(s.data);o.push(a)}),o}async getRpcClmmPoolInfo({poolId:e}){let t=await this.scope.connection.getAccountInfo(new ue(e)),n=di.decode(t.data),i=Z.sqrtPriceX64ToPrice(n.sqrtPriceX64,n.mintDecimalsA,n.mintDecimalsB).toNumber();return D(M({},n),{currentPrice:i})}};import{PublicKey as Y}from"@solana/web3.js";import{NATIVE_MINT as bi,TOKEN_PROGRAM_ID as en,AccountLayout as _u}from"@solana/spl-token";var dp=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),pp=Buffer.from("amm_config","utf8"),fp=Buffer.from("pool","utf8"),yp=Buffer.from("pool_lp_mint","utf8"),bp=Buffer.from("pool_vault","utf8"),gp=Buffer.from("observation","utf8");function wp(r){return oe([dp],r)}function Ap(r,e){return oe([pp,hp(e)],r)}function Pp(r,e,t,n){return oe([fp,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function kp(r,e){return oe([yp,e.toBuffer()],r)}function xu(r,e,t){return oe([bp,e.toBuffer(),t.toBuffer()],r)}function yi(r,e){return oe([gp,e.toBuffer()],r)}function hp(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function Bu({programId:r,mintA:e,mintB:t}){let n=Ap(r,0).publicKey,i=wp(r).publicKey,o=Pp(r,n,e,t).publicKey,s=kp(r,o).publicKey,a=xu(r,o,e).publicKey,u=xu(r,o,t).publicKey,c=yi(r,o).publicKey;return{poolId:o,configId:n,authority:i,lpMint:s,vaultA:a,vaultB:u,observationId:c}}import{TransactionInstruction as wr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Jo,TOKEN_2022_PROGRAM_ID as Su,ASSOCIATED_TOKEN_PROGRAM_ID as Tp}from"@solana/spl-token";var Ip=ae("Raydium_cpmm"),Ar={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 Ku(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P,A){let h=L([w("amountMaxA"),w("amountMaxB"),w("openTime")]),T=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:Jo,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:Tp,isSigner:!1,isWritable:!1},{pubkey:Es,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1}],I=Buffer.alloc(h.span);return h.encode({amountMaxA:g,amountMaxB:P,openTime:A},I),new wr({keys:T,programId:r,data:Buffer.from([...Ar.initialize,...I])})}function Cu(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=L([w("lpAmount"),w("amountMaxA"),w("amountMaxB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:Jo,isSigner:!1,isWritable:!1},{pubkey:Su,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0}],g=Buffer.alloc(f.span);return Ip.debug("cpmm deposit data",{lpAmount:p.toString(),amountMaxA:d.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:p,amountMaxA:d,amountMaxB:y},g),new wr({keys:b,programId:r,data:Buffer.from([...Ar.deposit,...g])})}function Ru(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=L([w("lpAmount"),w("amountMinA"),w("amountMinB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:Jo,isSigner:!1,isWritable:!1},{pubkey:Su,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:Vs,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);return f.encode({lpAmount:p,amountMinA:d,amountMinB:y},g),new wr({keys:b,programId:r,data:Buffer.from([...Ar.withdraw,...g])})}function Lu(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y,f){let b=L([w("amountIn"),w("amounOutMin")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0}],P=Buffer.alloc(b.span);return b.encode({amountIn:y,amounOutMin:f},P),new wr({keys:g,programId:r,data:Buffer.from([...Ar.swapBaseInput,...P])})}function Ou(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y,f){let b=L([w("amountInMax"),w("amountOut")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0}],P=Buffer.alloc(b.span);return b.encode({amountInMax:y,amountOut:f},P),new wr({keys:g,programId:r,data:Buffer.from([...Ar.swapBaseOutput,...P])})}import Ze from"bn.js";var Nu=L([pe(8),_("bump"),De("disableCreatePool"),Bt("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),S("protocolOwner"),S("fundOwner"),q(w(),16)]),Mu=L([pe(8),S("configId"),S("poolCreator"),S("vaultA"),S("vaultB"),S("mintLp"),S("mintA"),S("mintB"),S("mintProgramA"),S("mintProgramB"),S("observationId"),_("bump"),_("status"),_("lpDecimals"),_("mintDecimalA"),_("mintDecimalB"),w("lpAmount"),w("protocolFeesMintA"),w("protocolFeesMintB"),w("fundFeesMintA"),w("fundFeesMintB"),w("openTime"),q(w(),32)]);var Pr=class extends xe{constructor(e){super(e)}async load(){this.checkDisabled()}async getCpmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async getRpcPoolInfo(e,t){let n=await this.scope.connection.getAccountInfo(new Y(e));if(!n)throw new Error(`pool not found: ${e}`);let i=Mu.decode(n.data),[o,s]=await this.scope.connection.getMultipleAccountsInfo([i.vaultA,i.vaultB]);if(!o)throw new Error(`pool vaultA info not found: ${i.vaultA.toBase58()}`);if(!s)throw new Error(`pool vaultB info not found: ${i.vaultB.toBase58()}`);let a;if(t){let u=await this.scope.connection.getAccountInfo(i.configId);u&&(a=Nu.decode(u.data))}return D(M({},i),{baseReserve:new Ze(_u.decode(o.data).amount.toString()).sub(i.protocolFeesMintA).sub(i.fundFeesMintA),quoteReserve:new Ze(_u.decode(s.data).amount.toString()).sub(i.protocolFeesMintB).sub(i.fundFeesMintB),configInfo:a})}async createPool(l){var m=l,{programId:e,poolFeeAccount:t,startTime:n,ownerInfo:i,associatedOnly:o=!1,checkCreateATAOwner:s=!1,txVersion:a,computeBudgetConfig:u}=m,c=Te(m,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var Q,W,j;let p=i.feePayer||((Q=this.scope.owner)==null?void 0:Q.publicKey),d=new Ze(new Y(c.mintA.address).toBuffer()).lte(new Ze(new Y(c.mintB.address).toBuffer())),[y,f]=d?[c.mintA,c.mintB]:[c.mintB,c.mintA],[b,g]=d?[c.mintAAmount,c.mintBAmount]:[c.mintBAmount,c.mintAAmount],P=i.useSOLBalance&&y.address===bi.toBase58(),A=i.useSOLBalance&&f.address===bi.toBase58(),[h,T]=[new Y(y.address),new Y(f.address)],I=this.createTxBuilder(),{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({mint:h,tokenProgram:y.programId,owner:this.scope.ownerPubKey,createInfo:P?{payer:p,amount:b}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:o,checkCreateATAOwner:s});I.addInstruction(x||{});let{account:R,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({mint:new Y(f.address),tokenProgram:f.programId,owner:this.scope.ownerPubKey,createInfo:A?{payer:p,amount:g}:void 0,notUseTokenAccount:A,skipCloseAccount:!A,associatedOnly:A?!1:o,checkCreateATAOwner:s});if(I.addInstruction(N||{}),B===void 0||R===void 0)throw Error("you don't has some token account");let E=Bu({programId:e,mintA:h,mintB:T});return I.addInstruction({instructions:[Ku(e,this.scope.ownerPubKey,E.configId,E.authority,E.poolId,h,T,E.lpMint,B,R,ye(this.scope.ownerPubKey,E.lpMint).publicKey,E.vaultA,E.vaultB,t,new Y((W=y.programId)!=null?W:en),new Y((j=f.programId)!=null?j:en),E.observationId,b,g,n)],instructionTypes:[V.CpmmCreatePool]}),I.addCustomComputeBudget(u),I.versionBuild({txVersion:a,extInfo:{address:D(M({},E),{mintA:y,mintB:f,programId:e,poolFeeAccount:t})}})}async addLiquidity(e){let{poolInfo:t,inputAmount:n,baseIn:i,slippage:o,computeResult:s,computeBudgetConfig:a,config:u,txVersion:c}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),n.isZero()&&this.logAndCreateError("amounts must greater than zero","amountInA",{amountInA:n.toString()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:p}=M({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},u),d=await this.getRpcPoolInfo(t.id),{liquidity:y,inputAmountFee:f,anotherAmount:b}=s||this.computePairAmount({poolInfo:D(M({},t),{mintAmountA:new F(d.baseReserve.toString()).div(10**t.mintA.decimals).toNumber(),mintAmountB:new F(d.quoteReserve.toString()).div(10**t.mintB.decimals).toNumber(),lpAmount:new F(d.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),slippage:o,baseIn:i,epochInfo:await this.scope.fetchEpochInfo(),amount:new F(n.toString()).div(10**(i?t.mintA.decimals:t.mintB.decimals))}),g=b.amount,P=t.mintA.address===bi.toString(),A=t.mintB.address===bi.toString(),h=this.createTxBuilder(),[T,I]=[new Y(t.mintA.address),new Y(t.mintB.address)],{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Y(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:P||(i?n:g).isZero()?{payer:this.scope.ownerPubKey,amount:i?n:g}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:!1,checkCreateATAOwner:p});h.addInstruction(x||{});let{account:R,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Y(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||(i?g:n).isZero()?{payer:this.scope.ownerPubKey,amount:i?g:n}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!1,checkCreateATAOwner:p});h.addInstruction(N||{}),!B&&!R&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let E=await l.getCreatedTokenAccount({mint:new Y(t.lpMint.address)}),ee=await l.handleTokenAccount({side:"out",amount:0,mint:new Y(t.lpMint.address),tokenAccount:E,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:Q}=ee,W=Te(ee,["tokenAccount"]);h.addInstruction(W);let j=await this.getCpmmPoolKeys(t.id);return h.addInstruction({instructions:[Cu(new Y(t.programId),this.scope.ownerPubKey,new Y(j.authority),new Y(t.id),Q,B,R,new Y(j.vault.A),new Y(j.vault.B),T,I,new Y(t.lpMint.address),y,i?f.amount:g,i?g:f.amount)],instructionTypes:[V.CpmmAddLiquidity],lookupTableAddress:j.lookupTableAccount?[j.lookupTableAccount]:[]}),h.addCustomComputeBudget(a),h.versionBuild({txVersion:c})}async withdrawLiquidity(e){var Q,W;let{poolInfo:t,lpAmount:n,slippage:i,computeBudgetConfig:o,txVersion:s}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let a=new ve(new Ze(1)).sub(i),u=await this.getRpcPoolInfo(t.id),[c,l]=[a.mul(n.mul(u.baseReserve).div(u.lpAmount)).quotient,a.mul(n.mul(u.quoteReserve).div(u.lpAmount)).quotient],m=await this.scope.fetchEpochInfo(),[p,d]=[Ae(c,t.mintA.extensions.feeConfig,m,!0),Ae(l,t.mintB.extensions.feeConfig,m,!0)],{account:y}=this.scope,f=this.createTxBuilder(),[b,g]=[new Y(t.mintA.address),new Y(t.mintB.address)],P=b.equals(te),A=g.equals(te),h,T,{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Y(t.mintA.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!P,associatedOnly:!P,checkCreateATAOwner:!1});h=I,B&&f.addInstruction(B);let{account:x,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Y(t.mintB.address),notUseTokenAccount:A,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!A,associatedOnly:!A,checkCreateATAOwner:!1});T=x,R&&f.addInstruction(R),(!h||!T)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",y.tokenAccounts);let N=await y.getCreatedTokenAccount({mint:new Y(t.lpMint.address)});N||this.logAndCreateError("cannot found lp token account","tokenAccounts",y.tokenAccounts);let E=await this.getCpmmPoolKeys(t.id);return f.addInstruction({instructions:[Ru(new Y(t.programId),this.scope.ownerPubKey,new Y(E.authority),new Y(t.id),N,h,T,new Y(E.vault.A),new Y(E.vault.B),b,g,new Y(t.lpMint.address),n,c.sub((Q=p.fee)!=null?Q:new Ze(0)),l.sub((W=d.fee)!=null?W:new Ze(0)))],instructionTypes:[V.CpmmWithdrawLiquidity],lookupTableAddress:E.lookupTableAccount?[E.lookupTableAccount]:[]}),f.addCustomComputeBudget(o),f.versionBuild({txVersion:s})}async swap(e){var h,T,x,R,N,E;let{poolInfo:t,baseIn:n,swapResult:i,config:o,computeBudgetConfig:s,txVersion:a}=e,{bypassAssociatedCheck:u,checkCreateATAOwner:c}=M({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),l=this.createTxBuilder(),[m,p]=[new Y(t.mintA.address),new Y(t.mintB.address)],d=await this.scope.account.getCreatedTokenAccount({programId:new Y((h=t.mintA.programId)!=null?h:en),mint:m,associatedOnly:!1}),y=await this.scope.account.getCreatedTokenAccount({programId:new Y((T=t.mintB.programId)!=null?T:en),mint:p,associatedOnly:!1}),I=await this.scope.account.handleTokenAccount({side:n?"in":"out",amount:n?i.sourceAmountSwapped:i.destinationAmountSwapped,mint:m,tokenAccount:d,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:f}=I,b=Te(I,["tokenAccount"]);l.addInstruction(b);let B=await this.scope.account.handleTokenAccount({side:n?"out":"in",amount:n?i.destinationAmountSwapped:i.sourceAmountSwapped,mint:p,tokenAccount:y,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:g}=B,P=Te(B,["tokenAccount"]);l.addInstruction(P),!f&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let A=await this.getCpmmPoolKeys(t.id);return l.addInstruction({instructions:[n?Lu(new Y(t.programId),this.scope.ownerPubKey,new Y(A.authority),new Y(A.config.id),new Y(t.id),f,g,new Y(A.vault.A),new Y(A.vault.B),new Y((x=t.mintA.programId)!=null?x:en),new Y((R=t.mintB.programId)!=null?R:en),m,p,yi(new Y(t.programId),new Y(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped):Ou(new Y(t.programId),this.scope.ownerPubKey,new Y(A.authority),new Y(A.config.id),new Y(t.id),g,f,new Y(A.vault.B),new Y(A.vault.A),new Y((N=t.mintB.programId)!=null?N:en),new Y((E=t.mintA.programId)!=null?E:en),p,m,yi(new Y(t.programId),new Y(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped)],instructionTypes:[n?V.CpmmSwapBaseIn:V.CpmmSwapBaseOut]}),l.addCustomComputeBudget(s),l.versionBuild({txVersion:a})}computePairAmount({poolInfo:e,amount:t,slippage:n,epochInfo:i,baseIn:o}){var P,A,h,T,I,B,x,R;let s=1-Number(n.toSignificant())/100,a=new Ze(new F(t).mul(10**e[o?"mintA":"mintB"].decimals).mul(s).toFixed(0)),u=Ae(a,e[o?"mintA":"mintB"].extensions.feeConfig,i,!1),c=a.sub((P=u.fee)!=null?P:new Ze(0)),[l,m]=[new Ze(new F(e.mintAmountA).mul(10**e.mintA.decimals).toString()),new Ze(new F(e.mintAmountB).mul(10**e.mintB.decimals).toString())],p=new Ze(new F(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,F.ROUND_DOWN));this.logDebug("baseReserve:",l.toString(),"quoteReserve:",m.toString()),this.logDebug("tokenIn:",o?e.mintA.symbol:e.mintB.symbol,"amountIn:",a.toString(),"amountInFee:",(h=(A=u.fee)==null?void 0:A.toString())!=null?h:0,"anotherToken:",o?e.mintB.symbol:e.mintA.symbol,"slippage:",`${n.toSignificant()}%`);let d=o?"base":"quote";this.logDebug("input side:",d);let y=c.mul(p).div(d==="base"?l:m),f={amount:Se,fee:void 0,expirationTime:void 0};c.isZero()||(f=Ae(xp(y,l,m,p)[o?"amountB":"amountA"],e[o?"mintB":"mintA"].extensions.feeConfig,i,!0));let b=new ve(new Ze(1)).add(n),g=Ae(b.mul(f.amount.sub((T=f.fee)!=null?T:new Ze(0))).quotient,e[o?"mintB":"mintA"].extensions.feeConfig,i,!0);return this.logDebug("anotherAmount:",f.amount.toString(),"anotherAmountFee:",(B=(I=f.fee)==null?void 0:I.toString())!=null?B:0,"maxAnotherAmount:",g.amount.toString(),"maxAnotherAmountFee:",(R=(x=g.fee)==null?void 0:x.toString())!=null?R:0),{inputAmountFee:u,anotherAmount:f,maxAnotherAmount:g,liquidity:y}}};function xp(r,e,t,n){let i=r.mul(e).div(n);!i.isZero()&&!r.mul(e).mod(n).isZero()&&(i=i.add(new Ze(1)));let o=r.mul(t).div(n);return!o.isZero()&&!r.mul(t).mod(n).isZero()&&(o=o.add(new Ze(1))),{amountA:i,amountB:o}}var kr=class extends xe{constructor(e){super(e)}static getAddLiquidityDefaultPool({addLiquidityPools:e,poolInfosCache:t}){if(e.length===0)return;if(e.length===1||(e.sort((i,o)=>o.version-i.version),e[0].version!==e[1].version))return e[0];let n=e.filter(i=>i.version===e[0].version);return n.sort((i,o)=>this.comparePoolSize(i,o,t)),n[0]}static comparePoolSize(e,t,n){let i=n[e.id],o=n[t.id];return i===void 0?1:o===void 0?-1:e.baseMint===t.baseMint?i.baseReserve.sub(o.baseReserve).gte(Se)?-1:1:i.baseReserve.sub(o.quoteReserve).gte(Se)?-1:1}async getWSolAccounts(){this.scope.checkOwner(),await this.scope.account.fetchWalletTokenAccounts();let e=this.scope.account.tokenAccounts.filter(t=>t.mint.equals(te));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}=e,i=await this.getWSolAccounts(),o=this.createTxBuilder();o.addCustomComputeBudget(e.computeBudgetConfig);let s=await St({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});o.addInstruction(s);let a=U(t);for(let u=0;u<i.length;u++)a.gte(i[u].amount)?(o.addInstruction({instructions:[Vt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),a.sub(i[u].amount)):(o.addInstruction({instructions:[Vt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),jn({destination:s.addresses.newAccount,source:i[u].publicKey,amount:a,owner:this.scope.ownerPubKey,tokenProgram:n}));return o.build()}async wrapWSol(e,t){let n=await this.getWSolAccounts(),i=this.createTxBuilder(),o=await St({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return i.addInstruction(o),n.length&&i.addInstruction({instructions:[jn({destination:n[0].publicKey,source:o.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[Vt({tokenAccount:o.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),i.build()}};import{TOKEN_PROGRAM_ID as Bp}from"@solana/spl-token";import{PublicKey as Sp,Transaction as es,TransactionInstruction as Kp}from"@solana/web3.js";import Vu from"bn.js";var $e=class extends xe{static getPdaPoolId(e,t){return oe([$e.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,i){return oe([$e.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new Vu(i).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:i,chainTime:o}){if(n.length===0)return[];let s=n.map(l=>$e.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<$e.VERSION_PROJECT.length;l++)a.push(...s.map(m=>$e.getPdaOwnerId(t,m,i,l).publicKey));let u=await It(e,[...s,...a]),c=[];for(let l=0;l<u.length;l++){let m=Math.floor(l/n.length),p=l%n.length,d=s[p],y=a[l],f=u[p],b=u[n.length+l];if(!(f&&b)||f.data.length!==$e.POOL_LAYOUT.span||b.data.length!==$e.OWNER_LAYOUT.span)continue;let g=$e.POOL_LAYOUT.decode(f.data),P=$e.OWNER_LAYOUT.decode(b.data),A=g.openTime.toNumber(),h=g.endTime.toNumber(),T=P.tokenInfo.map(x=>x.debtAmount.gt(new Vu(0))).filter(x=>!x).length!==3,I=o>A&&o<h&&g.status===1,B=T&&I;c.push({programId:t,poolId:d,ammId:g.ammId,ownerAccountId:y,snapshotLpAmount:P.lpAmount,project:$e.VERSION_PROJECT[m],openTime:A,endTime:h,canClaim:B,canClaimErrorType:T?I?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:g.tokenInfo.map((x,R)=>({mintAddress:x.mintAddress,mintVault:x.mintVault,mintDecimals:x.mintDecimals,perLpLoss:x.perLpLoss,debtAmount:P.tokenInfo[R].debtAmount.add(P.tokenInfo[R].claimedAmount)}))})}return c}async makeClaimTransaction({poolInfo:e,ownerInfo:t}){t.wallet||this.scope.checkOwner();let n=this.createTxBuilder(),i=t.wallet||this.scope.ownerPubKey,o=[];for(let u of e.tokenInfo){let{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({mint:u.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:u.mintAddress.equals(de.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!u.mintAddress.equals(de.WSOL.mint),associatedOnly:u.mintAddress.equals(de.WSOL.mint)?!1:t.associatedOnly});l&&n.addInstruction(l),o.push(c)}n.addInstruction({instructions:[$e.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:i,ownerPda:e.ownerAccountId,claimAddress:o}})]});let{transaction:s,signers:a}=n.build();return[{transaction:s,signer:a}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t}){let n=this.createTxBuilder(),i=t.wallet||this.scope.ownerPubKey,o={};for(let c of e){let l=[];for(let m of c.tokenInfo){let{account:p,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({mint:m.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:m.mintAddress.equals(de.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!m.mintAddress.equals(de.WSOL.mint),associatedOnly:m.mintAddress.equals(de.WSOL.mint)?!1:t.associatedOnly});d&&n.addInstruction(d),p&&(o[m.mintAddress.toString()]=p,l.push(p))}n.addInstruction({instructions:[$e.makeClaimInstruction({programId:c.programId,poolInfo:c,ownerInfo:{wallet:i,ownerPda:c.ownerAccountId,claimAddress:l}})]})}let{transaction:s,signers:a}=n.build(),u=n.allInstructions;return Gr(u,[i,...a.map(c=>c.publicKey)])?[{transaction:s,signer:a}]:[{transaction:new es().add(...u.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new es().add(...u.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new es().add(...n.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let i=L([]),o=[{pubkey:n.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:n.ownerPda,isSigner:!1,isWritable:!0},...n.claimAddress.map(u=>({pubkey:u,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:u})=>({pubkey:u,isSigner:!1,isWritable:!0})),{pubkey:Bp,isSigner:!1,isWritable:!1}],s=Buffer.alloc(i.span);i.encode({},s);let a=Buffer.from([10,66,208,184,161,6,191,98,...s]);return new Kp({keys:o,programId:e,data:a})}},dt=$e;dt.CLAIMED_NUM=3,dt.POOL_LAYOUT=L([pe(8),_("bump"),_("status"),w("openTime"),w("endTime"),S("ammId"),q(L([_("mintDecimals"),S("mintAddress"),S("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),$e.CLAIMED_NUM,"tokenInfo"),q(w(),10,"padding")]),dt.OWNER_LAYOUT=L([pe(8),_("bump"),_("version"),S("poolId"),S("owner"),w("lpAmount"),q(L([S("mintAddress"),w("debtAmount"),w("claimedAmount")]),$e.CLAIMED_NUM,"tokenInfo"),q(w(),4,"padding")]),dt.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new Sp(e)),dt.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},dt.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as ns}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Du}from"@solana/spl-token";import hr from"bn.js";import{TransactionInstruction as Rp,SYSVAR_RENT_PUBKEY as Lp}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Eu}from"@solana/spl-token";import{createInitializeAccountInstruction as Fu}from"@solana/spl-token";import{SystemProgram as bn,Transaction as vu}from"@solana/web3.js";function Cp(r="accountFlags"){let e=new Jr(r);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var ts=L([pe(5),Cp("accountFlags"),S("ownAddress"),w("vaultSignerNonce"),S("baseMint"),S("quoteMint"),S("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),S("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),S("requestQueue"),S("eventQueue"),S("bids"),S("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),pe(7)]);function Op({programId:r,marketInfo:e}){let t=L([_("version"),ze("instruction"),w("baseLotSize"),w("quoteLotSize"),Bt("feeRateBps"),w("vaultSignerNonce"),w("quoteDustThreshold")]),n=[{pubkey:e.id,isSigner:!1,isWritable:!0},{pubkey:e.requestQueue,isSigner:!1,isWritable:!0},{pubkey:e.eventQueue,isSigner:!1,isWritable:!0},{pubkey:e.bids,isSigner:!1,isWritable:!0},{pubkey:e.asks,isSigner:!1,isWritable:!0},{pubkey:e.baseVault,isSigner:!1,isWritable:!0},{pubkey:e.quoteVault,isSigner:!1,isWritable:!0},{pubkey:e.baseMint,isSigner:!1,isWritable:!1},{pubkey:e.quoteMint,isSigner:!1,isWritable:!1},{pubkey:e.authority?e.quoteMint:Lp,isSigner:!1,isWritable:!1}].concat(e.authority?{pubkey:e.authority,isSigner:!1,isWritable:!1}:[]).concat(e.authority&&e.pruneAuthority?{pubkey:e.pruneAuthority,isSigner:!1,isWritable:!1}:[]),i=Buffer.alloc(t.span);return t.encode({version:0,instruction:0,baseLotSize:e.baseLotSize,quoteLotSize:e.quoteLotSize,feeRateBps:e.feeRateBps,vaultSignerNonce:e.vaultSignerNonce,quoteDustThreshold:e.quoteDustThreshold},i),new Rp({keys:n,programId:r,data:i})}async function Wu({connection:r,wallet:e,marketInfo:t}){let n=new vu,i=await r.getMinimumBalanceForRentExemption(165);n.add(bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:i,space:165,programId:Eu}),bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:i,space:165,programId:Eu}),Fu(t.baseVault.publicKey,t.baseMint,t.vaultOwner),Fu(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let o=new vu;return o.add(bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await r.getMinimumBalanceForRentExemption(ts.span),space:ts.span,programId:t.programId}),bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.requestQueue.seed,newAccountPubkey:t.requestQueue.publicKey,lamports:await r.getMinimumBalanceForRentExemption(5120+12),space:5120+12,programId:t.programId}),bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.eventQueue.seed,newAccountPubkey:t.eventQueue.publicKey,lamports:await r.getMinimumBalanceForRentExemption(262144+12),space:262144+12,programId:t.programId}),bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.bids.seed,newAccountPubkey:t.bids.publicKey,lamports:await r.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.asks.seed,newAccountPubkey:t.asks.publicKey,lamports:await r.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),Op({programId:t.programId,marketInfo:{id:t.id.publicKey,requestQueue:t.requestQueue.publicKey,eventQueue:t.eventQueue.publicKey,bids:t.bids.publicKey,asks:t.asks.publicKey,baseVault:t.baseVault.publicKey,quoteVault:t.quoteVault.publicKey,baseMint:t.baseMint,quoteMint:t.quoteMint,baseLotSize:t.baseLotSize,quoteLotSize:t.quoteLotSize,feeRateBps:t.feeRateBps,vaultSignerNonce:t.vaultSignerNonce,quoteDustThreshold:t.quoteDustThreshold}})),[{transaction:n,signer:[],instructionTypes:[V.CreateAccount,V.CreateAccount,V.InitAccount,V.InitAccount]},{transaction:o,signer:[],instructionTypes:[V.CreateAccount,V.CreateAccount,V.CreateAccount,V.CreateAccount,V.CreateAccount,V.InitMarket]}]}var Rn=class extends xe{async create({baseInfo:e,quoteInfo:t,lotSize:n,tickSize:i,dexProgramId:o,txVersion:s,computeBudgetConfig:a}){let u=this.scope.ownerPubKey,c=Ye({fromPublicKey:u,programId:o}),l=Ye({fromPublicKey:u,programId:o}),m=Ye({fromPublicKey:u,programId:o}),p=Ye({fromPublicKey:u,programId:o}),d=Ye({fromPublicKey:u,programId:o}),y=Ye({fromPublicKey:u,programId:Du}),f=Ye({fromPublicKey:u,programId:Du}),b=0,g=new hr(100);function P(){let N=new hr(0);for(;;)try{return{vaultOwner:ns.createProgramAddressSync([c.publicKey.toBuffer(),N.toArrayLike(Buffer,"le",8)],o),vaultSignerNonce:N}}catch{if(N.iaddn(1),N.gt(new hr(25555)))throw Error("find vault owner error")}}let{vaultOwner:A,vaultSignerNonce:h}=P(),T=new hr(Math.round(10**e.decimals*n)),I=new hr(Math.round(n*10**t.decimals*i));if(T.eq(Se))throw Error("lot size is too small");if(I.eq(Se))throw Error("tick size or lot size is too small");let B=await Wu({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:o,id:c,baseMint:e.mint,quoteMint:t.mint,baseVault:y,quoteVault:f,vaultOwner:A,requestQueue:l,eventQueue:m,bids:p,asks:d,feeRateBps:b,quoteDustThreshold:g,vaultSignerNonce:h,baseLotSize:T,quoteLotSize:I}}),x=this.createTxBuilder();x.addCustomComputeBudget(a),x.addInstruction({instructions:B[0].transaction.instructions,signers:B[0].signer});let R=[];for await(let N of B.slice(1,B.length)){let E=this.createTxBuilder();E.addCustomComputeBudget(a),E.addInstruction({instructions:N.transaction.instructions,signers:N.signer,instructionTypes:N.instructionTypes});let Q=await E.versionBuild({txVersion:s});R.push(Q)}return x.versionMultiBuild({extraPreBuildData:R,extInfo:{address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:p.publicKey,asks:d.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new ns(e.mint),quoteMin:new ns(t.mint)}},txVersion:s})}};import{PublicKey as Ir}from"@solana/web3.js";import{PublicKey as Np,TransactionInstruction as is,SYSVAR_CLOCK_PUBKEY as Mp}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as os}from"@solana/spl-token";var rs=L([_("instruction"),la("amount")]),Tr=L([_("instruction")]);function BB({programId:r,amount:e,instructionKeys:t}){let n=[{pubkey:new Np("11111111111111111111111111111111"),isSigner:!1,isWritable:!1},{pubkey:os,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:Ei,isSigner:!1,isWritable:!1},...Object.entries(t).map(([o,s])=>({pubkey:s,isSigner:o==="userOwner",isWritable:!["authority","userOwner","userIdoCheck","userStakeInfo"].includes(o)}))],i=Buffer.alloc(rs.span);return rs.encode({instruction:1,amount:Number(e)},i),new is({keys:n,programId:r,data:i})}function gi({programId:r},e){let t=[{pubkey:os,isSigner:!1,isWritable:!1},{pubkey:Ei,isSigner:!1,isWritable:!1},...Object.entries(e).map(([i,o])=>({pubkey:o,isSigner:i==="userOwner",isWritable:!["authority","userOwner"].includes(i)}))],n=Buffer.alloc(Tr.span);return Tr.encode({instruction:2},n),new is({keys:t,programId:r,data:n})}function ss(r){let{poolConfig:e,userKeys:t,side:n}=r,i=n==="base"?t.baseTokenAccount:t.quoteTokenAccount,o=n==="base"?e.baseVault:e.quoteVault,s=Buffer.alloc(Tr.span);Tr.encode({instruction:2},s);let a=[{pubkey:os,isWritable:!1,isSigner:!1},{pubkey:Mp,isWritable:!1,isSigner:!1},{pubkey:e.id,isWritable:!0,isSigner:!1},{pubkey:e.authority,isWritable:!1,isSigner:!1},{pubkey:o,isWritable:!0,isSigner:!1},{pubkey:i,isWritable:!0,isSigner:!1},{pubkey:t.ledgerAccount,isWritable:!0,isSigner:!1},{pubkey:t.owner,isWritable:!1,isSigner:!0}];return new is({programId:e.programId,keys:a,data:s})}import qu from"bn.js";var _p={[Yn.IDO_PROGRAM_ID_V1.toString()]:1,[Yn.IDO_PROGRAM_ID_V2.toString()]:2,[Yn.IDO_PROGRAM_ID_V3.toString()]:3,[Yn.IDO_PROGRAM_ID_V4.toString()]:4},Ln=class extends xe{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:i=!1,txVersion:o}){let s=this.createTxBuilder(),a=_p[t.programId];a||this.logAndCreateError("invalid version",a);let u=fe(t),[c,l]=[!new qu(e.coin).isZero(),!new qu(e.pc).isZero()],m=u.projectInfo.mint.address.equals(te),{account:p,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.projectInfo.mint.programId,mint:u.projectInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!m,notUseTokenAccount:m,associatedOnly:m?!1:n,checkCreateATAOwner:i});!p&&c&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),c&&d&&s.addInstruction(d);let y=u.buyInfo.mint.address.equals(te),{account:f,instructionParams:b}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.buyInfo.mint.programId,mint:u.buyInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,notUseTokenAccount:y,associatedOnly:y?!1:n,checkCreateATAOwner:i});if(!p&&l&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),l&&b&&s.addInstruction(b),(!p||!f)&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address,t.buyInfo.mint.address),a===3)return s.addInstruction({instructions:[...c?[gi({programId:u.programId},{idoId:u.id,authority:u.authority,poolTokenAccount:u.projectInfo.vault,userTokenAccount:p,userIdoInfo:new Ir(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[gi({programId:new Ir(t.programId)},{idoId:u.id,authority:u.authority,poolTokenAccount:u.buyInfo.vault,userTokenAccount:f,userIdoInfo:new Ir(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:o});if(a<3)return!c&&!l&&this.logAndCreateError("no claimable rewards"),s.addInstruction({instructions:[gi({programId:u.programId},{idoId:u.id,authority:u.authority,poolQuoteTokenAccount:u.buyInfo.vault,poolBaseTokenAccount:u.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:p,userIdoInfo:new Ir(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]}).versionBuild({txVersion:o});let g={poolConfig:{id:u.id,programId:u.programId,authority:u.authority,baseVault:u.projectInfo.vault,quoteVault:u.buyInfo.vault,baseToken:t.projectInfo.mint,quoteToken:t.buyInfo.mint},userKeys:{baseTokenAccount:p,quoteTokenAccount:f,ledgerAccount:new Ir(e.userIdoInfo),owner:this.scope.ownerPubKey}};return s.addInstruction({instructions:[...c?[ss(D(M({},g),{side:"base"}))]:[],...l?[ss(D(M({},g),{side:"quote"}))]:[]]}).versionBuild({txVersion:o})}};import{PublicKey as Vp}from"@solana/web3.js";import{MintLayout as Ep,TOKEN_2022_PROGRAM_ID as as,TOKEN_PROGRAM_ID as us}from"@solana/spl-token";var xr=class extends xe{constructor(t){super(t);this._tokenList=[];this._tokenMap=new Map;this._blackTokenMap=new Map;this._mintGroup={official:new Set,jup:new Set,extra:new Set};this._extraTokenList=[]}async load(t){this.checkDisabled();let{forceUpdate:n=!1,type:i="strict"}=t||{},{mintList:o,blacklist:s}=await this.scope.fetchV3TokenList(n),a=await this.scope.fetchJupTokenList(i,n);this._tokenList=[],this._tokenMap=new Map,this._blackTokenMap=new Map,this._mintGroup={official:new Set,jup:new Set,extra:new Set},this._tokenMap.set(Tt.address,Tt),this._mintGroup.official.add(Tt.address),s.forEach(u=>{this._blackTokenMap.set(u.address,D(M({},u),{priority:-1}))}),o.forEach(u=>{var c;this._blackTokenMap.has(u.address)||(this._tokenMap.set(u.address,D(M({},u),{type:"raydium",priority:2,programId:(c=u.programId)!=null?c:u.tags.includes("token-2022")?as.toBase58():us.toBase58()})),this._mintGroup.official.add(u.address))}),a.forEach(u=>{var c;this._blackTokenMap.has(u.address)||this._tokenMap.has(u.address)||(this._tokenMap.set(u.address,D(M({},u),{type:"jupiter",priority:1,programId:(c=u.programId)!=null?c:u.tags.includes("token-2022")?as.toBase58():us.toBase58()})),this._mintGroup.jup.add(u.address))}),this._extraTokenList.forEach(u=>{this._blackTokenMap.has(u.address)||this._tokenMap.has(u.address)||(this._tokenMap.set(u.address,D(M({},u),{type:"extra",priority:1,programId:u.programId||u.tags.includes("token-2022")?as.toBase58():us.toBase58()})),this._mintGroup.extra.add(u.address))}),this._tokenList=Array.from(this._tokenMap).map(u=>u[1])}get tokenList(){return this._tokenList}get tokenMap(){return this._tokenMap}get blackTokenMap(){return this._blackTokenMap}get mintGroup(){return this._mintGroup}async getTokenInfo(t){if(!t)throw new Error("please input mint");let n=t.toString(),i=this._tokenMap.get(n);if(i)return i;if(n.toLocaleUpperCase()==="SOL")return Tt;let o=(await this.scope.api.getTokenInfo([n]))[0];if(o)return this._mintGroup.extra.add(n),this._tokenMap.set(n,D(M({},o),{priority:2})),o;let s=await this.scope.connection.getAccountInfo(new Vp(n));if(!s)throw new Error(`mint address not found: ${n}`);let a=Ep.decode(s.data),u=n.toString().substring(0,6),c={chainId:101,address:n,programId:s.owner.toBase58(),logoURI:"",symbol:u,name:u,decimals:a.decimals,tags:[],extensions:{},priority:0,type:"unknown"};return this._mintGroup.extra.add(n),this._tokenMap.set(n,c),c}};var wi=class{constructor(e){this.rawBalances=new Map;let{connection:t,cluster:n,owner:i,api:o,defaultChainTime:s,defaultChainTimeOffset:a,apiCacheTime:u}=e;this._connection=t,this.cluster=n||"mainnet",this._owner=i?new gt(i):void 0,this._signAllTransactions=e.signAllTransactions,this.api=o,this._apiCacheTime=u||5*60*1e3,this.logger=ae("Raydium"),this.farm=new ar({scope:this,moduleName:"Raydium_Farm"}),this.account=new Zn({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new br({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new xr({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new kr({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new gr({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new Pr({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new dt({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new Rn({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new Ln({scope:this,moduleName:"Raydium_ido"}),this.availability={};let c=new Date().getTime();this.apiData={},a&&(this._chainTime={fetched:c,value:{chainTime:s||Date.now()-a,offset:a}})}static async load(e){var l;let t=Fp({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:i,logCount:o,logRequests:s,urlConfigs:a}=t,u=new jr({cluster:n,timeout:i,urlConfigs:a,logCount:o,logRequests:s}),c=new wi(D(M({},t),{api:u}));return await c.fetchAvailabilityStatus((l=e.disableFeatureCheck)!=null?l:!0),e.disableLoadToken||await c.token.load({type:e.jupTokenType}),c}get owner(){return this._owner}get ownerPubKey(){if(!this._owner)throw new Error(Zr);return this._owner.publicKey}setOwner(e){return this._owner=e?new gt(e):void 0,this}get connection(){if(!this._connection)throw new Error(sa);return this._connection}setConnection(e){return this._connection=e,this}get signAllTransactions(){return this._signAllTransactions}setSignAllTransactions(e){return this._signAllTransactions=e,this}checkOwner(){if(!this.owner)throw this.logger.error(Zr),new Error(Zr)}isCacheInvalidate(e){return new Date().getTime()-e>this._apiCacheTime}async fetchChainTime(){try{let e=await this.api.getChainTimeOffset();this._chainTime={fetched:Date.now(),value:{chainTime:Date.now()+e.offset*1e3,offset:e.offset*1e3}}}catch{this._chainTime=void 0}}async fetchV3TokenList(e){if(this.apiData.tokenList&&!this.isCacheInvalidate(this.apiData.tokenList.fetched)&&!e)return this.apiData.tokenList.data;let t=await this.api.getTokenList(),n={fetched:Date.now(),data:t};return this.apiData.tokenList=n,n.data}async fetchJupTokenList(e,t){var o;let n=(o=this.apiData.jupTokenList)==null?void 0:o[e];if(n&&!this.isCacheInvalidate(n.fetched)&&!t)return n.data;let i=await this.api.getJupTokenList(e);return this.apiData.jupTokenList=D(M({},this.apiData.jupTokenList),{[e]:{fetched:Date.now(),data:i}}),this.apiData.jupTokenList[e].data}get chainTimeData(){var e;return(e=this._chainTime)==null?void 0:e.value}async chainTimeOffset(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.offset:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.offset)||0)}async currentBlockChainTime(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.chainTime:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.chainTime)||Date.now())}async fetchEpochInfo(){return this._epochInfo&&Date.now()-this._epochInfo.fetched<=1e3*30?this._epochInfo.value:(this._epochInfo={fetched:Date.now(),value:await this.connection.getEpochInfo()},this._epochInfo.value)}async fetchAvailabilityStatus(e){if(e)return{};try{let t=await this.api.fetchAvailabilityStatus(),n=t.all===!1;return this.availability={all:t.all,swap:n?!1:t.swap,createConcentratedPosition:n?!1:t.createConcentratedPosition,addConcentratedPosition:n?!1:t.addConcentratedPosition,addStandardPosition:n?!1:t.addStandardPosition,removeConcentratedPosition:n?!1:t.removeConcentratedPosition,removeStandardPosition:n?!1:t.removeStandardPosition,addFarm:n?!1:t.addFarm,removeFarm:n?!1:t.removeFarm},t}catch{return{}}}};import{TOKEN_PROGRAM_ID as ms,TOKEN_2022_PROGRAM_ID as cs}from"@solana/spl-token";import{PublicKey as pt,TransactionInstruction as ds,SystemProgram as Gu}from"@solana/web3.js";import ls from"bn.js";function OS(r,e,t,n,i,o,s,a,u,c,l,m){let p=L([_("instruction"),w("amountIn"),w("amountOut")]),d=[{pubkey:Gu.programId,isSigner:!1,isWritable:!1},{pubkey:ms,isSigner:!1,isWritable:!1},{pubkey:new pt(t.programId),isSigner:!1,isWritable:!1},{pubkey:new pt(t.id),isSigner:!1,isWritable:!0},{pubkey:new pt(n.id),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let f=fe(t);d.push({pubkey:f.config.id,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.A:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.B:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},...m.map(b=>({pubkey:b,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let f=fe(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:new pt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0})}else{let f=fe(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},...f.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:f.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:f.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0}])}let y=Buffer.alloc(p.span);return p.encode({instruction:4,amountIn:c,amountOut:l},y),new ds({keys:d,programId:r,data:y})}function NS(r,e,t,n,i,o,s,a,u,c){let l=L([_("instruction")]),m=[{pubkey:Gu.programId,isSigner:!1,isWritable:!1},{pubkey:ms,isSigner:!1,isWritable:!1},{pubkey:new pt(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new pt(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new pt(String(t.id)),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let d=fe(n);m.push({pubkey:d.config.id,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.A:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.B:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},...c.map(y=>({pubkey:y,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let d=fe(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:new pt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0})}else{let d=fe(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},...d.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:d.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:d.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0}])}let p=Buffer.alloc(l.span);return l.encode({instruction:5},p),new ds({keys:m,programId:r,data:p})}function Uu(r,e,t,n,i,o){if(r.pooltype.includes("StablePool")){let s=fe(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:new pt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]}else if(r.type==="Concentrated"){let s=r,a=fe(e),u=s.mintA.address===t;return[{pubkey:new pt(String(r.programId)),isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a.config.id,isSigner:!1,isWritable:!1},{pubkey:a.id,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.A:a.vault.B,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.B:a.vault.A,isSigner:!1,isWritable:!0},{pubkey:a.id,isSigner:!1,isWritable:!0},...a.mintA.programId.equals(cs)||a.mintB.programId.equals(cs)?[{pubkey:cs,isSigner:!1,isWritable:!1},{pubkey:An,isSigner:!1,isWritable:!1},{pubkey:u?a.mintA.address:a.mintB.address,isSigner:!1,isWritable:!1},{pubkey:u?a.mintB.address:a.mintA.address,isSigner:!1,isWritable:!1}]:[],...(o!=null?o:[]).map(c=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:lt(new pt(String(r.programId)),new pt(r.id)).publicKey,isSigner:!1,isWritable:!0}]}else{let s=fe(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},...s.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:s.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:s.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]]}}function vp(r,e,t,n,i,o,s,a,u,c,l,m,p,d){let y=L([_("instruction"),w("amountIn"),w("amountOut")]),f=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:ms,isSigner:!1,isWritable:!1}];f.push(...Uu(a,c,o,t,n,d[0])),f.push(...Uu(u,l,s,n,i,d[1]));let b=Buffer.alloc(y.span);return y.encode({instruction:8,amountIn:m,amountOut:p},b),new ds({keys:f,programId:r,data:b})}async function MS({routeProgram:r,ownerInfo:e,inputMint:t,swapInfo:n}){var i,o,s,a,u,c;if(n.routeType==="amm")if(n.poolInfo[0].type==="Concentrated"){let l=fe(n.poolKey[0]),m=t.equals(l.mintA.address)?Ct.add(at):Rt.sub(at);return await Be.makeSwapBaseInInstructions({poolInfo:l,poolKeys:l,ownerInfo:{wallet:e.wallet,tokenAccountA:l.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:l.mintA.address.equals(t)?e.destinationToken:e.sourceToken},inputMint:t,amountIn:n.amountIn.amount.raw,amountOutMin:n.minAmountOut.amount.raw.sub((o=(i=n.minAmountOut.fee)==null?void 0:i.raw)!=null?o:new ls(0)),sqrtPriceLimitX64:m,remainingAccounts:n.remainingAccounts[0]})}else{let l=n.poolKey[0];return{signers:[],instructions:[ai({poolKeys:l,version:n.poolInfo[0].pooltype.includes("StablePool")?5:4,userKeys:{tokenAccountIn:e.sourceToken,tokenAccountOut:e.destinationToken,owner:e.wallet},amountIn:n.amountIn.amount.raw,amountOut:n.minAmountOut.amount.raw.sub((a=(s=n.minAmountOut.fee)==null?void 0:s.raw)!=null?a:new ls(0)),fixedSide:"in"})],lookupTableAddress:l.lookupTableAccount?[l.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?V.AmmV5SwapBaseIn:V.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let l=n.poolInfo[0],m=n.poolInfo[1],p=n.poolKey[0],d=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[vp(r,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.minMiddleAmountFee.token.mint.toString(),l,m,p,d,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((c=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?c:new ls(0)),n.remainingAccounts)],instructionTypes:[V.RouteSwap],lookupTableAddress:[p.lookupTableAccount,d.lookupTableAccount].filter(y=>y!==void 0),address:{}}}else throw Error("route type error")}import zu from"bn.js";var ps=new zu(1e6);function Wp(r,e,t){return r.mul(e).add(t).sub(new zu(1)).div(t)}function Xu(r,e,t){return r.mul(e).div(t)}var Ai=class{static tradingFee(e,t){return Wp(e,t,ps)}static protocolFee(e,t){return Xu(e,t,ps)}static fundFee(e,t){return Xu(e,t,ps)}};import Br from"bn.js";function Pi(r,e){if(e.isZero())throw Error("divisor is zero");return r.mod(e)}function Dp(r,e){if(e.isZero())throw Error("rhs is zero");let t=r.div(e);if(t.isZero())throw Error("quotient is zero");let n=Pi(r,e);if(n.gt(On)){t=t.add(new Br(1));let i=r.div(t);n=Pi(r,t),n.gt(On)&&(i=i.add(new Br(1)))}return[t,e]}var On=new Br(0),ki=class{static swapWithoutFees(e,t,n){let i=t.mul(n),o=t.add(e),[s,a]=Dp(i,o),u=a.sub(t),c=n.sub(s);if(c.isZero())throw Error("destinationAmountSwapped is zero");return{sourceAmountSwapped:u,destinationAmountSwapped:c}}static lpTokensToTradingTokens(e,t,n,i,o){let s=e.mul(n).div(t),a=e.mul(i).div(t);if(o===0)return{tokenAmount0:s,tokenAmount1:a};if(o===1)return Pi(e.mul(n),t).gt(On)&&s.gt(On)&&(s=s.add(new Br(1))),Pi(e.mul(i),t).gt(On)&&a.gt(On)&&(a=a.add(new Br(1))),{tokenAmount0:s,tokenAmount1:a};throw Error("roundDirection value error")}};var Yu=(t=>(t[t.Floor=0]="Floor",t[t.Ceiling=1]="Ceiling",t))(Yu||{}),Qu=class{static validate_supply(e,t){if(e.isZero())throw Error("tokenAmount0 is zero");if(t.isZero())throw Error("tokenAmount1 is zero")}static swap(e,t,n,i){let o=Ai.tradingFee(e,i),s=e.sub(o),{sourceAmountSwapped:a,destinationAmountSwapped:u}=ki.swapWithoutFees(s,t,n),c=a.add(o);return{newSwapSourceAmount:t.add(c),newSwapDestinationAmount:n.sub(u),sourceAmountSwapped:c,destinationAmountSwapped:u,tradeFee:o}}};var Hu={[Qr.toBase58()]:3},ju={3:Qr};var qp=L([pe(5),pe(8),S("ownAddress"),w("vaultSignerNonce"),S("baseMint"),S("quoteMint"),S("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),S("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),S("requestQueue"),S("eventQueue"),S("bids"),S("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),pe(7)]),Zu={3:qp};import{PublicKey as $u}from"@solana/web3.js";var hi=ae("Serum"),Ju=class{static getProgramId(e){let t=ju[e];return t||hi.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=Hu[t];return n||hi.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=Zu[e];return t||hi.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()],i=0,o;for(;i<100;){try{let s=n.concat(Buffer.from([i]),Buffer.alloc(7));o=$u.createProgramAddressSync(s,e)}catch(s){if(s instanceof TypeError)throw s;i++;continue}return{publicKey:o,nonce:i}}return hi.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:$u.default,nonce:i}}};var KK=r=>r;export{db as ACCOUNT_TYPE_SIZE,Wb as ALL_PROGRAM_ID,Xd as AMM_CONFIG_SEED,Ll as AMM_STABLE,Ji as AMM_V4,cf as ANAMint,Xe as API_URLS,Bl as AccountType,sT as AmmConfigLayout,jr as Api,uu as BIT_PRECISION,zt as BNDivCeil,an as BNLayout,gy as BN_100,wy as BN_1000,Ay as BN_10000,by as BN_FIVE,Us as BN_ONE,nn as BN_TEN,yy as BN_THREE,fy as BN_TWO,Se as BN_ZERO,zg as BitStructure,ca as Blob,Ol as CLMM_PROGRAM_ID,Ei as CLOCK_PROGRAM_ID,vl as CREATE_CPMM_POOL_AUTH,Wl as CREATE_CPMM_POOL_FEE_ACC,Fl as CREATE_CPMM_POOL_PROGRAM,gr as Clmm,Be as ClmmInstrument,ki as ConstantProductCurve,Nu as CpmmConfigInfoLayout,Ai as CpmmFee,Mu as CpmmPoolInfoLayout,vn as Currency,rn as CurrencyAmount,Qu as CurveCalculator,pg as DEV_API_URLS,Fb as DEV_CREATE_CPMM_POOL_AUTH,vb as DEV_CREATE_CPMM_POOL_FEE_ACC,Eb as DEV_CREATE_CPMM_POOL_PROGRAM,Rd as DataElement,lf as ETHMint,Yo as EXTENSION_TICKARRAY_BITMAP_SIZE,La as FARM_LOCK_MINT,Oa as FARM_LOCK_VAULT,Zi as FARM_PROGRAM_ID_V3,$i as FARM_PROGRAM_ID_V5,Tn as FARM_PROGRAM_ID_V6,At as FARM_PROGRAM_TO_VERSION,Ma as FARM_VERSION_TO_LEDGER_LAYOUT,Na as FARM_VERSION_TO_STATE_LAYOUT,mi as FEE_RATE_DENOMINATOR,ps as FEE_RATE_DENOMINATOR_VALUE,Jd as FETCH_TICKARRAY_COUNT,$d as Fee,ne as Fraction,Yn as IDO_ALL_PROGRAM,Ml as IDO_PROGRAM_ID_V1,_l as IDO_PROGRAM_ID_V2,Vl as IDO_PROGRAM_ID_V3,El as IDO_PROGRAM_ID_V4,Vr as INSTRUCTION_PROGRAM_ID,V as InstructionType,eo as JupTokenType,ku as LIQUIDITY_FEES_DENOMINATOR,Pu as LIQUIDITY_FEES_NUMERATOR,sp as LIQUIDITY_VERSION_TO_SERUM_VERSION,hk as LIQUIDITY_VERSION_TO_STATE_LAYOUT,cu as LOG_B_2_X32,lu as LOG_B_P_ERR_MARGIN_LOWER_X64,mu as LOG_B_P_ERR_MARGIN_UPPER_X64,zr as LOOKUP_TABLE_CACHE,Qn as Layout,ce as LiquidityMath,ic as LogLevel,Bi as Logger,ts as MARKET_STATE_LAYOUT_V2,qp as MARKET_STATE_LAYOUT_V3,Zu as MARKET_VERSION_TO_STATE_LAYOUT,Zs as MAX_BASE64_SIZE,Rt as MAX_SQRT_PRICE_X64,et as MAX_TICK,An as MEMO_PROGRAM_ID,Vs as MEMO_PROGRAM_ID2,Pn as METADATA_PROGRAM_ID,Ct as MIN_SQRT_PRICE_X64,Qe as MIN_TICK,Kn as MODEL_DATA_PUBKEY,Ju as Market,$ as MathUtil,zo as MaxU64,au as MaxUint128,Ft as NEGATIVE_ONE,uf as NRVMint,at as ONE,Rl as OPEN_BOOK_PROGRAM,jd as OPERATION_SEED,Ho as ObservationInfoLayout,np as ObservationLayout,yu as OperationLayout,ao as OptionLayout,gt as Owner,ef as PAIMint,Qd as POOL_REWARD_VAULT_SEED,zd as POOL_SEED,Zd as POOL_TICK_ARRAY_BITMAP_SEED,Yd as POOL_VAULT_SEED,iu as POSITION_SEED,ve as Percent,Ul as PoolFetchType,di as PoolInfoLayout,He as PoolUtils,pi as PositionInfoLayout,ip as PositionRewardInfoLayout,fr as PositionUtils,Ge as Price,aT as ProtocolPositionLayout,li as Q128,ut as Q64,Jp as RAYMint,nt as RENT_PROGRAM_ID,wi as Raydium,rp as RewardInfo,Yu as RoundDirection,qi as Rounding,Nl as Router,Hu as SERUM_PROGRAMID_TO_VERSION,Qr as SERUM_PROGRAM_ID_V3,ju as SERUM_VERSION_TO_PROGRAMID,oa as SESSION_KEY,Ne as SOLMint,Tt as SOL_INFO,ZP as SPL_MINT_LAYOUT,tf as SRMMint,to as STORAGE_KEY,Es as SYSTEM_PROGRAM_ID,Z as SqrtPriceMath,Sn as StableLayout,uo as Structure,pn as SwapMath,dn as TICK_ARRAY_BITMAP_SIZE,Hd as TICK_ARRAY_SEED,_e as TICK_ARRAY_SIZE,Hk as TICK_SPACINGS,Me as TOKEN_WSOL,vt as TickArrayBitmap,fu as TickArrayBitmapExtensionLayout,pr as TickArrayBitmapExtensionUtils,dr as TickArrayLayout,op as TickLayout,fn as TickMath,le as TickQuery,G as TickUtils,de as Token,he as TokenAmount,Yr as TxBuilder,Wn as TxVersion,mr as U64Resolution,Zk as U64_IGNORE_RANGE,io as UInt,nf as USDCMint,af as USDHMint,rf as USDTMint,Cl as UTIL1216,co as Union,Ca as Voter,ld as VoterDepositEntry,cd as VoterLockup,Ka as VoterRegistrar,ud as VoterVotingMintConfig,te as WSOLMint,Jr as WideBits,_t as WrappedLayout,me as ZERO,vs as _100_PERCENT,k as accountMeta,ty as add,Ur as addComputeBudget,Fo as addLiquidityLayout,Lw as array,wo as associatedLedgerAccountLayout,oo as bits,pe as blob,De as bool,Lo as calFarmRewardAmount,Wp as ceilDiv,Dn as checkLegacyTxSize,qn as checkV0TxSize,Qi as chunkArray,Tr as claimLayout,Vt as closeAccountInstruction,Mi as commonSystemAccountMeta,Ea as createAssociatedLedgerAccountInstruction,ae as createLogger,Xa as createPoolFeeLayout,Ja as createPoolV4InstructionV2,kk as createPoolV4Layout,St as createWSolAccountInstructions,Pw as cstr,vf as currencyEquals,pl as decimalToFraction,Fm as decodeBool,Zf as div,vr as divCeil,Je as dwLayout,vm as encodeBool,Og as endlessRetry,ll as eq,yw as f32,bw as f32be,gw as f64,ww as f64be,ho as farmAddRewardLayout,VA as farmLedgerLayoutV3_1,Jn as farmLedgerLayoutV3_2,EA as farmLedgerLayoutV5_1,Ba as farmLedgerLayoutV5_2,Sa as farmLedgerLayoutV6_1,Va as farmRewardInfoToConfig,Po as farmRewardLayout,ko as farmRewardRestartLayout,ad as farmRewardTimeInfoLayout,Ia as farmStateV3Layout,xa as farmStateV5Layout,$n as farmStateV6Layout,uP as fetchMultipleFarmInfoAndUpdate,ET as fetchMultipleInfo,pb as fetchMultipleMintInfos,oe as findProgramAddress,_o as fixedSwapInLayout,Vo as fixedSwapOutLayout,Xu as floorDiv,Gr as forecastTransactionSize,Wd as formatLayout,Ye as generatePubKey,ye as getATAAddress,_a as getAssociatedAuthority,$o as getAssociatedConfigId,it as getAssociatedLedgerAccount,tr as getAssociatedLedgerPoolAccount,lp as getAssociatedOpenOrders,Tu as getAssociatedPoolKeys,Ap as getCpmmPdaAmmConfigId,Pp as getCpmmPdaPoolId,Bu as getCreatePoolKeys,na as getDate,Oo as getDepositEntryIndex,Ha as getDxByDyBaseIn,Qa as getDyByDxBaseIn,rb as getEpochInfo,oi as getFarmLedgerLayout,md as getFarmStateLayout,mp as getLiquidityAssociatedAuthority,yn as getLiquidityAssociatedId,Vh as getLiquidityFromAmounts,ey as getMax,It as getMultipleAccountsInfo,hn as getMultipleAccountsInfoWithCustomFlags,Hi as getMultipleLookupTableInfo,zk as getPdaAmmConfigId,lt as getPdaExBitmapAccount,kp as getPdaLpMint,ci as getPdaMetadataKey,yi as getPdaObservationId,lr as getPdaOperationAccount,ct as getPdaPersonalPositionAddress,wp as getPdaPoolAuthority,ou as getPdaPoolId,su as getPdaPoolRewardVaulId,Xo as getPdaPoolVaultId,mn as getPdaProtocolPositionAddress,ge as getPdaTickArrayAddress,xu as getPdaVault,kn as getRecentBlockHash,xo as getRegistrarAddress,Gl as getSessionKey,ja as getStablePrice,Kl as getTime,zy as getTimestamp,Ro as getTokenOwnerRecordAddress,Yb as getTransferAmountFee,Ae as getTransferAmountFeeV2,Ko as getVoterAddress,Co as getVoterWeightRecordAddress,So as getVotingMintAuthority,Bo as getVotingTokenMint,Pd as governanceCreateTokenOwnerRecord,Yg as greedy,cl as gt,jf as gte,ba as i128,Dk as i16ToBytes,ui as i32ToBytes,ei as i64,ya as i8,Eo as initPoolLayout,bo as initTokenAccountInstruction,Op as initializeMarket,Rb as intersection,ia as isDateAfter,ra as isDateBefore,fl as isDecimal,Jf as isMeaningfulNumber,ta as isNumber,To as isValidFarmVersion,cr as isZero,fe as jsonInfo2PoolKeys,cP as judgeFarmType,Uo as leadingZeros,ru as leastSignificantBit,Sd as liquidityStateV4Layout,Kd as liquidityStateV5Layout,Qf as lt,Hf as lte,of as mSOLMint,ai as makeAMMSwapInstruction,$a as makeAddLiquidityInstruction,Mo as makeAddNewRewardInstruction,gi as makeClaimInstruction,ss as makeClaimInstructionV4,Ku as makeCreateCpmmPoolInInstruction,Fa as makeCreateFarmInstruction,Wu as makeCreateMarketInstruction,va as makeCreatorWithdrawFarmRewardInstruction,Cu as makeDepositCpmmInInstruction,Wa as makeDepositInstructionV3,Da as makeDepositInstructionV5,qa as makeDepositInstructionV6,BP as makeDepositTokenInstruction,KP as makeDepositWithdrawInstruction,vk as makeInitPoolInstructionV4,BB as makePurchaseInstruction,No as makeRestartRewardInstruction,eu as makeSimulatePoolInfoInstruction,Lu as makeSwapCpmmBaseInInInstruction,Ou as makeSwapCpmmBaseOutInInstruction,Ud as makeSwapFixedInInstruction,Gd as makeSwapFixedOutInstruction,MS as makeSwapInstruction,jn as makeTransferInstruction,Ru as makeWithdrawCpmmInInstruction,sr as makeWithdrawInstructionV3,or as makeWithdrawInstructionV5,ir as makeWithdrawInstructionV6,SP as makeWithdrawTokenInstruction,sn as minExpirationTime,jk as mockCreatePoolInfo,du as mockV3CreatePoolInfo,Ld as modelDataInfoLayout,nu as mostSignificantBit,Xi as mul,zi as notInnerObject,uw as ns64,fw as ns64be,la as nu64,nw as nu64be,so as offset,Mb as offsetDateTime,Bw as option,U as parseBigNumberish,tn as parseNumberInfo,Js as parseSimulateLogToJson,Mt as parseSimulateValue,Ta as parseTokenAccountResp,ok as parseTokenInfo,Zt as poolTypeV6,on as printSimulate,S as publicKey,rs as purchaseLayout,id as realFarmStateV3Layout,od as realFarmStateV5Layout,sd as realFarmV6Layout,qs as recursivelyDecimalToFraction,qo as removeLiquidityInstruction,vo as removeLiquidityLayout,OS as route1Instruction,NS as route2Instruction,vp as routeInstruction,Rw as rustEnum,iw as s16,cw as s16be,ow as s24,lw as s24be,We as s32,mw as s32be,sw as s40,dw as s40be,aw as s48,pw as s48be,rw as s8,q as seq,Yp as setLoggerLevel,ml as shakeFractionDecimal,$s as simulateMultipleInstruction,Fk as simulatePoolInfoInstruction,kl as simulateTransaction,zs as sleep,Fi as solToWSol,uk as solToWSolToken,Yt as splAccountLayout,Xs as splitNumber,sf as stSOLMint,Cw as str,L as struct,$f as sub,Kw as tagged,Ui as tenExponential,dl as toBN,hl as toBuffer,Gs as toFraction,Yf as toFractionWithDecimals,Py as toPercent,Ga as toToken,ak as toTokenAmount,sk as toTokenInfo,ky as toTokenPrice,hy as toTotalPrice,Ds as toUsdCurrency,Go as trailingZeros,Vi as tryParsePublicKey,z as u128,Bt as u16,tu as u16ToBytes,Zg as u16be,Qg as u24,$g as u24be,ze as u32,qk as u32ToBytes,Jg as u32be,Hg as u40,ew as u40be,jg as u48,tw as u48be,w as u64,_ as u8,Ow as union,KK as unionArr,Aw as unionLayoutDiscriminator,Ob as uniq,dd as updateFarmPoolInfo,Hr as updateReqHistory,kw as utf8,_i as validateAndParsePublicKey,Io as validateFarmRewards,Sw as vec,Wm as vecU8,hd as voterStakeRegistryCreateDepositEntry,kd as voterStakeRegistryCreateVoter,gd as voterStakeRegistryDeposit,wd as voterStakeRegistryUpdateVoterWeightRecord,Ad as voterStakeRegistryWithdraw,ck as wSolToSolToken,Ao as withdrawRewardLayout,Lb as xor,Nw as zeros};
2
2
  /*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
3
3
  //# sourceMappingURL=index.mjs.map