@raydium-io/raydium-sdk-v2 0.1.1-alpha → 0.1.2-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.mjs CHANGED
@@ -1,3 +1,3 @@
1
- var tc=Object.defineProperty,nc=Object.defineProperties;var rc=Object.getOwnPropertyDescriptors;var Lr=Object.getOwnPropertySymbols;var ws=Object.prototype.hasOwnProperty,As=Object.prototype.propertyIsEnumerable;var gs=(r,e,t)=>e in r?tc(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,N=(r,e)=>{for(var t in e||(e={}))ws.call(e,t)&&gs(r,t,e[t]);if(Lr)for(var t of Lr(e))As.call(e,t)&&gs(r,t,e[t]);return r},D=(r,e)=>nc(r,rc(e));var Ie=(r,e)=>{var t={};for(var n in r)ws.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&Lr)for(var n of Lr(r))e.indexOf(n)<0&&As.call(r,n)&&(t[n]=r[n]);return t};import Hl from"axios";import{get as Ci,set as Ps}from"lodash";import ks from"dayjs";import ic from"dayjs/plugin/utc";ks.extend(ic);var oc=(i=>(i[i.Error=0]="Error",i[i.Warning=1]="Warning",i[i.Info=2]="Info",i[i.Debug=3]="Debug",i))(oc||{}),Ri=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 ks().utc().format("YYYY/MM/DD HH:mm:ss UTC")}get moduleName(){return this.name}isLogLevel(e){return e<=this.logLevel}error(...e){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...e),this):this}logWithError(...e){let t=e.map(n=>typeof n=="object"?JSON.stringify(n):n).join(", ");throw new Error(t)}warning(...e){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...e),this):this}info(...e){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...e),this):this}debug(...e){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...e),this):this}},Li={},hs={};function ae(r){let e=Ci(Li,r);if(!e){let t=Ci(hs,r);e=new Ri({name:r,logLevel:t}),Ps(Li,r,e)}return e}function jp(r,e){Ps(hs,r,e);let t=Ci(Li,r);t&&(t.level=e)}import{PublicKey as wl}from"@solana/web3.js";import Al from"bn.js";import bl from"big.js";import zt from"bn.js";import he from"bn.js";var gn=9e15,Xt=1e9,Oi="0123456789abcdef",Nr="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Mr="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Ni={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-gn,maxE:gn,crypto:!1},Bs,Lt,$=!0,Vr="[DecimalError] ",Gt=Vr+"Invalid argument: ",Ss=Vr+"Precision limit exceeded",Ks=Vr+"crypto unavailable",Cs="[object Decimal]",Ge=Math.floor,Oe=Math.pow,sc=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,ac=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,uc=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Rs=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,bt=1e7,Q=7,cc=9007199254740991,lc=Nr.length-1,Mi=Mr.length-1,O={toStringTag:Cs};O.absoluteValue=O.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),z(r)};O.ceil=function(){return z(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(Gt+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())+Q,n.rounding=1,t=mc(n,_s(n,t)),n.precision=r,n.rounding=e,z(Lt==2||Lt==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($=!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=Ge((r+1)/3)-(r%3==(r<0?-1:2)),o==1/0?t="5e"+r:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+r),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(r=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=Ae(c.plus(l).times(a),c.plus(u),s+2,1),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&&(z(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")&&(z(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return $=!0,z(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-Ge(this.e/Q))*Q,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};O.dividedBy=O.div=function(r){return Ae(this,new this.constructor(r))};O.dividedToIntegerBy=O.divToInt=function(r){var e=this,t=e.constructor;return z(Ae(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 z(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/Fr(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 z(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/Fr(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,z(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,Ae(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,$=!1,t=t.times(t).minus(1).sqrt().plus(t),$=!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,$=!1,t=t.times(t).plus(1).sqrt().plus(t),$=!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?z(new o(i),r,e,!0):(o.precision=t=n-i.e,i=Ae(i.plus(1),new o(1).minus(i),t+r,1),o.precision=r+4,o.rounding=1,i=i.ln(),o.precision=r,o.rounding=e,i.times(.5))):new o(NaN)};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,d=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=Mi)return s=yt(l,m+4,d).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=Mi)return s=yt(l,m+4,d).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/Q+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for($=!1,e=Math.ceil(a/Q),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)),$=!0,z(s,l.precision=m,l.rounding=d,!0)};O.isFinite=function(){return!!this.d};O.isInteger=O.isInt=function(){return!!this.d&&Ge(this.e/Q)>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,d=l.rounding,p=5;if(r==null)r=new l(10),e=!0;else{if(r=new l(r),t=r.d,r.s<0||!t||!t[0]||r.eq(1))return new l(NaN);e=r.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(i=t[0];i%10===0;)i/=10;o=i!==1}if($=!1,a=m+p,s=Ut(c,a),n=e?_r(l,a+10):Ut(r,a),u=Ae(s,n,a,1),En(u.d,i=m,d))do if(a+=10,s=Ut(c,a),n=e?_r(l,a+10):Ut(r,a),u=Ae(s,n,a,1),!o){+Fe(u.d).slice(i+1,i+15)+1==1e14&&(u=z(u,m+1,0));break}while(En(u.d,i+=10,d));return $=!0,z(u,m,d)};O.minus=O.sub=function(r){var e,t,n,i,o,s,a,u,c,l,m,d,p=this,y=p.constructor;if(r=new y(r),!p.d||!r.d)return!p.s||!r.s?r=new y(NaN):p.d?r.s=-r.s:r=new y(r.d||p.s!==r.s?p:NaN),r;if(p.s!=r.s)return r.s=-r.s,p.plus(r);if(c=p.d,d=r.d,a=y.precision,u=y.rounding,!c[0]||!d[0]){if(d[0])r.s=-r.s;else if(c[0])r=new y(p);else return new y(u===3?-0:0);return $?z(r,a,u):r}if(t=Ge(r.e/Q),l=Ge(p.e/Q),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=d.length):(e=d,t=l,s=c.length),n=Math.max(Math.ceil(a/Q),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=d.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=d[n]){m=c[n]<d[n];break}o=0}for(m&&(e=c,c=d,d=e,r.s=-r.s),s=c.length,n=d.length-s;n>0;--n)c[s++]=0;for(n=d.length;n>o;){if(c[--n]<d[n]){for(i=n;i&&c[--i]===0;)c[i]=bt-1;--c[i],c[n]+=bt}c[n]-=d[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(r.d=c,r.e=Er(c,t),$?z(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]?z(new n(t),n.precision,n.rounding):($=!1,n.modulo==9?(e=Ae(t,r.abs(),0,3,1),e.s*=r.s):e=Ae(t,r,0,n.modulo,1),e=e.times(r),$=!0,t.minus(e))};O.naturalExponential=O.exp=function(){return _i(this)};O.naturalLogarithm=O.ln=function(){return Ut(this)};O.negated=O.neg=function(){var r=new this.constructor(this);return r.s=-r.s,z(r)};O.plus=O.add=function(r){var e,t,n,i,o,s,a,u,c,l,m=this,d=m.constructor;if(r=new d(r),!m.d||!r.d)return!m.s||!r.s?r=new d(NaN):m.d||(r=new d(r.d||m.s===r.s?m:NaN)),r;if(m.s!=r.s)return r.s=-r.s,m.minus(r);if(c=m.d,l=r.d,a=d.precision,u=d.rounding,!c[0]||!l[0])return l[0]||(r=new d(m)),$?z(r,a,u):r;if(o=Ge(m.e/Q),n=Ge(r.e/Q),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/Q),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=Er(c,n),$?z(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(Gt+r);return t.d?(e=Ls(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};O.round=function(){var r=this,e=r.constructor;return z(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())+Q,n.rounding=1,t=pc(n,_s(n,t)),n.precision=r,n.rounding=e,z(Lt>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($=!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=Ge((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(o=n,n=o.plus(Ae(s,o,t+2,1)).times(.5),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&&(z(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")&&(z(n,u+1,1),r=!n.times(n).eq(s));break}return $=!0,z(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=Ae(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,z(Lt==2||Lt==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,d=l.d,p=(r=new m(r)).d;if(r.s*=l.s,!d||!d[0]||!p||!p[0])return new m(!r.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?r.s/0:r.s*0);for(t=Ge(l.e/Q)+Ge(r.e/Q),u=d.length,c=p.length,u<c&&(o=d,d=p,p=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,i=u+n;i>n;)a=o[i]+p[n]*d[i-n-1]+e,o[i--]=a%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=Er(o,t),$?z(r,m.precision,m.rounding):r};O.toBinary=function(r,e){return Ei(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,Xt),e===void 0?e=n.rounding:tt(e,0,8),z(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,Xt),e===void 0?e=i.rounding:tt(e,0,8),n=z(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,Xt),e===void 0?e=o.rounding:tt(e,0,8),n=z(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,d,p=this,y=p.d,f=p.constructor;if(!y)return new f(p);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=Ls(y)-p.e-1,s=o%Q,e.d[0]=Oe(10,s<0?Q+s:s),r==null)r=o>0?e:c;else{if(a=new f(r),!a.isInt()||a.lt(c))throw Error(Gt+a);r=a.gt(e)?o>0?e:c:a}for($=!1,a=new f(Fe(y)),l=f.precision,f.precision=o=y.length*Q*2;m=Ae(a,e,0,1,1),i=t.plus(m.times(n)),i.cmp(r)!=1;)t=n,n=i,i=c,c=u.plus(m.times(i)),u=i,i=e,e=a.minus(m.times(i)),a=i;return i=Ae(r.minus(t),n,0,1,1),u=u.plus(i.times(c)),t=t.plus(i.times(n)),u.s=c.s=p.s,d=Ae(c,n,o,1).minus(p).abs().cmp(Ae(u,t,o,1).minus(p).abs())<1?[c,n]:[u,t],f.precision=l,$=!0,d};O.toHexadecimal=O.toHex=function(r,e){return Ei(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]?($=!1,t=Ae(t,r,0,e,1).times(r),$=!0,z(t)):(r.s=t.s,t=r),t};O.toNumber=function(){return+this};O.toOctal=function(r,e){return Ei(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 z(a,n,o);if(e=Ge(r.e/Q),e>=r.d.length-1&&(t=c<0?-c:c)<=cc)return i=Os(u,a,t,n),r.s<0?new u(1).div(i):z(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)?Ge(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):($=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),i=_i(r.times(Ut(a,n+t)),n),i.d&&(i=z(i,n+5,1),En(i.d,n,o)&&(e=n+10,i=z(_i(r.times(Ut(a,e+t)),e),e+5,1),+Fe(i.d).slice(n+1,n+15)+1==1e14&&(i=z(i,n+1,0)))),i.s=s,$=!0,u.rounding=o,z(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,Xt),e===void 0?e=i.rounding:tt(e,0,8),n=z(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,Xt),e===void 0?e=n.rounding:tt(e,0,8)),z(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 z(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=Q-n.length,t&&(o+=qt(t)),o+=n;s=r[e],n=s+"",t=Q-n.length,t&&(o+=qt(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(Gt+r)}function En(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=Q,i=0):(i=Math.ceil((e+1)/Q),e%=Q),o=Oe(10,Q-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 Or(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]+=Oi.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 mc(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/Fr(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 Ae=function(){function r(n,i,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*i+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,i,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=i[a]){u=n[a]>i[a]?1:-1;break}return u}function t(n,i,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<i[o]?1:0,n[o]=a*s+n[o]-i[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,i,o,s,a,u){var c,l,m,d,p,y,f,b,g,P,A,T,h,I,B,x,K,M,F,H,v=n.constructor,j=n.s==i.s?1:-1,ee=n.d,se=i.d;if(!ee||!ee[0]||!se||!se[0])return new v(!n.s||!i.s||(ee?se&&ee[0]==se[0]:!se)?NaN:ee&&ee[0]==0||!se?j*0:j/0);for(u?(p=1,l=n.e-i.e):(u=bt,p=Q,l=Ge(n.e/p)-Ge(i.e/p)),F=se.length,K=ee.length,g=new v(j),P=g.d=[],m=0;se[m]==(ee[m]||0);m++);if(se[m]>(ee[m]||0)&&l--,o==null?(I=o=v.precision,s=v.rounding):a?I=o+(n.e-i.e)+1:I=o,I<0)P.push(1),y=!0;else{if(I=I/p+2|0,m=0,F==1){for(d=0,se=se[0],I++;(m<K||d)&&I--;m++)B=d*u+(ee[m]||0),P[m]=B/se|0,d=B%se|0;y=d||m<K}else{for(d=u/(se[0]+1)|0,d>1&&(se=r(se,d,u),ee=r(ee,d,u),F=se.length,K=ee.length),x=F,A=ee.slice(0,F),T=A.length;T<F;)A[T++]=0;H=se.slice(),H.unshift(0),M=se[0],se[1]>=u/2&&++M;do d=0,c=e(se,A,F,T),c<0?(h=A[0],F!=T&&(h=h*u+(A[1]||0)),d=h/M|0,d>1?(d>=u&&(d=u-1),f=r(se,d,u),b=f.length,T=A.length,c=e(f,A,b,T),c==1&&(d--,t(f,F<b?H:se,b,u))):(d==0&&(c=d=1),f=se.slice()),b=f.length,b<T&&f.unshift(0),t(A,f,T,u),c==-1&&(T=A.length,c=e(se,A,F,T),c<1&&(d++,t(A,F<T?H:se,T,u))),T=A.length):c===0&&(d++,A=[0]),P[m++]=d,c&&A[0]?A[T++]=ee[x]||0:(A=[ee[x]],T=1);while((x++<K||A[0]!==void 0)&&I--);y=A[0]!==void 0}P[0]||P.shift()}if(p==1)g.e=l,Bs=y;else{for(m=1,d=P[0];d>=10;d/=10)m++;g.e=m+l*p-1,z(g,a?o+g.e+1:o,s,y)}return g}}();function z(r,e,t,n){var i,o,s,a,u,c,l,m,d,p=r.constructor;e:if(e!=null){if(m=r.d,!m)return r;for(i=1,a=m[0];a>=10;a/=10)i++;if(o=e-i,o<0)o+=Q,s=e,l=m[d=0],u=l/Oe(10,i-s-1)%10|0;else if(d=Math.ceil((o+1)/Q),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=u=0,i=1,o%=Q,s=o-Q+1}else break e;else{for(l=a=m[d],i=1;a>=10;a/=10)i++;o%=Q,s=o-Q+i,u=s<0?0:l/Oe(10,i-s-1)%10|0}if(n=n||e<0||m[d+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[d-1])%10&1||t==(r.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=r.e+1,m[0]=Oe(10,(Q-e%Q)%Q),r.e=-e||0):m[0]=r.e=0,r;if(o==0?(m.length=d,a=1,d--):(m.length=d+1,a=Oe(10,Q-o),m[d]=s>0?(l/Oe(10,i-s)%Oe(10,s)|0)*a:0),c)for(;;)if(d==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(r.e++,m[0]==bt&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=bt)break;m[d--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return $&&(r.e>p.maxE?(r.d=null,r.e=NaN):r.e<p.minE&&(r.e=0,r.d=[0])),r}function ht(r,e,t){if(!r.isFinite())return Ms(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)+qt(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+qt(-i-1)+o,t&&(n=t-s)>0&&(o+=qt(n))):i>=s?(o+=qt(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+qt(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=qt(n))),o}function Er(r,e){var t=r[0];for(e*=Q;t>=10;t/=10)e++;return e}function _r(r,e,t){if(e>lc)throw $=!0,t&&(r.precision=t),Error(Ss);return z(new r(Nr),e,1,!0)}function yt(r,e,t){if(e>Mi)throw Error(Ss);return z(new r(Mr),e,t,!0)}function Ls(r){var e=r.length-1,t=e*Q+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 qt(r){for(var e="";r--;)e+="0";return e}function Os(r,e,t,n){var i,o=new r(1),s=Math.ceil(n/Q+4);for($=!1;;){if(t%2&&(o=o.times(e),Is(o.d,s)&&(i=!0)),t=Ge(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),Is(e.d,s)}return $=!0,o}function Ts(r){return r.d[r.d.length-1]&1}function Ns(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 _i(r,e){var t,n,i,o,s,a,u,c=0,l=0,m=0,d=r.constructor,p=d.rounding,y=d.precision;if(!r.d||!r.d[0]||r.e>17)return new d(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:0/0);for(e==null?($=!1,u=y):u=e,a=new d(.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 d(1),d.precision=u;;){if(o=z(o.times(r),u,1),t=t.times(++l),a=s.plus(Ae(o,t,u,1)),Fe(a.d).slice(0,u)===Fe(s.d).slice(0,u)){for(i=m;i--;)s=z(s.times(s),u,1);if(e==null)if(c<3&&En(s.d,u-n,p,c))d.precision=u+=10,t=o=a=new d(1),l=0,c++;else return z(s,d.precision=y,p,$=!0);else return d.precision=y,s}s=a}}function Ut(r,e){var t,n,i,o,s,a,u,c,l,m,d,p=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?($=!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),p++;o=f.e,n>1?(f=new g("0."+t),o++):f=new g(n+"."+t.slice(1))}else return c=_r(g,l+2,A).times(o+""),f=Ut(new g(n+"."+t.slice(1)),l-y).plus(c),g.precision=A,e==null?z(f,A,P,$=!0):f;for(m=f,u=s=f=Ae(f.minus(1),f.plus(1),l,1),d=z(f.times(f),l,1),i=3;;){if(s=z(s.times(d),l,1),c=u.plus(Ae(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(_r(g,l+2,A).times(o+""))),u=Ae(u,new g(p),l,1),e==null)if(En(u.d,l-y,P,a))g.precision=l+=y,c=s=f=Ae(m.minus(1),m.plus(1),l,1),d=z(f.times(f),l,1),i=a=1;else return z(u,g.precision=A,P,$=!0);else return g.precision=A,u;u=c,i+=2}}function Ms(r){return String(r.s*r.s/0)}function Vi(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)%Q,t<0&&(n+=Q),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=Q;n<i;)r.d.push(+e.slice(n,n+=Q));e=e.slice(n),n=Q-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),$&&(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 dc(r,e){var t,n,i,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Rs.test(e))return Vi(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(ac.test(e))t=16,e=e.toLowerCase();else if(sc.test(e))t=2;else if(uc.test(e))t=8;else throw Error(Gt+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=Os(n,new n(t),o,o*2)),c=Or(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=Er(c,l),r.d=c,$=!1,s&&(r=Ae(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?Oe(2,u):Fn.pow(2,u))),$=!0,r)}function pc(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/Fr(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/Q);for($=!1,u=t.times(t),a=new r(n);;){if(s=Ae(a.times(u),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=Ae(s.times(u),new r(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return $=!0,s.d.length=m+1,s}function Fr(r,e){for(var t=r;--e;)t*=r;return t}function _s(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 Lt=n?4:1,e;if(t=e.divToInt(i),t.isZero())Lt=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return Lt=Ts(t)?n?2:3:n?4:1,e;Lt=Ts(t)?n?1:4:n?3:2}return e.minus(i).abs()}function Ei(r,e,t,n){var i,o,s,a,u,c,l,m,d,p=r.constructor,y=t!==void 0;if(y?(tt(t,1,Xt),n===void 0?n=p.rounding:tt(n,0,8)):(t=p.precision,n=p.rounding),!r.isFinite())l=Ms(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(".",""),d=new p(1),d.e=l.length-s,d.d=Or(ht(d),10,i),d.e=d.d.length),m=Or(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 p(r),r.d=m,r.e=o,r=Ae(r,d,t,n,0,i),m=r.d,o=r.e,c=Bs),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+=Oi.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=Or(l,i,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=Oi.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 Is(r,e){if(r.length>e)return r.length=e,!0}function fc(r){return new this(r).abs()}function yc(r){return new this(r).acos()}function bc(r){return new this(r).acosh()}function gc(r,e){return new this(r).plus(e)}function wc(r){return new this(r).asin()}function Ac(r){return new this(r).asinh()}function Pc(r){return new this(r).atan()}function kc(r){return new this(r).atanh()}function hc(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(Ae(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(Ae(r,e,o,1)),t}function Tc(r){return new this(r).cbrt()}function Ic(r){return z(r=new this(r),r.e+1,2)}function xc(r,e,t){return new this(r).clamp(e,t)}function Bc(r){if(!r||typeof r!="object")throw Error(Vr+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,Xt,"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]=Ni[t]),(n=r[t])!==void 0)if(Ge(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(Gt+t+": "+n);if(t="crypto",i&&(this[t]=Ni[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(Ks);else this[t]=!1;else throw Error(Gt+t+": "+n);return this}function Sc(r){return new this(r).cos()}function Kc(r){return new this(r).cosh()}function Vs(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,xs(o)){c.s=o.s,$?!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++;$?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 Vi(c,o.toString())}else if(u!=="string")throw Error(Gt+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),Rs.test(o)?Vi(c,o):dc(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=Bc,i.clone=Vs,i.isDecimal=xs,i.abs=fc,i.acos=yc,i.acosh=bc,i.add=gc,i.asin=wc,i.asinh=Ac,i.atan=Pc,i.atanh=kc,i.atan2=hc,i.cbrt=Tc,i.ceil=Ic,i.clamp=xc,i.cos=Sc,i.cosh=Kc,i.div=Cc,i.exp=Rc,i.floor=Lc,i.hypot=Oc,i.ln=Nc,i.log=Mc,i.log10=Vc,i.log2=_c,i.max=Ec,i.min=Fc,i.mod=vc,i.mul=Wc,i.pow=Dc,i.random=qc,i.round=Uc,i.sign=Gc,i.sin=Xc,i.sinh=zc,i.sqrt=Yc,i.sub=Hc,i.sum=Qc,i.tan=jc,i.tanh=Zc,i.trunc=Jc,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 Cc(r,e){return new this(r).div(e)}function Rc(r){return new this(r).exp()}function Lc(r){return z(r=new this(r),r.e+1,3)}function Oc(){var r,e,t=new this(0);for($=!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 $=!0,new this(1/0);t=e}return $=!0,t.sqrt()}function xs(r){return r instanceof Fn||r&&r.toStringTag===Cs||!1}function Nc(r){return new this(r).ln()}function Mc(r,e){return new this(r).log(e)}function _c(r){return new this(r).log(2)}function Vc(r){return new this(r).log(10)}function Ec(){return Ns(this,arguments,"lt")}function Fc(){return Ns(this,arguments,"gt")}function vc(r,e){return new this(r).mod(e)}function Wc(r,e){return new this(r).mul(e)}function Dc(r,e){return new this(r).pow(e)}function qc(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:tt(r,1,Xt),n=Math.ceil(r/Q),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(Ks);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=Q,n&&r&&(i=Oe(10,Q-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-=Q)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<Q&&(t-=Q-n)}return s.e=t,s.d=a,s}function Uc(r){return z(r=new this(r),r.e+1,this.rounding)}function Gc(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function Xc(r){return new this(r).sin()}function zc(r){return new this(r).sinh()}function Yc(r){return new this(r).sqrt()}function Hc(r,e){return new this(r).sub(e)}function Qc(){var r=0,e=arguments,t=new this(e[r]);for($=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return $=!0,z(t,this.precision,this.rounding)}function jc(r){return new this(r).tan()}function Zc(r){return new this(r).tanh()}function Jc(r){return z(r=new this(r),r.e+1,1)}O[Symbol.for("nodejs.util.inspect.custom")]=O.toString;O[Symbol.toStringTag]="Decimal";var Fn=O.constructor=Vs(Ni);Nr=new Fn(Nr);Mr=new Fn(Mr);var _=Fn;import{PublicKey as qi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as $c}from"@solana/spl-token";import{PublicKey as xe,SystemProgram as Es,SYSVAR_RENT_PUBKEY as el}from"@solana/web3.js";function k({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Fi=[k({pubkey:$c,isWritable:!1}),k({pubkey:Es.programId,isWritable:!1}),k({pubkey:el,isWritable:!1})];function vi({publicKey:r,transformSol:e}){let t=Wi(r.toString());if(t instanceof xe)return e&&t.equals(Ne)?ne:t;if(e&&t.toString()===Ne.toBase58())return ne;if(typeof t=="string"){if(t===xe.default.toBase58())return xe.default;try{return new xe(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Wi(r){try{return new xe(r)}catch{return r}}var An=new xe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Fs=new xe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),nt=new xe("SysvarRent111111111111111111111111111111111"),Di=new xe("SysvarC1ock11111111111111111111111111111111"),Pn=new xe("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),vr=new xe("Sysvar1nstructions1111111111111111111111111"),Wr=Es.programId,nf=new xe("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),rf=new xe("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),of=new xe("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),sf=new xe("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),af=new xe("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),uf=new xe("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),cf=new xe("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),lf=new xe("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),mf=new xe("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),df=new xe("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),pf=new xe("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),ne=new xe("So11111111111111111111111111111111111111112"),Ne=xe.default;function kn(r){return vi({publicKey:r,transformSol:!0})}import{PublicKey as tl}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as vs}from"@solana/spl-token";var Tt={chainId:101,address:tl.default.toBase58(),programId:vs.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:vs.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 Ui=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===Ne.toBase58()||e instanceof qi&&Ne.equals(e)){this.decimals=Me.decimals,this.symbol=Me.symbol,this.name=Me.name,this.mint=new qi(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?qi.default:vi({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},pe=Ui;pe.WSOL=new Ui(D(N({},Me),{mint:Me.address}));import qr from"big.js";import il from"bn.js";import ol from"decimal.js-light";import nl from"toformat";var rl=nl,vn=rl;var Dr=ae("module/fraction"),Gi=vn(qr),Wn=vn(ol),sl={[0]:Wn.ROUND_DOWN,[1]:Wn.ROUND_HALF_UP,[2]:Wn.ROUND_UP},al={[0]:qr.roundDown,[1]:qr.roundHalfUp,[2]:qr.roundUp},te=class{constructor(e,t=new il(1)){this.numerator=U(e),this.denominator=U(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new te(this.denominator,this.numerator)}add(e){let t=e instanceof te?e:new te(U(e));return this.denominator.eq(t.denominator)?new te(this.numerator.add(t.numerator),this.denominator):new te(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof te?e:new te(U(e));return this.denominator.eq(t.denominator)?new te(this.numerator.sub(t.numerator),this.denominator):new te(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof te?e:new te(U(e));return new te(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof te?e:new te(U(e));return new te(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Dr.logWithError(`${e} is not an integer.`),e<=0&&Dr.logWithError(`${e} is not positive.`),Wn.set({precision:e+1,rounding:sl[n]});let i=new Wn(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)||Dr.logWithError(`${e} is not an integer.`),e<0&&Dr.logWithError(`${e} is negative.`),Gi.DP=e,Gi.RM=al[n]||1,new Gi(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var ul=ae("Raydium_price"),Xe=class extends te{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new te(zi(n.decimals),zi(i.decimals))}get raw(){return new te(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Xe({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&ul.logWithError("mul token not equals");let n=super.mul(t);return new Xe({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 Yi=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Dn=Yi;Dn.SOL=new Yi(Tt);function qf(r,e){return r instanceof pe&&e instanceof pe?r.equals(e):r instanceof pe||e instanceof pe?!1:r===e}import cl from"bn.js";var Ws=new te(new cl(100)),ve=class extends te{toSignificant(e=5,t,n){return this.mul(Ws).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Ws).toFixed(e,t,n)}};function Ce(r){if(r instanceof ve)return new te(r.numerator,r.denominator);if(r instanceof Xe)return r.adjusted;if(r instanceof Te)try{return Ce(r.toExact())}catch{return new te(Ke)}if(r instanceof te)return r;let e=String(r),t=tn(e);return new te(t.numerator,t.denominator)}function jf(r){var n;if(r instanceof ve)return{fr:new te(r.numerator,r.denominator)};if(r instanceof Xe)return{fr:r.adjusted};if(r instanceof Te)return{fr:Ce(r.toExact()),decimals:r.token.decimals};if(r instanceof te)return{fr:r};let e=String(r),t=tn(e);return{fr:new te(t.numerator,t.denominator),decimals:(n=t.dec)==null?void 0:n.length}}function Zf(r,e){if(r==null||e==null)return!1;let t=Ce(r),n=Ce(e);return t.sub(n).numerator,t.sub(n).numerator.lt(Ke)}function ll(r,e){if(r==null||e==null)return!1;let t=Ce(r),n=Ce(e);return t.sub(n).numerator.gt(Ke)}function Jf(r,e){if(r==null||e==null)return!1;let t=Ce(r),n=Ce(e);return t.sub(n).numerator.lte(Ke)}function $f(r,e){if(r==null||e==null)return!1;let t=Ce(r),n=Ce(e);return t.sub(n).numerator.gte(Ke)}function ml(r,e){if(r==null||e==null)return!1;let t=Ce(r),n=Ce(e);return t.sub(n).numerator.eq(Ke)}function ey(r,e){if(r==null||e==null)return;let t=Ce(r),n=Ce(e);try{return t.div(n)}catch{return t}}function ty(r,e){if(r==null||e==null)return;let t=Ce(r),n=Ce(e);return t.sub(n)}function ny(r){return r==null?!1:!ml(r,0)}function ry(r,e){return ll(e,r)?e:r}function Hi(r,e){if(r==null||e==null)return;let t=Ce(r),n=Ce(e);return t.mul(n)}function iy(r,e){if(r==null||e==null)return;let t=Ce(r),n=Ce(e);return t.add(n)}var Xi=(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))(Xi||{}),Ke=new he(0),Gs=new he(1),gy=new he(2),wy=new he(3),Ay=new he(5),nn=new he(10),Py=new he(100),ky=new he(1e3),hy=new he(1e4),Ds=9007199254740991;function U(r){let e=ae("Raydium_parseBigNumberish");if(r instanceof he)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new he(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=Ds||r<=-Ds)&&e.logWithError(`BigNumberish number overflow: ${r}`),new he(String(r))):typeof r=="bigint"?new he(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new he(0))}function zi(r){return nn.pow(U(r))}function tn(r){var a;if(r===void 0)return{denominator:"1",numerator:"0"};if(r instanceof he)return{numerator:r.toString(),denominator:"1"};if(r instanceof te)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 Ur(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 dl(r){var n;let[,e="",t=""]=(n=r.toFixed(2).match(/(-?)(\d*)\.?(\d*)/))!=null?n:[];return`${e}${t}`}function pl(r,e=0){return r instanceof he?r:new he(dl(Xs(r).mul(nn.pow(new he(String(e))))))}function Xs(r){if(r instanceof ve)return new te(r.numerator,r.denominator);if(r instanceof Xe)return r.adjusted;if(r instanceof Te)try{return Xs(r.toExact())}catch{return new te(Ke)}if(r instanceof te)return r;let e=String(r),t=tn(e);return new te(t.numerator,t.denominator)}function Ty(r,e){let{numerator:t,denominator:n}=tn(r);return new ve(new he(t),new he(n).mul(e!=null&&e.alreadyDecimaled?new he(100):new he(1)))}function Iy(r){let{token:e,numberPrice:t,decimalDone:n}=r,i=new pe({mint:"",decimals:6,symbol:"usd",name:"usd",skipMint:!0}),{numerator:o,denominator:s}=tn(t),a=n?new he(o).mul(nn.pow(new he(e.decimals))):o,u=new he(s).mul(nn.pow(new he(i.decimals)));return new Xe({baseToken:i,denominator:u.toString(),quoteToken:new pe(D(N({},e),{skipMint:!0,mint:""})),numerator:a.toString()})}function qs(r){let e=new Dn({decimals:6,symbol:"usd",name:"usd"}),t=pl(Hi(r,10**e.decimals));return new rn(e,t)}function xy(r,e){return qs(!e||!r?0:Hi(r,e))}function fl(r){if(r==null)return;let{numerator:e,denominator:t}=tn(r.toString());return new te(e,t)}function yl(r){return r instanceof _}function Us(r){return yl(r)?fl(r):Array.isArray(r)?r.map(e=>Us(e)):Qi(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,Us(t)])):r}var gl=ae("Raydium_amount"),Gr=vn(bl);function zs(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")):gl.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var Te=class extends te{constructor(t,n,i=!0,o){let s=new zt(0),a=nn.pow(new zt(t.decimals));if(i)s=U(n);else{let u=new zt(0),c=new zt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=zs(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 Te(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Te(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 Gr.DP=this.token.decimals,new Gr(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}},rn=class extends te{constructor(t,n,i=!0,o){let s=new zt(0),a=nn.pow(new zt(t.decimals));if(i)s=U(n);else{let u=new zt(0),c=new zt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=zs(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 Gr.DP=this.currency.decimals,new Gr(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};async function Ys(r){new Promise(e=>setTimeout(e,r))}function Qy(){return new Date().getTime()}function Qi(r){return typeof r=="object"&&r!==null&&![pe,Te,wl,te,Al,Xe,ve].some(e=>typeof e=="object"&&r instanceof e)}function ye(r){return typeof r=="string"?Wi(r):Array.isArray(r)?r.map(e=>ye(e)):Qi(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,ye(t)])):r}import{PublicKey as Gn,sendAndConfirmTransaction as Xn,Transaction as zn,TransactionMessage as Yn,VersionedTransaction as Hn}from"@solana/web3.js";import Kl from"axios";var hn=(t=>(t[t.V0=0]="V0",t[t.LEGACY=1]="LEGACY",t))(hn||{}),E={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 Hs,Transaction as zr,TransactionMessage as Pl,Keypair as js,VersionedTransaction as Zs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as kl}from"@solana/spl-token";var Ot=ae("Raydium_txUtil"),Js=1644;function Yr(r){let e=[],t=[];return r.microLamports&&(e.push(Hs.setComputeUnitPrice({microLamports:r.microLamports})),t.push(E.SetComputeUnitPrice)),r.units&&(e.push(Hs.setComputeUnitLimit({units:r.units})),t.push(E.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Tn(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 Hr(r,e){r.length<1&&Ot.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Ot.logWithError(`no signers provided:, ${e.toString()}`);let t=new zr;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 $s(r,e,t,n=!0){let i=new Qs("RaydiumSimuLateTransaction11111111111111111"),o=[],s=new zr;s.feePayer=i;for(let c of e)Hr([...s.instructions,c],[i])||(o.push(s),s=new zr,s.feePayer=i),s.add(c);s.instructions.length>0&&o.push(s);let a=[];try{if(a=await hl(r,o,n),a.find(c=>c.err!==null))throw Error("rpc simulateTransaction error")}catch(c){c instanceof Error&&Ot.logWithError("failed to simulate for instructions","RPC_ERROR",{message:c.message})}let u=[];for(let c of a)if(Ot.debug("simulate result:",c),c.logs){let l=c.logs.filter(m=>m&&m.includes(t));Ot.debug("filteredLog:",u),l.length||Ot.logWithError("simulate log not match keyword","keyword",t),u.push(...l)}return u}function ea(r,e){let t=r.match(/{["\w:,]+}/g);return!t||t.length!==1?Ot.logWithError(`simulate log fail to match json, keyword: ${e}`):t[0]}function Nt(r,e){let n=new RegExp(`"${e}":(\\d+)`,"g").exec(r);return!n||n.length!==2?Ot.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 hl(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(),p=c._serialize(m).toString("base64");o.push(p)}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&&Ot.logWithError("failed to get info for multiple accounts","RPC_ERROR",{message:i.message})}return n}function qn({instructions:r,payer:e,signers:t}){return Hr(r,[e,...t])}function Un({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=js.generate().publicKey.toString()}){let o=new Pl({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Zs(o).serialize()).toString("base64").length<Js}catch{return!1}}var Xr={time:0,data:void 0};async function sb(r){if(!Xr.data||(Date.now()-Xr.time)/1e3>30){let e=await r.getEpochInfo();return Xr={time:Date.now(),data:e},e}else return Xr.data}var Tl=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 zr&&(t.recentBlockhash||(t.recentBlockhash=kl.toBase58()),t.feePayer||(t.feePayer=js.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof Zs&&(n=Tl(n));let i=n.toString("base64");e.push(i)}),console.log("simulate tx string:",e),e}import{PublicKey as ta,AddressLookupTableAccount as Qr}from"@solana/web3.js";import{PublicKey as Il}from"@solana/web3.js";import{getTransferFeeConfig as xl,unpackMint as Bl}from"@solana/spl-token";var ji=ae("Raydium_accountInfo_util");async function It(r,e,t){let{batchRequest:n,commitment:i="confirmed"}=N({batchRequest:!1},t),o=Zi(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let m=r._buildArgs([l.map(d=>d.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=Zi(a,10);s=(await(await Promise.all(u.map(async l=>await r._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&ji.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.error.message}`),l.result.value.map(m=>{if(m){let{data:d,executable:p,lamports:y,owner:f,rentEpoch:b}=m;return d.length!==2&&d[1]!=="base64"&&ji.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(d[0],"base64"),executable:p,lamports:y,owner:new Il(f),rentEpoch:b}}return null})))}else try{s=await Promise.all(o.map(a=>r.getMultipleAccountsInfo(a,i)))}catch(a){a instanceof Error&&ji.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function In(r,e,t){let n=await It(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>D(N({},i),{accountInfo:n[o]}))}var Sl=(n=>(n[n.Uninitialized=0]="Uninitialized",n[n.Mint=1]="Mint",n[n.Account=2]="Account",n))(Sl||{}),yb=1;async function bb({connection:r,mints:e}){var i,o;if(e.length===0)return{};let t=await In(r,e.map(s=>({pubkey:s}))),n={};for(let s of t){let a=Bl(s.pubkey,s.accountInfo,(i=s.accountInfo)==null?void 0:i.owner);n[s.pubkey.toString()]=D(N({},a),{feeConfig:(o=xl(a))!=null?o:void 0})}return n}async function Ji({connection:r,address:e}){let t=await It(r,[...new Set(e.map(i=>i.toString()))].map(i=>new ta(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],s=e[i];if(!o)continue;let a=new Qr({key:s,state:Qr.deserialize(o.data)});n[s.toString()]=a,jr[s.toString()]=a}return n}var jr={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Qr({key:new ta("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Qr.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 Zr=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 Kl.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}=Yr(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!==Gn.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(N({},t||{})):this.build(t)}build(e){let t=new zn;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 Tn(this.connection);if(t.recentBlockhash=s,this.signers.length&&t.sign(...this.signers),on([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await Xn(this.connection,t,this.signers.find(u=>u.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:o}),signedTx:t};if(this.signAllTransactions){let u=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(u[0].serialize(),{skipPreflight:o}),signedTx:u[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),o=t.filter(c=>c.transaction.instructions.length>0),s=[i,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return{builder:this,transactions:s,signers:a,instructionTypes:u,execute:async c=>{var f;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=c||{},y=d!=null?d:await Tn(this.connection);if((f=this.owner)!=null&&f.isKeyPair){if(l){let b=[];for(let g of s){let P=await Xn(this.connection,g,this.signers.find(A=>A.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:p});b.push(P)}return{txIds:b,signedTxs:s}}return{txIds:await await Promise.all(s.map(async(b,g)=>(b.recentBlockhash=y,await Xn(this.connection,b,a[g].find(P=>P.publicKey.equals(this.owner.publicKey))?a[g]:[...a[g],this.owner.signer],{skipPreflight:p})))),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=[],T=async()=>{if(!g[P])return;let h=await this.connection.sendRawTransaction(g[P].serialize(),{skipPreflight:p});A.push({txId:h,status:"sent",signedTx:g[P]}),m==null||m([...A]),P++,this.connection.onSignature(h,I=>{let B=A.findIndex(x=>x.txId===h);B>-1&&(A[B].status=I.err?"error":"success"),m==null||m([...A]),I.err||T()},"processed"),this.connection.getSignatureStatus(h)};return await T(),{txIds:A.map(h=>h.txId),signedTxs:g}}else{let P=[];for(let A=0;A<g.length;A+=1){let T=await this.connection.sendRawTransaction(g[A].serialize(),{skipPreflight:p});P.push(T)}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 d=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i}=d,o=Ie(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=N(N({},this.cluster==="devnet"?{}:jr),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let p of a)s[p]===void 0&&u.push(new Gn(p));let c=await Ji({connection:this.connection,address:u});for(let[p,y]of Object.entries(c))s[p]=y;let l=new Yn({payerKey:this.feePayer,recentBlockhash:i?Gn.default.toBase58():await Tn(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new Hn(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async p=>{var b;let{recentBlockHash:y,skipPreflight:f=!0}=p||{};if(y&&(m.message.recentBlockhash=y),on([m]),(b=this.owner)!=null&&b.isKeyPair){this.signers.find(T=>T.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:d,skipPreflight:p=!0}=c||{};if(d&&s.forEach(f=>f.message.recentBlockhash=d),on(s),(y=this.owner)!=null&&y.isKeyPair){let{lastValidBlockHeight:f,blockhash:b}=await this.connection.getLatestBlockhash();if(s.forEach((g,P)=>{a[P].find(A=>A.publicKey.equals(this.owner.publicKey))||g.sign([this.owner.signer])}),l){let g=[];for(let P of s){let A=await this.connection.sendTransaction(P,{skipPreflight:p}),{lastValidBlockHeight:T,blockhash:h}=await this.connection.getLatestBlockhash();await this.connection.confirmTransaction({blockhash:h,lastValidBlockHeight:T,signature:A},"confirmed"),g.push(A)}return{txIds:g,signedTxs:s}}return{txIds:await Promise.all(s.map(async g=>{let P=await this.connection.sendTransaction(g,{skipPreflight:p});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:p});g.push({txId:A,status:"sent",signedTx:f[b]}),m==null||m([...g]),b++,this.connection.onSignature(A,T=>{let h=g.findIndex(I=>I.txId===A);h>-1&&(g[h].status=T.err?"error":"success"),m==null||m([...g]),T.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:p});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=Ie(c,["computeBudgetConfig"]),i=t?Yr(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,m)=>D(N({},l),{[m.publicKey.toBase58()]:m}),{}),s=[],a=[],u=[];if(this.allInstructions.forEach(l=>{let m=[...u,l],d=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 Gn(f));if(u.length<12&&qn({instructions:d,payer:this.feePayer,signers:y})||qn({instructions:m,payer:this.feePayer,signers:y}))u.push(l);else{if(u.length===0)throw Error("item ins too big");qn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:y})?s.push(new zn().add(...i.instructions,...u)):s.push(new zn().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(d=>d.keys.filter(p=>p.isSigner).map(p=>p.pubkey.toString())).flat()).values()].map(d=>o[d]).filter(d=>d!==void 0);qn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(d=>d.publicKey)})?s.push(new zn().add(...i.instructions,...u)):s.push(new zn().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:d,recentBlockHash:p,skipPreflight:y=!0}=l||{},f=p!=null?p:await Tn(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){if(m){let g=[];for(let P of s){let A=await Xn(this.connection,P,this.signers.find(T=>T.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:y});g.push(A)}return{txIds:g,signedTxs:s}}return{txIds:await Promise.all(s.map(async(g,P)=>await Xn(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=[],T=async()=>{if(!g[P])return;let h=await this.connection.sendRawTransaction(g[P].serialize(),{skipPreflight:y});A.push({txId:h,status:"sent",signedTx:g[P]}),d==null||d([...A]),P++,this.connection.onSignature(h,I=>{let B=A.findIndex(x=>x.txId===h);B>-1&&(A[B].status=I.err?"error":"success"),d==null||d([...A]),I.err||T()},"processed"),this.connection.getSignatureStatus(h)};return await T(),{txIds:A.map(h=>h.txId),signedTxs:g}}else{let P=[];for(let A=0;A<g.length;A+=1){let T=await this.connection.sendRawTransaction(g[A].serialize(),{skipPreflight:y});P.push(T)}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=Ie(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=N(N({},this.cluster==="devnet"?{}:jr),n),a=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let g of a)s[g]===void 0&&u.push(new Gn(g));let c=await Ji({connection:this.connection,address:u});for(let[g,P]of Object.entries(c))s[g]=P;let l=t?Yr(t):{instructions:[],instructionTypes:[]},m=await Tn(this.connection),d=this.signers.reduce((g,P)=>D(N({},g),{[P.publicKey.toBase58()]:P}),{}),p=[],y=[],f=[];if(this.allInstructions.forEach(g=>{let P=[...f,g],A=t?[...l.instructions,...P]:P;if(f.length<12&&Un({instructions:A,payer:this.feePayer,lookupTableAddressAccount:s})||Un({instructions:P,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(g);else{if(f.length===0)throw Error("item ins too big");let T={};for(let h of[...new Set(a)])s[h]!==void 0&&(T[h]=s[h]);if(t&&Un({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let h=new Yn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Hn(h))}else{let h=new Yn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Hn(h))}y.push(Array.from(new Set(f.map(h=>h.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat())).map(h=>d[h]).filter(h=>h!==void 0)),f=[g]}}),f.length>0){let P=[...new Set(f.map(A=>A.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat()).values()].map(A=>d[A]).filter(A=>A!==void 0);if(t&&Un({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let A=new Yn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Hn(A))}else{let A=new Yn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Hn(A))}y.push(P)}return{builder:this,transactions:p,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async g=>{var I;let{sequentially:P,onTxUpdate:A,recentBlockHash:T,skipPreflight:h=!0}=g||{};if(p.map(async(B,x)=>{y[x].length&&B.sign(y[x]),T&&(B.message.recentBlockhash=T)}),on(p),(I=this.owner)!=null&&I.isKeyPair){let{lastValidBlockHeight:B,blockhash:x}=await this.connection.getLatestBlockhash();if(p.forEach((K,M)=>{y[M].find(F=>F.publicKey.equals(this.owner.publicKey))||K.sign([this.owner.signer])}),P){let K=[];for(let M of p){let F=await this.connection.sendTransaction(M,{skipPreflight:h}),{lastValidBlockHeight:H,blockhash:v}=await this.connection.getLatestBlockhash();await this.connection.confirmTransaction({blockhash:v,lastValidBlockHeight:H,signature:F},"confirmed"),K.push(F)}return{txIds:K,signedTxs:p}}return{txIds:await Promise.all(p.map(async K=>{let M=await this.connection.sendTransaction(K,{skipPreflight:h});return await this.connection.confirmTransaction({blockhash:x,lastValidBlockHeight:B,signature:M},"confirmed"),M})),signedTxs:p}}if(this.signAllTransactions){let B=await this.signAllTransactions(p);if(P){let x=0,K=[],M=async()=>{if(!B[x])return;let F=await this.connection.sendTransaction(B[x],{skipPreflight:h});K.push({txId:F,status:"sent",signedTx:B[x]}),A==null||A([...K]),x++,this.connection.onSignature(F,H=>{let v=K.findIndex(j=>j.txId===F);v>-1&&(K[v].status=H.err?"error":"success"),A==null||A([...K]),H.err||M()},"processed"),this.connection.getSignatureStatus(F)};return M(),{txIds:[],signedTxs:B}}else{let x=[];for(let K=0;K<B.length;K+=1){let M=await this.connection.sendTransaction(B[K],{skipPreflight:h});x.push(M)}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 Zi(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}function Nb(r,...e){return r.filter(t=>e.every(n=>n.includes(t)))}function Mb(r,...e){return r.filter(t=>e.every(n=>!n.includes(t)))}function _b(r){return[...new Set(r)]}var na=r=>typeof r=="number",ra=r=>r?new Date(r):new Date,Cl=r=>ra(r).getTime();function ia(r,e,t){let n=na(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()<=n}function oa(r,e,t){let n=na(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()>n}function Eb(r,e){let n=Cl(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 ra(n)}import{PublicKey as me}from"@solana/web3.js";var $i=new me("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),eo=new me("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),xn=new me("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Rl=new me("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Ll=new me("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Jr=new me("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),to=new me("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Ol=new me("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Nl=new me("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Ml=new me("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Wb=new me("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),_l=new me("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Vl=new me("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),El=new me("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Fl=new me("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),vl=new me("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Wl=new me("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Dl=new me("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),ql=new me("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Ul=new me("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Gl=new me("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),Qn={IDO_PROGRAM_ID_V1:_l,IDO_PROGRAM_ID_V2:Vl,IDO_PROGRAM_ID_V3:El,IDO_PROGRAM_ID_V4:Fl},Db={AMM_V4:to,AMM_STABLE:Ol,CLMM_PROGRAM_ID:Nl,FARM_PROGRAM_ID_V3:$i,FARM_PROGRAM_ID_V5:eo,FARM_PROGRAM_ID_V6:xn,OPEN_BOOK_PROGRAM:Ll,SERUM_PROGRAM_ID_V3:Jr,UTIL1216:Rl,Router:Ml,CREATE_CPMM_POOL_PROGRAM:vl,CREATE_CPMM_POOL_AUTH:Wl,CREATE_CPMM_POOL_FEE_ACC:Dl},qb={SERUM_MARKET:me.default,OPENBOOK_MARKET:new me("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:me.default,FarmV3:new me("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new me("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new me("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new me("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new me("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new me("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new me("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:ql,CREATE_CPMM_POOL_AUTH:Ul,CREATE_CPMM_POOL_FEE_ACC:Gl,FEE_DESTINATION_ID:new me("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as Xl}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as zl}from"@solana/spl-token";function be(r,e,t){return oe([r.toBuffer(),(t!=null?t:zl).toBuffer(),e.toBuffer()],new Xl("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import Le from"bn.js";var xt=1e4;function Qb(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=Yt(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=Yt(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=Yt(r.mul(new Le(i.transferFeeBasisPoints)),new Le(xt)),u=a.gt(o)?o:a;return{amount:r,fee:u,expirationTime:s}}}function Pe(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=D(N({},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=Yt(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=Yt(l.mul(new Le(o.transferFeeBasisPoints)),new Le(xt)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let u=Yt(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 Yt(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new Le(0))?t.add(new Le(1)):t}var no=(t=>(t.ALL="all",t.Strict="strict",t))(no||{}),sa=(s=>(s.All="all",s.Standard="standard",s.Concentrated="concentrated",s.AllFarm="allFarm",s.StandardFarm="standardFarm",s.ConcentratedFarm="concentratedFarm",s))(sa||{});var We={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",SERVICE_BASE_HOST:"https://service.raydium.io",SEND_TRANSACTION:"/send-transaction",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"},yg=N({},We);var aa="ray_tab_hash",ro="ray_req_hash",Yl=()=>{if(typeof window===void 0)return"";let r=sessionStorage.getItem(aa);return r||(r=`ray-${Date.now()}`,sessionStorage.setItem(aa,r)),r},$r=async n=>{var i=n,{logCount:r=1e3,removeLastLog:e}=i,t=Ie(i,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(s=>s());let o=JSON.parse(localStorage.getItem(ro)||"[]").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(N({},t),{time:Date.now(),session:Yl()}));try{localStorage.setItem(ro,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(ro,JSON.stringify(o)),s=!0}catch{s=!1}}return new Promise(u=>u())}return $r(D(N({},t),{logCount:r,removeLastLog:!0}))}};var Bn=ae("Raydium_Api"),io=new Map;async function _g(r,e,t=1e3){let n;for(;n==null;)try{Bn.debug(`Request ${r} through endlessRetry`),n=await e()}catch(i){Bn.error(`Request ${r} failed, retry after ${t} ms`,i),await Ys(t)}return n}var ei=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:i,urlConfigs:o}){this.cluster=e,this.urlConfigs=o||{},this.logCount=i||1e3,this.api=Hl.create({baseURL:this.urlConfigs.BASE_HOST||We.BASE_HOST,timeout:t}),this.api.interceptors.request.use(s=>{let{method:a,baseURL:u,url:c}=s;return Bn.debug(`${a==null?void 0:a.toUpperCase()} ${u}${c}`),s},s=>(Bn.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:d}=a;return n&&$r({status:c,url:`${m}${d}`,params:a.params,data:u,logCount:this.logCount}),Bn.debug(`${l==null?void 0:l.toUpperCase()} ${m}${d} ${c}`),u},s=>{let{config:a,response:u={}}=s,{status:c}=u,{method:l,baseURL:m,url:d}=a;return n&&$r({status:c,url:`${m}${d}`,params:a.params,data:s.message,logCount:this.logCount}),Bn.error(`${l.toUpperCase()} ${m}${d} ${c||s.message}`),Promise.reject(s)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||We.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||We.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||We.CHAIN_TIME)).data}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||We.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||We.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||We.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||We.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||We.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||We.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],i=t.filter(s=>io.has(s)?(n.push(io.get(s)),!1):!0),o=[];return i.length&&(o=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||We.POOL_KEY_BY_ID)+`?ids=${i.join(",")}`)).data.filter(Boolean),o.forEach(a=>{io.set(a.id,a)})),n.concat(o)}async fetchPoolByMints(e){let{mint1:t,mint2:n,type:i="all",sort:o="default",order:s="desc",page:a=1}=e,[u,c]=[t&&kn(t).toBase58(),n&&n!=="undefined"?kn(n).toBase58():""],[l,m]=c&&u>c?[c,u]:[u,c];return(await this.api.get((this.urlConfigs.POOL_SEARCH_MINT||We.POOL_SEARCH_MINT)+`?mint1=${l}&mint2=${m}&poolType=${i}&poolSortField=${o}&sortType=${s}&pageSize=100&page=${a}`)).data}async fetchFarmInfoById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_INFO||We.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||We.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||We.CHECK_AVAILABILITY)).data}};import{merge as Dp}from"lodash";var ti="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",ua="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as Ao,TOKEN_PROGRAM_ID as Zt,AccountLayout as Kn,TOKEN_2022_PROGRAM_ID as id}from"@solana/spl-token";import{PublicKey as ui,SystemProgram as od}from"@solana/web3.js";var oo=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Be=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ae(t)}createTxBuilder(e){return this.scope.checkOwner(),new Zr({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(oo(e))}logInfo(...e){this.logger.info(oo(e))}logAndCreateError(...e){let t=oo(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as Jm,createCloseAccountInstruction as $m,createTransferInstruction as ed,TOKEN_PROGRAM_ID as Sn}from"@solana/spl-token";import{PublicKey as td,SystemProgram as nd}from"@solana/web3.js";import rd from"bn.js";import{PublicKey as Ia,Keypair as Hm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Qm}from"@solana/spl-token";import jm from"bn.js";import{PublicKey as Wm}from"@solana/web3.js";import ya,{isBN as ba}from"bn.js";import{bits as Ql,BitStructure as jl,blob as Zl,Blob as Jl,cstr as $l,f32 as em,f32be as tm,f64 as nm,f64be as rm,greedy as im,Layout as om,ns64 as sm,ns64be as am,nu64 as um,nu64be as cm,offset as lm,s16 as mm,s16be as dm,s24 as pm,s24be as fm,s32 as ym,s32be as bm,s40 as gm,s40be as wm,s48 as Am,s48be as Pm,s8 as km,seq as hm,struct as Hg,Structure as Tm,u16 as Im,u16be as xm,u24 as Bm,u24be as Sm,u32 as Km,u32be as Cm,u40 as Rm,u40be as Lm,u48 as Om,u48be as Nm,u8 as Mm,UInt as _m,union as Vm,Union as Em,unionLayoutDiscriminator as Fm,utf8 as vm}from"@solana/buffer-layout";var jn=om,ca=Tm,la=Em,Qg=jl,so=_m,ma=Jl,jg=im,ni=Mm,Bt=Im,Zg=Bm,Zn=Km,Jg=Rm,$g=Om,da=um,ew=xm,tw=Sm,nw=Cm,rw=Lm,iw=Nm,ow=cm,sw=km,aw=mm,uw=pm,De=ym,cw=gm,lw=Am,mw=sm,dw=dm,pw=fm,fw=bm,yw=wm,bw=Pm,gw=am,ww=em,Aw=tm,Pw=nm,kw=rm;var pa=hm,fa=Vm,hw=Fm,fe=Zl,Tw=$l,Iw=vm,ao=Ql,uo=lm;var an=class extends jn{constructor(t,n,i){super(t,i);this.blob=fe(t),this.signed=n}decode(t,n=0){let i=new ya(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 ya(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},ri=class extends jn{constructor(t){super(8,t);this._lower=ao(Zn(),!1),this._upper=ao(Zn(),!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 N(N({},i),o)}encode(t,n,i=0){return this._lower.encode(t,n,i)+this._upper.encode(t,n,i+this._lower.span)}};function V(r){return new so(1,r)}function ze(r){return new so(4,r)}function w(r){return new an(8,!1,r)}function Y(r){return new an(16,!1,r)}function ga(r){return new an(1,!0,r)}function ii(r){return new an(8,!0,r)}function wa(r){return new an(16,!0,r)}var Mt=class extends jn{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 Mt(fe(32),e=>new Wm(e),e=>e.toBuffer(),r)}var co=class extends jn{constructor(t,n){super(-1,n);this.layout=t,this.discriminator=ni()}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 Cw(r,e){return new co(r,e)}function qe(r){return new Mt(ni(),Dm,qm,r)}function Dm(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function qm(r){return r?1:0}function Rw(r,e){let t=Zn("length"),n=L([t,q(r,uo(t,-t.span),"values")]);return new Mt(n,({values:i})=>i,i=>({values:i}),e)}function Lw(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 Mt(n,i,o=>({tag:r,data:o}),t)}function Um(r){let e=Zn("length"),t=L([e,fe(uo(e,-e.span),"data")]);return new Mt(t,({data:n})=>n,n=>({data:n}),r)}function Ow(r){return new Mt(Um(),e=>e.toString("utf-8"),e=>Buffer.from(e,"utf-8"),r)}function Nw(r,e){let t=fa(ni(),e);return r.forEach((n,i)=>t.addVariant(i,n,n.property)),t}function Mw(r,e,t){let n=L([q(r,e,"values")]);return new Mt(n,({values:i})=>i,i=>({values:i}),t)}var lo=class extends ca{decode(e,t){return super.decode(e,t)}};function L(r,e,t){return new lo(r,e,t)}var mo=class extends la{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 _w(r,e,t){return new mo(r,e,t)}var po=class extends ma{decode(e,t){let n=super.decode(e,t);if(!n.every(i=>i===0))throw new Error("nonzero padding bytes");return n}};function Vw(r){return new po(r)}function q(r,e,t){let n,i=typeof e=="number"?e:ba(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=ba(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 pa(r,i,t)}var Ht=L([S("mint"),S("owner"),w("amount"),ze("delegateOption"),S("delegate"),V("state"),ze("isNativeOption"),w("isNative"),w("delegatedAmount"),ze("closeAuthorityOption"),S("closeAuthority")]);function Gm(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function fo(r,...e){if(!Gm(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 yo(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 Aa(r,e){fo(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var si=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),wt=(r,e)=>r<<32-e|r>>>e;var Uw=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Xm(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function bo(r){return typeof r=="string"&&(r=Xm(r)),fo(r),r}var oi=class{clone(){return this._cloneInto()}},Gw={}.toString;function Pa(r){let e=n=>r().update(bo(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function zm(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 ka=(r,e,t)=>r&e^~r&t,ha=(r,e,t)=>r&e^r&t^e&t,ai=class extends oi{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=si(this.buffer)}update(e){yo(this);let{view:t,buffer:n,blockLen:i}=this;e=bo(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=si(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){yo(this),Aa(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;zm(n,i-8,BigInt(this.length*8),o),this.process(n,0);let a=si(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 Ym=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]),jt=new Uint32Array(64),go=class extends ai{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)jt[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=jt[m-15],p=jt[m-2],y=wt(d,7)^wt(d,18)^d>>>3,f=wt(p,17)^wt(p,19)^p>>>10;jt[m]=f+jt[m-7]+y+jt[m-16]|0}let{A:n,B:i,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let d=wt(a,6)^wt(a,11)^wt(a,25),p=l+d+ka(a,u,c)+Ym[m]+jt[m]|0,f=(wt(n,2)^wt(n,13)^wt(n,22))+ha(n,i,o)|0;l=c,c=u,u=a,a=s+p|0,s=o,o=i,i=n,n=p+f|0}n=n+this.A|0,i=i+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,i,o,s,a,u,c,l)}roundClean(){jt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Ta=Pa(()=>new go);var aA=ae("Raydium_Util");function xa({owner:r,solAccountResp:e,tokenAccountResp:t}){let n=[],i=[];for(let{pubkey:o,account:s}of t.value){let a=Ht.decode(s.data),{mint:u,amount:c}=a;n.push({publicKey:o,mint:u,amount:c,isAssociated:be(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:Ia.default,amount:new jm(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:i}}function Ye({fromPublicKey:r,programId:e=Qm}){let t=Hm.generate().publicKey.toBase58().slice(0,32);return{publicKey:Zm(r,t,e),seed:t}}function Zm(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=Ta(n);return new Ia(i)}function wo(r){let{mint:e,tokenAccount:t,owner:n,programId:i=Sn}=r;return Jm(t,e,n,i)}function _t(r){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:i,programId:o=Sn}=r;return $m(e,t,i,n,o)}async function Vt(r){let{connection:e,amount:t,commitment:n,payer:i,owner:o,skipCloseAccount:s}=r,a=await e.getMinimumBalanceForRentExemption(Ht.span,n),u=U(t).add(new rd(a)),c=Ye({fromPublicKey:i,programId:Sn});return{addresses:{newAccount:c.publicKey},signers:[],instructions:[nd.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:c.seed,newAccountPubkey:c.publicKey,lamports:u.toNumber(),space:Ht.span,programId:Sn}),wo({mint:new td(Me.address),tokenAccount:c.publicKey,owner:o,programId:Sn})],instructionTypes:[E.CreateAccount,E.InitAccount],endInstructionTypes:s?[]:[E.CloseAccount],endInstructions:s?[]:[_t({tokenAccount:c.publicKey,payer:i,owner:o})]}}function Jn({source:r,destination:e,owner:t,amount:n,multiSigners:i=[],tokenProgram:o=Sn}){return ed(r,e,t,BigInt(String(n)),i,o)}var $n=class extends Be{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 be(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=N(N({},{}),t),[o,s,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Zt},i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:id},i.commitment)]),{tokenAccounts:u,tokenAccountRawInfos:c}=xa({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}),t==null?void 0:t.commitment),{tokenAccounts:u,tokenAccountRawInfos:c}}async getCreatedTokenAccount({mint:t,programId:n=Zt,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;await this.fetchWalletTokenAccounts();let{mint:n,createInfo:i,associatedOnly:o,owner:s,notUseTokenAccount:a=!1,skipCloseAccount:u=!1,checkCreateATAOwner:c=!1}=t,l=new ui(t.tokenProgram||Zt),m=this.getAssociatedTokenAccount(n,new ui(l)),d=(a?[]:this.tokenAccountRawInfos).filter(b=>b.accountInfo.mint.equals(n)&&(!o||b.pubkey.equals(m))).sort((b,g)=>b.accountInfo.amount.lt(g.accountInfo.amount)?1:-1);if(i===void 0||d.length>0)return d.length>0?{account:d[0].pubkey}:{};let p={instructions:[],endInstructions:[],signers:[],instructionTypes:[],endInstructionTypes:[]};if(o){let b=Ao(s,m,s,n,l);if(c){let g=await this.scope.connection.getAccountInfo(m);if(g===null)(y=p.instructions)==null||y.push(b),p.instructionTypes.push(E.CreateATA);else if(!(g.owner.equals(l)&&Kn.decode(g.data).mint.equals(n)&&Kn.decode(g.data).owner.equals(s)))throw Error(`create ata check error -> mint: ${n.toString()}, ata: ${m.toString()}`)}else p.instructions.push(b),p.instructionTypes.push(E.CreateATA);if(n.equals(ne)&&i.amount){let g=await Vt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:i.payer||this.scope.ownerPubKey,amount:(f=i.amount)!=null?f:0,skipCloseAccount:u});p.instructions.push(...g.instructions||[]),p.endInstructions.push(...g.endInstructions||[]),p.instructionTypes.push(...g.instructionTypes||[]),p.endInstructionTypes.push(...g.endInstructionTypes||[]),i.amount&&(p.instructions.push(Jn({source:g.addresses.newAccount,destination:m,owner:this.scope.ownerPubKey,amount:i.amount,tokenProgram:Zt})),p.instructionTypes.push(E.TransferAmount))}return u||(p.endInstructions.push(_t({owner:s,payer:i.payer||s,tokenAccount:m,programId:l})),p.endInstructionTypes.push(E.CloseAccount)),{account:m,instructionParams:p}}else{let b=Ye({fromPublicKey:s,programId:l}),g=await this.scope.connection.getMinimumBalanceForRentExemption(Kn.span),P=od.createAccountWithSeed({fromPubkey:s,basePubkey:s,seed:b.seed,newAccountPubkey:b.publicKey,lamports:g,space:Kn.span,programId:l});return p.instructions.push(P,wo({mint:n,tokenAccount:b.publicKey,owner:this.scope.ownerPubKey,programId:l})),p.instructionTypes.push(E.CreateAccount),p.instructionTypes.push(E.InitAccount),u||(p.endInstructions.push(_t({owner:s,payer:i.payer||s,tokenAccount:b.publicKey,programId:l})),p.endInstructionTypes.push(E.CloseAccount)),{account:b.publicKey,instructionParams:p}}}async checkOrCreateAta({mint:t,programId:n=Zt,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 Ao(s,c,s,t,n);a.instructions=[l],a.instructionTypes=[E.CreateATA],o=c}return i&&ne.toBase58()===t.toBase58()&&(a.endInstructions=[_t({owner:s,payer:s,tokenAccount:o,programId:n})],a.endInstructionTypes=[E.CloseAccount]),{pubKey:o,newInstructions:a}}async handleTokenAccount(t){let{side:n,amount:i,mint:o,programId:s=Zt,tokenAccount:a,payer:u=this.scope.ownerPubKey,bypassAssociatedCheck:c,skipCloseAccount:l,checkCreateATAOwner:m}=t,d=this.getAssociatedTokenAccount(o,s);if(new ui(ne).equals(o)){let p=await Vt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:u,amount:i,skipCloseAccount:l});return N({tokenAccount:p.addresses.newAccount},p)}else if(!a||n==="out"&&!d.equals(a)&&!c){let p=[],y=Ao(this.scope.ownerPubKey,d,this.scope.ownerPubKey,o,s);if(m){let f=await this.scope.connection.getAccountInfo(d);if(f===null)p.push(y);else if(!(f.owner.equals(Zt)&&Kn.decode(f.data).mint.equals(o)&&Kn.decode(f.data).owner.equals(this.scope.ownerPubKey)))throw Error(`create ata check error -> mint: ${o.toString()}, ata: ${d.toString()}`)}else p.push(y);return{tokenAccount:d,instructions:p,instructionTypes:[E.CreateATA]}}return{tokenAccount:a}}async processTokenAccount(t){let{mint:n,programId:i=Zt,amount:o,useSOLBalance:s,handleTokenAccount:a}=t,u,c=this.createTxBuilder();if(n.equals(new ui(ne))&&s){let l=await this.handleTokenAccount({side:"in",amount:o||0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:d}=l,p=Ie(l,["tokenAccount"]);u=d,c.addInstruction(p)}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:d}=m,p=Ie(m,["tokenAccount"]);u=d,c.addInstruction(p)}return N({tokenAccount:u},c.AllTxData)}};import{createAssociatedTokenAccountInstruction as Bd}from"@solana/spl-token";import{PublicKey as ke,SystemProgram as Sd}from"@solana/web3.js";import{PublicKey as Oa}from"@solana/web3.js";var Po=L([V("instruction")]),ko=L([V("instruction")]),sd=L([w("rewardState"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardLastUpdateTime"),w("totalReward"),w("totalRewardEmissioned"),w("rewardClaimed"),w("rewardPerSecond"),Y("accRewardPerShare"),S("rewardVault"),S("rewardMint"),S("rewardSender"),w("rewardType"),q(w(),15,"padding")]),ad=L([w("state"),w("nonce"),S("lpVault"),S("rewardVault"),S(),S(),w(),w(),w("totalReward"),Y("perShareReward"),w("lastSlot"),w("perSlotReward")]),ud=L([w("state"),w("nonce"),S("lpVault"),S("rewardVaultA"),w("totalRewardA"),Y("perShareRewardA"),w("perSlotRewardA"),V("option"),S("rewardVaultB"),fe(7),w("totalRewardB"),Y("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),S()]),cd=L([w(),w("state"),w("nonce"),w("validRewardTokenNum"),Y("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),S("lpMint"),S("lpVault"),q(sd,5,"rewardInfos"),S("creator"),S(),q(w(),32,"padding")]),Ba=new Proxy(ad,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return D(N({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(r,e,t)}}),Sa=new Proxy(ud,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return D(N({},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)}}),er=new Proxy(cd,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return D(N({},i),{version:6,rewardInfos:i.rewardInfos.map(o=>{var s;return D(N({},o),{rewardType:((s=Object.entries(Jt).find(a=>String(a[1])===o.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),ld=L([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),ho=L([V("instruction"),w("nonce"),q(ld,5,"rewardTimeInfo")]),To=L([V("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),Io=L([V("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")]),tr=L([w("state"),S("id"),S("owner"),w("deposited"),q(Y(),1,"rewardDebts"),w(""),w("voteLockedBalance"),q(w(),15)]),WA=L([w("state"),S("id"),S("owner"),w("deposited"),q(w(),2,"rewardDebts")]),Ka=L([w("state"),S("id"),S("owner"),w("deposited"),q(Y(),2,"rewardDebts"),q(w(),17)]),Ca=L([w(),w("state"),S("id"),S("owner"),w("deposited"),q(Y(),5,"rewardDebts"),q(w(),16)]),Je=L([V("instruction"),w("amount")]),md=L([S("mint"),S("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),ga("digitShift"),q(V(),7,"reserved1"),q(w(),7,"reserved2")]),Ra=L([fe(8),S("governanceProgramId"),S("realm"),S("realmGoverningTokenMint"),S("realmAuthority"),q(V(),32,"reserved1"),q(md,4,"votingMints"),ii("timeOffset"),V("bump"),q(V(),7,"reserved2"),q(w(),11,"reserved3")]),dd=L([ii("startTime"),ii("endTime"),V("kind"),q(V(),15,"reserved")]),pd=L([q(dd,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),qe("isUsed"),qe("allowClawback"),V("votingMintConfigIdx"),q(V(),29,"reserved")]),La=L([fe(8),S("voterAuthority"),S("registrar"),q(pd,32,"deposits"),V("voterBump"),V("voterWweightRecordBump"),q(V(),94,"reserved")]);var HA=ae("Raydium_farm_config"),Na=new Oa("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Ma=new Oa("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1"),_a={3:Ba,5:Sa,6:er},Va={3:tr,5:Ka,6:Ca},xo=r=>[3,5,6].indexOf(r)!==-1,Bo=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)},Jt={"Standard SPL":0,"Option tokens":1},At={[$i.toString()]:3,[eo.toString()]:5,[xn.toString()]:6};import{PublicKey as ie,SystemProgram as un,SYSVAR_RENT_PUBKEY as bd,SYSVAR_CLOCK_PUBKEY as ir,TransactionInstruction as Ve}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as gd,TOKEN_PROGRAM_ID as st,ASSOCIATED_TOKEN_PROGRAM_ID as wd}from"@solana/spl-token";import li from"bn.js";function So(r,e,t){return oe([e.toBuffer(),Buffer.from("registrar","utf8"),t.toBuffer()],r)}function Ko(r,e){return oe([e.toBuffer(),Buffer.from("voting_mint_seed","utf8")],r)}function Co(r,e){return oe([e.toBuffer()],r)}function Ro(r,e,t){return oe([e.toBuffer(),Buffer.from("voter","utf8"),t.toBuffer()],r)}function Lo(r,e,t){return oe([e.toBuffer(),Buffer.from("voter-weight-record","utf8"),t.toBuffer()],r)}function Oo(r,e,t,n){return oe([Buffer.from("governance","utf8"),e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}import rt from"bn.js";var nr=ae("Raydium.farm.util");function rr({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 Ea=({programId:r,poolId:e})=>oe([e.toBuffer()],r);function Fa(r){return{isSet:new rt(1),rewardPerSecond:U(r.perSecond),rewardOpenTime:U(r.openTime),rewardEndTime:U(r.endTime),rewardType:U(Jt[r.rewardType])}}function No(r){return U(r.endTime).sub(U(r.openTime)).mul(U(r.perSecond))}function ci(r){let e=Va[r];return e||nr.logWithError("invalid version",r),e}function fd(r){let e=_a[r];return e||nr.logWithError("invalid version",r),e}function yd(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 mP({connection:r,farmPools:e,owner:t,config:n,chainTime:i}){let o=!1,s=!1,a=new rt(10),u=[];for(let d of e){let p=ye(d);p.version===6?s=!0:o=!0,u.push({pubkey:p.id,version:p.version,key:"state",poolId:p.id},{pubkey:p.lpVault,version:p.version,key:"lpVault",poolId:p.id}),t&&u.push({pubkey:it({programId:p.programId,poolId:p.id,owner:t,version:d.version}),version:p.version,key:"ledger",poolId:p.id})}let c={},l=await In(r,u,n);for(let{pubkey:d,version:p,key:y,poolId:f,accountInfo:b}of l){let g=f.toBase58();if(c[g]=N({},c[g]),y==="state"){let P=fd(p);(!b||!b.data||b.data.length!==P.span)&&nr.logWithError(`invalid farm state account info, pools.id, ${d}`),c[g].state=P.decode(b.data)}else if(y==="lpVault")(!b||!b.data||b.data.length!==Ht.span)&&nr.logWithError(`invalid farm lp vault account info, pools.lpVault, ${d}`),c[g].lpVault=Ht.decode(b.data);else if(y==="ledger"){let P=ci(p);b&&b.data&&(b.data.length!==P.span&&nr.logWithError(`invalid farm ledger account info, ledger, ${d}`),c[g].ledger=P.decode(b.data))}}let m=s||o?await r.getSlot():0;for(let d of Object.keys(c))c[d]!==void 0&&(c[d].state=yd(c[d].state,c[d].lpVault,m,i));for(let[d,{state:p,ledger:y}]of Object.entries(c))if(y){let f=p.version===6?p.rewardMultiplier:p.rewardInfos.length===1?a.pow(new rt(9)):a.pow(new rt(15)),b=p.rewardInfos.map((g,P)=>{let A=y.rewardDebts[P];return y.deposited.mul(p.version===6?g.accRewardPerShare:g.perShareReward).div(f).sub(A)});c[d].wrapped=D(N({},c[d].wrapped),{pendingRewards:b})}return c}function dP(r,e=Date.now()){if(r.version===6){let t=r.state.rewardInfos;if(t.every(({rewardOpenTime:n})=>ia(e,n.toNumber(),{unit:"s"})))return"upcoming pool";if(t.every(({rewardEndTime:n})=>oa(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 Mo(r,e,t,n){let i=await r.getAccountInfo(e);if(i===null)throw Error("registrar info check error");let s=Ra.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=La.decode(a.data).deposits.findIndex(l=>l.isUsed&&l.votingMintConfigIdx===s);return c===-1?{index:s,isInit:!1}:{index:c,isInit:!0}}var Ad=ae("Raydium_farm_instruction"),or={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||Ad.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(Po.span);Po.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:bd,isWritable:!1})];return{instruction:new Ve({programId:i,keys:u,data:a}),instructionType:E.FarmV3CreateLedger}}function Wa(r){var n;let e=Buffer.alloc(ho.span);ho.encode({instruction:0,nonce:new li(r.nonce),rewardTimeInfo:r.rewardInfoConfig},e);let t=[...Fi,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:E.FarmV6Create}}function Da(r){let e=Buffer.alloc(ko.span);ko.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:E.FarmV6CreatorWithdraw}}function Pd(r,e,t,n,i,o,s,a,u,c,l,m,d){let p=L([V("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(p.span);p.encode({depositEntryIndex:m,amount:d},f);let b=Buffer.from([...or.voterStakeRegistryDeposit,...f]);return new Ve({keys:y,programId:r,data:b})}function kd(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([...or.voterStakeRegistryUpdateVoterWeightRecord,...s]);return new Ve({keys:o,programId:r,data:a})}function hd(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y){let f=L([V("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:d,isSigner:!1,isWritable:!1},{pubkey:vr,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({depositEntryIndex:p,amount:y},g);let P=Buffer.from([...or.voterStakeRegistryWithdraw,...g]);return new Ve({keys:b,programId:r,data:P})}function Td(r,e,t,n,i,o){let s=L([V("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 Id(r,e,t,n,i,o,s,a){let u=L([V("voterBump"),V("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([...or.voterStakeRegistryCreateVoter,...l]);return new Ve({keys:c,programId:r,data:m})}function xd(r,e,t,n,i,o,s,a,u,c,l,m){let d=L([V("depositEntryIndex"),V("kind"),V("option"),w("startTs"),ze("periods"),qe("allowClawback")]),p=[{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:wd,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1}],y=Buffer.alloc(d.span);d.encode({depositEntryIndex:a,kind:u,option:c===void 0?0:1,startTs:c,periods:l,allowClawback:m},y);let f=Buffer.from([...or.voterStakeRegistryCreateDepositEntry,...y]);return new Ve({keys:p,programId:r,data:f})}async function CP({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=So(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 d=tr.decode(m.data),p=d.deposited.sub(d.voteLockedBalance);if(console.log("amount",p.toString()),p.eq(new li(0)))throw Error("user do not has new stake amount");let y=Ko(e,a).publicKey,f=Co(e,a).publicKey,{publicKey:b,nonce:g}=Ro(n,c,s),P=be(b,y,u).publicKey,{publicKey:A,nonce:T}=Lo(n,c,s),h=Oo(t,i,o,s).publicKey,I=[],B=be(s,y,u).publicKey;if(await r.getAccountInfo(B)===null&&I.push(gd(s,B,s,y)),await r.getAccountInfo(b)===null){let H=Td(t,i,s,o,s,h);I.push(H,Id(n,c,b,A,s,s,g,T))}let{index:M,isInit:F}=await Mo(r,c,b,y);return F||I.push(xd(n,c,b,P,s,s,y,M,0,void 0,0,!1)),I.push(Pd(n,c,b,P,B,s,l,a,y,f,e,M,p),kd(n,c,b,A)),I}async function RP({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=So(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 d=tr.decode(m.data);if(d.voteLockedBalance.eq(new li(0)))throw Error("user has vote locked balance = 0");let p=Ko(e,a).publicKey,y=Co(e,a).publicKey,{publicKey:f}=Ro(n,c,s),b=be(f,p,u).publicKey,{publicKey:g}=Lo(n,c,s),P=Oo(t,i,o,s).publicKey,A=[],{index:T,isInit:h}=await Mo(r,c,f,p);if(!h)throw Error("deposit entry index check error");return A.push(hd(n,c,f,s,P,g,b,be(s,p,u).publicKey,l,a,p,y,e,T,d.voteLockedBalance)),A}function _o({payer:r,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:i}){let o=Buffer.alloc(To.span);To.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 Vo({payer:r,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:i}){let o=Buffer.alloc(Io.span);Io.encode({instruction:4,isSet:new li(1),rewardPerSecond:U(i.perSecond),rewardOpenTime:U(i.openTime),rewardEndTime:U(i.endTime),rewardType:U(Jt[i.rewardType])},o);let s=[...Fi,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 LP(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)],d=it({programId:l,poolId:m,owner:s,version:n}),p=Buffer.alloc(Je.span);Je.encode({instruction:a,amount:u},p);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:d}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:i})]:[k({pubkey:m}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:d}),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:ir,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:p})}function sr(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 d=0;d<t.rewardInfos.length;d++)m.push(k({pubkey:new ie(t.rewardInfos[d].vault)})),m.push(k({pubkey:i[d]}));return new Ve({programId:a,keys:m,data:l})}function ar(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 d=[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:ir,isWritable:!1}),k({pubkey:st,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(k({pubkey:i[p]})),d.push(k({pubkey:new ie(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(k({pubkey:p}));return new Ve({programId:u,keys:d,data:m})}function ur(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 d=[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:ir,isWritable:!1}),k({pubkey:st,isWritable:!1})];if(a)for(let p of a)d.push(k({pubkey:p}));return new Ve({programId:u,keys:d,data:m})}function qa(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 d=[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:ir,isWritable:!1}),k({pubkey:st,isWritable:!1})];if(a)for(let p of a)d.push(k({pubkey:p}));return new Ve({programId:u,keys:d,data:m})}function Ua(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 d=[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:ir,isWritable:!1}),k({pubkey:st,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(k({pubkey:i[p]})),d.push(k({pubkey:new ie(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(k({pubkey:p}));return new Ve({programId:u,keys:d,data:m})}function Ga(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 d=0;d<t.rewardInfos.length;d++)m.push(k({pubkey:new ie(t.rewardInfos[d].vault)})),m.push(k({pubkey:i[d]}));return new Ve({programId:a,keys:m,data:l})}var cr=class extends Be{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Ne)){let n=await Vt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:No(D(N({},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=xn,txVersion:o}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new ke(e.lpMint.address),lockInfo:{lockMint:Na,lockVault:Ma},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(er.span);u.addInstruction({instructions:[Sd.createAccountWithSeed({fromPubkey:c,basePubkey:c,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m,space:er.span,programId:a.programId})]});let{publicKey:d,nonce:p}=Ea({programId:new ke(a.programId),poolId:l.publicKey}),y=rr({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(Jt[h.rewardType])&&this.logAndCreateError("rewardType error",h.rewardType),Number(h.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",h.perSecond),f.push(Fa(h));let{rewardPubKey:I,newInstruction:B}=await this._getUserRewardInfo({rewardInfo:h,payer:c});B&&u.addInstruction(B),I||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let x=h.mint.equals(Ne)?new ke(Me.address):h.mint;b.push({rewardMint:x,rewardVault:rr({programId:a.programId,poolId:l.publicKey,mint:x,type:"rewardVault"}),userRewardToken:I})}let{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({mint:new ke(a.lockInfo.lockMint),owner:this.scope.ownerPubKey,skipCloseAccount:!1,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:!1});P&&u.addInstruction(P),g||this.logAndCreateError("cannot found lock vault","tokenAccounts",this.scope.account.tokenAccounts);let{instruction:A,instructionType:T}=Wa({farmId:l.publicKey,owner:this.scope.ownerPubKey,farmAuthority:d,lpVault:y,lpMint:a.lpMint,lockVault:a.lockInfo.lockVault,lockMint:a.lockInfo.lockMint,lockUserAccount:g,programId:a.programId,rewardInfo:b,rewardInfoConfig:f,nonce:p});return u.addInstruction({instructions:[A],instructionTypes:[T]}).versionBuild({txVersion:o,extInfo:{farmId:l.publicKey,farmAuthority:d,lpVault:y,lockUserAccount:g,nonce:p}})}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=ye((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 d=(b=m.vault)!=null?b:Ne,p=this.createTxBuilder(),{rewardPubKey:y,newInstruction:f}=await this._getUserRewardInfo({rewardInfo:n,payer:u});return f&&p.addInstruction(f),y||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts),p.addInstruction({instructions:[_o({payer:this.scope.ownerPubKey,rewardVault:d,userRewardTokenPub:y,farmKeys:a,rewardInfo:n})],instructionTypes:[E.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=ye((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 d=m.mint.equals(Ne)?new ke(Me.address):m.mint,p=a.rewardInfos.findIndex(A=>new ke(A.mint.address).equals(d)),y=s.rewardInfos[p];y||this.logAndCreateError("configuration does not exist","rewardMint",d);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=_o({payer:this.scope.ownerPubKey,rewardVault:f,userRewardTokenPub:b,farmKeys:a,rewardInfo:m});c.addInstruction({instructions:[P],instructionTypes:[E.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=ye((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=rr({programId:new ke(n.programId),poolId:new ke(n.id),mint:l,type:"rewardVault"}),{rewardPubKey:d,newInstruction:p}=await this._getUserRewardInfo({rewardInfo:i,payer:u});return p&&c.addInstruction(p),d||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),i.mint=l,c.addInstruction({instructions:[Vo({payer:this.scope.ownerPubKey,userRewardTokenPub:d,farmKeys:a,rewardVault:m,rewardInfo:i})],instructionTypes:[E.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=ye((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,d=rr({programId:new ke(n.programId),poolId:new ke(n.id),mint:m,type:"rewardVault"}),{rewardPubKey:p,newInstruction:y}=await this._getUserRewardInfo({rewardInfo:l,payer:u});y&&c.addInstruction(y),p||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let f=Vo({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:a,rewardVault:d,rewardInfo:D(N({},l),{mint:m})});c.addInstruction({instructions:[f],instructionTypes:[E.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:d}=n,p=At[d];xo(p)||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:p}),P=this.createTxBuilder();P.addCustomComputeBudget(l);let A={};for(let v of this.scope.account.tokenAccounts)if(a){let j=be(this.scope.ownerPubKey,v.mint,v.programId).publicKey;v.publicKey&&j.equals(v.publicKey)&&(A[v.mint.toString()]=v.publicKey)}else A[v.mint.toString()]=v.publicKey;let T=b.lpMint,h=A[T.address];h||this.logAndCreateError("you don't have any lp","lp zero",A);let I=[];for(let v of m){let j=s&&v.mint.address===ne.toString(),ee=A[v.mint.address];if(!ee){let{account:se,instructionParams:ft}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:v.mint.programId,mint:new ke(v.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[v.mint.address]=ee,I.push(ee)}let B,x=await this.scope.connection.getAccountInfo(g);if(x&&(B=ci(p).decode(x.data)),n.programId!==xn.toString()&&!B){let{instruction:v,instructionType:j}=va({id:f,programId:y,version:p,ledger:g,owner:this.scope.ownerPubKey});P.addInstruction({instructions:[v],instructionTypes:[j]})}let K=Bo({version:p,rewardInfos:m,rewardTokenAccountsPublicKeys:I});K&&this.logAndCreateError(K);let M={amount:U(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:b,lpAccount:h,rewardAccounts:I,userAuxiliaryLedgers:c==null?void 0:c.map(v=>new ke(v))},F=p===6?Ga(M):p===5?Ua(M):qa(M),H={3:E.FarmV3Deposit,5:E.FarmV5Deposit,6:E.FarmV6Deposit};return P.addInstruction({instructions:[F],instructionTypes:[H[p]]}).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:d}=n;this.scope.availability.removeFarm===!1&&this.logAndCreateError("farm withdraw feature disabled in your region");let p=At[n.programId];xo(p)||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 K of this.scope.account.tokenAccounts)if(u){let M=be(this.scope.ownerPubKey,K.mint).publicKey;K.publicKey&&M.equals(K.publicKey)&&(b[K.mint.toString()]=K.publicKey)}else b[K.mint.toString()]=K.publicKey;if(o)o.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else{let K=it({programId:new ke(n.programId),poolId:new ke(n.id),owner:this.scope.ownerPubKey,version:p}),M=await this.scope.connection.getAccountInfo(K);M||this.logAndCreateError("no lp data",{farmId:n.id,version:p,ledgerData:M}),ci(p).decode(M.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id})}let g=y.lpMint.address,P=s&&g===ne.toString(),A=b[g.toString()];if(!A){let{account:K,instructionParams:M}=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=K,M&&f.addInstruction(M)}b[g.toString()]=A;let T=[];for(let K of d){let M=s&&K.mint.address===ne.toString(),F=b[K.mint.address];if(!F){let{account:H,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:K.mint.programId,mint:new ke(K.mint.address),notUseTokenAccount:M,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!M,associatedOnly:M?!1:u,checkCreateATAOwner:c});F=H,v&&f.addInstruction(v)}b[K.mint.address]=F,T.push(F)}let h=Bo({version:p,rewardInfos:d,rewardTokenAccountsPublicKeys:T});h&&this.logAndCreateError(h);let I={amount:U(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:A,rewardAccounts:T,userAuxiliaryLedgers:l==null?void 0:l.map(K=>new ke(K))},B=p===6?sr(I):p===5?ar(I):ur(I),x={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};return f.addInstruction({instructions:[B],instructionTypes:[x[p]]}).versionBuild({txVersion:t})}async withdrawFarmReward({farmInfo:e,withdrawMint:t,txVersion:n}){var p;this.scope.checkOwner();let i=ye((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=(p=a==null?void 0:a.vault)!=null?p:Ne,c=this.createTxBuilder(),l;if(t.equals(Ne)){let y=await Vt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:No(D(N({},a),{openTime:a.openTime,endTime:a.endTime,perSecond:new _(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:[Bd(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[E.CreateATA]})):l=y}let{instruction:m,instructionType:d}=Da({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:[d]}).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=be(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 p=(await this.scope.api.fetchFarmKeysById({ids:Object.values(t).map(y=>y.id).join(",")})).reduce((y,f)=>D(N({},y),{[f.id]:f}),{});for(let y of Object.values(t)){let{programId:f,lpMint:b,rewardInfos:g,id:P}=y,A=At[f],T=b.address,h=n&&T===ne.toString(),I=m[T];if(!I){let{account:H,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:b.programId,mint:new ke(T),notUseTokenAccount:h,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:h?!1:o,checkCreateATAOwner:s});I=H,v&&l.addInstruction(v)}m[T.toString()]=I;let B=[];for(let H of g){let v=n&&H.mint.address===ne.toString(),j=m[H.mint.address];if(!j){let{account:ee,instructionParams:se}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:H.mint.programId,mint:new ke(H.mint.address),notUseTokenAccount:v,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!v,associatedOnly:v?!1:o,checkCreateATAOwner:s});j=ee,se&&l.addInstruction(se)}m[H.mint.address]=j,B.push(j)}let x=p[P],K={amount:Ke,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:x,lpAccount:I,rewardAccounts:B,userAuxiliaryLedgers:a==null?void 0:a.map(H=>new ke(H))},M=A===6?sr(K):A===5?ar(K):ur(K),F={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};l.addInstruction({instructions:[M],instructionTypes:[F[A]]})}return u===1?l.sizeCheckBuild({computeBudgetConfig:c}):l.sizeCheckBuildV0({computeBudgetConfig:c})}};import{PublicKey as je}from"@solana/web3.js";import{AccountLayout as fp,NATIVE_MINT as Bu,TOKEN_PROGRAM_ID as wi}from"@solana/spl-token";var ek=L([ze("mintAuthorityOption"),S("mintAuthority"),w("supply"),V("decimals"),V("isInitialized"),ze("freezeAuthorityOption"),S("freezeAuthority")]);import{PublicKey as Kd}from"@solana/web3.js";import{MintLayout as Xa,TOKEN_PROGRAM_ID as Cd}from"@solana/spl-token";var uk=async({connection:r,mint:e})=>{let t=await r.getAccountInfo(new Kd(e));return!t||t.data.length!==Xa.span?void 0:Xa.decode(t.data)},ck=({mint:r,decimals:e,programId:t=Cd,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}},za=r=>new pe({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name}),lk=i=>{var o=i,{amount:r,isRaw:e,name:t}=o,n=Ie(o,["amount","isRaw","name"]);return new Te(new pe({mint:n.address,decimals:n.decimals,symbol:n.symbol,name:t}),r,e,t)};function mk(r){return r.address===Tt.address?Me:r}function dk(r){return r.address===Me.address?Tt:r}import{TOKEN_PROGRAM_ID as lr,ASSOCIATED_TOKEN_PROGRAM_ID as Ud}from"@solana/spl-token";import{PublicKey as ge,TransactionInstruction as Et,SystemProgram as Go,SYSVAR_RENT_PUBKEY as Gd}from"@solana/web3.js";var Eo=L([V("instruction"),w("amountIn"),w("minAmountOut")]),Fo=L([V("instruction"),w("maxAmountIn"),w("amountOut")]),Ik=L([V("instruction"),V("nonce")]),vo=L([V("instruction"),V("nonce"),w("startTime")]),Wo=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"),Y("swapBaseInAmount"),Y("swapQuoteOutAmount"),w("swapBase2QuoteFee"),Y("swapQuoteInAmount"),Y("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")]),Rd=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"),Y("swapBaseInAmount"),Y("swapQuoteOutAmount"),Y("swapQuoteInAmount"),Y("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")]),Do=L([V("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide")]),qo=L([V("instruction"),w("amountIn")]),xk={4:Wo,5:Rd},Ya=L([w("fee")]);import{PublicKey as Ld}from"@solana/web3.js";var Rn=new Ld("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ln=5e4,Od=L([w("x"),w("y"),w("price")]),Nd=L([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),q(Od,ln,"DataElement")]);function Md(r,e){return[0,ln-2]}function _d(r){return[0,ln-2]}function Vd(r){return[0,ln-2]}function Ed(r,e,t){let[n,i]=Md(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 Uo(r,e,t){let[n,i,o]=Ed(r,e,t);if(!o)return 0;if(n===i){let s=r.DataElement[n].x;return e*r.multiplier/s}else{let s=r.DataElement[n].x,a=r.DataElement[n].y,u=r.DataElement[i].x,c=r.DataElement[i].y,l=t*(u*a-s*c),m=s*l,d=(u-s)*(e*a-s*t)*c,p=m+d;return e*r.multiplier*l/p}}function cn(r,e,t){return e*r.multiplier/t}function Ha(r,e,t){return e*t/r.multiplier}function Fd(r,e){let[t,n]=_d(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 vd(r,e){let[t,n]=Vd(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 Qa(r,e,t,n){let i=n?e+t:e-t,[o,s,a]=Fd(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].y,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,d=r.DataElement[o].y,p=r.DataElement[s].y;if(e>=u&&e<=c)return n?[m,p,!0,a]:[l,d,!0,a];{let y,f;return n?(y=l+(m-l)*(e-u)/(c-u),f=d-(i-u)*r.multiplier/m):(y=l+(m-l)*(e-u)/(c-u),f=p+(c-i)*r.multiplier/l),[y,f,!1,a]}}}function Wd(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].x,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,d=r.DataElement[o].y,p=r.DataElement[s].y;if(e>=p&&e<=d)return n?[m,c,!0,a]:[l,u,!0,a];{let y,f;return n?(y=l+(m-l)*(d-e)/(d-p),f=u+m*(d-i)/r.multiplier):(y=l+(m-l)*(d-e)/(d-p),f=c-l*(i-p)/r.multiplier),[y,f,!1,a]}}}function Dd(r,e){let t=Qa(r,e,0,!1);return t[3]?t[0]:0}function ja(r,e,t,n){let i=Uo(r,e,t),o=cn(r,e,i),s=cn(r,t,i),a=cn(r,n,i),u=!0,[c,l,m,d]=Qa(r,o,a,u);if(!d)return 0;if(m)return n*r.multiplier/c;{let p=s-l;return Ha(r,p,i)}}function Za(r,e,t,n){let i=Uo(r,e,t),o=cn(r,e,i),s=cn(r,t,i),a=cn(r,n,i),u=!1,[c,l,m,d]=Wd(r,s,a,u);if(!d)return 0;if(m)return n*c/r.multiplier;{let p=o-l;return Ha(r,p,i)}}function qd(r){let e=Nd.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=Dd(r,cn(r,e,Uo(r,e,t)))/r.multiplier;return n?i:1/i}var Cn=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(Rn);e&&(this._layoutData=qd(e==null?void 0:e.data))}}};var $a=ae("Raydium_liquidity_instruction");function eu(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:i,quoteAmountIn:o,fixedSide:s}=r,a=Buffer.alloc(Do.span);Do.encode({instruction:3,baseAmountIn:U(i),quoteAmountIn:U(o),fixedSide:s==="base"?Ke:Gs},a);let u=[k({pubkey:lr,isWritable:!1}),k({pubkey:new ge(e.id)}),k({pubkey:new ge(t.authority),isWritable:!1}),k({pubkey:new ge(t.openOrders),isWritable:!1}),k({pubkey:new ge(t.targetOrders)}),k({pubkey:new ge(e.lpMint.address)}),k({pubkey:new ge(t.vault.A)}),k({pubkey:new ge(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(k({pubkey:Rn})),u.push(k({pubkey:new ge(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 ge(t.marketEventQueue),isWritable:!1})),new Et({programId:new ge(e.programId),keys:u,data:a})}function Xo(r){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:i}=r,o=ye(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(qo.span);qo.encode({instruction:4,amountIn:U(i)},a);let u=[k({pubkey:lr,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:Rn})):(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 tu({programId:r,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:i,coinMint:o,pcMint:s,coinVault:a,pcVault:u,withdrawQueue:c,ammTargetOrders:l,poolTempLp:m,marketProgramId:d,marketId:p,userWallet:y,userCoinVault:f,userPcVault:b,userLpVault:g,nonce:P,openTime:A,coinAmount:T,pcAmount:h,ammConfigId:I,feeDestinationId:B}){let x=L([V("instruction"),V("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),K=[{pubkey:lr,isSigner:!1,isWritable:!1},{pubkey:Ud,isSigner:!1,isWritable:!1},{pubkey:Go.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:d,isSigner:!1,isWritable:!1},{pubkey:p,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}],M=Buffer.alloc(x.span);return x.encode({instruction:1,nonce:P,openTime:A,coinAmount:T,pcAmount:h},M),{instruction:new Et({keys:K,programId:r,data:M}),instructionType:E.AmmV4CreatePool}}function Dk(r){let e=L([V("instruction"),V("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[k({pubkey:new ge(r.id),isWritable:!1}),k({pubkey:new ge(r.authority),isWritable:!1}),k({pubkey:new ge(r.openOrders),isWritable:!1}),k({pubkey:new ge(r.vault.A),isWritable:!1}),k({pubkey:new ge(r.vault.B),isWritable:!1}),k({pubkey:new ge(r.mintLp.address),isWritable:!1}),k({pubkey:new ge(r.marketId),isWritable:!1}),k({pubkey:new ge(r.marketEventQueue),isWritable:!1})];return new Et({programId:new ge(r.programId),keys:n,data:t})}function Xd({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},i){let o=ye(r),s=Buffer.alloc(Eo.span);Eo.encode({instruction:9,amountIn:U(t),minAmountOut:U(n)},s);let a=[k({pubkey:lr,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:Rn})),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 zd({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},i){let o=ye(r),s=Buffer.alloc(Fo.span);Fo.encode({instruction:11,maxAmountIn:U(t),amountOut:U(n)},s);let a=[k({pubkey:Go.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:Rn})),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 mi(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 Xd(D(N({},a),{amountIn:i,minAmountOut:o}),t);if(s==="out")return zd(D(N({},a),{maxAmountIn:i,amountOut:o}),t);$a.logWithError("invalid params","params",r)}throw $a.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function qk({poolKeys:r,userKeys:e,startTime:t}){let n=Buffer.alloc(vo.span);vo.encode({instruction:0,nonce:5,startTime:U(t)},n);let i=ye(r),o=[k({pubkey:lr,isWritable:!1}),k({pubkey:Go.programId,isWritable:!1}),k({pubkey:Gd,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 nu({poolKeys:r}){let e=L([V("instruction"),V("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[k({pubkey:new ge(r.id),isWritable:!1}),k({pubkey:new ge(r.authority),isWritable:!1}),k({pubkey:new ge(r.openOrders),isWritable:!1}),k({pubkey:new ge(r.vault.A),isWritable:!1}),k({pubkey:new ge(r.vault.B),isWritable:!1}),k({pubkey:new ge(r.mintLp.address),isWritable:!1}),k({pubkey:new ge(r.marketId),isWritable:!1}),k({pubkey:new ge(r.marketEventQueue),isWritable:!1})];return{instruction:new Et({programId:new ge(r.programId),keys:n,data:t})}}import{TOKEN_PROGRAM_ID as Ue,TOKEN_2022_PROGRAM_ID as $t,ASSOCIATED_TOKEN_PROGRAM_ID as wu}from"@solana/spl-token";import{PublicKey as W,TransactionInstruction as Pt,SystemProgram as Ln,Keypair as $o}from"@solana/web3.js";import Au from"bn.js";import rp from"bn.js";function ru(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function Gk(r){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,r,!1),new Uint8Array(e)}function Xk(r){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,r,!1),new Uint8Array(e)}function di(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function zo(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function Yo(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function mr(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function iu(r,e){return mr(r,e)?null:zo(r,e)}function ou(r,e){return mr(r,e)?null:Yo(r,e)}var Yd=Buffer.from("amm_config","utf8"),Hd=Buffer.from("pool","utf8"),Qd=Buffer.from("pool_vault","utf8"),jd=Buffer.from("pool_reward_vault","utf8"),su=Buffer.from("position","utf8"),Zd=Buffer.from("tick_array","utf8"),Jd=Buffer.from("operation","utf8"),$d=Buffer.from("pool_tick_array_bitmap_extension","utf8");function Qk(r,e){return oe([Yd,ru(e)],r)}function au(r,e,t,n){return oe([Hd,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Ho(r,e,t){return oe([Qd,e.toBuffer(),t.toBuffer()],r)}function uu(r,e,t){return oe([jd,e.toBuffer(),t.toBuffer()],r)}function we(r,e,t){return oe([Zd,e.toBuffer(),di(t)],r)}function mn(r,e,t,n){return oe([su,e.toBuffer(),di(t),di(n)],r)}function ct(r,e){return oe([su,e.toBuffer()],r)}function pi(r){return oe([Buffer.from("metadata","utf8"),Pn.toBuffer(),r.toBuffer()],Pn)}function dr(r){return oe([Jd],r)}function lt(r,e){return oe([$d,e.toBuffer()],r)}import St from"bn.js";var de=new St(0),at=new St(1),Ft=new St(-1),ut=new St(1).shln(64),fi=new St(1).shln(128),Qo=ut.sub(at),pr=64,cu=fi.subn(1),He=-443636,$e=-He,Kt=new St("4295048016"),Ct=new St("79226673521066979257578248091"),lu=16,mu="59543866431248",du="184467440737095516",pu="15793534762490258745",yi=new St(10).pow(new St(6)),ep=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))(ep||{}),Jk={[500]:10,[3e3]:60,[1e4]:200},$k={version:6,liquidity:de,tickCurrent:0,observationIndex:0,observationUpdateDuration:0,feeGrowthGlobalX64A:de,feeGrowthGlobalX64B:de,protocolFeesTokenA:de,protocolFeesTokenB:de,swapInAmountTokenA:de,swapOutAmountTokenB:de,swapInAmountTokenB:de,swapOutAmountTokenA:de,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},fu={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:[]},eh=new St("18446744073700000000");var tp=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(tp/2));for(let p=0;p<l.length;p++){let{publicKey:y}=we(t,n,l[p]);u.push(y)}let m=(await It(e,u)).map(p=>p!==null?fr.decode(p.data):null),d={};for(let p=0;p<u.length;p++){let y=m[p];y!==null&&(d[y.startTickIndex]=D(N({},y),{address:u[p]}))}return d}static nextInitializedTick(e,t,n,i,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,i,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=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:d,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,d,p]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,i,o){let s=Math.floor(e/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}=we(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 d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u-1}else for(u=u+1;u<_e;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u+1}let{publicKey:m}=we(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>$e)return!1;let n=G.getTickArrayStartIndexByTick(He,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return _e*e}};import re from"bn.js";import{PublicKey as Wt}from"@solana/web3.js";import Re from"bn.js";var jo=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=iu(1024,l);if(m!==null){let d=(c-m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=ou(1024,l);if(m!==null){let d=(c+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-le.tickCount(n)}}}},yr=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($e<=t)throw Error(`extensionTickBoundary check error: ${$e}, ${t}`);if(n<=He)throw Error(`extensionTickBoundary check error: ${n}, ${He}`);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=mr(512,u)?null:zo(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=mr(512,u)?null:Yo(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 Rt from"bn.js";var br=class{static getfeeGrowthInside(e,t,n){let i=new Rt(0),o=new Rt(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 Rt(0),a=new Rt(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=J.wrappingSubU128(J.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),c=J.wrappingSubU128(J.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=J.mulDivFloor(J.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,ut),u=t.tokenFeesOwedA.add(a),c=J.mulDivFloor(J.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=J.mulDivFloor(J.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,ut),u=t.tokenFeesOwedA.add(a),c=J.mulDivFloor(J.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=J.wrappingSubU128(u,c.growthInsideLastX64),m=J.mulDivFloor(l,t.liquidity,ut),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static GetPositionRewards(e,t,n,i){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=J.wrappingSubU128(u,c.growthInsideLastX64),m=J.mulDivFloor(l,t.liquidity,ut),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static getRewardGrowthInside(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Rt(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 Rt(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(J.wrappingSubU128(J.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 Rt(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 Rt(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(J.wrappingSubU128(J.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 _(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),[d,p]=[Pe(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),Pe(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[y,f]=[Pe(new Rt(new _(m.amountA.toString()).mul(l).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,s,!0),Pe(new Rt(new _(m.amountB.toString()).mul(l).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:sn(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as yu}from"@solana/spl-token";var Qe=class{static getOutputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintA.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount: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(...d),{expectedAmountOut:m.mul(Ft),remainingAccounts:a,executionPrice:p,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}=we(e.programId,e.id,f.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,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(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=Qe.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?yr.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}=we(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}=we(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}=yr.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<He||t>$e)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],d=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(d===void 0)throw Error("get new reward mint info error");let p=D(N({},m),{perSecond:J.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Wt(d)});if(p.tokenMint.equals(Wt.default))continue;if(n<=p.openTime.toNumber()||i.eq(de)){s.push(p);continue}let y=new Re(Math.min(p.endTime.toNumber(),n)),f=y.sub(p.lastUpdateTime),b=J.mulDivFloor(f,p.emissionsPerSecondX64,i),g=p.rewardGrowthGlobalX64.add(b),P=J.mulDivFloor(f,p.emissionsPerSecondX64,ut),A=p.rewardTotalEmissioned.add(P);s.push(D(N({},p),{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>$e&&(t=le.getArrayStartIndex($e,e)+le.tickCount(e)),n<He&&(n=le.getArrayStartIndex(He,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 In(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=bu.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:d}=we(u.programId,u.id,m);o.push({pubkey:d}),i[d.toString()]=u.id}}let s=await In(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=i[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=fr.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=D(N({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:i=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(d=>d.accountInfo.mint),c=[];for(let d of u)for(let p of s)c.push(ct(p,d).publicKey);let l=await It(t,c,{batchRequest:i}),m={};for(let d of l){if(d===null)continue;let p=gi.decode(d.data),y=p.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:p.tickLower,baseIn:!0}),P=G._getTickPriceLegacy({poolInfo:b,tick:p.tickUpper,baseIn:!0}),{amountA:A,amountB:T}=ce.getAmountsFromLiquidity(b.sqrtPriceX64,g.tickSqrtPriceX64,P.tickSqrtPriceX64,p.liquidity,!1),h=1/(1-Math.sqrt(Math.sqrt(g.price.div(P.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:g.price,priceUpper:P.price,amountA:A,amountB:T,tickLower:p.tickLower,tickUpper:p.tickUpper,liquidity:p.liquidity,feeGrowthInsideLastX64A:p.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:p.feeGrowthInsideLastX64B,tokenFeesOwedA:p.tokenFeesOwedA,tokenFeesOwedB:p.tokenFeesOwedB,rewardInfos:p.rewardInfos.map(x=>D(N({},x),{pendingReward:new Re(0)})),leverage:h,tokenFeeAmountA:new Re(0),tokenFeeAmountB:new Re(0)}];let I=await G.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),B=await G.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=I,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=B}if(o){let d=Object.values(m),p=await It(t,d,{batchRequest:i}),y={};for(let f=0;f<d.length;f++){let b=p[f];if(b===null)continue;let g=d[f].toString();y[g]=fr.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}`,T=y[m[P].toString()],h=y[m[A].toString()],I=T.ticks[G.getTickOffsetInArray(g.tickLower,f.tickSpacing)],B=h.ticks[G.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:K}=await br.GetPositionFees(f,g,I,B),M=await br.GetPositionRewards(f,g,I,B);g.tokenFeeAmountA=x.gte(new Re(0))?x:new Re(0),g.tokenFeeAmountB=K.gte(new Re(0))?K:new Re(0);for(let F=0;F<M.length;F++)g.rewardInfos[F].pendingReward=M[F].gte(new Re(0))?M[F]:new Re(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:o,slippage:s,priceLimit:a=new _(0)}){var M;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 _(0))?u=c?Kt.add(new Re(1)):Ct.sub(new Re(1)):u=Z.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let d=Pe(o,l,i,!1),{expectedAmountOut:p,remainingAccounts:y,executionPrice:f,feeAmount:b}=Qe.getOutputAmountAndRemainAccounts(e,t,n,d.amount.sub((M=d.fee)!=null?M:de),u),g=Pe(p,m,i,!1),P=Z.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),A=c?P:new _(1).div(P),T=p.mul(new Re(Math.floor((1-s)*1e10))).div(new Re(1e10)),h=Pe(T,m,i,!1),I=c?e.currentPrice:new _(1).div(e.currentPrice),B=new _(A).sub(I).abs(),x=I,K=new ve(new _(B).mul(10**15).toFixed(0),new _(x).mul(10**15).toFixed(0));return{realAmountIn:d,amountOut:g,minAmountOut:h,expirationTime:sn(d.expirationTime,g.expirationTime),currentPrice:e.currentPrice,executionPrice:A,priceImpact:K,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 pe(D(N({},u),{mint:u.address,isToken2022:u.programId===yu.toBase58()})),new pe(D(N({},c),{mint:c.address,isToken2022:c.programId===yu.toBase58()}))],{realAmountIn:d,amountOut:p,minAmountOut:y,expirationTime:f,currentPrice:b,executionPrice:g,priceImpact:P,fee:A,remainingAccounts:T}=await Qe.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Wt(u.address),amountIn:n,slippage:o,epochInfo:s}),h=D(N({},d),{amount:new Te(l,d.amount),fee:d.fee===void 0?void 0:new Te(l,d.fee)}),I=D(N({},p),{amount:new Te(m,p.amount),fee:p.fee===void 0?void 0:new Te(m,p.fee)}),B=D(N({},y),{amount:new Te(m,y.amount),fee:y.fee===void 0?void 0:new Te(m,y.fee)}),x=new Xe({baseToken:l,denominator:new Re(10).pow(new Re(20+l.decimals)),quoteToken:m,numerator:b.mul(new _(10**(20+m.decimals))).toFixed(0)}),K=new Xe({baseToken:l,denominator:new Re(10).pow(new Re(20+l.decimals)),quoteToken:m,numerator:g.mul(new _(10**(20+m.decimals))).toFixed(0)}),M=new Te(l,A);return{realAmountIn:h,amountOut:I,minAmountOut:B,expirationTime:f,currentPrice:x,executionPrice:K,priceImpact:P,fee:M,remainingAccounts:T}}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,d=o.priceMax-o.priceMin,p;return l<=0?p=0:m===l?p=d/l:d===l?p=l/m:p=l/d*(l/m),{feeApr:o.feeApr*p,rewardsApr:[(y=o.rewardApr[0])!=null?y:0*p,(f=o.rewardApr[1])!=null?f:0*p,(b=o.rewardApr[2])!=null?b:0*p],apr:o.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:i,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=i[kn(e.mintA.address).toString()],d=i[kn(e.mintB.address).toString()],p=e.mintA.decimals,y=e.mintB.decimals;if(!l||!m||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=Z.priceToSqrtPriceX64(new _(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:T,amountSlippageB:h}=ce.getAmountsFromLiquidityWithSlippage(f,b,g,o,!1,!1,0),I=new _(P.toString()).div(new _(10).pow(p)).mul(m.value).add(new _(A.toString()).div(new _(10).pow(y)).mul(d.value)),B=new _(T.toString()).div(new _(10).pow(p)).mul(m.value).add(new _(h.toString()).div(new _(10).pow(y)).mul(d.value)),x=B.div(I.add(B)).div(B),M=new _(l.volumeFee).mul(365).div(c).mul(x).mul(100).toNumber(),F=3600*24*365,H=e.rewardDefaultInfos.map(v=>{var se,ft;let j=v.mint.decimals,ee=i[v.mint.address];return u<((se=v.startTime)!=null?se:0)||u>((ft=v.endTime)!=null?ft:0)||!v.perSecond||!ee||j===void 0?0:new _(ee.value).mul(new _(v.perSecond).mul(F)).div(new _(10).pow(j)).mul(x).mul(100).toNumber()});return{feeApr:M,rewardsApr:H,apr:M+H.reduce((v,j)=>v+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 _(e.price),e.mintA.decimals,e.mintB.decimals),m=Z.getSqrtPriceX64FromTick(n),d=Z.getSqrtPriceX64FromTick(i),p=a?1-s:1+s,y=Pe(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,u,!c),f=new Re(new _(y.amount.sub((P=y.fee)!=null?P:de).toString()).mul(p).toFixed(0)),b;if(l.lte(m))b=t?ce.getLiquidityFromTokenAmountA(m,d,f,!a):new Re(0);else if(l.lte(d)){let A=ce.getLiquidityFromTokenAmountA(l,d,f,!a),T=ce.getLiquidityFromTokenAmountB(m,l,f);b=t?A:T}else b=t?new Re(0):ce.getLiquidityFromTokenAmountB(m,d,f);return Qe.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 _(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[d,p]=[Pe(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),Pe(m.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[y,f]=[Pe(m.amountA.muln(l),(P=t.mintA.extensions)==null?void 0:P.feeConfig,e,!0),Pe(m.amountB.muln(l),(A=t.mintB.extensions)==null?void 0:A.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:sn(d.expirationTime,p.expirationTime)}}static async fetchComputeClmmInfo({connection:e,poolInfo:t}){let n=await e.getAccountInfo(new Wt(t.id));if(!n)throw new Error(`pool not found ${t.id}`);let i=bi.decode(n.data),o=lt(new Wt(t.programId),new Wt(t.id)).publicKey,s=await Qe.fetchExBitmaps({connection:e,exBitmapAddress:[o],batchRequest:!1});return D(N({},i),{id:new Wt(t.id),programId:new Wt(t.programId),mintA:t.mintA,mintB:t.mintB,ammConfig:D(N({},t.config),{id:new Wt(t.config.id),fundOwner:""}),currentPrice:new _(t.price),exBitmapInfo:s[o.toBase58()],startTime:i.startTime.toNumber()})}};function vh({poolInfo:r,tickLower:e,tickUpper:t,amountA:n,amountB:i,slippage:o,add:s,epochInfo:a,amountHasFee:u}){var A,T,h,I;let[c,l,m,d]=e<t?[e,t,n,i]:[t,e,i,n],p=Z.priceToSqrtPriceX64(new _(r.price),r.mintA.decimals,r.mintB.decimals),y=Z.getSqrtPriceX64FromTick(c),f=Z.getSqrtPriceX64FromTick(l),[b,g]=[Pe(m,(A=r.mintA.extensions)==null?void 0:A.feeConfig,a,!u),Pe(d,(T=r.mintB.extensions)==null?void 0:T.feeConfig,a,!u)],P=ce.getLiquidityFromTokenAmounts(p,y,f,b.amount.sub((h=b.fee)!=null?h:de),g.amount.sub((I=g.fee)!=null?I:de));return ce.getAmountsOutFromLiquidity({poolInfo:r,tickLower:e,tickUpper:t,liquidity:P,slippage:o,add:s,epochInfo:a,amountAddFee:!u})}var J=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(de)||(o=o.add(at)),o}static mulDivFloor(e,t,n){if(n.eq(de))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(de))throw new Error("division by 0");return e.mul(t).add(n.sub(at)).div(n)}static x64ToDecimal(e,t){return new _(e.toString()).div(_.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new re(e.mul(_.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(fi).sub(t).mod(fi)}};function Ee(r,e){return Zo(r.mul(e),64,256)}function np(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Zo(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 J.x64ToDecimal(e).pow(2).mul(_.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return J.decimalToX64(e.mul(_.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(de))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(de))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(de))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(de))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(de))return e;let o=t.shln(pr);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?J.mulDivCeil(s,e,a):J.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 J.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(pr);if(i)return e.add(o.div(t));{let s=J.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<He||e>$e)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=cu.div(n)),n}static getTickFromPrice(e,t,n){return Z.getTickFromSqrtPriceX64(Z.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Ct)||e.lt(Kt))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new re(t-64),i=np(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<lu;){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(mu)),d=Zo(m.sub(new re(du)),64,128).toNumber(),p=Zo(m.add(new re(pu)),64,128).toNumber();return d==p?d:Z.getSqrtPriceX64FromTick(p).lte(e)?p:d}},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(de))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(pr),s=t.sub(e);return i?J.mulDivRoundingUp(J.mulDivCeil(o,s,t),at,e):J.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(de))throw new Error("sqrtPriceX64A must greater than 0");return i?J.mulDivCeil(n,t.sub(e),ut):J.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?J.mulDivRoundingUp(a,at,Qo):a.shrn(pr)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),J.mulDivFloor(n,Qo,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 _(u.toString()).mul(l).toFixed(0)),d=new re(new _(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:i,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var P,A,T,h;let c=Z.priceToSqrtPriceX64(new _(e.price),e.mintA.decimals,e.mintB.decimals),l=Z.getSqrtPriceX64FromTick(t),m=Z.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,p=ce.getAmountsFromLiquidity(c,l,m,i,s),[y,f]=[Pe(p.amountA,(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,u),Pe(p.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)],[b,g]=[Pe(new re(new _(p.amountA.toString()).mul(d).toFixed(0)),(T=e.mintA.extensions)==null?void 0:T.feeConfig,a,u),Pe(new re(new _(p.amountB.toString()).mul(d).toFixed(0)),(h=e.mintB.extensions)==null?void 0:h.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,d,p,y){if(d.eq(de))throw new Error("amountSpecified must not be 0");if(y||(y=s?Kt.add(at):Ct.sub(at)),s){if(y.lt(Kt))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(Ct))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=d.gt(de),b={amountSpecifiedRemaining:d,amountCalculated:de,sqrtPriceX64:m,tick:c>p?Math.min(p+le.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new re(0)},g=p,P=n[p],A=0,T=!s&&P.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(de)&&!b.sqrtPriceX64.eq(y);){if(A>10)throw Error("liquidity limit");let h={};h.sqrtPriceStartX64=b.sqrtPriceX64;let I=G.nextInitTick(P,b.tick,l,s,T),B=I||null,x=null;if(!(B!=null&&B.liquidityGross.gtn(0))){let M=Qe.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},g,s);if(!M.isExist)throw Error("swapCompute LiquidityInsufficient");g=M.nextStartIndex;let{publicKey:F}=we(e,t,g);x=F,P=n[g],B=G.firstInitializedTick(P,s)}h.tickNext=B.tick,h.initialized=B.liquidityGross.gtn(0),p!==g&&x&&(b.accounts.push(x),p=g),h.tickNext<He?h.tickNext=He:h.tickNext>$e&&(h.tickNext=$e),h.sqrtPriceNextX64=Z.getSqrtPriceX64FromTick(h.tickNext);let K;if(s&&h.sqrtPriceNextX64.lt(y)||!s&&h.sqrtPriceNextX64.gt(y)?K=y:K=h.sqrtPriceNextX64,[b.sqrtPriceX64,h.amountIn,h.amountOut,h.feeAmount]=pn.swapStepCompute(b.sqrtPriceX64,K,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(h.feeAmount),f?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(h.amountIn.add(h.feeAmount)),b.amountCalculated=b.amountCalculated.sub(h.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(h.amountOut),b.amountCalculated=b.amountCalculated.add(h.amountIn.add(h.feeAmount))),b.sqrtPriceX64.eq(h.sqrtPriceNextX64)){if(h.initialized){let M=B.liquidityNet;s&&(M=M.mul(Ft)),b.liquidity=ce.addDelta(b.liquidity,M)}T=h.tickNext!=b.tick&&!s&&P.startTickIndex===h.tickNext,b.tick=s?h.tickNext-1:h.tickNext}else if(b.sqrtPriceX64!=h.sqrtPriceStartX64){let M=Z.getTickFromSqrtPriceX64(b.sqrtPriceX64);T=M!=b.tick&&!s&&P.startTickIndex===M,b.tick=M}++A}try{let{nextStartIndex:h,isExist:I}=le.nextInitializedTickArray(b.tick,l,s,i,o);I&&p!==h&&(b.accounts.push(we(e,t,h).publicKey),p=h)}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(de);if(u){let l=J.mulDivFloor(i,yi.sub(new re(o.toString())),yi);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=J.mulDivCeil(s.amountIn,new re(o),yi.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}=we(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 rp(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}=we(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<He||e>$e}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 _(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new _(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 _(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 _(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new _(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 _(1).div(a)}}};var cT=L([fe(8),V("bump"),Bt("index"),S(""),ze("protocolFeeRate"),ze("tradeFeeRate"),Bt("tickSpacing"),q(w(),8,"")]),ip=L([ze("blockTimestamp"),Y("sqrtPriceX64"),Y("cumulativeTimePriceX64"),q(Y(),1,"")]),Jo=L([fe(8),qe("initialized"),S("poolId"),q(ip,1e3,"observations"),q(Y(),5,"")]),op=L([V("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),Y("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),S("tokenMint"),S("tokenVault"),S("creator"),Y("rewardGrowthGlobalX64")]),bi=L([fe(8),V("bump"),S("ammConfig"),S("creator"),S("mintA"),S("mintB"),S("vaultA"),S("vaultB"),S("observationId"),V("mintDecimalsA"),V("mintDecimalsB"),Bt("tickSpacing"),Y("liquidity"),Y("sqrtPriceX64"),De("tickCurrent"),Bt("observationIndex"),Bt("observationUpdateDuration"),Y("feeGrowthGlobalX64A"),Y("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),Y("swapInAmountTokenA"),Y("swapOutAmountTokenB"),Y("swapInAmountTokenB"),Y("swapOutAmountTokenA"),V("status"),q(V(),7,""),q(op,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")]),sp=L([Y("growthInsideLastX64"),w("rewardAmountOwed")]),gi=L([fe(8),V("bump"),S("nftMint"),S("poolId"),De("tickLower"),De("tickUpper"),Y("liquidity"),Y("feeGrowthInsideLastX64A"),Y("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(sp,3,"rewardInfos"),q(w(),8,"")]),lT=L([fe(8),V("bump"),S("poolId"),De("tickLowerIndex"),De("tickUpperIndex"),Y("liquidity"),Y("feeGrowthInsideLastX64A"),Y("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(Y(),3,"rewardGrowthInside"),q(w(),8,"")]),ap=L([De("tick"),wa("liquidityNet"),Y("liquidityGross"),Y("feeGrowthOutsideX64A"),Y("feeGrowthOutsideX64B"),q(Y(),3,"rewardGrowthsOutsideX64"),q(ze(),13,"")]),fr=L([fe(8),S("poolId"),De("startTickIndex"),q(ap,_e,"ticks"),V("initializedTickCount"),q(V(),115,"")]),gu=L([fe(329),q(S(),100,"whitelistMints")]),bu=L([fe(8),S("poolId"),q(q(w(),8),jo,"positiveTickArrayBitmap"),q(q(w(),8),jo,"negativeTickArrayBitmap")]);var Pu=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]},Se=class{static createPoolInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y){let f=L([Y("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:d,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:Ln.programId,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,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}),[d,p]=[new W(o.address),new W(s.address)],y=[Ln.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Jo.span),space:Jo.span,programId:n})],{publicKey:f}=au(n,a,d,p),{publicKey:b}=Ho(n,f,d),{publicKey:g}=Ho(n,f,p);return y.push(this.createPoolInstruction(n,f,i,a,m.publicKey,d,b,new W(o.programId||Ue),p,g,new W(s.programId||Ue),lt(n,f).publicKey,u,c)),{signers:[],instructions:y,instructionTypes:[E.CreateAccount,E.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,d,p,y,f,b,g,P,A,T,h,I,B,x,K,M){let F=L([De("tickLowerIndex"),De("tickUpperIndex"),De("tickArrayLowerStartIndex"),De("tickArrayUpperStartIndex"),Y("liquidity"),w("amountMaxA"),w("amountMaxB"),qe("withMetadata"),V("optionBaseFlag"),qe("baseFlag")]),H=[...M?[{pubkey:M,isSigner:!1,isWritable:!0}]:[]],v=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:Ln.programId,isSigner:!1,isWritable:!1},{pubkey:Ue,isSigner:!1,isWritable:!1},{pubkey:wu,isSigner:!1,isWritable:!1},{pubkey:Pn,isSigner:!1,isWritable:!1},{pubkey:$t,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...H],j=Buffer.alloc(F.span);F.encode({tickLowerIndex:P,tickUpperIndex:A,tickArrayLowerStartIndex:T,tickArrayUpperStartIndex:h,liquidity:I,amountMaxA:B,amountMaxB:x,withMetadata:K==="create",baseFlag:!1,optionBaseFlag:0},j);let ee=Buffer.from([...kt.openPosition,...j]);return new Pt({keys:v,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=[],[d,p]=[new W(e.programId),new W(e.id)],y;if(l)y=new W((await l(1))[0]);else{let x=$o.generate();m.push(x),y=x.publicKey}let f=G.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=we(d,p,f),{publicKey:P}=we(d,p,b),{publicKey:A}=be(n.wallet,y,Ue),{publicKey:T}=pi(y),{publicKey:h}=ct(d,y),{publicKey:I}=mn(d,p,i,o),B=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,y,A,T,I,g,P,h,n.tokenAccountA,n.tokenAccountB,new W(t.vault.A),new W(t.vault.B),new W(e.mintA.address),new W(e.mintB.address),i,o,f,b,s,a,u,c);return{signers:m,instructions:[B],instructionTypes:[E.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:A,metadataAccount:T,personalPosition:h,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=[],[d,p]=[new W(e.programId),new W(e.id)],y;if(l)y=new W((await l(1))[0]);else{let x=$o.generate();m.push(x),y=x.publicKey}let f=G.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=we(d,p,f),{publicKey:P}=we(d,p,b),{publicKey:A}=be(n.wallet,y,Ue),{publicKey:T}=pi(y),{publicKey:h}=ct(d,y),{publicKey:I}=mn(d,p,i,o),B=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,y,A,T,I,g,P,h,n.tokenAccountA,n.tokenAccountB,new W(t.vault.A),new W(t.vault.B),new W(e.mintA.address),new W(e.mintB.address),i,o,f,b,c,s,a,u,Qe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?lt(d,p).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:A,metadataAccount:T,personalPosition:h,protocolPosition:I},instructions:[B],signers:m,instructionTypes:[E.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P,A,T,h,I,B,x,K,M){let F=L([De("tickLowerIndex"),De("tickUpperIndex"),De("tickArrayLowerStartIndex"),De("tickArrayUpperStartIndex"),Y("liquidity"),w("amountMaxA"),w("amountMaxB"),qe("withMetadata"),V("optionBaseFlag"),qe("baseFlag")]),H=[...M?[{pubkey:M,isSigner:!1,isWritable:!0}]:[]],v=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:Ln.programId,isSigner:!1,isWritable:!1},{pubkey:Ue,isSigner:!1,isWritable:!1},{pubkey:wu,isSigner:!1,isWritable:!1},{pubkey:Pn,isSigner:!1,isWritable:!1},{pubkey:$t,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...H],j=Buffer.alloc(F.span);F.encode({tickLowerIndex:P,tickUpperIndex:A,tickArrayLowerStartIndex:T,tickArrayUpperStartIndex:h,liquidity:new Au(0),amountMaxA:B==="MintA"?x:K,amountMaxB:B==="MintA"?K:x,withMetadata:I==="create",baseFlag:B==="MintA",optionBaseFlag:1},j);let ee=Buffer.from([...kt.openPosition,...j]);return new Pt({keys:v,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,d=[];if(l)m=new W((await l(1))[0]);else{let x=$o.generate();d.push(x),m=x.publicKey}let[p,y]=[new W(e.programId),new W(e.id)],f=G.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=we(p,y,f),{publicKey:P}=we(p,y,b),{publicKey:A}=be(n.wallet,m,Ue),{publicKey:T}=pi(m),{publicKey:h}=ct(p,m),{publicKey:I}=mn(p,y,i,o),B=this.openPositionFromLiquidityInstruction(p,n.wallet,y,n.wallet,m,A,T,I,g,P,h,n.tokenAccountA,n.tokenAccountB,new W(t.vault.A),new W(t.vault.B),new W(t.mintA.address),new W(t.mintB.address),i,o,f,b,s,a,u,c,Qe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?lt(p,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:A,metadataAccount:T,personalPosition:h,protocolPosition:I},instructions:[B],signers:d,instructionTypes:[E.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:Ln.programId,isSigner:!1,isWritable:!1},{pubkey:Ue,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 W(e.programId),{publicKey:s}=be(n.wallet,i.nftMint,Ue),{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:[E.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P){let A=L([Y("liquidity"),w("amountMaxA"),w("amountMaxB"),V("optionBaseFlag"),qe("baseFlag")]),T=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],h=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Ue,isSigner:!1,isWritable:!1},{pubkey:$t,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...T],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:h,programId:e,data:B})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new W(e.programId),new W(e.id)],l=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=we(u,c,l),{publicKey:p}=we(u,c,m),{publicKey:y}=be(i.wallet,n.nftMint,Ue),{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,d,p,i.tokenAccountA,i.tokenAccountB,new W(t.vault.A),new W(t.vault.B),new W(e.mintA.address),new W(e.mintB.address),o,s,a,Qe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?lt(u,c).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:b},signers:[],instructions:[g],instructionTypes:[E.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 W(e.programId),new W(e.id)],l=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=we(u,c,l),{publicKey:p}=we(u,c,m),{publicKey:y}=be(i.wallet,n.nftMint,Ue),{publicKey:f}=ct(u,n.nftMint),{publicKey:b}=mn(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(u,i.wallet,y,f,c,b,d,p,i.tokenAccountA,i.tokenAccountB,new W(t.vault.A),new W(t.vault.B),new W(e.mintA.address),new W(e.mintB.address),o,s,a,Qe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?lt(u,c).publicKey:void 0)],signers:[],instructionTypes:[E.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P){let A=L([Y("liquidity"),w("amountMaxA"),w("amountMaxB"),V("optionBaseFlag"),qe("baseFlag")]),T=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],h=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Ue,isSigner:!1,isWritable:!1},{pubkey:$t,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...T],I=Buffer.alloc(A.span);A.encode({liquidity:new Au(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:h,programId:e,data:B})}static decreaseLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P,A){let T=L([Y("liquidity"),w("amountMinA"),w("amountMinB")]),h=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...f.map(K=>[{pubkey:K.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:K.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:K.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:d,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:Ue,isSigner:!1,isWritable:!1},{pubkey:$t,isSigner:!1,isWritable:!1},{pubkey:An,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...h],B=Buffer.alloc(T.span);T.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 W(e.programId),new W(e.id)],m=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=we(c,l,m),{publicKey:y}=we(c,l,d),{publicKey:f}=be(i.wallet,n.nftMint,u),{publicKey:b}=ct(c,n.nftMint),{publicKey:g}=mn(c,l,n.tickLower,n.tickUpper),P=[];for(let T=0;T<e.rewardDefaultInfos.length;T++)P.push({poolRewardVault:new W(t.rewardInfos[T].vault),ownerRewardVault:i.rewardAccounts[T],rewardMint:new W(e.rewardDefaultInfos[T].mint.address)});let A=[];return A.push(this.decreaseLiquidityInstruction(c,i.wallet,f,b,l,g,p,y,i.tokenAccountA,i.tokenAccountB,new W(t.vault.A),new W(t.vault.B),new W(e.mintA.address),new W(e.mintB.address),P,o,s,a,Qe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?lt(c,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:y,positionNftAccount:f,personalPosition:b,protocolPosition:g},signers:[],instructions:A,instructionTypes:[E.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g){let P=L([w("amount"),w("otherAmountThreshold"),Y("sqrtPriceLimitX64"),qe("isBaseInput")]),A=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...m.map(B=>({pubkey:B,isSigner:!1,isWritable:!0}))],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Ue,isSigner:!1,isWritable:!1},{pubkey:$t,isSigner:!1,isWritable:!1},{pubkey:An,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...A],h=Buffer.alloc(P.span);P.encode({amount:p,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:b},h);let I=Buffer.from([...kt.swap,...h]);return new Pt({keys:T,programId:e,data:I})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:i,inputMint:o,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:u,remainingAccounts:c}){let[l,m]=[new W(e.programId),new W(e.id)],[d,p]=[new W(t.vault.A),new W(t.vault.B)],[y,f]=[new W(e.mintA.address),new W(e.mintB.address)],b=e.mintA.address===o.toString(),g=[this.swapInstruction(l,i.wallet,m,new W(e.config.id),b?i.tokenAccountA:i.tokenAccountB,b?i.tokenAccountB:i.tokenAccountA,b?d:p,b?p:d,b?y:f,b?f:y,c,n,s,a,u,!0,lt(l,m).publicKey)];return{signers:[],instructions:g,instructionTypes:[E.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,d){let p=L([w("openTime"),w("endTime"),Y("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:Ln.programId,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:U(l),endTime:U(m),emissionsPerSecondX64:d},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 W(e.programId),new W(e.id)],a=uu(o,s,i.mint).publicKey,u=dr(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new W(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:[E.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,d){let p=L([V("rewardIndex"),Y("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:Ue,isSigner:!1,isWritable:!1},{pubkey:$t,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:c,emissionsPerSecondX64:d,openTime: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 W(e.programId),new W(e.id)],a,u,c;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===i.mint.toString()&&(a=d,u=new W(t.rewardInfos[d].vault),c=new W(t.rewardInfos[d].mint.address));(a===void 0||u===void 0)&&Pu.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=dr(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new W(e.config.id),n.tokenAccount,u,c,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[E.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,o,s,a){let u=L([V("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:Ue,isSigner:!1,isWritable:!1},{pubkey:$t,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 W(e.programId),new W(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,u=new W(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&Pu.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:[E.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 W(e.programId),new W(e.id)],[m,d]=[new W(t.vault.A),new W(t.vault.B)],[p,y]=[new W(e.mintA.address),new W(e.mintB.address)],f=e.mintA.address===i.toString(),b=[this.swapInstruction(c,n.wallet,l,new W(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?d:m,f?m:d,f?p:y,f?y:p,u,m,o,s,a,!1)];return{signers:[],instructions:b,instructionTypes:[E.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as mp}from"@solana/web3.js";import{PublicKey as cp}from"@solana/web3.js";import ku from"bn.js";var hu=new ku(25),Tu=new ku(1e4),up={4:3,5:3};var lp=ae("Raydium_liquidity_serum");function Iu({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=cp.createProgramAddressSync(o,r)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:i,nonce:n}}throw lp.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 gr from"bn.js";function ts({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 dp({programId:r,marketId:e}){let{publicKey:t}=oe([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function pp({programId:r}){return oe([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function xu({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:d}=pp({programId:a}),p=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=dp({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}=Iu({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:i,lpMint:l,baseDecimals:o,quoteDecimals:s,lpDecimals:o,version:r,programId:a,authority:m,nonce:d,baseVault:p,quoteVault:y,lpVault:f,openOrders:b,targetOrders:g,withdrawQueue:P,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:A,lookupTableAccount:mp.default,configId:ts({programId:a})}}var es;async function vT({connection:r,poolKeysList:e,config:t}){es||(es=new Cn({connection:r}),await es.initStableModelLayout());let n=e.map(s=>nu({poolKeys:s}));return(await $s(r,n.map(s=>s.instruction),"GetPoolData")).map(s=>{let a=ea(s,"GetPoolData"),u=new gr(Nt(a,"status")),c=Number(Nt(a,"coin_decimals")),l=Number(Nt(a,"pc_decimals")),m=Number(Nt(a,"lp_decimals")),d=new gr(Nt(a,"pool_coin_amount")),p=new gr(Nt(a,"pool_pc_amount")),y=new gr(Nt(a,"pool_lp_supply")),f="0";try{f=Nt(a,"pool_open_time")}catch{}return{status:u,baseDecimals:c,quoteDecimals:l,lpDecimals:m,baseReserve:d,quoteReserve:p,lpSupply:y,startTime:new gr(f)}})}import ot from"bn.js";var wr=class extends Be{constructor(t){super(t);this.stableLayout=new Cn({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 ot(new _(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),a=za(t[o?"mintB":"mintA"]),[u,c]=[new ot(new _(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new ot(new _(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new ot(new _(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,_.ROUND_DOWN));this.logDebug("baseReserve:",u.toString(),"quoteReserve:",c.toString()),this.logDebug("tokenIn:",o?t.mintA.symbol:t.mintB.symbol,"amountIn:",s.toString(),"anotherToken:",o?t.mintB.symbol:t.mintA.symbol,"slippage:",`${i.toSignificant()}%`,"baseReserve",u.toString(),"quoteReserve",c.toString());let m=o?"base":"quote";this.logDebug("input side:",m);let d=Ke;s.isZero()||(d=m==="base"?Ur(s.mul(c),u):Ur(s.mul(u),c)),this.logDebug("amountRaw:",d.toString(),"lpAmount:",l.toString());let p=Ur(s.mul(l),m==="base"?u:c);this.logDebug("liquidity:",p.toString());let f=new ve(new ot(1)).add(i).mul(d).quotient,b=new Te(a,d),g=new Te(a,f);return this.logDebug("anotherAmount:",b.toFixed(),"maxAnotherAmount:",g.toFixed()),{anotherAmount:b,maxAnotherAmount:g,liquidity:p}}async getAmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async addLiquidity(t){let{poolInfo:n,amountInA:i,amountInB:o,fixedSide:s,config:a,txVersion:u,computeBudgetConfig:c}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",i,"amountInB:",o),(i.isZero()||o.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:i.toFixed(),amountInB:o.toFixed()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:d}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),[p,y]=[i.token,o.token],f=await l.getCreatedTokenAccount({mint:p.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 je(n.lpMint.address)}),P=[p,y],A=[f,b],T=[i.raw,o.raw],h=i.token.mint.toBase58()===n.mintA.address?"base":"quote",I="base";["quote","base"].includes(h)||this.logAndCreateError("invalid fixedSide","fixedSide",s),h==="quote"?(P.reverse(),A.reverse(),T.reverse(),I=s==="a"?"quote":"base"):h==="base"&&(I=s==="a"?"base":"quote");let[B,x]=P,[K,M]=A,[F,H]=T,v=await this.getAmmPoolKeys(n.id),j=this.createTxBuilder(),Dt=await l.handleTokenAccount({side:"in",amount:F,mint:B.mint,tokenAccount:K,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:ee}=Dt,se=Ie(Dt,["tokenAccount"]);j.addInstruction(se);let Rr=await l.handleTokenAccount({side:"in",amount:H,mint:x.mint,tokenAccount:M,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:ft}=Rr,_n=Ie(Rr,["tokenAccount"]);j.addInstruction(_n);let Vn=await l.handleTokenAccount({side:"out",amount:0,mint:new je(n.lpMint.address),tokenAccount:g,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:Si}=Vn,Ki=Ie(Vn,["tokenAccount"]);return j.addInstruction(Ki),j.addInstruction({instructions:[eu({poolInfo:n,poolKeys:v,userKeys:{baseTokenAccount:ee,quoteTokenAccount:ft,lpTokenAccount:Si,owner:this.scope.ownerPubKey},baseAmountIn:F,quoteAmountIn:H,fixedSide:I})],instructionTypes:[n.pooltype.includes("StablePool")?E.AmmV5AddLiquidity:E.AmmV4AddLiquidity],lookupTableAddress:v.lookupTableAccount?[v.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 je(n.mintA.address),new je(n.mintB.address),new je(n.lpMint.address)];this.logDebug("amountIn:",i),i.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",i.toString());let{account:d}=this.scope,p=await d.getCreatedTokenAccount({mint:m,associatedOnly:!1});p||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",d.tokenAccounts);let y=await d.getCreatedTokenAccount({mint:c}),f=await d.getCreatedTokenAccount({mint:l}),b=this.createTxBuilder(),{bypassAssociatedCheck:g,checkCreateATAOwner:P}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),B=await d.handleTokenAccount({side:"out",amount:0,mint:c,tokenAccount:y,bypassAssociatedCheck:g,checkCreateATAOwner:P}),{tokenAccount:A}=B,T=Ie(B,["tokenAccount"]);b.addInstruction(T);let x=await d.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:g,checkCreateATAOwner:P}),{tokenAccount:h}=x,I=Ie(x,["tokenAccount"]);return b.addInstruction(I),b.addInstruction({instructions:[Xo({poolInfo:n,poolKeys:u,userKeys:{lpTokenAccount:p,baseTokenAccount:A,quoteTokenAccount:h,owner:this.scope.ownerPubKey},amountIn:i})],lookupTableAddress:u.lookupTableAccount?[u.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?E.AmmV5RemoveLiquidity:E.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=wi,checkCreateATAOwner:d=!0,getEphemeralSigners:p,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||be(this.scope.ownerPubKey,ee.accountInfo.mint,wi).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 ot(0)),A=t.mintA.address===pe.WSOL.mint.toString(),T=t.mintB.address===pe.WSOL.mint.toString(),{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:wi,mint:new je(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:A?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!0,checkCreateATAOwner:d});if(f.addInstruction(I||{}),h===void 0)throw new Error("base token account not found");let{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:wi,mint:new je(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:T?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!T,notUseTokenAccount:T,associatedOnly:!0,checkCreateATAOwner:d});if(f.addInstruction(x||{}),B===void 0)throw new Error("quote token account not found");if(b[t.mintA.address]=h,b[t.mintB.address]=B,s!==void 0&&!(a!=null&&a.isZero())){let ee=[];for(let Dt of s.rewardInfos){let Rr=Dt.mint.address===pe.WSOL.mint.toString();if(b[Dt.mint.address])ee.push(b[Dt.mint.address]);else{let{account:Vn,instructionParams:bs}=await this.scope.account.getOrCreateTokenAccount({mint:new je(Dt.mint.address),tokenProgram:m,owner:this.scope.ownerPubKey,skipCloseAccount:!Rr,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:d});Vn||this.logAndCreateError("farm reward account not found:",Dt.mint.address),bs&&f.addInstruction(bs),ee.push(Vn)}}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},_n=At[s.programId],Si=_n===6?sr(ft):_n===5?ar(ft):ur(ft),Ki={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};f.addInstruction({instructions:[Si],instructionTypes:[Ki[_n]]})}let K=await this.getAmmPoolKeys(t.id),M=Xo({poolInfo:t,poolKeys:K,userKeys:{lpTokenAccount:g,baseTokenAccount:h,quoteTokenAccount:B,owner:this.scope.ownerPubKey},amountIn:P});f.addInstruction({instructions:[M],instructionTypes:[t.pooltype.includes("StablePool")?E.AmmV5RemoveLiquidity:E.AmmV4RemoveLiquidity],lookupTableAddress:K.lookupTableAccount?[K.lookupTableAccount]:[]});let[F,H]=t.mintA.address===n.mintA.address?[h,B]:[B,h],v=await this.scope.clmm.getClmmPoolKeys(t.id),j=await Se.openPositionFromBaseInstructions(D(N({poolInfo:n,poolKeys:v,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:F,tokenAccountB:H},withMetadata:"create"},o),{base:u,getEphemeralSigners:p}));return f.addInstruction({instructions:[...j.instructions],signers:j.signers,instructionTypes:[...j.instructionTypes],lookupTableAddress:v.lookupTableAccount?[v.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:d,txVersion:p,feeDestinationId:y,computeBudgetConfig:f}){var H;let b=c.feePayer||((H=this.scope.owner)==null?void 0:H.publicKey),g=c.useSOLBalance&&i.mint.equals(Bu),P=c.useSOLBalance&&o.mint.equals(Bu),A=this.createTxBuilder(),{account:T,instructionParams:h}=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(h||{});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||{}),T===void 0||I===void 0)throw Error("you don't has some token account");let x=xu({version:4,marketVersion:3,marketId:n.marketId,baseMint:i.mint,quoteMint:o.mint,baseDecimals:i.decimals,quoteDecimals:o.decimals,programId:t,marketProgramId:n.programId}),K={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:M,instructionType:F}=tu(D(N({},K),{userWallet:this.scope.ownerPubKey,userCoinVault:T,userPcVault:I,userLpVault:be(this.scope.ownerPubKey,x.lpMint,d).publicKey,nonce:x.nonce,openTime:u,coinAmount:s,pcAmount:a}));return A.addInstruction({instructions:[M],instructionTypes:[F]}),A.addCustomComputeBudget(f),A.versionBuild({txVersion:p,extInfo:{address:K}})}async getCreatePoolFee({programId:t}){let n=ts({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return Ya.decode(i.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:i,mintOut:o,slippage:s}){if(i!==t.mintA.address&&i!==t.mintB.address)throw new Error("toke not match");if(o!==t.mintA.address&&o!==t.mintB.address)throw new Error("toke not match");let{baseReserve:a,quoteReserve:u}=t,c=[a,u],l=i==t.mintA.address?"base":"quote";l==="quote"&&c.reverse();let[m,d]=c,p=t.programId===to.toBase58(),y;if(p)y=new _(d.toString()).div(m.toString());else{let x=Ja(this.stableLayout.stableModelData,a.toNumber(),u.toNumber(),!1);l==="quote"?y=new _(1e6).div(x*1e6):y=new _(x*1e6).div(1e6)}let f=n,b=new ot(0),g=new ot(0);if(!f.isZero())if(p){g=Yt(f.mul(hu),Tu);let x=f.sub(g),K=m.add(x);b=d.mul(x).div(K)}else{g=f.mul(new ot(2)).div(new ot(1e4));let x=f.sub(g);l==="quote"?b=new ot(ja(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber())):b=new ot(Za(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber()))}let P=new ot(new _(b.toString()).mul(1-s).toFixed(0)),A=b,T=P,h=new _(b.toString()).div(new _(f.sub(g).toString()).toFixed(0));!f.isZero()&&!b.isZero()&&(h=new _(b.toString()).div(f.sub(g).toString()));let I=y.sub(h).div(y).mul(100);return{amountOut:A,minAmountOut:T,currentPrice:y,executionPrice:h,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],d=await this.scope.account.getCreatedTokenAccount({mint:new je(l.address),programId:new je(l.programId),associatedOnly:!1}),p=await this.scope.account.getCreatedTokenAccount({mint:new je(m.address),programId:new je(m.programId),associatedOnly:!1}),T=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new je(l.address),tokenAccount:d,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=T,f=Ie(T,["tokenAccount"]);c.addInstruction(f);let h=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new je(m.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:b}=h,g=Ie(h,["tokenAccount"]);c.addInstruction(g);let P=await this.getAmmPoolKeys(t.id),A=4;return t.pooltype.includes("StablePool")&&(A=5),c.addInstruction({instructions:[mi({version:A,poolKeys:P,userKeys:{tokenAccountIn:y,tokenAccountOut:b,owner:this.scope.ownerPubKey},amountIn:n,amountOut:i,fixedSide:s})],instructionTypes:[A===4?E.AmmV4SwapBaseIn:E.AmmV5SwapBaseIn]}),c.addCustomComputeBudget(u),c.versionBuild({txVersion:a})}async getRpcPoolInfo(t){return(await this.getRpcPoolInfos([t]))[t]}async getRpcPoolInfos(t){let n=await this.scope.connection.getMultipleAccountsInfo(t.map(c=>new je(c))),i={},o=[];for(let c=0;c<t.length;c++){let l=n[c];if(l===null)throw Error("fetch pool info error: "+String(t[c]));let m=Wo.decode(l.data);i[String(t[c])]=m,o.push(m.baseVault,m.quoteVault)}let s={},a=await this.scope.connection.getMultipleAccountsInfo(o.map(c=>new je(c)));for(let c=0;c<o.length;c++){let l=a[c];if(l===null)throw Error("fetch vault info error: "+o[c]);s[String(o[c])]=new ot(fp.decode(l.data).amount.toString())}let u={};for(let[c,l]of Object.entries(i)){let m=s[l.baseVault.toString()].sub(l.baseNeedTakePnl),d=s[l.quoteVault.toString()].sub(l.quoteNeedTakePnl);u[c]=D(N({},l),{baseReserve:m,quoteReserve:d,poolPrice:new _(d.toString()).div(new _(10).pow(l.quoteDecimal.toString())).div(new _(m.toString()).div(new _(10).pow(l.baseDecimal.toString())))})}return u}};import{PublicKey as ue}from"@solana/web3.js";import mt from"bn.js";var Ar=class extends Be{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,d=this.createTxBuilder(),[p,y,f]=new mt(new ue(i.address).toBuffer()).gt(new mt(new ue(o.address).toBuffer()))?[o,i,new _(1).div(a)]:[i,o,a],b=Z.priceToSqrtPriceX64(f,p.decimals,y.decimals),g=await Se.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:p,mintB:y,ammConfigId:s.id,initialPriceX64:b,startTime:u,forerunCreate:l});return d.addInstruction(g),d.addCustomComputeBudget(c),d.versionBuild({txVersion:m,extInfo:{address:D(N({},g.address),{programId:t.toString(),id:g.address.poolId.toString(),mintA:p,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:N({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:g.address.poolId.toString(),mintA:p,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:[]}},fu),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:d,computeBudgetConfig:p,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===ne.toString(),A=n.useSOLBalance&&e.mintB.address===ne.toString(),[T,h]=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||T.isZero()?{payer:this.scope.ownerPubKey,amount:T}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});I&&(b=I),f.addInstruction(B||{});let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ue(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||h.isZero()?{payer:this.scope.ownerPubKey,amount:h}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:A?!1:c,checkCreateATAOwner:l});x&&(g=x),f.addInstruction(K||{}),(!b||!g)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let M=t||await this.getClmmPoolKeys(e.id),F=await Se.openPositionFromBaseInstructions({poolInfo:e,poolKeys:M,ownerInfo:D(N({},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:d});return f.addInstruction(F),f.addCustomComputeBudget(p),f.versionBuild({txVersion:y,extInfo:F.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:d,getEphemeralSigners:p}){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===ne.toBase58(),P=n.useSOLBalance&&e.mintB.address===ne.toBase58(),{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ue(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:g||i.isZero()?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!g,notUseTokenAccount:g,associatedOnly:g?!1:c,checkCreateATAOwner:l});A&&(f=A),y.addInstruction(T||{});let{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ue(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:P||o.isZero()?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});h&&(b=h),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 Se.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:p});return y.addInstruction(x),y.versionBuild({txVersion:d,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,d=this.createTxBuilder(),p,y,f=a.useSOLBalance&&t.mintA.address===ne.toString(),b=a.useSOLBalance&&t.mintB.address===ne.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||i.isZero()?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(p=g),d.addInstruction(P||{});let{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ue(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b||o.isZero()?{payer:this.scope.ownerPubKey,amount:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});A&&(y=A),d.addInstruction(T||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let h=await this.getClmmPoolKeys(t.id),I=Se.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:h,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},liquidity:s,amountMaxA:i,amountMaxB:o});return d.addInstruction(I),d.addCustomComputeBudget(l),d.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,d=this.createTxBuilder(),p,y,f=a.useSOLBalance&&t.mintA.address===ne.toString(),b=a.useSOLBalance&&t.mintB.address===ne.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||(i==="MintA"?o:s).isZero()?{payer:this.scope.ownerPubKey,amount:i==="MintA"?o:s}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(p=g),d.addInstruction(P||{});let{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ue(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b||(i==="MintA"?s:o).isZero()?{payer:this.scope.ownerPubKey,amount:i==="MintA"?s:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});A&&(y=A),d.addInstruction(T||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let h=await this.getClmmPoolKeys(t.id),I=Se.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:h,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},base:i,baseAmount:o,otherAmountMax:s});return d.addInstruction(I),d.addCustomComputeBudget(l),d.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 d=this.createTxBuilder(),p=i.useSOLBalance&&t.mintA.address===ne.toString(),y=i.useSOLBalance&&t.mintB.address===ne.toString(),f,b,{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ue(t.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!p,associatedOnly:p?!1:u,checkCreateATAOwner:c});f=g,P&&d.addInstruction(P);let{account:A,instructionParams:T}=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,T&&d.addInstruction(T);let h=[];for(let K of t.rewardDefaultInfos){let M=i.useSOLBalance&&K.mint.address===ne.toString(),F;if(K.mint.address===t.mintA.address)F=f;else if(K.mint.address===t.mintB.address)F=b;else{let{account:H,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(K.mint.programId),mint:new ue(K.mint.address),notUseTokenAccount:M,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!M,associatedOnly:M?!1:u,checkCreateATAOwner:c});F=H,v&&d.addInstruction(v)}h.push(F)}!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let I=await this.getClmmPoolKeys(t.id),B=await Se.decreaseLiquidityInstructions({poolInfo:t,poolKeys:I,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:h},liquidity:a,amountMinA:o,amountMinB:s});d.addInstruction({instructions:B.instructions,instructionTypes:[E.ClmmDecreasePosition]});let x=N({},B.address);if(i.closePosition){let K=await Se.closePositionInstructions({poolInfo:t,poolKeys:I,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});d.addInstruction({endInstructions:K.instructions,endInstructionTypes:K.instructionTypes}),x=N(N({},x),K.address)}return d.addCustomComputeBudget(l),d.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=Se.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()===ne.toString(),l=n.perSecond.mul(n.endTime-n.openTime),{account:m,instructionParams:d}=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 _(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:c?!1:i,checkCreateATAOwner:o});d&&u.addInstruction(d),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),y=Se.initRewardInstructions({poolInfo:e,poolKeys:p,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:J.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===ne.toString(),d=l.perSecond.mul(l.endTime-l.openTime),{account:p,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 _(d.toFixed(0)).gte(d)?d.toFixed(0):d.add(1).toFixed(0))}:void 0,associatedOnly:m?!1:i,checkCreateATAOwner:o});y&&u.addInstruction(y),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),b=Se.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{programId:new ue(l.mint.programId),mint:new ue(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:J.decimalToX64(l.perSecond)}});c=N(N({},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(ne),{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 _(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 d=await this.getClmmPoolKeys(e.id),p=Se.setRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:J.decimalToX64(n.perSecond)}});return u.addInstruction(p),u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:p.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===ne.toString(),{account:d,instructionParams:p}=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 _(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});p&&u.addInstruction(p),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let y=await this.getClmmPoolKeys(e.id),f=Se.setRewardInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{mint:new ue(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:J.decimalToX64(l.perSecond)}});u.addInstruction(f),c=N(N({},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(p=>p.mint.address===n.toString());s||this.logAndCreateError("reward mint error","not found reward mint",n);let a=this.createTxBuilder(),u=t.useSOLBalance&&n.equals(ne),{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),d=Se.collectRewardInstructions({poolInfo:e,poolKeys:m,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:c},rewardMint:n});return a.addInstruction(d),a.build({address:d.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(ne),{account:m,instructionParams:d}=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),d&&s.addInstruction(d);let p=await this.getClmmPoolKeys(e.id),y=Se.collectRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:u});s.addInstruction(y),a=N(N({},a),y.address)}return s.build({address:a})}async swap({poolInfo:e,inputMint:t,amountIn:n,amountOutMin:i,priceLimit:o,observationId:s,ownerInfo:a,remainingAccounts:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,txVersion:m}){let d=this.createTxBuilder(),p=a.useSOLBalance&&e.mintA.address===ne.toBase58(),y=a.useSOLBalance&&e.mintB.address===ne.toBase58(),f;!o||o.equals(new _(0))?f=t.toString()===e.mintA.address?Kt.add(new mt(1)):Ct.sub(new mt(1)):f=Z.priceToSqrtPriceX64(o,e.mintA.decimals,e.mintB.decimals);let b;if(!b){let{account:A,instructionParams:T}=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:a.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:c,checkCreateATAOwner:l});b=A,T&&d.addInstruction(T)}let g;if(!g){let{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ue(e.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:{payer:a.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:y?!1:c,checkCreateATAOwner:l});g=A,T&&d.addInstruction(T)}(!b||!g)&&this.logAndCreateError("user do not have token account",this.scope.account.tokenAccountRawInfos);let P=await this.getClmmPoolKeys(e.id);return d.addInstruction(Se.makeSwapBaseInInstructions({poolInfo:e,poolKeys:P,observationId:s,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g},inputMint:new ue(t),amountIn:n,amountOutMin:i,sqrtPriceLimitX64:f,remainingAccounts:u})),d.versionBuild({txVersion:m})}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?be(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(T=>!T.rewardAmountOwed.isZero())))continue;let d=m,p=n.useSOLBalance&&d.mintA.address===ne.toString(),y=n.useSOLBalance&&d.mintB.address===ne.toString(),f=c[d.mintA.address];if(!f){let{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintA.programId,mint:new ue(d.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:i,checkCreateATAOwner:o});f=A,T&&l.addInstruction(T)}let b=c[d.mintB.address];if(!b){let{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintB.programId,mint:new ue(d.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,T&&l.addInstruction(T)}c[d.mintA.address]=f,c[d.mintB.address]=b;let g=[];for(let A of d.rewardDefaultInfos){let T=n.useSOLBalance&&A.mint.address===ne.toString(),h=c[A.mint.address];if(!h){let{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(A.mint.programId),mint:new ue(A.mint.address),notUseTokenAccount:T,owner:this.scope.ownerPubKey,skipCloseAccount:!T,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:T?!1:i});h=I,B&&l.addInstruction(B)}c[A.mint.address]=h,g.push(h)}let P=await this.getClmmPoolKeys(d.id);for(let A of t[m.id]){let T=Se.decreaseLiquidityInstructions({poolInfo:d,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(T)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:u}):l.sizeCheckBuild({computeBudgetConfig:u})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(dr(e).publicKey);return t?gu.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=gi.decode(s.data);o.push(a)}),o}async getRpcClmmPoolInfo({poolId:e}){return(await this.getRpcClmmPoolInfos({poolIds:[e]}))[String(e)]}async getRpcClmmPoolInfos({poolIds:e}){let t=await this.scope.connection.getMultipleAccountsInfo(e.map(i=>new ue(i))),n={};for(let i=0;i<e.length;i++){let o=t[i];if(o===null)throw Error("fetch pool info error: "+String(e[i]));let s=bi.decode(o.data),a=Z.sqrtPriceX64ToPrice(s.sqrtPriceX64,s.mintDecimalsA,s.mintDecimalsB).toNumber();n[String(e[i])]=D(N({},s),{currentPrice:a})}return n}};import{PublicKey as X}from"@solana/web3.js";import{NATIVE_MINT as Pi,TOKEN_PROGRAM_ID as en,AccountLayout as Kp}from"@solana/spl-token";var yp=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),bp=Buffer.from("amm_config","utf8"),gp=Buffer.from("pool","utf8"),wp=Buffer.from("pool_lp_mint","utf8"),Ap=Buffer.from("pool_vault","utf8"),Pp=Buffer.from("observation","utf8");function kp(r){return oe([yp],r)}function hp(r,e){return oe([bp,xp(e)],r)}function Tp(r,e,t,n){return oe([gp,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Ip(r,e){return oe([wp,e.toBuffer()],r)}function Su(r,e,t){return oe([Ap,e.toBuffer(),t.toBuffer()],r)}function Ai(r,e){return oe([Pp,e.toBuffer()],r)}function xp(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function Ku({programId:r,mintA:e,mintB:t}){let n=hp(r,0).publicKey,i=kp(r).publicKey,o=Tp(r,n,e,t).publicKey,s=Ip(r,o).publicKey,a=Su(r,o,e).publicKey,u=Su(r,o,t).publicKey,c=Ai(r,o).publicKey;return{poolId:o,configId:n,authority:i,lpMint:s,vaultA:a,vaultB:u,observationId:c}}import{TransactionInstruction as Pr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ns,TOKEN_2022_PROGRAM_ID as Cu,ASSOCIATED_TOKEN_PROGRAM_ID as Bp}from"@solana/spl-token";var Sp=ae("Raydium_cpmm"),kr={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 Ru(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P,A){let T=L([w("amountMaxA"),w("amountMaxB"),w("openTime")]),h=[{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:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:ns,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:Bp,isSigner:!1,isWritable:!1},{pubkey:Wr,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1}],I=Buffer.alloc(T.span);return T.encode({amountMaxA:g,amountMaxB:P,openTime:A},I),new Pr({keys:h,programId:r,data:Buffer.from([...kr.initialize,...I])})}function Lu(r,e,t,n,i,o,s,a,u,c,l,m,d,p,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:ns,isSigner:!1,isWritable:!1},{pubkey:Cu,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 Sp.debug("cpmm deposit data",{lpAmount:d.toString(),amountMaxA:p.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:d,amountMaxA:p,amountMaxB:y},g),new Pr({keys:b,programId:r,data:Buffer.from([...kr.deposit,...g])})}function Ou(r,e,t,n,i,o,s,a,u,c,l,m,d,p,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:ns,isSigner:!1,isWritable:!1},{pubkey:Cu,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:Fs,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);return f.encode({lpAmount:d,amountMinA:p,amountMinB:y},g),new Pr({keys:b,programId:r,data:Buffer.from([...kr.withdraw,...g])})}function Nu(r,e,t,n,i,o,s,a,u,c,l,m,d,p,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:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],P=Buffer.alloc(b.span);return b.encode({amountIn:y,amounOutMin:f},P),new Pr({keys:g,programId:r,data:Buffer.from([...kr.swapBaseInput,...P])})}function Mu(r,e,t,n,i,o,s,a,u,c,l,m,d,p,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:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],P=Buffer.alloc(b.span);return b.encode({amountInMax:y,amountOut:f},P),new Pr({keys:g,programId:r,data:Buffer.from([...kr.swapBaseOutput,...P])})}import et from"bn.js";var _u=L([fe(8),V("bump"),qe("disableCreatePool"),Bt("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),S("protocolOwner"),S("fundOwner"),q(w(),16)]),Vu=L([fe(8),S("configId"),S("poolCreator"),S("vaultA"),S("vaultB"),S("mintLp"),S("mintA"),S("mintB"),S("mintProgramA"),S("mintProgramB"),S("observationId"),V("bump"),V("status"),V("lpDecimals"),V("mintDecimalA"),V("mintDecimalB"),w("lpAmount"),w("protocolFeesMintA"),w("protocolFeesMintB"),w("fundFeesMintA"),w("fundFeesMintB"),w("openTime"),q(w(),32)]);var hr=class extends Be{constructor(e){super(e)}async load(){this.checkDisabled()}async getCpmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async getRpcPoolInfo(e,t){return(await this.getRpcPoolInfos([e],t))[e]}async getRpcPoolInfos(e,t){let n=await this.scope.connection.getMultipleAccountsInfo(e.map(m=>new X(m))),i={},o=new Set,s=[];for(let m=0;m<e.length;m++){let d=n[m];if(d===null)throw Error("fetch pool info error: "+String(e[m]));let p=Vu.decode(d.data);i[String(e[m])]=p,o.add(String(p.configId)),s.push(p.vaultA,p.vaultB)}let a={};if(t){let m=[...o],d=await this.scope.connection.getMultipleAccountsInfo(m.map(p=>new X(p)));for(let p=0;p<m.length;p++){let y=d[p];if(y===null)throw Error("fetch pool config error: "+m[p]);a[m[p]]=_u.decode(y.data)}}let u={},c=await this.scope.connection.getMultipleAccountsInfo(s.map(m=>new X(m)));for(let m=0;m<s.length;m++){let d=c[m];if(d===null)throw Error("fetch vault info error: "+s[m]);u[String(s[m])]=new et(Kp.decode(d.data).amount.toString())}let l={};for(let[m,d]of Object.entries(i)){let p=u[d.vaultA.toString()].sub(d.protocolFeesMintA).sub(d.fundFeesMintA),y=u[d.vaultB.toString()].sub(d.protocolFeesMintB).sub(d.fundFeesMintB);l[m]=D(N({},d),{baseReserve:p,quoteReserve:y,configInfo:a[d.configId.toString()],poolPrice:new _(y.toString()).div(new _(10).pow(d.mintDecimalB)).div(new _(p.toString()).div(new _(10).pow(d.mintDecimalA)))})}return l}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=Ie(m,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var H,v,j;let d=i.feePayer||((H=this.scope.owner)==null?void 0:H.publicKey),p=new et(new X(c.mintA.address).toBuffer()).lte(new et(new X(c.mintB.address).toBuffer())),[y,f]=p?[c.mintA,c.mintB]:[c.mintB,c.mintA],[b,g]=p?[c.mintAAmount,c.mintBAmount]:[c.mintBAmount,c.mintAAmount],P=i.useSOLBalance&&y.address===Pi.toBase58(),A=i.useSOLBalance&&f.address===Pi.toBase58(),[T,h]=[new X(y.address),new X(f.address)],I=this.createTxBuilder(),{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({mint:T,tokenProgram:y.programId,owner:this.scope.ownerPubKey,createInfo:P?{payer:d,amount:b}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:o,checkCreateATAOwner:s});I.addInstruction(x||{});let{account:K,instructionParams:M}=await this.scope.account.getOrCreateTokenAccount({mint:new X(f.address),tokenProgram:f.programId,owner:this.scope.ownerPubKey,createInfo:A?{payer:d,amount:g}:void 0,notUseTokenAccount:A,skipCloseAccount:!A,associatedOnly:A?!1:o,checkCreateATAOwner:s});if(I.addInstruction(M||{}),B===void 0||K===void 0)throw Error("you don't has some token account");let F=Ku({programId:e,mintA:T,mintB:h});return I.addInstruction({instructions:[Ru(e,this.scope.ownerPubKey,F.configId,F.authority,F.poolId,T,h,F.lpMint,B,K,be(this.scope.ownerPubKey,F.lpMint).publicKey,F.vaultA,F.vaultB,t,new X((v=y.programId)!=null?v:en),new X((j=f.programId)!=null?j:en),F.observationId,b,g,n)],instructionTypes:[E.CpmmCreatePool]}),I.addCustomComputeBudget(u),I.versionBuild({txVersion:a,extInfo:{address:D(N({},F),{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:d}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},u),p=await this.getRpcPoolInfo(t.id),{liquidity:y,inputAmountFee:f,anotherAmount:b}=s||this.computePairAmount({poolInfo:D(N({},t),{mintAmountA:new _(p.baseReserve.toString()).div(10**t.mintA.decimals).toNumber(),mintAmountB:new _(p.quoteReserve.toString()).div(10**t.mintB.decimals).toNumber(),lpAmount:new _(p.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),slippage:o,baseIn:i,epochInfo:await this.scope.fetchEpochInfo(),amount:new _(n.toString()).div(10**(i?t.mintA.decimals:t.mintB.decimals))}),g=b.amount,P=t.mintA.address===Pi.toString(),A=t.mintB.address===Pi.toString(),T=this.createTxBuilder(),[h,I]=[new X(t.mintA.address),new X(t.mintB.address)],{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new X(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:d});T.addInstruction(x||{});let{account:K,instructionParams:M}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new X(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:d});T.addInstruction(M||{}),!B&&!K&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let F=await l.getCreatedTokenAccount({mint:new X(t.lpMint.address)}),ee=await l.handleTokenAccount({side:"out",amount:0,mint:new X(t.lpMint.address),tokenAccount:F,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:H}=ee,v=Ie(ee,["tokenAccount"]);T.addInstruction(v);let j=await this.getCpmmPoolKeys(t.id);return T.addInstruction({instructions:[Lu(new X(t.programId),this.scope.ownerPubKey,new X(j.authority),new X(t.id),H,B,K,new X(j.vault.A),new X(j.vault.B),h,I,new X(t.lpMint.address),y,i?f.amount:g,i?g:f.amount)],instructionTypes:[E.CpmmAddLiquidity],lookupTableAddress:j.lookupTableAccount?[j.lookupTableAccount]:[]}),T.addCustomComputeBudget(a),T.versionBuild({txVersion:c})}async withdrawLiquidity(e){var H,v;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 et(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(),[d,p]=[Pe(c,t.mintA.extensions.feeConfig,m,!0),Pe(l,t.mintB.extensions.feeConfig,m,!0)],{account:y}=this.scope,f=this.createTxBuilder(),[b,g]=[new X(t.mintA.address),new X(t.mintB.address)],P=b.equals(ne),A=g.equals(ne),T,h,{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new X(t.mintA.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!P,associatedOnly:!P,checkCreateATAOwner:!1});T=I,B&&f.addInstruction(B);let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new X(t.mintB.address),notUseTokenAccount:A,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!A,associatedOnly:!A,checkCreateATAOwner:!1});h=x,K&&f.addInstruction(K),(!T||!h)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",y.tokenAccounts);let M=await y.getCreatedTokenAccount({mint:new X(t.lpMint.address)});M||this.logAndCreateError("cannot found lp token account","tokenAccounts",y.tokenAccounts);let F=await this.getCpmmPoolKeys(t.id);return f.addInstruction({instructions:[Ou(new X(t.programId),this.scope.ownerPubKey,new X(F.authority),new X(t.id),M,T,h,new X(F.vault.A),new X(F.vault.B),b,g,new X(t.lpMint.address),n,c.sub((H=d.fee)!=null?H:new et(0)),l.sub((v=p.fee)!=null?v:new et(0)))],instructionTypes:[E.CpmmWithdrawLiquidity],lookupTableAddress:F.lookupTableAccount?[F.lookupTableAccount]:[]}),f.addCustomComputeBudget(o),f.versionBuild({txVersion:s})}async swap(e){var T,h,x,K,M,F;let{poolInfo:t,baseIn:n,swapResult:i,config:o,computeBudgetConfig:s,txVersion:a}=e,{bypassAssociatedCheck:u,checkCreateATAOwner:c}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),l=this.createTxBuilder(),[m,d]=[new X(t.mintA.address),new X(t.mintB.address)],p=await this.scope.account.getCreatedTokenAccount({programId:new X((T=t.mintA.programId)!=null?T:en),mint:m,associatedOnly:!1}),y=await this.scope.account.getCreatedTokenAccount({programId:new X((h=t.mintB.programId)!=null?h:en),mint:d,associatedOnly:!1}),I=await this.scope.account.handleTokenAccount({side:n?"in":"out",amount:n?i.sourceAmountSwapped:i.destinationAmountSwapped,mint:m,tokenAccount:p,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:f}=I,b=Ie(I,["tokenAccount"]);l.addInstruction(b);let B=await this.scope.account.handleTokenAccount({side:n?"out":"in",amount:n?i.destinationAmountSwapped:i.sourceAmountSwapped,mint:d,tokenAccount:y,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:g}=B,P=Ie(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?Nu(new X(t.programId),this.scope.ownerPubKey,new X(A.authority),new X(A.config.id),new X(t.id),f,g,new X(A.vault.A),new X(A.vault.B),new X((x=t.mintA.programId)!=null?x:en),new X((K=t.mintB.programId)!=null?K:en),m,d,Ai(new X(t.programId),new X(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped):Mu(new X(t.programId),this.scope.ownerPubKey,new X(A.authority),new X(A.config.id),new X(t.id),g,f,new X(A.vault.B),new X(A.vault.A),new X((M=t.mintB.programId)!=null?M:en),new X((F=t.mintA.programId)!=null?F:en),d,m,Ai(new X(t.programId),new X(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped)],instructionTypes:[n?E.CpmmSwapBaseIn:E.CpmmSwapBaseOut]}),l.addCustomComputeBudget(s),l.versionBuild({txVersion:a})}computePairAmount({poolInfo:e,amount:t,slippage:n,epochInfo:i,baseIn:o}){var P,A,T,h,I,B,x,K;let s=1-Number(n.toSignificant())/100,a=new et(new _(t).mul(10**e[o?"mintA":"mintB"].decimals).mul(s).toFixed(0)),u=Pe(a,e[o?"mintA":"mintB"].extensions.feeConfig,i,!1),c=a.sub((P=u.fee)!=null?P:new et(0)),[l,m]=[new et(new _(e.mintAmountA).mul(10**e.mintA.decimals).toString()),new et(new _(e.mintAmountB).mul(10**e.mintB.decimals).toString())],d=new et(new _(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,_.ROUND_DOWN));this.logDebug("baseReserve:",l.toString(),"quoteReserve:",m.toString()),this.logDebug("tokenIn:",o?e.mintA.symbol:e.mintB.symbol,"amountIn:",a.toString(),"amountInFee:",(T=(A=u.fee)==null?void 0:A.toString())!=null?T:0,"anotherToken:",o?e.mintB.symbol:e.mintA.symbol,"slippage:",`${n.toSignificant()}%`);let p=o?"base":"quote";this.logDebug("input side:",p);let y=c.mul(d).div(p==="base"?l:m),f={amount:Ke,fee:void 0,expirationTime:void 0};c.isZero()||(f=Pe(Cp(y,l,m,d)[o?"amountB":"amountA"],e[o?"mintB":"mintA"].extensions.feeConfig,i,!0));let b=new ve(new et(1)).add(n),g=Pe(b.mul(f.amount.sub((h=f.fee)!=null?h:new et(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:",(K=(x=g.fee)==null?void 0:x.toString())!=null?K:0),{inputAmountFee:u,anotherAmount:f,maxAnotherAmount:g,liquidity:y}}};function Cp(r,e,t,n){let i=r.mul(e).div(n);!i.isZero()&&!r.mul(e).mod(n).isZero()&&(i=i.add(new et(1)));let o=r.mul(t).div(n);return!o.isZero()&&!r.mul(t).mod(n).isZero()&&(o=o.add(new et(1))),{amountA:i,amountB:o}}var Tr=class extends Be{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(Ke)?-1:1:i.baseReserve.sub(o.quoteReserve).gte(Ke)?-1:1}async getWSolAccounts(){this.scope.checkOwner(),await this.scope.account.fetchWalletTokenAccounts();let e=this.scope.account.tokenAccounts.filter(t=>t.mint.equals(ne));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 Vt({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:[_t({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),a.sub(i[u].amount)):(o.addInstruction({instructions:[_t({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 Vt({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:[_t({tokenAccount:o.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),i.build()}};import{TOKEN_PROGRAM_ID as Rp}from"@solana/spl-token";import{PublicKey as Lp,Transaction as rs,TransactionInstruction as Op}from"@solana/web3.js";import Eu from"bn.js";var Ze=class extends Be{static getPdaPoolId(e,t){return oe([Ze.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,i){return oe([Ze.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new Eu(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=>Ze.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<Ze.VERSION_PROJECT.length;l++)a.push(...s.map(m=>Ze.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),d=l%n.length,p=s[d],y=a[l],f=u[d],b=u[n.length+l];if(!(f&&b)||f.data.length!==Ze.POOL_LAYOUT.span||b.data.length!==Ze.OWNER_LAYOUT.span)continue;let g=Ze.POOL_LAYOUT.decode(f.data),P=Ze.OWNER_LAYOUT.decode(b.data),A=g.openTime.toNumber(),T=g.endTime.toNumber(),h=P.tokenInfo.map(x=>x.debtAmount.gt(new Eu(0))).filter(x=>!x).length!==3,I=o>A&&o<T&&g.status===1,B=h&&I;c.push({programId:t,poolId:p,ammId:g.ammId,ownerAccountId:y,snapshotLpAmount:P.lpAmount,project:Ze.VERSION_PROJECT[m],openTime:A,endTime:T,canClaim:B,canClaimErrorType:h?I?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:g.tokenInfo.map((x,K)=>({mintAddress:x.mintAddress,mintVault:x.mintVault,mintDecimals:x.mintDecimals,perLpLoss:x.perLpLoss,debtAmount:P.tokenInfo[K].debtAmount.add(P.tokenInfo[K].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(pe.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!u.mintAddress.equals(pe.WSOL.mint),associatedOnly:u.mintAddress.equals(pe.WSOL.mint)?!1:t.associatedOnly});l&&n.addInstruction(l),o.push(c)}n.addInstruction({instructions:[Ze.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:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({mint:m.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:m.mintAddress.equals(pe.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!m.mintAddress.equals(pe.WSOL.mint),associatedOnly:m.mintAddress.equals(pe.WSOL.mint)?!1:t.associatedOnly});p&&n.addInstruction(p),d&&(o[m.mintAddress.toString()]=d,l.push(d))}n.addInstruction({instructions:[Ze.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 Hr(u,[i,...a.map(c=>c.publicKey)])?[{transaction:s,signer:a}]:[{transaction:new rs().add(...u.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new rs().add(...u.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new rs().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:Rp,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 Op({keys:o,programId:e,data:a})}},dt=Ze;dt.CLAIMED_NUM=3,dt.POOL_LAYOUT=L([fe(8),V("bump"),V("status"),w("openTime"),w("endTime"),S("ammId"),q(L([V("mintDecimals"),S("mintAddress"),S("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),Ze.CLAIMED_NUM,"tokenInfo"),q(w(),10,"padding")]),dt.OWNER_LAYOUT=L([fe(8),V("bump"),V("version"),S("poolId"),S("owner"),w("lpAmount"),q(L([S("mintAddress"),w("debtAmount"),w("claimedAmount")]),Ze.CLAIMED_NUM,"tokenInfo"),q(w(),4,"padding")]),dt.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new Lp(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 Ir}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as qu}from"@solana/spl-token";import xr from"bn.js";import{TransactionInstruction as Mp,SYSVAR_RENT_PUBKEY as _p}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Fu}from"@solana/spl-token";import{createInitializeAccountInstruction as vu}from"@solana/spl-token";import{SystemProgram as bn,Transaction as Wu}from"@solana/web3.js";function Np(r="accountFlags"){let e=new ri(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 is=L([fe(5),Np("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"),fe(7)]);function Vp({programId:r,marketInfo:e}){let t=L([V("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:_p,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 Mp({keys:n,programId:r,data:i})}async function Du({connection:r,wallet:e,marketInfo:t}){let n=new Wu,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:Fu}),bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:i,space:165,programId:Fu}),vu(t.baseVault.publicKey,t.baseMint,t.vaultOwner),vu(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let o=new Wu;return o.add(bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await r.getMinimumBalanceForRentExemption(is.span),space:is.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}),Vp({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:[E.CreateAccount,E.CreateAccount,E.InitAccount,E.InitAccount]},{transaction:o,signer:[],instructionTypes:[E.CreateAccount,E.CreateAccount,E.CreateAccount,E.CreateAccount,E.CreateAccount,E.InitMarket]}]}var On=class extends Be{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}),d=Ye({fromPublicKey:u,programId:o}),p=Ye({fromPublicKey:u,programId:o}),y=Ye({fromPublicKey:u,programId:qu}),f=Ye({fromPublicKey:u,programId:qu}),b=0,g=new xr(100);function P(){let K=new xr(0);for(;;)try{return{vaultOwner:Ir.createProgramAddressSync([c.publicKey.toBuffer(),K.toArrayLike(Buffer,"le",8)],o),vaultSignerNonce:K}}catch{if(K.iaddn(1),K.gt(new xr(25555)))throw Error("find vault owner error")}}let{vaultOwner:A,vaultSignerNonce:T}=P(),h=new xr(Math.round(10**e.decimals*n)),I=new xr(Math.round(n*10**t.decimals*i));if(h.eq(Ke))throw Error("lot size is too small");if(I.eq(Ke))throw Error("tick size or lot size is too small");let B=await Du({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:d,asks:p,feeRateBps:b,quoteDustThreshold:g,vaultSignerNonce:T,baseLotSize:h,quoteLotSize:I}}),x=this.createTxBuilder();x.addInstruction({instructions:B[0].transaction.instructions,signers:B[0].signer});for await(let K of B.slice(1,B.length))x.addInstruction({instructions:K.transaction.instructions,signers:K.signer,instructionTypes:K.instructionTypes});return s===0?x.sizeCheckBuildV0({computeBudgetConfig:a,address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:d.publicKey,asks:p.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new Ir(e.mint),quoteMin:new Ir(t.mint)}}):x.sizeCheckBuild({computeBudgetConfig:a,address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:d.publicKey,asks:p.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new Ir(e.mint),quoteMin:new Ir(t.mint)}})}};import{PublicKey as Sr}from"@solana/web3.js";import{TransactionInstruction as ss,SYSVAR_CLOCK_PUBKEY as Ep}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as as}from"@solana/spl-token";var os=L([V("instruction"),da("amount")]),Br=L([V("instruction")]);function CB({programId:r,amount:e,instructionKeys:t}){let n=[{pubkey:Wr,isSigner:!1,isWritable:!1},{pubkey:as,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:Di,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(os.span);return os.encode({instruction:1,amount:Number(e)},i),new ss({keys:n,programId:r,data:i})}function ki({programId:r},e){let t=[{pubkey:as,isSigner:!1,isWritable:!1},{pubkey:Di,isSigner:!1,isWritable:!1},...Object.entries(e).map(([i,o])=>({pubkey:o,isSigner:i==="userOwner",isWritable:!["authority","userOwner"].includes(i)}))],n=Buffer.alloc(Br.span);return Br.encode({instruction:2},n),new ss({keys:t,programId:r,data:n})}function us(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(Br.span);Br.encode({instruction:2},s);let a=[{pubkey:as,isWritable:!1,isSigner:!1},{pubkey:Ep,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 ss({programId:e.programId,keys:a,data:s})}import Uu from"bn.js";var Fp={[Qn.IDO_PROGRAM_ID_V1.toString()]:1,[Qn.IDO_PROGRAM_ID_V2.toString()]:2,[Qn.IDO_PROGRAM_ID_V3.toString()]:3,[Qn.IDO_PROGRAM_ID_V4.toString()]:4},Nn=class extends Be{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:i=!1,txVersion:o}){let s=this.createTxBuilder(),a=Fp[t.programId];a||this.logAndCreateError("invalid version",a);let u=ye(t),[c,l]=[!new Uu(e.coin).isZero(),!new Uu(e.pc).isZero()],m=u.projectInfo.mint.address.equals(ne),{account:d,instructionParams:p}=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});!d&&c&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),c&&p&&s.addInstruction(p);let y=u.buyInfo.mint.address.equals(ne),{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(!d&&l&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),l&&b&&s.addInstruction(b),(!d||!f)&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address,t.buyInfo.mint.address),a===3)return s.addInstruction({instructions:[...c?[ki({programId:u.programId},{idoId:u.id,authority:u.authority,poolTokenAccount:u.projectInfo.vault,userTokenAccount:d,userIdoInfo:new Sr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[ki({programId:new Sr(t.programId)},{idoId:u.id,authority:u.authority,poolTokenAccount:u.buyInfo.vault,userTokenAccount:f,userIdoInfo:new Sr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:o});if(a<3)return!c&&!l&&this.logAndCreateError("no claimable rewards"),s.addInstruction({instructions:[ki({programId:u.programId},{idoId:u.id,authority:u.authority,poolQuoteTokenAccount:u.buyInfo.vault,poolBaseTokenAccount:u.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:d,userIdoInfo:new Sr(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:d,quoteTokenAccount:f,ledgerAccount:new Sr(e.userIdoInfo),owner:this.scope.ownerPubKey}};return s.addInstruction({instructions:[...c?[us(D(N({},g),{side:"base"}))]:[],...l?[us(D(N({},g),{side:"quote"}))]:[]]}).versionBuild({txVersion:o})}};import{PublicKey as vp}from"@solana/web3.js";import{MintLayout as Wp,TOKEN_2022_PROGRAM_ID as cs,TOKEN_PROGRAM_ID as ls}from"@solana/spl-token";var Kr=class extends Be{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._whiteMap=new Set;this._extraTokenList=[]}async load(t){this.checkDisabled();let{forceUpdate:n=!1,type:i="strict"}=t||{},{mintList:o,blacklist:s,whiteList:a}=await this.scope.fetchV3TokenList(n),u=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._whiteMap=new Set(a),this._tokenMap.set(Tt.address,Tt),this._mintGroup.official.add(Tt.address),s.forEach(c=>{this._blackTokenMap.set(c.address,D(N({},c),{priority:-1}))}),o.forEach(c=>{var l;this._blackTokenMap.has(c.address)||(this._tokenMap.set(c.address,D(N({},c),{type:"raydium",priority:2,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?cs.toBase58():ls.toBase58()})),this._mintGroup.official.add(c.address))}),u.forEach(c=>{var l;this._blackTokenMap.has(c.address)||this._tokenMap.has(c.address)||(this._tokenMap.set(c.address,D(N({},c),{type:"jupiter",priority:1,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?cs.toBase58():ls.toBase58()})),this._mintGroup.jup.add(c.address))}),this._extraTokenList.forEach(c=>{this._blackTokenMap.has(c.address)||this._tokenMap.has(c.address)||(this._tokenMap.set(c.address,D(N({},c),{type:"extra",priority:1,programId:c.programId||c.tags.includes("token-2022")?cs.toBase58():ls.toBase58()})),this._mintGroup.extra.add(c.address))}),this._tokenList=Array.from(this._tokenMap).map(c=>c[1])}get tokenList(){return this._tokenList}get tokenMap(){return this._tokenMap}get blackTokenMap(){return this._blackTokenMap}get mintGroup(){return this._mintGroup}get whiteListMap(){return this._whiteMap}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(N({},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=Wp.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 hi=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 cr({scope:this,moduleName:"Raydium_Farm"}),this.account=new $n({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new wr({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new Kr({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new Tr({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new Ar({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new hr({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new dt({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new On({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new Nn({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=Dp({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:i,logCount:o,logRequests:s,urlConfigs:a}=t,u=new ei({cluster:n,timeout:i,urlConfigs:a,logCount:o,logRequests:s}),c=new hi(D(N({},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(ti);return this._owner.publicKey}setOwner(e){return this._owner=e?new gt(e):void 0,this}get connection(){if(!this._connection)throw new Error(ua);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(ti),new Error(ti)}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(N({},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 ps,TOKEN_2022_PROGRAM_ID as ms}from"@solana/spl-token";import{PublicKey as pt,TransactionInstruction as fs,SystemProgram as Xu}from"@solana/web3.js";import ds from"bn.js";function _S(r,e,t,n,i,o,s,a,u,c,l,m){let d=L([V("instruction"),w("amountIn"),w("amountOut")]),p=[{pubkey:Xu.programId,isSigner:!1,isWritable:!1},{pubkey:ps,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=ye(t);p.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=ye(t);p.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=ye(t);p.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(d.span);return d.encode({instruction:4,amountIn:c,amountOut:l},y),new fs({keys:p,programId:r,data:y})}function VS(r,e,t,n,i,o,s,a,u,c){let l=L([V("instruction")]),m=[{pubkey:Xu.programId,isSigner:!1,isWritable:!1},{pubkey:ps,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 p=ye(n);m.push({pubkey:p.config.id,isSigner:!1,isWritable:!1},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.mintA.address.equals(u)?p.vault.A:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.mintA.address.equals(u)?p.vault.B:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0},...c.map(y=>({pubkey:y,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let p=ye(n);m.push({pubkey:p.authority,isSigner:!1,isWritable:!1},{pubkey:p.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:new pt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:p.openOrders,isSigner:!1,isWritable:!0},{pubkey:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.marketId,isSigner:!1,isWritable:!0},{pubkey:p.marketBids,isSigner:!1,isWritable:!0},{pubkey:p.marketAsks,isSigner:!1,isWritable:!0},{pubkey:p.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0})}else{let p=ye(n);m.push({pubkey:p.authority,isSigner:!1,isWritable:!1},{pubkey:p.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:p.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:p.openOrders,isSigner:!1,isWritable:!0},{pubkey:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.marketId,isSigner:!1,isWritable:!0},{pubkey:p.marketBids,isSigner:!1,isWritable:!0},{pubkey:p.marketAsks,isSigner:!1,isWritable:!0},{pubkey:p.marketEventQueue,isSigner:!1,isWritable:!0},...p.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:p.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:p.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0}])}let d=Buffer.alloc(l.span);return l.encode({instruction:5},d),new fs({keys:m,programId:r,data:d})}function Gu(r,e,t,n,i,o){if(r.pooltype.includes("StablePool")){let s=ye(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=ye(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(ms)||a.mintB.programId.equals(ms)?[{pubkey:ms,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=ye(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 qp(r,e,t,n,i,o,s,a,u,c,l,m,d,p){let y=L([V("instruction"),w("amountIn"),w("amountOut")]),f=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:ps,isSigner:!1,isWritable:!1}];f.push(...Gu(a,c,o,t,n,p[0])),f.push(...Gu(u,l,s,n,i,p[1]));let b=Buffer.alloc(y.span);return y.encode({instruction:8,amountIn:m,amountOut:d},b),new fs({keys:f,programId:r,data:b})}async function ES({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=ye(n.poolKey[0]),m=t.equals(l.mintA.address)?Kt.add(at):Ct.sub(at);return await Se.makeSwapBaseInInstructions({poolInfo:l,poolKeys:l,observationId:l.vault.A,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 ds(0)),sqrtPriceLimitX64:m,remainingAccounts:n.remainingAccounts[0]})}else{let l=n.poolKey[0];return{signers:[],instructions:[mi({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 ds(0)),fixedSide:"in"})],lookupTableAddress:l.lookupTableAccount?[l.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?E.AmmV5SwapBaseIn:E.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let l=n.poolInfo[0],m=n.poolInfo[1],d=n.poolKey[0],p=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[qp(r,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.minMiddleAmountFee.token.mint.toString(),l,m,d,p,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((c=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?c:new ds(0)),n.remainingAccounts)],instructionTypes:[E.RouteSwap],lookupTableAddress:[d.lookupTableAccount,p.lookupTableAccount].filter(y=>y!==void 0),address:{}}}else throw Error("route type error")}import Yu from"bn.js";var ys=new Yu(1e6);function Up(r,e,t){return r.mul(e).add(t).sub(new Yu(1)).div(t)}function zu(r,e,t){return r.mul(e).div(t)}var Ti=class{static tradingFee(e,t){return Up(e,t,ys)}static protocolFee(e,t){return zu(e,t,ys)}static fundFee(e,t){return zu(e,t,ys)}};import Cr from"bn.js";function Ii(r,e){if(e.isZero())throw Error("divisor is zero");return r.mod(e)}function Gp(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=Ii(r,e);if(n.gt(Mn)){t=t.add(new Cr(1));let i=r.div(t);n=Ii(r,t),n.gt(Mn)&&(i=i.add(new Cr(1)))}return[t,e]}var Mn=new Cr(0),xi=class{static swapWithoutFees(e,t,n){let i=t.mul(n),o=t.add(e),[s,a]=Gp(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 Ii(e.mul(n),t).gt(Mn)&&s.gt(Mn)&&(s=s.add(new Cr(1))),Ii(e.mul(i),t).gt(Mn)&&a.gt(Mn)&&(a=a.add(new Cr(1))),{tokenAmount0:s,tokenAmount1:a};throw Error("roundDirection value error")}};var Hu=(t=>(t[t.Floor=0]="Floor",t[t.Ceiling=1]="Ceiling",t))(Hu||{}),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=Ti.tradingFee(e,i),s=e.sub(o),{sourceAmountSwapped:a,destinationAmountSwapped:u}=xi.swapWithoutFees(s,t,n),c=a.add(o);return{newSwapSourceAmount:t.add(c),newSwapDestinationAmount:n.sub(u),sourceAmountSwapped:c,destinationAmountSwapped:u,tradeFee:o}}};var ju={[Jr.toBase58()]:3},Zu={3:Jr};var Xp=L([fe(5),fe(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"),fe(7)]),Ju={3:Xp};import{PublicKey as $u}from"@solana/web3.js";var Bi=ae("Serum"),ec=class{static getProgramId(e){let t=Zu[e];return t||Bi.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=ju[t];return n||Bi.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=Ju[e];return t||Bi.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 Bi.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:$u.default,nonce:i}}};var LK=r=>r;export{yb as ACCOUNT_TYPE_SIZE,Db as ALL_PROGRAM_ID,Yd as AMM_CONFIG_SEED,Ol as AMM_STABLE,to as AMM_V4,df as ANAMint,We as API_URLS,Sl as AccountType,cT as AmmConfigLayout,ei as Api,lu as BIT_PRECISION,Yt as BNDivCeil,an as BNLayout,Py as BN_100,ky as BN_1000,hy as BN_10000,Ay as BN_FIVE,Gs as BN_ONE,nn as BN_TEN,wy as BN_THREE,gy as BN_TWO,Ke as BN_ZERO,Qg as BitStructure,ma as Blob,Nl as CLMM_PROGRAM_ID,Di as CLOCK_PROGRAM_ID,Wl as CREATE_CPMM_POOL_AUTH,Dl as CREATE_CPMM_POOL_FEE_ACC,vl as CREATE_CPMM_POOL_PROGRAM,Ar as Clmm,Se as ClmmInstrument,xi as ConstantProductCurve,_u as CpmmConfigInfoLayout,Ti as CpmmFee,Vu as CpmmPoolInfoLayout,Dn as Currency,rn as CurrencyAmount,Qu as CurveCalculator,qb as DEVNET_PROGRAM_ID,yg as DEV_API_URLS,Ul as DEV_CREATE_CPMM_POOL_AUTH,Gl as DEV_CREATE_CPMM_POOL_FEE_ACC,ql as DEV_CREATE_CPMM_POOL_PROGRAM,Od as DataElement,pf as ETHMint,jo as EXTENSION_TICKARRAY_BITMAP_SIZE,Na as FARM_LOCK_MINT,Ma as FARM_LOCK_VAULT,$i as FARM_PROGRAM_ID_V3,eo as FARM_PROGRAM_ID_V5,xn as FARM_PROGRAM_ID_V6,At as FARM_PROGRAM_TO_VERSION,Va as FARM_VERSION_TO_LEDGER_LAYOUT,_a as FARM_VERSION_TO_STATE_LAYOUT,Wb as FEE_DESTINATION_ID,yi as FEE_RATE_DENOMINATOR,ys as FEE_RATE_DENOMINATOR_VALUE,tp as FETCH_TICKARRAY_COUNT,ep as Fee,te as Fraction,Qn as IDO_ALL_PROGRAM,_l as IDO_PROGRAM_ID_V1,Vl as IDO_PROGRAM_ID_V2,El as IDO_PROGRAM_ID_V3,Fl as IDO_PROGRAM_ID_V4,vr as INSTRUCTION_PROGRAM_ID,E as InstructionType,no as JupTokenType,Tu as LIQUIDITY_FEES_DENOMINATOR,hu as LIQUIDITY_FEES_NUMERATOR,up as LIQUIDITY_VERSION_TO_SERUM_VERSION,xk as LIQUIDITY_VERSION_TO_STATE_LAYOUT,mu as LOG_B_2_X32,du as LOG_B_P_ERR_MARGIN_LOWER_X64,pu as LOG_B_P_ERR_MARGIN_UPPER_X64,jr as LOOKUP_TABLE_CACHE,jn as Layout,ce as LiquidityMath,oc as LogLevel,Ri as Logger,is as MARKET_STATE_LAYOUT_V2,Xp as MARKET_STATE_LAYOUT_V3,Ju as MARKET_VERSION_TO_STATE_LAYOUT,Js as MAX_BASE64_SIZE,Ct as MAX_SQRT_PRICE_X64,$e as MAX_TICK,An as MEMO_PROGRAM_ID,Fs as MEMO_PROGRAM_ID2,Pn as METADATA_PROGRAM_ID,Kt as MIN_SQRT_PRICE_X64,He as MIN_TICK,Rn as MODEL_DATA_PUBKEY,ec as Market,J as MathUtil,Qo as MaxU64,cu as MaxUint128,Ft as NEGATIVE_ONE,mf as NRVMint,at as ONE,Ll as OPEN_BOOK_PROGRAM,Jd as OPERATION_SEED,Jo as ObservationInfoLayout,ip as ObservationLayout,gu as OperationLayout,co as OptionLayout,gt as Owner,rf as PAIMint,jd as POOL_REWARD_VAULT_SEED,Hd as POOL_SEED,$d as POOL_TICK_ARRAY_BITMAP_SEED,Qd as POOL_VAULT_SEED,su as POSITION_SEED,ve as Percent,sa as PoolFetchType,bi as PoolInfoLayout,Qe as PoolUtils,gi as PositionInfoLayout,sp as PositionRewardInfoLayout,br as PositionUtils,Xe as Price,lT as ProtocolPositionLayout,fi as Q128,ut as Q64,nf as RAYMint,nt as RENT_PROGRAM_ID,hi as Raydium,op as RewardInfo,Hu as RoundDirection,Xi as Rounding,Ml as Router,ju as SERUM_PROGRAMID_TO_VERSION,Jr as SERUM_PROGRAM_ID_V3,Zu as SERUM_VERSION_TO_PROGRAMID,aa as SESSION_KEY,Ne as SOLMint,Tt as SOL_INFO,ek as SPL_MINT_LAYOUT,of as SRMMint,ro as STORAGE_KEY,Wr as SYSTEM_PROGRAM_ID,Z as SqrtPriceMath,Cn as StableLayout,lo as Structure,pn as SwapMath,dn as TICK_ARRAY_BITMAP_SIZE,Zd as TICK_ARRAY_SEED,_e as TICK_ARRAY_SIZE,Jk as TICK_SPACINGS,Me as TOKEN_WSOL,vt as TickArrayBitmap,bu as TickArrayBitmapExtensionLayout,yr as TickArrayBitmapExtensionUtils,fr as TickArrayLayout,ap as TickLayout,fn as TickMath,le as TickQuery,G as TickUtils,pe as Token,Te as TokenAmount,Zr as TxBuilder,hn as TxVersion,pr as U64Resolution,eh as U64_IGNORE_RANGE,so as UInt,sf as USDCMint,lf as USDHMint,af as USDTMint,Rl as UTIL1216,mo as Union,La as Voter,pd as VoterDepositEntry,dd as VoterLockup,Ra as VoterRegistrar,md as VoterVotingMintConfig,ne as WSOLMint,ri as WideBits,Mt as WrappedLayout,de as ZERO,Ws as _100_PERCENT,k as accountMeta,iy as add,Yr as addComputeBudget,Do as addLiquidityLayout,Mw as array,Po as associatedLedgerAccountLayout,ao as bits,fe as blob,qe as bool,No as calFarmRewardAmount,Up as ceilDiv,qn as checkLegacyTxSize,Un as checkV0TxSize,Zi as chunkArray,Br as claimLayout,_t as closeAccountInstruction,Fi as commonSystemAccountMeta,va as createAssociatedLedgerAccountInstruction,ae as createLogger,Ya as createPoolFeeLayout,tu as createPoolV4InstructionV2,Ik as createPoolV4Layout,Vt as createWSolAccountInstructions,Tw as cstr,qf as currencyEquals,fl as decimalToFraction,Dm as decodeBool,ey as div,Ur as divCeil,Je as dwLayout,qm as encodeBool,_g as endlessRetry,ml as eq,ww as f32,Aw as f32be,Pw as f64,kw as f64be,Io as farmAddRewardLayout,vA as farmLedgerLayoutV3_1,tr as farmLedgerLayoutV3_2,WA as farmLedgerLayoutV5_1,Ka as farmLedgerLayoutV5_2,Ca as farmLedgerLayoutV6_1,Fa as farmRewardInfoToConfig,ho as farmRewardLayout,To as farmRewardRestartLayout,ld as farmRewardTimeInfoLayout,Ba as farmStateV3Layout,Sa as farmStateV5Layout,er as farmStateV6Layout,mP as fetchMultipleFarmInfoAndUpdate,vT as fetchMultipleInfo,bb as fetchMultipleMintInfos,oe as findProgramAddress,Eo as fixedSwapInLayout,Fo as fixedSwapOutLayout,zu as floorDiv,Hr as forecastTransactionSize,qd as formatLayout,Ye as generatePubKey,be as getATAAddress,Ea as getAssociatedAuthority,ts as getAssociatedConfigId,it as getAssociatedLedgerAccount,rr as getAssociatedLedgerPoolAccount,dp as getAssociatedOpenOrders,xu as getAssociatedPoolKeys,hp as getCpmmPdaAmmConfigId,Tp as getCpmmPdaPoolId,Ku as getCreatePoolKeys,ra as getDate,Mo as getDepositEntryIndex,Za as getDxByDyBaseIn,ja as getDyByDxBaseIn,sb as getEpochInfo,ci as getFarmLedgerLayout,fd as getFarmStateLayout,pp as getLiquidityAssociatedAuthority,yn as getLiquidityAssociatedId,vh as getLiquidityFromAmounts,ry as getMax,It as getMultipleAccountsInfo,In as getMultipleAccountsInfoWithCustomFlags,Ji as getMultipleLookupTableInfo,Qk as getPdaAmmConfigId,lt as getPdaExBitmapAccount,Ip as getPdaLpMint,pi as getPdaMetadataKey,Ai as getPdaObservationId,dr as getPdaOperationAccount,ct as getPdaPersonalPositionAddress,kp as getPdaPoolAuthority,au as getPdaPoolId,uu as getPdaPoolRewardVaulId,Ho as getPdaPoolVaultId,mn as getPdaProtocolPositionAddress,we as getPdaTickArrayAddress,Su as getPdaVault,Tn as getRecentBlockHash,So as getRegistrarAddress,Yl as getSessionKey,Ja as getStablePrice,Cl as getTime,Qy as getTimestamp,Oo as getTokenOwnerRecordAddress,Qb as getTransferAmountFee,Pe as getTransferAmountFeeV2,Ro as getVoterAddress,Lo as getVoterWeightRecordAddress,Co as getVotingMintAuthority,Ko as getVotingTokenMint,Td as governanceCreateTokenOwnerRecord,jg as greedy,ll as gt,$f as gte,wa as i128,Gk as i16ToBytes,di as i32ToBytes,ii as i64,ga as i8,vo as initPoolLayout,wo as initTokenAccountInstruction,Vp as initializeMarket,Nb as intersection,oa as isDateAfter,ia as isDateBefore,yl as isDecimal,ny as isMeaningfulNumber,na as isNumber,xo as isValidFarmVersion,mr as isZero,ye as jsonInfo2PoolKeys,dP as judgeFarmType,zo as leadingZeros,ou as leastSignificantBit,Wo as liquidityStateV4Layout,Rd as liquidityStateV5Layout,Zf as lt,Jf as lte,uf as mSOLMint,mi as makeAMMSwapInstruction,eu as makeAddLiquidityInstruction,Vo as makeAddNewRewardInstruction,ki as makeClaimInstruction,us as makeClaimInstructionV4,Ru as makeCreateCpmmPoolInInstruction,Wa as makeCreateFarmInstruction,Du as makeCreateMarketInstruction,Da as makeCreatorWithdrawFarmRewardInstruction,Lu as makeDepositCpmmInInstruction,qa as makeDepositInstructionV3,Ua as makeDepositInstructionV5,Ga as makeDepositInstructionV6,CP as makeDepositTokenInstruction,LP as makeDepositWithdrawInstruction,qk as makeInitPoolInstructionV4,CB as makePurchaseInstruction,_o as makeRestartRewardInstruction,nu as makeSimulatePoolInfoInstruction,Nu as makeSwapCpmmBaseInInInstruction,Mu as makeSwapCpmmBaseOutInInstruction,Xd as makeSwapFixedInInstruction,zd as makeSwapFixedOutInstruction,ES as makeSwapInstruction,Jn as makeTransferInstruction,Ou as makeWithdrawCpmmInInstruction,ur as makeWithdrawInstructionV3,ar as makeWithdrawInstructionV5,sr as makeWithdrawInstructionV6,RP as makeWithdrawTokenInstruction,sn as minExpirationTime,$k as mockCreatePoolInfo,fu as mockV3CreatePoolInfo,Nd as modelDataInfoLayout,iu as mostSignificantBit,Hi as mul,Qi as notInnerObject,mw as ns64,gw as ns64be,da as nu64,ow as nu64be,uo as offset,Eb as offsetDateTime,Cw as option,U as parseBigNumberish,tn as parseNumberInfo,ea as parseSimulateLogToJson,Nt as parseSimulateValue,xa as parseTokenAccountResp,uk as parseTokenInfo,Jt as poolTypeV6,on as printSimulate,S as publicKey,os as purchaseLayout,ad as realFarmStateV3Layout,ud as realFarmStateV5Layout,cd as realFarmV6Layout,Us as recursivelyDecimalToFraction,Xo as removeLiquidityInstruction,qo as removeLiquidityLayout,_S as route1Instruction,VS as route2Instruction,qp as routeInstruction,Nw as rustEnum,aw as s16,dw as s16be,uw as s24,pw as s24be,De as s32,fw as s32be,cw as s40,yw as s40be,lw as s48,bw as s48be,sw as s8,q as seq,jp as setLoggerLevel,dl as shakeFractionDecimal,$s as simulateMultipleInstruction,Dk as simulatePoolInfoInstruction,hl as simulateTransaction,Ys as sleep,kn as solToWSol,mk as solToWSolToken,Ht as splAccountLayout,zs as splitNumber,cf as stSOLMint,Ow as str,L as struct,ty as sub,Lw as tagged,zi as tenExponential,pl as toBN,Tl as toBuffer,Xs as toFraction,jf as toFractionWithDecimals,Ty as toPercent,za as toToken,lk as toTokenAmount,ck as toTokenInfo,Iy as toTokenPrice,xy as toTotalPrice,qs as toUsdCurrency,Yo as trailingZeros,Wi as tryParsePublicKey,Y as u128,Bt as u16,ru as u16ToBytes,ew as u16be,Zg as u24,tw as u24be,ze as u32,Xk as u32ToBytes,nw as u32be,Jg as u40,rw as u40be,$g as u48,iw as u48be,w as u64,V as u8,_w as union,LK as unionArr,hw as unionLayoutDiscriminator,_b as uniq,yd as updateFarmPoolInfo,$r as updateReqHistory,Iw as utf8,vi as validateAndParsePublicKey,Bo as validateFarmRewards,Rw as vec,Um as vecU8,xd as voterStakeRegistryCreateDepositEntry,Id as voterStakeRegistryCreateVoter,Pd as voterStakeRegistryDeposit,kd as voterStakeRegistryUpdateVoterWeightRecord,hd as voterStakeRegistryWithdraw,dk as wSolToSolToken,ko as withdrawRewardLayout,Mb as xor,Vw as zeros};
1
+ var tc=Object.defineProperty,nc=Object.defineProperties;var rc=Object.getOwnPropertyDescriptors;var Lr=Object.getOwnPropertySymbols;var ws=Object.prototype.hasOwnProperty,As=Object.prototype.propertyIsEnumerable;var gs=(r,e,t)=>e in r?tc(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,N=(r,e)=>{for(var t in e||(e={}))ws.call(e,t)&&gs(r,t,e[t]);if(Lr)for(var t of Lr(e))As.call(e,t)&&gs(r,t,e[t]);return r},D=(r,e)=>nc(r,rc(e));var Ie=(r,e)=>{var t={};for(var n in r)ws.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&Lr)for(var n of Lr(r))e.indexOf(n)<0&&As.call(r,n)&&(t[n]=r[n]);return t};import Hl from"axios";import{get as Ci,set as Ps}from"lodash";import ks from"dayjs";import ic from"dayjs/plugin/utc";ks.extend(ic);var oc=(i=>(i[i.Error=0]="Error",i[i.Warning=1]="Warning",i[i.Info=2]="Info",i[i.Debug=3]="Debug",i))(oc||{}),Ri=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 ks().utc().format("YYYY/MM/DD HH:mm:ss UTC")}get moduleName(){return this.name}isLogLevel(e){return e<=this.logLevel}error(...e){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...e),this):this}logWithError(...e){let t=e.map(n=>typeof n=="object"?JSON.stringify(n):n).join(", ");throw new Error(t)}warning(...e){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...e),this):this}info(...e){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...e),this):this}debug(...e){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...e),this):this}},Li={},hs={};function ae(r){let e=Ci(Li,r);if(!e){let t=Ci(hs,r);e=new Ri({name:r,logLevel:t}),Ps(Li,r,e)}return e}function jp(r,e){Ps(hs,r,e);let t=Ci(Li,r);t&&(t.level=e)}import{PublicKey as wl}from"@solana/web3.js";import Al from"bn.js";import bl from"big.js";import zt from"bn.js";import he from"bn.js";var gn=9e15,Xt=1e9,Oi="0123456789abcdef",Nr="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Mr="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Ni={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-gn,maxE:gn,crypto:!1},Bs,Lt,$=!0,Vr="[DecimalError] ",Gt=Vr+"Invalid argument: ",Ss=Vr+"Precision limit exceeded",Ks=Vr+"crypto unavailable",Cs="[object Decimal]",Ge=Math.floor,Oe=Math.pow,sc=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,ac=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,uc=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Rs=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,bt=1e7,Q=7,cc=9007199254740991,lc=Nr.length-1,Mi=Mr.length-1,O={toStringTag:Cs};O.absoluteValue=O.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),z(r)};O.ceil=function(){return z(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(Gt+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())+Q,n.rounding=1,t=mc(n,_s(n,t)),n.precision=r,n.rounding=e,z(Lt==2||Lt==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($=!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=Ge((r+1)/3)-(r%3==(r<0?-1:2)),o==1/0?t="5e"+r:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+r),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(r=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=Ae(c.plus(l).times(a),c.plus(u),s+2,1),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&&(z(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")&&(z(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return $=!0,z(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-Ge(this.e/Q))*Q,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};O.dividedBy=O.div=function(r){return Ae(this,new this.constructor(r))};O.dividedToIntegerBy=O.divToInt=function(r){var e=this,t=e.constructor;return z(Ae(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 z(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/Fr(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 z(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/Fr(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,z(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,Ae(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,$=!1,t=t.times(t).minus(1).sqrt().plus(t),$=!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,$=!1,t=t.times(t).plus(1).sqrt().plus(t),$=!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?z(new o(i),r,e,!0):(o.precision=t=n-i.e,i=Ae(i.plus(1),new o(1).minus(i),t+r,1),o.precision=r+4,o.rounding=1,i=i.ln(),o.precision=r,o.rounding=e,i.times(.5))):new o(NaN)};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,d=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=Mi)return s=yt(l,m+4,d).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=Mi)return s=yt(l,m+4,d).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/Q+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for($=!1,e=Math.ceil(a/Q),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)),$=!0,z(s,l.precision=m,l.rounding=d,!0)};O.isFinite=function(){return!!this.d};O.isInteger=O.isInt=function(){return!!this.d&&Ge(this.e/Q)>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,d=l.rounding,p=5;if(r==null)r=new l(10),e=!0;else{if(r=new l(r),t=r.d,r.s<0||!t||!t[0]||r.eq(1))return new l(NaN);e=r.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(i=t[0];i%10===0;)i/=10;o=i!==1}if($=!1,a=m+p,s=Ut(c,a),n=e?_r(l,a+10):Ut(r,a),u=Ae(s,n,a,1),En(u.d,i=m,d))do if(a+=10,s=Ut(c,a),n=e?_r(l,a+10):Ut(r,a),u=Ae(s,n,a,1),!o){+Fe(u.d).slice(i+1,i+15)+1==1e14&&(u=z(u,m+1,0));break}while(En(u.d,i+=10,d));return $=!0,z(u,m,d)};O.minus=O.sub=function(r){var e,t,n,i,o,s,a,u,c,l,m,d,p=this,y=p.constructor;if(r=new y(r),!p.d||!r.d)return!p.s||!r.s?r=new y(NaN):p.d?r.s=-r.s:r=new y(r.d||p.s!==r.s?p:NaN),r;if(p.s!=r.s)return r.s=-r.s,p.plus(r);if(c=p.d,d=r.d,a=y.precision,u=y.rounding,!c[0]||!d[0]){if(d[0])r.s=-r.s;else if(c[0])r=new y(p);else return new y(u===3?-0:0);return $?z(r,a,u):r}if(t=Ge(r.e/Q),l=Ge(p.e/Q),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=d.length):(e=d,t=l,s=c.length),n=Math.max(Math.ceil(a/Q),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=d.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=d[n]){m=c[n]<d[n];break}o=0}for(m&&(e=c,c=d,d=e,r.s=-r.s),s=c.length,n=d.length-s;n>0;--n)c[s++]=0;for(n=d.length;n>o;){if(c[--n]<d[n]){for(i=n;i&&c[--i]===0;)c[i]=bt-1;--c[i],c[n]+=bt}c[n]-=d[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(r.d=c,r.e=Er(c,t),$?z(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]?z(new n(t),n.precision,n.rounding):($=!1,n.modulo==9?(e=Ae(t,r.abs(),0,3,1),e.s*=r.s):e=Ae(t,r,0,n.modulo,1),e=e.times(r),$=!0,t.minus(e))};O.naturalExponential=O.exp=function(){return _i(this)};O.naturalLogarithm=O.ln=function(){return Ut(this)};O.negated=O.neg=function(){var r=new this.constructor(this);return r.s=-r.s,z(r)};O.plus=O.add=function(r){var e,t,n,i,o,s,a,u,c,l,m=this,d=m.constructor;if(r=new d(r),!m.d||!r.d)return!m.s||!r.s?r=new d(NaN):m.d||(r=new d(r.d||m.s===r.s?m:NaN)),r;if(m.s!=r.s)return r.s=-r.s,m.minus(r);if(c=m.d,l=r.d,a=d.precision,u=d.rounding,!c[0]||!l[0])return l[0]||(r=new d(m)),$?z(r,a,u):r;if(o=Ge(m.e/Q),n=Ge(r.e/Q),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/Q),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=Er(c,n),$?z(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(Gt+r);return t.d?(e=Ls(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};O.round=function(){var r=this,e=r.constructor;return z(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())+Q,n.rounding=1,t=pc(n,_s(n,t)),n.precision=r,n.rounding=e,z(Lt>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($=!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=Ge((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(o=n,n=o.plus(Ae(s,o,t+2,1)).times(.5),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&&(z(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")&&(z(n,u+1,1),r=!n.times(n).eq(s));break}return $=!0,z(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=Ae(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,z(Lt==2||Lt==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,d=l.d,p=(r=new m(r)).d;if(r.s*=l.s,!d||!d[0]||!p||!p[0])return new m(!r.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?r.s/0:r.s*0);for(t=Ge(l.e/Q)+Ge(r.e/Q),u=d.length,c=p.length,u<c&&(o=d,d=p,p=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,i=u+n;i>n;)a=o[i]+p[n]*d[i-n-1]+e,o[i--]=a%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=Er(o,t),$?z(r,m.precision,m.rounding):r};O.toBinary=function(r,e){return Ei(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,Xt),e===void 0?e=n.rounding:tt(e,0,8),z(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,Xt),e===void 0?e=i.rounding:tt(e,0,8),n=z(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,Xt),e===void 0?e=o.rounding:tt(e,0,8),n=z(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,d,p=this,y=p.d,f=p.constructor;if(!y)return new f(p);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=Ls(y)-p.e-1,s=o%Q,e.d[0]=Oe(10,s<0?Q+s:s),r==null)r=o>0?e:c;else{if(a=new f(r),!a.isInt()||a.lt(c))throw Error(Gt+a);r=a.gt(e)?o>0?e:c:a}for($=!1,a=new f(Fe(y)),l=f.precision,f.precision=o=y.length*Q*2;m=Ae(a,e,0,1,1),i=t.plus(m.times(n)),i.cmp(r)!=1;)t=n,n=i,i=c,c=u.plus(m.times(i)),u=i,i=e,e=a.minus(m.times(i)),a=i;return i=Ae(r.minus(t),n,0,1,1),u=u.plus(i.times(c)),t=t.plus(i.times(n)),u.s=c.s=p.s,d=Ae(c,n,o,1).minus(p).abs().cmp(Ae(u,t,o,1).minus(p).abs())<1?[c,n]:[u,t],f.precision=l,$=!0,d};O.toHexadecimal=O.toHex=function(r,e){return Ei(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]?($=!1,t=Ae(t,r,0,e,1).times(r),$=!0,z(t)):(r.s=t.s,t=r),t};O.toNumber=function(){return+this};O.toOctal=function(r,e){return Ei(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 z(a,n,o);if(e=Ge(r.e/Q),e>=r.d.length-1&&(t=c<0?-c:c)<=cc)return i=Os(u,a,t,n),r.s<0?new u(1).div(i):z(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)?Ge(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):($=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),i=_i(r.times(Ut(a,n+t)),n),i.d&&(i=z(i,n+5,1),En(i.d,n,o)&&(e=n+10,i=z(_i(r.times(Ut(a,e+t)),e),e+5,1),+Fe(i.d).slice(n+1,n+15)+1==1e14&&(i=z(i,n+1,0)))),i.s=s,$=!0,u.rounding=o,z(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,Xt),e===void 0?e=i.rounding:tt(e,0,8),n=z(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,Xt),e===void 0?e=n.rounding:tt(e,0,8)),z(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 z(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=Q-n.length,t&&(o+=qt(t)),o+=n;s=r[e],n=s+"",t=Q-n.length,t&&(o+=qt(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(Gt+r)}function En(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=Q,i=0):(i=Math.ceil((e+1)/Q),e%=Q),o=Oe(10,Q-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 Or(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]+=Oi.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 mc(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/Fr(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 Ae=function(){function r(n,i,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*i+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,i,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=i[a]){u=n[a]>i[a]?1:-1;break}return u}function t(n,i,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<i[o]?1:0,n[o]=a*s+n[o]-i[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,i,o,s,a,u){var c,l,m,d,p,y,f,b,g,P,A,T,h,I,B,x,K,M,F,H,v=n.constructor,j=n.s==i.s?1:-1,ee=n.d,se=i.d;if(!ee||!ee[0]||!se||!se[0])return new v(!n.s||!i.s||(ee?se&&ee[0]==se[0]:!se)?NaN:ee&&ee[0]==0||!se?j*0:j/0);for(u?(p=1,l=n.e-i.e):(u=bt,p=Q,l=Ge(n.e/p)-Ge(i.e/p)),F=se.length,K=ee.length,g=new v(j),P=g.d=[],m=0;se[m]==(ee[m]||0);m++);if(se[m]>(ee[m]||0)&&l--,o==null?(I=o=v.precision,s=v.rounding):a?I=o+(n.e-i.e)+1:I=o,I<0)P.push(1),y=!0;else{if(I=I/p+2|0,m=0,F==1){for(d=0,se=se[0],I++;(m<K||d)&&I--;m++)B=d*u+(ee[m]||0),P[m]=B/se|0,d=B%se|0;y=d||m<K}else{for(d=u/(se[0]+1)|0,d>1&&(se=r(se,d,u),ee=r(ee,d,u),F=se.length,K=ee.length),x=F,A=ee.slice(0,F),T=A.length;T<F;)A[T++]=0;H=se.slice(),H.unshift(0),M=se[0],se[1]>=u/2&&++M;do d=0,c=e(se,A,F,T),c<0?(h=A[0],F!=T&&(h=h*u+(A[1]||0)),d=h/M|0,d>1?(d>=u&&(d=u-1),f=r(se,d,u),b=f.length,T=A.length,c=e(f,A,b,T),c==1&&(d--,t(f,F<b?H:se,b,u))):(d==0&&(c=d=1),f=se.slice()),b=f.length,b<T&&f.unshift(0),t(A,f,T,u),c==-1&&(T=A.length,c=e(se,A,F,T),c<1&&(d++,t(A,F<T?H:se,T,u))),T=A.length):c===0&&(d++,A=[0]),P[m++]=d,c&&A[0]?A[T++]=ee[x]||0:(A=[ee[x]],T=1);while((x++<K||A[0]!==void 0)&&I--);y=A[0]!==void 0}P[0]||P.shift()}if(p==1)g.e=l,Bs=y;else{for(m=1,d=P[0];d>=10;d/=10)m++;g.e=m+l*p-1,z(g,a?o+g.e+1:o,s,y)}return g}}();function z(r,e,t,n){var i,o,s,a,u,c,l,m,d,p=r.constructor;e:if(e!=null){if(m=r.d,!m)return r;for(i=1,a=m[0];a>=10;a/=10)i++;if(o=e-i,o<0)o+=Q,s=e,l=m[d=0],u=l/Oe(10,i-s-1)%10|0;else if(d=Math.ceil((o+1)/Q),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=u=0,i=1,o%=Q,s=o-Q+1}else break e;else{for(l=a=m[d],i=1;a>=10;a/=10)i++;o%=Q,s=o-Q+i,u=s<0?0:l/Oe(10,i-s-1)%10|0}if(n=n||e<0||m[d+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[d-1])%10&1||t==(r.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=r.e+1,m[0]=Oe(10,(Q-e%Q)%Q),r.e=-e||0):m[0]=r.e=0,r;if(o==0?(m.length=d,a=1,d--):(m.length=d+1,a=Oe(10,Q-o),m[d]=s>0?(l/Oe(10,i-s)%Oe(10,s)|0)*a:0),c)for(;;)if(d==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(r.e++,m[0]==bt&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=bt)break;m[d--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return $&&(r.e>p.maxE?(r.d=null,r.e=NaN):r.e<p.minE&&(r.e=0,r.d=[0])),r}function ht(r,e,t){if(!r.isFinite())return Ms(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)+qt(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+qt(-i-1)+o,t&&(n=t-s)>0&&(o+=qt(n))):i>=s?(o+=qt(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+qt(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=qt(n))),o}function Er(r,e){var t=r[0];for(e*=Q;t>=10;t/=10)e++;return e}function _r(r,e,t){if(e>lc)throw $=!0,t&&(r.precision=t),Error(Ss);return z(new r(Nr),e,1,!0)}function yt(r,e,t){if(e>Mi)throw Error(Ss);return z(new r(Mr),e,t,!0)}function Ls(r){var e=r.length-1,t=e*Q+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 qt(r){for(var e="";r--;)e+="0";return e}function Os(r,e,t,n){var i,o=new r(1),s=Math.ceil(n/Q+4);for($=!1;;){if(t%2&&(o=o.times(e),Is(o.d,s)&&(i=!0)),t=Ge(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),Is(e.d,s)}return $=!0,o}function Ts(r){return r.d[r.d.length-1]&1}function Ns(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 _i(r,e){var t,n,i,o,s,a,u,c=0,l=0,m=0,d=r.constructor,p=d.rounding,y=d.precision;if(!r.d||!r.d[0]||r.e>17)return new d(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:0/0);for(e==null?($=!1,u=y):u=e,a=new d(.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 d(1),d.precision=u;;){if(o=z(o.times(r),u,1),t=t.times(++l),a=s.plus(Ae(o,t,u,1)),Fe(a.d).slice(0,u)===Fe(s.d).slice(0,u)){for(i=m;i--;)s=z(s.times(s),u,1);if(e==null)if(c<3&&En(s.d,u-n,p,c))d.precision=u+=10,t=o=a=new d(1),l=0,c++;else return z(s,d.precision=y,p,$=!0);else return d.precision=y,s}s=a}}function Ut(r,e){var t,n,i,o,s,a,u,c,l,m,d,p=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?($=!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),p++;o=f.e,n>1?(f=new g("0."+t),o++):f=new g(n+"."+t.slice(1))}else return c=_r(g,l+2,A).times(o+""),f=Ut(new g(n+"."+t.slice(1)),l-y).plus(c),g.precision=A,e==null?z(f,A,P,$=!0):f;for(m=f,u=s=f=Ae(f.minus(1),f.plus(1),l,1),d=z(f.times(f),l,1),i=3;;){if(s=z(s.times(d),l,1),c=u.plus(Ae(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(_r(g,l+2,A).times(o+""))),u=Ae(u,new g(p),l,1),e==null)if(En(u.d,l-y,P,a))g.precision=l+=y,c=s=f=Ae(m.minus(1),m.plus(1),l,1),d=z(f.times(f),l,1),i=a=1;else return z(u,g.precision=A,P,$=!0);else return g.precision=A,u;u=c,i+=2}}function Ms(r){return String(r.s*r.s/0)}function Vi(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)%Q,t<0&&(n+=Q),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=Q;n<i;)r.d.push(+e.slice(n,n+=Q));e=e.slice(n),n=Q-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),$&&(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 dc(r,e){var t,n,i,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Rs.test(e))return Vi(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(ac.test(e))t=16,e=e.toLowerCase();else if(sc.test(e))t=2;else if(uc.test(e))t=8;else throw Error(Gt+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=Os(n,new n(t),o,o*2)),c=Or(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=Er(c,l),r.d=c,$=!1,s&&(r=Ae(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?Oe(2,u):Fn.pow(2,u))),$=!0,r)}function pc(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/Fr(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/Q);for($=!1,u=t.times(t),a=new r(n);;){if(s=Ae(a.times(u),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=Ae(s.times(u),new r(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return $=!0,s.d.length=m+1,s}function Fr(r,e){for(var t=r;--e;)t*=r;return t}function _s(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 Lt=n?4:1,e;if(t=e.divToInt(i),t.isZero())Lt=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return Lt=Ts(t)?n?2:3:n?4:1,e;Lt=Ts(t)?n?1:4:n?3:2}return e.minus(i).abs()}function Ei(r,e,t,n){var i,o,s,a,u,c,l,m,d,p=r.constructor,y=t!==void 0;if(y?(tt(t,1,Xt),n===void 0?n=p.rounding:tt(n,0,8)):(t=p.precision,n=p.rounding),!r.isFinite())l=Ms(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(".",""),d=new p(1),d.e=l.length-s,d.d=Or(ht(d),10,i),d.e=d.d.length),m=Or(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 p(r),r.d=m,r.e=o,r=Ae(r,d,t,n,0,i),m=r.d,o=r.e,c=Bs),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+=Oi.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=Or(l,i,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=Oi.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 Is(r,e){if(r.length>e)return r.length=e,!0}function fc(r){return new this(r).abs()}function yc(r){return new this(r).acos()}function bc(r){return new this(r).acosh()}function gc(r,e){return new this(r).plus(e)}function wc(r){return new this(r).asin()}function Ac(r){return new this(r).asinh()}function Pc(r){return new this(r).atan()}function kc(r){return new this(r).atanh()}function hc(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(Ae(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(Ae(r,e,o,1)),t}function Tc(r){return new this(r).cbrt()}function Ic(r){return z(r=new this(r),r.e+1,2)}function xc(r,e,t){return new this(r).clamp(e,t)}function Bc(r){if(!r||typeof r!="object")throw Error(Vr+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,Xt,"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]=Ni[t]),(n=r[t])!==void 0)if(Ge(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(Gt+t+": "+n);if(t="crypto",i&&(this[t]=Ni[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(Ks);else this[t]=!1;else throw Error(Gt+t+": "+n);return this}function Sc(r){return new this(r).cos()}function Kc(r){return new this(r).cosh()}function Vs(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,xs(o)){c.s=o.s,$?!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++;$?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 Vi(c,o.toString())}else if(u!=="string")throw Error(Gt+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),Rs.test(o)?Vi(c,o):dc(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=Bc,i.clone=Vs,i.isDecimal=xs,i.abs=fc,i.acos=yc,i.acosh=bc,i.add=gc,i.asin=wc,i.asinh=Ac,i.atan=Pc,i.atanh=kc,i.atan2=hc,i.cbrt=Tc,i.ceil=Ic,i.clamp=xc,i.cos=Sc,i.cosh=Kc,i.div=Cc,i.exp=Rc,i.floor=Lc,i.hypot=Oc,i.ln=Nc,i.log=Mc,i.log10=Vc,i.log2=_c,i.max=Ec,i.min=Fc,i.mod=vc,i.mul=Wc,i.pow=Dc,i.random=qc,i.round=Uc,i.sign=Gc,i.sin=Xc,i.sinh=zc,i.sqrt=Yc,i.sub=Hc,i.sum=Qc,i.tan=jc,i.tanh=Zc,i.trunc=Jc,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 Cc(r,e){return new this(r).div(e)}function Rc(r){return new this(r).exp()}function Lc(r){return z(r=new this(r),r.e+1,3)}function Oc(){var r,e,t=new this(0);for($=!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 $=!0,new this(1/0);t=e}return $=!0,t.sqrt()}function xs(r){return r instanceof Fn||r&&r.toStringTag===Cs||!1}function Nc(r){return new this(r).ln()}function Mc(r,e){return new this(r).log(e)}function _c(r){return new this(r).log(2)}function Vc(r){return new this(r).log(10)}function Ec(){return Ns(this,arguments,"lt")}function Fc(){return Ns(this,arguments,"gt")}function vc(r,e){return new this(r).mod(e)}function Wc(r,e){return new this(r).mul(e)}function Dc(r,e){return new this(r).pow(e)}function qc(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:tt(r,1,Xt),n=Math.ceil(r/Q),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(Ks);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=Q,n&&r&&(i=Oe(10,Q-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-=Q)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<Q&&(t-=Q-n)}return s.e=t,s.d=a,s}function Uc(r){return z(r=new this(r),r.e+1,this.rounding)}function Gc(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function Xc(r){return new this(r).sin()}function zc(r){return new this(r).sinh()}function Yc(r){return new this(r).sqrt()}function Hc(r,e){return new this(r).sub(e)}function Qc(){var r=0,e=arguments,t=new this(e[r]);for($=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return $=!0,z(t,this.precision,this.rounding)}function jc(r){return new this(r).tan()}function Zc(r){return new this(r).tanh()}function Jc(r){return z(r=new this(r),r.e+1,1)}O[Symbol.for("nodejs.util.inspect.custom")]=O.toString;O[Symbol.toStringTag]="Decimal";var Fn=O.constructor=Vs(Ni);Nr=new Fn(Nr);Mr=new Fn(Mr);var _=Fn;import{PublicKey as qi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as $c}from"@solana/spl-token";import{PublicKey as xe,SystemProgram as Es,SYSVAR_RENT_PUBKEY as el}from"@solana/web3.js";function k({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Fi=[k({pubkey:$c,isWritable:!1}),k({pubkey:Es.programId,isWritable:!1}),k({pubkey:el,isWritable:!1})];function vi({publicKey:r,transformSol:e}){let t=Wi(r.toString());if(t instanceof xe)return e&&t.equals(Ne)?ne:t;if(e&&t.toString()===Ne.toBase58())return ne;if(typeof t=="string"){if(t===xe.default.toBase58())return xe.default;try{return new xe(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Wi(r){try{return new xe(r)}catch{return r}}var An=new xe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Fs=new xe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),nt=new xe("SysvarRent111111111111111111111111111111111"),Di=new xe("SysvarC1ock11111111111111111111111111111111"),Pn=new xe("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),vr=new xe("Sysvar1nstructions1111111111111111111111111"),Wr=Es.programId,nf=new xe("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),rf=new xe("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),of=new xe("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),sf=new xe("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),af=new xe("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),uf=new xe("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),cf=new xe("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),lf=new xe("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),mf=new xe("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),df=new xe("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),pf=new xe("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),ne=new xe("So11111111111111111111111111111111111111112"),Ne=xe.default;function kn(r){return vi({publicKey:r,transformSol:!0})}import{PublicKey as tl}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as vs}from"@solana/spl-token";var Tt={chainId:101,address:tl.default.toBase58(),programId:vs.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:vs.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 Ui=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===Ne.toBase58()||e instanceof qi&&Ne.equals(e)){this.decimals=Me.decimals,this.symbol=Me.symbol,this.name=Me.name,this.mint=new qi(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?qi.default:vi({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},pe=Ui;pe.WSOL=new Ui(D(N({},Me),{mint:Me.address}));import qr from"big.js";import il from"bn.js";import ol from"decimal.js-light";import nl from"toformat";var rl=nl,vn=rl;var Dr=ae("module/fraction"),Gi=vn(qr),Wn=vn(ol),sl={[0]:Wn.ROUND_DOWN,[1]:Wn.ROUND_HALF_UP,[2]:Wn.ROUND_UP},al={[0]:qr.roundDown,[1]:qr.roundHalfUp,[2]:qr.roundUp},te=class{constructor(e,t=new il(1)){this.numerator=U(e),this.denominator=U(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new te(this.denominator,this.numerator)}add(e){let t=e instanceof te?e:new te(U(e));return this.denominator.eq(t.denominator)?new te(this.numerator.add(t.numerator),this.denominator):new te(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof te?e:new te(U(e));return this.denominator.eq(t.denominator)?new te(this.numerator.sub(t.numerator),this.denominator):new te(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof te?e:new te(U(e));return new te(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof te?e:new te(U(e));return new te(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Dr.logWithError(`${e} is not an integer.`),e<=0&&Dr.logWithError(`${e} is not positive.`),Wn.set({precision:e+1,rounding:sl[n]});let i=new Wn(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)||Dr.logWithError(`${e} is not an integer.`),e<0&&Dr.logWithError(`${e} is negative.`),Gi.DP=e,Gi.RM=al[n]||1,new Gi(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var ul=ae("Raydium_price"),Xe=class extends te{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new te(zi(n.decimals),zi(i.decimals))}get raw(){return new te(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Xe({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&ul.logWithError("mul token not equals");let n=super.mul(t);return new Xe({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 Yi=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Dn=Yi;Dn.SOL=new Yi(Tt);function qf(r,e){return r instanceof pe&&e instanceof pe?r.equals(e):r instanceof pe||e instanceof pe?!1:r===e}import cl from"bn.js";var Ws=new te(new cl(100)),ve=class extends te{toSignificant(e=5,t,n){return this.mul(Ws).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Ws).toFixed(e,t,n)}};function Ce(r){if(r instanceof ve)return new te(r.numerator,r.denominator);if(r instanceof Xe)return r.adjusted;if(r instanceof Te)try{return Ce(r.toExact())}catch{return new te(Ke)}if(r instanceof te)return r;let e=String(r),t=tn(e);return new te(t.numerator,t.denominator)}function jf(r){var n;if(r instanceof ve)return{fr:new te(r.numerator,r.denominator)};if(r instanceof Xe)return{fr:r.adjusted};if(r instanceof Te)return{fr:Ce(r.toExact()),decimals:r.token.decimals};if(r instanceof te)return{fr:r};let e=String(r),t=tn(e);return{fr:new te(t.numerator,t.denominator),decimals:(n=t.dec)==null?void 0:n.length}}function Zf(r,e){if(r==null||e==null)return!1;let t=Ce(r),n=Ce(e);return t.sub(n).numerator,t.sub(n).numerator.lt(Ke)}function ll(r,e){if(r==null||e==null)return!1;let t=Ce(r),n=Ce(e);return t.sub(n).numerator.gt(Ke)}function Jf(r,e){if(r==null||e==null)return!1;let t=Ce(r),n=Ce(e);return t.sub(n).numerator.lte(Ke)}function $f(r,e){if(r==null||e==null)return!1;let t=Ce(r),n=Ce(e);return t.sub(n).numerator.gte(Ke)}function ml(r,e){if(r==null||e==null)return!1;let t=Ce(r),n=Ce(e);return t.sub(n).numerator.eq(Ke)}function ey(r,e){if(r==null||e==null)return;let t=Ce(r),n=Ce(e);try{return t.div(n)}catch{return t}}function ty(r,e){if(r==null||e==null)return;let t=Ce(r),n=Ce(e);return t.sub(n)}function ny(r){return r==null?!1:!ml(r,0)}function ry(r,e){return ll(e,r)?e:r}function Hi(r,e){if(r==null||e==null)return;let t=Ce(r),n=Ce(e);return t.mul(n)}function iy(r,e){if(r==null||e==null)return;let t=Ce(r),n=Ce(e);return t.add(n)}var Xi=(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))(Xi||{}),Ke=new he(0),Gs=new he(1),gy=new he(2),wy=new he(3),Ay=new he(5),nn=new he(10),Py=new he(100),ky=new he(1e3),hy=new he(1e4),Ds=9007199254740991;function U(r){let e=ae("Raydium_parseBigNumberish");if(r instanceof he)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new he(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=Ds||r<=-Ds)&&e.logWithError(`BigNumberish number overflow: ${r}`),new he(String(r))):typeof r=="bigint"?new he(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new he(0))}function zi(r){return nn.pow(U(r))}function tn(r){var a;if(r===void 0)return{denominator:"1",numerator:"0"};if(r instanceof he)return{numerator:r.toString(),denominator:"1"};if(r instanceof te)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 Ur(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 dl(r){var n;let[,e="",t=""]=(n=r.toFixed(2).match(/(-?)(\d*)\.?(\d*)/))!=null?n:[];return`${e}${t}`}function pl(r,e=0){return r instanceof he?r:new he(dl(Xs(r).mul(nn.pow(new he(String(e))))))}function Xs(r){if(r instanceof ve)return new te(r.numerator,r.denominator);if(r instanceof Xe)return r.adjusted;if(r instanceof Te)try{return Xs(r.toExact())}catch{return new te(Ke)}if(r instanceof te)return r;let e=String(r),t=tn(e);return new te(t.numerator,t.denominator)}function Ty(r,e){let{numerator:t,denominator:n}=tn(r);return new ve(new he(t),new he(n).mul(e!=null&&e.alreadyDecimaled?new he(100):new he(1)))}function Iy(r){let{token:e,numberPrice:t,decimalDone:n}=r,i=new pe({mint:"",decimals:6,symbol:"usd",name:"usd",skipMint:!0}),{numerator:o,denominator:s}=tn(t),a=n?new he(o).mul(nn.pow(new he(e.decimals))):o,u=new he(s).mul(nn.pow(new he(i.decimals)));return new Xe({baseToken:i,denominator:u.toString(),quoteToken:new pe(D(N({},e),{skipMint:!0,mint:""})),numerator:a.toString()})}function qs(r){let e=new Dn({decimals:6,symbol:"usd",name:"usd"}),t=pl(Hi(r,10**e.decimals));return new rn(e,t)}function xy(r,e){return qs(!e||!r?0:Hi(r,e))}function fl(r){if(r==null)return;let{numerator:e,denominator:t}=tn(r.toString());return new te(e,t)}function yl(r){return r instanceof _}function Us(r){return yl(r)?fl(r):Array.isArray(r)?r.map(e=>Us(e)):Qi(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,Us(t)])):r}var gl=ae("Raydium_amount"),Gr=vn(bl);function zs(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")):gl.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var Te=class extends te{constructor(t,n,i=!0,o){let s=new zt(0),a=nn.pow(new zt(t.decimals));if(i)s=U(n);else{let u=new zt(0),c=new zt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=zs(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 Te(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Te(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 Gr.DP=this.token.decimals,new Gr(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}},rn=class extends te{constructor(t,n,i=!0,o){let s=new zt(0),a=nn.pow(new zt(t.decimals));if(i)s=U(n);else{let u=new zt(0),c=new zt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=zs(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 Gr.DP=this.currency.decimals,new Gr(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};async function Ys(r){new Promise(e=>setTimeout(e,r))}function Qy(){return new Date().getTime()}function Qi(r){return typeof r=="object"&&r!==null&&![pe,Te,wl,te,Al,Xe,ve].some(e=>typeof e=="object"&&r instanceof e)}function ye(r){return typeof r=="string"?Wi(r):Array.isArray(r)?r.map(e=>ye(e)):Qi(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,ye(t)])):r}import{PublicKey as Gn,sendAndConfirmTransaction as Xn,Transaction as zn,TransactionMessage as Yn,VersionedTransaction as Hn}from"@solana/web3.js";import Kl from"axios";var hn=(t=>(t[t.V0=0]="V0",t[t.LEGACY=1]="LEGACY",t))(hn||{}),E={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 Hs,Transaction as zr,TransactionMessage as Pl,Keypair as js,VersionedTransaction as Zs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as kl}from"@solana/spl-token";var Ot=ae("Raydium_txUtil"),Js=1644;function Yr(r){let e=[],t=[];return r.microLamports&&(e.push(Hs.setComputeUnitPrice({microLamports:r.microLamports})),t.push(E.SetComputeUnitPrice)),r.units&&(e.push(Hs.setComputeUnitLimit({units:r.units})),t.push(E.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Tn(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 Hr(r,e){r.length<1&&Ot.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Ot.logWithError(`no signers provided:, ${e.toString()}`);let t=new zr;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 $s(r,e,t,n=!0){let i=new Qs("RaydiumSimuLateTransaction11111111111111111"),o=[],s=new zr;s.feePayer=i;for(let c of e)Hr([...s.instructions,c],[i])||(o.push(s),s=new zr,s.feePayer=i),s.add(c);s.instructions.length>0&&o.push(s);let a=[];try{if(a=await hl(r,o,n),a.find(c=>c.err!==null))throw Error("rpc simulateTransaction error")}catch(c){c instanceof Error&&Ot.logWithError("failed to simulate for instructions","RPC_ERROR",{message:c.message})}let u=[];for(let c of a)if(Ot.debug("simulate result:",c),c.logs){let l=c.logs.filter(m=>m&&m.includes(t));Ot.debug("filteredLog:",u),l.length||Ot.logWithError("simulate log not match keyword","keyword",t),u.push(...l)}return u}function ea(r,e){let t=r.match(/{["\w:,]+}/g);return!t||t.length!==1?Ot.logWithError(`simulate log fail to match json, keyword: ${e}`):t[0]}function Nt(r,e){let n=new RegExp(`"${e}":(\\d+)`,"g").exec(r);return!n||n.length!==2?Ot.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 hl(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(),p=c._serialize(m).toString("base64");o.push(p)}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&&Ot.logWithError("failed to get info for multiple accounts","RPC_ERROR",{message:i.message})}return n}function qn({instructions:r,payer:e,signers:t}){return Hr(r,[e,...t])}function Un({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=js.generate().publicKey.toString()}){let o=new Pl({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Zs(o).serialize()).toString("base64").length<Js}catch{return!1}}var Xr={time:0,data:void 0};async function sb(r){if(!Xr.data||(Date.now()-Xr.time)/1e3>30){let e=await r.getEpochInfo();return Xr={time:Date.now(),data:e},e}else return Xr.data}var Tl=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 zr&&(t.recentBlockhash||(t.recentBlockhash=kl.toBase58()),t.feePayer||(t.feePayer=js.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof Zs&&(n=Tl(n));let i=n.toString("base64");e.push(i)}),console.log("simulate tx string:",e),e}import{PublicKey as ta,AddressLookupTableAccount as Qr}from"@solana/web3.js";import{PublicKey as Il}from"@solana/web3.js";import{getTransferFeeConfig as xl,unpackMint as Bl}from"@solana/spl-token";var ji=ae("Raydium_accountInfo_util");async function It(r,e,t){let{batchRequest:n,commitment:i="confirmed"}=N({batchRequest:!1},t),o=Zi(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let m=r._buildArgs([l.map(d=>d.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=Zi(a,10);s=(await(await Promise.all(u.map(async l=>await r._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&ji.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.error.message}`),l.result.value.map(m=>{if(m){let{data:d,executable:p,lamports:y,owner:f,rentEpoch:b}=m;return d.length!==2&&d[1]!=="base64"&&ji.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(d[0],"base64"),executable:p,lamports:y,owner:new Il(f),rentEpoch:b}}return null})))}else try{s=await Promise.all(o.map(a=>r.getMultipleAccountsInfo(a,i)))}catch(a){a instanceof Error&&ji.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function In(r,e,t){let n=await It(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>D(N({},i),{accountInfo:n[o]}))}var Sl=(n=>(n[n.Uninitialized=0]="Uninitialized",n[n.Mint=1]="Mint",n[n.Account=2]="Account",n))(Sl||{}),yb=1;async function bb({connection:r,mints:e}){var i,o;if(e.length===0)return{};let t=await In(r,e.map(s=>({pubkey:s}))),n={};for(let s of t){let a=Bl(s.pubkey,s.accountInfo,(i=s.accountInfo)==null?void 0:i.owner);n[s.pubkey.toString()]=D(N({},a),{feeConfig:(o=xl(a))!=null?o:void 0})}return n}async function Ji({connection:r,address:e}){let t=await It(r,[...new Set(e.map(i=>i.toString()))].map(i=>new ta(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],s=e[i];if(!o)continue;let a=new Qr({key:s,state:Qr.deserialize(o.data)});n[s.toString()]=a,jr[s.toString()]=a}return n}var jr={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Qr({key:new ta("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Qr.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 Zr=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 Kl.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}=Yr(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!==Gn.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(N({},t||{})):this.build(t)}build(e){let t=new zn;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 Tn(this.connection);if(t.recentBlockhash=s,this.signers.length&&t.sign(...this.signers),on([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await Xn(this.connection,t,this.signers.find(u=>u.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:o}),signedTx:t};if(this.signAllTransactions){let u=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(u[0].serialize(),{skipPreflight:o}),signedTx:u[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),o=t.filter(c=>c.transaction.instructions.length>0),s=[i,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return{builder:this,transactions:s,signers:a,instructionTypes:u,execute:async c=>{var f;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=c||{},y=d!=null?d:await Tn(this.connection);if((f=this.owner)!=null&&f.isKeyPair){if(l){let b=[];for(let g of s){let P=await Xn(this.connection,g,this.signers.find(A=>A.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:p});b.push(P)}return{txIds:b,signedTxs:s}}return{txIds:await await Promise.all(s.map(async(b,g)=>(b.recentBlockhash=y,await Xn(this.connection,b,a[g].find(P=>P.publicKey.equals(this.owner.publicKey))?a[g]:[...a[g],this.owner.signer],{skipPreflight:p})))),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=[],T=async()=>{if(!g[P])return;let h=await this.connection.sendRawTransaction(g[P].serialize(),{skipPreflight:p});A.push({txId:h,status:"sent",signedTx:g[P]}),m==null||m([...A]),P++,this.connection.onSignature(h,I=>{let B=A.findIndex(x=>x.txId===h);B>-1&&(A[B].status=I.err?"error":"success"),m==null||m([...A]),I.err||T()},"processed"),this.connection.getSignatureStatus(h)};return await T(),{txIds:A.map(h=>h.txId),signedTxs:g}}else{let P=[];for(let A=0;A<g.length;A+=1){let T=await this.connection.sendRawTransaction(g[A].serialize(),{skipPreflight:p});P.push(T)}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 d=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i}=d,o=Ie(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=N(N({},this.cluster==="devnet"?{}:jr),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let p of a)s[p]===void 0&&u.push(new Gn(p));let c=await Ji({connection:this.connection,address:u});for(let[p,y]of Object.entries(c))s[p]=y;let l=new Yn({payerKey:this.feePayer,recentBlockhash:i?Gn.default.toBase58():await Tn(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new Hn(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async p=>{var b;let{recentBlockHash:y,skipPreflight:f=!0}=p||{};if(y&&(m.message.recentBlockhash=y),on([m]),(b=this.owner)!=null&&b.isKeyPair){this.signers.find(T=>T.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:d,skipPreflight:p=!0}=c||{};if(d&&s.forEach(f=>f.message.recentBlockhash=d),on(s),(y=this.owner)!=null&&y.isKeyPair){let{lastValidBlockHeight:f,blockhash:b}=await this.connection.getLatestBlockhash();if(s.forEach((g,P)=>{a[P].find(A=>A.publicKey.equals(this.owner.publicKey))||g.sign([this.owner.signer])}),l){let g=[];for(let P of s){let A=await this.connection.sendTransaction(P,{skipPreflight:p}),{lastValidBlockHeight:T,blockhash:h}=await this.connection.getLatestBlockhash();await this.connection.confirmTransaction({blockhash:h,lastValidBlockHeight:T,signature:A},"confirmed"),g.push(A)}return{txIds:g,signedTxs:s}}return{txIds:await Promise.all(s.map(async g=>{let P=await this.connection.sendTransaction(g,{skipPreflight:p});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:p});g.push({txId:A,status:"sent",signedTx:f[b]}),m==null||m([...g]),b++,this.connection.onSignature(A,T=>{let h=g.findIndex(I=>I.txId===A);h>-1&&(g[h].status=T.err?"error":"success"),m==null||m([...g]),T.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:p});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=Ie(c,["computeBudgetConfig"]),i=t?Yr(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,m)=>D(N({},l),{[m.publicKey.toBase58()]:m}),{}),s=[],a=[],u=[];if(this.allInstructions.forEach(l=>{let m=[...u,l],d=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 Gn(f));if(u.length<12&&qn({instructions:d,payer:this.feePayer,signers:y})||qn({instructions:m,payer:this.feePayer,signers:y}))u.push(l);else{if(u.length===0)throw Error("item ins too big");qn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:y})?s.push(new zn().add(...i.instructions,...u)):s.push(new zn().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(d=>d.keys.filter(p=>p.isSigner).map(p=>p.pubkey.toString())).flat()).values()].map(d=>o[d]).filter(d=>d!==void 0);qn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(d=>d.publicKey)})?s.push(new zn().add(...i.instructions,...u)):s.push(new zn().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:d,recentBlockHash:p,skipPreflight:y=!0}=l||{},f=p!=null?p:await Tn(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){if(m){let g=[];for(let P of s){let A=await Xn(this.connection,P,this.signers.find(T=>T.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:y});g.push(A)}return{txIds:g,signedTxs:s}}return{txIds:await Promise.all(s.map(async(g,P)=>await Xn(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=[],T=async()=>{if(!g[P])return;let h=await this.connection.sendRawTransaction(g[P].serialize(),{skipPreflight:y});A.push({txId:h,status:"sent",signedTx:g[P]}),d==null||d([...A]),P++,this.connection.onSignature(h,I=>{let B=A.findIndex(x=>x.txId===h);B>-1&&(A[B].status=I.err?"error":"success"),d==null||d([...A]),I.err||T()},"processed"),this.connection.getSignatureStatus(h)};return await T(),{txIds:A.map(h=>h.txId),signedTxs:g}}else{let P=[];for(let A=0;A<g.length;A+=1){let T=await this.connection.sendRawTransaction(g[A].serialize(),{skipPreflight:y});P.push(T)}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=Ie(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=N(N({},this.cluster==="devnet"?{}:jr),n),a=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let g of a)s[g]===void 0&&u.push(new Gn(g));let c=await Ji({connection:this.connection,address:u});for(let[g,P]of Object.entries(c))s[g]=P;let l=t?Yr(t):{instructions:[],instructionTypes:[]},m=await Tn(this.connection),d=this.signers.reduce((g,P)=>D(N({},g),{[P.publicKey.toBase58()]:P}),{}),p=[],y=[],f=[];if(this.allInstructions.forEach(g=>{let P=[...f,g],A=t?[...l.instructions,...P]:P;if(f.length<12&&Un({instructions:A,payer:this.feePayer,lookupTableAddressAccount:s})||Un({instructions:P,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(g);else{if(f.length===0)throw Error("item ins too big");let T={};for(let h of[...new Set(a)])s[h]!==void 0&&(T[h]=s[h]);if(t&&Un({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let h=new Yn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Hn(h))}else{let h=new Yn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Hn(h))}y.push(Array.from(new Set(f.map(h=>h.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat())).map(h=>d[h]).filter(h=>h!==void 0)),f=[g]}}),f.length>0){let P=[...new Set(f.map(A=>A.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat()).values()].map(A=>d[A]).filter(A=>A!==void 0);if(t&&Un({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let A=new Yn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Hn(A))}else{let A=new Yn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Hn(A))}y.push(P)}return{builder:this,transactions:p,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async g=>{var I;let{sequentially:P,onTxUpdate:A,recentBlockHash:T,skipPreflight:h=!0}=g||{};if(p.map(async(B,x)=>{y[x].length&&B.sign(y[x]),T&&(B.message.recentBlockhash=T)}),on(p),(I=this.owner)!=null&&I.isKeyPair){let{lastValidBlockHeight:B,blockhash:x}=await this.connection.getLatestBlockhash();if(p.forEach((K,M)=>{y[M].find(F=>F.publicKey.equals(this.owner.publicKey))||K.sign([this.owner.signer])}),P){let K=[];for(let M of p){let F=await this.connection.sendTransaction(M,{skipPreflight:h}),{lastValidBlockHeight:H,blockhash:v}=await this.connection.getLatestBlockhash();await this.connection.confirmTransaction({blockhash:v,lastValidBlockHeight:H,signature:F},"confirmed"),K.push(F)}return{txIds:K,signedTxs:p}}return{txIds:await Promise.all(p.map(async K=>{let M=await this.connection.sendTransaction(K,{skipPreflight:h});return await this.connection.confirmTransaction({blockhash:x,lastValidBlockHeight:B,signature:M},"confirmed"),M})),signedTxs:p}}if(this.signAllTransactions){let B=await this.signAllTransactions(p);if(P){let x=0,K=[],M=async()=>{if(!B[x])return;let F=await this.connection.sendTransaction(B[x],{skipPreflight:h});K.push({txId:F,status:"sent",signedTx:B[x]}),A==null||A([...K]),x++,this.connection.onSignature(F,H=>{let v=K.findIndex(j=>j.txId===F);v>-1&&(K[v].status=H.err?"error":"success"),A==null||A([...K]),H.err||M()},"processed"),this.connection.getSignatureStatus(F)};return M(),{txIds:[],signedTxs:B}}else{let x=[];for(let K=0;K<B.length;K+=1){let M=await this.connection.sendTransaction(B[K],{skipPreflight:h});x.push(M)}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 Zi(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}function Nb(r,...e){return r.filter(t=>e.every(n=>n.includes(t)))}function Mb(r,...e){return r.filter(t=>e.every(n=>!n.includes(t)))}function _b(r){return[...new Set(r)]}var na=r=>typeof r=="number",ra=r=>r?new Date(r):new Date,Cl=r=>ra(r).getTime();function ia(r,e,t){let n=na(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()<=n}function oa(r,e,t){let n=na(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()>n}function Eb(r,e){let n=Cl(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 ra(n)}import{PublicKey as me}from"@solana/web3.js";var $i=new me("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),eo=new me("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),xn=new me("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Rl=new me("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Ll=new me("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Jr=new me("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),to=new me("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Ol=new me("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Nl=new me("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Ml=new me("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Wb=new me("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),_l=new me("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Vl=new me("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),El=new me("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Fl=new me("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),vl=new me("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Wl=new me("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Dl=new me("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),ql=new me("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Ul=new me("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Gl=new me("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),Qn={IDO_PROGRAM_ID_V1:_l,IDO_PROGRAM_ID_V2:Vl,IDO_PROGRAM_ID_V3:El,IDO_PROGRAM_ID_V4:Fl},Db={AMM_V4:to,AMM_STABLE:Ol,CLMM_PROGRAM_ID:Nl,FARM_PROGRAM_ID_V3:$i,FARM_PROGRAM_ID_V5:eo,FARM_PROGRAM_ID_V6:xn,OPEN_BOOK_PROGRAM:Ll,SERUM_PROGRAM_ID_V3:Jr,UTIL1216:Rl,Router:Ml,CREATE_CPMM_POOL_PROGRAM:vl,CREATE_CPMM_POOL_AUTH:Wl,CREATE_CPMM_POOL_FEE_ACC:Dl},qb={SERUM_MARKET:me.default,OPENBOOK_MARKET:new me("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:me.default,FarmV3:new me("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new me("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new me("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new me("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new me("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new me("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new me("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:ql,CREATE_CPMM_POOL_AUTH:Ul,CREATE_CPMM_POOL_FEE_ACC:Gl,FEE_DESTINATION_ID:new me("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as Xl}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as zl}from"@solana/spl-token";function be(r,e,t){return oe([r.toBuffer(),(t!=null?t:zl).toBuffer(),e.toBuffer()],new Xl("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import Le from"bn.js";var xt=1e4;function Qb(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=Yt(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=Yt(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=Yt(r.mul(new Le(i.transferFeeBasisPoints)),new Le(xt)),u=a.gt(o)?o:a;return{amount:r,fee:u,expirationTime:s}}}function Pe(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=D(N({},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=Yt(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=Yt(l.mul(new Le(o.transferFeeBasisPoints)),new Le(xt)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let u=Yt(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 Yt(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new Le(0))?t.add(new Le(1)):t}var no=(t=>(t.ALL="all",t.Strict="strict",t))(no||{}),sa=(s=>(s.All="all",s.Standard="standard",s.Concentrated="concentrated",s.AllFarm="allFarm",s.StandardFarm="standardFarm",s.ConcentratedFarm="concentratedFarm",s))(sa||{});var We={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",SERVICE_BASE_HOST:"https://service.raydium.io",SEND_TRANSACTION:"/send-transaction",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"},yg=N({},We);var aa="ray_tab_hash",ro="ray_req_hash",Yl=()=>{if(typeof window===void 0)return"";let r=sessionStorage.getItem(aa);return r||(r=`ray-${Date.now()}`,sessionStorage.setItem(aa,r)),r},$r=async n=>{var i=n,{logCount:r=1e3,removeLastLog:e}=i,t=Ie(i,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(s=>s());let o=JSON.parse(localStorage.getItem(ro)||"[]").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(N({},t),{time:Date.now(),session:Yl()}));try{localStorage.setItem(ro,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(ro,JSON.stringify(o)),s=!0}catch{s=!1}}return new Promise(u=>u())}return $r(D(N({},t),{logCount:r,removeLastLog:!0}))}};var Bn=ae("Raydium_Api"),io=new Map;async function _g(r,e,t=1e3){let n;for(;n==null;)try{Bn.debug(`Request ${r} through endlessRetry`),n=await e()}catch(i){Bn.error(`Request ${r} failed, retry after ${t} ms`,i),await Ys(t)}return n}var ei=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:i,urlConfigs:o}){this.cluster=e,this.urlConfigs=o||{},this.logCount=i||1e3,this.api=Hl.create({baseURL:this.urlConfigs.BASE_HOST||We.BASE_HOST,timeout:t}),this.api.interceptors.request.use(s=>{let{method:a,baseURL:u,url:c}=s;return Bn.debug(`${a==null?void 0:a.toUpperCase()} ${u}${c}`),s},s=>(Bn.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:d}=a;return n&&$r({status:c,url:`${m}${d}`,params:a.params,data:u,logCount:this.logCount}),Bn.debug(`${l==null?void 0:l.toUpperCase()} ${m}${d} ${c}`),u},s=>{let{config:a,response:u={}}=s,{status:c}=u,{method:l,baseURL:m,url:d}=a;return n&&$r({status:c,url:`${m}${d}`,params:a.params,data:s.message,logCount:this.logCount}),Bn.error(`${l.toUpperCase()} ${m}${d} ${c||s.message}`),Promise.reject(s)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||We.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||We.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||We.CHAIN_TIME)).data}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||We.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||We.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||We.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||We.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||We.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||We.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],i=t.filter(s=>io.has(s)?(n.push(io.get(s)),!1):!0),o=[];return i.length&&(o=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||We.POOL_KEY_BY_ID)+`?ids=${i.join(",")}`)).data.filter(Boolean),o.forEach(a=>{io.set(a.id,a)})),n.concat(o)}async fetchPoolByMints(e){let{mint1:t,mint2:n,type:i="all",sort:o="default",order:s="desc",page:a=1}=e,[u,c]=[t&&kn(t).toBase58(),n&&n!=="undefined"?kn(n).toBase58():""],[l,m]=c&&u>c?[c,u]:[u,c];return(await this.api.get((this.urlConfigs.POOL_SEARCH_MINT||We.POOL_SEARCH_MINT)+`?mint1=${l}&mint2=${m}&poolType=${i}&poolSortField=${o}&sortType=${s}&pageSize=100&page=${a}`)).data}async fetchFarmInfoById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_INFO||We.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||We.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||We.CHECK_AVAILABILITY)).data}};import{merge as Dp}from"lodash";var ti="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",ua="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as Ao,TOKEN_PROGRAM_ID as Zt,AccountLayout as Kn,TOKEN_2022_PROGRAM_ID as id}from"@solana/spl-token";import{PublicKey as ui,SystemProgram as od}from"@solana/web3.js";var oo=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Be=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ae(t)}createTxBuilder(e){return this.scope.checkOwner(),new Zr({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(oo(e))}logInfo(...e){this.logger.info(oo(e))}logAndCreateError(...e){let t=oo(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as Jm,createCloseAccountInstruction as $m,createTransferInstruction as ed,TOKEN_PROGRAM_ID as Sn}from"@solana/spl-token";import{PublicKey as td,SystemProgram as nd}from"@solana/web3.js";import rd from"bn.js";import{PublicKey as Ia,Keypair as Hm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Qm}from"@solana/spl-token";import jm from"bn.js";import{PublicKey as Wm}from"@solana/web3.js";import ya,{isBN as ba}from"bn.js";import{bits as Ql,BitStructure as jl,blob as Zl,Blob as Jl,cstr as $l,f32 as em,f32be as tm,f64 as nm,f64be as rm,greedy as im,Layout as om,ns64 as sm,ns64be as am,nu64 as um,nu64be as cm,offset as lm,s16 as mm,s16be as dm,s24 as pm,s24be as fm,s32 as ym,s32be as bm,s40 as gm,s40be as wm,s48 as Am,s48be as Pm,s8 as km,seq as hm,struct as Hg,Structure as Tm,u16 as Im,u16be as xm,u24 as Bm,u24be as Sm,u32 as Km,u32be as Cm,u40 as Rm,u40be as Lm,u48 as Om,u48be as Nm,u8 as Mm,UInt as _m,union as Vm,Union as Em,unionLayoutDiscriminator as Fm,utf8 as vm}from"@solana/buffer-layout";var jn=om,ca=Tm,la=Em,Qg=jl,so=_m,ma=Jl,jg=im,ni=Mm,Bt=Im,Zg=Bm,Zn=Km,Jg=Rm,$g=Om,da=um,ew=xm,tw=Sm,nw=Cm,rw=Lm,iw=Nm,ow=cm,sw=km,aw=mm,uw=pm,De=ym,cw=gm,lw=Am,mw=sm,dw=dm,pw=fm,fw=bm,yw=wm,bw=Pm,gw=am,ww=em,Aw=tm,Pw=nm,kw=rm;var pa=hm,fa=Vm,hw=Fm,fe=Zl,Tw=$l,Iw=vm,ao=Ql,uo=lm;var an=class extends jn{constructor(t,n,i){super(t,i);this.blob=fe(t),this.signed=n}decode(t,n=0){let i=new ya(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 ya(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},ri=class extends jn{constructor(t){super(8,t);this._lower=ao(Zn(),!1),this._upper=ao(Zn(),!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 N(N({},i),o)}encode(t,n,i=0){return this._lower.encode(t,n,i)+this._upper.encode(t,n,i+this._lower.span)}};function V(r){return new so(1,r)}function ze(r){return new so(4,r)}function w(r){return new an(8,!1,r)}function Y(r){return new an(16,!1,r)}function ga(r){return new an(1,!0,r)}function ii(r){return new an(8,!0,r)}function wa(r){return new an(16,!0,r)}var Mt=class extends jn{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 Mt(fe(32),e=>new Wm(e),e=>e.toBuffer(),r)}var co=class extends jn{constructor(t,n){super(-1,n);this.layout=t,this.discriminator=ni()}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 Cw(r,e){return new co(r,e)}function qe(r){return new Mt(ni(),Dm,qm,r)}function Dm(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function qm(r){return r?1:0}function Rw(r,e){let t=Zn("length"),n=L([t,q(r,uo(t,-t.span),"values")]);return new Mt(n,({values:i})=>i,i=>({values:i}),e)}function Lw(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 Mt(n,i,o=>({tag:r,data:o}),t)}function Um(r){let e=Zn("length"),t=L([e,fe(uo(e,-e.span),"data")]);return new Mt(t,({data:n})=>n,n=>({data:n}),r)}function Ow(r){return new Mt(Um(),e=>e.toString("utf-8"),e=>Buffer.from(e,"utf-8"),r)}function Nw(r,e){let t=fa(ni(),e);return r.forEach((n,i)=>t.addVariant(i,n,n.property)),t}function Mw(r,e,t){let n=L([q(r,e,"values")]);return new Mt(n,({values:i})=>i,i=>({values:i}),t)}var lo=class extends ca{decode(e,t){return super.decode(e,t)}};function L(r,e,t){return new lo(r,e,t)}var mo=class extends la{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 _w(r,e,t){return new mo(r,e,t)}var po=class extends ma{decode(e,t){let n=super.decode(e,t);if(!n.every(i=>i===0))throw new Error("nonzero padding bytes");return n}};function Vw(r){return new po(r)}function q(r,e,t){let n,i=typeof e=="number"?e:ba(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=ba(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 pa(r,i,t)}var Ht=L([S("mint"),S("owner"),w("amount"),ze("delegateOption"),S("delegate"),V("state"),ze("isNativeOption"),w("isNative"),w("delegatedAmount"),ze("closeAuthorityOption"),S("closeAuthority")]);function Gm(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function fo(r,...e){if(!Gm(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 yo(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 Aa(r,e){fo(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var si=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),wt=(r,e)=>r<<32-e|r>>>e;var Uw=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Xm(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function bo(r){return typeof r=="string"&&(r=Xm(r)),fo(r),r}var oi=class{clone(){return this._cloneInto()}},Gw={}.toString;function Pa(r){let e=n=>r().update(bo(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function zm(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 ka=(r,e,t)=>r&e^~r&t,ha=(r,e,t)=>r&e^r&t^e&t,ai=class extends oi{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=si(this.buffer)}update(e){yo(this);let{view:t,buffer:n,blockLen:i}=this;e=bo(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=si(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){yo(this),Aa(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;zm(n,i-8,BigInt(this.length*8),o),this.process(n,0);let a=si(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 Ym=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]),jt=new Uint32Array(64),go=class extends ai{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)jt[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=jt[m-15],p=jt[m-2],y=wt(d,7)^wt(d,18)^d>>>3,f=wt(p,17)^wt(p,19)^p>>>10;jt[m]=f+jt[m-7]+y+jt[m-16]|0}let{A:n,B:i,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let d=wt(a,6)^wt(a,11)^wt(a,25),p=l+d+ka(a,u,c)+Ym[m]+jt[m]|0,f=(wt(n,2)^wt(n,13)^wt(n,22))+ha(n,i,o)|0;l=c,c=u,u=a,a=s+p|0,s=o,o=i,i=n,n=p+f|0}n=n+this.A|0,i=i+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,i,o,s,a,u,c,l)}roundClean(){jt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Ta=Pa(()=>new go);var aA=ae("Raydium_Util");function xa({owner:r,solAccountResp:e,tokenAccountResp:t}){let n=[],i=[];for(let{pubkey:o,account:s}of t.value){let a=Ht.decode(s.data),{mint:u,amount:c}=a;n.push({publicKey:o,mint:u,amount:c,isAssociated:be(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:Ia.default,amount:new jm(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:i}}function Ye({fromPublicKey:r,programId:e=Qm}){let t=Hm.generate().publicKey.toBase58().slice(0,32);return{publicKey:Zm(r,t,e),seed:t}}function Zm(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=Ta(n);return new Ia(i)}function wo(r){let{mint:e,tokenAccount:t,owner:n,programId:i=Sn}=r;return Jm(t,e,n,i)}function _t(r){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:i,programId:o=Sn}=r;return $m(e,t,i,n,o)}async function Vt(r){let{connection:e,amount:t,commitment:n,payer:i,owner:o,skipCloseAccount:s}=r,a=await e.getMinimumBalanceForRentExemption(Ht.span,n),u=U(t).add(new rd(a)),c=Ye({fromPublicKey:i,programId:Sn});return{addresses:{newAccount:c.publicKey},signers:[],instructions:[nd.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:c.seed,newAccountPubkey:c.publicKey,lamports:u.toNumber(),space:Ht.span,programId:Sn}),wo({mint:new td(Me.address),tokenAccount:c.publicKey,owner:o,programId:Sn})],instructionTypes:[E.CreateAccount,E.InitAccount],endInstructionTypes:s?[]:[E.CloseAccount],endInstructions:s?[]:[_t({tokenAccount:c.publicKey,payer:i,owner:o})]}}function Jn({source:r,destination:e,owner:t,amount:n,multiSigners:i=[],tokenProgram:o=Sn}){return ed(r,e,t,BigInt(String(n)),i,o)}var $n=class extends Be{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 be(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=N(N({},{}),t),[o,s,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Zt},i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:id},i.commitment)]),{tokenAccounts:u,tokenAccountRawInfos:c}=xa({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}),t==null?void 0:t.commitment),{tokenAccounts:u,tokenAccountRawInfos:c}}async getCreatedTokenAccount({mint:t,programId:n=Zt,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,g;await this.fetchWalletTokenAccounts();let{mint:n,createInfo:i,associatedOnly:o,owner:s,notUseTokenAccount:a=!1,skipCloseAccount:u=!1,checkCreateATAOwner:c=!1}=t,l=new ui(t.tokenProgram||Zt),m=this.getAssociatedTokenAccount(n,new ui(l)),d=(a?[]:this.tokenAccountRawInfos).filter(P=>P.accountInfo.mint.equals(n)&&(!o||P.pubkey.equals(m))).sort((P,A)=>P.accountInfo.amount.lt(A.accountInfo.amount)?1:-1);if(i===void 0||d.length>0)return d.length>0?{account:d[0].pubkey}:{};let p={instructions:[],endInstructions:[],signers:[],instructionTypes:[],endInstructionTypes:[]};if(o){let P=Ao(s,m,s,n,l);if(c){let A=await this.scope.connection.getAccountInfo(m);if(A===null)(y=p.instructions)==null||y.push(P),p.instructionTypes.push(E.CreateATA);else if(!(A.owner.equals(l)&&Kn.decode(A.data).mint.equals(n)&&Kn.decode(A.data).owner.equals(s)))throw Error(`create ata check error -> mint: ${n.toString()}, ata: ${m.toString()}`)}else p.instructions.push(P),p.instructionTypes.push(E.CreateATA);if(n.equals(ne)&&i.amount){let A=await Vt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:i.payer||this.scope.ownerPubKey,amount:(f=i.amount)!=null?f:0,skipCloseAccount:u});p.instructions.push(...A.instructions||[]),p.endInstructions.push(...A.endInstructions||[]),p.instructionTypes.push(...A.instructionTypes||[]),p.endInstructionTypes.push(...A.endInstructionTypes||[]),i.amount&&(p.instructions.push(Jn({source:A.addresses.newAccount,destination:m,owner:this.scope.ownerPubKey,amount:i.amount,tokenProgram:Zt})),p.instructionTypes.push(E.TransferAmount))}return u||(p.endInstructions.push(_t({owner:s,payer:i.payer||s,tokenAccount:m,programId:l})),p.endInstructionTypes.push(E.CloseAccount)),{account:m,instructionParams:p}}else{let P=Ye({fromPublicKey:s,programId:l}),A=await this.scope.connection.getMinimumBalanceForRentExemption(Kn.span),T=od.createAccountWithSeed({fromPubkey:s,basePubkey:s,seed:P.seed,newAccountPubkey:P.publicKey,lamports:A+Number((g=(b=i.amount)==null?void 0:b.toString())!=null?g:0),space:Kn.span,programId:l});return p.instructions.push(T,wo({mint:n,tokenAccount:P.publicKey,owner:this.scope.ownerPubKey,programId:l})),p.instructionTypes.push(E.CreateAccount),p.instructionTypes.push(E.InitAccount),u||(p.endInstructions.push(_t({owner:s,payer:i.payer||s,tokenAccount:P.publicKey,programId:l})),p.endInstructionTypes.push(E.CloseAccount)),{account:P.publicKey,instructionParams:p}}}async checkOrCreateAta({mint:t,programId:n=Zt,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 Ao(s,c,s,t,n);a.instructions=[l],a.instructionTypes=[E.CreateATA],o=c}return i&&ne.toBase58()===t.toBase58()&&(a.endInstructions=[_t({owner:s,payer:s,tokenAccount:o,programId:n})],a.endInstructionTypes=[E.CloseAccount]),{pubKey:o,newInstructions:a}}async handleTokenAccount(t){let{side:n,amount:i,mint:o,programId:s=Zt,tokenAccount:a,payer:u=this.scope.ownerPubKey,bypassAssociatedCheck:c,skipCloseAccount:l,checkCreateATAOwner:m}=t,d=this.getAssociatedTokenAccount(o,s);if(new ui(ne).equals(o)){let p=await Vt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:u,amount:i,skipCloseAccount:l});return N({tokenAccount:p.addresses.newAccount},p)}else if(!a||n==="out"&&!d.equals(a)&&!c){let p=[],y=Ao(this.scope.ownerPubKey,d,this.scope.ownerPubKey,o,s);if(m){let f=await this.scope.connection.getAccountInfo(d);if(f===null)p.push(y);else if(!(f.owner.equals(Zt)&&Kn.decode(f.data).mint.equals(o)&&Kn.decode(f.data).owner.equals(this.scope.ownerPubKey)))throw Error(`create ata check error -> mint: ${o.toString()}, ata: ${d.toString()}`)}else p.push(y);return{tokenAccount:d,instructions:p,instructionTypes:[E.CreateATA]}}return{tokenAccount:a}}async processTokenAccount(t){let{mint:n,programId:i=Zt,amount:o,useSOLBalance:s,handleTokenAccount:a}=t,u,c=this.createTxBuilder();if(n.equals(new ui(ne))&&s){let l=await this.handleTokenAccount({side:"in",amount:o||0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:d}=l,p=Ie(l,["tokenAccount"]);u=d,c.addInstruction(p)}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:d}=m,p=Ie(m,["tokenAccount"]);u=d,c.addInstruction(p)}return N({tokenAccount:u},c.AllTxData)}};import{createAssociatedTokenAccountInstruction as Bd}from"@solana/spl-token";import{PublicKey as ke,SystemProgram as Sd}from"@solana/web3.js";import{PublicKey as Oa}from"@solana/web3.js";var Po=L([V("instruction")]),ko=L([V("instruction")]),sd=L([w("rewardState"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardLastUpdateTime"),w("totalReward"),w("totalRewardEmissioned"),w("rewardClaimed"),w("rewardPerSecond"),Y("accRewardPerShare"),S("rewardVault"),S("rewardMint"),S("rewardSender"),w("rewardType"),q(w(),15,"padding")]),ad=L([w("state"),w("nonce"),S("lpVault"),S("rewardVault"),S(),S(),w(),w(),w("totalReward"),Y("perShareReward"),w("lastSlot"),w("perSlotReward")]),ud=L([w("state"),w("nonce"),S("lpVault"),S("rewardVaultA"),w("totalRewardA"),Y("perShareRewardA"),w("perSlotRewardA"),V("option"),S("rewardVaultB"),fe(7),w("totalRewardB"),Y("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),S()]),cd=L([w(),w("state"),w("nonce"),w("validRewardTokenNum"),Y("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),S("lpMint"),S("lpVault"),q(sd,5,"rewardInfos"),S("creator"),S(),q(w(),32,"padding")]),Ba=new Proxy(ad,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return D(N({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(r,e,t)}}),Sa=new Proxy(ud,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return D(N({},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)}}),er=new Proxy(cd,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return D(N({},i),{version:6,rewardInfos:i.rewardInfos.map(o=>{var s;return D(N({},o),{rewardType:((s=Object.entries(Jt).find(a=>String(a[1])===o.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),ld=L([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),ho=L([V("instruction"),w("nonce"),q(ld,5,"rewardTimeInfo")]),To=L([V("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),Io=L([V("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")]),tr=L([w("state"),S("id"),S("owner"),w("deposited"),q(Y(),1,"rewardDebts"),w(""),w("voteLockedBalance"),q(w(),15)]),WA=L([w("state"),S("id"),S("owner"),w("deposited"),q(w(),2,"rewardDebts")]),Ka=L([w("state"),S("id"),S("owner"),w("deposited"),q(Y(),2,"rewardDebts"),q(w(),17)]),Ca=L([w(),w("state"),S("id"),S("owner"),w("deposited"),q(Y(),5,"rewardDebts"),q(w(),16)]),Je=L([V("instruction"),w("amount")]),md=L([S("mint"),S("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),ga("digitShift"),q(V(),7,"reserved1"),q(w(),7,"reserved2")]),Ra=L([fe(8),S("governanceProgramId"),S("realm"),S("realmGoverningTokenMint"),S("realmAuthority"),q(V(),32,"reserved1"),q(md,4,"votingMints"),ii("timeOffset"),V("bump"),q(V(),7,"reserved2"),q(w(),11,"reserved3")]),dd=L([ii("startTime"),ii("endTime"),V("kind"),q(V(),15,"reserved")]),pd=L([q(dd,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),qe("isUsed"),qe("allowClawback"),V("votingMintConfigIdx"),q(V(),29,"reserved")]),La=L([fe(8),S("voterAuthority"),S("registrar"),q(pd,32,"deposits"),V("voterBump"),V("voterWweightRecordBump"),q(V(),94,"reserved")]);var HA=ae("Raydium_farm_config"),Na=new Oa("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Ma=new Oa("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1"),_a={3:Ba,5:Sa,6:er},Va={3:tr,5:Ka,6:Ca},xo=r=>[3,5,6].indexOf(r)!==-1,Bo=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)},Jt={"Standard SPL":0,"Option tokens":1},At={[$i.toString()]:3,[eo.toString()]:5,[xn.toString()]:6};import{PublicKey as ie,SystemProgram as un,SYSVAR_RENT_PUBKEY as bd,SYSVAR_CLOCK_PUBKEY as ir,TransactionInstruction as Ve}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as gd,TOKEN_PROGRAM_ID as st,ASSOCIATED_TOKEN_PROGRAM_ID as wd}from"@solana/spl-token";import li from"bn.js";function So(r,e,t){return oe([e.toBuffer(),Buffer.from("registrar","utf8"),t.toBuffer()],r)}function Ko(r,e){return oe([e.toBuffer(),Buffer.from("voting_mint_seed","utf8")],r)}function Co(r,e){return oe([e.toBuffer()],r)}function Ro(r,e,t){return oe([e.toBuffer(),Buffer.from("voter","utf8"),t.toBuffer()],r)}function Lo(r,e,t){return oe([e.toBuffer(),Buffer.from("voter-weight-record","utf8"),t.toBuffer()],r)}function Oo(r,e,t,n){return oe([Buffer.from("governance","utf8"),e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}import rt from"bn.js";var nr=ae("Raydium.farm.util");function rr({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 Ea=({programId:r,poolId:e})=>oe([e.toBuffer()],r);function Fa(r){return{isSet:new rt(1),rewardPerSecond:U(r.perSecond),rewardOpenTime:U(r.openTime),rewardEndTime:U(r.endTime),rewardType:U(Jt[r.rewardType])}}function No(r){return U(r.endTime).sub(U(r.openTime)).mul(U(r.perSecond))}function ci(r){let e=Va[r];return e||nr.logWithError("invalid version",r),e}function fd(r){let e=_a[r];return e||nr.logWithError("invalid version",r),e}function yd(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 mP({connection:r,farmPools:e,owner:t,config:n,chainTime:i}){let o=!1,s=!1,a=new rt(10),u=[];for(let d of e){let p=ye(d);p.version===6?s=!0:o=!0,u.push({pubkey:p.id,version:p.version,key:"state",poolId:p.id},{pubkey:p.lpVault,version:p.version,key:"lpVault",poolId:p.id}),t&&u.push({pubkey:it({programId:p.programId,poolId:p.id,owner:t,version:d.version}),version:p.version,key:"ledger",poolId:p.id})}let c={},l=await In(r,u,n);for(let{pubkey:d,version:p,key:y,poolId:f,accountInfo:b}of l){let g=f.toBase58();if(c[g]=N({},c[g]),y==="state"){let P=fd(p);(!b||!b.data||b.data.length!==P.span)&&nr.logWithError(`invalid farm state account info, pools.id, ${d}`),c[g].state=P.decode(b.data)}else if(y==="lpVault")(!b||!b.data||b.data.length!==Ht.span)&&nr.logWithError(`invalid farm lp vault account info, pools.lpVault, ${d}`),c[g].lpVault=Ht.decode(b.data);else if(y==="ledger"){let P=ci(p);b&&b.data&&(b.data.length!==P.span&&nr.logWithError(`invalid farm ledger account info, ledger, ${d}`),c[g].ledger=P.decode(b.data))}}let m=s||o?await r.getSlot():0;for(let d of Object.keys(c))c[d]!==void 0&&(c[d].state=yd(c[d].state,c[d].lpVault,m,i));for(let[d,{state:p,ledger:y}]of Object.entries(c))if(y){let f=p.version===6?p.rewardMultiplier:p.rewardInfos.length===1?a.pow(new rt(9)):a.pow(new rt(15)),b=p.rewardInfos.map((g,P)=>{let A=y.rewardDebts[P];return y.deposited.mul(p.version===6?g.accRewardPerShare:g.perShareReward).div(f).sub(A)});c[d].wrapped=D(N({},c[d].wrapped),{pendingRewards:b})}return c}function dP(r,e=Date.now()){if(r.version===6){let t=r.state.rewardInfos;if(t.every(({rewardOpenTime:n})=>ia(e,n.toNumber(),{unit:"s"})))return"upcoming pool";if(t.every(({rewardEndTime:n})=>oa(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 Mo(r,e,t,n){let i=await r.getAccountInfo(e);if(i===null)throw Error("registrar info check error");let s=Ra.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=La.decode(a.data).deposits.findIndex(l=>l.isUsed&&l.votingMintConfigIdx===s);return c===-1?{index:s,isInit:!1}:{index:c,isInit:!0}}var Ad=ae("Raydium_farm_instruction"),or={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||Ad.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(Po.span);Po.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:bd,isWritable:!1})];return{instruction:new Ve({programId:i,keys:u,data:a}),instructionType:E.FarmV3CreateLedger}}function Wa(r){var n;let e=Buffer.alloc(ho.span);ho.encode({instruction:0,nonce:new li(r.nonce),rewardTimeInfo:r.rewardInfoConfig},e);let t=[...Fi,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:E.FarmV6Create}}function Da(r){let e=Buffer.alloc(ko.span);ko.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:E.FarmV6CreatorWithdraw}}function Pd(r,e,t,n,i,o,s,a,u,c,l,m,d){let p=L([V("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(p.span);p.encode({depositEntryIndex:m,amount:d},f);let b=Buffer.from([...or.voterStakeRegistryDeposit,...f]);return new Ve({keys:y,programId:r,data:b})}function kd(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([...or.voterStakeRegistryUpdateVoterWeightRecord,...s]);return new Ve({keys:o,programId:r,data:a})}function hd(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y){let f=L([V("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:d,isSigner:!1,isWritable:!1},{pubkey:vr,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({depositEntryIndex:p,amount:y},g);let P=Buffer.from([...or.voterStakeRegistryWithdraw,...g]);return new Ve({keys:b,programId:r,data:P})}function Td(r,e,t,n,i,o){let s=L([V("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 Id(r,e,t,n,i,o,s,a){let u=L([V("voterBump"),V("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([...or.voterStakeRegistryCreateVoter,...l]);return new Ve({keys:c,programId:r,data:m})}function xd(r,e,t,n,i,o,s,a,u,c,l,m){let d=L([V("depositEntryIndex"),V("kind"),V("option"),w("startTs"),ze("periods"),qe("allowClawback")]),p=[{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:wd,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1}],y=Buffer.alloc(d.span);d.encode({depositEntryIndex:a,kind:u,option:c===void 0?0:1,startTs:c,periods:l,allowClawback:m},y);let f=Buffer.from([...or.voterStakeRegistryCreateDepositEntry,...y]);return new Ve({keys:p,programId:r,data:f})}async function CP({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=So(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 d=tr.decode(m.data),p=d.deposited.sub(d.voteLockedBalance);if(console.log("amount",p.toString()),p.eq(new li(0)))throw Error("user do not has new stake amount");let y=Ko(e,a).publicKey,f=Co(e,a).publicKey,{publicKey:b,nonce:g}=Ro(n,c,s),P=be(b,y,u).publicKey,{publicKey:A,nonce:T}=Lo(n,c,s),h=Oo(t,i,o,s).publicKey,I=[],B=be(s,y,u).publicKey;if(await r.getAccountInfo(B)===null&&I.push(gd(s,B,s,y)),await r.getAccountInfo(b)===null){let H=Td(t,i,s,o,s,h);I.push(H,Id(n,c,b,A,s,s,g,T))}let{index:M,isInit:F}=await Mo(r,c,b,y);return F||I.push(xd(n,c,b,P,s,s,y,M,0,void 0,0,!1)),I.push(Pd(n,c,b,P,B,s,l,a,y,f,e,M,p),kd(n,c,b,A)),I}async function RP({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=So(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 d=tr.decode(m.data);if(d.voteLockedBalance.eq(new li(0)))throw Error("user has vote locked balance = 0");let p=Ko(e,a).publicKey,y=Co(e,a).publicKey,{publicKey:f}=Ro(n,c,s),b=be(f,p,u).publicKey,{publicKey:g}=Lo(n,c,s),P=Oo(t,i,o,s).publicKey,A=[],{index:T,isInit:h}=await Mo(r,c,f,p);if(!h)throw Error("deposit entry index check error");return A.push(hd(n,c,f,s,P,g,b,be(s,p,u).publicKey,l,a,p,y,e,T,d.voteLockedBalance)),A}function _o({payer:r,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:i}){let o=Buffer.alloc(To.span);To.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 Vo({payer:r,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:i}){let o=Buffer.alloc(Io.span);Io.encode({instruction:4,isSet:new li(1),rewardPerSecond:U(i.perSecond),rewardOpenTime:U(i.openTime),rewardEndTime:U(i.endTime),rewardType:U(Jt[i.rewardType])},o);let s=[...Fi,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 LP(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)],d=it({programId:l,poolId:m,owner:s,version:n}),p=Buffer.alloc(Je.span);Je.encode({instruction:a,amount:u},p);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:d}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:i})]:[k({pubkey:m}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:d}),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:ir,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:p})}function sr(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 d=0;d<t.rewardInfos.length;d++)m.push(k({pubkey:new ie(t.rewardInfos[d].vault)})),m.push(k({pubkey:i[d]}));return new Ve({programId:a,keys:m,data:l})}function ar(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 d=[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:ir,isWritable:!1}),k({pubkey:st,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(k({pubkey:i[p]})),d.push(k({pubkey:new ie(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(k({pubkey:p}));return new Ve({programId:u,keys:d,data:m})}function ur(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 d=[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:ir,isWritable:!1}),k({pubkey:st,isWritable:!1})];if(a)for(let p of a)d.push(k({pubkey:p}));return new Ve({programId:u,keys:d,data:m})}function qa(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 d=[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:ir,isWritable:!1}),k({pubkey:st,isWritable:!1})];if(a)for(let p of a)d.push(k({pubkey:p}));return new Ve({programId:u,keys:d,data:m})}function Ua(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 d=[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:ir,isWritable:!1}),k({pubkey:st,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(k({pubkey:i[p]})),d.push(k({pubkey:new ie(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(k({pubkey:p}));return new Ve({programId:u,keys:d,data:m})}function Ga(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 d=0;d<t.rewardInfos.length;d++)m.push(k({pubkey:new ie(t.rewardInfos[d].vault)})),m.push(k({pubkey:i[d]}));return new Ve({programId:a,keys:m,data:l})}var cr=class extends Be{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Ne)){let n=await Vt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:No(D(N({},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=xn,txVersion:o}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new ke(e.lpMint.address),lockInfo:{lockMint:Na,lockVault:Ma},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(er.span);u.addInstruction({instructions:[Sd.createAccountWithSeed({fromPubkey:c,basePubkey:c,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m,space:er.span,programId:a.programId})]});let{publicKey:d,nonce:p}=Ea({programId:new ke(a.programId),poolId:l.publicKey}),y=rr({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(Jt[h.rewardType])&&this.logAndCreateError("rewardType error",h.rewardType),Number(h.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",h.perSecond),f.push(Fa(h));let{rewardPubKey:I,newInstruction:B}=await this._getUserRewardInfo({rewardInfo:h,payer:c});B&&u.addInstruction(B),I||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let x=h.mint.equals(Ne)?new ke(Me.address):h.mint;b.push({rewardMint:x,rewardVault:rr({programId:a.programId,poolId:l.publicKey,mint:x,type:"rewardVault"}),userRewardToken:I})}let{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({mint:new ke(a.lockInfo.lockMint),owner:this.scope.ownerPubKey,skipCloseAccount:!1,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:!1});P&&u.addInstruction(P),g||this.logAndCreateError("cannot found lock vault","tokenAccounts",this.scope.account.tokenAccounts);let{instruction:A,instructionType:T}=Wa({farmId:l.publicKey,owner:this.scope.ownerPubKey,farmAuthority:d,lpVault:y,lpMint:a.lpMint,lockVault:a.lockInfo.lockVault,lockMint:a.lockInfo.lockMint,lockUserAccount:g,programId:a.programId,rewardInfo:b,rewardInfoConfig:f,nonce:p});return u.addInstruction({instructions:[A],instructionTypes:[T]}).versionBuild({txVersion:o,extInfo:{farmId:l.publicKey,farmAuthority:d,lpVault:y,lockUserAccount:g,nonce:p}})}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=ye((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 d=(b=m.vault)!=null?b:Ne,p=this.createTxBuilder(),{rewardPubKey:y,newInstruction:f}=await this._getUserRewardInfo({rewardInfo:n,payer:u});return f&&p.addInstruction(f),y||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts),p.addInstruction({instructions:[_o({payer:this.scope.ownerPubKey,rewardVault:d,userRewardTokenPub:y,farmKeys:a,rewardInfo:n})],instructionTypes:[E.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=ye((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 d=m.mint.equals(Ne)?new ke(Me.address):m.mint,p=a.rewardInfos.findIndex(A=>new ke(A.mint.address).equals(d)),y=s.rewardInfos[p];y||this.logAndCreateError("configuration does not exist","rewardMint",d);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=_o({payer:this.scope.ownerPubKey,rewardVault:f,userRewardTokenPub:b,farmKeys:a,rewardInfo:m});c.addInstruction({instructions:[P],instructionTypes:[E.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=ye((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=rr({programId:new ke(n.programId),poolId:new ke(n.id),mint:l,type:"rewardVault"}),{rewardPubKey:d,newInstruction:p}=await this._getUserRewardInfo({rewardInfo:i,payer:u});return p&&c.addInstruction(p),d||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),i.mint=l,c.addInstruction({instructions:[Vo({payer:this.scope.ownerPubKey,userRewardTokenPub:d,farmKeys:a,rewardVault:m,rewardInfo:i})],instructionTypes:[E.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=ye((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,d=rr({programId:new ke(n.programId),poolId:new ke(n.id),mint:m,type:"rewardVault"}),{rewardPubKey:p,newInstruction:y}=await this._getUserRewardInfo({rewardInfo:l,payer:u});y&&c.addInstruction(y),p||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let f=Vo({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:a,rewardVault:d,rewardInfo:D(N({},l),{mint:m})});c.addInstruction({instructions:[f],instructionTypes:[E.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:d}=n,p=At[d];xo(p)||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:p}),P=this.createTxBuilder();P.addCustomComputeBudget(l);let A={};for(let v of this.scope.account.tokenAccounts)if(a){let j=be(this.scope.ownerPubKey,v.mint,v.programId).publicKey;v.publicKey&&j.equals(v.publicKey)&&(A[v.mint.toString()]=v.publicKey)}else A[v.mint.toString()]=v.publicKey;let T=b.lpMint,h=A[T.address];h||this.logAndCreateError("you don't have any lp","lp zero",A);let I=[];for(let v of m){let j=s&&v.mint.address===ne.toString(),ee=A[v.mint.address];if(!ee){let{account:se,instructionParams:ft}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:v.mint.programId,mint:new ke(v.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[v.mint.address]=ee,I.push(ee)}let B,x=await this.scope.connection.getAccountInfo(g);if(x&&(B=ci(p).decode(x.data)),n.programId!==xn.toString()&&!B){let{instruction:v,instructionType:j}=va({id:f,programId:y,version:p,ledger:g,owner:this.scope.ownerPubKey});P.addInstruction({instructions:[v],instructionTypes:[j]})}let K=Bo({version:p,rewardInfos:m,rewardTokenAccountsPublicKeys:I});K&&this.logAndCreateError(K);let M={amount:U(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:b,lpAccount:h,rewardAccounts:I,userAuxiliaryLedgers:c==null?void 0:c.map(v=>new ke(v))},F=p===6?Ga(M):p===5?Ua(M):qa(M),H={3:E.FarmV3Deposit,5:E.FarmV5Deposit,6:E.FarmV6Deposit};return P.addInstruction({instructions:[F],instructionTypes:[H[p]]}).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:d}=n;this.scope.availability.removeFarm===!1&&this.logAndCreateError("farm withdraw feature disabled in your region");let p=At[n.programId];xo(p)||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 K of this.scope.account.tokenAccounts)if(u){let M=be(this.scope.ownerPubKey,K.mint).publicKey;K.publicKey&&M.equals(K.publicKey)&&(b[K.mint.toString()]=K.publicKey)}else b[K.mint.toString()]=K.publicKey;if(o)o.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else{let K=it({programId:new ke(n.programId),poolId:new ke(n.id),owner:this.scope.ownerPubKey,version:p}),M=await this.scope.connection.getAccountInfo(K);M||this.logAndCreateError("no lp data",{farmId:n.id,version:p,ledgerData:M}),ci(p).decode(M.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id})}let g=y.lpMint.address,P=s&&g===ne.toString(),A=b[g.toString()];if(!A){let{account:K,instructionParams:M}=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=K,M&&f.addInstruction(M)}b[g.toString()]=A;let T=[];for(let K of d){let M=s&&K.mint.address===ne.toString(),F=b[K.mint.address];if(!F){let{account:H,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:K.mint.programId,mint:new ke(K.mint.address),notUseTokenAccount:M,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!M,associatedOnly:M?!1:u,checkCreateATAOwner:c});F=H,v&&f.addInstruction(v)}b[K.mint.address]=F,T.push(F)}let h=Bo({version:p,rewardInfos:d,rewardTokenAccountsPublicKeys:T});h&&this.logAndCreateError(h);let I={amount:U(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:A,rewardAccounts:T,userAuxiliaryLedgers:l==null?void 0:l.map(K=>new ke(K))},B=p===6?sr(I):p===5?ar(I):ur(I),x={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};return f.addInstruction({instructions:[B],instructionTypes:[x[p]]}).versionBuild({txVersion:t})}async withdrawFarmReward({farmInfo:e,withdrawMint:t,txVersion:n}){var p;this.scope.checkOwner();let i=ye((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=(p=a==null?void 0:a.vault)!=null?p:Ne,c=this.createTxBuilder(),l;if(t.equals(Ne)){let y=await Vt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:No(D(N({},a),{openTime:a.openTime,endTime:a.endTime,perSecond:new _(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:[Bd(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[E.CreateATA]})):l=y}let{instruction:m,instructionType:d}=Da({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:[d]}).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=be(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 p=(await this.scope.api.fetchFarmKeysById({ids:Object.values(t).map(y=>y.id).join(",")})).reduce((y,f)=>D(N({},y),{[f.id]:f}),{});for(let y of Object.values(t)){let{programId:f,lpMint:b,rewardInfos:g,id:P}=y,A=At[f],T=b.address,h=n&&T===ne.toString(),I=m[T];if(!I){let{account:H,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:b.programId,mint:new ke(T),notUseTokenAccount:h,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:h?!1:o,checkCreateATAOwner:s});I=H,v&&l.addInstruction(v)}m[T.toString()]=I;let B=[];for(let H of g){let v=n&&H.mint.address===ne.toString(),j=m[H.mint.address];if(!j){let{account:ee,instructionParams:se}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:H.mint.programId,mint:new ke(H.mint.address),notUseTokenAccount:v,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!v,associatedOnly:v?!1:o,checkCreateATAOwner:s});j=ee,se&&l.addInstruction(se)}m[H.mint.address]=j,B.push(j)}let x=p[P],K={amount:Ke,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:x,lpAccount:I,rewardAccounts:B,userAuxiliaryLedgers:a==null?void 0:a.map(H=>new ke(H))},M=A===6?sr(K):A===5?ar(K):ur(K),F={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};l.addInstruction({instructions:[M],instructionTypes:[F[A]]})}return u===1?l.sizeCheckBuild({computeBudgetConfig:c}):l.sizeCheckBuildV0({computeBudgetConfig:c})}};import{PublicKey as je}from"@solana/web3.js";import{AccountLayout as fp,NATIVE_MINT as Bu,TOKEN_PROGRAM_ID as wi}from"@solana/spl-token";var ek=L([ze("mintAuthorityOption"),S("mintAuthority"),w("supply"),V("decimals"),V("isInitialized"),ze("freezeAuthorityOption"),S("freezeAuthority")]);import{PublicKey as Kd}from"@solana/web3.js";import{MintLayout as Xa,TOKEN_PROGRAM_ID as Cd}from"@solana/spl-token";var uk=async({connection:r,mint:e})=>{let t=await r.getAccountInfo(new Kd(e));return!t||t.data.length!==Xa.span?void 0:Xa.decode(t.data)},ck=({mint:r,decimals:e,programId:t=Cd,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}},za=r=>new pe({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name}),lk=i=>{var o=i,{amount:r,isRaw:e,name:t}=o,n=Ie(o,["amount","isRaw","name"]);return new Te(new pe({mint:n.address,decimals:n.decimals,symbol:n.symbol,name:t}),r,e,t)};function mk(r){return r.address===Tt.address?Me:r}function dk(r){return r.address===Me.address?Tt:r}import{TOKEN_PROGRAM_ID as lr,ASSOCIATED_TOKEN_PROGRAM_ID as Ud}from"@solana/spl-token";import{PublicKey as ge,TransactionInstruction as Et,SystemProgram as Go,SYSVAR_RENT_PUBKEY as Gd}from"@solana/web3.js";var Eo=L([V("instruction"),w("amountIn"),w("minAmountOut")]),Fo=L([V("instruction"),w("maxAmountIn"),w("amountOut")]),Ik=L([V("instruction"),V("nonce")]),vo=L([V("instruction"),V("nonce"),w("startTime")]),Wo=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"),Y("swapBaseInAmount"),Y("swapQuoteOutAmount"),w("swapBase2QuoteFee"),Y("swapQuoteInAmount"),Y("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")]),Rd=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"),Y("swapBaseInAmount"),Y("swapQuoteOutAmount"),Y("swapQuoteInAmount"),Y("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")]),Do=L([V("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide")]),qo=L([V("instruction"),w("amountIn")]),xk={4:Wo,5:Rd},Ya=L([w("fee")]);import{PublicKey as Ld}from"@solana/web3.js";var Rn=new Ld("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ln=5e4,Od=L([w("x"),w("y"),w("price")]),Nd=L([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),q(Od,ln,"DataElement")]);function Md(r,e){return[0,ln-2]}function _d(r){return[0,ln-2]}function Vd(r){return[0,ln-2]}function Ed(r,e,t){let[n,i]=Md(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 Uo(r,e,t){let[n,i,o]=Ed(r,e,t);if(!o)return 0;if(n===i){let s=r.DataElement[n].x;return e*r.multiplier/s}else{let s=r.DataElement[n].x,a=r.DataElement[n].y,u=r.DataElement[i].x,c=r.DataElement[i].y,l=t*(u*a-s*c),m=s*l,d=(u-s)*(e*a-s*t)*c,p=m+d;return e*r.multiplier*l/p}}function cn(r,e,t){return e*r.multiplier/t}function Ha(r,e,t){return e*t/r.multiplier}function Fd(r,e){let[t,n]=_d(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 vd(r,e){let[t,n]=Vd(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 Qa(r,e,t,n){let i=n?e+t:e-t,[o,s,a]=Fd(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].y,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,d=r.DataElement[o].y,p=r.DataElement[s].y;if(e>=u&&e<=c)return n?[m,p,!0,a]:[l,d,!0,a];{let y,f;return n?(y=l+(m-l)*(e-u)/(c-u),f=d-(i-u)*r.multiplier/m):(y=l+(m-l)*(e-u)/(c-u),f=p+(c-i)*r.multiplier/l),[y,f,!1,a]}}}function Wd(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].x,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,d=r.DataElement[o].y,p=r.DataElement[s].y;if(e>=p&&e<=d)return n?[m,c,!0,a]:[l,u,!0,a];{let y,f;return n?(y=l+(m-l)*(d-e)/(d-p),f=u+m*(d-i)/r.multiplier):(y=l+(m-l)*(d-e)/(d-p),f=c-l*(i-p)/r.multiplier),[y,f,!1,a]}}}function Dd(r,e){let t=Qa(r,e,0,!1);return t[3]?t[0]:0}function ja(r,e,t,n){let i=Uo(r,e,t),o=cn(r,e,i),s=cn(r,t,i),a=cn(r,n,i),u=!0,[c,l,m,d]=Qa(r,o,a,u);if(!d)return 0;if(m)return n*r.multiplier/c;{let p=s-l;return Ha(r,p,i)}}function Za(r,e,t,n){let i=Uo(r,e,t),o=cn(r,e,i),s=cn(r,t,i),a=cn(r,n,i),u=!1,[c,l,m,d]=Wd(r,s,a,u);if(!d)return 0;if(m)return n*c/r.multiplier;{let p=o-l;return Ha(r,p,i)}}function qd(r){let e=Nd.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=Dd(r,cn(r,e,Uo(r,e,t)))/r.multiplier;return n?i:1/i}var Cn=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(Rn);e&&(this._layoutData=qd(e==null?void 0:e.data))}}};var $a=ae("Raydium_liquidity_instruction");function eu(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:i,quoteAmountIn:o,fixedSide:s}=r,a=Buffer.alloc(Do.span);Do.encode({instruction:3,baseAmountIn:U(i),quoteAmountIn:U(o),fixedSide:s==="base"?Ke:Gs},a);let u=[k({pubkey:lr,isWritable:!1}),k({pubkey:new ge(e.id)}),k({pubkey:new ge(t.authority),isWritable:!1}),k({pubkey:new ge(t.openOrders),isWritable:!1}),k({pubkey:new ge(t.targetOrders)}),k({pubkey:new ge(e.lpMint.address)}),k({pubkey:new ge(t.vault.A)}),k({pubkey:new ge(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(k({pubkey:Rn})),u.push(k({pubkey:new ge(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 ge(t.marketEventQueue),isWritable:!1})),new Et({programId:new ge(e.programId),keys:u,data:a})}function Xo(r){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:i}=r,o=ye(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(qo.span);qo.encode({instruction:4,amountIn:U(i)},a);let u=[k({pubkey:lr,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:Rn})):(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 tu({programId:r,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:i,coinMint:o,pcMint:s,coinVault:a,pcVault:u,withdrawQueue:c,ammTargetOrders:l,poolTempLp:m,marketProgramId:d,marketId:p,userWallet:y,userCoinVault:f,userPcVault:b,userLpVault:g,nonce:P,openTime:A,coinAmount:T,pcAmount:h,ammConfigId:I,feeDestinationId:B}){let x=L([V("instruction"),V("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),K=[{pubkey:lr,isSigner:!1,isWritable:!1},{pubkey:Ud,isSigner:!1,isWritable:!1},{pubkey:Go.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:d,isSigner:!1,isWritable:!1},{pubkey:p,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}],M=Buffer.alloc(x.span);return x.encode({instruction:1,nonce:P,openTime:A,coinAmount:T,pcAmount:h},M),{instruction:new Et({keys:K,programId:r,data:M}),instructionType:E.AmmV4CreatePool}}function Dk(r){let e=L([V("instruction"),V("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[k({pubkey:new ge(r.id),isWritable:!1}),k({pubkey:new ge(r.authority),isWritable:!1}),k({pubkey:new ge(r.openOrders),isWritable:!1}),k({pubkey:new ge(r.vault.A),isWritable:!1}),k({pubkey:new ge(r.vault.B),isWritable:!1}),k({pubkey:new ge(r.mintLp.address),isWritable:!1}),k({pubkey:new ge(r.marketId),isWritable:!1}),k({pubkey:new ge(r.marketEventQueue),isWritable:!1})];return new Et({programId:new ge(r.programId),keys:n,data:t})}function Xd({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},i){let o=ye(r),s=Buffer.alloc(Eo.span);Eo.encode({instruction:9,amountIn:U(t),minAmountOut:U(n)},s);let a=[k({pubkey:lr,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:Rn})),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 zd({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},i){let o=ye(r),s=Buffer.alloc(Fo.span);Fo.encode({instruction:11,maxAmountIn:U(t),amountOut:U(n)},s);let a=[k({pubkey:Go.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:Rn})),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 mi(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 Xd(D(N({},a),{amountIn:i,minAmountOut:o}),t);if(s==="out")return zd(D(N({},a),{maxAmountIn:i,amountOut:o}),t);$a.logWithError("invalid params","params",r)}throw $a.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function qk({poolKeys:r,userKeys:e,startTime:t}){let n=Buffer.alloc(vo.span);vo.encode({instruction:0,nonce:5,startTime:U(t)},n);let i=ye(r),o=[k({pubkey:lr,isWritable:!1}),k({pubkey:Go.programId,isWritable:!1}),k({pubkey:Gd,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 nu({poolKeys:r}){let e=L([V("instruction"),V("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[k({pubkey:new ge(r.id),isWritable:!1}),k({pubkey:new ge(r.authority),isWritable:!1}),k({pubkey:new ge(r.openOrders),isWritable:!1}),k({pubkey:new ge(r.vault.A),isWritable:!1}),k({pubkey:new ge(r.vault.B),isWritable:!1}),k({pubkey:new ge(r.mintLp.address),isWritable:!1}),k({pubkey:new ge(r.marketId),isWritable:!1}),k({pubkey:new ge(r.marketEventQueue),isWritable:!1})];return{instruction:new Et({programId:new ge(r.programId),keys:n,data:t})}}import{TOKEN_PROGRAM_ID as Ue,TOKEN_2022_PROGRAM_ID as $t,ASSOCIATED_TOKEN_PROGRAM_ID as wu}from"@solana/spl-token";import{PublicKey as W,TransactionInstruction as Pt,SystemProgram as Ln,Keypair as $o}from"@solana/web3.js";import Au from"bn.js";import rp from"bn.js";function ru(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function Gk(r){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,r,!1),new Uint8Array(e)}function Xk(r){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,r,!1),new Uint8Array(e)}function di(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function zo(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function Yo(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function mr(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function iu(r,e){return mr(r,e)?null:zo(r,e)}function ou(r,e){return mr(r,e)?null:Yo(r,e)}var Yd=Buffer.from("amm_config","utf8"),Hd=Buffer.from("pool","utf8"),Qd=Buffer.from("pool_vault","utf8"),jd=Buffer.from("pool_reward_vault","utf8"),su=Buffer.from("position","utf8"),Zd=Buffer.from("tick_array","utf8"),Jd=Buffer.from("operation","utf8"),$d=Buffer.from("pool_tick_array_bitmap_extension","utf8");function Qk(r,e){return oe([Yd,ru(e)],r)}function au(r,e,t,n){return oe([Hd,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Ho(r,e,t){return oe([Qd,e.toBuffer(),t.toBuffer()],r)}function uu(r,e,t){return oe([jd,e.toBuffer(),t.toBuffer()],r)}function we(r,e,t){return oe([Zd,e.toBuffer(),di(t)],r)}function mn(r,e,t,n){return oe([su,e.toBuffer(),di(t),di(n)],r)}function ct(r,e){return oe([su,e.toBuffer()],r)}function pi(r){return oe([Buffer.from("metadata","utf8"),Pn.toBuffer(),r.toBuffer()],Pn)}function dr(r){return oe([Jd],r)}function lt(r,e){return oe([$d,e.toBuffer()],r)}import St from"bn.js";var de=new St(0),at=new St(1),Ft=new St(-1),ut=new St(1).shln(64),fi=new St(1).shln(128),Qo=ut.sub(at),pr=64,cu=fi.subn(1),He=-443636,$e=-He,Kt=new St("4295048016"),Ct=new St("79226673521066979257578248091"),lu=16,mu="59543866431248",du="184467440737095516",pu="15793534762490258745",yi=new St(10).pow(new St(6)),ep=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))(ep||{}),Jk={[500]:10,[3e3]:60,[1e4]:200},$k={version:6,liquidity:de,tickCurrent:0,observationIndex:0,observationUpdateDuration:0,feeGrowthGlobalX64A:de,feeGrowthGlobalX64B:de,protocolFeesTokenA:de,protocolFeesTokenB:de,swapInAmountTokenA:de,swapOutAmountTokenB:de,swapInAmountTokenB:de,swapOutAmountTokenA:de,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},fu={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:[]},eh=new St("18446744073700000000");var tp=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(tp/2));for(let p=0;p<l.length;p++){let{publicKey:y}=we(t,n,l[p]);u.push(y)}let m=(await It(e,u)).map(p=>p!==null?fr.decode(p.data):null),d={};for(let p=0;p<u.length;p++){let y=m[p];y!==null&&(d[y.startTickIndex]=D(N({},y),{address:u[p]}))}return d}static nextInitializedTick(e,t,n,i,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,i,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=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:d,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,d,p]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,i,o){let s=Math.floor(e/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}=we(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 d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u-1}else for(u=u+1;u<_e;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u+1}let{publicKey:m}=we(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>$e)return!1;let n=G.getTickArrayStartIndexByTick(He,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return _e*e}};import re from"bn.js";import{PublicKey as Wt}from"@solana/web3.js";import Re from"bn.js";var jo=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=iu(1024,l);if(m!==null){let d=(c-m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=ou(1024,l);if(m!==null){let d=(c+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-le.tickCount(n)}}}},yr=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($e<=t)throw Error(`extensionTickBoundary check error: ${$e}, ${t}`);if(n<=He)throw Error(`extensionTickBoundary check error: ${n}, ${He}`);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=mr(512,u)?null:zo(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=mr(512,u)?null:Yo(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 Rt from"bn.js";var br=class{static getfeeGrowthInside(e,t,n){let i=new Rt(0),o=new Rt(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 Rt(0),a=new Rt(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=J.wrappingSubU128(J.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),c=J.wrappingSubU128(J.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=J.mulDivFloor(J.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,ut),u=t.tokenFeesOwedA.add(a),c=J.mulDivFloor(J.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=J.mulDivFloor(J.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,ut),u=t.tokenFeesOwedA.add(a),c=J.mulDivFloor(J.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=J.wrappingSubU128(u,c.growthInsideLastX64),m=J.mulDivFloor(l,t.liquidity,ut),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static GetPositionRewards(e,t,n,i){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=J.wrappingSubU128(u,c.growthInsideLastX64),m=J.mulDivFloor(l,t.liquidity,ut),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static getRewardGrowthInside(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Rt(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 Rt(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(J.wrappingSubU128(J.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 Rt(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 Rt(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(J.wrappingSubU128(J.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 _(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),[d,p]=[Pe(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),Pe(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[y,f]=[Pe(new Rt(new _(m.amountA.toString()).mul(l).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,s,!0),Pe(new Rt(new _(m.amountB.toString()).mul(l).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:sn(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as yu}from"@solana/spl-token";var Qe=class{static getOutputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintA.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount: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(...d),{expectedAmountOut:m.mul(Ft),remainingAccounts:a,executionPrice:p,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}=we(e.programId,e.id,f.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,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(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=Qe.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?yr.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}=we(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}=we(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}=yr.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<He||t>$e)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],d=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(d===void 0)throw Error("get new reward mint info error");let p=D(N({},m),{perSecond:J.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Wt(d)});if(p.tokenMint.equals(Wt.default))continue;if(n<=p.openTime.toNumber()||i.eq(de)){s.push(p);continue}let y=new Re(Math.min(p.endTime.toNumber(),n)),f=y.sub(p.lastUpdateTime),b=J.mulDivFloor(f,p.emissionsPerSecondX64,i),g=p.rewardGrowthGlobalX64.add(b),P=J.mulDivFloor(f,p.emissionsPerSecondX64,ut),A=p.rewardTotalEmissioned.add(P);s.push(D(N({},p),{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>$e&&(t=le.getArrayStartIndex($e,e)+le.tickCount(e)),n<He&&(n=le.getArrayStartIndex(He,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 In(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=bu.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:d}=we(u.programId,u.id,m);o.push({pubkey:d}),i[d.toString()]=u.id}}let s=await In(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=i[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=fr.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=D(N({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:i=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(d=>d.accountInfo.mint),c=[];for(let d of u)for(let p of s)c.push(ct(p,d).publicKey);let l=await It(t,c,{batchRequest:i}),m={};for(let d of l){if(d===null)continue;let p=gi.decode(d.data),y=p.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:p.tickLower,baseIn:!0}),P=G._getTickPriceLegacy({poolInfo:b,tick:p.tickUpper,baseIn:!0}),{amountA:A,amountB:T}=ce.getAmountsFromLiquidity(b.sqrtPriceX64,g.tickSqrtPriceX64,P.tickSqrtPriceX64,p.liquidity,!1),h=1/(1-Math.sqrt(Math.sqrt(g.price.div(P.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:g.price,priceUpper:P.price,amountA:A,amountB:T,tickLower:p.tickLower,tickUpper:p.tickUpper,liquidity:p.liquidity,feeGrowthInsideLastX64A:p.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:p.feeGrowthInsideLastX64B,tokenFeesOwedA:p.tokenFeesOwedA,tokenFeesOwedB:p.tokenFeesOwedB,rewardInfos:p.rewardInfos.map(x=>D(N({},x),{pendingReward:new Re(0)})),leverage:h,tokenFeeAmountA:new Re(0),tokenFeeAmountB:new Re(0)}];let I=await G.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),B=await G.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=I,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=B}if(o){let d=Object.values(m),p=await It(t,d,{batchRequest:i}),y={};for(let f=0;f<d.length;f++){let b=p[f];if(b===null)continue;let g=d[f].toString();y[g]=fr.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}`,T=y[m[P].toString()],h=y[m[A].toString()],I=T.ticks[G.getTickOffsetInArray(g.tickLower,f.tickSpacing)],B=h.ticks[G.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:K}=await br.GetPositionFees(f,g,I,B),M=await br.GetPositionRewards(f,g,I,B);g.tokenFeeAmountA=x.gte(new Re(0))?x:new Re(0),g.tokenFeeAmountB=K.gte(new Re(0))?K:new Re(0);for(let F=0;F<M.length;F++)g.rewardInfos[F].pendingReward=M[F].gte(new Re(0))?M[F]:new Re(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:o,slippage:s,priceLimit:a=new _(0)}){var M;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 _(0))?u=c?Kt.add(new Re(1)):Ct.sub(new Re(1)):u=Z.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let d=Pe(o,l,i,!1),{expectedAmountOut:p,remainingAccounts:y,executionPrice:f,feeAmount:b}=Qe.getOutputAmountAndRemainAccounts(e,t,n,d.amount.sub((M=d.fee)!=null?M:de),u),g=Pe(p,m,i,!1),P=Z.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),A=c?P:new _(1).div(P),T=p.mul(new Re(Math.floor((1-s)*1e10))).div(new Re(1e10)),h=Pe(T,m,i,!1),I=c?e.currentPrice:new _(1).div(e.currentPrice),B=new _(A).sub(I).abs(),x=I,K=new ve(new _(B).mul(10**15).toFixed(0),new _(x).mul(10**15).toFixed(0));return{realAmountIn:d,amountOut:g,minAmountOut:h,expirationTime:sn(d.expirationTime,g.expirationTime),currentPrice:e.currentPrice,executionPrice:A,priceImpact:K,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 pe(D(N({},u),{mint:u.address,isToken2022:u.programId===yu.toBase58()})),new pe(D(N({},c),{mint:c.address,isToken2022:c.programId===yu.toBase58()}))],{realAmountIn:d,amountOut:p,minAmountOut:y,expirationTime:f,currentPrice:b,executionPrice:g,priceImpact:P,fee:A,remainingAccounts:T}=await Qe.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Wt(u.address),amountIn:n,slippage:o,epochInfo:s}),h=D(N({},d),{amount:new Te(l,d.amount),fee:d.fee===void 0?void 0:new Te(l,d.fee)}),I=D(N({},p),{amount:new Te(m,p.amount),fee:p.fee===void 0?void 0:new Te(m,p.fee)}),B=D(N({},y),{amount:new Te(m,y.amount),fee:y.fee===void 0?void 0:new Te(m,y.fee)}),x=new Xe({baseToken:l,denominator:new Re(10).pow(new Re(20+l.decimals)),quoteToken:m,numerator:b.mul(new _(10**(20+m.decimals))).toFixed(0)}),K=new Xe({baseToken:l,denominator:new Re(10).pow(new Re(20+l.decimals)),quoteToken:m,numerator:g.mul(new _(10**(20+m.decimals))).toFixed(0)}),M=new Te(l,A);return{realAmountIn:h,amountOut:I,minAmountOut:B,expirationTime:f,currentPrice:x,executionPrice:K,priceImpact:P,fee:M,remainingAccounts:T}}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,d=o.priceMax-o.priceMin,p;return l<=0?p=0:m===l?p=d/l:d===l?p=l/m:p=l/d*(l/m),{feeApr:o.feeApr*p,rewardsApr:[(y=o.rewardApr[0])!=null?y:0*p,(f=o.rewardApr[1])!=null?f:0*p,(b=o.rewardApr[2])!=null?b:0*p],apr:o.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:i,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=i[kn(e.mintA.address).toString()],d=i[kn(e.mintB.address).toString()],p=e.mintA.decimals,y=e.mintB.decimals;if(!l||!m||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=Z.priceToSqrtPriceX64(new _(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:T,amountSlippageB:h}=ce.getAmountsFromLiquidityWithSlippage(f,b,g,o,!1,!1,0),I=new _(P.toString()).div(new _(10).pow(p)).mul(m.value).add(new _(A.toString()).div(new _(10).pow(y)).mul(d.value)),B=new _(T.toString()).div(new _(10).pow(p)).mul(m.value).add(new _(h.toString()).div(new _(10).pow(y)).mul(d.value)),x=B.div(I.add(B)).div(B),M=new _(l.volumeFee).mul(365).div(c).mul(x).mul(100).toNumber(),F=3600*24*365,H=e.rewardDefaultInfos.map(v=>{var se,ft;let j=v.mint.decimals,ee=i[v.mint.address];return u<((se=v.startTime)!=null?se:0)||u>((ft=v.endTime)!=null?ft:0)||!v.perSecond||!ee||j===void 0?0:new _(ee.value).mul(new _(v.perSecond).mul(F)).div(new _(10).pow(j)).mul(x).mul(100).toNumber()});return{feeApr:M,rewardsApr:H,apr:M+H.reduce((v,j)=>v+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 _(e.price),e.mintA.decimals,e.mintB.decimals),m=Z.getSqrtPriceX64FromTick(n),d=Z.getSqrtPriceX64FromTick(i),p=a?1-s:1+s,y=Pe(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,u,!c),f=new Re(new _(y.amount.sub((P=y.fee)!=null?P:de).toString()).mul(p).toFixed(0)),b;if(l.lte(m))b=t?ce.getLiquidityFromTokenAmountA(m,d,f,!a):new Re(0);else if(l.lte(d)){let A=ce.getLiquidityFromTokenAmountA(l,d,f,!a),T=ce.getLiquidityFromTokenAmountB(m,l,f);b=t?A:T}else b=t?new Re(0):ce.getLiquidityFromTokenAmountB(m,d,f);return Qe.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 _(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[d,p]=[Pe(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),Pe(m.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[y,f]=[Pe(m.amountA.muln(l),(P=t.mintA.extensions)==null?void 0:P.feeConfig,e,!0),Pe(m.amountB.muln(l),(A=t.mintB.extensions)==null?void 0:A.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:sn(d.expirationTime,p.expirationTime)}}static async fetchComputeClmmInfo({connection:e,poolInfo:t}){let n=await e.getAccountInfo(new Wt(t.id));if(!n)throw new Error(`pool not found ${t.id}`);let i=bi.decode(n.data),o=lt(new Wt(t.programId),new Wt(t.id)).publicKey,s=await Qe.fetchExBitmaps({connection:e,exBitmapAddress:[o],batchRequest:!1});return D(N({},i),{id:new Wt(t.id),programId:new Wt(t.programId),mintA:t.mintA,mintB:t.mintB,ammConfig:D(N({},t.config),{id:new Wt(t.config.id),fundOwner:""}),currentPrice:new _(t.price),exBitmapInfo:s[o.toBase58()],startTime:i.startTime.toNumber()})}};function vh({poolInfo:r,tickLower:e,tickUpper:t,amountA:n,amountB:i,slippage:o,add:s,epochInfo:a,amountHasFee:u}){var A,T,h,I;let[c,l,m,d]=e<t?[e,t,n,i]:[t,e,i,n],p=Z.priceToSqrtPriceX64(new _(r.price),r.mintA.decimals,r.mintB.decimals),y=Z.getSqrtPriceX64FromTick(c),f=Z.getSqrtPriceX64FromTick(l),[b,g]=[Pe(m,(A=r.mintA.extensions)==null?void 0:A.feeConfig,a,!u),Pe(d,(T=r.mintB.extensions)==null?void 0:T.feeConfig,a,!u)],P=ce.getLiquidityFromTokenAmounts(p,y,f,b.amount.sub((h=b.fee)!=null?h:de),g.amount.sub((I=g.fee)!=null?I:de));return ce.getAmountsOutFromLiquidity({poolInfo:r,tickLower:e,tickUpper:t,liquidity:P,slippage:o,add:s,epochInfo:a,amountAddFee:!u})}var J=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(de)||(o=o.add(at)),o}static mulDivFloor(e,t,n){if(n.eq(de))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(de))throw new Error("division by 0");return e.mul(t).add(n.sub(at)).div(n)}static x64ToDecimal(e,t){return new _(e.toString()).div(_.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new re(e.mul(_.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(fi).sub(t).mod(fi)}};function Ee(r,e){return Zo(r.mul(e),64,256)}function np(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Zo(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 J.x64ToDecimal(e).pow(2).mul(_.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return J.decimalToX64(e.mul(_.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(de))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(de))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(de))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(de))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(de))return e;let o=t.shln(pr);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?J.mulDivCeil(s,e,a):J.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 J.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(pr);if(i)return e.add(o.div(t));{let s=J.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<He||e>$e)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=cu.div(n)),n}static getTickFromPrice(e,t,n){return Z.getTickFromSqrtPriceX64(Z.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Ct)||e.lt(Kt))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new re(t-64),i=np(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<lu;){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(mu)),d=Zo(m.sub(new re(du)),64,128).toNumber(),p=Zo(m.add(new re(pu)),64,128).toNumber();return d==p?d:Z.getSqrtPriceX64FromTick(p).lte(e)?p:d}},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(de))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(pr),s=t.sub(e);return i?J.mulDivRoundingUp(J.mulDivCeil(o,s,t),at,e):J.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(de))throw new Error("sqrtPriceX64A must greater than 0");return i?J.mulDivCeil(n,t.sub(e),ut):J.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?J.mulDivRoundingUp(a,at,Qo):a.shrn(pr)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),J.mulDivFloor(n,Qo,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 _(u.toString()).mul(l).toFixed(0)),d=new re(new _(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:i,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var P,A,T,h;let c=Z.priceToSqrtPriceX64(new _(e.price),e.mintA.decimals,e.mintB.decimals),l=Z.getSqrtPriceX64FromTick(t),m=Z.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,p=ce.getAmountsFromLiquidity(c,l,m,i,s),[y,f]=[Pe(p.amountA,(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,u),Pe(p.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)],[b,g]=[Pe(new re(new _(p.amountA.toString()).mul(d).toFixed(0)),(T=e.mintA.extensions)==null?void 0:T.feeConfig,a,u),Pe(new re(new _(p.amountB.toString()).mul(d).toFixed(0)),(h=e.mintB.extensions)==null?void 0:h.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,d,p,y){if(d.eq(de))throw new Error("amountSpecified must not be 0");if(y||(y=s?Kt.add(at):Ct.sub(at)),s){if(y.lt(Kt))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(Ct))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=d.gt(de),b={amountSpecifiedRemaining:d,amountCalculated:de,sqrtPriceX64:m,tick:c>p?Math.min(p+le.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new re(0)},g=p,P=n[p],A=0,T=!s&&P.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(de)&&!b.sqrtPriceX64.eq(y);){if(A>10)throw Error("liquidity limit");let h={};h.sqrtPriceStartX64=b.sqrtPriceX64;let I=G.nextInitTick(P,b.tick,l,s,T),B=I||null,x=null;if(!(B!=null&&B.liquidityGross.gtn(0))){let M=Qe.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},g,s);if(!M.isExist)throw Error("swapCompute LiquidityInsufficient");g=M.nextStartIndex;let{publicKey:F}=we(e,t,g);x=F,P=n[g],B=G.firstInitializedTick(P,s)}h.tickNext=B.tick,h.initialized=B.liquidityGross.gtn(0),p!==g&&x&&(b.accounts.push(x),p=g),h.tickNext<He?h.tickNext=He:h.tickNext>$e&&(h.tickNext=$e),h.sqrtPriceNextX64=Z.getSqrtPriceX64FromTick(h.tickNext);let K;if(s&&h.sqrtPriceNextX64.lt(y)||!s&&h.sqrtPriceNextX64.gt(y)?K=y:K=h.sqrtPriceNextX64,[b.sqrtPriceX64,h.amountIn,h.amountOut,h.feeAmount]=pn.swapStepCompute(b.sqrtPriceX64,K,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(h.feeAmount),f?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(h.amountIn.add(h.feeAmount)),b.amountCalculated=b.amountCalculated.sub(h.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(h.amountOut),b.amountCalculated=b.amountCalculated.add(h.amountIn.add(h.feeAmount))),b.sqrtPriceX64.eq(h.sqrtPriceNextX64)){if(h.initialized){let M=B.liquidityNet;s&&(M=M.mul(Ft)),b.liquidity=ce.addDelta(b.liquidity,M)}T=h.tickNext!=b.tick&&!s&&P.startTickIndex===h.tickNext,b.tick=s?h.tickNext-1:h.tickNext}else if(b.sqrtPriceX64!=h.sqrtPriceStartX64){let M=Z.getTickFromSqrtPriceX64(b.sqrtPriceX64);T=M!=b.tick&&!s&&P.startTickIndex===M,b.tick=M}++A}try{let{nextStartIndex:h,isExist:I}=le.nextInitializedTickArray(b.tick,l,s,i,o);I&&p!==h&&(b.accounts.push(we(e,t,h).publicKey),p=h)}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(de);if(u){let l=J.mulDivFloor(i,yi.sub(new re(o.toString())),yi);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=J.mulDivCeil(s.amountIn,new re(o),yi.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}=we(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 rp(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}=we(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<He||e>$e}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 _(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new _(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 _(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 _(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new _(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 _(1).div(a)}}};var cT=L([fe(8),V("bump"),Bt("index"),S(""),ze("protocolFeeRate"),ze("tradeFeeRate"),Bt("tickSpacing"),q(w(),8,"")]),ip=L([ze("blockTimestamp"),Y("sqrtPriceX64"),Y("cumulativeTimePriceX64"),q(Y(),1,"")]),Jo=L([fe(8),qe("initialized"),S("poolId"),q(ip,1e3,"observations"),q(Y(),5,"")]),op=L([V("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),Y("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),S("tokenMint"),S("tokenVault"),S("creator"),Y("rewardGrowthGlobalX64")]),bi=L([fe(8),V("bump"),S("ammConfig"),S("creator"),S("mintA"),S("mintB"),S("vaultA"),S("vaultB"),S("observationId"),V("mintDecimalsA"),V("mintDecimalsB"),Bt("tickSpacing"),Y("liquidity"),Y("sqrtPriceX64"),De("tickCurrent"),Bt("observationIndex"),Bt("observationUpdateDuration"),Y("feeGrowthGlobalX64A"),Y("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),Y("swapInAmountTokenA"),Y("swapOutAmountTokenB"),Y("swapInAmountTokenB"),Y("swapOutAmountTokenA"),V("status"),q(V(),7,""),q(op,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")]),sp=L([Y("growthInsideLastX64"),w("rewardAmountOwed")]),gi=L([fe(8),V("bump"),S("nftMint"),S("poolId"),De("tickLower"),De("tickUpper"),Y("liquidity"),Y("feeGrowthInsideLastX64A"),Y("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(sp,3,"rewardInfos"),q(w(),8,"")]),lT=L([fe(8),V("bump"),S("poolId"),De("tickLowerIndex"),De("tickUpperIndex"),Y("liquidity"),Y("feeGrowthInsideLastX64A"),Y("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(Y(),3,"rewardGrowthInside"),q(w(),8,"")]),ap=L([De("tick"),wa("liquidityNet"),Y("liquidityGross"),Y("feeGrowthOutsideX64A"),Y("feeGrowthOutsideX64B"),q(Y(),3,"rewardGrowthsOutsideX64"),q(ze(),13,"")]),fr=L([fe(8),S("poolId"),De("startTickIndex"),q(ap,_e,"ticks"),V("initializedTickCount"),q(V(),115,"")]),gu=L([fe(329),q(S(),100,"whitelistMints")]),bu=L([fe(8),S("poolId"),q(q(w(),8),jo,"positiveTickArrayBitmap"),q(q(w(),8),jo,"negativeTickArrayBitmap")]);var Pu=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]},Se=class{static createPoolInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y){let f=L([Y("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:d,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:Ln.programId,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,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}),[d,p]=[new W(o.address),new W(s.address)],y=[Ln.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Jo.span),space:Jo.span,programId:n})],{publicKey:f}=au(n,a,d,p),{publicKey:b}=Ho(n,f,d),{publicKey:g}=Ho(n,f,p);return y.push(this.createPoolInstruction(n,f,i,a,m.publicKey,d,b,new W(o.programId||Ue),p,g,new W(s.programId||Ue),lt(n,f).publicKey,u,c)),{signers:[],instructions:y,instructionTypes:[E.CreateAccount,E.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,d,p,y,f,b,g,P,A,T,h,I,B,x,K,M){let F=L([De("tickLowerIndex"),De("tickUpperIndex"),De("tickArrayLowerStartIndex"),De("tickArrayUpperStartIndex"),Y("liquidity"),w("amountMaxA"),w("amountMaxB"),qe("withMetadata"),V("optionBaseFlag"),qe("baseFlag")]),H=[...M?[{pubkey:M,isSigner:!1,isWritable:!0}]:[]],v=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:Ln.programId,isSigner:!1,isWritable:!1},{pubkey:Ue,isSigner:!1,isWritable:!1},{pubkey:wu,isSigner:!1,isWritable:!1},{pubkey:Pn,isSigner:!1,isWritable:!1},{pubkey:$t,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...H],j=Buffer.alloc(F.span);F.encode({tickLowerIndex:P,tickUpperIndex:A,tickArrayLowerStartIndex:T,tickArrayUpperStartIndex:h,liquidity:I,amountMaxA:B,amountMaxB:x,withMetadata:K==="create",baseFlag:!1,optionBaseFlag:0},j);let ee=Buffer.from([...kt.openPosition,...j]);return new Pt({keys:v,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=[],[d,p]=[new W(e.programId),new W(e.id)],y;if(l)y=new W((await l(1))[0]);else{let x=$o.generate();m.push(x),y=x.publicKey}let f=G.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=we(d,p,f),{publicKey:P}=we(d,p,b),{publicKey:A}=be(n.wallet,y,Ue),{publicKey:T}=pi(y),{publicKey:h}=ct(d,y),{publicKey:I}=mn(d,p,i,o),B=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,y,A,T,I,g,P,h,n.tokenAccountA,n.tokenAccountB,new W(t.vault.A),new W(t.vault.B),new W(e.mintA.address),new W(e.mintB.address),i,o,f,b,s,a,u,c);return{signers:m,instructions:[B],instructionTypes:[E.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:A,metadataAccount:T,personalPosition:h,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=[],[d,p]=[new W(e.programId),new W(e.id)],y;if(l)y=new W((await l(1))[0]);else{let x=$o.generate();m.push(x),y=x.publicKey}let f=G.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=we(d,p,f),{publicKey:P}=we(d,p,b),{publicKey:A}=be(n.wallet,y,Ue),{publicKey:T}=pi(y),{publicKey:h}=ct(d,y),{publicKey:I}=mn(d,p,i,o),B=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,y,A,T,I,g,P,h,n.tokenAccountA,n.tokenAccountB,new W(t.vault.A),new W(t.vault.B),new W(e.mintA.address),new W(e.mintB.address),i,o,f,b,c,s,a,u,Qe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?lt(d,p).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:A,metadataAccount:T,personalPosition:h,protocolPosition:I},instructions:[B],signers:m,instructionTypes:[E.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P,A,T,h,I,B,x,K,M){let F=L([De("tickLowerIndex"),De("tickUpperIndex"),De("tickArrayLowerStartIndex"),De("tickArrayUpperStartIndex"),Y("liquidity"),w("amountMaxA"),w("amountMaxB"),qe("withMetadata"),V("optionBaseFlag"),qe("baseFlag")]),H=[...M?[{pubkey:M,isSigner:!1,isWritable:!0}]:[]],v=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:Ln.programId,isSigner:!1,isWritable:!1},{pubkey:Ue,isSigner:!1,isWritable:!1},{pubkey:wu,isSigner:!1,isWritable:!1},{pubkey:Pn,isSigner:!1,isWritable:!1},{pubkey:$t,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...H],j=Buffer.alloc(F.span);F.encode({tickLowerIndex:P,tickUpperIndex:A,tickArrayLowerStartIndex:T,tickArrayUpperStartIndex:h,liquidity:new Au(0),amountMaxA:B==="MintA"?x:K,amountMaxB:B==="MintA"?K:x,withMetadata:I==="create",baseFlag:B==="MintA",optionBaseFlag:1},j);let ee=Buffer.from([...kt.openPosition,...j]);return new Pt({keys:v,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,d=[];if(l)m=new W((await l(1))[0]);else{let x=$o.generate();d.push(x),m=x.publicKey}let[p,y]=[new W(e.programId),new W(e.id)],f=G.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=we(p,y,f),{publicKey:P}=we(p,y,b),{publicKey:A}=be(n.wallet,m,Ue),{publicKey:T}=pi(m),{publicKey:h}=ct(p,m),{publicKey:I}=mn(p,y,i,o),B=this.openPositionFromLiquidityInstruction(p,n.wallet,y,n.wallet,m,A,T,I,g,P,h,n.tokenAccountA,n.tokenAccountB,new W(t.vault.A),new W(t.vault.B),new W(t.mintA.address),new W(t.mintB.address),i,o,f,b,s,a,u,c,Qe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?lt(p,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:A,metadataAccount:T,personalPosition:h,protocolPosition:I},instructions:[B],signers:d,instructionTypes:[E.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:Ln.programId,isSigner:!1,isWritable:!1},{pubkey:Ue,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 W(e.programId),{publicKey:s}=be(n.wallet,i.nftMint,Ue),{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:[E.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P){let A=L([Y("liquidity"),w("amountMaxA"),w("amountMaxB"),V("optionBaseFlag"),qe("baseFlag")]),T=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],h=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Ue,isSigner:!1,isWritable:!1},{pubkey:$t,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...T],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:h,programId:e,data:B})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new W(e.programId),new W(e.id)],l=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=we(u,c,l),{publicKey:p}=we(u,c,m),{publicKey:y}=be(i.wallet,n.nftMint,Ue),{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,d,p,i.tokenAccountA,i.tokenAccountB,new W(t.vault.A),new W(t.vault.B),new W(e.mintA.address),new W(e.mintB.address),o,s,a,Qe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?lt(u,c).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:b},signers:[],instructions:[g],instructionTypes:[E.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 W(e.programId),new W(e.id)],l=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=we(u,c,l),{publicKey:p}=we(u,c,m),{publicKey:y}=be(i.wallet,n.nftMint,Ue),{publicKey:f}=ct(u,n.nftMint),{publicKey:b}=mn(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(u,i.wallet,y,f,c,b,d,p,i.tokenAccountA,i.tokenAccountB,new W(t.vault.A),new W(t.vault.B),new W(e.mintA.address),new W(e.mintB.address),o,s,a,Qe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?lt(u,c).publicKey:void 0)],signers:[],instructionTypes:[E.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P){let A=L([Y("liquidity"),w("amountMaxA"),w("amountMaxB"),V("optionBaseFlag"),qe("baseFlag")]),T=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],h=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Ue,isSigner:!1,isWritable:!1},{pubkey:$t,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...T],I=Buffer.alloc(A.span);A.encode({liquidity:new Au(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:h,programId:e,data:B})}static decreaseLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P,A){let T=L([Y("liquidity"),w("amountMinA"),w("amountMinB")]),h=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...f.map(K=>[{pubkey:K.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:K.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:K.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:d,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:Ue,isSigner:!1,isWritable:!1},{pubkey:$t,isSigner:!1,isWritable:!1},{pubkey:An,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...h],B=Buffer.alloc(T.span);T.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 W(e.programId),new W(e.id)],m=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=we(c,l,m),{publicKey:y}=we(c,l,d),{publicKey:f}=be(i.wallet,n.nftMint,u),{publicKey:b}=ct(c,n.nftMint),{publicKey:g}=mn(c,l,n.tickLower,n.tickUpper),P=[];for(let T=0;T<e.rewardDefaultInfos.length;T++)P.push({poolRewardVault:new W(t.rewardInfos[T].vault),ownerRewardVault:i.rewardAccounts[T],rewardMint:new W(e.rewardDefaultInfos[T].mint.address)});let A=[];return A.push(this.decreaseLiquidityInstruction(c,i.wallet,f,b,l,g,p,y,i.tokenAccountA,i.tokenAccountB,new W(t.vault.A),new W(t.vault.B),new W(e.mintA.address),new W(e.mintB.address),P,o,s,a,Qe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?lt(c,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:y,positionNftAccount:f,personalPosition:b,protocolPosition:g},signers:[],instructions:A,instructionTypes:[E.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g){let P=L([w("amount"),w("otherAmountThreshold"),Y("sqrtPriceLimitX64"),qe("isBaseInput")]),A=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...m.map(B=>({pubkey:B,isSigner:!1,isWritable:!0}))],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Ue,isSigner:!1,isWritable:!1},{pubkey:$t,isSigner:!1,isWritable:!1},{pubkey:An,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...A],h=Buffer.alloc(P.span);P.encode({amount:p,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:b},h);let I=Buffer.from([...kt.swap,...h]);return new Pt({keys:T,programId:e,data:I})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:i,inputMint:o,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:u,remainingAccounts:c}){let[l,m]=[new W(e.programId),new W(e.id)],[d,p]=[new W(t.vault.A),new W(t.vault.B)],[y,f]=[new W(e.mintA.address),new W(e.mintB.address)],b=e.mintA.address===o.toString(),g=[this.swapInstruction(l,i.wallet,m,new W(e.config.id),b?i.tokenAccountA:i.tokenAccountB,b?i.tokenAccountB:i.tokenAccountA,b?d:p,b?p:d,b?y:f,b?f:y,c,n,s,a,u,!0,lt(l,m).publicKey)];return{signers:[],instructions:g,instructionTypes:[E.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,d){let p=L([w("openTime"),w("endTime"),Y("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:Ln.programId,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:U(l),endTime:U(m),emissionsPerSecondX64:d},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 W(e.programId),new W(e.id)],a=uu(o,s,i.mint).publicKey,u=dr(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new W(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:[E.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,d){let p=L([V("rewardIndex"),Y("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:Ue,isSigner:!1,isWritable:!1},{pubkey:$t,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:c,emissionsPerSecondX64:d,openTime: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 W(e.programId),new W(e.id)],a,u,c;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===i.mint.toString()&&(a=d,u=new W(t.rewardInfos[d].vault),c=new W(t.rewardInfos[d].mint.address));(a===void 0||u===void 0)&&Pu.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=dr(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new W(e.config.id),n.tokenAccount,u,c,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[E.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,o,s,a){let u=L([V("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:Ue,isSigner:!1,isWritable:!1},{pubkey:$t,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 W(e.programId),new W(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,u=new W(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&Pu.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:[E.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 W(e.programId),new W(e.id)],[m,d]=[new W(t.vault.A),new W(t.vault.B)],[p,y]=[new W(e.mintA.address),new W(e.mintB.address)],f=e.mintA.address===i.toString(),b=[this.swapInstruction(c,n.wallet,l,new W(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?d:m,f?m:d,f?p:y,f?y:p,u,m,o,s,a,!1)];return{signers:[],instructions:b,instructionTypes:[E.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as mp}from"@solana/web3.js";import{PublicKey as cp}from"@solana/web3.js";import ku from"bn.js";var hu=new ku(25),Tu=new ku(1e4),up={4:3,5:3};var lp=ae("Raydium_liquidity_serum");function Iu({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=cp.createProgramAddressSync(o,r)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:i,nonce:n}}throw lp.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 gr from"bn.js";function ts({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 dp({programId:r,marketId:e}){let{publicKey:t}=oe([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function pp({programId:r}){return oe([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function xu({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:d}=pp({programId:a}),p=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=dp({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}=Iu({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:i,lpMint:l,baseDecimals:o,quoteDecimals:s,lpDecimals:o,version:r,programId:a,authority:m,nonce:d,baseVault:p,quoteVault:y,lpVault:f,openOrders:b,targetOrders:g,withdrawQueue:P,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:A,lookupTableAccount:mp.default,configId:ts({programId:a})}}var es;async function vT({connection:r,poolKeysList:e,config:t}){es||(es=new Cn({connection:r}),await es.initStableModelLayout());let n=e.map(s=>nu({poolKeys:s}));return(await $s(r,n.map(s=>s.instruction),"GetPoolData")).map(s=>{let a=ea(s,"GetPoolData"),u=new gr(Nt(a,"status")),c=Number(Nt(a,"coin_decimals")),l=Number(Nt(a,"pc_decimals")),m=Number(Nt(a,"lp_decimals")),d=new gr(Nt(a,"pool_coin_amount")),p=new gr(Nt(a,"pool_pc_amount")),y=new gr(Nt(a,"pool_lp_supply")),f="0";try{f=Nt(a,"pool_open_time")}catch{}return{status:u,baseDecimals:c,quoteDecimals:l,lpDecimals:m,baseReserve:d,quoteReserve:p,lpSupply:y,startTime:new gr(f)}})}import ot from"bn.js";var wr=class extends Be{constructor(t){super(t);this.stableLayout=new Cn({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 ot(new _(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),a=za(t[o?"mintB":"mintA"]),[u,c]=[new ot(new _(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new ot(new _(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new ot(new _(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,_.ROUND_DOWN));this.logDebug("baseReserve:",u.toString(),"quoteReserve:",c.toString()),this.logDebug("tokenIn:",o?t.mintA.symbol:t.mintB.symbol,"amountIn:",s.toString(),"anotherToken:",o?t.mintB.symbol:t.mintA.symbol,"slippage:",`${i.toSignificant()}%`,"baseReserve",u.toString(),"quoteReserve",c.toString());let m=o?"base":"quote";this.logDebug("input side:",m);let d=Ke;s.isZero()||(d=m==="base"?Ur(s.mul(c),u):Ur(s.mul(u),c)),this.logDebug("amountRaw:",d.toString(),"lpAmount:",l.toString());let p=Ur(s.mul(l),m==="base"?u:c);this.logDebug("liquidity:",p.toString());let f=new ve(new ot(1)).add(i).mul(d).quotient,b=new Te(a,d),g=new Te(a,f);return this.logDebug("anotherAmount:",b.toFixed(),"maxAnotherAmount:",g.toFixed()),{anotherAmount:b,maxAnotherAmount:g,liquidity:p}}async getAmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async addLiquidity(t){let{poolInfo:n,amountInA:i,amountInB:o,fixedSide:s,config:a,txVersion:u,computeBudgetConfig:c}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",i,"amountInB:",o),(i.isZero()||o.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:i.toFixed(),amountInB:o.toFixed()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:d}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),[p,y]=[i.token,o.token],f=await l.getCreatedTokenAccount({mint:p.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 je(n.lpMint.address)}),P=[p,y],A=[f,b],T=[i.raw,o.raw],h=i.token.mint.toBase58()===n.mintA.address?"base":"quote",I="base";["quote","base"].includes(h)||this.logAndCreateError("invalid fixedSide","fixedSide",s),h==="quote"?(P.reverse(),A.reverse(),T.reverse(),I=s==="a"?"quote":"base"):h==="base"&&(I=s==="a"?"base":"quote");let[B,x]=P,[K,M]=A,[F,H]=T,v=await this.getAmmPoolKeys(n.id),j=this.createTxBuilder(),Dt=await l.handleTokenAccount({side:"in",amount:F,mint:B.mint,tokenAccount:K,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:ee}=Dt,se=Ie(Dt,["tokenAccount"]);j.addInstruction(se);let Rr=await l.handleTokenAccount({side:"in",amount:H,mint:x.mint,tokenAccount:M,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:ft}=Rr,_n=Ie(Rr,["tokenAccount"]);j.addInstruction(_n);let Vn=await l.handleTokenAccount({side:"out",amount:0,mint:new je(n.lpMint.address),tokenAccount:g,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:Si}=Vn,Ki=Ie(Vn,["tokenAccount"]);return j.addInstruction(Ki),j.addInstruction({instructions:[eu({poolInfo:n,poolKeys:v,userKeys:{baseTokenAccount:ee,quoteTokenAccount:ft,lpTokenAccount:Si,owner:this.scope.ownerPubKey},baseAmountIn:F,quoteAmountIn:H,fixedSide:I})],instructionTypes:[n.pooltype.includes("StablePool")?E.AmmV5AddLiquidity:E.AmmV4AddLiquidity],lookupTableAddress:v.lookupTableAccount?[v.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 je(n.mintA.address),new je(n.mintB.address),new je(n.lpMint.address)];this.logDebug("amountIn:",i),i.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",i.toString());let{account:d}=this.scope,p=await d.getCreatedTokenAccount({mint:m,associatedOnly:!1});p||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",d.tokenAccounts);let y=await d.getCreatedTokenAccount({mint:c}),f=await d.getCreatedTokenAccount({mint:l}),b=this.createTxBuilder(),{bypassAssociatedCheck:g,checkCreateATAOwner:P}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),B=await d.handleTokenAccount({side:"out",amount:0,mint:c,tokenAccount:y,bypassAssociatedCheck:g,checkCreateATAOwner:P}),{tokenAccount:A}=B,T=Ie(B,["tokenAccount"]);b.addInstruction(T);let x=await d.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:g,checkCreateATAOwner:P}),{tokenAccount:h}=x,I=Ie(x,["tokenAccount"]);return b.addInstruction(I),b.addInstruction({instructions:[Xo({poolInfo:n,poolKeys:u,userKeys:{lpTokenAccount:p,baseTokenAccount:A,quoteTokenAccount:h,owner:this.scope.ownerPubKey},amountIn:i})],lookupTableAddress:u.lookupTableAccount?[u.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?E.AmmV5RemoveLiquidity:E.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=wi,checkCreateATAOwner:d=!0,getEphemeralSigners:p,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||be(this.scope.ownerPubKey,ee.accountInfo.mint,wi).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 ot(0)),A=t.mintA.address===pe.WSOL.mint.toString(),T=t.mintB.address===pe.WSOL.mint.toString(),{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:wi,mint:new je(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:A?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!0,checkCreateATAOwner:d});if(f.addInstruction(I||{}),h===void 0)throw new Error("base token account not found");let{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:wi,mint:new je(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:T?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!T,notUseTokenAccount:T,associatedOnly:!0,checkCreateATAOwner:d});if(f.addInstruction(x||{}),B===void 0)throw new Error("quote token account not found");if(b[t.mintA.address]=h,b[t.mintB.address]=B,s!==void 0&&!(a!=null&&a.isZero())){let ee=[];for(let Dt of s.rewardInfos){let Rr=Dt.mint.address===pe.WSOL.mint.toString();if(b[Dt.mint.address])ee.push(b[Dt.mint.address]);else{let{account:Vn,instructionParams:bs}=await this.scope.account.getOrCreateTokenAccount({mint:new je(Dt.mint.address),tokenProgram:m,owner:this.scope.ownerPubKey,skipCloseAccount:!Rr,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:d});Vn||this.logAndCreateError("farm reward account not found:",Dt.mint.address),bs&&f.addInstruction(bs),ee.push(Vn)}}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},_n=At[s.programId],Si=_n===6?sr(ft):_n===5?ar(ft):ur(ft),Ki={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};f.addInstruction({instructions:[Si],instructionTypes:[Ki[_n]]})}let K=await this.getAmmPoolKeys(t.id),M=Xo({poolInfo:t,poolKeys:K,userKeys:{lpTokenAccount:g,baseTokenAccount:h,quoteTokenAccount:B,owner:this.scope.ownerPubKey},amountIn:P});f.addInstruction({instructions:[M],instructionTypes:[t.pooltype.includes("StablePool")?E.AmmV5RemoveLiquidity:E.AmmV4RemoveLiquidity],lookupTableAddress:K.lookupTableAccount?[K.lookupTableAccount]:[]});let[F,H]=t.mintA.address===n.mintA.address?[h,B]:[B,h],v=await this.scope.clmm.getClmmPoolKeys(t.id),j=await Se.openPositionFromBaseInstructions(D(N({poolInfo:n,poolKeys:v,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:F,tokenAccountB:H},withMetadata:"create"},o),{base:u,getEphemeralSigners:p}));return f.addInstruction({instructions:[...j.instructions],signers:j.signers,instructionTypes:[...j.instructionTypes],lookupTableAddress:v.lookupTableAccount?[v.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:d,txVersion:p,feeDestinationId:y,computeBudgetConfig:f}){var H;let b=c.feePayer||((H=this.scope.owner)==null?void 0:H.publicKey),g=c.useSOLBalance&&i.mint.equals(Bu),P=c.useSOLBalance&&o.mint.equals(Bu),A=this.createTxBuilder(),{account:T,instructionParams:h}=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(h||{});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||{}),T===void 0||I===void 0)throw Error("you don't has some token account");let x=xu({version:4,marketVersion:3,marketId:n.marketId,baseMint:i.mint,quoteMint:o.mint,baseDecimals:i.decimals,quoteDecimals:o.decimals,programId:t,marketProgramId:n.programId}),K={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:M,instructionType:F}=tu(D(N({},K),{userWallet:this.scope.ownerPubKey,userCoinVault:T,userPcVault:I,userLpVault:be(this.scope.ownerPubKey,x.lpMint,d).publicKey,nonce:x.nonce,openTime:u,coinAmount:s,pcAmount:a}));return A.addInstruction({instructions:[M],instructionTypes:[F]}),A.addCustomComputeBudget(f),A.versionBuild({txVersion:p,extInfo:{address:K}})}async getCreatePoolFee({programId:t}){let n=ts({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return Ya.decode(i.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:i,mintOut:o,slippage:s}){if(i!==t.mintA.address&&i!==t.mintB.address)throw new Error("toke not match");if(o!==t.mintA.address&&o!==t.mintB.address)throw new Error("toke not match");let{baseReserve:a,quoteReserve:u}=t,c=[a,u],l=i==t.mintA.address?"base":"quote";l==="quote"&&c.reverse();let[m,d]=c,p=t.programId===to.toBase58(),y;if(p)y=new _(d.toString()).div(m.toString());else{let x=Ja(this.stableLayout.stableModelData,a.toNumber(),u.toNumber(),!1);l==="quote"?y=new _(1e6).div(x*1e6):y=new _(x*1e6).div(1e6)}let f=n,b=new ot(0),g=new ot(0);if(!f.isZero())if(p){g=Yt(f.mul(hu),Tu);let x=f.sub(g),K=m.add(x);b=d.mul(x).div(K)}else{g=f.mul(new ot(2)).div(new ot(1e4));let x=f.sub(g);l==="quote"?b=new ot(ja(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber())):b=new ot(Za(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber()))}let P=new ot(new _(b.toString()).mul(1-s).toFixed(0)),A=b,T=P,h=new _(b.toString()).div(new _(f.sub(g).toString()).toFixed(0));!f.isZero()&&!b.isZero()&&(h=new _(b.toString()).div(f.sub(g).toString()));let I=y.sub(h).div(y).mul(100);return{amountOut:A,minAmountOut:T,currentPrice:y,executionPrice:h,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],d=await this.scope.account.getCreatedTokenAccount({mint:new je(l.address),programId:new je(l.programId),associatedOnly:!1}),p=await this.scope.account.getCreatedTokenAccount({mint:new je(m.address),programId:new je(m.programId),associatedOnly:!1}),T=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new je(l.address),tokenAccount:d,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=T,f=Ie(T,["tokenAccount"]);c.addInstruction(f);let h=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new je(m.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:b}=h,g=Ie(h,["tokenAccount"]);c.addInstruction(g);let P=await this.getAmmPoolKeys(t.id),A=4;return t.pooltype.includes("StablePool")&&(A=5),c.addInstruction({instructions:[mi({version:A,poolKeys:P,userKeys:{tokenAccountIn:y,tokenAccountOut:b,owner:this.scope.ownerPubKey},amountIn:n,amountOut:i,fixedSide:s})],instructionTypes:[A===4?E.AmmV4SwapBaseIn:E.AmmV5SwapBaseIn]}),c.addCustomComputeBudget(u),c.versionBuild({txVersion:a})}async getRpcPoolInfo(t){return(await this.getRpcPoolInfos([t]))[t]}async getRpcPoolInfos(t){let n=await this.scope.connection.getMultipleAccountsInfo(t.map(c=>new je(c))),i={},o=[];for(let c=0;c<t.length;c++){let l=n[c];if(l===null)throw Error("fetch pool info error: "+String(t[c]));let m=Wo.decode(l.data);i[String(t[c])]=m,o.push(m.baseVault,m.quoteVault)}let s={},a=await this.scope.connection.getMultipleAccountsInfo(o.map(c=>new je(c)));for(let c=0;c<o.length;c++){let l=a[c];if(l===null)throw Error("fetch vault info error: "+o[c]);s[String(o[c])]=new ot(fp.decode(l.data).amount.toString())}let u={};for(let[c,l]of Object.entries(i)){let m=s[l.baseVault.toString()].sub(l.baseNeedTakePnl),d=s[l.quoteVault.toString()].sub(l.quoteNeedTakePnl);u[c]=D(N({},l),{baseReserve:m,quoteReserve:d,poolPrice:new _(d.toString()).div(new _(10).pow(l.quoteDecimal.toString())).div(new _(m.toString()).div(new _(10).pow(l.baseDecimal.toString())))})}return u}};import{PublicKey as ue}from"@solana/web3.js";import mt from"bn.js";var Ar=class extends Be{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,d=this.createTxBuilder(),[p,y,f]=new mt(new ue(i.address).toBuffer()).gt(new mt(new ue(o.address).toBuffer()))?[o,i,new _(1).div(a)]:[i,o,a],b=Z.priceToSqrtPriceX64(f,p.decimals,y.decimals),g=await Se.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:p,mintB:y,ammConfigId:s.id,initialPriceX64:b,startTime:u,forerunCreate:l});return d.addInstruction(g),d.addCustomComputeBudget(c),d.versionBuild({txVersion:m,extInfo:{address:D(N({},g.address),{programId:t.toString(),id:g.address.poolId.toString(),mintA:p,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:N({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:g.address.poolId.toString(),mintA:p,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:[]}},fu),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:d,computeBudgetConfig:p,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===ne.toString(),A=n.useSOLBalance&&e.mintB.address===ne.toString(),[T,h]=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||T.isZero()?{payer:this.scope.ownerPubKey,amount:T}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});I&&(b=I),f.addInstruction(B||{});let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ue(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||h.isZero()?{payer:this.scope.ownerPubKey,amount:h}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:A?!1:c,checkCreateATAOwner:l});x&&(g=x),f.addInstruction(K||{}),(!b||!g)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let M=t||await this.getClmmPoolKeys(e.id),F=await Se.openPositionFromBaseInstructions({poolInfo:e,poolKeys:M,ownerInfo:D(N({},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:d});return f.addInstruction(F),f.addCustomComputeBudget(p),f.versionBuild({txVersion:y,extInfo:F.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:d,getEphemeralSigners:p}){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===ne.toBase58(),P=n.useSOLBalance&&e.mintB.address===ne.toBase58(),{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ue(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:g||i.isZero()?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!g,notUseTokenAccount:g,associatedOnly:g?!1:c,checkCreateATAOwner:l});A&&(f=A),y.addInstruction(T||{});let{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ue(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:P||o.isZero()?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});h&&(b=h),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 Se.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:p});return y.addInstruction(x),y.versionBuild({txVersion:d,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,d=this.createTxBuilder(),p,y,f=a.useSOLBalance&&t.mintA.address===ne.toString(),b=a.useSOLBalance&&t.mintB.address===ne.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||i.isZero()?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(p=g),d.addInstruction(P||{});let{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ue(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b||o.isZero()?{payer:this.scope.ownerPubKey,amount:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});A&&(y=A),d.addInstruction(T||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let h=await this.getClmmPoolKeys(t.id),I=Se.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:h,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},liquidity:s,amountMaxA:i,amountMaxB:o});return d.addInstruction(I),d.addCustomComputeBudget(l),d.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,d=this.createTxBuilder(),p,y,f=a.useSOLBalance&&t.mintA.address===ne.toString(),b=a.useSOLBalance&&t.mintB.address===ne.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||(i==="MintA"?o:s).isZero()?{payer:this.scope.ownerPubKey,amount:i==="MintA"?o:s}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(p=g),d.addInstruction(P||{});let{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ue(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b||(i==="MintA"?s:o).isZero()?{payer:this.scope.ownerPubKey,amount:i==="MintA"?s:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});A&&(y=A),d.addInstruction(T||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let h=await this.getClmmPoolKeys(t.id),I=Se.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:h,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},base:i,baseAmount:o,otherAmountMax:s});return d.addInstruction(I),d.addCustomComputeBudget(l),d.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 d=this.createTxBuilder(),p=i.useSOLBalance&&t.mintA.address===ne.toString(),y=i.useSOLBalance&&t.mintB.address===ne.toString(),f,b,{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ue(t.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!p,associatedOnly:p?!1:u,checkCreateATAOwner:c});f=g,P&&d.addInstruction(P);let{account:A,instructionParams:T}=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,T&&d.addInstruction(T);let h=[];for(let K of t.rewardDefaultInfos){let M=i.useSOLBalance&&K.mint.address===ne.toString(),F;if(K.mint.address===t.mintA.address)F=f;else if(K.mint.address===t.mintB.address)F=b;else{let{account:H,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(K.mint.programId),mint:new ue(K.mint.address),notUseTokenAccount:M,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!M,associatedOnly:M?!1:u,checkCreateATAOwner:c});F=H,v&&d.addInstruction(v)}h.push(F)}!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let I=await this.getClmmPoolKeys(t.id),B=await Se.decreaseLiquidityInstructions({poolInfo:t,poolKeys:I,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:h},liquidity:a,amountMinA:o,amountMinB:s});d.addInstruction({instructions:B.instructions,instructionTypes:[E.ClmmDecreasePosition]});let x=N({},B.address);if(i.closePosition){let K=await Se.closePositionInstructions({poolInfo:t,poolKeys:I,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});d.addInstruction({endInstructions:K.instructions,endInstructionTypes:K.instructionTypes}),x=N(N({},x),K.address)}return d.addCustomComputeBudget(l),d.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=Se.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()===ne.toString(),l=n.perSecond.mul(n.endTime-n.openTime),{account:m,instructionParams:d}=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 _(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:c?!1:i,checkCreateATAOwner:o});d&&u.addInstruction(d),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),y=Se.initRewardInstructions({poolInfo:e,poolKeys:p,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:J.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===ne.toString(),d=l.perSecond.mul(l.endTime-l.openTime),{account:p,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 _(d.toFixed(0)).gte(d)?d.toFixed(0):d.add(1).toFixed(0))}:void 0,associatedOnly:m?!1:i,checkCreateATAOwner:o});y&&u.addInstruction(y),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),b=Se.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{programId:new ue(l.mint.programId),mint:new ue(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:J.decimalToX64(l.perSecond)}});c=N(N({},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(ne),{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 _(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 d=await this.getClmmPoolKeys(e.id),p=Se.setRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:J.decimalToX64(n.perSecond)}});return u.addInstruction(p),u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:p.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===ne.toString(),{account:d,instructionParams:p}=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 _(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});p&&u.addInstruction(p),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let y=await this.getClmmPoolKeys(e.id),f=Se.setRewardInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{mint:new ue(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:J.decimalToX64(l.perSecond)}});u.addInstruction(f),c=N(N({},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(p=>p.mint.address===n.toString());s||this.logAndCreateError("reward mint error","not found reward mint",n);let a=this.createTxBuilder(),u=t.useSOLBalance&&n.equals(ne),{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),d=Se.collectRewardInstructions({poolInfo:e,poolKeys:m,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:c},rewardMint:n});return a.addInstruction(d),a.build({address:d.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(ne),{account:m,instructionParams:d}=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),d&&s.addInstruction(d);let p=await this.getClmmPoolKeys(e.id),y=Se.collectRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:u});s.addInstruction(y),a=N(N({},a),y.address)}return s.build({address:a})}async swap({poolInfo:e,inputMint:t,amountIn:n,amountOutMin:i,priceLimit:o,observationId:s,ownerInfo:a,remainingAccounts:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,txVersion:m}){let d=this.createTxBuilder(),p=a.useSOLBalance&&e.mintA.address===ne.toBase58(),y=a.useSOLBalance&&e.mintB.address===ne.toBase58(),f;!o||o.equals(new _(0))?f=t.toString()===e.mintA.address?Kt.add(new mt(1)):Ct.sub(new mt(1)):f=Z.priceToSqrtPriceX64(o,e.mintA.decimals,e.mintB.decimals);let b;if(!b){let{account:A,instructionParams:T}=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:a.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:c,checkCreateATAOwner:l});b=A,T&&d.addInstruction(T)}let g;if(!g){let{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ue(e.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:{payer:a.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:y?!1:c,checkCreateATAOwner:l});g=A,T&&d.addInstruction(T)}(!b||!g)&&this.logAndCreateError("user do not have token account",this.scope.account.tokenAccountRawInfos);let P=await this.getClmmPoolKeys(e.id);return d.addInstruction(Se.makeSwapBaseInInstructions({poolInfo:e,poolKeys:P,observationId:s,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g},inputMint:new ue(t),amountIn:n,amountOutMin:i,sqrtPriceLimitX64:f,remainingAccounts:u})),d.versionBuild({txVersion:m})}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?be(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(T=>!T.rewardAmountOwed.isZero())))continue;let d=m,p=n.useSOLBalance&&d.mintA.address===ne.toString(),y=n.useSOLBalance&&d.mintB.address===ne.toString(),f=c[d.mintA.address];if(!f){let{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintA.programId,mint:new ue(d.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:i,checkCreateATAOwner:o});f=A,T&&l.addInstruction(T)}let b=c[d.mintB.address];if(!b){let{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintB.programId,mint:new ue(d.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,T&&l.addInstruction(T)}c[d.mintA.address]=f,c[d.mintB.address]=b;let g=[];for(let A of d.rewardDefaultInfos){let T=n.useSOLBalance&&A.mint.address===ne.toString(),h=c[A.mint.address];if(!h){let{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(A.mint.programId),mint:new ue(A.mint.address),notUseTokenAccount:T,owner:this.scope.ownerPubKey,skipCloseAccount:!T,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:T?!1:i});h=I,B&&l.addInstruction(B)}c[A.mint.address]=h,g.push(h)}let P=await this.getClmmPoolKeys(d.id);for(let A of t[m.id]){let T=Se.decreaseLiquidityInstructions({poolInfo:d,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(T)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:u}):l.sizeCheckBuild({computeBudgetConfig:u})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(dr(e).publicKey);return t?gu.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=gi.decode(s.data);o.push(a)}),o}async getRpcClmmPoolInfo({poolId:e}){return(await this.getRpcClmmPoolInfos({poolIds:[e]}))[String(e)]}async getRpcClmmPoolInfos({poolIds:e}){let t=await this.scope.connection.getMultipleAccountsInfo(e.map(i=>new ue(i))),n={};for(let i=0;i<e.length;i++){let o=t[i];if(o===null)throw Error("fetch pool info error: "+String(e[i]));let s=bi.decode(o.data),a=Z.sqrtPriceX64ToPrice(s.sqrtPriceX64,s.mintDecimalsA,s.mintDecimalsB).toNumber();n[String(e[i])]=D(N({},s),{currentPrice:a})}return n}};import{PublicKey as X}from"@solana/web3.js";import{NATIVE_MINT as Pi,TOKEN_PROGRAM_ID as en,AccountLayout as Kp}from"@solana/spl-token";var yp=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),bp=Buffer.from("amm_config","utf8"),gp=Buffer.from("pool","utf8"),wp=Buffer.from("pool_lp_mint","utf8"),Ap=Buffer.from("pool_vault","utf8"),Pp=Buffer.from("observation","utf8");function kp(r){return oe([yp],r)}function hp(r,e){return oe([bp,xp(e)],r)}function Tp(r,e,t,n){return oe([gp,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Ip(r,e){return oe([wp,e.toBuffer()],r)}function Su(r,e,t){return oe([Ap,e.toBuffer(),t.toBuffer()],r)}function Ai(r,e){return oe([Pp,e.toBuffer()],r)}function xp(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function Ku({programId:r,mintA:e,mintB:t}){let n=hp(r,0).publicKey,i=kp(r).publicKey,o=Tp(r,n,e,t).publicKey,s=Ip(r,o).publicKey,a=Su(r,o,e).publicKey,u=Su(r,o,t).publicKey,c=Ai(r,o).publicKey;return{poolId:o,configId:n,authority:i,lpMint:s,vaultA:a,vaultB:u,observationId:c}}import{TransactionInstruction as Pr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ns,TOKEN_2022_PROGRAM_ID as Cu,ASSOCIATED_TOKEN_PROGRAM_ID as Bp}from"@solana/spl-token";var Sp=ae("Raydium_cpmm"),kr={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 Ru(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P,A){let T=L([w("amountMaxA"),w("amountMaxB"),w("openTime")]),h=[{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:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:ns,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:Bp,isSigner:!1,isWritable:!1},{pubkey:Wr,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1}],I=Buffer.alloc(T.span);return T.encode({amountMaxA:g,amountMaxB:P,openTime:A},I),new Pr({keys:h,programId:r,data:Buffer.from([...kr.initialize,...I])})}function Lu(r,e,t,n,i,o,s,a,u,c,l,m,d,p,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:ns,isSigner:!1,isWritable:!1},{pubkey:Cu,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 Sp.debug("cpmm deposit data",{lpAmount:d.toString(),amountMaxA:p.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:d,amountMaxA:p,amountMaxB:y},g),new Pr({keys:b,programId:r,data:Buffer.from([...kr.deposit,...g])})}function Ou(r,e,t,n,i,o,s,a,u,c,l,m,d,p,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:ns,isSigner:!1,isWritable:!1},{pubkey:Cu,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:Fs,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);return f.encode({lpAmount:d,amountMinA:p,amountMinB:y},g),new Pr({keys:b,programId:r,data:Buffer.from([...kr.withdraw,...g])})}function Nu(r,e,t,n,i,o,s,a,u,c,l,m,d,p,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:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],P=Buffer.alloc(b.span);return b.encode({amountIn:y,amounOutMin:f},P),new Pr({keys:g,programId:r,data:Buffer.from([...kr.swapBaseInput,...P])})}function Mu(r,e,t,n,i,o,s,a,u,c,l,m,d,p,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:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],P=Buffer.alloc(b.span);return b.encode({amountInMax:y,amountOut:f},P),new Pr({keys:g,programId:r,data:Buffer.from([...kr.swapBaseOutput,...P])})}import et from"bn.js";var _u=L([fe(8),V("bump"),qe("disableCreatePool"),Bt("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),S("protocolOwner"),S("fundOwner"),q(w(),16)]),Vu=L([fe(8),S("configId"),S("poolCreator"),S("vaultA"),S("vaultB"),S("mintLp"),S("mintA"),S("mintB"),S("mintProgramA"),S("mintProgramB"),S("observationId"),V("bump"),V("status"),V("lpDecimals"),V("mintDecimalA"),V("mintDecimalB"),w("lpAmount"),w("protocolFeesMintA"),w("protocolFeesMintB"),w("fundFeesMintA"),w("fundFeesMintB"),w("openTime"),q(w(),32)]);var hr=class extends Be{constructor(e){super(e)}async load(){this.checkDisabled()}async getCpmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async getRpcPoolInfo(e,t){return(await this.getRpcPoolInfos([e],t))[e]}async getRpcPoolInfos(e,t){let n=await this.scope.connection.getMultipleAccountsInfo(e.map(m=>new X(m))),i={},o=new Set,s=[];for(let m=0;m<e.length;m++){let d=n[m];if(d===null)throw Error("fetch pool info error: "+String(e[m]));let p=Vu.decode(d.data);i[String(e[m])]=p,o.add(String(p.configId)),s.push(p.vaultA,p.vaultB)}let a={};if(t){let m=[...o],d=await this.scope.connection.getMultipleAccountsInfo(m.map(p=>new X(p)));for(let p=0;p<m.length;p++){let y=d[p];if(y===null)throw Error("fetch pool config error: "+m[p]);a[m[p]]=_u.decode(y.data)}}let u={},c=await this.scope.connection.getMultipleAccountsInfo(s.map(m=>new X(m)));for(let m=0;m<s.length;m++){let d=c[m];if(d===null)throw Error("fetch vault info error: "+s[m]);u[String(s[m])]=new et(Kp.decode(d.data).amount.toString())}let l={};for(let[m,d]of Object.entries(i)){let p=u[d.vaultA.toString()].sub(d.protocolFeesMintA).sub(d.fundFeesMintA),y=u[d.vaultB.toString()].sub(d.protocolFeesMintB).sub(d.fundFeesMintB);l[m]=D(N({},d),{baseReserve:p,quoteReserve:y,configInfo:a[d.configId.toString()],poolPrice:new _(y.toString()).div(new _(10).pow(d.mintDecimalB)).div(new _(p.toString()).div(new _(10).pow(d.mintDecimalA)))})}return l}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=Ie(m,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var H,v,j;let d=i.feePayer||((H=this.scope.owner)==null?void 0:H.publicKey),p=new et(new X(c.mintA.address).toBuffer()).lte(new et(new X(c.mintB.address).toBuffer())),[y,f]=p?[c.mintA,c.mintB]:[c.mintB,c.mintA],[b,g]=p?[c.mintAAmount,c.mintBAmount]:[c.mintBAmount,c.mintAAmount],P=i.useSOLBalance&&y.address===Pi.toBase58(),A=i.useSOLBalance&&f.address===Pi.toBase58(),[T,h]=[new X(y.address),new X(f.address)],I=this.createTxBuilder(),{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({mint:T,tokenProgram:y.programId,owner:this.scope.ownerPubKey,createInfo:P?{payer:d,amount:b}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:o,checkCreateATAOwner:s});I.addInstruction(x||{});let{account:K,instructionParams:M}=await this.scope.account.getOrCreateTokenAccount({mint:new X(f.address),tokenProgram:f.programId,owner:this.scope.ownerPubKey,createInfo:A?{payer:d,amount:g}:void 0,notUseTokenAccount:A,skipCloseAccount:!A,associatedOnly:A?!1:o,checkCreateATAOwner:s});if(I.addInstruction(M||{}),B===void 0||K===void 0)throw Error("you don't has some token account");let F=Ku({programId:e,mintA:T,mintB:h});return I.addInstruction({instructions:[Ru(e,this.scope.ownerPubKey,F.configId,F.authority,F.poolId,T,h,F.lpMint,B,K,be(this.scope.ownerPubKey,F.lpMint).publicKey,F.vaultA,F.vaultB,t,new X((v=y.programId)!=null?v:en),new X((j=f.programId)!=null?j:en),F.observationId,b,g,n)],instructionTypes:[E.CpmmCreatePool]}),I.addCustomComputeBudget(u),I.versionBuild({txVersion:a,extInfo:{address:D(N({},F),{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:d}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},u),p=await this.getRpcPoolInfo(t.id),{liquidity:y,inputAmountFee:f,anotherAmount:b}=s||this.computePairAmount({poolInfo:D(N({},t),{mintAmountA:new _(p.baseReserve.toString()).div(10**t.mintA.decimals).toNumber(),mintAmountB:new _(p.quoteReserve.toString()).div(10**t.mintB.decimals).toNumber(),lpAmount:new _(p.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),slippage:o,baseIn:i,epochInfo:await this.scope.fetchEpochInfo(),amount:new _(n.toString()).div(10**(i?t.mintA.decimals:t.mintB.decimals))}),g=b.amount,P=t.mintA.address===Pi.toString(),A=t.mintB.address===Pi.toString(),T=this.createTxBuilder(),[h,I]=[new X(t.mintA.address),new X(t.mintB.address)],{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new X(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:d});T.addInstruction(x||{});let{account:K,instructionParams:M}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new X(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:d});T.addInstruction(M||{}),!B&&!K&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let F=await l.getCreatedTokenAccount({mint:new X(t.lpMint.address)}),ee=await l.handleTokenAccount({side:"out",amount:0,mint:new X(t.lpMint.address),tokenAccount:F,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:H}=ee,v=Ie(ee,["tokenAccount"]);T.addInstruction(v);let j=await this.getCpmmPoolKeys(t.id);return T.addInstruction({instructions:[Lu(new X(t.programId),this.scope.ownerPubKey,new X(j.authority),new X(t.id),H,B,K,new X(j.vault.A),new X(j.vault.B),h,I,new X(t.lpMint.address),y,i?f.amount:g,i?g:f.amount)],instructionTypes:[E.CpmmAddLiquidity],lookupTableAddress:j.lookupTableAccount?[j.lookupTableAccount]:[]}),T.addCustomComputeBudget(a),T.versionBuild({txVersion:c})}async withdrawLiquidity(e){var H,v;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 et(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(),[d,p]=[Pe(c,t.mintA.extensions.feeConfig,m,!0),Pe(l,t.mintB.extensions.feeConfig,m,!0)],{account:y}=this.scope,f=this.createTxBuilder(),[b,g]=[new X(t.mintA.address),new X(t.mintB.address)],P=b.equals(ne),A=g.equals(ne),T,h,{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new X(t.mintA.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!P,associatedOnly:!P,checkCreateATAOwner:!1});T=I,B&&f.addInstruction(B);let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new X(t.mintB.address),notUseTokenAccount:A,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!A,associatedOnly:!A,checkCreateATAOwner:!1});h=x,K&&f.addInstruction(K),(!T||!h)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",y.tokenAccounts);let M=await y.getCreatedTokenAccount({mint:new X(t.lpMint.address)});M||this.logAndCreateError("cannot found lp token account","tokenAccounts",y.tokenAccounts);let F=await this.getCpmmPoolKeys(t.id);return f.addInstruction({instructions:[Ou(new X(t.programId),this.scope.ownerPubKey,new X(F.authority),new X(t.id),M,T,h,new X(F.vault.A),new X(F.vault.B),b,g,new X(t.lpMint.address),n,c.sub((H=d.fee)!=null?H:new et(0)),l.sub((v=p.fee)!=null?v:new et(0)))],instructionTypes:[E.CpmmWithdrawLiquidity],lookupTableAddress:F.lookupTableAccount?[F.lookupTableAccount]:[]}),f.addCustomComputeBudget(o),f.versionBuild({txVersion:s})}async swap(e){var T,h,x,K,M,F;let{poolInfo:t,baseIn:n,swapResult:i,config:o,computeBudgetConfig:s,txVersion:a}=e,{bypassAssociatedCheck:u,checkCreateATAOwner:c}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),l=this.createTxBuilder(),[m,d]=[new X(t.mintA.address),new X(t.mintB.address)],p=await this.scope.account.getCreatedTokenAccount({programId:new X((T=t.mintA.programId)!=null?T:en),mint:m,associatedOnly:!1}),y=await this.scope.account.getCreatedTokenAccount({programId:new X((h=t.mintB.programId)!=null?h:en),mint:d,associatedOnly:!1}),I=await this.scope.account.handleTokenAccount({side:n?"in":"out",amount:n?i.sourceAmountSwapped:i.destinationAmountSwapped,mint:m,tokenAccount:p,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:f}=I,b=Ie(I,["tokenAccount"]);l.addInstruction(b);let B=await this.scope.account.handleTokenAccount({side:n?"out":"in",amount:n?i.destinationAmountSwapped:i.sourceAmountSwapped,mint:d,tokenAccount:y,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:g}=B,P=Ie(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?Nu(new X(t.programId),this.scope.ownerPubKey,new X(A.authority),new X(A.config.id),new X(t.id),f,g,new X(A.vault.A),new X(A.vault.B),new X((x=t.mintA.programId)!=null?x:en),new X((K=t.mintB.programId)!=null?K:en),m,d,Ai(new X(t.programId),new X(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped):Mu(new X(t.programId),this.scope.ownerPubKey,new X(A.authority),new X(A.config.id),new X(t.id),g,f,new X(A.vault.B),new X(A.vault.A),new X((M=t.mintB.programId)!=null?M:en),new X((F=t.mintA.programId)!=null?F:en),d,m,Ai(new X(t.programId),new X(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped)],instructionTypes:[n?E.CpmmSwapBaseIn:E.CpmmSwapBaseOut]}),l.addCustomComputeBudget(s),l.versionBuild({txVersion:a})}computePairAmount({poolInfo:e,amount:t,slippage:n,epochInfo:i,baseIn:o}){var P,A,T,h,I,B,x,K;let s=1-Number(n.toSignificant())/100,a=new et(new _(t).mul(10**e[o?"mintA":"mintB"].decimals).mul(s).toFixed(0)),u=Pe(a,e[o?"mintA":"mintB"].extensions.feeConfig,i,!1),c=a.sub((P=u.fee)!=null?P:new et(0)),[l,m]=[new et(new _(e.mintAmountA).mul(10**e.mintA.decimals).toString()),new et(new _(e.mintAmountB).mul(10**e.mintB.decimals).toString())],d=new et(new _(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,_.ROUND_DOWN));this.logDebug("baseReserve:",l.toString(),"quoteReserve:",m.toString()),this.logDebug("tokenIn:",o?e.mintA.symbol:e.mintB.symbol,"amountIn:",a.toString(),"amountInFee:",(T=(A=u.fee)==null?void 0:A.toString())!=null?T:0,"anotherToken:",o?e.mintB.symbol:e.mintA.symbol,"slippage:",`${n.toSignificant()}%`);let p=o?"base":"quote";this.logDebug("input side:",p);let y=c.mul(d).div(p==="base"?l:m),f={amount:Ke,fee:void 0,expirationTime:void 0};c.isZero()||(f=Pe(Cp(y,l,m,d)[o?"amountB":"amountA"],e[o?"mintB":"mintA"].extensions.feeConfig,i,!0));let b=new ve(new et(1)).add(n),g=Pe(b.mul(f.amount.sub((h=f.fee)!=null?h:new et(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:",(K=(x=g.fee)==null?void 0:x.toString())!=null?K:0),{inputAmountFee:u,anotherAmount:f,maxAnotherAmount:g,liquidity:y}}};function Cp(r,e,t,n){let i=r.mul(e).div(n);!i.isZero()&&!r.mul(e).mod(n).isZero()&&(i=i.add(new et(1)));let o=r.mul(t).div(n);return!o.isZero()&&!r.mul(t).mod(n).isZero()&&(o=o.add(new et(1))),{amountA:i,amountB:o}}var Tr=class extends Be{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(Ke)?-1:1:i.baseReserve.sub(o.quoteReserve).gte(Ke)?-1:1}async getWSolAccounts(){this.scope.checkOwner(),await this.scope.account.fetchWalletTokenAccounts();let e=this.scope.account.tokenAccounts.filter(t=>t.mint.equals(ne));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 Vt({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:[_t({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),a.sub(i[u].amount)):(o.addInstruction({instructions:[_t({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 Vt({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:[_t({tokenAccount:o.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),i.build()}};import{TOKEN_PROGRAM_ID as Rp}from"@solana/spl-token";import{PublicKey as Lp,Transaction as rs,TransactionInstruction as Op}from"@solana/web3.js";import Eu from"bn.js";var Ze=class extends Be{static getPdaPoolId(e,t){return oe([Ze.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,i){return oe([Ze.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new Eu(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=>Ze.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<Ze.VERSION_PROJECT.length;l++)a.push(...s.map(m=>Ze.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),d=l%n.length,p=s[d],y=a[l],f=u[d],b=u[n.length+l];if(!(f&&b)||f.data.length!==Ze.POOL_LAYOUT.span||b.data.length!==Ze.OWNER_LAYOUT.span)continue;let g=Ze.POOL_LAYOUT.decode(f.data),P=Ze.OWNER_LAYOUT.decode(b.data),A=g.openTime.toNumber(),T=g.endTime.toNumber(),h=P.tokenInfo.map(x=>x.debtAmount.gt(new Eu(0))).filter(x=>!x).length!==3,I=o>A&&o<T&&g.status===1,B=h&&I;c.push({programId:t,poolId:p,ammId:g.ammId,ownerAccountId:y,snapshotLpAmount:P.lpAmount,project:Ze.VERSION_PROJECT[m],openTime:A,endTime:T,canClaim:B,canClaimErrorType:h?I?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:g.tokenInfo.map((x,K)=>({mintAddress:x.mintAddress,mintVault:x.mintVault,mintDecimals:x.mintDecimals,perLpLoss:x.perLpLoss,debtAmount:P.tokenInfo[K].debtAmount.add(P.tokenInfo[K].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(pe.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!u.mintAddress.equals(pe.WSOL.mint),associatedOnly:u.mintAddress.equals(pe.WSOL.mint)?!1:t.associatedOnly});l&&n.addInstruction(l),o.push(c)}n.addInstruction({instructions:[Ze.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:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({mint:m.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:m.mintAddress.equals(pe.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!m.mintAddress.equals(pe.WSOL.mint),associatedOnly:m.mintAddress.equals(pe.WSOL.mint)?!1:t.associatedOnly});p&&n.addInstruction(p),d&&(o[m.mintAddress.toString()]=d,l.push(d))}n.addInstruction({instructions:[Ze.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 Hr(u,[i,...a.map(c=>c.publicKey)])?[{transaction:s,signer:a}]:[{transaction:new rs().add(...u.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new rs().add(...u.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new rs().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:Rp,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 Op({keys:o,programId:e,data:a})}},dt=Ze;dt.CLAIMED_NUM=3,dt.POOL_LAYOUT=L([fe(8),V("bump"),V("status"),w("openTime"),w("endTime"),S("ammId"),q(L([V("mintDecimals"),S("mintAddress"),S("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),Ze.CLAIMED_NUM,"tokenInfo"),q(w(),10,"padding")]),dt.OWNER_LAYOUT=L([fe(8),V("bump"),V("version"),S("poolId"),S("owner"),w("lpAmount"),q(L([S("mintAddress"),w("debtAmount"),w("claimedAmount")]),Ze.CLAIMED_NUM,"tokenInfo"),q(w(),4,"padding")]),dt.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new Lp(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 Ir}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as qu}from"@solana/spl-token";import xr from"bn.js";import{TransactionInstruction as Mp,SYSVAR_RENT_PUBKEY as _p}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Fu}from"@solana/spl-token";import{createInitializeAccountInstruction as vu}from"@solana/spl-token";import{SystemProgram as bn,Transaction as Wu}from"@solana/web3.js";function Np(r="accountFlags"){let e=new ri(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 is=L([fe(5),Np("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"),fe(7)]);function Vp({programId:r,marketInfo:e}){let t=L([V("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:_p,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 Mp({keys:n,programId:r,data:i})}async function Du({connection:r,wallet:e,marketInfo:t}){let n=new Wu,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:Fu}),bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:i,space:165,programId:Fu}),vu(t.baseVault.publicKey,t.baseMint,t.vaultOwner),vu(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let o=new Wu;return o.add(bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await r.getMinimumBalanceForRentExemption(is.span),space:is.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}),Vp({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:[E.CreateAccount,E.CreateAccount,E.InitAccount,E.InitAccount]},{transaction:o,signer:[],instructionTypes:[E.CreateAccount,E.CreateAccount,E.CreateAccount,E.CreateAccount,E.CreateAccount,E.InitMarket]}]}var On=class extends Be{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}),d=Ye({fromPublicKey:u,programId:o}),p=Ye({fromPublicKey:u,programId:o}),y=Ye({fromPublicKey:u,programId:qu}),f=Ye({fromPublicKey:u,programId:qu}),b=0,g=new xr(100);function P(){let K=new xr(0);for(;;)try{return{vaultOwner:Ir.createProgramAddressSync([c.publicKey.toBuffer(),K.toArrayLike(Buffer,"le",8)],o),vaultSignerNonce:K}}catch{if(K.iaddn(1),K.gt(new xr(25555)))throw Error("find vault owner error")}}let{vaultOwner:A,vaultSignerNonce:T}=P(),h=new xr(Math.round(10**e.decimals*n)),I=new xr(Math.round(n*10**t.decimals*i));if(h.eq(Ke))throw Error("lot size is too small");if(I.eq(Ke))throw Error("tick size or lot size is too small");let B=await Du({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:d,asks:p,feeRateBps:b,quoteDustThreshold:g,vaultSignerNonce:T,baseLotSize:h,quoteLotSize:I}}),x=this.createTxBuilder();x.addInstruction({instructions:B[0].transaction.instructions,signers:B[0].signer});for await(let K of B.slice(1,B.length))x.addInstruction({instructions:K.transaction.instructions,signers:K.signer,instructionTypes:K.instructionTypes});return s===0?x.sizeCheckBuildV0({computeBudgetConfig:a,address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:d.publicKey,asks:p.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new Ir(e.mint),quoteMin:new Ir(t.mint)}}):x.sizeCheckBuild({computeBudgetConfig:a,address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:d.publicKey,asks:p.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new Ir(e.mint),quoteMin:new Ir(t.mint)}})}};import{PublicKey as Sr}from"@solana/web3.js";import{TransactionInstruction as ss,SYSVAR_CLOCK_PUBKEY as Ep}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as as}from"@solana/spl-token";var os=L([V("instruction"),da("amount")]),Br=L([V("instruction")]);function CB({programId:r,amount:e,instructionKeys:t}){let n=[{pubkey:Wr,isSigner:!1,isWritable:!1},{pubkey:as,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:Di,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(os.span);return os.encode({instruction:1,amount:Number(e)},i),new ss({keys:n,programId:r,data:i})}function ki({programId:r},e){let t=[{pubkey:as,isSigner:!1,isWritable:!1},{pubkey:Di,isSigner:!1,isWritable:!1},...Object.entries(e).map(([i,o])=>({pubkey:o,isSigner:i==="userOwner",isWritable:!["authority","userOwner"].includes(i)}))],n=Buffer.alloc(Br.span);return Br.encode({instruction:2},n),new ss({keys:t,programId:r,data:n})}function us(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(Br.span);Br.encode({instruction:2},s);let a=[{pubkey:as,isWritable:!1,isSigner:!1},{pubkey:Ep,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 ss({programId:e.programId,keys:a,data:s})}import Uu from"bn.js";var Fp={[Qn.IDO_PROGRAM_ID_V1.toString()]:1,[Qn.IDO_PROGRAM_ID_V2.toString()]:2,[Qn.IDO_PROGRAM_ID_V3.toString()]:3,[Qn.IDO_PROGRAM_ID_V4.toString()]:4},Nn=class extends Be{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:i=!1,txVersion:o}){let s=this.createTxBuilder(),a=Fp[t.programId];a||this.logAndCreateError("invalid version",a);let u=ye(t),[c,l]=[!new Uu(e.coin).isZero(),!new Uu(e.pc).isZero()],m=u.projectInfo.mint.address.equals(ne),{account:d,instructionParams:p}=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});!d&&c&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),c&&p&&s.addInstruction(p);let y=u.buyInfo.mint.address.equals(ne),{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(!d&&l&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),l&&b&&s.addInstruction(b),(!d||!f)&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address,t.buyInfo.mint.address),a===3)return s.addInstruction({instructions:[...c?[ki({programId:u.programId},{idoId:u.id,authority:u.authority,poolTokenAccount:u.projectInfo.vault,userTokenAccount:d,userIdoInfo:new Sr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[ki({programId:new Sr(t.programId)},{idoId:u.id,authority:u.authority,poolTokenAccount:u.buyInfo.vault,userTokenAccount:f,userIdoInfo:new Sr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:o});if(a<3)return!c&&!l&&this.logAndCreateError("no claimable rewards"),s.addInstruction({instructions:[ki({programId:u.programId},{idoId:u.id,authority:u.authority,poolQuoteTokenAccount:u.buyInfo.vault,poolBaseTokenAccount:u.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:d,userIdoInfo:new Sr(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:d,quoteTokenAccount:f,ledgerAccount:new Sr(e.userIdoInfo),owner:this.scope.ownerPubKey}};return s.addInstruction({instructions:[...c?[us(D(N({},g),{side:"base"}))]:[],...l?[us(D(N({},g),{side:"quote"}))]:[]]}).versionBuild({txVersion:o})}};import{PublicKey as vp}from"@solana/web3.js";import{MintLayout as Wp,TOKEN_2022_PROGRAM_ID as cs,TOKEN_PROGRAM_ID as ls}from"@solana/spl-token";var Kr=class extends Be{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._whiteMap=new Set;this._extraTokenList=[]}async load(t){this.checkDisabled();let{forceUpdate:n=!1,type:i="strict"}=t||{},{mintList:o,blacklist:s,whiteList:a}=await this.scope.fetchV3TokenList(n),u=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._whiteMap=new Set(a),this._tokenMap.set(Tt.address,Tt),this._mintGroup.official.add(Tt.address),s.forEach(c=>{this._blackTokenMap.set(c.address,D(N({},c),{priority:-1}))}),o.forEach(c=>{var l;this._blackTokenMap.has(c.address)||(this._tokenMap.set(c.address,D(N({},c),{type:"raydium",priority:2,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?cs.toBase58():ls.toBase58()})),this._mintGroup.official.add(c.address))}),u.forEach(c=>{var l;this._blackTokenMap.has(c.address)||this._tokenMap.has(c.address)||(this._tokenMap.set(c.address,D(N({},c),{type:"jupiter",priority:1,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?cs.toBase58():ls.toBase58()})),this._mintGroup.jup.add(c.address))}),this._extraTokenList.forEach(c=>{this._blackTokenMap.has(c.address)||this._tokenMap.has(c.address)||(this._tokenMap.set(c.address,D(N({},c),{type:"extra",priority:1,programId:c.programId||c.tags.includes("token-2022")?cs.toBase58():ls.toBase58()})),this._mintGroup.extra.add(c.address))}),this._tokenList=Array.from(this._tokenMap).map(c=>c[1])}get tokenList(){return this._tokenList}get tokenMap(){return this._tokenMap}get blackTokenMap(){return this._blackTokenMap}get mintGroup(){return this._mintGroup}get whiteListMap(){return this._whiteMap}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(N({},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=Wp.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 hi=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 cr({scope:this,moduleName:"Raydium_Farm"}),this.account=new $n({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new wr({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new Kr({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new Tr({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new Ar({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new hr({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new dt({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new On({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new Nn({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=Dp({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:i,logCount:o,logRequests:s,urlConfigs:a}=t,u=new ei({cluster:n,timeout:i,urlConfigs:a,logCount:o,logRequests:s}),c=new hi(D(N({},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(ti);return this._owner.publicKey}setOwner(e){return this._owner=e?new gt(e):void 0,this}get connection(){if(!this._connection)throw new Error(ua);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(ti),new Error(ti)}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(N({},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 ps,TOKEN_2022_PROGRAM_ID as ms}from"@solana/spl-token";import{PublicKey as pt,TransactionInstruction as fs,SystemProgram as Xu}from"@solana/web3.js";import ds from"bn.js";function _S(r,e,t,n,i,o,s,a,u,c,l,m){let d=L([V("instruction"),w("amountIn"),w("amountOut")]),p=[{pubkey:Xu.programId,isSigner:!1,isWritable:!1},{pubkey:ps,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=ye(t);p.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=ye(t);p.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=ye(t);p.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(d.span);return d.encode({instruction:4,amountIn:c,amountOut:l},y),new fs({keys:p,programId:r,data:y})}function VS(r,e,t,n,i,o,s,a,u,c){let l=L([V("instruction")]),m=[{pubkey:Xu.programId,isSigner:!1,isWritable:!1},{pubkey:ps,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 p=ye(n);m.push({pubkey:p.config.id,isSigner:!1,isWritable:!1},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.mintA.address.equals(u)?p.vault.A:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.mintA.address.equals(u)?p.vault.B:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0},...c.map(y=>({pubkey:y,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let p=ye(n);m.push({pubkey:p.authority,isSigner:!1,isWritable:!1},{pubkey:p.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:new pt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:p.openOrders,isSigner:!1,isWritable:!0},{pubkey:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.marketId,isSigner:!1,isWritable:!0},{pubkey:p.marketBids,isSigner:!1,isWritable:!0},{pubkey:p.marketAsks,isSigner:!1,isWritable:!0},{pubkey:p.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0})}else{let p=ye(n);m.push({pubkey:p.authority,isSigner:!1,isWritable:!1},{pubkey:p.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:p.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:p.openOrders,isSigner:!1,isWritable:!0},{pubkey:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.marketId,isSigner:!1,isWritable:!0},{pubkey:p.marketBids,isSigner:!1,isWritable:!0},{pubkey:p.marketAsks,isSigner:!1,isWritable:!0},{pubkey:p.marketEventQueue,isSigner:!1,isWritable:!0},...p.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:p.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:p.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0}])}let d=Buffer.alloc(l.span);return l.encode({instruction:5},d),new fs({keys:m,programId:r,data:d})}function Gu(r,e,t,n,i,o){if(r.pooltype.includes("StablePool")){let s=ye(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=ye(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(ms)||a.mintB.programId.equals(ms)?[{pubkey:ms,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=ye(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 qp(r,e,t,n,i,o,s,a,u,c,l,m,d,p){let y=L([V("instruction"),w("amountIn"),w("amountOut")]),f=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:ps,isSigner:!1,isWritable:!1}];f.push(...Gu(a,c,o,t,n,p[0])),f.push(...Gu(u,l,s,n,i,p[1]));let b=Buffer.alloc(y.span);return y.encode({instruction:8,amountIn:m,amountOut:d},b),new fs({keys:f,programId:r,data:b})}async function ES({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=ye(n.poolKey[0]),m=t.equals(l.mintA.address)?Kt.add(at):Ct.sub(at);return await Se.makeSwapBaseInInstructions({poolInfo:l,poolKeys:l,observationId:l.vault.A,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 ds(0)),sqrtPriceLimitX64:m,remainingAccounts:n.remainingAccounts[0]})}else{let l=n.poolKey[0];return{signers:[],instructions:[mi({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 ds(0)),fixedSide:"in"})],lookupTableAddress:l.lookupTableAccount?[l.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?E.AmmV5SwapBaseIn:E.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let l=n.poolInfo[0],m=n.poolInfo[1],d=n.poolKey[0],p=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[qp(r,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.minMiddleAmountFee.token.mint.toString(),l,m,d,p,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((c=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?c:new ds(0)),n.remainingAccounts)],instructionTypes:[E.RouteSwap],lookupTableAddress:[d.lookupTableAccount,p.lookupTableAccount].filter(y=>y!==void 0),address:{}}}else throw Error("route type error")}import Yu from"bn.js";var ys=new Yu(1e6);function Up(r,e,t){return r.mul(e).add(t).sub(new Yu(1)).div(t)}function zu(r,e,t){return r.mul(e).div(t)}var Ti=class{static tradingFee(e,t){return Up(e,t,ys)}static protocolFee(e,t){return zu(e,t,ys)}static fundFee(e,t){return zu(e,t,ys)}};import Cr from"bn.js";function Ii(r,e){if(e.isZero())throw Error("divisor is zero");return r.mod(e)}function Gp(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=Ii(r,e);if(n.gt(Mn)){t=t.add(new Cr(1));let i=r.div(t);n=Ii(r,t),n.gt(Mn)&&(i=i.add(new Cr(1)))}return[t,e]}var Mn=new Cr(0),xi=class{static swapWithoutFees(e,t,n){let i=t.mul(n),o=t.add(e),[s,a]=Gp(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 Ii(e.mul(n),t).gt(Mn)&&s.gt(Mn)&&(s=s.add(new Cr(1))),Ii(e.mul(i),t).gt(Mn)&&a.gt(Mn)&&(a=a.add(new Cr(1))),{tokenAmount0:s,tokenAmount1:a};throw Error("roundDirection value error")}};var Hu=(t=>(t[t.Floor=0]="Floor",t[t.Ceiling=1]="Ceiling",t))(Hu||{}),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=Ti.tradingFee(e,i),s=e.sub(o),{sourceAmountSwapped:a,destinationAmountSwapped:u}=xi.swapWithoutFees(s,t,n),c=a.add(o);return{newSwapSourceAmount:t.add(c),newSwapDestinationAmount:n.sub(u),sourceAmountSwapped:c,destinationAmountSwapped:u,tradeFee:o}}};var ju={[Jr.toBase58()]:3},Zu={3:Jr};var Xp=L([fe(5),fe(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"),fe(7)]),Ju={3:Xp};import{PublicKey as $u}from"@solana/web3.js";var Bi=ae("Serum"),ec=class{static getProgramId(e){let t=Zu[e];return t||Bi.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=ju[t];return n||Bi.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=Ju[e];return t||Bi.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 Bi.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:$u.default,nonce:i}}};var LK=r=>r;export{yb as ACCOUNT_TYPE_SIZE,Db as ALL_PROGRAM_ID,Yd as AMM_CONFIG_SEED,Ol as AMM_STABLE,to as AMM_V4,df as ANAMint,We as API_URLS,Sl as AccountType,cT as AmmConfigLayout,ei as Api,lu as BIT_PRECISION,Yt as BNDivCeil,an as BNLayout,Py as BN_100,ky as BN_1000,hy as BN_10000,Ay as BN_FIVE,Gs as BN_ONE,nn as BN_TEN,wy as BN_THREE,gy as BN_TWO,Ke as BN_ZERO,Qg as BitStructure,ma as Blob,Nl as CLMM_PROGRAM_ID,Di as CLOCK_PROGRAM_ID,Wl as CREATE_CPMM_POOL_AUTH,Dl as CREATE_CPMM_POOL_FEE_ACC,vl as CREATE_CPMM_POOL_PROGRAM,Ar as Clmm,Se as ClmmInstrument,xi as ConstantProductCurve,_u as CpmmConfigInfoLayout,Ti as CpmmFee,Vu as CpmmPoolInfoLayout,Dn as Currency,rn as CurrencyAmount,Qu as CurveCalculator,qb as DEVNET_PROGRAM_ID,yg as DEV_API_URLS,Ul as DEV_CREATE_CPMM_POOL_AUTH,Gl as DEV_CREATE_CPMM_POOL_FEE_ACC,ql as DEV_CREATE_CPMM_POOL_PROGRAM,Od as DataElement,pf as ETHMint,jo as EXTENSION_TICKARRAY_BITMAP_SIZE,Na as FARM_LOCK_MINT,Ma as FARM_LOCK_VAULT,$i as FARM_PROGRAM_ID_V3,eo as FARM_PROGRAM_ID_V5,xn as FARM_PROGRAM_ID_V6,At as FARM_PROGRAM_TO_VERSION,Va as FARM_VERSION_TO_LEDGER_LAYOUT,_a as FARM_VERSION_TO_STATE_LAYOUT,Wb as FEE_DESTINATION_ID,yi as FEE_RATE_DENOMINATOR,ys as FEE_RATE_DENOMINATOR_VALUE,tp as FETCH_TICKARRAY_COUNT,ep as Fee,te as Fraction,Qn as IDO_ALL_PROGRAM,_l as IDO_PROGRAM_ID_V1,Vl as IDO_PROGRAM_ID_V2,El as IDO_PROGRAM_ID_V3,Fl as IDO_PROGRAM_ID_V4,vr as INSTRUCTION_PROGRAM_ID,E as InstructionType,no as JupTokenType,Tu as LIQUIDITY_FEES_DENOMINATOR,hu as LIQUIDITY_FEES_NUMERATOR,up as LIQUIDITY_VERSION_TO_SERUM_VERSION,xk as LIQUIDITY_VERSION_TO_STATE_LAYOUT,mu as LOG_B_2_X32,du as LOG_B_P_ERR_MARGIN_LOWER_X64,pu as LOG_B_P_ERR_MARGIN_UPPER_X64,jr as LOOKUP_TABLE_CACHE,jn as Layout,ce as LiquidityMath,oc as LogLevel,Ri as Logger,is as MARKET_STATE_LAYOUT_V2,Xp as MARKET_STATE_LAYOUT_V3,Ju as MARKET_VERSION_TO_STATE_LAYOUT,Js as MAX_BASE64_SIZE,Ct as MAX_SQRT_PRICE_X64,$e as MAX_TICK,An as MEMO_PROGRAM_ID,Fs as MEMO_PROGRAM_ID2,Pn as METADATA_PROGRAM_ID,Kt as MIN_SQRT_PRICE_X64,He as MIN_TICK,Rn as MODEL_DATA_PUBKEY,ec as Market,J as MathUtil,Qo as MaxU64,cu as MaxUint128,Ft as NEGATIVE_ONE,mf as NRVMint,at as ONE,Ll as OPEN_BOOK_PROGRAM,Jd as OPERATION_SEED,Jo as ObservationInfoLayout,ip as ObservationLayout,gu as OperationLayout,co as OptionLayout,gt as Owner,rf as PAIMint,jd as POOL_REWARD_VAULT_SEED,Hd as POOL_SEED,$d as POOL_TICK_ARRAY_BITMAP_SEED,Qd as POOL_VAULT_SEED,su as POSITION_SEED,ve as Percent,sa as PoolFetchType,bi as PoolInfoLayout,Qe as PoolUtils,gi as PositionInfoLayout,sp as PositionRewardInfoLayout,br as PositionUtils,Xe as Price,lT as ProtocolPositionLayout,fi as Q128,ut as Q64,nf as RAYMint,nt as RENT_PROGRAM_ID,hi as Raydium,op as RewardInfo,Hu as RoundDirection,Xi as Rounding,Ml as Router,ju as SERUM_PROGRAMID_TO_VERSION,Jr as SERUM_PROGRAM_ID_V3,Zu as SERUM_VERSION_TO_PROGRAMID,aa as SESSION_KEY,Ne as SOLMint,Tt as SOL_INFO,ek as SPL_MINT_LAYOUT,of as SRMMint,ro as STORAGE_KEY,Wr as SYSTEM_PROGRAM_ID,Z as SqrtPriceMath,Cn as StableLayout,lo as Structure,pn as SwapMath,dn as TICK_ARRAY_BITMAP_SIZE,Zd as TICK_ARRAY_SEED,_e as TICK_ARRAY_SIZE,Jk as TICK_SPACINGS,Me as TOKEN_WSOL,vt as TickArrayBitmap,bu as TickArrayBitmapExtensionLayout,yr as TickArrayBitmapExtensionUtils,fr as TickArrayLayout,ap as TickLayout,fn as TickMath,le as TickQuery,G as TickUtils,pe as Token,Te as TokenAmount,Zr as TxBuilder,hn as TxVersion,pr as U64Resolution,eh as U64_IGNORE_RANGE,so as UInt,sf as USDCMint,lf as USDHMint,af as USDTMint,Rl as UTIL1216,mo as Union,La as Voter,pd as VoterDepositEntry,dd as VoterLockup,Ra as VoterRegistrar,md as VoterVotingMintConfig,ne as WSOLMint,ri as WideBits,Mt as WrappedLayout,de as ZERO,Ws as _100_PERCENT,k as accountMeta,iy as add,Yr as addComputeBudget,Do as addLiquidityLayout,Mw as array,Po as associatedLedgerAccountLayout,ao as bits,fe as blob,qe as bool,No as calFarmRewardAmount,Up as ceilDiv,qn as checkLegacyTxSize,Un as checkV0TxSize,Zi as chunkArray,Br as claimLayout,_t as closeAccountInstruction,Fi as commonSystemAccountMeta,va as createAssociatedLedgerAccountInstruction,ae as createLogger,Ya as createPoolFeeLayout,tu as createPoolV4InstructionV2,Ik as createPoolV4Layout,Vt as createWSolAccountInstructions,Tw as cstr,qf as currencyEquals,fl as decimalToFraction,Dm as decodeBool,ey as div,Ur as divCeil,Je as dwLayout,qm as encodeBool,_g as endlessRetry,ml as eq,ww as f32,Aw as f32be,Pw as f64,kw as f64be,Io as farmAddRewardLayout,vA as farmLedgerLayoutV3_1,tr as farmLedgerLayoutV3_2,WA as farmLedgerLayoutV5_1,Ka as farmLedgerLayoutV5_2,Ca as farmLedgerLayoutV6_1,Fa as farmRewardInfoToConfig,ho as farmRewardLayout,To as farmRewardRestartLayout,ld as farmRewardTimeInfoLayout,Ba as farmStateV3Layout,Sa as farmStateV5Layout,er as farmStateV6Layout,mP as fetchMultipleFarmInfoAndUpdate,vT as fetchMultipleInfo,bb as fetchMultipleMintInfos,oe as findProgramAddress,Eo as fixedSwapInLayout,Fo as fixedSwapOutLayout,zu as floorDiv,Hr as forecastTransactionSize,qd as formatLayout,Ye as generatePubKey,be as getATAAddress,Ea as getAssociatedAuthority,ts as getAssociatedConfigId,it as getAssociatedLedgerAccount,rr as getAssociatedLedgerPoolAccount,dp as getAssociatedOpenOrders,xu as getAssociatedPoolKeys,hp as getCpmmPdaAmmConfigId,Tp as getCpmmPdaPoolId,Ku as getCreatePoolKeys,ra as getDate,Mo as getDepositEntryIndex,Za as getDxByDyBaseIn,ja as getDyByDxBaseIn,sb as getEpochInfo,ci as getFarmLedgerLayout,fd as getFarmStateLayout,pp as getLiquidityAssociatedAuthority,yn as getLiquidityAssociatedId,vh as getLiquidityFromAmounts,ry as getMax,It as getMultipleAccountsInfo,In as getMultipleAccountsInfoWithCustomFlags,Ji as getMultipleLookupTableInfo,Qk as getPdaAmmConfigId,lt as getPdaExBitmapAccount,Ip as getPdaLpMint,pi as getPdaMetadataKey,Ai as getPdaObservationId,dr as getPdaOperationAccount,ct as getPdaPersonalPositionAddress,kp as getPdaPoolAuthority,au as getPdaPoolId,uu as getPdaPoolRewardVaulId,Ho as getPdaPoolVaultId,mn as getPdaProtocolPositionAddress,we as getPdaTickArrayAddress,Su as getPdaVault,Tn as getRecentBlockHash,So as getRegistrarAddress,Yl as getSessionKey,Ja as getStablePrice,Cl as getTime,Qy as getTimestamp,Oo as getTokenOwnerRecordAddress,Qb as getTransferAmountFee,Pe as getTransferAmountFeeV2,Ro as getVoterAddress,Lo as getVoterWeightRecordAddress,Co as getVotingMintAuthority,Ko as getVotingTokenMint,Td as governanceCreateTokenOwnerRecord,jg as greedy,ll as gt,$f as gte,wa as i128,Gk as i16ToBytes,di as i32ToBytes,ii as i64,ga as i8,vo as initPoolLayout,wo as initTokenAccountInstruction,Vp as initializeMarket,Nb as intersection,oa as isDateAfter,ia as isDateBefore,yl as isDecimal,ny as isMeaningfulNumber,na as isNumber,xo as isValidFarmVersion,mr as isZero,ye as jsonInfo2PoolKeys,dP as judgeFarmType,zo as leadingZeros,ou as leastSignificantBit,Wo as liquidityStateV4Layout,Rd as liquidityStateV5Layout,Zf as lt,Jf as lte,uf as mSOLMint,mi as makeAMMSwapInstruction,eu as makeAddLiquidityInstruction,Vo as makeAddNewRewardInstruction,ki as makeClaimInstruction,us as makeClaimInstructionV4,Ru as makeCreateCpmmPoolInInstruction,Wa as makeCreateFarmInstruction,Du as makeCreateMarketInstruction,Da as makeCreatorWithdrawFarmRewardInstruction,Lu as makeDepositCpmmInInstruction,qa as makeDepositInstructionV3,Ua as makeDepositInstructionV5,Ga as makeDepositInstructionV6,CP as makeDepositTokenInstruction,LP as makeDepositWithdrawInstruction,qk as makeInitPoolInstructionV4,CB as makePurchaseInstruction,_o as makeRestartRewardInstruction,nu as makeSimulatePoolInfoInstruction,Nu as makeSwapCpmmBaseInInInstruction,Mu as makeSwapCpmmBaseOutInInstruction,Xd as makeSwapFixedInInstruction,zd as makeSwapFixedOutInstruction,ES as makeSwapInstruction,Jn as makeTransferInstruction,Ou as makeWithdrawCpmmInInstruction,ur as makeWithdrawInstructionV3,ar as makeWithdrawInstructionV5,sr as makeWithdrawInstructionV6,RP as makeWithdrawTokenInstruction,sn as minExpirationTime,$k as mockCreatePoolInfo,fu as mockV3CreatePoolInfo,Nd as modelDataInfoLayout,iu as mostSignificantBit,Hi as mul,Qi as notInnerObject,mw as ns64,gw as ns64be,da as nu64,ow as nu64be,uo as offset,Eb as offsetDateTime,Cw as option,U as parseBigNumberish,tn as parseNumberInfo,ea as parseSimulateLogToJson,Nt as parseSimulateValue,xa as parseTokenAccountResp,uk as parseTokenInfo,Jt as poolTypeV6,on as printSimulate,S as publicKey,os as purchaseLayout,ad as realFarmStateV3Layout,ud as realFarmStateV5Layout,cd as realFarmV6Layout,Us as recursivelyDecimalToFraction,Xo as removeLiquidityInstruction,qo as removeLiquidityLayout,_S as route1Instruction,VS as route2Instruction,qp as routeInstruction,Nw as rustEnum,aw as s16,dw as s16be,uw as s24,pw as s24be,De as s32,fw as s32be,cw as s40,yw as s40be,lw as s48,bw as s48be,sw as s8,q as seq,jp as setLoggerLevel,dl as shakeFractionDecimal,$s as simulateMultipleInstruction,Dk as simulatePoolInfoInstruction,hl as simulateTransaction,Ys as sleep,kn as solToWSol,mk as solToWSolToken,Ht as splAccountLayout,zs as splitNumber,cf as stSOLMint,Ow as str,L as struct,ty as sub,Lw as tagged,zi as tenExponential,pl as toBN,Tl as toBuffer,Xs as toFraction,jf as toFractionWithDecimals,Ty as toPercent,za as toToken,lk as toTokenAmount,ck as toTokenInfo,Iy as toTokenPrice,xy as toTotalPrice,qs as toUsdCurrency,Yo as trailingZeros,Wi as tryParsePublicKey,Y as u128,Bt as u16,ru as u16ToBytes,ew as u16be,Zg as u24,tw as u24be,ze as u32,Xk as u32ToBytes,nw as u32be,Jg as u40,rw as u40be,$g as u48,iw as u48be,w as u64,V as u8,_w as union,LK as unionArr,hw as unionLayoutDiscriminator,_b as uniq,yd as updateFarmPoolInfo,$r as updateReqHistory,Iw as utf8,vi as validateAndParsePublicKey,Bo as validateFarmRewards,Rw as vec,Um as vecU8,xd as voterStakeRegistryCreateDepositEntry,Id as voterStakeRegistryCreateVoter,Pd as voterStakeRegistryDeposit,kd as voterStakeRegistryUpdateVoterWeightRecord,hd as voterStakeRegistryWithdraw,dk as wSolToSolToken,ko as withdrawRewardLayout,Mb as xor,Vw as zeros};
2
2
  /*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
3
3
  //# sourceMappingURL=index.mjs.map